The 24 hour window, on WhatsApp, Facebook and Instagram

Every Meta messaging channel closes a conversation 24 hours after the customer's last message. Inside the window you can reply freely. Outside it, Facebook and Instagram refuse the send outright, and WhatsApp's Cloud API will only carry a template you had approved in advance.

It is the single most important constraint in business messaging and the one most likely to be discovered in production, because everything works perfectly while you are testing with a colleague who replied ten minutes ago.

What the refusal looks like

On Facebook and Instagram, a send outside the window comes back from the Graph API as:

{
  "error": {
    "message": "This message is sent outside of allowed window.",
    "type": "OAuthException",
    "code": 10,
    "error_subcode": 2018278
  }
}

That subcode is the one to match on. code: 10 alone covers several permission problems, so software that branches on the code without the subcode will tell somebody to reconnect their Page when the actual problem is that the customer wrote yesterday.

The boundary is the customer's message, not yours

This trips people up. The clock starts at the last inbound message and your replies do not extend it. A conversation where you sent four messages and the customer sent one, twenty three hours ago, has an hour left.

Which means a conversation the business started and the customer never answered has no window at all - there has never been an inbound message to open one. That is a different state from a closed window and worth showing differently, because the fix is different: one waits for a reply, the other cannot be fixed by waiting.

Message tags, and why they are not a workaround

Meta provides tags that permit a message outside the window. They exist for narrow, specific cases - a confirmed event update, a post purchase update, an account issue - and the human agent tag exists for a person responding to an inquiry, extending the window to seven days where the app has that permission.

Using a tag for ordinary marketing is not a clever trick. It is the thing that costs a Page its messaging permission, and the loss is not limited to the tagged messages - it is the whole channel. If a tag looks like it solves your problem, check whether your problem is actually that you are trying to broadcast.

Njiwa uses one of them and only one. A reply somebody typed in the shared inbox goes out under the human agent tag when the standard window has closed, which is what that feature is for: the question asked on Saturday and answered on Monday morning. An auto-reply, a campaign or an API send never carries it, because none of those is a human agent - and a tag on one of them is exactly the misuse the paragraph above is about. The ordinary send is tried first every time, so the tag is only ever used where Meta has just refused without it.

Designing for it instead of around it

  1. Show the window where somebody types. A composer that accepts a reply and then fails is worse than one that says the window closed before a word is typed. Njiwa puts the remaining time on the conversation and disables the composer at zero - counting down to whichever window the channel actually has, which is seven days rather than one on a Page approved for the human agent tag.
  2. Make the countdown urgent near the end. Six hours left is information; a red six hours left is a prompt to deal with it now.
  3. Answer inside the window and the problem disappears. Almost every closed window is a conversation nobody got to. That is a staffing and triage problem wearing an API error as a costume - which is why an inbox that sorts by unanswered is worth more than any amount of cleverness at the boundary.
  4. Use templates for the genuinely scheduled things. Order shipped, appointment tomorrow, payment due. Register them, get them approved, and stop trying to send them as free text.

A table of what closes when

Messaging windows by channel
ChannelWindowOutside it
WhatsApp, Cloud API24 hours from the customer's messageApproved template only, billed as a new conversation
WhatsApp, Web protocolNo API level windowAllowed by the protocol; the risk is blocks and bans
Facebook Messenger24 hours from the customer's messageRefused: code 10, subcode 2018278. Tags only - and a person's own reply can carry the human agent tag for 7 days
Instagram24 hours, via the linked PageRefused, identically

The uncomfortable summary: on three of these four rows, the answer to "how do I message someone who has not written to me" is "you largely do not". Business messaging is a reply channel that occasionally schedules something, and the products that treat it as a broadcast channel are the ones whose customers lose numbers.

Questions people actually ask

Does Facebook Messenger have a 24 hour limit?

Yes. Meta's standard messaging window closes 24 hours after the person's last message to your Page, and a send after that is refused with error code 10, subcode 2018278. The window can be extended only with a message tag, and each tag has a narrow approved use. One of them is not narrow at all if you run a shared inbox: the human agent tag gives a <em>person</em> answering a customer seven days rather than twenty four hours, on an app approved for that feature.

What happens on Instagram?

The same 24 hour rule, through the same Page endpoint. An Instagram account reached in a business inbox is messaged at its linked Page, so the window behaves identically.

Does WhatsApp have the same window?

The Cloud API does: outside 24 hours you need an approved template. The Web protocol has no API level window, but messaging people outside a conversation they started is the behaviour that gets numbers blocked, so the practical limit is similar even though the mechanism is not.

Njiwa

One inbox for WhatsApp, Facebook and Instagram, and an API that sends over either WhatsApp rail. 7 days free, no card.

Start a trial See pricing