1. [Help](https://nuvia.ai/en/docs)
2. [Dashboards](https://nuvia.ai/en/docs/colecoes/19368706-dashboards)

# How to track send failures (in the conversation and in the campaign)

See where send failures show up in Nuvia: the failure card in the conversation, with the cause in plain language, and causes grouped by step in the campaign.

Available on

all plans.

Who can do it

any user with access to the conversation or campaign where the send happened.

Updated on November 3, 2026

[Dashboards](https://nuvia.ai/en/docs/colecoes/19368706-dashboards)

1. [How to use Nuvia's data Dashboards (customer service, campaigns, funnel)](https://nuvia.ai/en/docs/artigos/14499194-how-to-use-nuvia-dashboards-service-campaigns-funnel)
2. [How to read the Nuvia Funnel dashboard](https://nuvia.ai/en/docs/artigos/14590408-how-to-read-nuvia-funnel-dashboard)
3. [How to track send failures (in the conversation and in the campaign)](https://nuvia.ai/en/docs/artigos/15518011-how-to-track-send-failures-in-conversation-and-campaign)
4. [How to export Dashboard reports in Nuvia](https://nuvia.ai/en/docs/artigos/14570105-how-to-export-dashboard-reports-in-nuvia)

On this page

1. In the conversation: the failure card
2. Failure because of an empty template variable
3. Contact who asked not to receive marketing
4. In the campaign: causes per step and Action history
5. In the HubSpot integration: Sync history
6. Permanent and transient failures

**On this page6 sections**

1. In the conversation: the failure card
2. Failure because of an empty template variable
3. Contact who asked not to receive marketing
4. In the campaign: causes per step and Action history
5. In the HubSpot integration: Sync history
6. Permanent and transient failures

When a message can't be sent, whether in a campaign, a follow-up, an agent reply or a manual send, Nuvia shows the failure right where the send happened, with the cause in plain language, the channel code and, when resending is possible, a button to try again. This article explains where these failures show up and how to read them.

Available on

all plans.
**Who can do it:** any user with access to the conversation or campaign where the send happened.
**Where it happens:Conversations** (failure card), **Campaigns** (causes per step, Action history and contact export), **Integrations → HubSpot** (Sync history) and in the **outgoing webhook** (MESSAGE_FAILED event)

## In the conversation: the failure card

When a sent message fails, it shows up in the conversation with a red card. The card always has three pieces of information:

1.

**The cause, in plain language** — on the first line, after the **Not sent** label. Example: “Not sent · The 24-hour window for this conversation has expired. Send an approved template to reopen contact.”

2.

**The identification line** — right below, with the channel code, the source of the failure and the time: “Code 131047 · WhatsApp (Meta) · 10/08 14:32”. The source is **WhatsApp (Meta)**, **LinkedIn** or **Nuvia**.

3.

**View technical details** — a link that expands the provider's raw response, the HTTP status and the failure record number, when that information exists.

The cause is shown **in your language** (Portuguese, English or Spanish) whenever Nuvia recognizes the channel code, for example: number outside the 24-hour window, send limit reached, template paused by Meta, LinkedIn account disconnected or a pending billing issue with Meta.

Good to know

there's no longer a generic title like “This message couldn't be sent”. When the code isn't recognized, the card shows the text the channel itself returned, instead of hiding the information. When there isn't even that, it says there was an internal Nuvia failure and gives the record number for you to pass on to support.

### The Try again button

The **Try again** button does exactly the same as the conversation's text field. That's why it only appears when resending can actually work:

-

the failed message is a **text** message (templates and media aren't resent with this button);

-

the conversation **isn't closed**;

-

the conversation is **within WhatsApp's 24-hour window**;

-

your account isn't in an **expired trial period**.

If any of these conditions isn't met, the button isn't shown; the send would fail again for the same reason.

### 24-hour window block: two different messages

When Nuvia blocks the send because there's no open window, the card explains **which** of two situations happened:

SituationWhat the card says

The contact has replied at some point, but the 24 hours have passed “24-hour window expired. Send an approved template to reopen the conversation.”

The contact has **never** replied in this conversation “The contact hasn't replied yet, so there's no open 24-hour window. Send an approved template to start the conversation.”

Why this matters

a conversation where the lead never spoke has no window to “expire”. The old text said “window expired” in both cases, which made it look like the conversation had been open and then closed. Now the card says exactly what's happening.

This block is done **by Nuvia**, before the message goes out to WhatsApp. That's why it shows with **Nuvia** as the source in the identification line — and not **WhatsApp (Meta)**, as before. The change separates our block from the real 131047 error, where Meta itself refuses the send.

## Failure because of an empty template variable

A common failure in WhatsApp campaigns is a template that can't be sent because one of the mapped variables is **empty** for that lead. In this case, the message says exactly **which field to fill in**, for example:

“Couldn't send the template: Company name is empty for this lead. Fill in the field and try again.”

The field name shows its friendly label (e.g. **Company name**), not the technical identifier. When more than one field is empty, all of them are listed. To learn how to map variables and avoid empty fields, see [How to use variables in WhatsApp templates](https://nuvia.ai/en/docs/artigos/15353096-how-to-use-variables-in-whatsapp-templates).

## Contact who asked not to receive marketing

Before sending a **Marketing** template, Nuvia checks whether that contact can receive this type of message right now. If not, the send is blocked **before** it goes out to WhatsApp and the failure shows with **Nuvia** as the source and the MARKETING_SUPPRESSED code.

There are two different situations, with different text on the card:

SituationWhat the card saysHow long it lasts

The contact asked to stop receiving marketing “This contact asked not to receive marketing messages on this channel.” No end date — it applies until the contact changes their mind

WhatsApp is limiting marketing for that contact “WhatsApp is limiting marketing messages for this contact right now. Sending will be released automatically.” 24 hours, and it releases on its own

**Where the stop request comes from:** the contact turned off your company's marketing messages in the WhatsApp app itself, or Meta refused a send with code **131050** (the contact blocked marketing). In both cases Nuvia saves the preference on the contact and stops sending marketing to them on that channel.

**Where the temporary limit comes from:** Meta refused a send with code **131049** (per-user marketing message limit) or **130472**. Nuvia keeps this block for 24 hours for that contact, on that channel, within your company — and resumes sending on its own when the time is up.

### 131049 has two different moments — and two different cards

It's worth understanding this difference, because it explains why the same problem shows up in two ways on screen:

MomentWhat happenedHow it shows in the conversation

**The first refusal** WhatsApp accepted the send, created the message and only **then** reported that it wasn't delivered Source **WhatsApp (Meta)**, code **131049**, with the text “Not delivered: Meta limits marketing messages per user. Try again in 24 hours.”

**The following sends, within the 24 hours** Nuvia already knows about the limit and doesn't even call WhatsApp Source **Nuvia**, code MARKETING_SUPPRESSED, with the text “WhatsApp is limiting marketing messages for this contact right now. Sending will be released automatically.”

Why this matters

**131049 isn't a send failure, it's a delivery failure.** The message does get created and may show as sent for a few moments, until Meta's notice arrives and it becomes a failure. So don't expect to see MARKETING_SUPPRESSED the first time — it only shows from the second Marketing template to that contact onward, while the 24 hours are running.

Important

the block only applies to templates in the **Marketing** category. **Utility** and **Authentication** templates (order confirmation, access code, payment slip) keep going out normally.

Good to know

the preference is per **communication channel**, not per inbox. Someone who cut off marketing on WhatsApp still gets email and LinkedIn. And switching connections doesn't help: WhatsApp Cloud API and Evolution count as the same WhatsApp for the contact.

## In the campaign: causes per step and Action history

In the campaign details, each step's **Failures** indicator can be expanded to see the **grouped causes**, the plain-language message, the channel code and the count for each cause.

In the campaign's **Action history**, each failed run shows the same cause and the same identification line (code and source) you see on the conversation card. Both screens use the same translation: the same code never shows different text in different places.

Good to know

a failure the campaign will resend (like 131049) shows in the step's causes **while it's waiting** for the resend. If the second attempt delivers, the step starts counting that contact as sent. In other words: the number of failures in a recently sent step can go down on its own the next day.

### In the campaign contact export

The campaign contact export has two columns with the reason, right after the **Status** column:

-

**Error code** — the same code shown on the card (e.g. 131049, 131026)

-

**Error reason** — the cause in plain language, same as on screen

Before, the export only said “Delivery error” in the Status column, without saying why. Now you can filter the spreadsheet by reason and separate, for example, “number doesn't use WhatsApp” from “marketing limit”.

### In the outgoing webhook

If you use Nuvia webhooks to track sends in another system, there's the **MESSAGE_FAILED** event. It includes a failure_reason field with the code, the cause in text, the classification and the provider — **the same text the operator reads in the conversation**, not the channel's raw response.

See also [How to interpret campaign metrics](https://nuvia.ai/en/docs/artigos/14576475-how-to-interpret-campaign-metrics).

## In the HubSpot integration: Sync history

When the failure comes from HubSpot, not from a message send, it shows in the integration's **Sync history**. In the details of the item with an error, Nuvia first shows the **classified cause** with the HubSpot code (for example INVALID_OPTION or INVALID_PHONE_NUMBER), naming the property that failed, and only below it the API's raw response, which can run over two thousand characters.

Older sync items, saved before this change, still show only the raw response.

## Permanent and transient failures

Every send failure is classified internally into two types, which helps you understand whether you need to act:

-

**Permanent** — Meta (or Nuvia) refused **this attempt**. It's usually final and calls for action on your part: reconnect a WhatsApp number, adjust a permission, reconnect the LinkedIn account or fix the lead's data

-

**Transient** — a temporary failure, where the **resend happens automatically** (e.g. a momentary send limit, channel instability). In these cases the message itself says the resend is automatic and you don't need to do anything

Good to know

“Permanent” answers “this attempt didn't go through” — not “it will never go through”. These are two different questions, and the per-user marketing limit (131049) is exactly the case where the answer differs: it shows as permanent on the card and it's still worth resending later. What decides the resend in the campaign is the rule in the next section, not this label.

### What the campaign resends and what it ends right away

When a campaign step fails, Nuvia can try sending **one more time, about 24 hours later**. It's one extra attempt, not an endless loop: if the second one also fails, the contact is ended in that campaign.

This resend is only skipped when waiting won't change anything — or when insisting would be wrong.

**The campaign resends in 24 hours:**

-

**131049** and **130472** — per-user marketing message limit. It's a recipient window and clears on its own

-

WhatsApp limits and momentary instability (130429, 131048, 131056, 131000, 132069 and similar)

-

Codes Nuvia doesn't recognize and internal platform errors

**The campaign ends the contact right away, without resending:**

-

**131026** — the number doesn't use WhatsApp. It never recovers

-

**131050** — the contact asked not to receive marketing. We don't insist, as a matter of policy, not effectiveness

-

**Template errors** (132000, 132001, 132015, 132016 and the other 132xxx) — the problem is in the template, not the timing

-

**Number connection and setup** (0, 190, 3, 10, 200, 131031, 131037, 131042, 131045, 133010) — it only clears after someone fixes it

-

**Window and content** (131047 expired window, 131051 content type, 131052 and 131053 attachment, 131008 and 131009 missing variable, 131021 the channel's own number)

-

**Nuvia's own blocks** — MARKETING_SUPPRESSED and inbox without a default agent

Correction

until early September 2026 this article said the campaign does **not** resend **131049**. That was wrong and was fixed in the product. Resending 131049 **is back**: measured in production over 21 days, resending 24 hours or more after a 131049 **delivers 41% of messages** (2,336 of 5,688). Turning off this resend threw away almost half of the recoverable sends. If you read the previous version and adjusted your operation because of it, you can undo that.

Correction (September 2026)

the rule above was right, but in practice the 24-hour resend almost never happened for **131049**. The reason: 131049 is a **delivery** failure — WhatsApp accepts the send right away and only a few seconds later reports that it wasn't delivered. In that gap the campaign had already ended the contact in that step, and the failure notice arrived too late to schedule the resend. Now, when the notice arrives later, Nuvia **reopens the contact in the campaign** and the resend happens normally, about 24 hours later. This applies to all failures the list above says are resent.

One exception

if the campaign is already **completed** when the failure notice arrives, the contact stays ended and the 24-hour resend doesn't happen. This can happen in manual or scheduled send campaigns, which end on their own when the last contact finishes. Active campaigns aren't affected.

Good to know

the contact is only reopened when the step was ended **because of that send**. If it was ended for its own reason — they replied, the conversation was resolved or they hit the failure limit — the campaign doesn't go back. That's the expected behavior: someone who already replied doesn't get a new attempt.

Good to know

having talked to the lead before barely changes recovery (45% for those who already replied, 40% for those who never replied). In other words: it's worth resending to cold contacts too.

Watch the sequence

the campaign resend happens about 24 hours after the failure, and the temporary block for that contact also lasts 24 hours. If the resend lands while the block is still in place, Nuvia itself blocks it with MARKETING_SUPPRESSED — and that block ends the contact in the campaign. In practice: if you see MARKETING_SUPPRESSED right after a 131049 in the same step, that's what happened.

### Attachment refused by Meta (code 131053)

Code **131053** is now treated as a **permanent** failure, with the text “Meta refused the attachment. Try sending it again.”

Before, it showed as transient and promised an automatic resend — but this error comes as a Meta notice **after** the send was already accepted, so no automatic platform resend reaches that message. The attachment simply got lost and no one was told. Now the card asks for action: send the attachment again.

Good to know

many of these cases came from **audio recorded in the browser**, which went out with an invalid chunk at the end of the file and was refused by Meta. Nuvia now fixes the audio at upload time, so the file is valid from the start — this specific refusal reason should all but disappear.

## Frequently asked questions

**What's the difference between a permanent and a transient failure?**

A **transient** failure is temporary; Nuvia retries the send automatically (e.g. send limit reached for a moment, channel instability). A **permanent** failure means **this attempt** was refused, and it usually calls for action on your part: reconnect a WhatsApp number, adjust a permission or review the recipient's data.

The label doesn't decide the campaign resend. The per-user marketing limit (131049) shows as permanent and is still resent in 24 hours, because it recovers. The expired 24-hour window (131047), on the other hand, shows as permanent and isn't resent. The list of what's resent and what's ended is in the section “What the campaign resends and what it ends right away”.

**A contact failed with 131049. Does the campaign try again?**

Yes. **131049** is the per-user marketing message limit Meta applies — a recipient window that clears on its own. The campaign makes one extra attempt about 24 hours later, and that attempt delivers in around **41%** of the cases measured in production.

You don't need to do anything: no manual resend, no removing the contact from the campaign. If the second attempt also fails, then the contact is ended in that campaign.

**My campaign shows as completed and no contact was resent. Why?**

The 24-hour resend only happens in an **active** campaign. If the campaign had already ended when Meta's failure notice arrived, the contact stays ended and the second attempt isn't scheduled. This is more common in manual or scheduled send campaigns, which end on their own as soon as the last contact finishes.

To recover these contacts, you can enroll them again in an active campaign.

**What is the code on the card for?**

It's the code the channel itself returned (Meta or LinkedIn). It's always visible because it's what support and engineering use to investigate: when you open a ticket, include this code along with the send time. Codes created by Nuvia itself, which Meta wouldn't recognize, aren't shown on this line.

**The card says “the reason wasn't recorded”. What does that mean?**

It means the message failed before Nuvia started recording the cause of each failure, and there's no way to recover that reason afterwards. Old failures aren't reprocessed. For new sends, there's always a cause, code or record number.

**Why doesn't the Try again button show up for this failure?**

Because the resend would fail the same way. The button only shows on text messages, in open conversations, within the 24-hour window and with an active account. If the 24-hour window expired, send an approved template; if the conversation was closed, reopen it before sending; if the trial period expired, talk to the sales team.

**The card says the contact hasn't replied yet. How do I start the conversation?**

With an **approved template**. Until the contact writes to you, there's no 24-hour window and free-form messages don't go out. Keep in mind: sending the template does **not** open the window — it opens when the contact replies.

**A contact suddenly stopped receiving my campaigns. Why?**

They probably asked not to receive marketing messages anymore — in WhatsApp itself or through a Meta delivery refusal (code 131050). The first time, the card shows **WhatsApp (Meta)** as the source with code 131050; from the following sends on, it shows **Nuvia** as the source, because the platform no longer calls WhatsApp. This block has no end date: it only clears when the contact changes their mind. If the text mentions a temporary WhatsApp limit (131049), that's something else: it clears on its own in 24 hours and the campaign resends.

**Does the marketing block stop all my sends to that contact?**

No. It only applies to templates in the **Marketing** category on that channel. **Utility** and **Authentication** templates keep going out, and the conversation continues normally if the contact writes to you. Other channels (email, LinkedIn) aren't affected either.

**A message failed because of an “empty field for this lead”. What do I do?**

It means the template had a variable mapped to a field that's empty for that contact (e.g. **Company name**). Fill in the field on the contact and use **Try again**, or segment the audience to include only contacts with the field filled in before launching the campaign.

[PreviousHow to read the Nuvia Funnel dashboard](https://nuvia.ai/en/docs/artigos/14590408-how-to-read-nuvia-funnel-dashboard) [NextHow to export Dashboard reports in Nuvia](https://nuvia.ai/en/docs/artigos/14570105-how-to-export-dashboard-reports-in-nuvia)

Was this article helpful?

## Related articles

- [How to improve the response rate of WhatsApp campaigns](https://nuvia.ai/en/docs/artigos/14501604-how-to-improve-response-rate-whatsapp-campaigns)
- [Nuvia glossary of terms](https://nuvia.ai/en/docs/artigos/14580494-nuvia-glossary-of-terms)
- [How to send audio, images, documents and media from the Inbox](https://nuvia.ai/en/docs/artigos/15353019-how-to-send-audio-images-documents-and-media-from-inbox)
- [How to send Nuvia WhatsApp templates straight from a HubSpot workflow](https://nuvia.ai/en/docs/artigos/15879535-send-nuvia-whatsapp-templates-from-hubspot-workflow)
- [How to enroll leads/contacts in Nuvia campaigns directly from a HubSpot workflow](https://nuvia.ai/en/docs/artigos/15879734-enroll-contacts-nuvia-campaigns-from-hubspot-workflow)

[Dashboards](https://nuvia.ai/en/docs/colecoes/19368706-dashboards)

1. [How to use Nuvia's data Dashboards (customer service, campaigns, funnel)](https://nuvia.ai/en/docs/artigos/14499194-how-to-use-nuvia-dashboards-service-campaigns-funnel)
2. [How to read the Nuvia Funnel dashboard](https://nuvia.ai/en/docs/artigos/14590408-how-to-read-nuvia-funnel-dashboard)
3. [How to track send failures (in the conversation and in the campaign)](https://nuvia.ai/en/docs/artigos/15518011-how-to-track-send-failures-in-conversation-and-campaign)
4. [How to export Dashboard reports in Nuvia](https://nuvia.ai/en/docs/artigos/14570105-how-to-export-dashboard-reports-in-nuvia)

## Still need help?

Customers reach support through the chat inside the platform. Not a customer yet? Talk to our team.

[Talk to support in the platform](https://app.nuvia.ai) [I'm not a customer yet](https://nuvia.ai/en/contact)

---
Source: https://nuvia.ai/en/docs/artigos/15518011-how-to-track-send-failures-in-conversation-and-campaign
