WhatsApp messaging limits are often discussed as one number. That is the wrong operating model. A campaign can fit inside the business portfolio's capacity and still fail for a particular recipient. It can also be technically deliverable and still be a poor business decision because the person did not consent, received another promotion yesterday, or has already replied and needs service rather than another campaign.
As of 3 August 2026, Meta documents two platform controls that matter to marketing teams: a portfolio-level limit for business-initiated conversations outside the customer-service window, and an adaptive per-user limit for marketing templates. A reliable campaign adds a third control owned by the business: consent, relevance, cadence, suppression, and accountable follow-up. This guide turns those three layers into one practical send-decision loop.
1. Separate the three control layers
Meta defines a messaging limit as the maximum number of unique WhatsApp users a business portfolio can reach with messages outside the customer-service window during a moving 24-hour period. The limit is shared across the phone numbers in the portfolio, so one number can consume capacity needed by another. Meta currently documents levels of 250, 2,000, 10,000, 100,000, and Unlimited. The current field is whatsapp_business_manager_messaging_limit; the older messaging_limit_tier field is deprecated (Meta messaging limits).
That portfolio capacity is not a promise that every marketing template will be delivered. Meta's separate per-user system can limit how many marketing templates a person receives from businesses. It adapts to recent reading and inbox activity. Meta says each delivered marketing template counts, while marketing messages sent within the 24-hour customer-service window after a reply do not count toward this particular per-user control. The behavior also differs by market: the control is not active for messages to or from the EEA, United Kingdom, Japan, or South Korea, and US phone numbers currently do not receive marketing templates (Meta per-user limits).
The third layer is yours. A person can be technically reachable but ineligible under your own consent record, frequency policy, lifecycle state, or campaign purpose. Treating “API accepted” as “we should send” is how teams create avoidable opt-outs and weak measurement.
- Portfolio capacity — Can the portfolio initiate this many conversations now?: Current capacity field and
business_capability_updateevents | Pace or resize the audience - Per-user delivery — Is this recipient eligible for another marketing template now?: Delivery status and error
131049| Suppress retries for at least 24 hours - Business policy — Should this person receive this campaign?: Consent, purpose, last send, lifecycle and exclusions | Send, delay, switch to service, or exclude
2. Build one send-decision record
Before a template enters the queue, create a decision record that another operator can audit. At minimum, store the contact identifier; phone market; opt-in source, timestamp, and scope; campaign purpose; template and language; last marketing send; current customer-service-window status; lifecycle state; suppression reason and expiry; cohort; and the person or queue that will own a reply.
This record prevents three common mistakes. First, consent is not reduced to a permanent Boolean. A valid record says what the person agreed to receive and how they can stop it. The WhatsApp Business Messaging Policy requires businesses to obtain opt-in, respect opt-outs, and avoid surprising or misleading communication. Second, a delivery error does not erase the campaign attempt; it becomes operational evidence. Third, a reply is not counted as a campaign success and abandoned in an inbox—it becomes owned work.
Use stable reason codes such as no_opt_in, recent_marketing, active_service_case, 131049_cooldown, portfolio_capacity, and manual_exclusion. Free-text notes can add context, but they should not be the only way to understand why a recipient was skipped.
3. Run an eight-gate preflight
Apply the gates in an order that removes ineligible recipients before scarce capacity is considered.
- Purpose: name the customer outcome, not just the template name. “Renewal reminder for memberships expiring in 14 days” is testable; “August blast” is not.
- Consent: confirm that the opt-in covers this channel and purpose, and that no later opt-out exists.
- Market: check whether current platform behavior or local requirements change the route. Do not infer a country's rule from another market.
- Customer state: remove people with an unresolved complaint, active service case, completed purchase, or another state that makes the offer irrelevant.
- Cadence: apply your own cooling period across campaigns, not only inside a single automation.
- Portfolio capacity: compare the eligible audience with current shared capacity and leave headroom for higher-priority operational messages.
- Ownership: assign replies, failure review, and escalation before launch.
- Measurement: freeze the cohort and, where practical, keep a randomized holdout group that receives no campaign.
The holdout matters because delivered, read, and replied metrics describe a message path, not incremental business value. If a customer would have renewed without the reminder, attributing the whole renewal to the template overstates impact.
4. Treat error 131049 as a suppression signal
When Meta applies the per-user marketing limit, the failed delivery can return error code 131049. Meta advises waiting at least 24 hours before retrying. Repeated resend attempts inside that period can extend blocking for up to another 24 hours. A tight retry loop therefore turns one expected policy outcome into additional noise and delay.
The handler should accept the failed status, attach 131049 to the recipient and campaign attempt, set a suppression expiry at least 24 hours later, and stop automatic retries. After the cooling period, run the full preflight again. Do not assume that time alone makes the message relevant.
Keep this failure separate from portfolio exhaustion, an invalid template, an unreachable number, or an integration error. They require different owners and corrective actions. A single “failed” bucket hides whether the team needs to wait, fix data, adjust capacity, or repair code.
5. Measure a campaign as a control loop
Start with a reconciled funnel: attempted, accepted for processing, delivered, read, replied, qualified next action, and completed outcome. Meta's current analytics documentation covers sent and delivered messaging data, while template analytics can include reads; the documented lookback is up to one year for messaging analytics and 90 days for template analytics (Meta analytics).
Add operating measures that explain the funnel: exclusion rate by reason, 131049 rate by campaign and market, time to suppress a failed recipient, reply assignment time, opt-out rate, unresolved reply backlog, and conversion versus the holdout. Compare cohorts only when audience rules, purpose, and time window are comparable.
Never move 131049 failures out of the denominator merely to improve a delivery-rate chart. Show both the preflight-eligible audience and the platform-accepted audience. That distinction tells you whether the opportunity is better targeting before send or better handling after an attempt.
6. Example: a fitness studio reactivation campaign
Consider an independent studio inviting former members to a new beginner class. The first segment contains customers whose membership ended 45 to 90 days ago. The team then removes contacts without a purpose-matched opt-in, anyone who opted out, people with an open billing case, and anyone who received another marketing template during the studio's own cooling period.
The remaining audience is split into a campaign cohort and a 10% randomized holdout. The campaign uses one approved template in the contact's stored language. Portfolio capacity is checked before scheduling. Replies go to the membership queue with the campaign and class context attached.
A 131049 response does not trigger another send that evening. The contact receives a cooldown reason and no retry for at least 24 hours. A delivered message that gets a reply is handed to a person; further marketing is suppressed while that conversation is active. At the end, the team compares class bookings for the campaign and holdout groups, then reviews opt-outs and service load alongside conversions.
This design produces fewer impressive-looking send totals than a maximal broadcast. It produces a more defensible answer to the question that matters: did the message create useful action without wasting attention or operational capacity?
7. Map the loop to DripTell
DripTell's current campaign management surface supports scheduling, audience checks, and recipient-level delivered, read, failed, and replied states. The broadcast guide emphasizes approved messages, audience review, delivery funnels, and reply handling. The template workspace supports template creation and Meta synchronization.
Use those surfaces as the operator's campaign layer, while keeping platform capacity and 131049 behavior explicit in the runbook. Build segments from consent, lifecycle, and recency fields; review the audience before queueing; export or retain recipient evidence; and ensure every reply has an owner. Do not claim that a dashboard has solved frequency governance unless the underlying cross-campaign decision record is complete.
The practical boundary is important: DripTell can help teams schedule, segment, and observe campaigns, but the business still chooses its consent standard, its cooling period, its priority rules, and the outcome worth measuring.
8. Audit the system in 30 minutes
Use one recent campaign and answer these questions with records, not recollection:
- Can you retrieve the portfolio's current messaging limit and detect a
business_capability_updatechange? - Can you distinguish portfolio capacity from per-user error
131049? - Does
131049stop retries for at least 24 hours across every worker and queue? - Can you show the opt-in source, scope, date, and latest opt-out for every recipient?
- Does one cross-campaign cadence rule apply before messages are queued?
- Are active service conversations and resolved customer outcomes excluded when appropriate?
- Does every reply reach a named owner with the campaign context?
- Are delivered, read, replied, opt-out, and completed-outcome data reconciled to the same cohort?
- Is there a holdout or another credible baseline for incremental impact?
- Can an operator explain every exclusion and failure reason without opening raw logs?
If several answers are “no,” reduce the next audience and repair the decision record before increasing volume. Meta has publicly described user controls, marketing-message limits, template review, and escalating restrictions as safeguards against unwanted business messages (Meta business-chat controls). The durable strategy is therefore not to hunt for a permanent maximum. It is to operate a control loop that protects consent, attention, capacity, and measurable outcomes.
If you want to test that loop on one real audience and campaign, book a DripTell demo with the consent fields, suppression rules, reply owner, and outcome definition ready.
DripTell Editorial
Practical guidance reviewed by the DripTell product and customer workflow team.
See how DripTell checks product claims, uses primary sources and handles corrections.
Editorial and source policy



