A shared inbox works until roughly the point where two people are in it. After that, conversations go unanswered because everyone assumed someone else had them, response times include the four days a customer took to send a photo, and the same problem appears as three tickets because it arrived as three messages. The move from inbox to system is usually made too late, under pressure. This piece describes what the system has to model, how to measure it, and where messaging channels break the assumptions of email-era tools.

What a queue must model#

The work item, not the message. The thing in the queue is a customer problem with a customer attached. Three WhatsApp messages about one late order are one item, not three.

Ownership. Exactly one person is responsible at any moment, and that is visible. Unowned items get missed; jointly owned items get missed while everyone assumes someone else has them.

State, separate from ownership. Waiting on the customer, waiting on a third party, and waiting on us are different situations. Only the last runs your service-level clock.

Priority, derived not typed. Priority set by hand becomes uniformly "high" within a month. Derive it from customer status, issue type and how long the item has waited.

The parts, and what breaks without each

  1. Work item

    The unit of resolution. Three messages about one problem is one item, not three.

  2. Customer identity

    Across channels. The person who chatted yesterday and phoned today is one queue position.

  3. Both clocks

    Customer-elapsed and team-elapsed, stored separately. Deriving one from the other loses information.

  4. Assignment

    Who owns it now, and the history of who owned it before. Reassignment is a signal worth counting.

  5. Channel context

    Where it arrived and where the reply must go. These are not always the same and the difference matters.

  6. Resolution state

    Solved, deferred, escalated, abandoned. Four states, not two — closed is not an outcome.

A queue that models messages instead of work items counts the same problem three times and staffs for a workload that does not exist.

Two clocks, not one#

Most queues report a single elapsed time, and most are wrong about it, because the customer's clock and the team's clock stop for different reasons.

The customer's clockThe team's clock
Starts whenThey sent the messageThe item entered the queue
Pauses whenNeverWaiting on the customer, on a third party, outside business hours
Stops whenTheir problem is solvedThe ticket is closed
ReflectsThe experienceThe workload
Used forJudging whether you are goodStaffing, routing, capacity
Both are legitimate. Reporting only the second one and calling it response time is where the trouble starts.

Within those clocks, measure two events:

  • First response: when a person (or a disclosed assistant) gave a useful reply — not an automatic "we got your message". It matters because silence is what makes people angry.
  • Resolution: when the problem stopped existing. Harder to measure, far more meaningful, and the one linked to whether people come back.

A team optimising first response alone learns to acknowledge quickly and resolve slowly, which is worse than a slower first reply that actually answers.

Routing that survives#

Start with skills and hours, not cleverness: route by language, product area and who is actually working now. Add automatic classification only once you have labelled history to check it against, and send anything the classifier is unsure about to a general queue. An unsure classifier that guesses is worse than one that escalates.

Skills-based routing decays predictably: the skills matrix is written once, staff change, and within a year routing reflects an org chart nobody works in. Three properties keep it alive:

  1. A default that is not a dead end. Every rule needs a fallback that reaches someone who can act. Most routing failures are items that matched nothing.
  2. Time-based escalation. An item that has waited too long moves, whatever its category. This catches what the matrix got wrong without requiring the matrix to be right.
  3. Reassignment counted. An item reassigned three times is a routing defect; the count is the cheapest quality signal a queue produces.

Three checks that keep routing honest

  1. 01Did any routing rule match?
    No
    The default — never a dead end, always someone who can act
    Yes
  2. 02Has the item waited too long?
    Yes
    It moves, whatever its category
    No
  3. 03Has it been reassigned three times?
    Yes
    Count it: that is a routing defect
    No
    It stays with its owner

Where messaging channels break the model#

Ticketing tools were designed around email: asynchronous, one long message at a time. Messaging is neither.

  • Bursts. Customers send five short messages where an email would be one paragraph. Group them into a conversation, and open one work item per issue, not per message — otherwise queue depth measures typing style.
  • Expectations. People expect replies in minutes on messaging, hours on email. Set targets per channel.
  • The session window. On WhatsApp, free-form replies are only possible within 24 hours of the customer's last message; after that you need an approved template. An agent who picks up a conversation six hours late may find the window nearly closed. The queue should show time left in the window and raise items before it expires.
  • Channel switching. The customer who gets no reply on chat phones in. Without cross-channel identity, that is two items and two agents.

Four assumptions email-era tools make, and messaging breaks

Bursts

Five short messages where an email was one paragraph. One work item per issue, or queue depth measures typing style.

Expectations

Minutes on messaging, hours on email. Targets are set per channel.

The session window

WhatsApp free-form replies only within 24 hours of the customer's last message. Show the time left.

Channel switching

No reply on chat becomes a phone call. Without cross-channel identity, that is two items and two agents.

A worked example#

A customer sends five WhatsApp messages over ten minutes about a damaged delivery, then calls two hours later.

  • Inbox behaviour: five unread messages appear as one thread nobody owns; the call creates a separate ticket; two agents work the same problem; the customer explains twice.
  • System behaviour: the five messages become one work item, routed to the deliveries team in the customer's language and owned by one agent. The call is matched to the same customer and attached to the open item. The agent asks for a photo; the state changes to "waiting on customer" and the team clock pauses. The photo arrives the next morning; a replacement is ordered; the item is marked solved. Seven days later, no new contact about the same order: counted as resolved.

One damaged delivery, handled as one work item

  1. Five WhatsApp messages

    Grouped into one item, routed to deliveries in the customer's language, one owner

  2. A phone call

    Matched to the same customer and attached to the open item

  3. A photo requested

    State: waiting on customer — the team clock pauses

  4. The photo arrives

    A replacement is ordered; the item is marked solved

  5. No new contact about the order

    Counted as resolved

The measurement to add#

Repeat contact within seven days, per resolved item, across channels. It is the cheapest check on whether "resolved" means anything. Report it next to resolution time, and separate abandoned (the customer stopped replying) from solved — they are different outcomes and should not share a status.

What to ask a provider#

  • Does the tool group consecutive messages into one conversation and let me create work items per issue?
  • Can it match one customer across WhatsApp, SMS, email, chat and voice?
  • Does it store customer and team clocks separately, with pause reasons?
  • Does it show the time left in each channel's reply window, such as WhatsApp's 24 hours?

Where to go next#

Next in this track: containment is not resolution, about automation in front of the queue. The window rules are explained in the 24-hour window; for connecting a support tool to other systems without merging them, read federating without merging.

Sources

Every claim worth checking, with somewhere to check it.

  1. WhatsApp Business Platform pricingMeta for Developers