The account_alerts field reports account and phone-number alerts that Meta wants the business or partner to act on. It is a management webhook field, not a message-path field.
What account_alerts Reports
Use account_alerts to detect changes such as:
- messaging-limit increase decisions that were denied, deferred, or need more information,
- Official Business Account (OBA) approval or rejection,
- deleted business profile photos,
- profile or capability alerts that may require a business action.
Each alert carries a severity, status, type, and human-readable description. Meta's reference nests those four inside an alert_info object, but the deliveries Dualhook receives put them directly in value, next to entity_type and entity_id. Read both places.
When It Fires
Common trigger families are:
| Trigger | Typical meaning |
|---|---|
| Increased-capability eligibility | Meta cannot increase limits yet, deferred the decision, or needs more verification. |
| OBA status | The phone number's Official Business Account request was approved or rejected. |
| Profile photo lost | The phone number's public business profile photo was deleted and should be uploaded again. |
Payload Shape
{
"object": "whatsapp_business_account",
"entry": [
{
"id": "<WABA_ID>",
"time": 1739321024,
"changes": [
{
"field": "account_alerts",
"value": {
"entity_type": "BUSINESS",
"entity_id": "<BUSINESS_OR_PHONE_ID>",
"alert_severity": "WARNING",
"alert_status": "ACTIVE",
"alert_type": "INCREASED_CAPABILITIES_ELIGIBILITY_DEFERRED",
"alert_description": "Limits cannot be increased yet."
}
}
]
}
]
}
This is the delivered shape. Meta's reference shows the last four fields inside "alert_info": { ... } instead, so a parser that only reads alert_info misses every real alert.
Key values:
| Field | Notes |
|---|---|
entity_type | BUSINESS (business portfolio), PHONE_NUMBER, or CURRENT_STATUS_ID (the phone number's business profile). |
entity_id | Business portfolio ID or business phone number ID. |
alert_severity | CRITICAL, WARNING, or INFORMATIONAL. |
alert_status | ACTIVE or NONE. |
alert_type | Machine-readable reason. See the values below. |
alert_description | Human-readable action or explanation from Meta. |
Documented alert_type values:
| Value | Meaning |
|---|---|
INCREASED_CAPABILITIES_ELIGIBILITY_DEFERRED | Not enough messaging signal yet, identity verification was rejected, or message quality is too low. |
INCREASED_CAPABILITIES_ELIGIBILITY_FAILED | Limits cannot be increased because of past messaging activity. |
INCREASED_CAPABILITIES_ELIGIBILITY_NEED_MORE_INFO | Meta needs more information, such as identity verification, before deciding. |
OBA_APPROVED | Official Business Account status approved. |
OBA_REJECTED | Official Business Account status denied. |
PROFILE_PICTURE_LOST | The business profile photo was deleted. Upload a new one in WhatsApp Manager or through the API. |
Dualhook Handling
Dualhook subscription: subscribed and forwarded. Dualhook's Meta app subscribes to account_alerts. Meta does not allow Webhook Override for account-level fields, so these events always land on Dualhook's app-level callback, never on your Webhook Override URL.
Dualhook uses the event metadata to surface account-health and capability alerts in the dashboard, classify alert severity, and forward the management event to your configured endpoint with Dualhook forwarding headers. Dualhook stores operational metadata about the alert and delivery status; it does not store message content because this field is not a message webhook.
Implementation Notes
- Treat
alert_typeas the stable routing key andalert_descriptionas display text. - Escalate
CRITICALalerts to an operator; they often indicate a rejection or blocked capability. - Keep the raw
entity_typeandentity_id, because an alert may target a business portfolio, phone number, or profile entity. - For OBA decisions, also check Official Business Account and Display Names.