The 24-hour session window▾

The 24-hour session window

When free-form messages are allowed, when you need a template, and how conversations are billed.

WhatsApp only lets you write freely to someone who wrote to you recently. Every inbound message opens — or extends — a 24-hour customer service window. Inside it you can send anything. Outside it, only an approved template.

Timeline
contact messages you
       │
       ▼
  ┌──────────────────────── 24 hours ────────────────────────┐
  │  free-form text, media, interactive — all allowed         │
  └───────────────────────────────────────────────────────────┘
                                                              │
                                                              ▼
                                            template required to re-open

Checking the window

GET /v1/conversations/{wa_id} returns session_expires_at. It is also on every message.received event, which is cheaper than a lookup.

Node
const open = new Date(conversation.session_expires_at) > new Date();

const body = open
  ? { to, type: "text", text: { body: reply } }
  : { to, type: "template", template: { name: "followup", language: "en" } };

How conversations are billed

Meta bills per 24-hour conversation, not per message. The category is set by the first message that opens it, and every message inside that window rides for free.

CategoryOpened byBilled
ServiceThe customer messaging you firstFree
UtilityA UTILITY template — order updates, receiptsYes
AuthenticationAn AUTHENTICATION template — one-time passcodesYes
MarketingA MARKETING template — promotions, re-engagementYes, highest rate

Service conversations are free

Since Meta's 2025 pricing change, conversations opened by the customer carry no charge. Sendport passes Meta's rates through at cost either way — see pricing.