> For the complete documentation index, see [llms.txt](https://help.zaapi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.zaapi.com/integrations/whatsapp-business/broadcasts/limits-and-best-practices.md).

# Limits and best practices

### Limits at a glance

| Limit                                             | Value                                          |
| ------------------------------------------------- | ---------------------------------------------- |
| Max recipients per broadcast                      | 10,000                                         |
| Recipients per broadcast vs. daily messaging tier | Cannot exceed your WhatsApp tier's daily limit |
| Per-contact template cooldown                     | 24 hours                                       |
| Marketing template footer                         | Fixed opt-out line, not editable               |
| US numbers (+1)                                   | Excluded from all broadcasts                   |
| Plan requirement                                  | Pro or Advanced, not on free trial             |

### Maximum recipients

A single broadcast can reach at most **10,000 recipients**. This applies to all three targeting modes — send to everyone, targeted filters, and CSV upload. If your audience is larger, split it across multiple broadcasts, ideally on different days.

### Don't exceed your daily messaging tier

Meta caps how many unique contacts you can start conversations with in a rolling 24-hour period. Every WhatsApp Business phone number sits in a tier:

| Tier      | Unique contacts per 24 hours |
| --------- | ---------------------------- |
| 50        | 50                           |
| 250       | 250                          |
| 2K        | 2,000                        |
| 10K       | 10,000                       |
| 100K      | 100,000                      |
| Unlimited | No cap                       |

**Zaapi blocks a broadcast at creation if the recipient count would exceed your tier.** You'll see "This would exceed your daily template limit" and nothing is sent.

Tiers scale up automatically as you build a good sending history, and scale back down if your quality rating drops. To move up: send consistently to opted-in contacts, keep engagement high, and keep blocks and reports low.

### Your phone number's quality rating

Meta rates each phone number **High (green)**, **Medium (yellow)** or **Low (red)** based on recipient feedback — blocks, reports, and "not interested" responses.

**Zaapi blocks template sends, including broadcasts, when your rating is medium or low.** This is deliberate: it protects you from the next step, which is Meta restricting or disabling your number. A broadcast that hits this check is marked **Failed** and no messages go out.

If this happens: stop broadcasting, review what you last sent and to whom, and let the rating recover. Refresh the account in Zaapi once Meta's rating improves. Individual templates are also rated — a template rated medium or low is blocked on its own, even if your number is healthy.

### Only broadcast to contacts who opted in

This is the rule that matters most. Meta requires explicit opt-in before you send a marketing template, and it must be clear:

* the customer actively agreed (ticked a box, replied to a request, submitted a form)
* they knew it was your business asking
* they knew what they were agreeing to receive

Buying a list, scraping numbers, or importing everyone who ever transacted with you is not opt-in. The consequence isn't lower open rates — it's blocks and reports, a falling quality rating, a tier downgrade, and eventually a disabled number. Businesses do lose their WhatsApp numbers this way, and the bans are not always reversible.

**Good ways to collect opt-in:**

* A tick box at checkout or on a sign-up form, worded as "Yes, send me offers on WhatsApp"
* A WhatsApp link or QR code where the customer messages you first
* Asking in an existing conversation and recording the answer with a chat label
* A Zaapi chat widget or click-to-WhatsApp ad with clear consent wording

**Track it.** Use a label like `whatsapp-marketing-opt-in` on every contact who consents, then target that label in your broadcasts. It makes your audience defensible and your filters simple.

#### Opt-outs are excluded automatically

When a contact replies STOP, or sets their marketing preference to stop in WhatsApp, Zaapi records it and **permanently excludes them from every future broadcast** — send-to-everyone, targeted, and CSV alike. You don't have to maintain a suppression list, and you can't accidentally re-add them by re-uploading a CSV. If they later opt back in through WhatsApp, they become eligible again.

You can see opt-out status on a contact, and include it in contact exports.

### The mandatory opt-out footer

Every **Marketing**-category template you create in Zaapi carries a fixed opt-out footer. See [#the-mandatory-opt-out-footer](#the-mandatory-opt-out-footer "mention") for details.

### The 24-hour per-contact cooldown

Zaapi only sends one template per contact per 24 hours. Contacts still inside that window are **silently skipped** — they aren't added as recipients and the broadcast doesn't fail.

This is why your actual recipient count can come in below the estimate, and it's the most common reason a contact "didn't get" a broadcast. If you sent a template yesterday morning, ran a test to your own number an hour ago, or another team member broadcast to an overlapping segment, those contacts are on cooldown.

For scheduled broadcasts the check runs at the **scheduled** time, so contacts whose cooldown will have expired by then are included.

### Best practices

**Segment rather than blast.** A 300-person targeted broadcast with relevant copy outperforms a 3,000-person generic one, and it protects your quality rating. Use labels, last-message date and conversion history to send to people the message actually applies to.

**Warm up gradually.** New numbers start at the lowest tier. Send small, high-quality broadcasts to your most engaged contacts first, and grow from there.

**Always send a test first.** Check the rendered copy, image, buttons and links on a real device. Use your own number — a test consumes that contact's 24-hour cooldown.

**Set real fallback values.** Every dynamic variable needs one. "Hi ," is the fastest way to look like spam.

**Give people something to do.** A clear call to action — a reply prompt, a quick-reply button, a link — is what converts a broadcast into a conversation. Broadcasts with buttons consistently outperform plain text.

**Send at sensible local times.** Broadcasts arrive as personal messages. Use scheduling and the country-code filter to avoid landing at 3am, and target one region per send when your audience spans time zones.

**Watch your rates, not just your sends.** Aim to keep blocks, reports and opt-outs under 1% of recipients. Rising opt-out rates are the earliest warning you're over-messaging — cut frequency before Meta cuts your tier.

**Space out your campaigns.** The 24-hour cooldown is a technical floor, not a recommendation. For most businesses, marketing broadcasts more than once or twice a week to the same segment is too much.

**Review analytics before the next send.** Compare read, replied and converted across campaigns. Export the recipients who read but didn't reply, and follow up individually in the inbox rather than broadcasting again.

**Handle the replies.** A broadcast that works generates a wave of inbound chats. Make sure someone is assigned, quick replies are ready, and AI handling or auto-assignment rules are configured before you send to thousands of people.

### Troubleshooting

| Problem                                       | Cause and fix                                                                                                                                          |
| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| "This would exceed your daily template limit" | Your recipient count is above your tier's daily cap. Reduce the audience or split the broadcast across days.                                           |
| Broadcast status is **Failed**                | Usually your phone number's quality rating dropped to medium/low, or the template's quality score did. Check both, let the rating recover, then retry. |
| Fewer recipients than the estimate            | Contacts on the 24-hour cooldown, opted-out contacts, and US numbers are excluded at send time.                                                        |
| Analytics tab is empty                        | Stats take about a day to appear, then update daily for 30 days.                                                                                       |
| A contact says they didn't receive it         | Check whether they're opted out, on cooldown, or a US number. Look them up in the recipient table on the Analytics tab.                                |
| Template isn't in the picker                  | Only **approved** templates appear. Check its status in Template Manager, and that it belongs to the selected account.                                 |
| CSV upload rejected                           | The first header must be exactly `Phone Number`, and every number needs a country code. Row-level errors tell you which rows to fix.                   |
| Can't click **Send Broadcast**                | Something required is missing — account, template, title, at least one recipient, all variables filled, or a schedule date if you chose Set schedule.  |
