What is conversation-based pricing on WhatsApp Business API?
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.
Quick navigation
- Core model at a glance
- Conversation categories & billing (matrix)
- When a window opens (rules)
- What you can send & what it costs (scenarios)
- How to verify in your UI
- API / logs (copy‑paste samples)
- Edge cases & limitations
- Expected outcomes
- Related FAQs
- Support & escalation
Core model at a glance
- One price per 24h window → unlimited messages inside that window.
- Windows are per category (Marketing, Utility, Authentication) and a Service session (customer‑initiated).
- Free‑Entry Point (FEP) is a 72h billing‑free window after CTWA/Page CTA if you reply within 24h. The 24h Service window still controls non‑template permissions.
Conversation categories & billing (matrix)
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 |
When a window opens (rules)
A paid conversation window (Marketing/Utility/Auth) opens when all are true:
- You send a template categorised as Marketing/Utility/Auth.
- The template is delivered to the customer.
- There is no active window of the same category for that customer.
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.
What you can send & what it costs (scenarios)
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 |
How to verify in your UI
A) Meta WhatsApp Inbox (example UI)
- Open Inbox → select the conversation.
- Find Customer Service Window: Active/Closed (24h timer).
- If you ran an ad/Page CTA, look for Free Entry Point — Active (72h countdown).
- Check header category chips (Marketing/Utility/Auth) with their own timers.
B) Your provider’s dashboard (typical)
- Open ticket details / attributes.
- Locate service_window.status/expires_at, free_entry.active/expires_at, and per‑category *.expires_at.
- Check Billing/Usage for separate line items per category or $0 for FEP.
API / logs (copy‑paste samples)
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."
}
]
}
]
}
}
Edge cases & limitations
- Opt‑out/Blocked: Respect user preferences; sends may be blocked regardless of windows.
- Delivery failure: If inbound or template fails delivery, the relevant conversation/state does not open/update.
- Multiple categories: Windows can overlap; same‑category sends ≤24h reuse the window (no new charge).
- Provider variance: Some UIs hide category chips during FEP; others show them as inactive.
- Time zones: Timers rely on message timestamps, not agent local time.
Expected outcomes
- ≤24h: Non‑template allowed; templates billed per category (unless FEP active → free).
- >24h & <72h (FEP active): Non‑template blocked; templates send free.
- ≥72h: Templates open a paid category window; non‑template allowed only after a customer replies.
Related FAQs
- What opens a Service conversation?
- How long does a WhatsApp conversation last?
- How are Marketing, Utility, and Authentication conversations opened?
- How does a Free‑Entry conversation affect other open conversations?
Support & escalation
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.
Updated on: 21/09/2025