Integration

WhatsApp Cloud API Webhooks: Events Your Stack Should Handle

A WhatsApp Cloud API webhook is an HTTP call made to your server each time a message changes status or a customer writes back. Which WhatsApp Cloud API webhook events matter, how to map them to your own records, and why slow endpoints cause duplicate processing.

Arjun Mehta Published 10 May 2026 Updated 8 Oct 2026 12 min read

WhatsApp Cloud API Webhooks Explained: green cover card with the Integration label, two chat bubbles and a 12 min read tag

WhatsApp cloud API webhooks in brief

WhatsApp Cloud API webhooks are how a business system learns what happened after it pressed send: whether a shipping update reached the handset, whether the customer opened it, and whether they wrote back with a correction. WappBlaster, an official WhatsApp Business Platform provider, pushes those events to your endpoint as signed HTTP calls with automatic retries, and reports opted-out and button-clicked as event types of their own, so nobody has to scan message text for STOP. The most concrete design rule is to carry your own reference, such as order 48213, on every send, because it comes back with each status event and removes the need for a lookup table. A sturdy handler checks the signature against the raw body, writes the payload to a queue, answers with a 200 at once and leaves the business logic to a worker. Record the timestamp inside the payload rather than your receive time, so reports match the customer's phone. Receiving events costs nothing extra on the ₹7999 ($200) plan.

Which WhatsApp Cloud API webhook events should your system handle?

Handle message statuses (sent, delivered, read, failed) and inbound messages including button taps, acknowledge each call immediately, process from a queue and deduplicate by message ID.

WappBlaster forwards Cloud API events to your endpoint as signed calls with retries, on the ₹7999 annual plan ($200 outside India).

  • Attach your own reference ID so each event maps to an order or ticket.
  • Slow endpoints cause retries and duplicate processing.
  • Always verify the signature before trusting a payload.

WhatsApp cloud API webhooks benefits

  • Delivery status in your own database

    Order and CRM records show sent, delivered, read or failed without anyone opening the WhatsApp dashboard.

  • Events mapped straight to records

    A reference ID sent with each message lets a failed event update the exact order or ticket it belongs to.

  • No duplicate tickets

    Deduplicating on message ID plus status stops a retried event from opening the same ticket twice.

  • Statuses that never slip backwards

    A late delivered event cannot undo a read mark, so reports stay accurate when events arrive out of order.

  • Protection from forged calls

    Signature checks on the raw body reject anything posted to the endpoint by someone who found its URL.

  • Customer replies that are never stuck

    Separate queues keep a flood of receipts after a bulk send from delaying a reply on its way to an agent.

Your order system sent a shipping update on WhatsApp. Did it arrive, did the customer read it, and did they reply "wrong address"? On the WhatsApp Cloud API, those answers come back to you as webhook events, and WappBlaster forwards them to your endpoint as signed calls with retries. Developers who treat webhooks as an afterthought end up with duplicate tickets, missing statuses and a support team that cannot see what the customer saw.

Quick answer: A WhatsApp integration needs to handle two event families: message statuses (sent, delivered, read, failed) and inbound messages, including button taps. Attach your own reference ID to each send so events map straight to an order or ticket, acknowledge every webhook immediately and process it from a queue, deduplicate by message ID, and verify the signature.

Cloud API webhook families: statuses and inbound messages

EventWhat it tells youTypical action in your system
SentThe platform accepted the messageStore the message ID against your record
DeliveredIt reached the handsetStamp delivery time; stop any SMS fallback timer
ReadThe customer opened it (if read receipts are on)Mark the notice as seen
FailedIt did not go through, with a reason codeFlag the record; choose another channel
Inbound message or button tapThe customer wrote or tapped somethingCreate or update a ticket, route to an agent or bot

Template status changes, such as approval or rejection, matter to whoever manages templates, but most order or CRM integrations can ignore them. WappBlaster's own events add opted-out and button-clicked as separate types, which saves you parsing message text for "STOP".

Carrying your own ID through a Cloud API webhook round trip

When you send through the API, include your own reference, such as an order number or ticket ID. It comes back with every status event for that message. Without it, you store Meta's message ID, keep a mapping table, and look it up on every event, which is one more table to keep consistent under load. With it, a "failed" event for order 48213 updates order 48213, and nothing else needs looking up.

Acknowledge each Cloud API webhook first, do the work afterwards

A webhook sender waits only so long for your response. If your handler calls the CRM, writes three tables and sends an email before returning, a slow moment on any of those causes a timeout, and the sender retries. Now the same event is being processed twice. The safe pattern:

  1. Verify the signature.
  2. Write the raw payload to a queue or a simple table.
  3. Return a 200 response straight away.
  4. Let a worker read the queue and apply business logic at its own pace.

Keep inbound messages and statuses in separate queues. A burst of delivery receipts after a bulk send should never delay a customer's reply reaching an agent.

Duplicate and out-of-order WhatsApp API webhooks

Retries mean any event can arrive more than once, and network timing means a read event can land before its delivered event. Handle both explicitly:

  • Deduplicate on message ID plus status. If you have already recorded "delivered" for that message, ignore the repeat.
  • Never downgrade a status. If a message is marked read, a late delivered event should not move it back.
  • Store timestamps from the payload, not your server's receive time, so reports reflect what happened on the customer's phone.

Confirming a WhatsApp Cloud API webhook is genuine

Anyone who discovers your endpoint URL can post to it. Each WappBlaster webhook carries a signature you can verify; check it against the raw request body and reject anything that does not match. Do this before parsing JSON, since parsing and re-serialising can change the bytes. Keep any signing secret out of source control. API keys are scoped and rotatable, so a key can be replaced the day a developer with access leaves. Endpoint setup and event formats are covered on the developer webhooks and REST API page.

When you do not need WhatsApp Cloud API webhooks at all

If you only run marketing campaigns and look at the results in a dashboard, the built-in reports already show delivered, read, replied, clicked and opted-out per template, along with Meta's failure reasons. Building and hosting an endpoint adds maintenance for no gain. Webhooks earn their keep when statuses must live in your own database, or when an event should trigger something: a ticket, a CRM update, an AI model you run yourself. Teams without a backend developer can still react to events through a workflow tool; the n8n integration is one self-hostable option. For the wider platform picture, see the complete WhatsApp Business API guide. Webhooks are part of WappBlaster's flat ₹7999 annual plan ($200 outside India); you pay Meta's per-message charge at cost for what you send, and receiving events adds nothing.

Developers wiring this up also use the n8n integration, a guide to failed WhatsApp messages and their causes and two-way customer journeys built on replies.

When WhatsApp Cloud API webhooks are the wrong choice

  • Teams that just send campaigns and check results in the dashboard already see delivered, read and failure reasons there, so hosting an endpoint is wasted effort.
  • Without a backend developer to run a queue and a worker, a workflow tool such as n8n is the easier way to react to events.

WhatsApp Cloud API Webhooks: questions

Which webhook events matter most?

Message status events (sent, delivered, read, failed) and inbound messages. Those two cover delivery reporting and conversation handling, which is most of what an integration needs.

Link to this answer

How do I match a webhook event to my own record?

Send a custom reference ID with the message and it comes back in the webhook payload, so you can map the event to an order or ticket without maintaining a lookup table.

Link to this answer

What should my endpoint do if it cannot process an event immediately?

Acknowledge fast and queue the work. Slow endpoints cause retries and duplicate processing, which is the most common self-inflicted problem in webhook integrations.

Link to this answer

Do I need webhooks if I only send campaigns?

No. Campaign reporting in the dashboard covers it. Webhooks matter when delivery status has to live in your own systems or trigger something downstream.

Link to this answer

Why do I receive the same WhatsApp webhook event twice?

Because the sender retries when your endpoint answers too slowly. Return a 200 response at once, do the work from a queue and deduplicate on message ID plus status.

Link to this answer

Can a read event arrive before the delivered event?

Yes, network timing can reorder them. Never move a status backwards: once a message is marked read, a late delivered event should leave it alone.

Link to this answer

How do I verify a WhatsApp webhook signature?

Check the signature against the raw request body before parsing the JSON, and reject anything that does not match. Parsing first can change the bytes, and the signing secret should never sit in source control.

Link to this answer

Should inbound messages and status events share one queue?

No. Keep them in separate queues so a wave of delivery receipts after a bulk send never holds up a customer's reply on its way to an agent.

Link to this answer

Do WhatsApp Cloud API webhooks cost extra on WappBlaster?

No. Webhooks are part of the flat ₹7999 annual plan, or $200 outside India. You pay Meta's per-message charge at cost for what you send, and receiving events adds nothing.

Link to this answer

Can I act on WhatsApp webhook events without a backend developer?

Yes, through a workflow tool that receives the events and runs steps for you. n8n is one option that you can host yourself.

Link to this answer

Still not answered?

Ask a real person. We reply on WhatsApp, usually within the hour.

Ask on WhatsApp

Arjun Mehta

Head of WhatsApp Business API, WappBlaster

Arjun Mehta leads WappBlaster’s official Meta WhatsApp Business Platform practice, bulk campaigns, chatbot, shared inbox and BSP migrations for 1,000+ India, UAE, USA and UK brands.

Ready for official bulk WhatsApp?

Migrate from WATI, Interakt, AiSensy or bulk senders, 3–7 day cutover with 1:1 onboarding.