On this page

A suppressed recipient is someone VGraple CRM refused to send to before the message ever reached Meta, because sending would have been pointless, against Meta's rules, or against the recipient's own choice. This article covers every cause, why it is never retried, and what to check for a specific contact.
Symptom
A recipient on a broadcast's detail page shows status Suppressed, colored amber, with a specific reason in the Error column, for example "Suppressed: this contact opted out before the send reached them." The stat tile at the top of the page shows a Suppressed count when this happens on more than zero recipients, and the "Retry failed" action never picks these rows up, no matter how many times it is clicked.
Why it happens
VGraple CRM checks every recipient again at the exact moment their message is about to send, not only when the audience was first built, against a fixed set of conditions. Any one of them is enough to suppress:

| Reason shown | What it means |
|---|---|
| No WhatsApp number | The contact's source channel is not WhatsApp (an Instagram, Messenger or web-chat-only contact), or the number is not in a valid, sendable format |
| Opted out | The contact's own opt-in flag is off, most commonly from replying STOP or a variant |
| Blocked | The contact has been manually blocked in VGraple CRM |
| Marketing stopped | The recipient tapped "stop marketing messages" for your business specifically inside WhatsApp itself, mirrored to marketing_stopped_at from Meta's user-preferences webhook; applies to MARKETING templates only |
| Inside a Meta frequency-cap window | A prior send to this recipient hit error 131049 (Meta's per-user marketing cap) within the last 24 hours, or error 131050 (this recipient stopped marketing messages from your business) within the last 30 days |
| United States marketing pause | The recipient's number is a US number and Meta's marketing-message pause on US numbers is currently in force |
A suppression is not the same as a failed send, and the distinction matters beyond bookkeeping. A failed send means Meta accepted the attempt and then rejected it, or a delivery error came back afterward, so Meta actually saw the request. A suppressed send never reaches Meta at all, VGraple CRM refused to make the attempt. Treating the two the same, which many simpler tools in this category do, is how a business ends up "retrying" a message to someone who already opted out, exactly the behavior Meta has penalized WhatsApp Business Accounts for at the account level since 30 April 2026.
Fix
- Open the recipient's row on the campaign detail page and read the exact reason in the Error column; it names the specific condition, not a generic "not sent."
- For "no WhatsApp number," check the contact's profile under Contacts. Confirm the phone number and source channel are correct; a contact imported from a non-WhatsApp channel cannot receive broadcasts regardless of what you fix here.
- For "opted out" or "blocked," decide if that is intentional. If the contact genuinely wants to hear from you again, they need to message you first and reply START (or you can manually clear the block), not be force-added back into an audience.
- For "marketing stopped" or a frequency-cap window, wait it out or switch category. These are time-boxed (24 hours for the Meta cap, 30 days for a business-specific stop) and apply to MARKETING templates only; a genuinely transactional UTILITY template to the same recipient is unaffected.
- For the US marketing pause, hold marketing sends to US numbers until Meta's pause lifts; see the United States marketing message pause for what qualifies and how long it typically lasts.
- Do not use Retry failed. It is built so suppressed rows can never be picked up; retrying a suppressed recipient cannot succeed and, since 30 April 2026, Meta enforces penalties at the WhatsApp Business Account level for businesses that keep re-attempting sends it has already refused.
How VGraple CRM handles it automatically
Every safety check that can suppress a recipient runs twice: once when the audience is materialized (when the campaign is scheduled or fires) and again at the literal moment each individual message is about to send. A contact who opts out between when you scheduled a campaign and when it actually fires is caught by the second check and correctly excluded, something a system that only checks once, at scheduling time, cannot do. Suppressed rows are never counted as sent, never billed, and structurally excluded from "Retry failed," so an accidental retry attempt cannot happen.
Example
A D2C store sends a flash-sale broadcast to 5,000 contacts. Of those, 120 show as suppressed: 40 opted out months ago, 55 hit the Meta frequency cap from marketing messages sent by other businesses they follow, and 25 are US numbers caught by Meta's marketing pause. None of the 120 were billed, and none appear in the failed count, so the campaign's real delivery rate is calculated against the 4,880 it actually attempted, not diluted by 120 sends that were never going to succeed.
Prevention
Keep contact data accurate (correct source channel, correct phone format) so "no WhatsApp number" suppressions reflect real gaps rather than data entry mistakes. Respect the marketing frequency cap by not sending back-to-back marketing campaigns to the same list inside 24 hours; VGraple CRM's own marketing frequency cap setting can enforce a wider spacing than Meta's own cap if your audience tends to receive marketing from other businesses too. Use UTILITY-category templates for genuinely transactional content (appointment reminders, order updates), since those are exempt from both the Meta cap and a business-specific marketing stop.
What if I genuinely need to reach a suppressed contact?
The answer depends entirely on which suppression applies, and none of them involve forcing a retry. For an opted-out or blocked contact, the correct path is for them to message your business first and reply START (opt-out) or for you to manually unblock them (blocked), since both represent a deliberate choice, theirs or yours, that a broadcast audience selection cannot and should not override. For a marketing frequency-cap window (24 hours) or a business-specific marketing stop (30 days), the suppression lifts on its own once the window passes, or immediately if the contact replies to any message from you, since a reply reopens the normal conversation window regardless of the marketing cap. For a US marketing-pause suppression, wait for Meta's pause to lift; there is no business-side action that shortens it. In every case, the fix is time, a genuine opt-in action from the contact, or a category change (moving genuinely transactional content to a UTILITY template), never a manual override of the suppression itself.
Settings and options
| Suppression cause | Applies to which categories | Duration |
|---|---|---|
| No valid WhatsApp number | All | Permanent until the contact's data is corrected |
| Opted out | All | Until the contact opts back in (replies START) |
| Blocked | All | Until manually unblocked |
| Marketing stopped (131050) | MARKETING only | 30 days |
| Meta frequency cap (131049) | MARKETING only | 24 hours |
| US marketing pause | MARKETING only | Duration of Meta's pause |
FAQ
See the frontmatter FAQs above for the most common questions about suppression, retrying, and how it differs from a failed send.
Related reading
See recipient statuses explained for how suppressed fits alongside every other status, and opt-in, STOP/START and marketing preferences for how a contact's consent state is actually set and changed.