Inbox & Conversations
The Inbox is your real-time interface for managing customer conversations. It uses a three-column layout: conversation list on the left, the chat thread in the center, and the customer detail panel on the right.
Conversations vs Tickets
Conversations are live chat sessions started by customers through the embedded widget. They are handled in the Inbox.
Tickets are escalated support issues that require tracking, assignment, and resolution. A conversation can be escalated to a ticket from the Inbox when the issue needs structured follow-up.
This separation keeps your inbox focused on active communication and your ticket queue focused on work to be done.
The conversation list
The left column shows all conversations. Use the status tabs to filter:
- Open — Waiting for agent response
- Assigned — Assigned to a specific agent
- Waiting — Waiting for customer reply
- Resolved — Closed conversations
Conversations with unread messages show a colored badge. Use the channel filter at the top to view conversations from a specific channel.
Replying to a customer
Click a conversation to open the chat thread. Type your reply in the input box at the bottom and press Send.
To add an internal note (visible only to agents, never to the customer), toggle the note mode in the reply input. Internal notes appear in amber.
Agent replies appear in teal. Customer messages appear on the left side of the thread.
Mentioning teammates in internal notes
Inside an internal note, type @ to bring up a list of your teammates. Filter by name or email, then ↑↓ to navigate, Enter or Tab to insert. Each mentioned teammate gets an in-app notification. You can't mention yourself — your own name doesn't appear in the dropdown.
Mentions render as a purple pill in the note thread (@Devon Streckfuss) so the people who got tagged are easy to spot at a glance.
The @ trigger only fires while the internal-note toggle is on. In customer-facing replies the textarea behaves exactly as before — typing @john@example.com in an email reply is just plain text.
Canned responses
Type / in the reply textarea to open your team's saved responses. Pick one with ↑↓ + Enter and the body inserts with {{contact.first_name}}-style variables filled in. Manage canned responses at Settings → Canned Responses.
Bot suggestions
If a bot is assigned to a conversation's channel with suggestions enabled, you can get an AI-drafted reply:
- Auto mode — A suggestion appears automatically after each customer message. Review it in the suggestion banner. Click "Use this" to populate the reply input, then edit and send.
- On-demand mode — Click the Suggest reply button to request a suggestion when you need one.
Suggestions are stored but never sent automatically. You always review and confirm before sending.
Escalating to a ticket
When a conversation needs structured tracking — a bug report, a billing issue, a complex request — click Escalate to ticket in the conversation toolbar. This creates a linked ticket and opens the ticket detail view.
Resolving a conversation
Click Resolve to close a conversation. Resolved conversations are moved out of the active queue. They remain searchable and can be reopened if the customer replies.
Channels
Channels are named groups for routing and managing conversations. Examples: "Technical Support", "Billing", "Onboarding".
Each channel can have:
- Members — Agents who handle that channel's conversations
- Assignment mode — Manual (agents self-assign) or Round-robin (automatically distributed)
- A bot — The AI bot that responds to customers and suggests replies in that channel
Configure channels under Settings → Channels.
Widget routing
To route conversations from a specific widget to a channel, go to Settings → Routing and map each widget to the desired channel. If a widget has no routing rule, its conversations appear in the Unassigned inbox.
Real-time updates
The Inbox updates in real-time. New messages and new conversations appear without refreshing the page.
Visitor timeline
The Visitor timeline sits in the right rail above the customer detail panel and shows the most recent 10 site-activity events for the contact tied to the open conversation. Each entry has an icon, a one-line description, and a relative time (e.g. 5m ago, 2h ago, 3d ago); events older than that fall back to an absolute date and time.
Four event types render here:
- Pageview (📄) — the URL path the visitor loaded, e.g.
/pricing · 5m ago - Session start (✨) — a marker dropped the first time a visitor returns after a 30-minute inactivity gap, so you can tell separate visits apart
- Custom event (🎯) — the event name plus the first two property values, e.g.
signup_clicked · plan=growth, source=hero - Identify (👤) — shown when the visitor's identity is captured, either via a chat capture in the widget, an
hydra.identify()call from inside your authenticated app, or a magic-link sign-in. Example:Identified as u_12345
Viewing the full history
Click View all under the timeline to open the full history modal — up to 500 events grouped into sessions. A session is a bucket of activity separated from the next by 30+ minutes of inactivity. Each session header shows its start time (and end time if it spans multiple events) plus the event count inside it.
If nothing has been captured for the contact, the panel shows "No site activity captured for this contact." That happens in two cases: site-activity tracking is off on the widget the visitor is using, or it's on but no events have been recorded yet. The toggle lives at Settings → Widgets → [widget name] → Site activity. For the full setup walkthrough, see Site activity tracking.
