By industry

WhatsApp API for helpdesks: queues, SLAs and many agents on one number

In a helpdesk, the WhatsApp API is just the pipe: it connects the number of each customer on your platform and delivers messages, read receipts and connection drops via webhook. Queues, assignment, SLAs and transfers remain rules of your product, and that is how it should be.

By D-API engineering team5 min read

What changes when the channel is WhatsApp, not email

Support platforms were built on email, where the ticket is natural: one long message, one reply, one subject. On WhatsApp the customer sends six short messages, a voice note and a photo in two minutes, and expects a reply at the pace of a conversation. A helpdesk that just "plugs" WhatsApp into the ticket model delivers a poor experience to both the agent and the end customer.

The complaints from people using a helpdesk with WhatsApp are always the same: conversations landing in the wrong queue, two agents replying to the same person, SLAs that don't reflect reality and a disconnected number nobody noticed until the end of the day.

Who does what: the API and your helpdesk

The most common confusion in helpdesk projects is expecting the WhatsApp API to handle support rules. It doesn't, and it shouldn't. The split looks like this:

Helpdesk featureWhat the API deliversWhat your product decides
Queuesmessages.received event with sender and contentWhich queue the conversation goes to, by time of day, keyword or menu answer
AssignmentThe sessionId says which customer and which number it came fromRound-robin, load per agent, fixed account owner
SLAtimestamp of each received messageTargets, pauses outside business hours, breach alerts
Read receiptsmessage.delivered and message.read eventsHow to show the ticks and whether they count toward the SLA
TransferNothing changes: the number stays the sameWho takes over, whether history goes along, whether the customer is told
Channel healthconnection.status event and reconnect via APIAlert on the admin dashboard

This separation is what lets you swap or mix connection types without touching the rules. On D-API, one helpdesk customer can use the official WhatsApp API (Meta Cloud API) and another the unofficial one, and the queue engine doesn't even notice.

Example: one endpoint per responsibility

In a helpdesk, it pays to split events by destination from the start. New messages go to the routing service, reads go to the status service and connection drops go to alerts. The per_event mode of the webhook configuration does exactly that:

curl -X POST https://api.d-api.cloud/api/v1/sessions/helpdesk-customer-318/webhook-config \
  -H "Authorization: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": true,
    "type": "per_event",
    "events": {
      "messages.received":  { "enabled": true, "webhookUrl": "https://api.yourhelpdesk.com/wa/routing" },
      "message.delivered":  { "enabled": true, "webhookUrl": "https://api.yourhelpdesk.com/wa/status" },
      "message.read":       { "enabled": true, "webhookUrl": "https://api.yourhelpdesk.com/wa/status" },
      "connection.status":  { "enabled": true, "webhookUrl": "https://api.yourhelpdesk.com/wa/alerts" }
    }
  }'

With that, a spike in read receipts doesn't delay new messages reaching the queue. If your customer base has high volume, the same configuration exists for RabbitMQ, and the helpdesk consumes events from the queue at its own pace. More on formats and redelivery in WhatsApp webhooks.

Three helpdesk traps with WhatsApp

Duplicate conversations from redelivery

The webhook is resent on failure, up to 7 attempts with exponential backoff. If the routing service was slow to respond and the event arrived again, the same message can open two tickets. Lock on the message id before any other logic.

Replies sent from the company phone

On the unofficial WhatsApp API, the number stays active on the phone. If a supervisor replies from the phone, the message arrives with fromMe set to true and needs to go into the ticket history, otherwise the next agent talks over it.

SLA counted per message, not per conversation

Six messages in a row are not six tickets. Group messages from the same sender within a short window and start the SLA from the first one, not the last.

Roadmap for adding WhatsApp to your support platform

  1. Customer onboarding: create the connection via API with the customer id in the sessionId and show the QR code.
  2. Per-event webhooks, with deduplication by message id.
  3. Grouping messages into conversations and routing rules for queues.
  4. Sending replies, media and documents from the agent screen.
  5. Delivery and read ticks, and SLA metrics calculated from timestamps.
  6. Connection health dashboard per customer, with a reconnect button.

Step 3 is what sets one helpdesk apart from another, and it's where your team should spend its time. Keeping each number connected and isolated from the others is D-API's job, with self-healing and a dedicated IP per connection. The 14-day free trial available through sales is meant precisely for validating steps 1 and 2 with your real customer base.

Next steps

If your platform also does automated pre-triage, see WhatsApp AI chatbot. If it started as a CRM and is gaining queues and SLAs, the companion read is WhatsApp API for CRM. The commercial model for companies offering WhatsApp to their own customers, with one connection per customer, is in WhatsApp API for SaaS.

Frequently asked questions

Can several agents reply from the same WhatsApp number?
Yes. The number is connected once to the API and every agent works from your helpdesk screen. Who answers each conversation is decided by your system, not by WhatsApp.
Does the end customer notice when the conversation is transferred?
Not unless you tell them. The transfer happens inside the helpdesk and messages keep going out from the same number. Many platforms send a short line saying who took over, which tends to cut down on repeated questions.
Can I tell whether the customer read the agent's reply?
Yes. The API sends message.delivered and message.read events to your webhook. The helpdesk uses them to show the ticks in the conversation and to measure time to read.
How do I measure first response SLA with the API?
Every messages.received event carries the message timestamp. The helpdesk stores that time when it opens the ticket and stops the clock when an agent's first send is accepted by the API.
What if a helpdesk customer's connection drops during business hours?
The connection.status event reports the state change. D-API tries to recover the connection on its own (self-healing), and the helpdesk should show an alert to the admin in case the number was disconnected on the phone.
Can I put a chatbot in front of the human queue?
Yes. The bot receives the same webhook, answers simple questions and, when a person is needed, the helpdesk puts the conversation in the queue with the context already collected.

Put WhatsApp in your product without becoming an infra team

14 days free through our sales team, with implementation support in a WhatsApp group.