How the inbox fits between your bot and your team — what reaches it, who's in control, and how conversations stay unified across channels.
The UniversalInbox is a shared, per-workspace agent workspace. Your bot handles conversations through its flow as usual; when a flow decides a human is needed, the conversation is handed off and appears in the inbox. Agents claim it, reply to the customer in the customer's own channel, leave internal notes for teammates, and hand control back to the bot when they're done.
It is a three-pane workspace: a filterable conversation list on the left, the thread in the centre, and a context pane on the right showing the customer, the assignment, and the underlying flow.
A conversation enters the inbox when your flow reaches an Agent Handoff node. That node pauses the bot for the conversation and surfaces it to agents — on every channel, not just Intercom. On Intercom it also applies a handoff tag and unassigns the bot so the conversation routes correctly inside Intercom; on webchat, Telegram, and WhatsApp the bot pause plus the inbox queue is the whole mechanism.
Agents can also take over a conversation that wasn't formally handed off — simply replying to it pauses the bot and assigns the conversation to the replying agent. See Agent Usage.
At any moment a conversation is driven by either the bot or a human, never both. The inbox shows this as a Bot: active / paused indicator on every thread.
Clicking Resume bot hands the conversation back: it releases the assignment and clears the pause, so the next customer message is answered by the bot again.
A conversation has at most one active assignment — the agent who currently owns it. Past assignments are kept as an audit trail. Two intents are kept deliberately distinct:
| Action | When it shows | What it does |
|---|---|---|
| Claim | Conversation is unassigned | Assigns it to you. Won't take a conversation another agent already holds — if two agents race, only one wins and the other is told it's already claimed. |
| Assign to me | Held by another agent | A deliberate takeover — reassigns it to you and releases the previous agent. |
| Release | Assigned to you | Returns it to the unassigned queue. |
| Reply | Always | Sending a reply auto-claims the conversation — replying is an intentional takeover, even from another agent. |
Claim is polite; Assign to me and Reply take over. The distinction prevents a stray Claim click from yanking a colleague's active conversation, while still letting you deliberately step in when you need to.
The same person often reaches you on more than one channel. The inbox models a Contact that can hold several platform connections (a webchat session, a Telegram chat id, a WhatsApp number, an Intercom user). The context pane lists a contact's other conversations so an agent has the full history.
When two records turn out to be the same person, an agent can merge them — all platform connections move onto the surviving contact.
The inbox is realtime. New messages, assignment changes, status changes, tab counts, and "Seen" receipts all update over the connection without a refresh — for every agent viewing the workspace, and for the customer on webchat. This relies on ActionCable and background jobs being available (see Admin Setup).