account_update Webhook

Field reference for WhatsApp account_update webhooks: WABA lifecycle events, restrictions, partner events, pricing tiers, MM API terms, offboarding, and Dualhook handling.

The account_update field is the broad WABA lifecycle webhook. It covers partner sharing, permission grants and revocations, policy violations, offboarding, reconnection, pricing-tier changes, MM API terms, and business-location updates.

What account_update Reports

Use this field for account-level changes that affect whether a WABA can stay connected, send messages, use specific features, or remain shared with a provider.

It can report:

  • WABA deletion, restriction, violation, disablement, or reinstatement,
  • partner app install, uninstall, added, or removed events,
  • device-change or phone-number-reregistration offboarding and reconnection,
  • authentication-international rate eligibility,
  • primary business location country changes,
  • MM API for WhatsApp terms acceptance,
  • volume-based pricing tier changes,
  • partner-led business verification status changes.

Key Event Values

EventWhat to do
ACCOUNT_DELETEDTreat the WABA as no longer usable.
ACCOUNT_RESTRICTIONRead restriction_info and stop affected actions until resolved or expired.
ACCOUNT_VIOLATION / DISABLED_UPDATEEscalate account quality and policy review.
PARTNER_ADDEDThe WABA was shared with a Solution Partner. For Coexistence onboarding, Meta converts the existing WhatsApp Business app account into a Messaging account that keeps its ID and shares that.
PARTNER_APP_INSTALLEDA customer granted app permissions. Confirm expected WABA ownership and scopes.
PARTNER_APP_UNINSTALLEDA customer revoked app permissions. Expect token or management failures.
PARTNER_REMOVEDThe WABA was unshared from the partner. If disconnection_info is present, inspect the reason.
ACCOUNT_OFFBOARDEDThe WABA was offboarded after device change or phone number reregistration.
ACCOUNT_RECONNECTEDThe WABA reconnected after a device change or phone number reregistration.
AUTH_INTL_PRICE_ELIGIBILITY_UPDATEStore the effective start time and exception countries.
VOLUME_BASED_PRICING_TIER_UPDATEUpdate pricing-tier reporting for the category, region, and effective month.
MM_LITE_TERMS_SIGNEDThe WABA accepted MM API for WhatsApp terms.
AD_ACCOUNT_LINKEDThe WABA was onboarded to MM API for WhatsApp through Embedded Signup or Intent API and gave the partner access to its ad accounts.
BUSINESS_PRIMARY_LOCATION_COUNTRY_UPDATEThe primary business location was set. country holds the ISO 3166-1 alpha-2 code.
PARTNER_CLIENT_CERTIFICATION_STATUS_UPDATEA partner-led business verification submission changed status. Read partner_client_certification_info.

Events Missing from Meta's Reference

Meta's reference does not list these events, but Dualhook receives them on account_update. Their meaning is not documented by Meta, so treat them as informational.

EventObserved value fields
WEBHOOK_CONFIG_UPDATEDactor (business_id, business_name), event_time, details.field (subscribed_apps), details.change_action (subscribe or unsubscribe). Fires whenever an app's WABA subscription changes, so it is by far the most frequent account_update event.
BUSINESS_VERIFICATION_STATUS_UPDATEbusiness_verification_status: BUSINESS_VERIFIED, BUSINESS_REJECTED, or MORE_INFORMATION_REQUESTED.
BUSINESS_VERIFICATION_NEEDEDwaba_info (waba_id, owner_business_id).
PHONE_NUMBER_ADDED / PHONE_NUMBER_REMOVEDphone_number.
PHONE_LINK_CHANGEDactor, event_time, details.change_action (LINK or UNLINK), details.phone_number_id. actor can carry a description instead of a business.
USERNAME_UPDATEDactor, event_time.
LOC_CHANGEDactor, event_time, details.change_action (ATTACH).
PMA_PARTNER_SHARING_CHANGEDactor, event_time, details.change_action (SHARE).
PMA_DELETEDactor, event_time.
TEMPLATE_MIGRATEDactor, event_time, details.message_template_id, details.dest_pma_id.

These events use event_time (a string) inside value, and actor.business_name can name another business, such as a partner whose app changed its subscription.

Payload Shape

The wrapper is stable; the nested object changes by event.

{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "<WABA_ID>",
      "time": 1743451903,
      "changes": [
        {
          "field": "account_update",
          "value": {
            "event": "ACCOUNT_RESTRICTION",
            "restriction_info": [
              {
                "restriction_type": "RESTRICTED_BIZ_INITIATED_MESSAGING",
                "expiration": 1743451903
              }
            ]
          }
        }
      ]
    }
  ]
}

Useful nested objects:

ObjectUsed for
waba_infoPartner app events, partner sharing, MM API terms, ad account linking.
violation_infoPolicy or terms violations. violation_type names the violation; see Meta's violation categories.
restriction_infoAccount restrictions and any remediation text.
ban_infoDisablement and reinstatement state.
disconnection_infoCoexistence disconnection reason and who initiated it.
auth_international_rate_eligibilityAuthentication-international pricing effective dates.
volume_tier_infoVolume-based pricing tier, category, region, and effective month.
partner_client_certification_infoPartner-led business verification status (APPROVED, PENDING, FAILED, DISCARDED, REVOKED) and rejection_reasons.

Events about a single business phone number, such as ACCOUNT_VIOLATION and ACCOUNT_RESTRICTION events for calling, also include phone_number with the display phone number.

Documented restriction_info[].restriction_type values:

RestrictionEffect
RESTRICTED_BIZ_INITIATED_MESSAGINGCannot start conversations with customers.
RESTRICTED_CUSTOMER_INITIATED_MESSAGINGCannot reply to customer-initiated messages.
RESTRICTED_ADD_PHONE_NUMBER_ACTIONCannot add new phone numbers.
RESTRICTED_UTILITY_TEMPLATESCannot create utility templates.
RESTRICTED_DIRECT_SEND_UTILITY_TEMPLATESCannot send utility templates via Direct Send.
RESTRICTED_BUSINESS_INITIATED_CALLINGCannot place outbound calls.
RESTRICTED_USER_INITIATED_CALLINGCannot receive inbound calls.
RESTRICTED_BIZ_INITIATED_AND_USER_INITIATED_CALLINGCannot make or receive calls.
RESTRICTED_USER_INITIATED_CALLING_CALL_BUTTON_HIDDENThe call button is hidden from users because of low pickup rates.

remediation is included only when Meta has remediation steps to offer.

Dualhook Handling

Dualhook subscription: subscribed, mostly forwarded. Dualhook's Meta app subscribes to account_update. Meta does not allow Webhook Override for account-level fields, so every event arrives on Dualhook's app-level callback.

Dualhook treats account_update as a high-priority management field. It interprets each event for connection and account state and forwards it to your configured endpoint, with one exception: partner lifecycle events (PARTNER_ADDED, PARTNER_REMOVED, PARTNER_APP_INSTALLED, PARTNER_APP_UNINSTALLED, PARTNER_CLIENT_CERTIFICATION_STATUS_UPDATE), MM_LITE_TERMS_SIGNED, and ACCOUNT_DELETED concern the partner relationship between your WABA and Dualhook. Dualhook consumes those itself and does not forward them. The undocumented events listed above are forwarded like any other.

Dualhook uses these events to surface account restrictions, offboarding, reconnection, partner removal, permission revocation, pricing-tier signals, and MM API terms acceptance. Dualhook stores operational metadata and delivery status only; no customer message bodies or media are part of this field.

The routing effect depends on the event:

  • PARTNER_REMOVED, PARTNER_APP_UNINSTALLED, and ACCOUNT_DELETED terminally remove only connection rows on the affected customer WABA. Other WABAs in the same organization are untouched.
  • A terminal partner event is applied only when it includes the affected WABA and a valid entry.time, and only when that event is not older than the connection's current authorization. Malformed or stale deliveries are retained for investigation but do not delete anything.
  • ACCOUNT_OFFBOARDED places a reversible hold. ACCOUNT_RECONNECTED releases it only after Meta access and webhook routing are validated.
  • A disablement or scheduled disablement places a durable account hold. Reinstatement releases it only after validation.
  • A customer-initiated messaging restriction, alone or together with a business-initiated one, blocks the connection until Meta's supplied expiry. A business-initiated restriction on its own (RESTRICTED_BIZ_INITIATED_MESSAGING) keeps the connection and its webhook routing active: until the expiry, the Runtime API refuses template sends with business_initiated_restricted and still relays replies inside an open customer service window. Calling, phone-add, and template-only restrictions remain alerts for the affected operation rather than full connection blocks.
  • Partner-added and app-installed events are onboarding evidence only. They never reactivate an existing connection by themselves.

Implementation Notes

  • Switch on value.event first, then parse the nested object for that event.
  • Keep unknown event values. Meta adds new account events over time.
  • Treat partner removal/deletion as WABA-scoped terminal events and offboarding/reconnection as reversible routing events.
  • PARTNER_REMOVED can include disconnection_info for WhatsApp Business app plus Cloud API setups. Inspect the reason before choosing a recovery path.

Documented disconnection_info.reason values:

ReasonMeaning
ACCOUNT_DISCONNECTEDThe account was disconnected due to enforcement, or the client explicitly deleted their WhatsApp account.
BUSINESS_DOWNGRADEThe client registered the business phone number with the consumer WhatsApp app.
CHANGE_NUMBERThe client changed their phone number.
COMPANION_INACTIVITYA companion device was inactive for approximately 30 days.
PRIMARY_INACTIVITYThe primary device was inactive for approximately 14 days.
USER_RE_REGISTEREDThe client re-registered on a new device.
  • Multiple VOLUME_BASED_PRICING_TIER_UPDATE events can describe the same tier change. Use the earliest tier_update_time for canonical reporting.

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, and IP allowlisting.
  • Webhook Events & NotificationsManagement webhook events: template status, quality updates, account alerts, and forwarding.
  • Maintain Account HealthOwnership hygiene, quality monitoring, opt-out governance, and incident playbook.
  • PricingDualhook subscription plans, what is included, and how pricing relates to Meta messaging fees.
  • MM API OnboardingReference for MM API onboarding outside Dualhook's managed configuration. Dualhook does not request Marketing Messages Lite.
Browse more docsStart Free Trial