# Tickets
> Turn conversations into structured work — category, priority, assignee, state, and notes — so guest problems don't disappear into a chat thread.
> **TL;DR**
>
> * **What it is —** a support-ticket system tied to every chat. Each ticket carries a category and sub-category, a priority, an assignee, a status, and a remarks trail.
> * **Who it's for —** front-desk agents logging maintenance requests, team leads escalating VIP issues, admins running the weekly unresolved list.
> * **Top outcome —** turn "I'll remember to follow up on this" into a record that's assignable, filterable, and emailed to the right people on every state change.
## At a glance
| | |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------- |
| **Plan tier** | All paid tiers. |
| **Who can use it** | Account Owners, Admins, and Users. |
| **Channels** | Any CRM channel a chat can live on: WhatsApp Official, WhatsApp Unofficial, Email, Web Chat. Category lists are configured per channel. |
| **Integrations** | Email notifications on create and status change. |
| **Top limits** | 100 tickets per page in the API. Bulk actions are all-or-nothing. |
| **API** | Yes — partner API for creating, listing, updating, and bulk-operating tickets. |
## How to find it
**Sidebar → Tickets.**
**Direct URL:** `https://lodgestory.com/crm/tickets`
**From a specific chat:** open the chat in Home, scroll the guest-details panel to the **Tickets** section, and click **Create ticket**. The new ticket is attached to that chat.
**Configuration:** categories and sub-categories are managed per channel under **Settings → Ticket Workflows**.
📸 `[SCREENSHOT: tickets-nav.png — sidebar with Tickets highlighted]`
## What is Tickets?
### The problem it solves
Conversations are great for talking. They're terrible for work that outlives a single reply. A guest says "the AC isn't working" on Sunday at 10 PM. Without a ticket, that becomes: remembered by one agent, mentioned in a group chat, forgotten by morning, discovered by the next shift, chased by the guest, fixed eventually — with no record of who owned it, when it was reported, or how long the resolution took.
Tickets gives every actionable chat a parallel record with category, priority, assignee, status, and a notes trail. You can filter "all unresolved plumbing tickets assigned to my team from last week" in one click. The chat stays the chat; the ticket is the work.
### What you get
* **Category-driven triage.** Each channel has its own ticket-workflow configuration with valid issues and sub-issues. You can't pollute the category list with free text — every ticket is drawn from the configured list.
* **Chat-first.** Every ticket is attached to a chat. When you close a ticket the conversation stays. When you open a chat, linked tickets are visible on the right panel.
* **Bulk operations, atomic.** Select many tickets; change status, priority, or assignee; or delete. All succeed, or all roll back — never a half-applied change.
* **Full-text search.** Search across ticket remarks and the linked guest's name / phone / issue category.
* **Email on create and status change.** When a ticket is created or moves to a new status, the relevant people get an email notification.
### How it's different
* **Bound to the chat, not an abstract "case".** Many systems create a ticket as an island. When you resolve it, you lose the message context. Here the ticket sits beside the chat — resolving one never loses the conversation.
* **Category taxonomies per channel, not per organisation.** A hospitality channel can use *Open → In progress → Waiting on vendor → Resolved*; a technical support channel can use *New → Triaged → Fixed → Verified*. The ticket workflow lives on the channel, so different teams can run different flows.
* **Two separate ticket surfaces.** The main CRM ticket system is for your guest-facing work. Separately, Lodgestory has a platform-level support surface for raising issues to Lodgestory itself. The two are deliberately kept distinct.
### Customer scenarios
* **Hospitality complaint.** A guest messages "AC not cooling" on WhatsApp. The agent reads the chat, clicks **Create ticket** from the guest panel, picks *Maintenance → HVAC*, sets priority *High*, and assigns the maintenance team. The guest receives an acknowledgement; the maintenance lead gets an email. When the fix is logged and the ticket moves to *Resolved*, the guest gets a status-change email.
* **Outbound-call follow-up.** After a sales call, an agent logs a ticket on the linked chat: *Follow-up — quote sent*. It shows on the weekly pending-follow-ups report and in the agent's queue.
* **Bulk reassignment after staff change.** An admin filters to *Assigned to Alice* and bulk-reassigns to Bob when Alice goes on leave.
### How it fits with the rest of Lodgestory
Tickets is a downstream module for [Home](home-unified-inbox.md). Handoffs from [Bot Journeys](../settings/bot-journeys.md) often become tickets shortly after the agent takes over. The category list is owned by [Ticket Workflows](../settings/ticketing-machines.md) in Settings.
📸 `[SCREENSHOT: tickets-landing.png — tickets list page with filters and bulk-action bar]`
## Core concepts
| Term | What it means |
| --------------------- | -------------------------------------------------------------------------------------------------------- |
| **Ticket** | A structured work item tied to a chat. Has an issue, sub-issue, priority, status, assignee, and remarks. |
| **Ticket workflow** | The configuration per channel that enumerates valid issues, sub-issues, and status values. |
| **Issue / sub-issue** | The category and sub-category of the ticket, drawn from the channel's ticket workflow. |
| **Priority** | Low, Medium, or High. Used for filtering and sorting. |
| **Status** | Where the ticket is — typically Open, In progress, Resolved, Closed (configurable). |
| **Remarks** | The free-text note that describes the ticket and the work on it. |
| **Assignee** | The team member responsible for resolving the ticket. |
A chat can have many tickets — one per issue — at the same time. A ticket cannot exist without a chat; deleting a chat also deletes its tickets.
## Quick Start — create and resolve your first ticket in 3 minutes
### Step 1 — Open a chat
Sidebar → **Home** → click any chat in the list.
### Step 2 — Open the Tickets section in the guest panel
Scroll the right panel to **Tickets**. If the channel has no ticket workflow configured, you'll see a prompt to configure one in Settings.
📸 `[SCREENSHOT: tickets-qs-2.png — tickets section on guest panel]`
### Step 3 — Click **Create ticket**
A dialog opens with fields: Issue (required), Sub-issue (optional), Priority (Low / Medium / High), Assignee, Remarks.
📸 `[SCREENSHOT: tickets-qs-3.png — create dialog]`
### Step 4 — Fill and save
Pick a category, set priority, pick an assignee, write the first remark, and **Save**.
> **What you'll see next:** the ticket appears in the Tickets section with status *Open*. The assignee gets an email notification.
### Step 5 — Manage from the Tickets list
Sidebar → **Tickets**. The new ticket is in the list. Open it; change the status to *In progress*, add a remark, save.
### Step 6 — Resolve it
When the issue is fixed, open the ticket and set status to *Resolved*. A status-change email is sent; the ticket stays in the list but drops off the "status = open" filter.
## How it works
When you create a ticket, Lodgestory:
1. Validates the issue and sub-issue against the channel's ticket workflow.
2. Saves the ticket and links it to the chat.
3. Emails the assignee (and any watchers) with the ticket details.
When you change status, priority, assignee, or remarks:
1. Lodgestory records the change with a timestamp and the actor.
2. Emails the relevant people (assignee and ticket creator) on status changes.
Everything is applied atomically — if the change fails validation, nothing changes.
## Features in depth
### The Tickets list page
**Where to find it:** Sidebar → Tickets.
A table of tickets with inline filters, bulk-select, search, and pagination. Columns typically shown: ID, chat (guest name), channel, issue / sub-issue, priority, status, assignee, created date, updated date, creator, remarks preview, actions.
Click any row to open the ticket detail.
### Filters
Eight dimensions:
1. **Status** — multi-select.
2. **Priority** — multi-select (Low, Medium, High).
3. **Assignee** — multi-select team members, plus *Unassigned*.
4. **Creator** — multi-select.
5. **Channel** — multi-select.
6. **Issue / sub-issue** — cascading picker.
7. **Date range** — created between two dates.
8. **Search term** — free-text across remarks, guest name, phone, and issue category.
### Bulk operations
Select two or more tickets in the list; the bulk action bar appears. Supported:
* **Bulk assign** — set the same assignee on all selected.
* **Bulk status change** — move all selected to the same status.
* **Bulk priority change** — set the same priority on all selected.
* **Bulk delete** — delete all selected.
Every bulk action is atomic — if one fails, none apply.
### Ticket detail sheet
Opens when you click a row. Shows every field with inline edit, a history trail of status / priority / assignee changes with timestamps and actors, the remark thread, and any attached media. Provides actions for status change, reassignment, and delete.
### Creating a ticket from a chat
**Where to find it:** Home → open any chat → guest-details panel → Tickets section → **Create ticket**.
The category list is the channel's ticket workflow. If the channel has no workflow configured, the create flow prompts you to configure one before you can make a ticket on that channel.
### Ticket Workflows (category configuration)
**Where to find it:** Settings → [Ticket Workflows](../settings/ticketing-machines.md).
Per-channel list of issues, sub-issues, and status values. Managed by admins.
## Roles and permissions
| Action | Account Owner | Admin | User |
| ------------------------------------------- | :-----------: | :---: | :--: |
| View all organisation tickets | ✓ | ✓ | ✓ |
| View tickets on chats the user can see | ✓ | ✓ | ✓ |
| Create a ticket | ✓ | ✓ | ✓ |
| Update a ticket (status, priority, remarks) | ✓ | ✓ | ✓ |
| Reassign a ticket | ✓ | ✓ | ✓ |
| Delete a ticket | ✓ | ✓ | ✓ |
| Bulk operations | ✓ | ✓ | ✓ |
| Configure the channel's ticket workflow | ✓ | ✓ | ✗ |
## Cross-module workflows
### Complaint logged → escalated → resolved → follow-up survey
A customer complains on WhatsApp. The agent opens the chat in Home, creates a ticket with *High* priority under *Maintenance → HVAC*, and assigns the maintenance team. The team lead gets an email. When the fix is verified, the team sets the ticket to *Resolved*; a status-change email goes to the original agent and the customer. A separate campaign sends a follow-up satisfaction survey via WhatsApp template.
**Modules involved:** Home → Tickets → Campaigns (satisfaction follow-up).
### Bot-journey handoff → ticket opened on pickup
A bot journey's hand-off step transfers to a human team. When the agent opens the chat, they create a ticket for traceability. The ticket carries the full chat history via the linked chat — the agent doesn't re-type anything.
**Modules involved:** Bot Journeys → Home → Tickets.
## Limits a user will run into
| Limit | Value |
| ------------------------- | ------------------------------------------------------------ |
| Pagination (API) | 100 tickets per page |
| Tickets per chat | No limit |
| Media attached per ticket | No limit |
| Ticket remark length | No enforced limit (long text may be truncated in list views) |
## Errors & FAQ
| You see | Likely reason | What to do |
| ------------------------------------------------------- | ------------------------------------------------------- | -------------------------------------------------------------- |
| *"Issue is required"* | No category selected at create time | Pick an issue from the category dropdown |
| *"Invalid issue/sub-issue for this channel"* | Category doesn't exist in the channel's ticket workflow | Pick a valid category, or have an admin add it to the workflow |
| *"Ticket not found"* | Wrong ID or the ticket was deleted | Refresh the list |
| *"Ticket belongs to a different organisation"* | Cross-organisation access attempt | Switch to the correct organisation |
| *"Assignee must be a member of the organisation"* | The assignee isn't on your team anymore | Pick a current team member |
| *"Invalid status transition"* | Status move not allowed in the workflow | Pick a valid target status |
| *"Failed to create ticket" / "Failed to update ticket"* | Network or validation | Read the error message, fix, and retry |
### Frequently asked
**Why can't I create a ticket on this chat?**
The channel has no ticket workflow configured. Go to Settings → Ticket Workflows and create one for that channel.
**Why don't I see the assignee's email on the ticket detail?**
The detail shows the assignee's name and a link to Team Members for their profile. Email notifications still go out to them.
**Can I set an SLA?**
Not yet. Use priority plus a scheduled report on open tickets by age as a workaround.
**Why did the ticket disappear when I deleted its chat?**
Tickets are deleted along with their chat by design. If you need the ticket history, export via Reports before deleting.
**Does editing the ticket workflow invalidate existing tickets?**
No. Existing tickets keep their issue and sub-issue even if those values are later removed from the workflow.
## Related modules & next steps
* [Home (Unified Inbox)](home-unified-inbox.md) — where tickets are typically created from.
* [Ticket Workflows](../settings/ticketing-machines.md) — configure the per-channel category list.
* [Bot Journeys](../settings/bot-journeys.md) — hand-offs that often become tickets.
* [Campaigns](campaigns.md) — satisfaction follow-ups after resolution.
* [Reports](reports.md) — export tickets as CSV.
* [Team Members](../settings/team-members.md) — manage the assignees on your team.