Skip to content
Meta Business PartnerGlossary term

Message ID (WAMID): The Unique Fingerprint of Every WhatsApp Message

A WAMID — WhatsApp Message ID — is the globally unique string that the WhatsApp Business API hands back the instant you send a message, and the same string that reappears on every delivery, read, and reply webhook that follows. It is the thread that stitches an outbound send to its later status events and to any customer response. If you run WhatsApp at scale on the Business API, the WAMID is how you know, with certainty, which of your millions of sends actually landed, which was read, and which one a customer just replied to. Get comfortable with it and your delivery reporting, retry logic, and support workflows all become far more reliable.

WhatsApp Message ID
Full name
wamid. (Base64-style string)
Typical prefix
Send API response + status & inbound webhooks
Where it appears
Globally unique per message
Uniqueness
Opaque — do not parse or infer meaning
Format
Correlating sends with delivery/read/reply events
Primary use

In one line

A WAMID is the unique identifier WhatsApp returns for each sent message (e.g. wamid.HBgL...). It appears in the send response and in every subsequent status and inbound webhook, letting you correlate sends with delivery, read, and reply events. Treat it as an opaque string, store it against your own message record, and never assume its internal format.

What exactly is a WAMID?

WAMID stands for WhatsApp Message ID. When you call the Cloud API (or on-premise API) to send a message, WhatsApp responds with a JSON payload containing a messages array, and inside it an id field beginning with wamid. — for example wamid.HBgMOTE5OTk5OTk5OTk5FQIAERgSN.... That string is unique to that single message across the entire WhatsApp platform. It is deliberately opaque: it looks like a Base64-encoded blob because it effectively is one, but Meta gives no guarantee about its internal structure, and it can change length or encoding over time. The one contract you can rely on is that the same WAMID that WhatsApp returns to you at send time is the exact WAMID it will quote back in later status webhooks and, when a customer replies, in the context of their inbound message. Every WhatsApp message — template, session, text, media, interactive, or an inbound message from a customer — carries its own WAMID.

  • Returned synchronously in the send API response under messages[0].id
  • Prefixed with wamid. followed by a long Base64-style string
  • Unique across the whole WhatsApp platform, not just your account
  • Opaque by design — no documented internal format to depend on
  • Assigned to inbound customer messages too, not only your sends

How the WAMID flows through a message's life

The value of a WAMID is that it is the single key connecting every event in a message's journey. The moment you send, WhatsApp returns the WAMID in the API response — store it immediately against your own internal message record. Then WhatsApp fires asynchronous status webhooks as the message progresses: sent, then delivered, then read (and possibly failed). Each of those status objects references the same WAMID, so your system can match the webhook to the original send without ambiguity, even under heavy concurrency. When a customer taps reply on your message, their inbound webhook includes a context block quoting the WAMID of the message they replied to, which is how you reconstruct conversation threads. Because status webhooks arrive out of order and sometimes duplicate, the WAMID is also your idempotency key — you deduplicate and reconcile against it rather than against timestamps.

  • Send: WAMID returned in the API response
  • Status: sent, delivered, read, failed webhooks all cite that WAMID
  • Reply: inbound message context references the original WAMID
  • Idempotency: use the WAMID to dedupe repeated or out-of-order webhooks

Why WAMIDs matter for cost, reporting and support

Accurate WhatsApp reporting is impossible without WAMID correlation. Since Meta moved to per-delivered-message billing by category (marketing, utility, authentication) on 1 July 2025, your cost is driven by which messages were actually delivered — and the delivered status webhook, keyed by WAMID, is your source of truth for that. Matching billing to your own records therefore depends on having stored the WAMID at send time. For support teams, the WAMID lets an agent pull up the precise message a customer is referring to, including its delivery and read state, rather than guessing from timestamps. For engineering, it powers reliable retry and reconciliation: if a message failed, you know exactly which one, and if a duplicate webhook lands, you know to ignore it. In short, the WAMID turns a firehose of asynchronous events into an auditable, per-message ledger.

Common mistakes with WAMIDs

The most frequent error is treating the WAMID as parseable — teams try to decode it to extract a phone number or timestamp, then break when Meta changes the encoding. Never infer meaning from its contents; store and compare it as a raw string. A second mistake is not persisting the WAMID at send time, which leaves you unable to match later status webhooks to the original message. Third, some integrations compare WAMIDs case-insensitively or trim characters — always store and match the full, exact value. Fourth, confusing the WAMID with your own message reference: you can and should attach your internal ID via the API's biz_opaque_callback_data (message tags) so both travel together, but the WAMID remains WhatsApp's canonical identifier. Finally, remember WAMIDs are per-message, not per-conversation — the free 24-hour service window is a separate concept and is not a billing unit.

  • Don't parse or decode the WAMID — it's opaque and can change
  • Persist it at send time, before any status webhook arrives
  • Store and compare the full, exact string (no trimming or case-folding)
  • Keep your own reference too — WAMID is WhatsApp's ID, not yours
  • Don't confuse per-message WAMIDs with the free 24-hour service window

See InfiQ pricing

Talk to InfiQ

See how this works on InfiQ

Tell us your use-case — we’ll show it running in a sandbox, usually within a working day.

Step 1 of 2
WhatsApp

Protected by invisible spam checks · replies within 1 working day

Frequently asked questions

What does WAMID stand for?+
WAMID stands for WhatsApp Message ID. It is the unique identifier the WhatsApp Business API assigns to every message — both messages you send and messages customers send you — and it always begins with the prefix wamid.
Where do I find the WAMID after sending a message?+
It is returned synchronously in the send API response, inside the messages array as the id field (messages[0].id). You should read and store it at that moment, because the same WAMID reappears in every later status and reply webhook for that message.
Can I decode a WAMID to get the phone number or timestamp?+
No. The WAMID is an opaque, Base64-style string with no documented internal structure, and Meta may change its encoding at any time. Treat it strictly as an opaque identifier — store it, compare it exactly, but never parse it.
Is a WAMID the same as a conversation ID?+
No. A WAMID identifies a single message. A conversation is a broader concept tied to the free 24-hour service window. Since 1 July 2025 WhatsApp bills per delivered message by category, not per conversation, so WAMIDs — not conversations — are what you reconcile individual sends and delivery statuses against.
How do I use the WAMID to track delivery and read status?+
WhatsApp sends asynchronous status webhooks (sent, delivered, read, failed) that each reference the message's WAMID. By matching the WAMID in each webhook to the one you stored at send time, you can update the exact message's status reliably, even with high volume and out-of-order events.
How do WAMIDs help with replies and threading?+
When a customer replies to one of your messages, their inbound webhook includes a context object containing the WAMID of the message they replied to. That lets you link the reply back to the original outbound message and reconstruct the conversation thread accurately.
Should I store the WAMID or my own message ID?+
Store both. Attach your internal reference using the API's message tagging (biz_opaque_callback_data) so it travels with the message, and persist the returned WAMID against that record. Your ID is convenient for your systems; the WAMID is WhatsApp's canonical identifier for status matching and support lookups.
Do inbound customer messages have WAMIDs too?+
Yes. Every inbound message from a customer arrives with its own WAMID in the webhook, so you can reference, quote, or reply to a specific message and deduplicate repeated inbound webhooks.