Tickets (Cases)
The Tickets module — known internally as Cases — is a lightweight support desk. Use it to track customer-reported issues, internal escalations, or any work item that needs an SLA and an audit trail.
Anatomy
- Subject and description
- Status —
new,assigned,pending,closed - Priority —
low,medium,high,urgent - Severity — typically
S1–S4, configurable - Account and primary contact — who reported it
- Assignee — the team member handling it
- SLA target — derived from priority + an organisation-level policy
- Custom fields — environment, version, escalation level
Workflow
new → assigned → pending → closed
↓
(re-open back to assigned)
Status transitions enforce business rules server-side: a ticket can't go straight from new to closed without being assigned first, and only an admin can re-open a closed ticket older than 30 days.
Approvals
Some orgs gate resolution behind a second pair of eyes. /tickets/approvals lists tickets awaiting approval, and POST /api/cases/<id>/approve/ records the decision with the approver, timestamp, and optional rationale.
Solutions library
/solutions is a write-once knowledge base. When you close a ticket with a useful diagnosis, click Save as solution to publish the resolution to the org's library. New tickets surface matching solutions inline as you type the subject, so common issues get answered faster.
Analytics
/tickets/analytics shows:
- First-response and resolution times by priority
- SLA hit rate per assignee
- Volume by tag, source, and severity
- Backlog age distribution
Webhooks
Subscribe to case.created, case.escalated, and case.closed to bridge BottleCRM with on-call tools, Slack, or a paging service. See Webhooks.
See also
- Tasks — for general to-dos that don't need an SLA.
- Custom fields — severity tiers, environment, customer plan.