Facebook Business Manager · AsyncAPI Specification

Facebook Business Manager Webhooks

Version

View Spec View on GitHub AdvertisingAnalyticsBusiness ManagementMarketingSocial-MediaMessagingCommerceAgentsMCPWebhookAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-13'
method: searched
source: https://developers.facebook.com/docs/graph-api/webhooks
docs:
  - https://developers.facebook.com/docs/graph-api/webhooks
  - https://developers.facebook.com/docs/graph-api/webhooks/getting-started
  - https://developers.facebook.com/docs/graph-api/webhooks/reference
  - https://developers.facebook.com/docs/graph-api/webhooks/subscriptions-edge
specification: API Commons Webhooks
specificationVersion: '0.1'
provider: Facebook Business Manager
providerId: facebook-business-manager
asyncapi_published: false
asyncapi_note: >-
  Meta publishes NO AsyncAPI document for Webhooks from Meta. There is no /asyncapi.yaml on any Meta host and
  no event schema repository in the facebook GitHub org. The event surface is real and substantial, but it is
  documented only in prose and per-object reference tables, so this artifact captures the webhook catalog
  rather than a machine-readable event contract. Nothing here is fabricated as AsyncAPI.
description: >-
  "Webhooks from Meta" is the single event surface behind every Business Manager product — Pages, Instagram,
  Messenger, WhatsApp Business, Marketing/Ads, Catalog and Permissions. An app subscribes to an OBJECT type,
  then to specific FIELDS on that object; Meta POSTs an HTTPS notification whenever a subscribed field
  changes. This replaces polling and is the only push mechanism on the platform.
transport:
  protocol: https
  method: POST
  content_type: application/json
  tls_required: true
  self_signed_certificates: false
  note: The receiving endpoint must present a valid TLS certificate. Self-signed certificates are rejected.
verification:
  handshake:
    method: GET
    params:
      - name: hub.mode
        value: subscribe
      - name: hub.verify_token
        description: >-
          The string the developer set in the Verify Token field when configuring the Webhooks product in the
          App Dashboard. The receiver must compare it and reject a mismatch.
      - name: hub.challenge
        description: An integer the receiver must echo back in the response body to complete the subscription.
    response: Echo the hub.challenge value.
  payload_signature:
    header: X-Hub-Signature-256
    format: 'sha256={hex-digest}'
    algorithm: HMAC-SHA256 over the raw request payload, keyed by the app secret
    required: false
    note: >-
      Meta's own wording: "You don't have to validate the payload, but you should." Compare your computed
      digest against everything after the sha256= prefix. Validation is the only defence against a forged
      notification, since the endpoint is public by necessity.
payload_shape:
  root_fields:
    - name: object
      description: The object type the notification is for, e.g. user, page, instagram, whatsapp_business_account.
    - name: entry
      description: Array of changed objects.
  entry_fields:
    - name: id
      description: ID of the changed object.
    - name: time
      description: Unix timestamp of the change.
    - name: changes
      description: 'Array of {field, value} — the subscribed field that changed and its new value.'
  example: |
    {
      "object": "user",
      "entry": [
        {
          "id": "10210299214172187",
          "uid": "10210299214172187",
          "time": 1520383571,
          "changes": [
            {
              "field": "photos",
              "value": { "verb": "update", "object_id": "10211885744794461" }
            }
          ]
        }
      ]
    }
objects:
  - name: user
    description: Changes to app-user profile fields.
  - name: page
    description: >-
      Page feed, mentions, ratings, messages, leadgen and more. The Business Manager workhorse.
  - name: instagram
    description: Instagram Business account comments, mentions and story insights.
  - name: whatsapp_business_account
    description: Inbound WhatsApp messages, message status callbacks, template status changes.
  - name: application
    description: App-level events including ads and permission changes.
  - name: permissions
    description: Notifies when an app user revokes a granted permission — the trigger for a re-consent flow.
  - name: certificate_transparency
    description: Certificate transparency log notifications for verified domains.
  - name: link
    description: Link-scrape and Open Graph object changes.
objects_reference: https://developers.facebook.com/docs/graph-api/webhooks/reference
subscription_management:
  edge: /{app-id}/subscriptions
  description: >-
    Subscriptions are created and listed on the app's subscriptions edge with an app access token, then a
    Page or WhatsApp Business Account is individually subscribed via /{page-id}/subscribed_apps.
  related_operation: subscribePageApp
  url: https://developers.facebook.com/docs/graph-api/webhooks/subscriptions-edge
authorization:
  app_review_required: false
  note: >-
    Webhooks itself does not require App Review, but it respects permissions — a subscription silently
    delivers nothing unless the app holds the permission covering that data AND the owning object has granted
    it. This is a common silent-failure mode.
  development_mode: >-
    Apps in Development mode receive only test notifications initiated from the App Dashboard, or
    notifications caused by people holding a role on the app.
product_variants:
  - name: Webhooks for Messenger
    note: Different configuration steps; development-mode behaviour also differs.
    url: https://developers.facebook.com/docs/messenger-platform/webhooks
  - name: Webhooks for Payments
    note: Different configuration steps.
delivery_semantics:
  ordering: not guaranteed
  at_least_once: true
  retries: >-
    Meta retries failed deliveries, but the retry policy and backoff schedule are not published as a
    numeric contract. Receivers must be idempotent on (object id, field, time).
  documented_retry_policy: false
maintainers:
  - FN: Kin Lane
    email: kin@apievangelist.com