Need help — Gmail “Re:” emails not labeling + labels stacking instead of updating

Need help — Gmail “Re:” emails not labeling + labels stacking instead of updating

The problem/error/question

I’m trying to build a Gmail-based classification workflow using n8n that automatically assigns labels to email threads using AI.
The workflow works for new emails, but breaks once the conversation becomes a reply thread (“Re:” messages).
Additionally, labels get added repeatedly instead of being updated.

Specifically:

  1. Replies (“Re:”) in an existing thread are not getting labeled correctly.
    New emails classify fine, but once a sender replies, n8n doesn’t update the label.

  2. Labels are not being replaced — they stack.
    Example:

    • First classification → Doesn’t Need Reply

    • Sender replies → should change to Needs Reply

    • Instead, Gmail ends up showing both labels, meaning old labels aren’t removed.

What is the error message?

No technical error message — the workflow completes successfully but returns incorrect label behavior.

Please share your workflow







Share the output returned by the last node

The last node (Add Label) shows successful execution but the applied labels in Gmail do not replace previous labels — they only append new ones.

Information on your n8n setup

  • n8n version:
  • Database (default: SQLite):
  • n8n EXECUTIONS_PROCESS setting (default: own, main):
  • Running n8n via (Docker, npm, n8n cloud, desktop app):
  • Operating system:

Add label do not replace labels, it just add new labels.

if you want to remove a label you must use Gmail node and set its operation to Remove Label

Thank you for your response.

As for the solution you provided. It has been already applied to one of the workflow you already see in my query.
My problem is regarding the update in label. As you can see in the second workflow i am already removing the label using Remove label node and then adding it to another label. But its still not solving my problem with double labeling.

I wish to know if there are any alternate methods or nodes i can use to clear this task.

you create a label (label = a) for message (id=1) and then you have reply on the thread and you try to remove your old label from new message (id=2) and add a new a label (label = b) on the message so your thread end up with both “a” and “b” labels

when you want to remove label get all messages of a thread and remove label from all of them

3 Likes

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.