When it fires

The recipient opened the message. WhatsApp reports it only for recipients who share read receipts, so many messages never fire this event. It fires once per message, and can arrive without a whatsapp.message.delivered event before it.

Event fields

data.idstring

WhatsApp message ID, starting with msg_. The same ID the send returned.

data.senderstring

Phone number the message was sent from, in E.164 format.

data.recipientstring

Recipient phone number, in E.164 format.

data.templateobject or null

The template sent: id, name, and language.

data.occurred_atstring

ISO 8601 time WhatsApp reported for this status.

The payload never includes message content or variable values. Retrieve the message with data.id for its content, cost, and all its timestamps.

Handle this event

Mark the message as read, and treat it as delivered too. Don't rely on this event to confirm delivery: use delivered or read, whichever arrives.

Verify the signature before reading the payload. Deduplicate by the envelope id, not the message ID: one message has several events. Events can arrive out of order; compare data.occurred_at, or retrieve the message, before moving a status backwards.

Nexiom Connect
Open dashboard