---
title: "The 24-hour window: the rule that breaks most first integrations"
summary: "Why your WhatsApp test message worked and your production message did not: how the customer service window works, what it costs inside and outside, and how to design around it."
canonical: https://cpaas.co/en/learn/the-24-hour-window
kind: explainer
depth: foundation
origin: original
published: 2026-10-06T16:26:18.899Z
updated: 2026-10-14T16:26:19.411Z
topics: ["WhatsApp", "Messaging", "Fundamentals"]
language: en
---
# The 24-hour window: the rule that breaks most first integrations

Almost every WhatsApp integration hits the same wall in its first week, and most teams diagnose it wrong.

The symptom: messages sent during development go through perfectly. Messages sent from production, days later, are rejected. Nothing in the code changed.

## What is actually happening

WhatsApp treats a conversation the customer started differently from one the business started.

- When a customer messages you, a **customer service window** opens. For 24 hours from their most recent message you may reply freely: any wording, no approval needed.
- Outside that window, free-form messages are not delayed or queued. They are **refused**. The only thing that goes through is a **template** — a message format approved in advance by Meta, such as "Your order {{1}} has shipped".

In development you were inside the window, because you had just messaged the test number from your own phone. In production you were not.

> **Interactive figure — session-window.** Drag the slider past 24 hours and switch between message types. Only the free-form service reply depends on the window.
> Available at https://cpaas.co/en/learn/the-24-hour-window

The rule is simple. What breaks integrations is that it is a **state that changes over time**, and most sending code treats it as a fixed setting.

```diagram:flow
# One conversation, from the platform's point of view
Closed | No customer message on file, or the last one is more than 24 hours old. Only a template may be sent.
The customer writes | The window opens. Free-form replies are allowed from this moment.
Open | Twenty-four hours from that message. Reply in your own words, no template review needed.
The customer writes again | The window restarts from the newest message, not the first.
It expires | Back to closed. A free-form reply at hour twenty-five is rejected, not delayed.
> The window belongs to the conversation between one customer and one business number — not to your campaign or your agent.
```

## Why the rule exists

The window exists because the alternative — any business with your number messaging you whenever it likes — is what filled SMS inboxes with spam. Template approval is the price of a channel where people still read their messages. Treat it as a feature of the medium and the design decisions get easier.

Most channels have some version of this asymmetry. WhatsApp's is the most visible because its API says no. Email's version is enforced by a spam filter that says nothing at all.

## Inside and outside the window

```diagram:compare
| Inside the window | Outside it
What you may send | Free-form, in your own words, or a template | An approved template only
Review | None for free-form replies | Template approval in advance, per language
Cost | Since 1 October 2026, free-form replies are charged after 1,000 free per business number each month, and utility templates are charged too | Charged per delivered template, by category and country
Who may start | The customer already did | You, with a template that fits an approved category
Typical failure | Rare | A rejected send exactly when you needed it
> The asymmetry is the design. The window rewards replying to people and makes interrupting them deliberate.
```

Since **1 July 2025** Meta charges per delivered message rather than per conversation, with rates set by category (marketing, utility, authentication) and the recipient's country. Free-form replies inside the window, which Meta calls **service messages**, had been free since November 2024. Since **1 October 2026** they are charged again: each business phone number gets 1,000 free service messages a month, unused ones do not roll over, and the rest are charged at a rate that, market by market, matches the utility and authentication rate. Utility templates sent inside an open window, free from 1 July 2025, are charged from the same date. Check [Meta's current pricing page](https://developers.facebook.com/documentation/business-messaging/whatsapp/pricing) for rates, which change. One related rule: when a customer arrives from a click-to-WhatsApp ad or a Facebook Page button, a longer **free entry point window** of 72 hours applies, and messages sent in it carry no delivery charge.

```diagram:bars
# Two windows, two lengths
Customer service window | 24 hours | From the customer's most recent message
Free entry point window | 72 hours | When the customer arrives from a click-to-WhatsApp ad or a Facebook Page button
```

## The details teams get wrong

**The clock restarts on every customer message.** It is measured from the customer's latest inbound message, not from the start of the conversation.

**It is one window per customer and business number.** A customer who writes to sales and is transferred to support has one window, and both teams are spending it.

**Queue time spends the window.** If your target is "reply within four hours", you have plenty of headroom — until a public holiday, when a queue of open conversations silently becomes a queue of template sends.

**Checking at queue time is too early.** A message queued at hour twenty-three and sent at hour twenty-five is rejected. Check at the last possible moment.

**A template is not a reply.** You can answer a support question with a template, but it changes the cost and the tone.

## What to build

1. **Model the conversation.** Store, per customer and business number, the timestamp of the last inbound message. The window state is derived from it, never stored as a flag.
2. **Let the send path decide.** Before sending, read the state and pick free-form or template. Log which one you used, because the billing question will come later.
3. **Have templates approved before you need them.** Approval is not instant. A support team that discovers at 2 a.m. that it needs an unfiled template does not reply until morning.
4. **Show the clock to agents.** An inbox that shows time left on each conversation lets people pick up the right one next.
5. **Batch the expiring.** Conversations about to close that need a follow-up are a scheduled job, not a surprise.

A short, honest pattern helps too: if a follow-up is likely, end with a question. The customer's reply restarts the window — the medium working as designed, not a trick.

```diagram:decision
# What the send path decides, at the last possible moment
Did this customer write to this business number in the last 24 hours? | Reply free-form, in your own words |
Is an approved template for this message on file? | Send the template, and log that you did | Nothing goes out — which is why templates are approved before they are needed
> Check at send time, not queue time: a message queued at hour twenty-three and sent at hour twenty-five is rejected.
```

## The cost model this implies

Replies inside the window are no longer simply free. Since 1 October 2026 each business number gets 1,000 free service messages a month, and every reply after that is charged at the market's service rate. Being responsive still pays, for a different reason: a reply inside the window can be written in your own words and costs at most the service rate, while the same message after the window closes needs an approved template, which costs the same or more and must already exist. A team that answers in ten minutes keeps its conversations inside the window; a team that answers in ten hours pushes more of them into templates, before counting customer satisfaction.

Treat replies as a budget line. Estimate the service messages each number sends in a month, subtract the 1,000 free ones, and price the rest from Meta's rate card. Log the type of every message you send, because the invoice will distinguish them.

## Where to go next

- [WhatsApp template strategy](/en/learn/whatsapp-template-strategy) — the next step in this track.
- [WhatsApp 101](/en/learn/whatsapp-101) — the whole channel, including what Meta charges as of October 2026.
- [Choosing a channel per message](/en/learn/choosing-a-channel-per-message) — when WhatsApp is the right channel at all.
- [The support queue as a system](/en/learn/the-support-queue-as-a-system) — staffing a queue that spends the window.

## Sources

[^1]: [WhatsApp Cloud API documentation](https://developers.facebook.com/docs/whatsapp/cloud-api/) — Meta for Developers
[^2]: [Pricing on the WhatsApp Business Platform](https://developers.facebook.com/documentation/business-messaging/whatsapp/pricing) — Meta for Developers, accessed 2026-10
[^3]: [Upcoming pricing updates for Meta Business Agent, service and utility messages](https://developers.facebook.com/documentation/business-messaging/whatsapp/pricing/non-template-messages) — Meta for Developers, 2026-09-30
[^4]: [Updates to WhatsApp Business Platform pricing](https://developers.facebook.com/docs/whatsapp/pricing/updates-to-pricing/) — Meta for Developers

---

Published by the company behind five products in this category. Those products appear in this site's directory alongside competitors under the same published criteria and are labelled as its own. Editorial content does not recommend them.
