Skip to content

Call Permission Request

Also called: call_permission_request · Call permission · WhatsApp call consent request

Definition
A WhatsApp interactive message or template asking a user to allow business-initiated calls, with their answer returned to the business by webhook.

Exhibit A

Walk one user's permission from request to expiry

3 / 3
  • No permission to Request delivered: Send request
  • Request delivered to Temporary: User allows
  • Request delivered to Permanent: Allows permanently
  • Request delivered to Declined: User declines
  • Temporary to No permission: 7 days pass
  • Temporary to Revoked: Revoked / 4 missed calls
  • Permanent to Revoked: User revokes
  • No permission to Temporary: User calls you (callback)
  • Declined to Request delivered: Ask again later
  • Revoked to Request delivered: New request
  1. No permission
  2. Request delivered
  3. Temporary

Step 3 of 3 · end of walk

Temporary

response accept, is_permanent false. Calls are allowed for 7 days from approval; no webhook marks the expiry.

Arrived from Request delivered via User allows.

Can move to

  • No permission · 7 days pass
  • Revoked · Revoked / 4 missed calls
Each box is a state your system should track for one customer. Step along the main path, then switch walks to see a permission lapse, a decline, a permanent approval revoked, and a callback granted automatically.

Happy path, step 3 of 3: Temporary (via User allows). response accept, is_permanent false. Calls are allowed for 7 days from approval; no webhook marks the expiry.

What is a call permission request?

A call permission request is the consent step of the WhatsApp Business Calling API: a message asking a user whether the business may call them on WhatsApp. The user sees the business's explanation with options to allow or decline, and their choice comes back to the business as a webhook. Until a user has granted permission, a business-initiated call to them fails with error 138006.

It comes in two forms. Inside an open 24-hour customer service window, a free-form interactive message with interactive.type and action.name both set to call_permission_request carries optional body text; it has no header or footer, and nothing else in the interactive object can be changed. Outside the window, the request travels as an approved message template that includes a call_permission_request component alongside its header, body and footer. Either way it is billed as a message: a template by its category, a free-form request as a service message.

Permission is temporary or permanent. A temporary approval lasts seven calendar days (168 hours) from the moment the user accepts; permanent permission, where the user chooses it, does not expire. The user can revoke either at any time. Permission is also granted automatically when a user calls a business that has callback permission switched on in its calling settings, and revoked automatically after repeated unanswered calls. Meta caps how many requests a business may send one user per day and per week; the caps reset when a call between the two connects.

Key takeaways

  • A call permission request asks a WhatsApp user to let the business call them; business-initiated calls work only after they agree.
  • Send it as an interactive call_permission_request inside an open window, or as an approved template outside it.
  • The answer arrives as an interactive call_permission_reply webhook: accept or reject, temporary or permanent.
  • A temporary approval lasts 7 days from the user's tap, and no webhook marks its expiry, so check call_permissions before dialling.
  • Meta caps how often you can ask one user; read the live limits from the call_permissions endpoint instead of hard-coding them.

How does a call permission request work?

  1. Ask in context

    Send the request where a call obviously helps — after a support question, a booking or a failed delivery attempt — and say in the body text who will call and roughly when.

  2. Choose the form

    Inside the customer service window, send the interactive call_permission_request. Outside it, send an approved template that includes a call_permission_request component.

  3. Receive the reply

    The choice arrives on the messages webhook as interactive.type: "call_permission_reply" with response (accept or reject), is_permanent, expiration_timestamp for temporary approvals, response_source and context.id pointing at your request.

  4. Record the consent

    Store the user, the decision, its source and the expiry as a consent record. It is your evidence of permission and your agents' "callable until" indicator.

  5. Check before every call

    Call GET /{PHONE_NUMBER_ID}/call_permissions?user_wa_id=…: it returns permission.status (no_permission, temporary or permanent) and whether start_call and send_call_permission_request are allowed right now, with their limits.

Common mistakes with a call permission request

  • Asking with no reason

    A bare "Allow calls?" reads like telemarketing and gets declined. Say who will call, why and when — the body text is the only part of the interactive request you can customise.

  • Waiting for an expiry webhook

    None is sent when a temporary permission lapses. Use the expiration_timestamp you stored, and confirm with call_permissions before dialling.

  • Re-asking straight after a decline

    Requests are capped per user per day and per week, and a refusal is a signal. Offer chat instead and ask again only when the context changes; the caps reset after a connected call.

  • Ignoring response_source

    automatic means the permission came from the user calling you, or was withdrawn after unanswered calls, rather than from a tap on your request. Keep the source in your consent record.

  • No fallback for older apps

    Users on older WhatsApp versions cannot receive the request and the send fails with error 131026. Fall back to a text inviting them to call you or reply in chat.

A call permission request in code

curl -X POST "https://graph.facebook.com/v26.0/{PHONE_NUMBER_ID}/messages" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "919812345678",
"type": "interactive",
"interactive": {
"type": "call_permission_request",
"action": { "name": "call_permission_request" },
"body": { "text": "Our technician may need to call you on WhatsApp to find your flat. Allow calls?" }
}
}'

The free-form version needs an open customer service window; outside it, send an approved template with a call_permission_request component.

Example: A technician who needs to find the flat

A Bengaluru appliance-repair service confirms a fridge repair for Monday 19 October. With the confirmation, its bot sends a call permission request: "Our technician may need to call you on WhatsApp to find your flat. Allow calls?" The customer taps Allow. The webhook returns accept with an expiry seven days out, and the CRM shows "callable until Mon 26 Oct". On the visit, the technician's app checks call_permissions, sees temporary, and calls from the business number when he cannot find the right tower. A customer who taps Decline gets a text with the technician's arrival time instead, and is not asked again that week.

Why does a call permission request matter?

Outbound WhatsApp calls are only as good as the consent behind them. A clear, well-timed request — "Can our technician call you when he reaches your building?" — turns a call from an interruption into a service the customer chose, and gives the business a record of that choice it can show an auditor. Sending it carelessly does the opposite: a declined or ignored request uses up one of very few attempts, and a customer who feels ambushed can revoke permission or block the number altogether.

Best practices for a call permission request

  • Pair the request with a concrete time window ("between 4 and 6 pm") so the call is expected when it comes.
  • Show permission status and expiry to agents in the inbox, not only in the CRM.
  • In templates, tie the request to the customer's own booking or order so it reads as service, not sales.
  • Switch on callback permission in calling settings so people who call you can be called back without a separate request.

Call Permission Request FAQs

How long does WhatsApp call permission last?+
Seven days for a temporary approval, counted from when the user accepts. Permanent permission does not expire, but the user can revoke either kind at any time, and four unanswered calls in a row revoke it automatically.
Can I send a call permission request outside the 24-hour window?+
Yes, as an approved template that includes a call_permission_request component. The free-form interactive version works only inside an open customer service window.
How do I know whether a user accepted?+
Your webhook receives an interactive message of type call_permission_reply. Its response is accept or reject, with is_permanent, an expiration_timestamp for temporary approvals and context.id linking it to your request.
How many times can I ask a user for call permission?+
Only a few: Meta caps requests per user within 24 hours and within 7 days. The caps reset when a call between you connects, and the call_permissions endpoint reports whether another request is allowed right now.
Is a call permission request charged?+
Yes, as a message. A template is billed by its category, and a free-form request inside the window is a service message, charged in India at ₹0.145 since 1 October 2026.

See InfiQ pricing

* Per-message rates for India, ex-GST: marketing, utility and authentication effective 1 July 2026; service messages ₹0.145 since 1 October 2026 (they were ₹0 until 30 September 2026). Volume commitments earn discounts — final rate is confirmed on your account; applicable GST extra. Rates for other countries differ (see the international rate table on /pricing).

Try it on the official WhatsApp Business API

InfiQ is an official Meta Business Partner. Start a 7-day free trial — no card needed — and see this running on your own number.