Ticket Management

Tickets are the central unit of work in RapiDesq. Every customer interaction — whether it arrives through live chat, email, a web form, or the service desk — becomes a fully trackable ticket with a complete lifecycle, AI-powered analysis, performance metrics, and a rich audit trail. This guide covers every aspect of working with tickets.

Overview

A ticket represents a single customer request or issue from the moment it is received until it is fully resolved and closed. Tickets are created automatically when a customer initiates a conversation through any supported channel — Chat, Email, Web Form, or Service Desk — or they can be created manually by agents for interactions that happen outside digital channels.

Every ticket stores a comprehensive set of data:

Note — Because every channel converges into the same ticket structure, your team works from a single queue regardless of how customers reach you. Reporting, routing, and SLA tracking all operate uniformly across channels.

Ticket Lifecycle

Every ticket progresses through six statuses that reflect where it stands in the resolution process. Understanding these statuses and the transitions between them is essential for managing your queue effectively.

Statuses

Status Description
NEW The ticket has just been created and has not yet been assigned to any agent. It sits in the team queue waiting to be picked up or automatically routed.
ASSIGNED The ticket has been assigned to a specific agent but work has not yet started. The agent is aware of the ticket and it appears in their personal queue.
IN_PROGRESS The agent is actively working on the ticket — investigating the issue, communicating with the customer, or coordinating a resolution.
WAITING Work is paused because the agent is waiting on a response from the customer or an external party. The ticket is not abandoned — it will resume when a reply arrives.
RESOLVED The agent has addressed the issue and considers it resolved. The customer may still reopen it by replying, which returns the ticket to IN_PROGRESS.
CLOSED The ticket is permanently closed. No further action is expected. Closure records who closed it and why.

Status Transitions

Tickets follow a defined set of transitions. The diagram below illustrates the full lifecycle flow:

  +-------+         +----------+         +-------------+
  |  NEW  | ------> | ASSIGNED | ------> | IN_PROGRESS |
  +-------+         +----------+         +------+------+
                                                |     ^
                                    Agent       |     | Customer
                                    waiting     v     | replies
                                          +---------+ |
                                          | WAITING  |-+
                                          +---------+
                                                |
                                     Agent      | (back to IN_PROGRESS
                                     resolves   |  on customer reply)
                                                v
                                          +----------+         +--------+
                                          | RESOLVED | ------> | CLOSED |
                                          +----+-----+         +--------+
                                               |
                                               | Customer reopens
                                               v
                                          +-------------+
                                          | IN_PROGRESS |
                                          +-------------+
      

Transition Details

Note — The helper methods isOpen() and isAssigned() are available to quickly check whether a ticket is still active or has an agent assigned, making it straightforward to build filters, automations, and reporting queries.

Ticket Display IDs

While every ticket has an internal UUID for system-level operations, agents and customers interact with tickets using a human-readable display ID. Display IDs are constructed from the assigned team's ticket prefix and a sequential number within the tenant.

How Display IDs Work

Examples

Team Prefix Generated Display IDs
Customer Support SUP SUP-0001, SUP-0002, SUP-0003, ...
Billing BIL BIL-0001, BIL-0002, BIL-0003, ...
Technical Escalation ESC ESC-0001, ESC-0002, ESC-0003, ...
Tip — Choose short, distinctive prefixes for each team. When agents see "BIL-0047" in a notification, they immediately know which team owns the ticket without opening it. This is especially valuable in cross-team communications and supervisor dashboards.

Priorities

Every ticket carries a priority that determines its position in agent queues and affects SLA calculations. RapiDesq supports four priority levels:

Priority When to Use
LOW General inquiries, feature requests, or non-time-sensitive items that can be addressed as capacity allows.
NORMAL (default) Standard customer requests that should be handled within the team's typical response targets. This is the default priority for all new tickets.
HIGH Important issues requiring prompt attention — for example, a customer experiencing degraded service or a time-sensitive question.
URGENT Critical issues requiring immediate action — service outages, security incidents, or situations with significant business impact.

Priority and Queue Ordering

When a team uses the PRIORITY_FIFO routing strategy, tickets are ordered by priority first and then by creation time within each priority level. This means an URGENT ticket that arrived five minutes ago will always appear above a LOW ticket that has been waiting for an hour. Agents working from the top of their queue will always address the most critical work first.

Setting Priority

Tip — Document what each priority level means for your organization and share it with your team. Consistent priority assignment makes queue management predictable, SLA reporting meaningful, and ensures that genuinely urgent issues get immediate attention.

Custom Fields

Custom fields let you capture structured data specific to your business on every ticket. They are stored as a flexible JSONB object, allowing each tenant to define the fields that matter to them without any schema changes.

Supported Field Types

Type Description Example Use
Text Free-form text input for open-ended information. Account number, product name, error message
Number Numeric values for quantities or measurements. Order amount, number of affected users
Dropdown A predefined list of options for consistent categorization. Issue category, product line, region
Date A date picker for time-related data. Desired delivery date, incident date
Checkbox A boolean true/false toggle. VIP customer, requires callback, escalation approved

Defining Custom Fields

  1. Navigate to Admin > Ticket Settings > Custom Fields.
  2. Click Add Field and select the field type.
  3. Enter a field name and configure any type-specific options (for example, the list of values for a dropdown).
  4. Save the field. It will immediately appear on the ticket detail view for all agents to populate.

Populating Custom Fields Automatically

Custom fields do not have to be filled in manually. There are two powerful automation paths:

Note — Define your custom fields early, before your team starts processing tickets at scale. Consistent structured data from day one makes reporting, filtering, and trend analysis far more valuable over time.

Tags

Tags provide a flexible, free-form way to categorize and label tickets. Unlike custom fields that have defined types and structures, tags are simple strings stored as an array on each ticket. They are ideal for ad-hoc classification, cross-cutting concerns, and enabling quick filtering.

Working with Tags

Using Tags Effectively

Tip — Tags complement custom fields rather than replacing them. Use custom fields for structured, required data (issue category, product line) and tags for flexible, optional labels (campaign names, temporary classifications, cross-team markers).

AI-Powered Analysis

RapiDesq automatically analyzes ticket content using AI to give agents and supervisors actionable insights for faster triage and better prioritization. AI analysis runs on ticket content and produces three outputs:

Sentiment Analysis

Each ticket is assigned a sentiment classification:

Sentiment is displayed on the ticket detail view and in queue listings, giving agents an immediate sense of the customer's emotional state before they open the ticket.

Key Point Extraction

The AI extracts an array of key topics and issues discussed in the ticket. These key points provide a quick summary of what the ticket is about without requiring the agent to read the full conversation. For example, a ticket about a failed payment might produce key points such as "payment declined", "credit card expired", and "subscription renewal".

Urgency Scoring

Each ticket receives an urgency score on a 0–100 scale, where higher scores indicate greater urgency based on the content analysis. This score considers factors such as the language used, the severity of the issue described, and any time-sensitive references. The urgency score is stored in aiUrgencyScore and displayed alongside the ticket's manual priority.

When Analysis Runs

AI analysis is performed after ticket creation and as conversations progress. The aiAnalyzedAt timestamp records when the most recent analysis was completed, so agents can see how current the insights are.

Using AI Insights for Triage

Note — AI analysis is advisory. It provides data to inform human decisions but does not automatically change ticket priority or routing. Agents and supervisors retain full control over triage and escalation.

Internal Notes

Every ticket has a dedicated internal notes thread, stored as a separate conversation (notesConversationId) that is completely independent of the customer-facing conversation. Internal notes are visible only to agents — they are never exposed to the customer under any circumstances.

Adding Internal Notes

From the ticket detail view, switch to the Internal Notes tab and type your note. Notes are attributed to the agent who wrote them and timestamped for a full audit trail. Multiple agents can contribute notes to the same ticket.

Use Cases

Note — Because internal notes use a separate conversation thread from the customer-facing messages, there is no risk of accidentally sending a private note to the customer. The two threads are architecturally distinct.

Assignment & Routing

Getting tickets to the right agent quickly is one of the most important factors in achieving fast resolution times. RapiDesq supports multiple assignment paths that can be combined based on your team's workflow.

Automatic Routing

When a ticket is created and assigned to a team, the team's configured routing strategy determines how it is distributed to agents. Strategies include round-robin, PRIORITY_FIFO (highest priority first, then first-in-first-out within the same priority), and load-balanced distribution. See Team Management for details on configuring routing strategies.

Manual Pickup

Agents can browse the unassigned ticket queue for their team and pick up tickets themselves. This is useful for specialists who want to select tickets matching their expertise, or during low-volume periods when automatic routing is unnecessary.

Supervisor Reassignment

Supervisors can reassign tickets between agents at any time. Common reasons include rebalancing workloads, routing a ticket to an agent with specialized knowledge, or covering for an agent who is unavailable.

Team Transfer

Tickets can be transferred from one team to another while preserving the full conversation history, internal notes, and all metadata. The receiving team has complete context and can continue the resolution without asking the customer to explain their issue again. When a ticket is transferred, it follows the receiving team's routing strategy to reach an agent.

Flow-Based Routing

Conversation flows can route tickets to specific teams based on customer input. For example, a flow that asks "Is this about billing or technical support?" can assign the ticket to the appropriate team based on the customer's response. The flowId, flowVersion, and flowState are preserved on the ticket so that the routing path is fully auditable.

Tip — Combine automatic routing with conversation flows for the best results. Let flows gather initial context and route to the right team, then let the team's routing strategy distribute the ticket to the right agent. This minimizes manual triage and gets customers to the right person faster.

Performance Metrics

RapiDesq tracks key performance metrics on every ticket automatically. These metrics require no manual input — they are calculated from lifecycle timestamps and stored directly on the ticket record.

Built-In Metrics

Metric Description How It Is Calculated
First Response Time How long the customer waited before receiving the first reply from an agent. firstResponseAt minus createdAt, stored in responseTimeSeconds.
Resolution Time How long it took from ticket creation to resolution. resolvedAt minus createdAt, stored in resolutionTimeSeconds.
Closure Attribution Who closed the ticket and why. Recorded in closedByUserId and closureReason when the ticket is closed.

Lifecycle Timestamps

Every major lifecycle event is timestamped for a complete audit trail:

How Metrics Feed Reporting

Ticket-level metrics are aggregated into platform-wide reports that provide visibility into team and individual performance:

Note — All timestamps are stored in UTC. They are converted to each user's timezone preference only when displayed in the interface, ensuring consistent calculations regardless of where your team is located.

Creating Tickets Manually

While most tickets are created automatically from incoming conversations, there are situations where manual creation is necessary:

Step-by-Step

  1. Click New Ticket from the tickets view.
  2. Enter a clear, descriptive subject that summarizes the request.
  3. Write the full description. You can use plain text or rich HTML formatting.
  4. Associate a contact — search for an existing customer contact, or create a new one if the customer is not yet in the system.
  5. Set the priority based on the urgency of the request (defaults to NORMAL).
  6. Assign the ticket to a team. Optionally assign it directly to a specific agent.
  7. Fill in any relevant custom fields — for example, product category, account number, or issue type.
  8. Add any tags that will help with categorization and filtering.
  9. Click Create to save the ticket. It will receive a display ID based on the assigned team's prefix and enter the queue.
Tip — Even for walk-in or phone interactions, creating a ticket ensures the request is tracked, measured, and visible in reporting. It also gives the customer a ticket reference they can use for follow-up.

Tips & Best Practices

Note — Well-managed tickets are the foundation of everything else in RapiDesq — accurate reporting, meaningful SLA tracking, effective routing, and valuable AI insights all depend on consistent ticket management practices across your team.