A conversation gathers every message exchanged with one number, in order, like the thread of a messaging app on a phone. The Conversations screen is your shared SMS inbox: several people can read and answer from their own browser, and each sees the others' changes live.
Typical uses: answering customers who reply to a campaign, a support line on a real mobile number, following up an order confirmation that raised a question.
How a conversation is born
There is exactly one conversation per number. It is created the first time a message is sent to that number or received from it, whatever the way (quick send, campaign, API, automatic reply). A message from a number you already talked to joins the existing thread.
A conversation is not a contact. It exists as soon as a message is exchanged, even with a number that is not in your directory. You can create the contact from the conversation in one click (see The contact panel).
The list
The left column lists the conversations, pinned first, then the most recently active. Each shows the number or the contact's name, the last message, its time, and the number of unread messages.
| Control | Use |
|---|---|
| Search conversations | Find a thread by number or by words from its messages |
| Thread state | Show only Open, Pending or Resolved threads |
| Unread only | Show only threads with messages nobody opened yet |
| Archived | Show the archived threads instead of the others |
| Label | Show only the threads carrying a label |
| Assigned to me | Show only the threads assigned to you |
The list and the unread counters update live, without reloading: a message received while you are on the screen appears at once.
Read and sort a thread
Click a conversation to open it. Opening it marks it as read for everyone. Scroll up, or click Load older history, to go further back.
Above the thread:
| Action | Effect |
|---|---|
| Thread state | Open (to handle), Pending (waiting for something, for example the customer's answer), Resolved (done). Use it as a to-do list shared by the team |
| Pin this thread / Unpin this thread | A pinned thread stays at the top of the list |
| Archive this thread / Move out of archives | An archived thread leaves the main list. If the correspondent writes again, it comes back by itself |
Under each message you see its time and, for an outbound message, its status. A failed message shows its reason and a Retry button (see Sending messages).
Labels and assignment
Threads can carry labels (for example "invoice", "complaint") and be assigned to a user. The list shows the first labels of each thread and the header shows "Assigned to" its user; the Label and Assigned to me filters use them.
In the current version, labels are applied by the automation rules or
through the API, and assignment through the API (PATCH /conversations/{conversationId}, fields
labels and assignedTo). The dashboard shows them and filters on them, but does not edit them yet.
Reply
Type your message at the bottom of the thread and click Send. The composer offers:
| Field | Default | Effect |
|---|---|---|
| Message to send | The draft kept for this thread | Your text. The counter shows the characters, the number of SMS and the encoding, as in quick send |
| Sending device | Automatic, phone first: the conversation's phone is preferred | Leave it on Automatic in almost every case. Choosing a phone forces it: the reply leaves from that phone or not at all |
| Sending SIM | Automatic; the conversation's SIM when you choose the conversation's phone | Which SIM of the chosen phone. Available once a phone is chosen |
| Send date and time | Empty (now) | Schedules the reply, in the platform time zone |
| Quick replies | None | Type / at the start of the message to insert one of your templates |
Why the reply keeps the same SIM. The gateway remembers which phone and SIM last received a message from this correspondent. On Automatic, the reply leaves from that SIM whenever it can send, so your customer always sees you answer from the number they wrote to; a reply from another number would look like a stranger, or be ignored. The routing rules do not change the SIM of an existing conversation. The first option of Sending device names that phone: "Automatic, Office phone first".
When the conversation's phone is offline. On Automatic, the reply does not wait for it: another available phone sends it at once, following your routing. Your customer then sees it come from another number, which beats a reply that never arrives. As soon as the conversation's phone is back, the next replies leave from its number again.
Forcing a phone. Choose a phone in Sending device only when the reply must leave from it and from no other. Choosing the conversation's phone also selects its SIM. A forced phone is an order, not a preference: while it is offline, the reply stays Queued, is retried, and fails if the phone does not come back before its attempts run out. The choice applies to the thread you are in; the next thread opens on Automatic again.
Unsent text is kept as a draft for each thread, in your browser: you can switch threads and come back to it. Replies are never held by the night pause of campaigns.
The contact panel
The panel on the right shows who you are talking to (open it with Open contact details):
- Unknown number: the number is not in your directory. Create the contact adds it in one click; you can then complete it in Contacts.
- Internal notes: free text for your team, visible here only and never sent to anyone.
- Groups, with Add to a group.
- Labels and Custom fields of the contact.
- Opt out / Opt back in: stops or allows every send to this number. See Contacts and groups.
- Export thread as CSV: downloads the messages of the thread loaded on screen. Load the older history first for a complete export.
A correspondent who answers STOP is opted out automatically, and nothing more can be sent to them
until they are opted back in.
Options
| Option | Where | Default | Allowed values | Effect |
|---|---|---|---|---|
| State | Thread header; API state |
Open | open, pending, resolved |
Sorting for the team, and the Thread state filter |
| Pinned | Thread header; API pinned |
Off | On or off | Pinned threads come first in the list |
| Archived | Thread header; API archived |
Off | On or off | Hidden from the main list; a new inbound message unarchives the thread |
| Labels | API labels, automation rules |
None | Up to 12, 40 characters each, stored in lowercase | Label filter. Different from the labels of a contact |
| Assigned to | API assignedTo (null to unassign) |
Nobody | A user of the gateway | Assigned to me filter |
| Linked contact | API contactId |
The contact with this number, if any | A contact | Which record the panel shows |
| Read | Opening the thread; API POST /conversations/{conversationId}/read |
Unread when a message arrives | None | Clears the unread counter for every user |
In PATCH /conversations/{conversationId}, a field left out is not changed, and a field set to
null is cleared: that is how you unassign a thread without touching the rest.
API
| Method and path | Use |
|---|---|
GET /conversations |
List the threads. Filters q, state, assignedTo, label, unread, archived; pages with limit and cursor |
GET /conversations/{conversationId} |
Read one thread |
PATCH /conversations/{conversationId} |
Change state, assignment, linked contact, labels, pinning, archive |
POST /conversations/{conversationId}/read |
Mark as read |
GET /messages?conversationId=... |
The messages of a thread |
POST /messages |
Reply: send to the conversation's number |
Troubleshooting
| Symptom | What to check |
|---|---|
| A reply stays Queued, then fails | A phone was forced in Sending device and it is offline. Set it back to Automatic, or bring the phone back. On Automatic, check that at least one phone is Online |
| A reply left from another number | The conversation's phone was offline or could not send (quota, cadence): on Automatic, another phone took over. Bring it back online |
| "This number has opted out." | The correspondent sent STOP, or was opted out by hand. Opt them back in only if they asked for it |
| A conversation disappeared | It was archived: tick Archived in the filters |
| The list does not update live | The live indicator in the header is off: check the connection to the gateway, then reload the page |
| A received SMS does not appear | The phone that received it is offline, or its app is asleep. The phone keeps what it received and hands it over when it reconnects: see Devices |