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-openChecking 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.
| Category | Opened by | Billed |
|---|---|---|
| Service | The customer messaging you first | Free |
| Utility | A UTILITY template — order updates, receipts | Yes |
| Authentication | An AUTHENTICATION template — one-time passcodes | Yes |
| Marketing | A MARKETING template — promotions, re-engagement | Yes, 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.