Helpdesk
Triggers: helpdesk automation
When something happens in a chat and the conditions match, set priority, tag, assign, email, post to Slack, call a webhook or reply.
Open Activity → Team & automations → Triggers and click New trigger, or start from a template: Angry customers → urgent, Refund requests → Billing, Bad rating → email the manager, VIP customers → urgent.
A trigger has a When, optional If (all of these) conditions and one or more Then actions (up to 8). Triggers run in the background after the event — they never slow down the chat — and never trigger each other.
When
| Event | Fires when |
|---|---|
| A new chat starts | conversation.created |
| The customer sends a message | message.received |
| A chat is handed to the team | handoff.requested |
| A ticket is created | ticket.created |
| A chat is closed | conversation.closed |
| The customer rates the chat | csat.received |
If (conditions)
Up to 10 conditions; all must match. No conditions means it runs every time.
| Field | Examples |
|---|---|
| Channel | WHATSAPP, WIDGET, EMAIL |
| Chat status | AI, HUMAN, CLOSED |
| Priority | low, normal, high, urgent |
| Team | a department name |
| Tags | vip |
| Customer's message | words in the customer's last message |
| Customer email / Customer phone | @bigclient.com |
| Mood | the customer's mood as detected by the AI |
| Country | the visitor's country |
| Assignee (member id) | a team member |
| Rating (1-5) | use ≥ or ≤ |
| Handoff reason | why the chat was handed over |
Operators: is, is not, contains, doesn't contain, is set, is empty, ≥ and ≤. Separate several values with commas — is refund, return matches either.
Then (actions)
| Action | Notes |
|---|---|
| Set priority | low · normal · high · urgent (also on the ticket) |
| Add a tag | |
| Assign to | A team member — they get a notification |
| Move to team | A department |
| Add an internal note | Only your team sees it |
| Send an email | To any address, with subject and message |
| Post to Slack | A Slack incoming-webhook URL |
| Call a webhook | POST to your URL, optionally signed |
| Reply to the customer | Sent in the chat |
| Hand to the team | With an optional reason |
| Close the chat |
Placeholders
Messages, emails and Slack posts can use {{contact_name}}, {{contact_email}}, {{contact_phone}}, {{text}} (last customer message), {{channel}}, {{priority}}, {{department}}, {{assignee_name}}, {{mood}}, {{country}}, {{csat}}, {{tags}} and {{link}} (the chat in your dashboard).
When: The customer rates the chat
If: Rating (1-5) ≤ 2
Then: Send an email to [email protected]
Subject: Low rating from {{contact_name}}
Message: A customer rated a chat {{csat}}/5.
Last message: {{text}}
{{link}}Trigger webhooks
The Call a webhook action sends:
{
"trigger": "VIP customers → urgent",
"at": "2026-10-19T09:30:00.000Z",
"conversation": {
"id": "…", "agent_id": "…", "channel": "WHATSAPP", "status": "HUMAN",
"priority": "urgent", "department": "Sales", "department_id": "…", "tags": ["vip"],
"text": "I need help with my order", "contact_name": "Nadia",
"contact_email": "", "contact_phone": "+8801700000000",
"mood": "frustrated", "country": "BD", "assignee": "", "assignee_name": "",
"csat": "", "handoff_reason": "", "link": "https://anytimereply.com/dashboard/agents/…/inbox?c=…"
}
}If you set a signing secret, the request carries X-AnytimeReply-Signature with the hex HMAC-SHA256 of the raw body (no sha256= prefix — unlike integration webhooks). Requests time out after 8 seconds and aren't retried.
Each run is noted in the chat (⚡ trigger name: what it did) so your team can see why something changed.