One shared inbox for the whole team
Every DM, comment, and ad reply from every connected channel lands in one place. Custom fields, tags, and statuses live inline with the conversation. Human teammates can jump in whenever they want.
#Shared inbox
Open /dashboard/inbox. You'll see three tabs and a left-side conversation list.
Tabs
- WhatsApp — every WA conversation across every connected number.
- Instagram — every IG DM across every connected account.
- Comments — Instagram comments that haven't been auto-handled by an automation. Reply, mark ignored, or hide.
Conversation view
Click a conversation to open it. You'll see:
- The message thread — text, media (images, video, audio players, docs), polls with live tallies.
- Delivery ticks (sent / delivered / read) mirrored from the platform.
- The customer's CRM panel on the right — name, phone, status, tags, custom fields, ad referrer.
- The current agent and its status (Active / Paused).
Replying as a human
Type a reply in the composer at the bottom. Sending your own reply doesn't pause the agent — for a proper handoff, use the Pause agent button on the CRM panel. Unpause when you're done.
Every conversation has a “Talk to agent” panel — an operator-only back-channel where you can ask the agent questions about the customer (“What did they say last week?”) without the customer seeing anything.
Realtime updates
Inbox is live: new messages, delivery ticks, poll votes, and comment replies push to the open chat via WebSockets. No refresh needed.
#Contacts (CRM)
Open /dashboard/contacts for the full contact list.
List view
- Every unique sender across every channel gets one row.
- Instagram contacts show
@usernameand profile picture; WhatsApp contacts show phone number + pushName. - Filter by channel, tag, status, or custom field.
Status
A short label describing where the contact is in your funnel. Defaults to NEW; the agent updates it via upsertClient, or you can change it manually. Customise the allowed labels from the workspace settings.
Custom fields
Go to /dashboard/contacts → Manage Fields. Define your own attributes:
- Key — snake_case identifier the agent will read/write (
age,company_size). - Label — human-readable name shown in the UI.
- Type — text, number, date, or select.
Enable the User Fields skill on an agent to let it save answers into these fields.
Pausing contacts
A paused contact stops receiving auto-replies. Their messages still land in the inbox — the agent just doesn't answer. Two ways to pause:
- Manual — click Pause agent on the CRM panel.
- Automatic — the agent uses the Self-pause skill when it decides handoff is appropriate.
Resume from the same panel to hand the conversation back to the AI.
#Ad attribution
Contacts who arrived through a click-to-message ad show the ad's campaign, ad set, and ad ID in the CRM panel. Combined with tags and analytics, you can trace revenue back to specific campaigns.