WhaBuzz docs
Event catalogue

One Meta POST, several numbers

Meta can batch several WABAs or numbers into one POST. WhaBuzz splits it into one event per item and routes each by its own phone_number_id or WABA. An item that belongs to no tenant is stored with te

Meta can batch several WABAs or numbers into one POST. WhaBuzz splits it into one event per item and routes each by its own phone_number_id or WABA. An item that belongs to no tenant is stored with tenant_id: null and never forwarded; the others are delivered normally.

Event types: message.inbound and message.status. Fixture payloads are the WhaBuzz Demo tenant's real ids with a fictional customer number; id, tenant_id and created_at in envelopes are illustrative.

#Two entries: one routed number, one unknown

What Meta POSTs to WhaBuzz (fixtures/meta/multi_entry_two_numbers.json):

{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "26059971920328384",
      "changes": [
        {
          "field": "messages",
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "14692311132",
              "phone_number_id": "1013622581841046"
            },
            "contacts": [
              {
                "profile": {
                  "name": "Kerry Fisher"
                },
                "wa_id": "16505551234",
                "user_id": "US.13491208655302741918"
              }
            ],
            "messages": [
              {
                "from": "16505551234",
                "from_user_id": "US.13491208655302741918",
                "id": "wamid.HBgLMTY1MDU1NTEyMzQVAgASGBQzQUY5QTdGNkU0RTFGMkI3QzFB60AA=",
                "timestamp": "1760591523",
                "type": "text",
                "text": {
                  "body": "one"
                }
              }
            ]
          }
        }
      ]
    },
    {
      "id": "999999999999999",
      "changes": [
        {
          "field": "messages",
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "15550001111",
              "phone_number_id": "888888888888888"
            },
            "statuses": [
              {
                "id": "wamid.HBgLMTY1MDU1NTEyMzQVAgASGBQzQUY5QTdGNkU0RTFGMkI3QzFB61AA=",
                "status": "delivered",
                "timestamp": "1760591523",
                "recipient_id": "16505551234",
                "recipient_user_id": "US.13491208655302741918",
                "pricing": {
                  "billable": true,
                  "pricing_model": "PMP",
                  "category": "utility",
                  "type": "regular"
                }
              }
            ]
          }
        }
      ]
    }
  ]
}
json

What your endpoint receives (event 1 of 2, entry[0].changes[0].value.messages[0]), as the body of a signed POST. raw is abbreviated here; on the wire it is the full body above.

{
  "id": "evt_01JAB3K9X2S8C4M7Q1V5R6T0YZ",
  "type": "message.inbound",
  "api_version": "2026-10-16",
  "created_at": "2025-10-16T05:12:03.481Z",
  "tenant_id": "a578246e-b97f-48e6-ae42-939ec3ccf917",
  "waba_id": "26059971920328384",
  "phone_number_id": "1013622581841046",
  "display_phone_number": "14692311132",
  "wamid": "wamid.HBgLMTY1MDU1NTEyMzQVAgASGBQzQUY5QTdGNkU0RTFGMkI3QzFB60AA=",
  "wa_id": "16505551234",
  "user_id": "US.13491208655302741918",
  "dedupe_key": "msg:wamid.HBgLMTY1MDU1NTEyMzQVAgASGBQzQUY5QTdGNkU0RTFGMkI3QzFB60AA=",
  "data": {
    "messaging_product": "whatsapp",
    "metadata": {
      "display_phone_number": "14692311132",
      "phone_number_id": "1013622581841046"
    },
    "contacts": [
      {
        "profile": {
          "name": "Kerry Fisher"
        },
        "wa_id": "16505551234",
        "user_id": "US.13491208655302741918"
      }
    ],
    "message": {
      "from": "16505551234",
      "from_user_id": "US.13491208655302741918",
      "id": "wamid.HBgLMTY1MDU1NTEyMzQVAgASGBQzQUY5QTdGNkU0RTFGMkI3QzFB60AA=",
      "timestamp": "1760591523",
      "type": "text",
      "text": {
        "body": "one"
      }
    }
  },
  "raw": {
    "…": "the complete Meta POST body, byte for byte, as shown above"
  },
  "raw_path": "entry[0].changes[0].value.messages[0]"
}
json

What your endpoint receives (event 2 of 2, entry[1].changes[0].value.statuses[0]), as the body of a signed POST. raw is abbreviated here; on the wire it is the full body above.

{
  "id": "evt_01JAB3K9X2S8C4M7Q1V5R6T0YZ",
  "type": "message.status",
  "api_version": "2026-10-16",
  "created_at": "2025-10-16T05:12:03.481Z",
  "tenant_id": "a578246e-b97f-48e6-ae42-939ec3ccf917",
  "waba_id": "999999999999999",
  "phone_number_id": "888888888888888",
  "display_phone_number": "15550001111",
  "wamid": "wamid.HBgLMTY1MDU1NTEyMzQVAgASGBQzQUY5QTdGNkU0RTFGMkI3QzFB61AA=",
  "wa_id": "16505551234",
  "user_id": "US.13491208655302741918",
  "dedupe_key": "st:wamid.HBgLMTY1MDU1NTEyMzQVAgASGBQzQUY5QTdGNkU0RTFGMkI3QzFB61AA=:delivered:1760591523",
  "data": {
    "messaging_product": "whatsapp",
    "metadata": {
      "display_phone_number": "15550001111",
      "phone_number_id": "888888888888888"
    },
    "status": {
      "id": "wamid.HBgLMTY1MDU1NTEyMzQVAgASGBQzQUY5QTdGNkU0RTFGMkI3QzFB61AA=",
      "status": "delivered",
      "timestamp": "1760591523",
      "recipient_id": "16505551234",
      "recipient_user_id": "US.13491208655302741918",
      "pricing": {
        "billable": true,
        "pricing_model": "PMP",
        "category": "utility",
        "type": "regular"
      }
    }
  },
  "raw": {
    "…": "the complete Meta POST body, byte for byte, as shown above"
  },
  "raw_path": "entry[1].changes[0].value.statuses[0]"
}
json

This page as Markdown: /events/routing.md. All docs in one file: /llms-full.txt.