Home/Help Center/Error 131049

Troubleshooting

Error 131049: Message Not Delivered to Maintain Healthy Ecosystem Engagement

Error 131049 means Meta capped this recipient's marketing messages, not your account. What causes it, the exact fix, and what VGraple CRM already does automatically.

By Chirag Darji · Updated 18 Oct 2026 · 9 min read

On this page
  1. Symptom
  2. Why it happens
  3. Fix
  4. What the webhook looks like
  5. 131049 compared with the errors people confuse it with
  6. What not to do
  7. How VGraple CRM handles it automatically
  8. Prevention
  9. What this is not
  10. Sources and last checked
Broadcast delivery settings in VGraple CRM: quiet hours and marketing frequency cap

Error 131049 means Meta chose not to deliver a marketing template to this one recipient, to protect their experience. It is not a quality rating problem and not a penalty on your account, number or template. It is Meta's own per-user cap on how much marketing a person can receive from every business combined. The fix is to wait at least 24 hours and to send anything transactional as a UTILITY template.

Symptom

A recipient row on a broadcast, sequence step or automation rule shows Failed or Suppressed, and the error text reads something close to Meta's own title for this code: "This message was not delivered to maintain healthy ecosystem engagement." Inside VGraple CRM the same event is translated to plain language: "Meta paused marketing messages to this recipient (per-user frequency cap, error 131049). Retrying within 24 hours will fail again. Use a UTILITY-category template for transactional alerts, utility templates are exempt from this cap." If you attempt to send the same recipient another marketing template within a day, the campaign shows them as suppressed before the send is even attempted, with the reason naming how many hours ago the first 131049 happened.

Why it happens

Meta enforces a "healthy ecosystem engagement" limit at the recipient level: it tracks, across every business sending that person WhatsApp marketing, how much volume they have received recently, and refuses further MARKETING-category templates once that person's own personal cap is reached. It has nothing to do with your account history, your number's quality rating, or your plan on VGraple CRM. A recipient who follows several D2C brands, salons or coaching institutes on WhatsApp can hit this cap purely from other businesses messaging them, and there is no dashboard, even on Meta's side, that tells any individual business where a given recipient's cap currently sits.

WhatsApp broadcast campaign report in VGraple CRM with delivered, read and replied stats per contact

Meta's per-user marketing template limits page describes the limit for marketing template messages only. It sets no equivalent limit for other categories, which is why a message a customer is waiting for belongs in a UTILITY or AUTHENTICATION template in the first place.

What Meta says does not count toward the limit:

  • Marketing messages sent inside a 24-hour customer service window. When a person replies to a marketing message, that opens a window, and marketing messages sent in it do not count.
  • Numbers in the EEA, the UK, Japan and South Korea. Meta states that the per-user limit is not currently active for business numbers or users there.

Two related rules from the same page: the limit adapts to each person's recent engagement, and it does not affect your ability to send marketing messages to other users.

Fix

  1. Do not resend the same recipient a marketing template immediately. Meta's own guidance, mirrored in MARKETING_CAP_SUPPRESSION_HOURS in VGraple CRM's delivery logic, is that a retry inside 24 hours of a 131049 is guaranteed to fail again.
  2. Check if the message was genuinely transactional. If it was an order update, a booking confirmation, or anything the customer directly triggered, resubmit the template as UTILITY category instead of MARKETING; Meta's limit page covers marketing templates only. See template categories and pricing for the boundary between the two.
  3. Wait at least 24 hours before trying a marketing send to this recipient again. There is no guarantee the cap has lifted for them specifically, since it depends on messages from other businesses too, but 24 hours is the shortest interval Meta's own guidance treats as worth retrying.
  4. Narrow future audiences to recently engaged contacts. A recipient who has replied, clicked or interacted with your business recently is statistically far less likely to be near their cap than a cold contact being blasted by several businesses at once.
  5. If it keeps happening to the same segment, reduce marketing frequency to that list. Two marketing broadcasts to the same audience within a short window compounds the chance of hitting this cap on the second one, independent of anything else you change.

What the webhook looks like

When a send is refused for this reason, the messages webhook fires with status failed and error code 131049, as Meta's per-user limits page describes. The shape is the usual failed status payload (abridged here, ids and numbers are placeholders):

{
  "statuses": [{
    "id": "wamid.EXAMPLE",
    "status": "failed",
    "timestamp": "1760000000",
    "recipient_id": "<recipient number>",
    "errors": [{
      "code": 131049,
      "message": "This message was not delivered to maintain healthy ecosystem engagement."
    }]
  }]
}

Treat the code and its details as the thing to build on. Meta notes that error titles will eventually be deprecated.

131049 compared with the errors people confuse it with

The wording below is Meta's, from its error codes reference (131049, 131050 and 131026 sit under "Other errors", 131048, 131056 and 130429 under "Throttling errors").

CodeWhat Meta saysWhat Meta says to doWho it is about
131049"This message was not delivered to maintain healthy ecosystem engagement."Wait at least 24 hours before resending the template message.One recipient who has reached their marketing limit
131050The recipient "has chosen to stop receiving marketing messages on WhatsApp from your business."Do not retry; the messages will not be received.One recipient who opted out of your marketing
131056"Too many messages sent from the sender phone number to the same recipient phone number in a short period of time."Wait and retry if you still intend to send to that number.One pair of sender and recipient, over a short window
131048"There are restrictions on how many messages can be sent from this phone number."Check your quality status in WhatsApp Manager.Your number
130429"Cloud API message throughput has been reached."Try again later or reduce how often your app sends.Your sending speed
131026"Unable to deliver message", with several possible reasons.Ask the person, by a non-WhatsApp route, to check the listed steps.One number that cannot receive the message

In short: 131049 and 131050 are about the person, 131056 is about a pair, and 131048 and 130429 are about you. Only the last two point at your own number or speed.

What not to do

  • Do not resend the same marketing template in a loop. Meta may block further attempts to that recipient for up to 24 hours if you keep resending marketing templates to someone at their limit.
  • Do not relabel a promotion as UTILITY to get around the cap. Meta reviews template content, and a promotional message in the wrong category is rejected or reclassified.
  • Do not treat it as a reason to change your number or template. The cap is on the recipient, so nothing about your side needs fixing.
  • Do not count these recipients as a failed delivery problem. They were never sent, so they are not billed.

How VGraple CRM handles it automatically

The moment a send fails with 131049, VGraple CRM records the exact error code and timestamp against that contact. Every subsequent MARKETING-category send, whether from a broadcast, a sequence step, or an automation rule, checks for a 131049 in the last 24 hours before attempting delivery; if one is found, the send is skipped before it ever reaches Meta, with the reason shown as "Skipped: Meta is limiting marketing messages to this recipient (error 131049, [n]h ago). Wait at least 24 hours or use a UTILITY-category template." This is deliberate: Meta states that repeated resends of marketing templates to a user at their limit may be blocked for up to 24 hours for that user, so a naive resend loop wastes sends and delays the next real chance to reach them.

Suppressed recipients from a 131049 cap are never counted in the campaign's failed total the way a genuine delivery problem would be, and they are structurally excluded from "Retry failed," which cannot pick up a suppressed row by design. UTILITY and AUTHENTICATION sends to the same contact are entirely unaffected by this check, since the underlying block on VGraple CRM's side only ever applies to the MARKETING category.

Example

A coaching institute sends a marketing broadcast to 2,000 leads about a new batch starting. 140 recipients come back with 131049, most of them people who also get marketing WhatsApp messages from two or three other local businesses. None of the 140 are billed. Two days later the institute sends a UTILITY template confirming enrolment to a subset of those same 140 who actually signed up, and it goes through immediately, since UTILITY was never affected by the marketing cap.

Prevention

The single most effective prevention is category discipline: never submit a genuinely transactional message as MARKETING just because it is easier to write without Meta's stricter utility review. See template rejected: reasons and fixes if a utility resubmission gets bounced for reading too promotionally. Beyond that, spacing marketing sends to the same audience by more than a day, and preferring segments of contacts who have engaged in the last two to four weeks over your full contact list, both reduce how often any given recipient is near their personal cap when your message arrives. VGraple CRM's own marketing frequency cap setting lets you enforce wider spacing between your own marketing sends to the same list than Meta's minimum, which is worth tightening if your audience tends to follow several WhatsApp businesses at once.

What this is not

131049 is frequently confused with a quality rating problem or a sign that a number is at risk, and it is neither. Your number's GREEN, YELLOW or RED quality rating is a property of how recipients react to messages from your number specifically, tracked over a rolling 7-day window; 131049 is a separate, per-recipient system that applies identically regardless of your number's own standing. It is also not the same as error 131050, which means this specific recipient tapped "stop marketing messages" for your business, a deliberate, per-business opt-out rather than a shared, adaptive cap; 131050 carries a much longer, 30-day suppression window on VGraple CRM's side because it reflects an intentional choice by the recipient rather than a volume ceiling. Neither error affects a number's throughput or pacing rate the way a throughput error (130429) or a spam-rate restriction (131048) does.

Sources and last checked

Checked against Meta's pages on 18 October 2026: per-user marketing template limits and the error codes reference. Meta's limit page shows no revision date, so this page carries ours. What VGraple CRM does about a 131049 (the 24-hour skip and the suppressed status) is our own behaviour, not a Meta rule.

Frequently asked questions

What does error 131049 actually mean?
Meta withheld a MARKETING-category template because this specific recipient has already received their allowed volume of marketing messages from businesses across WhatsApp, not just from you, in the current period. It is not a penalty on your account or number.
Am I charged when a message fails with 131049?
No. Meta never delivered the message, so there is nothing to bill. The attempt shows as suppressed or failed in the campaign report, not as a delivered conversation.
How long until I can message this recipient again?
At least 24 hours, and only with another MARKETING template if Meta's cap has genuinely lifted for them; there is no guarantee it has. A UTILITY or AUTHENTICATION template to the same recipient is unaffected and can be sent immediately.
Does 131049 hurt my phone number's quality rating?
Not directly. It is a per-recipient cap Meta applies the same way to every business messaging that person, unrelated to your number's own GREEN, YELLOW or RED rating. See phone number quality rating for what actually does affect it.
Can I do anything to stop hitting this cap so often?
Send marketing less frequently to the same list, prioritise UTILITY-category templates for anything genuinely transactional, and keep your audiences to people who have engaged recently. A recipient who gets marketing from many businesses reaches the cap faster regardless of what you send.
Why does VGraple CRM show this recipient as suppressed on my next campaign, not failed?
Because the platform already knows, from the first 131049, that resending within 24 hours will fail again. Refusing to attempt it and marking it suppressed keeps your delivery-rate numbers honest and avoids the repeat attempts Meta may block for up to 24 hours.

Run your WhatsApp on VGraple CRM

Free forever plan, official Meta WhatsApp Business API, set up in 15 minutes. No card needed.