Support
The human side: live chat inbox, tickets, contacts, call takeover, team management, and CRM analytics.
Complete reference for the Support section — the live chat inbox, outsourced staffing, live-call takeover, the CRM (tickets and contacts), support analytics, per-channel ticket rules, and team management.
Every role sees this section, but which pages and which controls differ substantially by role. See Roles and permissions.
For the fast path, use the Quick Start.
Section map#
| Sidebar page | Path | What it is |
|---|---|---|
| Support Chat | /support-chats | Live inbox for conversations handed over by the AI |
| Managed Support | /managed-support | Outsourced human agents and supervisors, staffed by FloGPT |
| Live Calls | /support/live-calls | Monitor and take over in-progress AI calls |
| Tickets | /crm/tickets | The ticket queue |
| Contacts | /crm/contacts | Customer records and their identifiers |
| Admins | /admins | Manage organization admins |
| Agents | /agents | Manage support agents |
| Supervisors | /supervisors | Manage supervisors |
| My Analytics | /crm/analytics/self | Your own ticket analytics |
| Agent Analytics | /crm/analytics/agent | Per-agent CRM analytics |
| Supervisor Analytics | /crm/analytics/supervisor | Org-wide analytics with a leaderboard |
| Settings | /crm/settings | Which channels create tickets |
/support-tickets redirects to /crm/tickets.
Roles and permissions#
The roles are owner, admin, supervisor, and agent (with editor and viewer existing elsewhere in the product).
| Page | Who sees it |
|---|---|
| Support Chat, Live Calls, Tickets, Contacts, My Analytics | Everyone |
| Managed Support | Owner or admin |
| Agent Analytics | Supervisor or owner |
| Supervisor Analytics, Settings | Owner |
| Admins, Agents, Supervisors | Owner |
Within the CRM, owner, admin, and supervisor are treated as privileged and unlock:
- The agent filter on Tickets and the bulk-actions bar
- Reassigning a ticket to someone else
- Editing tags
- Creating a contact
Agents are scoped to their own work. An agent can only edit a ticket assigned to them — an unassigned ticket is read-only until claimed, and a colleague's ticket shows Only the assigned agent can edit this ticket.
One inconsistency worth knowing: the Admins sidebar entry is offered to admins as well as owners, but the
/adminspage itself is owner-only. An admin who clicks it will not get the page. Likewise Settings is only listed for owners, though the page is readable more widely and editable by owners and admins.
Support Chat#
The live inbox. Left panel is titled Messages.
How a conversation gets here
A widget conversation is handed over when the visitor asks for a person — the AI watches for phrasing like human agent and escalate — or when a workflow reaches a Human Handoff node (see Chat). A support request is created with status pending and appears in this list.
If no agent is available, the bot tells the visitor so: Our support agents are currently unavailable. Your request is pending. The nearest available time to connect is {time}. The request is not dropped — it waits. Availability comes from Support Agent Business Hours in Setup, so an over-restrictive schedule is the usual cause of requests sitting untouched.
Conversations can also be flagged Escalated automatically by the idle-time rules in Setup → Escalation.
Filters
| Control | Options |
|---|---|
| Search | Search conversations... |
| Date range | 7d, 30d, All, Custom (with From / To) |
| Status | Escalated, Pending, Assigned, Transferred, Resolved, Archived, each with a live count |
The conversation list
A row is titled User · Ticket #{number} when a ticket exists, otherwise by visitor name or User. Unread counts, platform icons, and pills for Escalated, Transferred, Assigned, Resolved, and priority appear inline.
| Action | When it appears |
|---|---|
| Assign me | Unclaimed conversations |
| Connect | A conversation transferred to you that you have not yet joined |
| Archive | On resolved rows, via the row menu |
Working a conversation
Selecting nothing shows No conversation selected — Choose a conversation from the left to start messaging.
The transcript shows the whole history, with a Support Handoff · {date} separator marking where the AI stopped and the human part begins. Read the AI's last turns first — the customer has already explained the problem once, and repeating the questions is the fastest way to annoy them.
The composer reads Reply to customer... with the hint Press Enter to send, Shift+Enter for a new line. On a resolved chat it is disabled: Resolved chat cannot receive new messages.
The action bar offers:
| Control | Behaviour |
|---|---|
| Create CRM Ticket / Open CRM Ticket | Picks up the visitor as contact (or creates one) and files a general ticket linked to this chat. Takes a Priority (Low, Medium, High, Urgent) and an optional subject |
| Resolve | Opens Resolve Chat with optional remarks |
| Assignment menu | Resolve Conversation, Transfer Conversation, Assign to Me |
The transfer list is searchable and grouped into Agents ({n}) and Supervisors ({n}).
Managed Support#
Owner or admin. This page is not an inbox — it is how you buy human staffing.
Managed Customer Support — Add trained human agents and supervisors to your team — hired, managed, and staffed by us. Available worldwide.
Two seat types, priced per month:
| Seat | Does |
|---|---|
| Support Agent | Handles live chat, tickets, and email in your support inbox. |
| Supervisor | Oversees your agents, quality, and escalations. |
Your managed support shows the status (Not requested, Awaiting payment, Active, Payment past due, Canceled) with Agent seats, Supervisor seats, and Assigned staff.
The flow is: Request managed support → choose seat counts → pay → schedule your kickoff meeting (a date and time, plus optional context — Support hours, tools, product areas, languages…) → FloGPT assigns staff. Until the kickoff, Staff will be assigned by our team after your kickoff meeting.
Cancellation is at period end, and a scheduled cancellation can be reversed with Keep subscription.
Shopify-billed organizations must choose a Shopify plan first — Choose a Shopify plan first.
Live Calls#
Live Calls — Monitor and take over voice calls served by the AI assistant. Visible to every role, real-time.
Two groups:
| Group | Meaning |
|---|---|
| Ringing now | Caller waiting for a human agent. First click wins. |
| Active AI calls | Currently being handled by the AI. Click Monitor to listen in or Take over to bridge yourself in. |
Each card shows who controls the call (AI or an agent's name), the caller, the last turn, and for ringing calls a Reason:. The button reads Pick up, Open, or Take over depending on state.
Empty: No live calls right now — When a caller dials in, you'll see them appear here in real time.
Inside a call
Opening a call starts you listening, with a live transcript alongside Sentiment:, Summary:, and Known caller:. Turns are tagged Caller or AI, and marked interrupted where the caller cut in. Before the first turn: Waiting for the conversation to start…
Your microphone status shows Mic live, Listening, or —.
| Control | Effect |
|---|---|
| Pick up | Answer a ringing caller |
| Take over | Bridge your microphone into an AI call |
| Release | Hand control back to the AI |
| Hang up / End call | Finish the call |
| Decline | Refuse a ringing call |
Take over rather than calling back — the caller stays connected and you inherit the full context.
Control errors
These messages are precise and tell you exactly what happened:
| Message | Meaning |
|---|---|
| Only the agent handling this call, or a supervisor, can end it. | You do not hold the call |
| Another agent already picked up this call. | Lost the race |
| This call has already ended. | Too late |
| Too many agents are already listening to this call. | Listener cap reached |
| Live audio for this call is unavailable right now. The transcript is still live. | Audio bridge unreachable — you can still read along |
Ending an AI-held call is restricted to owners, admins, and supervisors.
Tickets#
Ticket numbers
Every ticket gets {ORG_PREFIX}-{six digits} — for example ACME-000042 — from a per-organization counter. The prefix is derived from your organization. Search accepts the ticket number directly: Search by ticket number...
Statuses, priorities, and channels
| Set | Values |
|---|---|
| Status | unassigned, assigned, open, pending, resolved, closed |
| Priority | Low, Medium, High, Urgent |
| Source channel | Chat, Call, Email, WhatsApp, Instagram, Facebook, SMS, Manual |
| Subject | Order, Product, Subscription, Service, General |
Archived is a separate flag rather than a status, which is why the pills read All, Unassigned, Assigned, Open, Pending, Resolved, Archived.
The list
Columns: Ticket, Contact, Status, Priority, Assigned To, Updated, Actions.
Two counts sit by the heading — tickets matching the current filters, and All tickets in the org (incl. archived).
Filters: search, priority, channel, subject, a sort selector (Last updated, Oldest update, Newly created, Oldest first, Last message), and a time range (All time, Today, 7d, 30d, 90d, Custom). Privileged roles also get a Mine toggle, an agent selector, and tag filtering.
A Compact / Comfortable density toggle and a Reset control sit in the header. Empty: No tickets found — Try adjusting your filters or search query.
Saved views let you pin the current filter set by name, optionally Share with the entire organization — though Only you can edit or delete this view, even when shared. This is the fastest way to give a team a shared definition of "my urgent queue".
Bulk actions
Privileged roles only — others see Bulk actions are available to owner/admin/supervisor only.
Assign…, Set priority…, Add tag…, Archive. Results report Updated {n} of {total} tickets. Selecting tickets not assigned to you when you lack permission warns {n} ticket(s) not assigned to you — deselect to enable.
The Manage drawer
Tabs: Overview, Conversation, Notes & Activity, Contact, Internal.
Overview holds Assigned to, Priority, Status, Resolution summary, and Tags. Assignment offers Self assign and Assign agent / Reassign with a searchable member list.
Status moves are explicit rather than a free dropdown:
| From | Action |
|---|---|
assigned | Open ticket |
open | Resolve or Put on hold |
pending | Resume |
resolved | Close ticket |
Resolve opens a dialog — Add an optional summary — stored on the ticket and copied into the action history. Write it. It is what the next person reads.
Contact shows the contact, their identifiers, linked external CRMs, and deep links (Open chat, Open WhatsApp chat, Open call log).
Internal is the raw record — every id and timestamp, including Ticket ID, Conversation ID, Call Log ID, Email Thread ID, and Last Message Direction. This is the tab to open when something needs escalating to support or debugging against the API.
Notes, replies, and file requests
The composer on Notes & Activity has three modes:
| Mode | Behaviour |
|---|---|
| Internal note | Teammates only. Supports @ Mention |
| Reply to customer | Sends over Email, SMS, WhatsApp, Instagram, or Facebook |
| Request files | Sends a secure upload link |
Reply channels are enabled per contact and per ticket. Where a channel is unavailable the tooltip says why — Contact has no email on file, Contact has no phone on file, Contact has no WhatsApp/phone on file and ticket is not from WhatsApp. Email replies default their subject to Re: Ticket {n}.
Request files sends a one-time secure link — The customer receives a one-time secure link (valid 14 days) to upload files back to ticket {n} — and uploads appear under Attachments pilled from customer or by agent. This is materially more reliable than asking for an email attachment, and the files land on the ticket rather than in someone's mailbox.
The activity feed filters to All, Notes, or Activity, and records every change: Ticket created, Assigned, Reassigned, Status changed, Priority changed, Tags changed, Archived, Unarchived, Note added, Reply sent to customer, Reply to customer failed, Customer replied, Attachment request sent, Attachment uploaded.
Reply to customer failed is the one to watch for — a reply that did not send leaves a trace here rather than failing silently.
Contacts#
Columns: Name, Identifiers, Updated. Search by name or identifier, or filter By identifier... across Email, Phone, WhatsApp, Instagram, Facebook, Visitor ID. Nameless records show Unnamed.
Create contact is privileged. A contact must have at least one identifier. Existing identifiers will merge into the matching contact.
| Group | Types |
|---|---|
| Identifiers | Email, Phone, WhatsApp, Visitor ID |
| Social profiles | Instagram URL/ID, Facebook URL/ID |
Social profiles are saved for reference — they don't affect messaging or contact matching.
Validation is strict, and deliberately so: Email must look like [email protected], and phone numbers must be E.164 (e.g. +14155552671) — include country code, digits only. A number without a country code cannot be messaged.
The merge behaviour is the important part. Adding an identifier that already exists elsewhere folds the record into the existing contact — which is how a customer who first chatted anonymously and later gave an email becomes one person rather than two. If an identifier set spans more than one existing contact, it refuses: These identifiers overlap with more than one existing contact — an admin merge is required.
Support analytics#
Three pages share one dashboard, scoped differently.
| Page | Scope | Who |
|---|---|---|
| My Analytics | Your own tickets | Everyone |
| Agent Analytics | A chosen agent | Supervisor, owner |
| Supervisor Analytics | Org-wide, plus leaderboard | Owner |
Blocked access is explicit: Agent Analytics is available to organization owners and supervisors. and Supervisor Analytics is restricted to organization owners.
Metrics:
| Card | Notes |
|---|---|
| Total tickets | With {n} unassigned underneath |
| Open | |
| Resolved | |
| Closed | |
| Avg resolution | With p90 underneath |
| First response | avg time to first agent touch |
Avg resolution carries a p90 for a reason — averages hide the tail. If the average looks fine and p90 is dreadful, you have a small number of tickets rotting, which is what customers actually complain about.
Panels: Tickets over time (Created vs resolved per day), By status, By priority, By channel, Top tags, and — on Supervisor Analytics only — Agent leaderboard with Agent, Open, Resolved, Closed, Avg resolution.
The range filter is a chip set — All time, Today, 7d, 30d, 90d, Custom — defaulting to 30d. Note this differs from the two-date picker used in Insights.
Empty: No analytics data yet. and, per chart, No data in this range.
Settings#
Owners and admins can edit; others see You're viewing in read-only mode — only organization owners and admins can change these settings.
Support Settings — Channels are linked to the providers you've configured in Integrations. Each channel can be paused, given a default priority for new tickets, and (when multiple accounts are connected) pinned to a specific account.
| Channel | What it creates |
|---|---|
| Threaded inbox replies + new tickets from your support address. | |
| SMS | Inbound texts to your assigned numbers create a ticket per thread. |
| WhatsApp Business DMs land in the unified CRM inbox. | |
| Instagram DMs to your Business account open a CRM ticket. | |
| Page Messenger conversations open a CRM ticket. | |
| Live Chat | Bot → human handoffs mirror into CRM so agents have full context. |
| Voice Calls | Every completed/failed call mints its own ticket with the recording link. |
Each channel has a toggle, a Default priority (Low, Medium, High, Urgent), and — with several accounts connected — an Account picker defaulting to All connected accounts.
Channels you have not wired up show Not connected with a link to Configure in Integrations. Paused channels show Ticket creation paused.
Voice Calls is worth a deliberate decision: it mints a ticket for every completed or failed call. On a busy calling floor that is a lot of tickets. Pause it, or accept the volume knowingly.
Team management#
Three near-identical owner-only pages: Admins Management, Agents Management, Supervisors Management.
Filter by All, Active, Inactive, or Pending for that role, and add people two ways:
| Route | Behaviour |
|---|---|
| Invite {Role} | Emails an invitation. Creates a Pending Invite row that can be resent or deleted |
| Create {Role} | Set up a new {role} with a username and password. They can sign in immediately — no invitation email is sent. |
Create {Role} requires Email, First name, Last name, Password, and Confirm password, with a live checklist: At least 8 characters, Uppercase letter (A-Z), Lowercase letter (a-z), Number (0-9), Special character (!@#$%...). There is a Generate strong password helper.
Use Invite normally; use Create for people who cannot receive the invitation email, or when you are onboarding someone in the room with you.
Rows show Active, Inactive Member, or Pending Invite, with actions to Resend Invitation, Delete Pending {Role}, or Deactivate / Activate. Deactivating preserves the record and their history; it is the right move when someone leaves.
Empty: No admins found. Invite one!
Troubleshooting#
| Symptom | Usual cause |
|---|---|
| Nothing arrives in Support Chat | No Human Handoff node in the workflow, and no visitor asking for a person |
| Requests sit Pending for hours | Outside Business Hours in Setup — they wait for the next window |
| Visitor told nobody is available during working hours | The business-hours schedule has no slot covering now |
| An agent cannot edit a ticket | Agents can only edit tickets assigned to them — Self assign first |
| Reassign, tags, or bulk actions greyed out | Those need owner, admin, or supervisor |
| An admin clicks Admins and gets nothing | That page is owner-only despite being listed for admins |
| A reply channel is disabled | The contact has no identifier for it — check the tooltip |
| A customer never got the reply | Look for Reply to customer failed in the activity feed |
| A channel shows Not connected | Configure the provider in Integrations first |
| Overwhelmed by call tickets | Voice Calls mints one per completed or failed call; pause it in Settings |
| The same customer exists twice | They had no shared identifier; adding one merges them |
| Merge refused | The identifiers span two contacts and need an admin merge |
| Take over fails | Another agent won the race, the call ended, or the listener cap was hit |
| Audio unavailable but transcript live | The monitor bridge is unreachable; read along instead |
| Analytics look empty | Check the range chip — it defaults to 30 days |
| Avg resolution fine but customers complaining | Read p90; the tail is where the complaints are |
Related#
- Support quick start
- Chat — the Human Handoff node that feeds this inbox
- AI Calls — the calls you take over
- Call Centre — the outbound human calling floor
- Setup — business hours, escalation timings, team pages
- Integrations — the channels tickets arrive on
- Insights — agent and call analytics