How it fits together
System architecture
Messages from each channel are normalised and deduplicated, become tickets, are routed to an agent who sees Shopify order context, and are governed by SLA timers and automations. Solved tickets trigger CSAT; everything feeds reporting. Zendesk history is imported as read-only records.
What’s inside
Modules
Each module opens the live prototype screen. Every screen has a “How it works” panel explaining its rules from the spec.
One queue for Email, Messenger and SMS.
- Views & filters
- Aging & SLA badges
- Threading rules
Everything an agent needs to resolve a ticket.
- Reply / internal note
- Macros & mentions
- Shopify sidebar
One profile per customer across channels.
- Channel IDs preserved
- Confirmed merges
- Ticket history
Routes tickets to the least-busy agent.
- Capacity & availability
- Single owner
- Backlog
Configurable response-time targets.
- Business hours
- Pause rules
- 48h auto-close
If-this-then-that rules for routine work.
- Rule builder
- Durable jobs
- Audited changes
Satisfaction surveys on solve.
- Send once
- 24h cooldown
- Failure tracking
Score conversations for quality.
- Versioned scorecards
- Evaluator notes
- Role-restricted
Team performance at a glance.
- Volume & SLA
- Workload
- Audited CSV
Connections, users and safeguards.
- Channel health
- Secrets & MFA
- Backups
Bring history across safely.
- 7-step wizard
- Reconciliation
- Historical-only
Who changed what, and when.
- Assignments
- Config & exports
- Owner-only
Business flow
Ticket lifecycle
An active back-and-forth conversation stays in one ticket. Once a ticket is Solved or Closed, any new contact starts a new ticket linked to the old one, so history is kept and nothing is reopened.
- 1New
Ticket created from a first message and awaiting assignment.
Auto-assigned to the least-loaded eligible agent.
- 2Open
An assigned agent is actively handling it.
Customer replies are appended to this same ticket.
- 3Pending
Waiting on the customer or another action.
A reason is recorded; SLA timer pauses.
- 4Solved
The agent considers the issue resolved.
One CSAT survey is sent · auto-close timer starts (default 48h).
- 5Closed
Permanent and read-only.
Can never be reopened. A new message creates a new linked ticket.
The first eligible move to Solved sends one survey. Follow-ups need a manual send; 24h per-customer cooldown.
Solved tickets close automatically after the admin-set inactivity timer (48h default). Moving out of Solved cancels it.
A message after Solved/Closed creates a new linked ticket; the old ticket and its timer stay unchanged.
Access control
Roles & permissions
Use the “Viewing as” switcher in the workspace to see each role. In production all permissions are enforced by the backend, not just hidden in the UI.
| Capability | CS Agent | CS Manager | Super Admin / Owner |
|---|---|---|---|
| Work tickets, reply, internal notes, macros, mentions | |||
| Update ticket status | |||
| View customer history & permitted Shopify details | |||
| Send CSAT (manual) | |||
| Assign / reassign tickets | Own / unassigned | ||
| Merge customer profiles | |||
| Manage agents, capacity, availability, routing | |||
| Configure SLA, aging and automations | |||
| QA scorecards & evaluations | |||
| Team reports, CSAT results, CSV export | |||
| Channels & Zendesk migration | |||
| API credentials, roles, security config | |||
| Audit log |
See the whole flow in 2 minutes
Inbound message → ticket → auto-assignment → reply with Shopify order → Solved → CSAT → reports.
Out of scope and not shown: live conversation monitoring, bulk marketing email, Shopify write actions, Instagram / Facebook comments / lead forms. Interface is Zendesk-inspired in layout only; no Zendesk branding. Spec coverage: docs/spec-coverage.md.