WhatsApp Error 131049: Healthy Ecosystem Engagement

WhatsApp error 131049 means Meta withheld a marketing message to maintain healthy ecosystem engagement. Causes, the per-user limit, and how to fix it.

TL;DR: WhatsApp error 131049 means 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

  1. Do not immediately retry — the same error returns while the limit is in effect.
  2. Wait before retrying. Meta's support guidance is to wait at least 24 hours when this is caused by per-user marketing limits.
  3. 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.
  4. Verify the template's category is correct; recategorize only where a utility/auth message was genuinely mislabeled Marketing.
  5. 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.

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.

Browse more docsStart Free Trial