Skip to main content

At a glance

TicketsConversations
WhatAsync work items with status and assigneeReal-time AI sessions in the widget
LifecycleLong-lived, statuses change over timeShort-lived, end when the user closes the widget
OwnersYour team (assigned to a teammate or inbox)The AI agent (until a human takes over)
ThreadsEmail threads, chat replies, internal notesOne stream of user/AI/teammate messages
Created byEmail arrival, AI escalation, takeover, API, integrationsThe widget opening on your site
Ends whenA teammate marks it resolvedThe user closes the widget
Both live under Inbox in the dashboard sidebar.

Conversations

A conversation is a live AI session. As soon as a user opens the chat widget on your site (or starts a voice or Live Help session), a conversation row is created and appears in Inbox > Conversations > Live Feed. While the conversation is active you can:
  • Watch the messages flow in real time
  • See the user’s mood (Happy / Neutral / Confused / Frustrated / Angry, derived from the AI’s sentiment scoring)
  • Send the AI an inbox training whisper that nudges its next response and can persist for that customer
  • Add corrections that improve future training
  • Take Over Chat — pause the AI and respond as a human (this creates a ticket)
When the user closes the widget, the conversation moves to Completed. Completed conversations include:
  • The full transcript
  • AI confidence scoring
  • The outcome (Resolved / Escalated / Abandoned)
  • A computed AI score (heuristic from sentiment, outcome, and feedback)
  • Per-message ratings and trainer feedback
You can still take over a completed conversation by clicking Take Over — Halo creates a ticket from the transcript and gives you a place to follow up.

Tickets

A ticket is a work item your team owns. Tickets have:
  • A status (Open, Priority, In Progress, Snoozed, Resolved, Spam)
  • An assignee (a teammate, or unassigned)
  • A subject
  • A thread of messages (email + chat + internal notes)
  • Metadata (channel, source, custom fields, AI confidence, escalation reason)
Tickets are created when:
SourceStatus assignedNotes
Customer email arrivesOpen (or Spam if detected)Mailgun webhook → ticket. Re-arriving emails on closed tickets reopen them.
AI escalatesPriority if user matches priority filters, else OpenFull conversation transcript is attached as context.
Teammate takes over a live conversationIn Progress”Jump in” creates a ticket and assigns it to the teammate.
API call to /api/sdk/tickets/createWhatever you specifyUsed by form builders, CRMs, bug tools.
Integration webhookVariesE.g. Linear-related events can spawn tickets via the API.
Tickets can be merged when a customer accidentally creates duplicates from different channels. Pick the primary, merge the rest, and the merged tickets are marked Resolved with their messages joined into the primary’s thread.

Ticket statuses

StatusMeaning
OpenActive, awaiting work or reply. Default for new tickets.
PriorityHigh urgency. Triggered by AI escalation matching priority filters or set manually.
In ProgressA teammate is actively handling it. Set automatically when you take over a live conversation.
SnoozedHidden from default lists until a future time. Auto-unsnoozes via background job. New activity also unsnoozes immediately.
ResolvedClosed. Manually set or automatically by AI email auto-reply.
SpamDetected as junk. Skipped from default lists. Trusted senders bypass spam detection.
When new email activity arrives on a Resolved or Snoozed ticket, the status flips back to Open automatically (Spam stays Spam unless you change it).

How they connect to contacts

Both tickets and conversations link back to the end user (your customer’s record in Halo) and, when known, the company they belong to:
  • Open a contact at Contacts > [User] to see all their tickets and conversations.
  • Open a company at Companies > [Company] to see every interaction across all their users.
This is why identifying users via the SDK matters so much — without it, every ticket and conversation gets linked to “Anonymous” instead of the real customer record.

Picking the right one for your workflow

You generally don’t need to think about this — Halo creates the right type for each entry point. But if you’re building integrations:
Use caseUse
Form submission, CRM event, bug report, programmatic ticketPOST /tickets/create
Synthetic chat message you want the AI to respond toPOST /chat
Watching AI activity for QA / QCConversations > Live Feed
Following up on a customer issue asyncTickets

Where to go next

Working Tickets

Replies, internal notes, AI assistance, statuses.

Live Conversations

Watching, coaching, and taking over live AI sessions.