For the exhaustive schema-derived catalog, see all examples.
What it is
Handle business account review, update, and deletion events, plus phone-number deletion, display-name review, quality, and Business Username updates. Route each payload by its exact eventtype: account events use whatsappBusinessAccount, while phone-number events use whatsappPhoneNumber.
Before you begin
- Create a public HTTPS endpoint in your application.
- Configure a YCloud webhook endpoint for the event types you need.
- Store the endpoint signing secret securely.
- Make event processing idempotent.
How it works
YCloud sends an HTTPPOST request when the event occurs. Verify the signature, durably record the event, return a 2xx response, and process slow work asynchronously.
Request
The scenarios below show requests delivered to your webhook URL. Treat the eventid as the delivery identifier and use type to route the payload.
Response
Return a2xx status after accepting the event.
For endpoint setup, signature validation, and retry behavior, see Configure webhooks.
Account deletion
Usewhatsapp.business_account.deleted to handle a WhatsApp Business Account deletion event. Read whatsappBusinessAccount.id to identify the affected WABA.
Request
Response
Acknowledge the delivery after durably accepting the event.Explanation
The removal fields appear directly insidewhatsappBusinessAccount when available.
Known
removedReason values include:
Preserve unknown reason and initiator values. Deduplicate deliveries by the event
id, and tolerate omitted removal fields.
Authentication-International Rate Eligibility
Starting June 1, 2024, we are introducing a new authentication-international rate. This rate will apply in the the following countries:- June 1, 2024 – Indonesia (country calling code +62, country code
ID) - July 1, 2024 – India (country calling code +91, country code
IN)
whatsapp.business_account.updated webhook will be triggered if your business is deemed eligible for international rates. The webhook will include start times for each country that has an authentication-international rate.
Request
Response
Acknowledge the delivery after durably accepting the event.whatsappMessage.pricingCategory in whatsapp.message.updated webhooks will be set to authentication_international.
Here is an example:
Explanation
Route the event bytype, deduplicate it by id, and move slow or failure-prone work to an asynchronous processor.
Primary Business Location Update
Your primary business location is the country where your business is based. It will appear in the Business Manager under the Primary Business Location field starting May 1, 2024. If Meta is able to determine the country where your business is based, we will trigger anwhatsapp.business_account.updated webhook with the country’s two-digit code.
Here is an example:
Request
Response
Acknowledge the delivery after durably accepting the event.Explanation
Route the event bytype, deduplicate it by id, and move slow or failure-prone work to an asynchronous processor.
Phone-number registration limit update
Meta sends a business capability update for a WABA when the corresponding Business Portfolio or WABA phone-number registration limit changes. YCloud delivers it aswhatsapp.business_account.updated with updateEvent=BUSINESS_CAPABILITY_UPDATE.
The webhook is WABA-level: whatsappBusinessAccount.id is the WABA ID from the Meta webhook entry. Meta currently reports maxPhoneNumbersPerBusiness and maxPhoneNumbersPerWaba in separate updates. Do not treat them as mutually exclusive: process each field independently and accept both if a future update includes them together. A value of 0 is valid.
Here is an example of a WABA phone-number limit update:
Request
Response
Acknowledge the delivery after durably accepting the event.Explanation
Route the event bytype, deduplicate it by id, and update only the limit field included in the payload.
Account violation
When you receive awhatsapp.business_account.updated event with whatsappBusinessAccount.updateEvent set to ACCOUNT_VIOLATION, inspect whatsappBusinessAccount.violationType to identify the reported policy violation.
See Meta’s Policy enforcement violations for violation types and descriptions. Meta may update this list over time.
Here is an example:
Request
Response
Acknowledge the delivery after durably accepting the event.Explanation
Route the event bytype, deduplicate it by id, and move slow or failure-prone work to an asynchronous processor.
Account Restriction
If Business Accounts repeatedly violate the WhatsApp Business Terms of Service or high-risk policy categories such as sending spam, adult content, sale of alcohol and tobacco, drugs, gambling and unsafe supplements, they may start seeing messaging restrictions that gradually increase in duration. For Utility Direct Send, see Direct Send notifications for a YCloudACCOUNT_RESTRICTION payload. See Meta’s Webhook for account restriction for Direct Send-specific violation types and restriction details.
Here is an example:
Request
Response
Acknowledge the delivery after durably accepting the event.Explanation
Route the event bytype, deduplicate it by id, and move slow or failure-prone work to an asynchronous processor.
Utility Direct Send restriction
You receivewhatsapp.business_account.updated when Meta restricts Utility Direct Send after repeated category misuse. This example shows a seven-day restriction.
Request
Response
Acknowledge the delivery after durably accepting the event.Explanation
UsewhatsappBusinessAccount.id to identify the affected WABA and pause its Utility Direct Send workflow. Read violationType for the reason, restrictions[].restrictionType for the affected capability, and restrictions[].expiration for the expiry when supplied. A successful review of one template does not automatically lift an account-level restriction. See Direct Send restrictions and notifications.
Account Disabled
WhatsApp Business Accounts may be disabled if the business does not make changes after multiple warnings and feature limits or blocks. Here is an example:Request
Response
Acknowledge the delivery after durably accepting the event.Explanation
Route the event bytype, deduplicate it by id, and move slow or failure-prone work to an asynchronous processor.
Account Reinstate
You can appeal the WhatsApp Business Account ban decision to reinstate it. Once approved, the account review status changes toAPPROVED.
Here is an example:
Request
Response
Acknowledge the delivery after durably accepting the event.Explanation
Route the event bytype, deduplicate it by id, and move slow or failure-prone work to an asynchronous processor.
Business account review
Usewhatsapp.business_account.reviewed when a WhatsApp Business Account has been reviewed.
Request
Response
Acknowledge the delivery after durably accepting the event.Explanation
Identify the WABA withid. Read decision for the review decision (APPROVED or REJECTED) and accountReviewStatus for the account review status when supplied. Do not route this event as whatsapp.business_account.updated.
Phone number deletion
Usewhatsapp.phone_number.deleted when a WhatsApp business phone number is deleted.
Request
Response
Acknowledge the delivery after durably accepting the event.Explanation
UsewhatsappPhoneNumber.id to identify the deleted phone number and wabaId to associate it with its account. This is a phone-number event; do not treat it as deletion of the entire WABA.
Phone number display-name review
Usewhatsapp.phone_number.name_updated when a business phone number display name is approved or rejected.
Request
Response
Acknowledge the delivery after durably accepting the event.Explanation
Readdecision and the supplied name-status fields. newNameStatus describes the new display-name request, requestedVerifiedName identifies the last requested name, and rejectionReason describes a rejection when present. Display-name review is separate from a Business Username update.
Phone number quality update
Usewhatsapp.phone_number.quality_updated for changes to a business phone number’s quality-related status.
Request
Response
Acknowledge the delivery after durably accepting the event.Explanation
ReadqualityRating (GREEN, YELLOW, or RED) and qualityUpdateEvent to understand the update. messagingLimit is the phone-number tier; whatsappBusinessManagerMessagingLimit is the owning business portfolio’s limit. Keep these fields separate and update only the values supplied in the event.
Business Username activated
Usewhatsapp.phone_number.business_username_updated to synchronize a phone number’s Business Username.
Request
Response
Acknowledge the delivery after durably accepting the event.Explanation
businessUsername is the active username without a leading @. Read businessUsernameStatus and businessUsernameUpdatedAt with the phone-number id. Do not confuse this value with the verified display name.
Business Username request reserved
An active Business Username can remain in use while a replacement request is reserved.Request
Response
Acknowledge the delivery after durably accepting the event.Explanation
In this example,businessUsername remains acme.support while requestedBusinessUsername is acme.help. The reserved status describes the pending request, not activation of the replacement. Accept the legacy pending_review value when reading older events; new writes use reserved.
