Articles on: MyOperator

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


  • 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


Info : Same category within 24h → window reused (no new charge). Different category → separate paid window.



When a window opens (rules)


A paid conversation window (Marketing/Utility/Auth) opens when all are true:


  1. You send a template categorised as Marketing/Utility/Auth.
  2. The template is delivered to the customer.
  3. 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)


  1. Open Inbox → select the conversation.
  2. Find Customer Service Window: Active/Closed (24h timer).
  3. If you ran an ad/Page CTA, look for Free Entry Point — Active (72h countdown).
  4. Check header category chips (Marketing/Utility/Auth) with their own timers.


B) Your provider’s dashboard (typical)


  1. Open ticket details / attributes.
  2. Locate service_window.status/expires_at, free_entry.active/expires_at, and per‑category *.expires_at.
  3. Check Billing/Usage for separate line items per category or $0 for FEP.



API / logs (copy‑paste samples)


Info : 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."
}
]
}
]
}
}



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.






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