How long does a conversation last on WhatsApp Business API?
Most WhatsApp Business conversations last 24 hours. A special Free‑Entry Point (FEP) conversation lasts 72 hours (billing‑free) when a customer comes via a Click‑to‑WhatsApp Ad or Facebook Page CTA and you reply within 24 hours. The 24‑hour customer service window still governs whether non‑template messages are allowed.
Quick navigation
- Two timers to track: 24h vs 72h
- Default durations & billing (matrix)
- Scenarios table: what you can send & what it costs
- How to verify in your UI
- API / logs (copy‑paste samples)
- Edge cases & limitations
- Expected outcomes
- Related FAQs
- Support & escalation
Two timers to track: 24h vs 72h
- 24‑hour Service window (message‑type rule): A rolling 24 hours from the customer’s most recent message. Controls whether non‑template (free‑form) messages are allowed.
- 24‑hour business‑initiated category windows (billing rule): Start at template delivery for Marketing/Utility/Authentication; each category has its own 24h window and billing.
- 72‑hour Free‑Entry Point (FEP) window (billing rule): Starts when a customer messages via CTWA/Page CTA and you reply within 24h. Billing is free for 72 hours. The 24h Service rule still applies to non‑template sends.
Default durations & billing (matrix)
Conversation type | Who opens it | What opens it | Window length | Billed? |
|---|---|---|---|---|
Service (customer‑initiated) | Customer | Customer inbound delivered | 24h from last customer message | ❌ No (session) |
Marketing (business‑initiated) | Business | Template delivered (no open Marketing window) | 24h from delivery | ✅ Yes |
Utility (business‑initiated) | Business | Template delivered (no open Utility window) | 24h from delivery | ✅ Yes |
Authentication (business‑initiated) | Business | Template delivered (no open Auth window) | 24h from delivery | ✅ Yes |
Free‑Entry Point (FEP) (special billing) | Customer + Business reply ≤24h | CTWA/Page CTA + your reply ≤24h | 72h from your qualifying reply | ❌ Free billing |
Scenarios table: what you can send & what it costs
Timing vs customer’s last message | FEP active? | Can send non‑template? | Template allowed? | Charged? | Notes |
|---|---|---|---|---|---|
≤24h | Irrelevant | ✅ Yes | ✅ Yes | Depends: Service = free; biz‑initiated billed | Both non‑template & templates allowed |
> 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 not active; 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
- Open Inbox → select the conversation.
- Find Customer Service Window: Active/Closed with a hh:mm countdown.
- If you ran an ad or Page CTA, look for Free Entry Point — Active with a 2d:hh countdown (72h total).
B) Your provider’s dashboard (typical)
- Open the ticket/conversation details.
- Check service_window.status/expires_at and any free_entry flag with its expires_at.
- If you attempt non‑template while Service is closed, the composer shows a warning; use a template.
UI Screenshot — Non‑template blocked outside 24h
Caption: After 24h, free‑form is blocked; send a template. If FEP is active, the template is free to send.
API / logs (copy‑paste samples)
1) Service open & FEP active
{
"event": "message",
"customer": { "wa_id": "+15551234567" },
"service_window": { "open": true, "seconds_remaining": 21600 },
"free_entry": { "active": true, "expires_at": "2025-12-31T23:59:59Z" },
"conversation": { "category": "SERVICE" },
"pricing": { "billable": false }
}
2) >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 }
}
3) Template send during FEP (free billing)
{
"event": "template_delivered",
"template": { "name": "follow_up_request", "category": "UTILITY" },
"free_entry": { "active": true },
"pricing": { "billable": false }
}
4) ≥72h (FEP expired) → template opens paid category window
{
"event": "template_delivered",
"template": { "name": "promo_launch", "category": "MARKETING" },
"free_entry": { "active": false },
"conversation": {
"category": "MARKETING",
"opened": true,
"expires_at": "2025-12-01T14:00:00Z"
},
"pricing": { "billable": 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.
- Provider variance: Some UIs hide category chips during FEP; others show them as inactive.
- Multiple categories: Category windows can overlap; re‑sending within the same category ≤24h reuses its window (no new charge).
- Time zones: Timers rely on message timestamps, not agent local time.
Expected outcomes
- ≤24h: Non‑template allowed; templates billed per category (unless FEP is active → free).
- > 24h & <72h (FEP active): Non‑template blocked; templates send free.
- ≥72h: Templates open a paid category window; non‑template stays blocked until the customer replies.
Related FAQs
- What is conversation‑based pricing on WhatsApp Business API?
- What is a Free‑Entry Point conversation?
- When do I need to use a message template?
- What opens a Service conversation?
Support & escalation
If behavior differs from this FAQ or sends fail unexpectedly, 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