smb_message_echoes Webhook

Field reference for WhatsApp smb_message_echoes webhooks: Business App sent-message echoes, edits, revokes, direct routing, and Dualhook handling.

The smb_message_echoes field reports messages sent by the business from the WhatsApp Business app or a linked device after that number has been onboarded to Cloud API. In Dualhook setups, it is direct-routed to your endpoint via Webhook Override.

What smb_message_echoes Reports

This field lets your backend see business-side app activity, including:

  • messages sent from the WhatsApp Business app,
  • messages sent from a companion or linked device,
  • deleted messages (revoke),
  • edited messages (edit).

Use it when your system needs to keep its internal conversation state aligned with messages that staff send outside your API workflow.

When It Fires

Meta sends this field when an onboarded WhatsApp Business app user sends, edits, or revokes a message from the mobile app or linked device.

Payload Shape

{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "<WABA_ID>",
      "changes": [
        {
          "field": "smb_message_echoes",
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "15550783881",
              "phone_number_id": "106540352242922"
            },
            "message_echoes": [
              {
                "from": "15550783881",
                "to": "16505551234",
                "id": "<WAMID>",
                "timestamp": "1739321024",
                "type": "text",
                "text": {
                  "body": "Here's the info you requested."
                }
              }
            ]
          }
        }
      ]
    }
  ]
}

type works like normal WhatsApp message payloads: it names the message type and points to a matching object such as text, image, video, document, revoke, or edit.

Revoke and Edit Events

For revoked app messages, Meta sends type: "revoke" with the original message ID.

{
  "type": "revoke",
  "revoke": {
    "original_message_id": "<ORIGINAL_WAMID>"
  }
}

For edited app messages, Meta sends type: "edit" with the original message ID and the updated message object.

{
  "type": "edit",
  "edit": {
    "original_message_id": "<ORIGINAL_WAMID>",
    "message": {
      "type": "image",
      "image": {
        "caption": "Updated image caption"
      }
    }
  }
}

Dualhook Handling

Dualhook does not ingest, store, forward, or replay smb_message_echoes payloads. This field is direct-routed through Webhook Override, so Meta sends it to your configured endpoint.

That routing is intentional: app-sent message echoes can contain message bodies and media metadata, so they stay out of Dualhook's storage boundary. If echoes do not arrive, check the active Webhook Override configuration and your endpoint logs; Dualhook has no copy to resend.

Implementation Notes

  • Store echoes separately from API send statuses so you can distinguish "sent by staff in app" from "sent by backend".
  • Make handlers idempotent by message_echoes[].id.
  • For revoke and edit, update the original message referenced by original_message_id.
  • Validate metadata.phone_number_id and WABA ID before accepting the payload.
  • Be ready for BSUID-era changes in phone-number fields on related message webhooks.

Related

  • Webhook Subscription FieldsReference list of all 22+ WhatsApp Business Platform webhook subscription fields, what each notifies you of, required permissions, payload size limits, retry policy, mTLS support, and IP allowlisting.
  • WhatsApp Webhook OverrideHow Dualhook uses WhatsApp Webhook Override to route supported customer-path webhooks directly from Meta to your server.
  • Messaging WebhookReal-time webhook events for inbound messages, delivery statuses, and errors.
  • WhatsApp CoexistenceHow Coexistence mode works: using WhatsApp Business App and Cloud API on the same number.
  • Meta BSUID, Usernames & Contact Book Transition GuideOverview of Meta's WhatsApp BSUID rollout: usernames, contact book behavior, parent BSUIDs, API recipient support, webhook changes, and migration timeline.
Browse more docsStart Free Trial