| quoted_message_id |
Option<String> |
platformMessageId of the message this one is a quote-reply to. WhatsApp (context.id), Instagram and Facebook Messenger (reply_to.mid). On message.sent echoes (operator replied from the native app) this is the only metadata field populated. |
[optional] |
| quick_reply_payload |
Option<String> |
Payload from a quick reply tap (Facebook/Instagram Messenger). |
[optional] |
| postback_payload |
Option<String> |
Payload from a postback button tap (Facebook/Instagram Messenger). |
[optional] |
| postback_title |
Option<String> |
Title of the tapped postback button (Facebook/Instagram Messenger). |
[optional] |
| callback_data |
Option<String> |
Callback data from an inline keyboard button tap (Telegram). |
[optional] |
| interactive_type |
Option<InteractiveType> |
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). (enum: button_reply, list_reply, nfm_reply) |
[optional] |
| interactive_id |
Option<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 |
Option<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 |
Option<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 |
Option<std::collections::HashMap<String, serde_json::Value>> |
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. |
[optional] |
| order |
Option<models::WebhookPayloadMessageMetadataOrder> |
|
[optional] |
| referred_product |
Option<models::WebhookPayloadMessageMetadataReferredProduct> |
|
[optional] |
| contacts |
Option<Vec<std::collections::HashMap<String, serde_json::Value>>> |
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 |
Option<ContactsOrigin> |
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. (enum: contact_request, other) |
[optional] |
| story_reply |
Option<models::WebhookPayloadMessageMetadataStoryReply> |
|
[optional] |
| is_story_mention |
Option<bool> |
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 |
Option<models::WebhookPayloadMessageMetadataReferral> |
|
[optional] |
| unsupported |
Option<models::WebhookPayloadMessageMetadataUnsupported> |
|
[optional] |
| no_renderable_content |
Option<bool> |
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] |