The WhatsApp Business Platform: numbers, templates, windows and limits
The mechanics every implementation has to obey. Verification, the customer service window, template approval, messaging limits and where they are set.
On this page
- What we'll cover
- Key takeaways
- The account structure
- The number, and its one-way doors
- The customer service window
- Templates, and what they are for
- Building it with CodeWords
- Categories, which decide cost and scrutiny
- Messaging limits and how they scale
- Quality, and what damages it
- Webhooks and delivery
- Where implementations go wrong
- Making it survive
- Limits worth knowing about
- What to set up first
- Frequently asked questions
- Related reading
The WhatsApp Business Platform enforces five sets of rules on every implementation: a three-layer account structure, a one-way number registration, a 24-hour customer service window, pre-approved templates and portfolio-level messaging limits. No tool removes these rules, and most implementations that behave strangely are running into one of them.
This reference covers how the account structure works, what the customer service window governs, how templates are approved and categorised, and how messaging limits are calculated and where they are set. Meta changes details over time, so check Meta's documentation before relying on an exact figure.
What we'll cover
- The account structure
- The number, and its one-way doors
- The customer service window
- Templates, and what they are for
- Building it with CodeWords
- Categories, which decide cost and scrutiny
- Messaging limits and how they scale
- Quality, and what damages it
- Webhooks and delivery
- Where implementations go wrong
- Making it survive
- Limits worth knowing about
- What to set up first
- Frequently asked questions
Key takeaways
- The business portfolio, not the phone number, holds billing, permissions and messaging limits, so it should belong to your business.
- A customer message opens a 24-hour window for free-form replies, and every message after the window needs an approved template.
- Submit templates early, because approval takes time and urgency does not shorten it.
- Messaging limits start at 250 unique customers per moving 24 hours and are shared across every number in the portfolio.
- Webhook events can arrive twice, so deduplicate them before creating records or taking payments.
The account structure
The WhatsApp account structure has three layers, and confusing them causes most early problems.
The business portfolio is the top level. It holds billing, permissions, and increasingly the things that used to be per-number. It is the layer that should belong to your business rather than to an individual or an agency.
The WhatsApp Business Account sits under the portfolio and holds templates and configuration.
The business phone number is what customers message.
Two consequences follow. Verification status attaches to the portfolio and affects what the accounts under it can do, including how many templates they may hold. And several things that people assume are per-number are actually pooled at portfolio level, which matters if you run more than one.
The number, and its one-way doors
Registering a WhatsApp Business Platform number involves decisions that are hard to reverse.
Registration requires a number you can answer, since verification arrives as a code. The consumer app and the platform are mutually exclusive on the same number: whichever one holds it has to release it, and nothing crosses over when it does.
Landline numbers qualify, because voice verification is supported. Display names are reviewed separately from the number itself.
Use a number with no history. Migrating a number that hundreds of customers already have saved costs you their existing thread and gains nothing, so take a new number and leave the old one answering alongside it.
The customer service window
The customer service window is the 24 hours of free-form replying that an inbound customer message opens. After the window closes, every outbound message must be a template Meta has already approved. This mechanic shapes every design, and it has three consequences.
Reactive support is straightforward. Inside the window there is effectively no constraint on what you write.
Proactive contact is a planning problem. Urgency does not shorten the approval queue, so build the template catalogue ahead of demand.
Window state changes while you work. Whether a recipient is inside their window at the instant you send is a live value. Code that resolves it once at composition time will send the wrong thing or nothing at all, so resolve it at send time.
Templates, and what they are for
A template is a pre-approved message structure with placeholders, submitted to Meta and reviewed before use. Templates cover any message sent outside the customer service window.
Approval takes time and is sometimes refused, so treat templates as a lead-time item. Submit every template you might need early, including the ones you hope not to use.
Two practical points apply. Placeholders are for variable details, not for passing arbitrary content past review. And translated text differs in length, so a template that fits the limits in one language may not fit in another. Check this before submission, not after rejection.
A verified portfolio with an approved display name can hold more templates than an unverified one, so verify early if you expect to need many.
Building it with CodeWords
CodeWords connects to 3,000+ integrations (CodeWords, 2026), and each connection is made once and reused.
- Open CodeWords and start a new automation.
- Describe what should happen in plain language to Cody, the automation builder: which messages go out when, what the templates say, and what happens to replies.
- Authorize the connections to your existing systems and your WhatsApp Business Platform account.
- Describe the exceptions: a closed window, a customer who has opted out, a template rejection, a message that fails to deliver.
- Watch the quality rating during the first fortnight, since the early sending pattern is what sets your trajectory.
You describe the outcome; Cody builds it, connects it, and deploys it. The Free plan ($0) covers light use, with Pro at $39 per month and Business at $100 per month as usage grows (CodeWords pricing page, 2026); details are on the pricing page.
Categories, which decide cost and scrutiny
WhatsApp templates fall into three categories, and the category affects both price and how closely Meta reviews the content.
Utility relates to an existing transaction or service: a confirmation, an update, a reminder about something the customer has with you.
Marketing promotes something, including offers and re-engagement.
Authentication carries one-time codes.
Meta corrects a template filed under the wrong category, and a pattern of miscategorisation counts against the account. Use this test: an offer you have to argue is really a service notification is an offer, so file it as marketing.
Meta moved billing to a per-message basis in mid-2025, replacing the older conversation unit. Rates depend on the category and the recipient's market, and the volume thresholds that reduce them pool across the whole portfolio (Meta pricing documentation, 2025, pricing documentation).
Messaging limits and how they scale
A messaging limit is the number of unique customer phone numbers you can deliver to, outside a customer service window, within a moving 24-hour period. Meta calculates and sets the limit at the business portfolio level, and every number in that portfolio shares it (Meta messaging limits documentation, 2026, messaging limits).
New portfolios start at 250 unique customers per moving 24 hours. Completing a scaling path raises the limit, after which it increases automatically as you meet criteria that combine sustained volume with template quality. One route is delivering a set number of template messages to unique recipients over a moving 30-day period with good quality.
Two things follow. Limits apply to proactive contact and not to replies within the window, so a support-heavy bot faces few constraints. And because limits are shared across the portfolio, a campaign from one number affects what another number can do, which surprises businesses running separate brands under one portfolio.
Quality, and what damages it
Meta scores your templates and numbers on how recipients react, and a poor rating restricts sending and can pause templates.
Five things damage the rating: messaging people who never opted in, sending high volume from a new number too quickly, ignoring people who ask you to stop, sending marketing dressed as utility, and sending content that is permitted but unwanted.
Four habits protect it: start slowly, send things people expect, honour opt-outs immediately and across every automation, and watch the rating weekly so a restriction does not surprise you mid-campaign.
Webhooks and delivery
Webhooks deliver WhatsApp events to your system, and three properties need design attention.
Delivery is at-least-once. The same event can arrive twice, so anything that creates a record, takes a payment or books a slot needs deduplication. Missing deduplication is a common production bug in this area.
Order is not guaranteed. Two messages sent close together may arrive in either order.
Your endpoint must be available. Messages arrive when customers send them, and an endpoint that is down loses them or triggers retries you have to handle.
Handle status callbacks correctly too. Sent, delivered and read are distinct statuses, and treating sent as delivered produces statements to customers that are not true.
Where implementations go wrong
Five problems recur in WhatsApp implementations, listed roughly in the order they appear.
The portfolio is in the wrong name. Set up under a personal account or an agency's, discovered when somebody leaves. Trivial to fix at the start and a negotiation later.
Templates submitted too late. The message you urgently need is the one awaiting review, and urgency does not shorten review.
Window state assumed rather than checked. A reply composed against a window that has closed either fails or sends something other than what was written.
Duplicate events acted on. At-least-once delivery produces double bookings and double charges, and teams rarely trace the cause back to the webhook.
Sending too much too early from a new number. Limits and quality both start conservative, and a large first campaign is the surest way to restrict yourself in the first fortnight.
All five problems are avoidable by someone who knows the rules exist, so read the mechanics before designing, not after something misbehaves.
Making it survive
Keep the portfolio in the business's name, with at least two administrators.
Verify early if you will need many templates.
Check window state at send, not at compose.
Deduplicate incoming events, always.
Review pricing and limits regularly, since Meta changes both over time.
Limits worth knowing about
No group messaging. Every message goes to one recipient.
Unofficial tools breach the terms and risk the number.
Templates constrain proactive contact, and approval takes time.
Limits are shared across the portfolio, not per number.
The rules change. Billing moved to per-message charging in mid-2025, so check Meta's documentation before relying on an exact figure.
What to set up first
Set up the portfolio first: in the business's name, with two administrators, verified, and with a fresh number. Do this before templates, webhooks or any automation, because it is the only part that is painful to change afterwards.
Then build two habits. Submit every template you might need early, because approval takes time and the message you need urgently is the one you have not submitted. And deduplicate incoming events from the first line of code, since at-least-once delivery produces double bookings that nobody traces back to the webhook.
Frequently asked questions
What are the three layers of the account structure?
The account structure has three layers: the business portfolio holding billing and permissions, the WhatsApp Business Account holding templates and configuration, and the business phone number customers message. The portfolio should belong to your business, not to an individual or an agency.
What is the customer service window?
The customer service window is the 24 hours after a customer messages you, during which you can reply freely. Outside the window, contact must use an approved template. Check the window state when you send, not when you compose the message.
Can a number already on WhatsApp be used?
Yes, but you must first remove the number from the consumer app, and that account's history does not transfer. Landline numbers also work, since verification can be completed by voice call. A number with no history is the better choice.
What are message templates for?
Message templates cover any message sent outside the customer service window. They are pre-approved structures with placeholders. Approval takes time, and a verified portfolio with an approved display name can hold more templates than an unverified one.
What are the template categories?
There are three template categories: utility for messages about an existing transaction or service, marketing for anything promotional, and authentication for one-time codes. Category affects price and review, and Meta corrects miscategorised templates.
What is a messaging limit?
A messaging limit is the number of unique customer phone numbers you can deliver to outside a service window in a moving 24-hour period. Meta sets the limit at portfolio level, and every number in the portfolio shares it.
How do limits increase?
Limits increase through a scaling path. New portfolios start at 250, and the limit rises once you complete a scaling path, then automatically as you meet criteria that combine sustained volume with template quality.
What damages the quality rating?
Four things damage the quality rating: messaging people who never opted in, sending high volume too soon from a new number, ignoring opt-outs, and sending marketing as utility. A poor rating restricts sending and can pause templates.
What do I need to know about webhooks?
Three webhook properties matter: delivery is at-least-once so events can repeat and need deduplication, order is not guaranteed, and your endpoint must stay available. Sent, delivered and read are distinct statuses, so do not treat sent as delivered.
How often do the rules change?
The rules change often enough that you should review them regularly. Meta moved billing to per-message charging in mid-2025, so check Meta's documentation before relying on an exact price or limit.