Unified Inbox
Every channel in one place — the conversation timeline, assignment, read state, and taking over from the agent.
The inbox is where humans and the agent share the same conversations. Instagram DMs, WhatsApp, Messenger, Telegram, Discord, iMessage, email, and web chat all land here, in the same shape, with the same controls.
The thread is the unit of work
A conversation in CoPhrase is a thread on a channel — not a person.
If the same customer messages you on WhatsApp and on Instagram, you get two threads. That is deliberate. Each thread has one channel, one composer, one assignee, one controller (AI or human), and one send window. Closing the WhatsApp thread does not close the Instagram one; taking over one does not silently take over the other. Nothing you do in the inbox fans out into a channel you were not looking at.
The person is still unified. The contact record links every identity across every channel, and the thread shows their full cross-channel history as read-only context — you can see that they asked about the same order on Instagram yesterday, without that history becoming something you can accidentally reply into.
Two rows, one customer — on purpose
The same contact appearing twice in the thread list is not a bug. It is two conversations on two channels, each of which can be assigned, taken over, and closed independently.
The timeline
A thread is one stream of everything that happened, not just the messages:
| Item | What you see |
|---|---|
| Messages | Inbound and outbound, with delivery state — and a clear reason plus a retry when a send fails |
| Voice notes | Transcribed, so you can read what the agent heard |
| Images and PDFs | Understood by the agent before it replied, so you can see what it saw |
| Tool traces | What the agent did — a lead captured, a meeting booked, an order looked up — collapsed until you want detail |
| Events | Handoffs, takeovers, agent reassignment, status changes |
| Private notes | Internal notes to your team. Never sent to the customer |
| Non-reply explanations | Why the agent stayed silent, when it did |
Every item is attributed to exactly one actor — the customer, a human on your team, or the agent. The agent is a first-class actor in the timeline, not a fake user account. You can always tell who said what.
The timeline updates live. New messages, takeovers, and status changes appear without a refresh.
Working the inbox
Controller — every thread is either AI-controlled or human-controlled. Taking over flips it, and the agent goes quiet. Handing back resumes it. A manual reply without a formal takeover pauses the agent temporarily instead. See handoff.
Assignment — threads can be assigned to a person on your team. Escalations create a task for whoever should pick it up.
Status — open, snoozed, or closed. A closed thread that the customer messages again reopens as a new episode on the same conversation, so your case history counts episodes, not raw threads, and a customer coming back three months later is not counted as the same case.
Read state — unread is computed per person from where you actually last looked. There is no counter drifting out of sync with reality.
Priority and filters — filter by channel, controller, assignee, status, and the states that need you: handoff requested, approval waiting, AI paused.
The composer
The composer is bound to this thread's channel. There is no dropdown asking where the reply should go, because there is only one answer.
Channel rules are enforced in the composer, not discovered at send time:
- On WhatsApp, Instagram, and Messenger, a live countdown shows how long the free-form reply window is open.
- When a WhatsApp window closes, the composer switches to your approved templates.
- When an Instagram window closes, it stops you with a plain-language explanation instead of failing silently.
- You can write a private note instead of a message, or ask the agent for a draft and edit it.
Context panel
Beside the thread: who this is, and what you already know.
- Contact card — name, fields, tags, and their identities across your channels
- Their other threads, on other channels
- The live deal and its qualification state
- Tasks linked to this contact
- Agent controls — pause for an hour, resolve, replay this conversation in the playground
When CoPhrase suspects two contacts are the same person but is not certain, it says so rather than merging. Confident matches (a verified email, a verified phone, an identified web-chat visitor) merge automatically; anything softer surfaces as a suggestion with a preview, and merges can be undone.
What is not in your inbox
- Spam. A new contact's first message is classified. Spam is flagged, the agent stays off, and it stays out of your counts — while the underlying event is still retained, so nothing real is ever truly dropped.
- Test conversations. Playground conversations are seeded into the inbox marked as tests, so you can practise takeover on a safe thread. They are excluded from analytics and billing.
Multi-party threads
Discord channels, email threads with people on CC, and group chats are not one-to-one. The thread tracks participants, and each message is attributed to the participant who sent it.