Assign Chat Thread Task¶
Overview¶
The Assign Chat Thread task hands a WhatsApp or SMS conversation to a specific team member, exactly as if someone had assigned it by hand in the CRM inbox. It can also mark the conversation as done, or re-open one that was closed.
This is how you route conversations automatically: triage an inbound message, decide who should own it, and assign it — the agent sees it appear in their inbox immediately.
When to use this task:
- Route inbound WhatsApp or SMS to the right team by keyword or by client.
- Distribute conversations evenly with a Round Robin task.
- Close a conversation automatically once a workflow has fully answered it.
- Re-open a conversation when a customer replies to a closed thread.
It assigns an existing conversation; it never creates one
The task looks the thread up by contact number and channel. If no conversation exists for that number it reports so and does nothing — it will not start a new thread.
Configuration¶
Builder fields¶
The Field column is the label as it appears in the task builder; Key is the name the value is stored under and referenced by.
| Field | Key | Type | Default | Notes |
|---|---|---|---|---|
| Channel | channel_type |
select | whatsapp |
Options: WhatsApp · Text |
| Contact Number | contact_number |
text | – | |
| Assign To User | user_id |
select | – | Options: Automation Trigger |
| Mark As Done | mark_done |
select | – | Options: Leave unchanged · Mark as done · Mark as not done |
| Field | Required | Default | Notes |
|---|---|---|---|
| Channel | No | whatsapp |
whatsapp or sms. Anything else is rejected. |
| Contact number | Yes | – | The customer's number. Usually mapped from the trigger's from_number. |
| User | Yes | – | The CRM user to assign the conversation to. |
| Mark as done | No | unchanged | Leave unset to keep the current state, set to mark done, or clear to re-open. |
Mark as done¶
Three-state, and the distinction matters:
| Setting | Effect |
|---|---|
| Not set | Assignment only; the resolved state is untouched. |
| Mark done | Assigns and resolves the conversation. |
| Mark not done | Assigns and re-opens a resolved conversation. |
Leaving it unset is the right default for routing — you are deciding who owns this, not whether it is finished.
Contact number¶
The number is matched flexibly, so a number stored in a slightly different format still finds the thread. Map it straight from the trigger:
Output Fields¶
| Field | Description |
|---|---|
{{task_ID_thread_id}} |
The conversation that was assigned. |
{{task_ID_assigned_user_id}} |
The user it was assigned to. |
{{task_ID_run}} |
true when the assignment succeeded. |
{{task_ID_run_text}} |
e.g. Assigned the whatsapp conversation with +27… to user 12 and marked it as done. |
{{task_ID_error}} |
On failure only — the underlying error. |
The CRM inbox updates live when this task runs; the assigned agent does not need to refresh.
Real-World Examples¶
Route by keyword¶
WhatsApp Message Received
└─ If Statement message contains "invoice"
├─ true ─ Assign Chat Thread channel whatsapp, user = accounts
└─ false ─ Assign Chat Thread channel whatsapp, user = support
Even distribution across a support team¶
Text Message Received
└─ Round Robin cycle through the support user IDs
└─ Assign Chat Thread channel sms, user = the round robin output
Round Robin guarantees an even spread, unlike a random pick.
Assign to the client's account manager¶
WhatsApp Message Received
└─ If Statement client_id is not empty
└─ Assign Chat Thread user = the client's responsible user
Close out an automated answer¶
WhatsApp Message Received
└─ AI Prompt answer the question
└─ WhatsApp Business send the reply
└─ Assign Chat Thread user = bot user, mark as done
Best Practices¶
- Map the number from the trigger, not from a CRM field — the thread is keyed on the number the customer actually messaged from.
- Leave "mark as done" unset when routing. Assigning and closing in one step hides the conversation from the person you just gave it to.
- Use Round Robin, not Random, for fair distribution. Random can give one agent several in a row.
- Set the channel explicitly. It defaults to WhatsApp, which is wrong for an SMS workflow.
- Handle the no-conversation case with an If Statement on
runif the workflow can be reached by a contact who has never messaged.
Troubleshooting¶
| Message | Cause and fix |
|---|---|
No <channel> conversation found for <number>. |
No thread exists for that number on that channel. Check the channel setting — an SMS workflow left on the WhatsApp default is the usual cause. |
Unsupported channel: x (expected 'whatsapp' or 'sms'). |
The channel field holds something else. Only those two are valid. |
No contact number provided. |
The number mapping resolved to empty. Check the upstream task's output. |
No valid user to assign the conversation to. |
The user field is empty or not a valid user ID. |
Could not assign the conversation. |
The thread was found but the assignment failed. Check the user still exists and is active. |
No task mapping provided. |
The task has no saved configuration. |
Frequently Asked Questions¶
Can I assign to a team rather than a person? No — assignment is to one user. Use Round Robin over the team's user IDs.
Does the agent get notified? The conversation appears in their inbox immediately. Add an Email or SMS task if you want a push notification too.
What if the conversation is already assigned to someone else? It is reassigned to the user you specify.
Can I unassign a conversation? Not with this task — it always assigns to a user. Unassign in the CRM inbox.
Does marking done send the customer anything? No. It only changes the conversation's state in the inbox.
Related Tasks¶
- Chat Thread - Read the conversation before deciding who to assign it to
- WhatsApp Message Received - The usual trigger
- Text Message Received - The SMS trigger
- Round Robin - Distribute conversations evenly
- If Statement - Decide who should own the conversation