TL;DR: WhatsApp error
131049means Meta chose not to deliver your marketing template message to protect the user from too many marketing messages (the per-user marketing frequency cap). It is not a fault in your number or account. Fix it by waiting before retrying, using the correct template category for content that is genuinely non-marketing, and targeting only engaged users.
What Error 131049 Means
Meta's details string is: "This message was not delivered to maintain healthy ecosystem engagement." It is triggered by Meta's per-user marketing template message limits, an adaptive cap on how many marketing-category templates a single WhatsApp user receives across all businesses in a rolling window. Meta does not publish a fixed number. In addition, Meta's guidance indicates that marketing template messages to WhatsApp users in some regions (notably the United States) are not delivered and return 131049; confirm current regional rules in Meta's per-user-limits doc before relying on this.
Where You See It
Most often it arrives asynchronously in the statuses[].errors[] array of the messages webhook (status: failed, code: 131049). It can also be returned synchronously on the send call. A 200 on the send call is not proof of delivery here.
Common Causes
- The recipient already received marketing messages (from your business or others) in the current window.
- The template is categorized as Marketing, even when your team thinks of it as informational.
- Low engagement: the user rarely reads or replies to marketing messages.
- Sending marketing templates into a region where Meta currently restricts them.
How to Fix It
- Do not immediately retry — the same error returns while the limit is in effect.
- Wait before retrying. Meta's support guidance is to wait at least 24 hours when this is caused by per-user marketing limits.
- If the content is genuinely utility or authentication under Meta's template-category rules, use the correct non-marketing template category (those categories are not subject to the marketing cap). Do not recategorize promotional content as utility just to bypass 131049 — miscategorization is a policy/quality risk that can hurt your account.
- Verify the template's category is correct; recategorize only where a utility/auth message was genuinely mislabeled Marketing.
- Re-engage low-intent users with value-driven content so future deliverability improves.
How to Prevent It
- Segment to engaged users; suppress cold contacts.
- Space marketing sends; avoid multiple marketing pushes per user per day.
- Keep template quality and opt-in hygiene high.
- Monitor failed-status rates to detect cap onset early.
Related Errors
/docs/whatsapp-error-131050— explicit marketing opt-out/docs/whatsapp-error-131048— phone-number spam-rate restriction/docs/whatsapp-error-131026— undeliverable- See the full error reference
FAQ
What does WhatsApp error 131049 mean? Meta withheld your marketing template to maintain a healthy ecosystem — the recipient hit the cross-business per-user marketing cap.
How do I fix 131049? Wait before retrying (Meta says at least 24 hours for per-user limits), use the correct non-marketing template category for content that genuinely qualifies as utility/auth, and target engaged users.
Why do invoices/reminders get 131049? Usually because the template is categorized as Marketing even though the content feels transactional.
Is 131049 my fault? No — it is recipient-level and cross-business; even a first message can fail.
How Dualhook Helps
This is a send-side error: the fix lives in your sending backend. Dualhook is not in your /messages send path and never reads or stores message content, so it does not generate or resolve 131049. What it gives you is visibility — it surfaces the failed delivery statuses routed via your webhook so you can see 131049 rates by template and number, alongside Messaging Health Status, Capacity, Quality & Limits, and Marketing Messages API for WhatsApp. The retry/throttle logic stays in your backend.