WhatsApp error 131049: Message not delivered

Meta chose not to deliver your marketing template to this person, usually because they already get many marketing messages. Mark the message undelivered and don’t retry right away.

Why it happens

Meta caps how many marketing templates each WhatsApp user receives, across every business that messages them. The cap is dynamic: people who read and reply to marketing get more, people who ignore it get fewer. When a person is at their cap, your template fails with 131049 instead of being queued.

Meta does not tell you the exact reason or when the person will be reachable again. Utility, authentication, and service messages are not affected. See Meta’s error code reference.

Every send to a US number fails?

Meta paused marketing templates to US (+1) numbers. Outside an open customer service window or click-to-WhatsApp ad window, those sends return 131049 no matter how engaged the person is. Use utility templates or wait for the person to message you.

What to do

  1. Don’t retry right away. Turn off any automatic resend loop for this message.
  2. Mark the message undelivered so your reports and follow-up logic don’t treat it as sent.
  3. Wait before sending again. If this is a recipient limit, wait at least 24 hours before another relevant template. It may still fail. Waiting will not lift the US marketing restriction.
  4. Send to people who engage. Prioritize contacts who opted in and read or replied recently, and pause those who never respond. See WhatsApp’s marketing best practices.

Handle it in your app

The send request can succeed and the message fail later. Kapso webhooks send a whatsapp.message.failed event with Meta’s error code. This payload uses v2; the handler also works with v1 webhooks.

webhook payload · v2
{
  "message": {
    "id": "wamid.EXAMPLE",
    "kapso": {
      "status": "failed",
      "statuses": [{
        "status": "failed",
        "errors": [{
          "code": 131049,
          "title": "Meta chose not to deliver",
          "message": "This message was not delivered to maintain healthy ecosystem engagement."
        }]
      }]
    }
  }
}
handler.js
// X-Webhook-Event: whatsapp.message.failed
function isError131049(message) {
  if (message.delivery_error?.code === 131049) return true;

  return message.kapso?.statuses?.some((status) =>
    status.errors?.some((error) => error.code === 131049)
  ) ?? false;
}

if (isError131049(body.message)) {
  const messageId = body.message.whatsapp_message_id ?? body.message.id;
  await markUndelivered(messageId, { retry: false });
}

See all fields in the message event docs.

Frequently asked questions

Is my WhatsApp account banned?

No. 131049 means Meta did not deliver this marketing message. By itself, it does not mean your account is banned.

Why do all my marketing messages to US numbers fail?

Meta paused marketing templates to US (+1) phone numbers. Outside an open customer service window or a click-to-WhatsApp ad window, those sends fail with 131049. Utility, authentication, and service messages still work.

Am I charged for these messages?

No. Meta only charges for template messages that are delivered.

Can I send it as a utility template instead?

Only if the message really is a utility message, like an order update. Meta reviews categories and can change a promotional template to marketing.