Skip to content
The InfiQ GlossaryFeature

Messages & interactivity

Typing Indicator

The typing signal a business shows a user while a bot or agent prepares a reply, sent with a mark-as-read call and cleared by the reply or a timeout.

Also called: Typing status · typing_indicator · Typing… label

InfiQ Glossaryreviewed Practitioner

What is the WhatsApp typing indicator?

A typing indicator is the "typing…" label a WhatsApp user sees under the business name while a reply is being prepared. On the WhatsApp Cloud API a business turns it on explicitly: it calls the messages endpoint with status set to read, the message_id of the customer's message and a typing_indicator object whose type is text. The same request marks that message as read, so the customer sees blue ticks and the typing label at the same moment.

The indicator is short-lived by design. It is dismissed when the business sends its next message to that user, or after 25 seconds, whichever comes first. There is no "stop typing" call and no way to make one request last longer; if preparing the answer takes more than 25 seconds, the chat looks idle again until the reply lands. The call returns {"success": true} and does not create a message, so there is no wamid and no status webhook for it.

It is worth separating from its neighbours. Mark as read is the status update that turns a customer's ticks blue; the typing indicator rides on that call but adds a promise that an answer is coming. A read receipt is information flowing to the business about messages it sent. The typing indicator is the reverse — a signal from the business to the customer, most useful when a chatbot has to call an LLM, a search index or an order system before it can answer.

Key takeaways

  • The typing indicator shows a customer "typing…" in your chat while a bot or an agent prepares the reply.
  • You send it in the call that marks the customer's message as read: status: read, the message_id and typing_indicator.type: text.
  • It disappears as soon as you send your next message, or after 25 seconds, whichever comes first.
  • Meta's guidance is to show it only when you are going to respond.
  • It is a perceived-latency signal to the customer, not a delivery status: it creates no message, no wamid and no status webhook.

Figure 1

Drag the clock: how long does "typing…" last?

13 / 13

Time since it opened

30s

ClosedIndicator gone: the chat looks idle
Mark read + typing sent
Order lookup returns
LLM drafts the reply
Reply sent: typing cleared
0s6.3s12.5s18.8s25sWindow closes
The label appears with the mark-as-read call and lasts at most 25 seconds. Here the reply lands at 14 seconds and clears it early; drag past 25 to see the chat go idle when no reply has been sent.

30s in: window closed. Indicator gone: the chat looks idle.

Why it matters

Why does the WhatsApp typing indicator matter?

People judge a chat by how quickly it seems to respond. A reply that takes eight seconds feels broken if the chat looks idle, and normal if "typing…" appears within a second. The indicator buys a bot or an agent time to look something up without the customer sending "hello??" or giving up. It costs one API call, is not a message and creates no billable delivery, so it is one of the cheapest experience fixes in a WhatsApp integration.

Example: A Bengaluru food-delivery support bot

A customer types "where is my order?" at 8:42 pm. Within a second the bot's worker marks the message read with the typing indicator, then calls the order-tracking service and an LLM to phrase the answer. Six seconds later it replies "Your rider is 2 km away, about 12 minutes", which clears the label. Refund questions are different: the payments lookup can take up to 40 seconds, longer than the indicator lasts, so for those the bot sends "Checking your refund, this can take a minute" first and the full answer after.

— A Bengaluru food-delivery support bot

How does the WhatsApp typing indicator work?

  1. Receive the message

    The messages webhook delivers the customer's message with its id (the wamid you will mark as read) and the sender's WhatsApp ID.

  2. Acknowledge the webhook first

    Return 200 straight away and hand the message to a worker. Making API calls inside the webhook request slows the acknowledgement and invites retries.

  3. Mark read and show typing

    From the worker, POST to /{PHONE_NUMBER_ID}/messages with status: read, the message_id and typing_indicator: { type: "text" }. The response is {"success": true}.

  4. Prepare the answer within 25 seconds

    Run the lookup, the LLM call or the agent's typing. The label stays up until you send a message or 25 seconds pass, whichever is first.

  5. Send the reply

    Any message you send to that user clears the indicator. If the work will run past 25 seconds, send a short holding message instead of letting the chat go quiet.

The WhatsApp typing indicator in code

curl -X POST "https://graph.facebook.com/v26.0/{PHONE_NUMBER_ID}/messages" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"messaging_product": "whatsapp",
"status": "read",
"message_id": "wamid.HBgMOTE5ODEyMzQ1Njc4FQIAEhggNDRCQ0Q1RkM",
"typing_indicator": { "type": "text" }
}'
# → {"success": true}

One call marks the customer's message as read and shows "typing…".

Common mistakes with the WhatsApp typing indicator

  • Showing typing when no reply is coming

    Firing it for every message, including ones queued for the next morning, promises an answer that does not arrive. Send it only when a reply is actually being prepared.

  • Expecting it to last

    The label vanishes after 25 seconds even if your LLM is still thinking. For slow tasks, send a short holding message at about 20 seconds.

  • Blue ticks before a person has looked

    Because the call also marks the message read, triggering it on arrival in a human-staffed inbox tells the customer someone has read their message. For agents, send it when they start typing.

  • Using the wrong message ID

    message_id must be the wamid of the customer's inbound message, not of your own last outbound message. Take it from the messages webhook.

  • Calling it inside the webhook request

    An outbound API call before you return 200 slows the acknowledgement and can trigger webhook retries. Acknowledge first, then send typing from the worker.

Best practices for the WhatsApp typing indicator

  • Send the typing call as soon as the worker picks up the job; the first second matters most.
  • For human agents, trigger it from the agent's typing event, not from message arrival.
  • Pair long bot tasks with a holding message at about 20 seconds.
  • Measure abandonment with and without the indicator: it changes how fast the reply feels, not how fast it is.

Typing Indicator FAQs

How long does the WhatsApp typing indicator last?
Up to 25 seconds. It is dismissed when you send your next message to the user or after 25 seconds, whichever comes first, and a single call cannot extend it.
Does showing the typing indicator mark the message as read?
Yes. The typing indicator is part of the mark-as-read request (status: read with the message's message_id), so the customer's ticks turn blue as "typing…" appears. Plan for that when a human, not a bot, will answer.
Is the WhatsApp typing indicator charged?
No per-message charge applies, because it is a status update rather than a message: it has no wamid and no delivery. The reply you send afterwards is billed like any other message.
What is the difference between a typing indicator and a read receipt?
A read receipt tells the sender their message was seen; a typing indicator tells the customer a reply is being written. On the Cloud API, read receipts for your messages arrive as read status webhooks, while the typing indicator is something you send.
Can I show the typing indicator for a human agent?
Yes, if your inbox calls the API when the agent starts composing. Trigger it from the agent's typing, not from message arrival, so blue ticks and "typing…" never promise a reply that is not coming.

Try it on the official WhatsApp Business API

InfiQ is an official Meta Business Partner. Start a 7-day free trial — no card needed — and see this running on your own number.