The WhatsApp 24-hour window explained
The WhatsApp customer service window is a 24-hour timer that starts when a customer messages or calls your business number. While it is open you can send any message type. Once it closes you can send only approved templates, and a free-form message is refused with error 131047. From 1 Oct 2026, some messages inside the window are billed again.
What is the customer service window?
Per Meta's send-messages documentation, a 24-hour timer called a customer service window starts when a WhatsApp user messages you or calls you. If the user messages or calls again before the timer expires, it resets to 24 hours.
When the window closes, you can only send pre-approved template messages.
Only the customer can open or extend the window. Your own replies do not reset it. A customer who writes at 10:00 on Monday leaves you until 10:00 on Tuesday to send text, media, interactive messages and the rest. If they write again at 09:00 Tuesday, the clock runs to 09:00 Wednesday.
WhaBuzz does not check the window for you. As the messages guide puts it, Meta decides, and if Meta refuses you see Meta's error unchanged.
What can you send outside the window?
Only a template that Meta has approved. A template is a message with fixed text and numbered variables that you submit for review, and it is the only way to start a conversation or restart one that has gone quiet.
Templates carry a category, and the category sets the price: marketing, utility or authentication. Meta reviews each template, and the decision can take up to 24 hours. Plan for that before a campaign, not on the day. The template guide shows how to create one and how to follow its review through template.status events. Meta can also re-categorise a template later, which changes what each send costs, so watch template.category events too.
A template send is a normal POST /v1/messages with "type": "template". The full example is in the getting started guide. Inside an open window you can still use a template, for instance to send a utility notification, but you pay for it as a template.
How does the free entry point window work?
A click-to-WhatsApp ad opens a longer, free window. According to Meta's pricing page, this applies when a user messages you through an ad that clicks to WhatsApp, on a device running the Android or iOS app. A customer service window opens. If you respond inside it with a marketing, utility, authentication or service message, that message is not charged and opens a Free Entry Point (FEP) window.
The FEP window may remain open for up to 7 days. While it is open, per Meta, marketing, utility, authentication and service messages are not charged. Two limits apply. Desktop and web apps are not supported for the ad click, and Meta Business Agent messages are still charged inside an FEP window. Messages sent in the window also do not count toward Meta's utility and authentication volume tiers.
This is the one case where templates are cheap to send for a week. If you run click-to-WhatsApp ads, reply to the first message quickly: the free week only starts if you respond within the 24-hour window.
What error do you get outside the window?
Meta's error 131047, the re-engagement error. Meta's error-code page describes it as: more than 24 hours have passed since the recipient last replied to the sender number, and you should send the recipient a template message instead. Meta's error codes page was last updated on 18 Jun 2026.
WhaBuzz returns Meta's HTTP status and Meta's error object under error, unchanged, with "source": "meta". The errors guide documents this shape, and lists 131047 among the common codes. Branch on error.code, never on the message text. Do not retry the same free-form body: it will fail again until the customer writes.
Avoid the error rather than catching it. Store the time of the latest inbound message per customer, taken from the message.inbound event, and compare it with the current time before each send:
const WINDOW_MS = 24 * 60 * 60 * 1000;
function windowOpen(lastInboundAt) {
return lastInboundAt && Date.now() - Date.parse(lastInboundAt) < WINDOW_MS;
}
async function send(customer, text) {
const body = windowOpen(customer.lastInboundAt)
? { type: 'text', text: { body: text } }
: { type: 'template', template: { name: 'renewal_reminder', language: { code: 'en' },
components: [{ type: 'body', parameters: [{ type: 'text', text: customer.name }, { type: 'text', text: '31 Oct' }] }] } };
const res = await fetch('https://api.whabuzz.com/v1/messages', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.WHABUZZ_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ from: '1013622581841046', messaging_product: 'whatsapp', to: customer.waId, ...body }),
});
const out = await res.json();
if (!res.ok && out.error?.code === 131047) {
// Our clock disagreed with Meta's: fall back to the template.
}
return out;
}jsThe lastInboundAt value comes from the created_at field of each message.inbound event. Treat your clock as a guess and keep the 131047 branch.
What changed in the window on 1 Oct 2026?
Two kinds of message inside the window became billable. According to Meta's pricing page, Meta resumed charging per message for service messages, which had been free since 1 Nov 2024. It also resumed charging for utility messages sent in response to users in an open window, which had been free since 1 Jul 2025.
A service message is any non-template message not powered by the Meta Business Agent Platform, including replies from people or a third-party AI. Meta gives each business phone number 1,000 free service messages a month, which reset monthly and do not roll over. From the 1,001st, Meta's India rate is ₹0.115 per message, per its rate card effective 1 Oct 2026.
Meta also states that a business with no payment method on its Messaging account gets service messages delivered within the free tier but not after it. Add a payment method in your Meta billing settings. The webhook's pricing object shows what Meta charged: a billable service message reports "billable": true and "type": "regular", while a free-tier one reports "billable": false and "type": "free_customer_service". The full price list is in the India pricing post.
Frequently asked questions
How long is the WhatsApp 24-hour window?
24 hours from the customer's most recent message or call. A new message from the customer resets the timer to 24 hours.
Does my reply extend the window?
No. Only a new message or call from the customer resets it.
What does error 131047 mean?
More than 24 hours have passed since the recipient last replied to your number. Send an approved template instead, as Meta's error-code documentation advises.
Are replies inside the window free?
Not any longer. From 1 Oct 2026 Meta charges for service messages after the first 1,000 free per number each month, and for utility messages sent in an open window. Messages inside a free entry point window are not charged.
Related reading
- Sending messages and Templates cover the request bodies.
- Errors explains how Meta's error objects reach you.
- WhatsApp Business API pricing in India lists Meta's rates.
- Webhook reliability covers capturing
message.inboundevents without loss. - All guides by task and the WhatsApp API overview.
- Meta's sources: Pricing, Send messages and Error codes, checked 16 Oct 2026.