Customer support CRM
Sofar Tickets
CRM-style ticketing for Sofar front-line support agents — conversation threads, priorities, SLA timers, internal notes vs. customer replies. Designed as the long-term replacement for the Thulium dependency.
In build
What this module handles
- Inbound tickets from email, WeCom, Thulium (bridge mode) and a customer-facing form.
- Agent conversation threads with internal notes vs. customer-visible replies.
- Priority, queue, SLA timers (first response and resolution clocks).
- Escalation to a CSP RMA case or a TMS on-site task without re-entering data.
Data model
- Ticket
- orgId, number (TK-YYYY-NNNNN), customerId, siteId?, assetId?, subject, kind (SUPPORT / WARRANTY / BILLING / TECHNICAL), priority, status, assigneeId, rmaCaseId?, taskId?, sourceSystem (INTERNAL / EMAIL / THULIUM_IMPORT / WECOM), externalRef, firstResponseAt, resolvedAt, closedAt
- TicketMessage
- ticketId, authorType (USER / CUSTOMER / SYSTEM), authorId?, body, internal (boolean), createdAt
- TicketAttachment
- messageId, fileName, mimeType, fileSize, storageUrl
- TicketSubscription
- ticketId, userId, role (ASSIGNEE / WATCHER / CC), notifyEmail, notifyWecom
API surface
GET /api/ticketsGET /api/tickets/:idPOST /api/ticketsPATCH /api/tickets/:idPOST /api/tickets/:id/messagesPOST /api/tickets/:id/assignPOST /api/tickets/:id/escalate/rmaPOST /api/tickets/:id/escalate/taskPOST /api/integrations/thulium/ticket-webhookPOST /api/integrations/email/inbound
Roles
- Agent
- Replies, changes status, escalates to RMA or TMS. Owns first-response SLA on assigned queues.
- Supervisor
- Reassigns, overrides priority, closes stuck tickets, runs daily queue reports.
- Engineer
- Reads the ticket thread once a task is spawned from it; can post technical notes back on the original ticket.
- Customer
- Web-form submission + email reply-to. Sees customer-visible messages only; internal notes are agent-only.
Integrates with
Sofar CustomersSofar ProductsSofar CSPSofar TMSThuliumWeComInbound email (IMAP bridge)