These are business‑initiated conversations. They open when a pre‑approved template of that category is sent and delivered to the customer and there isn’t already an active window of the same category. Each has its own 24‑hour window and billing rules. Sending another template in the same category within 24 hours reuses the current window (no new charge).
A Marketing/Utility/Authentication conversation opens when all are true:
If delivery fails, no conversation opens. If the same category is already open, the send reuses that window (no new charge).
Conversation Type | Initiated By | Message Format | New Charge Triggered When… | Window Length | Billed? |
Marketing | Business | Template (promo/upsell) | No other Marketing window is open | 24h from delivery | ✅ Yes |
Utility | Business | Template (transactional/update) | No other Utility window is open | 24h from delivery | ✅ Yes |
Authentication | Business | Template (OTP/login) | No other Authentication window is open | 24h from delivery | ✅ Yes |
Service conversations are customer‑initiated and separate from these categories. Non‑template (free‑form) messages require the Service window to be open (≤24h since last customer message).
marketing.expires_at, utility.expires_at, authentication.expires_at).Field names vary by provider. Use these shapes for alerts/dashboards.
1) Template opens a Marketing conversation (no window open){ "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) Template reuses same category (within 24h, 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) Guardrail: delivery failed → no conversation{ "event": "template_delivery", "status": "FAILED", "reason": "USER_UNREACHABLE", "conversation": { "opened": false }, "pricing": { "billable": false }}
4) Cloud API — send a template (copy/paste){ "messaging_product": "whatsapp", "to": "+15551234567", "type": "template", "template": { "name": "order_update", "language": { "code": "en" }, "components": [ { "type": "body", "parameters": [ { "type": "text", "text": "Your order has shipped." } ] } ] }}
A) Same category within 24h
Time | Action | Result |
00:00 | Send Marketing template | Marketing window opens → ✅ Charged |
06:00 | Send another Marketing template | Same Marketing window → ❌ No new charge |
B) Cross‑category in parallel
Time | Action | Open conversations | Billed? |
00:00 | Send Utility template | Utility | ✅ Utility |
10:00 | Send Marketing template | Utility + Marketing | ✅ Marketing |
Diagram — Business‑initiated windows
Caption: Each category has its own 24h window; same‑category sends within 24h reuse the window.
*.expires_at.If behavior differs from this FAQ or billing looks 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.