GLOSSARY

What is the 24-Hour Window?

The 24-hour customer service window is the period, counted from the customer's most recent inbound WhatsApp message, during which a business may reply with free-form content instead of an approved template. Once it closes, the only thing the business may send is a message template.

Free forever plan · No credit card required · Cancel anytime

Quick definition

The 24-hour customer service window is the period, counted from the customer's most recent inbound WhatsApp message, during which a business may reply with free-form content instead of an approved template. Once it closes, the only thing the business may send is a message template.

In a single sentence: only the customer can open the door, and it closes 24 hours after they last spoke.

What it means

WhatsApp draws a hard line between two modes of business messaging. Inside the 24-hour customer service window you are having a conversation, and you can send whatever a conversation needs: plain text, a photo of the part that needs replacing, a PDF invoice, a voice note, a set of reply buttons. Outside it you are interrupting someone, and the only thing you may send is a structure Meta approved in advance.

The clock starts on the customer's message, not on yours. Every inbound message resets it to a full 24 hours. Nothing you send extends it. That asymmetry is deliberate: it means the customer, not the business, decides how long the business gets to speak freely.

The window is scoped to the pair of your business phone number and one customer. Two numbers in the same WABA each keep their own window with the same person, which is worth knowing before you assume a customer who wrote to sales can be answered freely from support.

What the window actually permits

"Free-form" is broader than most teams realise. With the window open you can send every message type the API supports:

  • Text, with WhatsApp formatting and link previews.
  • Media: image, video, audio, document, sticker, either by uploading to the media endpoint or by re-using a media ID.
  • Location, contacts, and reactions to a specific message.
  • Interactive messages: reply buttons, list menus, call-to-action URL buttons.
  • A WhatsApp Flow, sent as an interactive message with no template approval required.

That last pair matters for design. Buttons, menus and multi-step forms are ordinary messages inside the window, and only become an approval problem when you need them in a template. A support experience built entirely inside the window can be as rich as a native app, and it never waits on a reviewer.

What the window does not do is exempt you from policy. It is a permission on message format, not a licence to send promotional content to someone who asked a support question. The content still has to be something the customer would reasonably expect.

What happens when it closes

A free-form send after the window closes fails immediately with error 131047. The message is never queued and never delivered later. Two design consequences follow.

First, your sender needs a fallback, not an error handler. When an automation reaches a contact whose window has closed, the right behaviour is to switch to the approved template that carries the same meaning, not to log a failure and move on. Building that fallback once removes an entire class of "the customer never got the reply" incidents.

Second, your inbox needs a countdown. Agents cannot see the window in WhatsApp itself. If your CRM does not show it, agents will write long replies to conversations that closed overnight and lose them to a send error. A visible timer changes the behaviour: agents triage the closing conversations first, which is also the correct commercial priority.

Windows, conversations and cost

The word "window" gets used for two different things, and keeping them apart is worth real money.

The service window is a permission: may I send free-form content to this person right now?

The billing model is a separate question. Meta originally billed a 24-hour "conversation" as the unit, in four categories, and has since moved toward charging per delivered template message while leaving free-form service replies uncharged. Because the model has changed more than once, the durable advice is to reason about permission from the window and about cost from Meta's current rate card, rather than assuming one implies the other. Our page on conversation-based pricing covers the money side in detail.

There is one genuinely special case: a conversation that begins because the customer tapped a click-to-WhatsApp ad or a Facebook Page call-to-action. Meta calls these free entry points, gives them a longer unbilled period, and they behave like an open window from the first message. If you run paid social, this is the cheapest inbound you will ever get on the channel.

Why it matters

Everything expensive about WhatsApp lives outside the window. Inside it, conversation is effectively free and completely flexible. Outside it, every message costs money, needs approval in advance, and risks the block that damages your quality rating.

So the operational goal is not "send more templates", it is "spend more time inside open windows". Practically that means asking a question at the end of a notification so the customer replies, routing conversations to agents fast enough that people answer while they still care, and treating the closing window as a queue priority rather than a piece of trivia.

Real-world examples

  1. An e-commerce support desk. A customer asks about a delayed parcel at 09:00. The team can send photos, PDFs and a refund menu freely until 09:00 the next day. The agent who picks it up at 10:00 the following morning gets a send error and has to use a template instead.
  2. An appointment reminder that pays for itself. The utility template ends with two quick-reply buttons, "Confirm" and "Reschedule". A tap is an inbound message, which opens the window, so the entire rescheduling conversation that follows is free-form.
  3. A B2B sales rep working a lead. The lead answered on Tuesday. On Thursday the rep writes a long, thoughtful follow-up and it bounces. The follow-up now has to fit an approved marketing template, which is a completely different piece of writing and a completely different cost.
  4. A bot handing over to a human. The bot answered inside the window at 23:50. The human replies at 08:00, still inside, and the handover is invisible to the customer. Had the bot answered at 23:50 the previous night, the handover would have needed a template.

Common mistakes

  • Believing a delivered template opens the window. It does not. Only the customer can open it.
  • Retrying a 131047. The error is deterministic. Retrying produces the same failure and wastes the send budget.
  • Measuring from your last message. The clock runs from their last message. A busy outbound thread with no replies has a closed window.
  • Hiding the countdown from agents. The information exists in your data. Not showing it guarantees lost replies.
  • Assuming one window per customer. It is one window per business number and customer pair.
  • Using the open window as a promotion licence. Free-form is a format permission. Sending an unrelated offer to someone with a support question is still what earns you a block.

Related concepts

How Pinlyx handles it

Pinlyx tracks the window per contact and per sending number, shows a live countdown on every WhatsApp conversation, and sorts closing conversations to the top of the queue. When the window is shut, the composer switches itself to the approved template picker instead of letting an agent type a message that cannot be delivered, and automated sequences fall back to the mapped template rather than failing on a 131047. Windows are tracked the same way alongside Telegram, Instagram and email threads in the same shared inbox. See WhatsApp CRM.

Decision table · open or closed

Five situations, and what you are allowed to send.

Only one of these five is opened by something the business did, and it is the ad click.

SituationWindowWhat you may send
Customer sent a message 10 minutes agoOpen, roughly 23 hours 50 minutes leftAny free-form message type: text, image, document, audio, interactive buttons, list, Flow.
Customer sent a message 26 hours ago and nothing sinceClosedApproved templates only. A free-form send fails with error 131047.
You sent a template, the customer has not repliedStill closedMore templates. Delivering a template does not open the free-form window; only the customer can do that.
You sent a template and the customer repliedOpen from the moment their reply arrivedFree-form again, for 24 hours from that reply, and refreshed by each new inbound message.
Customer arrived through a click-to-WhatsApp adOpen, with a longer free-of-charge entry point periodFree-form replies, and the conversation is not billed for the duration Meta defines for that entry point.
What a closed window looks like

Error 131047, and the fallback that should follow it.

The send fails at request time. Nothing is queued.

# Free-form send to a contact whose window closed
POST /v22.0/{phone-number-id}/messages
{ "messaging_product": "whatsapp", "to": "905551112233",
  "type": "text", "text": { "body": "Following up on your question." } }

{
  "error": {
    "message": "(#131047) Re-engagement message",
    "type": "OAuthException",
    "code": 131047,
    "error_data": {
      "details": "Message failed to send because more than 24 hours have
                  passed since the customer last replied to this number."
    }
  }
}

// The handler an outbound worker should have
async function reply(contact, text, fallbackTemplate) {
  if (windowOpen(contact)) return sendFreeForm(contact, text);
  if (!fallbackTemplate) return skip(contact, 'window_closed_no_template');
  return sendTemplate(contact, fallbackTemplate);   // never retry 131047
}

// The window state itself is derived, not fetched:
// lastInboundAt is the timestamp of the newest inbound webhook message.
const windowOpen = (c) => Date.now() - c.lastInboundAt < 24 * 60 * 60 * 1000;
Staying inside the window

Six habits that keep conversations open and cheap.

  • End notification templates with a question or a quick-reply button, so a tap re-opens the window.
  • Show a live countdown on every conversation in the agent inbox.
  • Sort the queue by time remaining, not only by time received.
  • Give every automated free-form step a mapped template fallback.
  • Route click-to-WhatsApp ad conversations to a human quickly, while the free entry point period lasts.
  • Never retry a 131047. Switch to a template or stop.
Watch out for

A delivered template is not a conversation.

Teams see the message appear in the customer's chat, see a delivered status webhook, and conclude the thread is live. It is not. The window opens on inbound messages only. Until the customer types something or taps a button, every further message you send has to be another approved template, at another template price, with another chance of a block. The cheapest engineering you can do on this channel is whatever makes people reply.

24-hour window: FAQ

The rule that shapes every WhatsApp support and sales workflow.

Yes. The window is always measured from the most recent inbound message, so each new customer message restarts the full 24 hours. What it never does is extend past 24 hours from that latest message. A conversation where the customer writes every few hours can stay open for days, and a conversation where they write once goes quiet exactly one day later.
Error code 131047, described by Meta as a re-engagement message error: more than 24 hours have passed since the recipient last replied. It is a send-time failure, not a delivery failure, so you find out immediately. The correct handling is not to retry, it is to fall back to an approved template, which is exactly the decision your sending code should make automatically rather than surfacing an error to an agent.
No, and this is the single most misunderstood rule on the platform. Delivering a template starts a billable conversation, but it does not grant you free-form messaging. Only an inbound message from the customer opens the service window. If you send a template and the recipient never answers, you still cannot follow up with free text, no matter how many templates you have delivered.
They are related but separate ideas, and Meta has changed the relationship over time. The service window is a permission: what you are allowed to send. Billing has moved from a conversation-based model, where a 24-hour conversation was the billed unit, toward per-message pricing for templates with free-form service replies not charged. Always reason about permission and cost as two different questions.
When a customer starts the chat by tapping a click-to-WhatsApp ad or a call-to-action button on a Facebook Page, Meta treats it as a free entry point and gives a longer, unbilled period in which you can reply freely. It is the cheapest and highest-intent traffic on the channel, which is why paid social and WhatsApp support belong on the same team. The exact duration is defined by Meta and has been adjusted, so check the current policy before building billing logic on it.
As a countdown, not as an error. An agent should see how long is left on each open conversation, should see closed conversations visually separated, and should be offered the approved template picker automatically when the window is shut. Teams that only surface the failure after the send end up with agents writing a careful reply, losing it to a 131047, and retyping it into a template form.
Ready to ship

Never lose a reply to a closed window.

Pinlyx shows a live 24-hour countdown on every WhatsApp conversation and falls back to the right approved template automatically.

Free forever plan · GDPR-ready · No credit card required

We value your privacy

We use cookies to improve our site, analyze traffic, and personalize ads. You can accept all, reject non-essential, or customize your choices. Read our Cookie Policy.