| quoted_message_id |
String |
Raw platform envelope id (WhatsApp `context.id`; Instagram and Facebook Messenger `reply_to.mid`) of the message this one is a quote-reply to, forwarded verbatim. It may not equal the stored id of that message (see `quotedMessage.platformMessageId`). On outgoing messages the same field appears on `message.sent`, but only on some surfaces: see WebhookPayloadMessageSent.metadata.quotedMessageId. |
[optional] |
| quoted_message |
WebhookPayloadMessageMetadataQuotedMessage |
|
[optional] |
| quick_reply_payload |
String |
Payload from a quick reply tap (Facebook/Instagram Messenger). |
[optional] |
| postback_payload |
String |
Payload from a postback button tap (Facebook/Instagram Messenger). |
[optional] |
| postback_title |
String |
Title of the tapped postback button (Facebook/Instagram Messenger). |
[optional] |
| callback_data |
String |
Callback data from an inline keyboard button tap (Telegram). |
[optional] |
| interactive_type |
String |
WhatsApp only. Which kind of interactive reply the user sent: `button_reply` (tap on an interactive button), `list_reply` (tap on a list row), or `nfm_reply` (a WhatsApp Flow submission or an `address_message` submission, see `nfmReplyName`). |
[optional] |
| interactive_id |
String |
WhatsApp only. The `id` of the tapped button or list row, matching the `id` you supplied when the message was sent. Not set for Flow responses. |
[optional] |
| button_payload |
String |
WhatsApp only. Payload attached to a tapped template button. Template buttons emit a plain `button` webhook (not an interactive reply), so `interactiveType` is empty while this field is populated. |
[optional] |
| flow_response_json |
String |
WhatsApp only. Raw `nfm_reply.response_json` string returned by a Flow submission. Useful if you need the exact wire payload; for typed access use `flowResponseData` instead. |
[optional] |
| flow_response_data |
Hash<String, Object> |
WhatsApp only. Parsed Flow response JSON. Populated when `flowResponseJson` is valid JSON; otherwise omitted. Keys and value types depend on the specific Flow that was submitted. An `address_message` submission (`nfmReplyName: address_message`) carries the address fields (`name`, `address`, `city`, `state`, `in_pin_code`, ...), either at the top level or nested under `values`; read both. |
[optional] |
| nfm_reply_name |
String |
WhatsApp only. `nfm_reply.name` as Meta sent it, e.g. `flow` or `address_message`. Address submissions share the `nfm_reply` envelope with Flow submissions and are otherwise indistinguishable in `flowResponseData`; use this field to tell them apart. |
[optional] |
| order |
WebhookPayloadMessageMetadataOrder |
|
[optional] |
| referred_product |
WebhookPayloadMessageMetadataReferredProduct |
|
[optional] |
| contacts |
Array<Hash<String, Object>> |
WhatsApp only. Contact cards the user shared, forwarded verbatim from Meta. Read `contactsOrigin` before treating any number here as the sender's own. |
[optional] |
| contacts_origin |
String |
WhatsApp only. How the contact card was shared. `contact_request` means the user tapped a `request_contact_info` button, so the number is their own and consented. `other` means they picked a card from their address book: it may be anyone's, and must NOT be stored as the sender's identity. Omitted when Meta sends no origin. |
[optional] |
| story_reply |
WebhookPayloadMessageMetadataStoryReply |
|
[optional] |
| is_story_mention |
Boolean |
Instagram only. True when the message was generated by an IG user mentioning the account in their own story (`story_mention` attachment type). Mutually exclusive in practice with `storyReply`. |
[optional] |
| referral |
WebhookPayloadMessageMetadataReferral |
|
[optional] |
| unsupported |
WebhookPayloadMessageMetadataUnsupported |
|
[optional] |
| no_renderable_content |
Boolean |
Instagram / Facebook Messenger only. Set when the message carries nothing an integrator can render (a `template` attachment with no text and no parseable content, or Meta's own `is_unsupported` flag). Sibling of `unsupported` above (WhatsApp only, carries Meta's error code/title/details): this field has no error envelope, just the boolean. Absence means "not flagged", never "checked and renderable". |
[optional] |