Exhibit A
Why did this message fail? Work it out
Question 1 · up to 4
Which code is on the failed status webhook?
Your answers
None yet — pick an answer to start down the tree.
Path map
Depth 0 of up to 4. Circles are questions, squares are outcomes.
All possible outcomes (6)
Fix the number first
A missing or wrong country code turns a real mobile into a number that doesn't exist. Normalise to E.164, then resend once.
Path: “131026” → “No, or not sure”
Probably not on WhatsApp
Send critical messages by SMS or email, and invite the customer to message you on WhatsApp so the number is proven before you rely on it.
Path: “131026” → “Yes, it's clean” → “Never”
Likely an outdated app or unaccepted terms
Meta's advice: through another channel, ask the customer to update WhatsApp, accept its latest terms and confirm they can message your number. Retry later, not in a loop.
Path: “131026” → “Yes, it's clean” → “Yes, in the past” → “Yes, until recently”
The number may have left WhatsApp or changed hands
Confirm contact details through another channel and pause WhatsApp sends to this number until the customer replies.
Path: “131026” → “Yes, it's clean” → “Yes, in the past” → “No, failing for a while”
Not undeliverable: the window was closed
131047 means a free-form message was sent more than 24 hours after the customer's last message. Resend as an approved template.
Path: “131047”
Not undeliverable: a marketing limit
131049 means Meta withheld a marketing template under per-user limits. Wait at least 24 hours before one retry.
Path: “131049”
Question 1: Which code is on the failed status webhook? 3 options.
What is error 131026?
Error 131026 (Message Undeliverable) is the WhatsApp Cloud API's catch-all failure for a message that the API accepted but WhatsApp could not deliver. Meta lists the reasons it covers: the recipient's phone number is not a WhatsApp number, the recipient is using a WhatsApp version too old to receive the message, or the recipient has not accepted WhatsApp's latest Terms of Service and Privacy Policy. Meta does not say which reason applied in a given case, so diagnosis is up to you.
Because the problem is discovered at delivery time, 131026 usually arrives asynchronously. The send request returns HTTP 200 with a WAMID; shortly afterwards a statuses webhook reports that WAMID with status: "failed" and an errors array, one of the webhook error objects, whose entry carries code: 131026, title: "Message undeliverable" and error_data.details. Meta bills delivered messages only, so the failed message is not charged.
131026 is a recipient problem, and that sets it apart from its neighbours. Error 131047 (Re-engagement Message) means the 24-hour customer service window was closed when you sent a free-form message: the person is reachable, you used the wrong message type. Error 131049 (Per-User Marketing Limit) means a marketing template was withheld under per-user marketing limits. Error 100 and the 132xxx template errors are rejected synchronously because the request itself was wrong. Read 131026 as “this number can't receive WhatsApp right now”, then decide whether to correct the number, wait, or use a fallback channel.
Key takeaways
- Error 131026 means WhatsApp could not deliver the message to that recipient; the problem is the recipient, not the request.
- Usual causes: the number isn't on WhatsApp, the app is too old, or the user hasn't accepted WhatsApp's current terms.
- It normally arrives as a
failedstatus webhook after the send call already returned a WAMID. - Undelivered messages aren't billed. Don't retry in a loop: fix the number, wait for the user, or use another channel.
- 131047 is a closed service window and 131049 a per-user marketing limit; neither means the person is unreachable.
How does error 131026 work?
The send returns a WAMID
The API accepts the request with HTTP 200 and returns a message ID. Acceptance only means the request was valid, not that anyone can receive it.
Delivery fails
WhatsApp can't deliver to the recipient: no WhatsApp account on that number, an app too old for the message, or terms not accepted.
A failed status webhook arrives
The webhook marks the WAMID
failedwitherrors[0].code131026. Match it to your send record by message ID; never infer delivery from the 200.Diagnose the number
Check it is stored in E.164 with the right country code, isn't a landline and isn't a typo, and compare it with the
wa_idin the send response'scontactsarray.Choose the next action
For critical messages such as OTPs and delivery updates, fall back to SMS or email. For the rest, flag the contact and pause repeat sends until the customer messages you or updates their details.
Example: Delivery OTPs in Lucknow
A Lucknow quick-commerce service sends delivery-confirmation OTPs on WhatsApp, and about 2% fail with 131026. Grouping the failures shows two clusters: numbers imported from an old loyalty database with a leading 0 and no country code, and customers on feature phones without WhatsApp. The team now normalises numbers to E.164 at checkout, routes any 131026 on an OTP to SMS within seconds, and pauses marketing to a number after two consecutive 131026 failures until that customer messages them again.
Error 131026 in code
{"object": "whatsapp_business_account","entry": [{"id": "{WABA_ID}","changes": [{"field": "messages","value": {"messaging_product": "whatsapp","metadata": { "display_phone_number": "919876543210", "phone_number_id": "{PHONE_NUMBER_ID}" },"statuses": [{"id": "wamid.HBgMOTE5ODEyMzQ1Njc4FQIAERgSRkQ2","status": "failed","timestamp": "1760863200","recipient_id": "919812345678","errors": [{"code": 131026,"title": "Message undeliverable","message": "Message undeliverable","error_data": { "details": "Message Undeliverable." }}]}]}}]}]}
Common mistakes with error 131026
Retrying in a loop
The same number fails the same way minutes later. Retry at most once after a long gap, or only after the customer updates their details or messages you.
Treating it as a platform outage
Check whether failures cluster by import source, country code or campaign before escalating. A burst after a list upload is almost always data, not Meta.
Sending numbers without a country code
A local number sent without the + can be prefixed with your business number's country code and become a number that doesn't exist. Normalise to E.164 first.
Counting a 200 as delivered
Reports built on API acceptance overstate reach. Count delivered and read only from the message status in webhooks.
Deleting the contact on the first failure
A customer who updates the app becomes reachable again. Pause sends and keep the record, and re-enable it when they message you.
Why does error 131026 matter?
Of all the API error codes, a rising 131026 rate is one of the clearest data-quality signals a WhatsApp programme has. A spike after a list import usually means badly formatted numbers or landlines; a steady background rate reflects customers who aren't on WhatsApp or haven't updated the app. Handled well, each 131026 triggers an SMS fallback for critical messages and a clean-up task for the record; handled badly, it becomes a retry loop that never succeeds and a dashboard that blames the platform.
Best practices for error 131026
- Track the 131026 rate per import source and per campaign: spikes point at data, not at the platform.
- Set a fallback rule for critical messages only; marketing doesn't need an SMS backup.
- Start customer journeys with the customer messaging you first (a click-to-chat link or QR code) so the number is proven on WhatsApp.
- Keep the failed WAMID and its error in the contact's timeline so support can explain what happened.