You’re charged per 24‑hour conversation window, not per message. Windows open either when a customer messages you (Service) or when your business delivers an approved template (Marketing, Utility, Authentication). A special Free‑Entry Point (FEP) window lasts 72 hours and is billing‑free when a user comes via Click‑to‑WhatsApp Ad or Facebook Page CTA and you reply within 24 hours.
Category | Initiated by | Opens when… | Window length | Billed? |
Service | Customer | Inbound customer message delivered | 24h from last customer message | ❌ No (session) |
Marketing | Business | Template delivered (no open Marketing window) | 24h from delivery | ✅ Yes |
Utility | Business | Template delivered (no open Utility window) | 24h from delivery | ✅ Yes |
Authentication | Business | Template delivered (no open Auth window) | 24h from delivery | ✅ Yes |
Free‑Entry (special billing) | Customer + your reply ≤24h | CTWA/Page CTA + your reply ≤24h | 72h from qualifying reply | ❌ Billing‑free |
Same category within 24h → window reused (no new charge). Different category → separate paid window.
A paid conversation window (Marketing/Utility/Auth) opens when all are true:
A Service conversation opens (or resets) when the customer messages you.
Diagram — Conversation windows
Caption: Each category has its own 24h window; same‑category sends ≤24h reuse the window.
Timing vs customer’s last message | FEP active? | Can send non‑template? | Template allowed? | Charged? | Notes |
≤24h | Irrelevant | ✅ Yes | ✅ Yes | Service free; biz‑initiated billed | Non‑template permitted while Service is open |
>24h & <72h | Yes (FEP) | ❌ No (blocked) | ✅ Yes | Free (inside FEP) | Use template; billing waived under FEP |
>24h & <72h | No | ❌ No (blocked) | ✅ Yes | Paid (by template category) | FEP inactive; category billing applies |
≥72h | N/A | ❌ No (blocked) | ✅ Yes | Paid (by template category) | Send template to re‑engage |
*.expires_at.Names vary by provider. Use these shapes for monitoring/alerts.
1) Template opens a Marketing conversation (paid){ "event": "template_delivered", "template": { "name": "promo_launch", "category": "MARKETING" }, "conversation": { "category": "MARKETING", "opened": true, "expires_at": "2025-12-01T14:00:00Z" }, "pricing": { "billable": true }}
2) Same category within 24h (reused, no new charge){ "event": "template_delivered", "template": { "name": "order_update", "category": "UTILITY" }, "conversation": { "category": "UTILITY", "window": "REUSED", "new_charge": false, "expires_at": "2025-12-01T12:00:00Z" }}
3) Service open & FEP active (billing‑free){ "event": "message", "service_window": { "open": true, "seconds_remaining": 18000 }, "free_entry": { "active": true, "expires_at": "2025-12-31T23:59:59Z" }, "conversation": { "category": "SERVICE" }, "pricing": { "billable": false }}
4) >24h & <72h (Service closed, FEP active → template free){ "event": "message_send_attempt", "type": "non_template", "service_window": { "open": false }, "error": { "code": "NON_TEMPLATE_NOT_ALLOWED" }, "free_entry": { "active": true }}
5) Cloud API — send a template (copy/paste){ "messaging_product": "whatsapp", "to": "+15551234567", "type": "template", "template": { "name": "follow_up_request", "language": { "code": "en" }, "components": [ { "type": "body", "parameters": [ { "type": "text", "text": "Hi Alex, just checking in." } ] } ] }}
If behavior differs from this FAQ or sends/billing look incorrect, open a Support ticket from your admin portal (attach message IDs, timestamps, pricing logs, and screenshots), or contact your Customer Success Manager. Typical response time: 1 business day.