Team inbox
The standalone Enscale inbox for support teams — conversations, board view, quick replies, and mobile.
The team inbox is a standalone app built for people who work in the inbox all day. It shows the same conversations as the inbox inside Shopify admin, in real time, but without Shopify's chrome around it — and without needing Shopify access at all.
Why a separate app
Your agents don't need Shopify accounts. Agents sign in with Enscale credentials. No Shopify staff seat, no access to orders, products, or store settings.
That means you aren't paying Shopify for support contractors, nobody gets store admin rights just to answer a message, and offboarding is one removal in Enscale.
It's built for volume. Keyboard-driven composing, fast conversation switching, a board view for triage, and a layout that works on a phone.
It doesn't compete for the tab. Merchants working in Shopify admin and agents working the queue aren't fighting over one window.
Getting your team in
Invite them
In Settings → Team, add each person with the Agent role. Unlimited seats on every paid plan.
They accept the invite
They get an email, follow the link, and set their own password. Forgotten passwords are self-service — there's a reset flow, so you're not resetting passwords for people.
They sign in and take the tour
First sign-in runs a short guided tour of the interface.
See Team and roles for what each role can do.
The conversation list
The left panel is the queue. Conversations are grouped by recency — Today, Yesterday, This week, then older.
Filters
| Filter | Shows |
|---|---|
| Unread | Conversations with unread messages. |
| Mine | Conversations assigned to you. |
| Unassigned | Conversations nobody owns yet. |
| Channel | WhatsApp, Instagram, Facebook, or webchat. |
| Tag | Conversations carrying a specific tag. |
Combine them to build the view your team works from. "Unassigned WhatsApp, tagged urgent" is a shift's worth of work in one filter.
Row actions
| Action | Effect |
|---|---|
| Pin | Floats the conversation to the top of the list. |
| Mark as read / unread | Manual control over unread state. |
| Block / Unblock | Stops the contact's messages appearing and blocks outbound sends. |
Pinned conversations sort above everything else, most recently pinned first. Use it for the thread you're actively working, or the escalation you don't want to lose.
Marking unread is the underrated one — it's how an agent leaves a conversation for the next shift without assigning it to someone specific.
The chat area
Composing
| Control | What it does |
|---|---|
| Attach file | Images, video, and documents, with an optional caption. |
| Emoji | Emoji picker. |
| Voice message | Record and send audio directly. |
| Quick replies | Saved responses — type / or tap the lightning icon. |
| Templates | Approved WhatsApp templates, for when the service window has closed. |
| Reply | Quote a specific message in your reply. |
| Search messages | Search within the conversation. |
Quick replies
Type / in the composer and start filtering. Arrow keys move through matches, Enter inserts.
This is the single biggest speed win for a busy team. Any answer given more than twice a day belongs in quick replies — shipping times, return instructions, sizing guidance.
The distinction from templates matters: quick replies are your own saved text, usable inside the 24-hour window. Templates are Meta-approved and required outside it. See Message templates.
Message states
Outbound messages show delivery state — Sent, Delivered, Read, or Failed. Failures are visible in the thread rather than silently swallowed, so an agent knows to try another route.
Conversation notes
Each conversation has a notes field for internal context — what was promised, what was escalated, what to check next time. Notes are staff-only and never sent to the customer. They save as you type.
AI typing indicator
When an AI agent is composing, the thread shows an "AI is typing" indicator, so an agent doesn't jump in and duplicate the reply.
The contact sidebar
The right panel is why support is fast here — the customer's whole context without leaving the conversation.
| Section | Contains |
|---|---|
| Contact | Name, phone, email, channel identities, consent status. Editable inline. |
| Assignment | Who owns the conversation; reassign to a team member or an AI agent. |
| Tags | Contact tags, with the ability to create new ones. |
| Orders | Shopify order history. |
| Cart | Current cart contents, if any. |
| Products | Products the customer has engaged with. |
| Discounts | Existing discounts, plus generating a new code. |
| Loyalty | Points balance and history, if loyalty is enabled. |
| Linked contacts | Other contact records for the same person. |
| Activity | Conversation timeline. |
Linked contacts
The same person often exists as more than one contact — they messaged on WhatsApp from one number and on Instagram under a handle, and neither knows about the other.
Find related contacts surfaces likely matches so you can link them, and Unlink undoes a wrong match. Linked contacts share history, so an agent sees the whole relationship rather than one channel's slice.
Discount codes
Generate a discount code directly from the sidebar during a conversation — useful for service recovery without switching to Shopify admin. There's a random-code generator so you're not inventing names.
Board view
A kanban board of your conversations, grouped by status:
| Column | Contains |
|---|---|
| Unassigned | Nobody owns it. |
| Assigned | A team member owns it. |
| AI handling | An AI agent is answering. |
| Resolved | Closed. |
Drag a conversation between columns to change its state — dragging from Unassigned to Assigned assigns it, dragging to Resolved closes it.
The board is for triage and for supervision. It answers "how much is sitting unowned right now?" at a glance, which the list view doesn't. Most agents work from the list; leads tend to live on the board.
Real-time behaviour
New messages, assignments, status changes, and AI handovers arrive without refreshing. Two agents on the same queue see each other's actions live.
Enscale uses a websocket connection with automatic polling fallback, so a restrictive corporate network degrades to slightly slower updates rather than a broken inbox.
Browser notifications alert agents to new messages when the tab isn't focused.
Push notifications
Agents can enable push notifications in Settings → Notifications to be alerted on their device even with the app closed.
The browser asks permission the first time. If an agent declines, the browser remembers — they'll need to re-allow notifications in browser site settings, since the app can't ask again.
Push isn't available on every browser and platform combination. The settings page shows whether it's supported.
On mobile
The team inbox works on a phone, which matters for out-of-hours cover.
- Pull to refresh on the conversation list.
- Swipe back from a conversation to the list.
- Layout collapses to one panel at a time, with the contact sidebar behind the info button.
Voice messages are notably better on mobile — an agent can reply to a WhatsApp voice note with one of their own.
Appearance
Settings → Appearance offers Light, Dark, and System themes, per person. Agents working evening shifts tend to want dark; it's their choice, not a workspace setting.
Agents can also set their display name in Settings → Profile. That name appears on internal activity, so "Priya (evening shift)" is more useful to the team than an email address.
Availability under usage limits
The inbox never fully stops.
If your conversation allowance runs out, a 72-hour grace period starts. After it, the inbox becomes reply-read-only — agents keep full access to history, contacts, and context, but can't send until you upgrade or the month resets on the 1st.
Exhausting your workflow allowance doesn't affect the inbox at all. See Plans and limits.
Troubleshooting
| Problem | What to check |
|---|---|
| Agent can't sign in | Did they accept the invite and set a password? Otherwise use the password reset flow. |
| Conversations not updating live | The websocket may be blocked; the app falls back to polling. Refresh to confirm data is arriving. |
| Can't send a message | The 24-hour window may have closed — use a template. Or the conversation allowance is exhausted. |
| Push notifications not arriving | Check browser permission was granted, and that the platform supports push. |
| Sidebar shows no Shopify data | The contact isn't matched to a Shopify customer. See Contacts. |
| Same customer appears twice | Two contact records. Use Find related contacts to link them. |
| Agent sees settings they shouldn't | Check their role — they may be Admin rather than Agent. |
| Quick replies empty | None saved yet. Add the answers your team repeats most. |
Next steps
- Inbox — conversation concepts.
- Team and roles — inviting agents.
- Contacts — the sidebar data.
- Handover — conversations arriving from AI.