Recipe — Auto-tag conversations by message content
When an inbound message contains specific keywords, apply a tag automatically. The simplest pattern is a Returns tag for any message mentioning “refund” or “return.”
Auto-tagging is a foundation for downstream rules — once conversations are tagged consistently, you can route, escalate, and report on them.
What this rule does
- Trigger: A new inbound message arrives.
- Condition: Message body contains one of a list of keywords.
- Action: Add the corresponding tag.
Before you start
- The destination tag exists in Tag Management
Build it
- 1 — Trigger —
Message received - 2 — Condition —
message.content contains refundORmessage.content contains return(use a nested OR group) - 3 — Branch —
Always - 4 — Action —
Add tag→ Returns
The nested OR is important: a single condition can only check one substring, so you build the OR inside the AND group.
Why this does not fire on agent replies
Message received fires for any message an agent did not send, so agent replies containing “refund” — including the reply where the agent writes “Sure, we’ll process your refund” — never reach these conditions.
Note that “not sent by an agent” is broader than “sent by the customer”: some system-generated messages, such as the marker written when an outbound call starts, also raise this trigger. If a rule needs to exclude those, match on message content rather than looking for a direction condition — there isn’t one.
Variants
Multiple tags from multiple keyword groups
One rule per tag is the cleanest pattern, but if you want to keep them together, use branches:
- 1 —
body contains refund OR body contains return— Add tag Returns - 2 —
body contains shipping OR body contains delivery— Add tag Shipping - 3 —
body contains password OR body contains login— Add tag Auth
Branches evaluate top to bottom, and only the first matching If runs. To stamp every matching tag (not just the first), use Always branches instead.
Language-aware keywords
Keywords differ across languages. For multi-language teams, you have two options:
- One rule per language, gated on the conversation’s detected language.
- One rule with all keywords combined in one big OR group:
body contains refund OR body contains rückgabe OR body contains remboursement OR .... Simpler but less precise.
Negative tags
A condition like body contains "thank you" AND body not contains "but" lets you tag genuine positive feedback without sweeping in hedged complaints.
Verify it worked
Send a test inbound email that contains the keyword. Within a few seconds, the destination tag should be applied to the conversation. Send a second test reply as the agent with the same keyword — the rule should not re-fire (because of the inbound condition).
Troubleshooting
-
Symptom: Rule fires on every message, even those without the keyword. Fix: The OR group’s brackets are wrong, or an extra condition is missing. Re-check the condition tree.
-
Symptom: Rule re-tags the same conversation repeatedly. Fix: Add a condition
tags not contains <destination tag>so the rule skips already-tagged conversations. Or rely on the destination tag being idempotent —Add tagdoes not duplicate an existing tag. -
Symptom: False positives (“preform” matches because of “form”). Fix: Use word-boundary-aware keywords if available, or pick more specific phrases. Atender’s
containsis substring-match; it doesn’t recognize word boundaries.