Skip to content

Documentation

Build with Engage

Connect customer data, business events, and communication channels to build automated journeys with workflows and AI.

The 24-hour window

WhatsApp's rule, not ours — and the thing that surprises every integration built on the assumption that you can message anyone at any time.

A business may send a customer whatever it likes for twenty-four hours after that customer's last message. Outside that window it may send only a template approved by Meta in advance.

Every reply resets the clock. A customer who writes at 09:00 and again at 18:00 can be messaged freely until 18:00 the following day.

Why it decides how your workflows behave

The most valuable follow-up is the one that goes out a day after somebody asked a price and went quiet. That is, by definition, outside the window — so it must be a template, and the template must have been written and approved before you needed it.

This shapes the work in three ways:

  • Templates are submitted to Meta and reviewed, which takes anywhere from minutes to a day. Anything a workflow sends after a delay needs one approved before the workflow is useful.
  • Templates have fixed text with variable slots. You fill in the blanks; you do not write the sentence at send time.
  • Meta charges per conversation, and a template that reopens a closed window starts one. A duplicate send is a duplicate charge as well as an irritated customer.

Engage API tracks the window as real state

It is not recalculated by guesswork at send time. Each conversation carries when the customer last wrote, so the dashboard can show whether a free reply is possible before anyone types one, and a workflow knows whether it needs a template before it tries.

What your integration sees

Nothing, most of the time — which is the point. Your code records events; workflows decide whether a moment needs a template, and the send layer refuses anything that would breach the rule.

A refusal is an outcome rather than an error. A workflow that tries to message somebody outside the window without a template does not fail — it records that it was refused and why, and that appears on the workflow run in the dashboard. The same is true for a customer who has unsubscribed or never opted in.

"refused": "This conversation is outside its 24-hour reply window.
             Send an approved template instead."

The practical consequence

When you design a workflow, ask how long after the trigger the message goes out. Under twenty-four hours from the customer's last message, ordinary text works. Longer — and a follow-up is almost always longer — you need an approved template, so write it first.

Getting this backwards is the usual first disappointment: a workflow that tests perfectly against a customer who just messaged, and then silently refuses in production against customers who have not messaged in days.

Next

Workflows →

Wait, check and send - automation that respects the window for you.