01 · Definition
What is a number's calling configuration?
Calling settings are the configuration that controls how the WhatsApp Business Calling API behaves on one business phone number. They live in the calling object of the number's settings — read with GET /{PHONE_NUMBER_ID}/settings, changed with POST /{PHONE_NUMBER_ID}/settings — and decide whether customers see a call button, when they can use it, and what happens when they call outside those hours. Calling can be switched on only for numbers with a messaging limit of at least 2,000.
The policy fields are few. status (ENABLED or DISABLED) switches calling on the number. call_icon_visibility is DEFAULT (the call button shows and users can call you) or DISABLE_ALL (the button and other entry points are hidden and unsolicited calls are blocked, while call buttons in your own messages keep working). call_icons.restrict_to_user_countries limits the button to users whose phone numbers are registered in listed countries. call_hours sets a weekly schedule in an IANA time zone such as Asia/Kolkata, with at most two non-overlapping ranges per day and up to 20 dated holiday overrides. callback_permission_status lets people who call you grant permission to be called back.
The same object also configures plumbing: sip routes calls to a SIP server instead of the calling endpoints and webhooks, audio.additional_codecs adds G.711 (PCMA, PCMU) next to the always-on Opus codec, and voicemail plays a recorded announcement and takes a message when a call is rejected or not answered in time. These settings shape the flows described under user-initiated call and business-initiated call; they never place or answer a call themselves.
Key takeaways
- Calling settings are the per-number switches for the WhatsApp Calling API, read and changed at
/{PHONE_NUMBER_ID}/settings. statusturns calling on or off;call_icon_visibility: DISABLE_ALLhides the call button and blocks unsolicited calls.call_hourssets weekly hours in a named time zone, with at most two ranges per day and up to 20 holiday overrides.- Outside call hours users cannot call you; with callback permission enabled they can ask for a callback instead.
- WhatsApp apps can take up to 7 days to show a change, but Meta enforces the new settings on its servers straight away.
02 · Code samples
A number's calling configuration in code
curl -X POST "https://graph.facebook.com/v26.0/{PHONE_NUMBER_ID}/settings" \-H "Authorization: Bearer {ACCESS_TOKEN}" \-H "Content-Type: application/json" \-d '{"calling": {"status": "ENABLED","call_icon_visibility": "DEFAULT","callback_permission_status": "ENABLED","call_hours": {"status": "ENABLED","timezone_id": "Asia/Kolkata","weekly_operating_hours": [{ "day_of_week": "MONDAY", "open_time": "0900", "close_time": "1300" },{ "day_of_week": "MONDAY", "open_time": "1400", "close_time": "1900" },{ "day_of_week": "TUESDAY", "open_time": "0900", "close_time": "1300" },{ "day_of_week": "TUESDAY", "open_time": "1400", "close_time": "1900" },{ "day_of_week": "SATURDAY", "open_time": "1000", "close_time": "1400" }],"holiday_schedule": [{ "date": "2026-12-25", "start_time": "0000", "end_time": "2359" }]}}}'# 200 OK → { "success": true }
Wednesday to Friday entries are left out for brevity. The full call_hours block is replaced on every update, so always send all of it.
03Playground
A working model of Calling Settings. Use its controls to replay it step by step.
See what a call_hours schedule does to a week of calls
Monday · 11:00
96
Inbound calls connected (illustrative, 0–100)
- Peak
- Mon 11:00
- 96
- Busiest day
- Monday
- avg 27
- Best hour
- 11:00
- avg 70
Weekdays run 09:00–13:00 and 14:00–19:00 IST, Saturday 10:00–14:00, Sunday closed. Monday 11:00 is the peak, so put most counsellors on it.
Focus the grid and use the arrow keys (Home / End for 00:00 / 23:00), or point at a cell.
04 · Specifications
A number's calling configuration: key facts and limits
| Endpoint | GET / POST /{PHONE_NUMBER_ID}/settings (calling object) |
|---|---|
| Prerequisite | Messaging limit of at least 2,000 |
| Call icon | DEFAULT or DISABLE_ALL; optional country restriction |
| Ranges per day | At most 2, non-overlapping, HHMM |
| Holiday overrides | Up to 20, future dates only |
| Client propagation | Up to 7 days; the server enforces at once |
| Codecs | Opus always; G.711 (PCMA, PCMU) optional |
| Settings webhook | account_settings_update |
05 · Operation
How does a number's calling configuration work?
Read the current state
GET /{PHONE_NUMBER_ID}/settingsreturns thecallingobject, including any calling restriction Meta has placed on the number. Start every change from it, because an update tocall_hoursreplaces the whole block.Switch calling on
Set
calling.statustoENABLEDand subscribe your app to thecallswebhook field. Changes to status, icon visibility, callback permission and SIP can also fire anaccount_settings_updatewebhook.Decide who sees the button
Keep
call_icon_visibility: DEFAULTfor a support line, or useDISABLE_ALLwhen you only want calls started from buttons in your own messages. Restrict by users' countries if the team serves only some markets.Set hours and holidays
Send
call_hourswithstatus,timezone_id,weekly_operating_hours(day_of_week,open_time,close_timeas HHMM) andholiday_schedule. Leaving outholiday_scheduledeletes the holidays already saved.Offer callbacks
With
callback_permission_status: ENABLED, a user who calls — including outside your hours, when they are offered a callback and shown the next open slot — can give permission to be called back, feeding your business-initiated call queue.Allow for propagation
WhatsApp apps can take up to 7 days to reflect a change (opening the chat info page refreshes it), but Meta enforces the new settings immediately, so a customer's app may briefly show a button the server no longer honours.
06 · Cautions
Common mistakes with a number's calling configuration
Wiping holidays by accident
Every
call_hoursupdate replaces the previous one, and omittingholiday_scheduledeletes the saved holidays. Generate the full block from one source of truth and send all of it.Using the wrong time zone
Hours are read in
timezone_id. Assuming UTC shifts an Indian schedule by five and a half hours; setAsia/Kolkataexplicitly.Hiding the icon and expecting silence
DISABLE_ALLblocks unsolicited calls, but call buttons in your templates and interactive messages still start calls. Remove those too if nobody can answer.Voicemail that never triggers
With call hours on, users cannot call outside them, so a voicemail meant for nights never plays. Meta advises turning call hours off when voicemail is the after-hours plan.
Trusting one handset after a change
A phone may show the old button for days. Check the GET response and real call behaviour, not one device's interface.
07 · Worked example: An admissions desk with a lunch break
Example: An admissions desk with a lunch break
A Lucknow coaching institute's admissions desk works 9 am to 1 pm and 2 pm to 7 pm on weekdays and 10 am to 2 pm on Saturdays. It sets call_hours in Asia/Kolkata with two ranges for each weekday, one for Saturday, and a holiday override for 25 December. Students who tap the call icon at 8 pm see that the desk is closed and can request a callback; from 9 the next morning counsellors work through the callback list as business-initiated calls. The heatmap shows the resulting week: nothing connects outside the configured hours, and Monday late morning is the peak to staff for.
08 · Rationale
Why does a number's calling configuration matter?
Calling settings are where a support head's operating decisions become product behaviour. A call button that rings at 2 am into an empty contact centre creates missed calls and annoyed customers, and Meta can restrict calling on numbers with low pickup rates or heavy negative feedback. Hours that match staffing, holiday closures set in advance, callbacks offered when the team is away and the icon hidden on a number nobody answers keep calling an asset rather than a liability.
09 · Recommended practice
Best practices for a number's calling configuration
- Generate
weekly_operating_hoursfrom your staff roster so the WhatsApp schedule never drifts from who is on shift. - Load the year's public holidays in one update — up to 20 fit — and review them every quarter.
- Pair after-hours callbacks with a callback queue worked first thing next morning; an ignored callback request is worse than none.
- Watch pickup rate by hour; Meta can restrict calling on numbers that rarely answer.
10 · Questions and answers
Calling Settings FAQs
- How do I enable calling on a WhatsApp Business API number?
- Set calling.status to ENABLED with POST /{PHONE_NUMBER_ID}/settings. The number must be on the Cloud API with a messaging limit of at least 2,000, and your app should subscribe to the calls webhook field to receive calls.
- Can I set business hours for WhatsApp calls?
- Yes. call_hours takes an IANA time zone, up to two opening ranges per day and up to 20 holiday overrides. Outside those hours users cannot call, and can request a callback if callback permission is enabled.
- How do I hide the call button on a WhatsApp Business API number?
- Set call_icon_visibility to DISABLE_ALL. It hides the button and other external entry points and blocks unsolicited calls, while call buttons inside your own messages keep working.
- Why does the call button still show after I changed the settings?
- WhatsApp apps can take up to 7 days to refresh calling settings, though most update sooner. Meta enforces the new settings on its servers straight away, and opening the chat info page forces a refresh.
- What does callback_permission_status do?
- It lets callers give the business permission to call them back. With it enabled, a user who calls — including outside call hours — can grant callback permission, so the team can return the call later as a business-initiated call.