Skip to main content

Feature request — metadata.quotedMessageId missing on message.sent webhook event

Hi Zernio team,

We're integrating the Instagram inbox webhooks (message.received / message.sent) into our CRM to show "replying to" context on quoted messages.

Per the docs (https://docs.zernio.com/webhooks/inbox#messagereceived), message.received includes an optional metadata object, described as:

"present when the message is a quick reply tap, postback button tap, inline keyboard callback, or a quote-reply to an earlier message"

This works as documented — when our end customer quotes/replies to a message on Instagram, we correctly receive metadata.quotedMessageId on the message.received event.

However, when our own agent (the connected Instagram account) quotes/replies to a customer's message directly from the native Instagram app, the resulting message.sent event does not include a metadata object at all — per the docs (https://docs.zernio.com/webhooks/inbox#messagesent), message.sent only documents id, event, message, conversation, account, timestamp, with no metadata field.

We confirmed this against a real payload. Example message.sent event for an agent-sent quoted reply (IDs redacted):

json

{ "id": "d2760b83-18fb-4df9-8899-e693cbb86e14", "event": "message.sent", "message": { "id": "6a7e2afe77555aae0186a9d8", "conversationId": "6a7de6e777555aae01737b3f", "platform": "instagram", "platformMessageId": "aWdfZAG1faXRlbToxOklHTWVzc2FnZAUlEOjE3ODQxNDAzMzUwNjEwOTE5OjM0MDI4MjM2Njg0MTcxMDMwMTI0NDI1ODYwMTkzODAzNTc4Mjc5NzozMjk1NzkzODY1ODUzMDQwNzk2NjY5NTk0MzkxMzM0MDkyOAZDZD", "direction": "outgoing", "text": "Wuot", "attachments": [], "sender": { "id": "6a7de1bf77555aae0171ed37", "name": "BelaBruna - Moda Feminina", "username": "lojabelabruna" }, "sentAt": "2026-08-13T20:37:14.711Z", "isRead": true }, "conversation": { "id": "6a7de6e777555aae01737b3f", "platformConversationId": "4618872881457502", "participantId": "4618872881457502", "participantName": "Diogo Salvador", "participantUsername": "diogosalvadorf", "status": "active", "contactId": "6a7e035700627611b0696587" }, "account": { "id": "6a7de1bf77555aae0171ed37", "platform": "instagram", "username": "lojabelabruna", "displayName": "BelaBruna - Moda Feminina" }, "timestamp": "2026-08-13T20:37:18.743Z" }

This message was sent as a quoted reply to an earlier customer message (via the native Instagram app), but there is no field anywhere in the payload indicating which message it was replying to.



Request: could you add metadata.quotedMessageId (or equivalent) to the message.sent event as well, mirroring what already exists on message.received? This would let us show reply/quote context in our CRM regardless of which side (customer or agent) initiated the quote.

Happy to share more sample payloads or webhook logs if useful for reproducing this.

Thanks!

Status: Completed2 comments

Log in to comment and vote

Comments2

  • Miquel Palet López

    Team•

    Aug 26

    Fixed and shipped today. metadata.quotedMessageId now comes through on message.sent, so a mirroring CRM can see which message you replied to, not just which one the customer replied to.

    You were right that the value existed already: we were building it and then dropping it, because the emitter only attached metadata to message.received. Both WhatsApp paths now carry it, API sends and replies typed in the WhatsApp Business app.

    One related correction while we were in there: the documented platform list on message.sent named four platforms but the event actually fires for eight. The spec now matches reality.

  • Diogo Salvador

    •

    Aug 13

    Update: we found a workaround — calling GET /v1/inbox/conversations/{conversationId}/messages right after receiving message.sent does return the correct messages[].metadata.quotedMessageId for that same message (matched by messages[].id, which corresponds to platformMessageId). So the data does exist server-side and is exposed on the REST endpoint, just not on the message.sent webhook payload itself.

    This means the fix works for us today, but costs an extra API call per outgoing message just to fetch information that's already resolved and available seconds later. It would be a nice improvement to include metadata.quotedMessageId directly in message.sent so we don't need the round-trip. Not urgent on our side anymore, but flagging it as a good consistency improvement between the two events.

    Happy to share more sample payloads or webhook logs if useful for reproducing this.

    Thanks!