An AI support desk with a clock nobody can edit
Tickets, SLA policies, macros, routing and CSAT across WhatsApp, voice, email and web chat. You change a ticket’s status; the API stamps the time. That is why the reports hold up.
Open tickets
Refund not received. Opened from a WhatsApp conversation.
I returned the order twelve days ago and the refund still has not come through.
AI agent: I can see the return was received on the 4th. I am passing this to a teammate who can release the refund.
Handed to a human. Ticket opened, priority high.
Teammate: Released just now. You will see it in three to five working days.
First response due
18:42
- Status
- pending
- Policy
- High priority
- Assignee
- On-call team
- Tags
- refund
Illustrative desk. Names, times and messages are examples — and the rows open.
The same desk, in the console
An urgent ticket lands at the top of the queue, is assigned and resolved inside its SLA, and then you see how customers rated it.
Four fields you can read but never write
A ticket moves through open, pending, waiting on customer, resolved and closed. Each move is recorded by the server, so an SLA report cannot be improved by editing a date.
| Field | Stamped | Example |
|---|---|---|
| first_responded_atOn the first response | On the first response | 10:06 |
| resolved_atWhen status becomes resolved | When status becomes resolved | 11:41 |
| closed_atWhen status becomes closed | When status becomes closed | Next day |
| reopened_countEach time a resolved ticket reopens | Each time a resolved ticket reopens | 0 |
Mon
Tue
Wed
Thu
Fri
Sat
Sun
A ticket opened Friday at 5 pm breaches Monday 6 pm — the weekend does not count.
SLA deadlines that respect your working week
A policy promises a first response time, a resolution time, or both. Scope it to one priority or leave it as the catch-all. Deadlines count only inside the business hours you set, in your time zone.
Ask for the breach list at any moment and you get every ticket that is past its deadline right now.
Routing: the first rule that matches wins
Rules run top to bottom on channel, priority, status, subject, email domain or tag. Assign directly or round robin. A dry-run evaluator shows which rule a ticket would hit before you turn it on.
- 1
If tag is “billing”
Assign to the finance queue
skipped
- 2
If priority is urgent
Assign round robin across the on-call team
matched
- 3
If channel is voice
Assign to the phone desk
not reached
- 4
If subject contains “refund”
Add tag “refund”
not reached
Rule 2 wins. Rules below it never run. Simulated example.
Macros: one click, three things done
A macro is a canned reply with placeholders. Using it can also set the status, add tags and assign a teammate.
Hi {{first_name}}, your refund for order {{order_id}} was released today. It usually arrives within five working days.
- Set status: resolved
- Add tag: refund
- Assign to: a teammate
CSAT and NPS after the fix
Create a survey link for a ticket on a five-point CSAT or a ten-point NPS scale, host the answer page yourself, and read response rate, average rating and NPS back.
Everything on the desk is an endpoint
Open a ticket
POST /api/v1/support/tickets
curl -X POST https://api.callmissed.com/api/v1/support/tickets \
-H "Authorization: Bearer cm_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"subject": "Refund not received",
"priority": "high",
"conversation_id": "33cc…",
"tags": ["refund"]
}'Promise a response time
POST /api/v1/support/sla/policies
curl -X POST https://api.callmissed.com/api/v1/support/sla/policies \
-H "Authorization: Bearer cm_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "High priority",
"priority": "high",
"first_response_minutes": 30,
"resolution_minutes": 480,
"business_hours": {
"tz": "Asia/Kolkata",
"days": [1, 2, 3, 4, 5],
"start": "09:00",
"end": "18:00"
}
}'See what is breaching
GET /api/v1/support/sla/breaches
curl "https://api.callmissed.com/api/v1/support/sla/breaches?priority=high" \
-H "Authorization: Bearer cm_your_api_key"Support desk questions
- How is this different from Zendesk or Freshdesk?
- The support desk is part of the same platform as the AI agents and the CRM, so a ticket already knows the conversation and the contact that produced it. Nothing to integrate. And because agents handle the front line, tickets are the exceptions that need a human, not every message.
- What makes the SLA reporting trustworthy?
- The ticket lifecycle stamps (first response, resolution, close, reopen count) are server-managed. You change status and the API records the time; you never send those timestamps. SLA deadlines compute against them and against your business hours, so a policy cannot be gamed by editing a field.
- Can I automate routing and replies?
- Yes. Macros are canned replies with placeholder variables that can also set status, add tags, and assign a user. Routing is a first-match-wins engine with a dry-run evaluator, so you can test a rule against a ticket before turning it on.
- How do CSAT and NPS work?
- You mint a survey link after a conversation, host the response page yourself against public token-authenticated endpoints, and read CSAT and NPS statistics back through the API, each tied to the ticket it came from.
- Is the whole desk available over an API?
- Yes. Tickets, SLA policies, macros, tags, routing rules, and CSAT/NPS surveys are all reachable with your cm_ API key. See the support references in the docs for the full field tables and scopes.





