This document describes business customer phone numbers, their requirements, and endpoints commonly used to manage business phone numbers.
Basics
Your business customers need a dedicated number to use WhatsApp. Phone numbers already in use with the WhatsApp app are not supported, but numbers in use with the WhatsApp Business app can be registered.
When completing the Embedded Signup flow, your business customers should use a phone number and display name that they want to have appear in the WhatsApp app. We strongly discourage signing up with a test or personal number, or test display name, as are difficult to change.
For more detailed information relating to phone numbers and WhatsApp for Business Platform, see Phone Numbers.
For information on how to migrate an existing registered WhatsApp phone number, see Migrate Phone Number.
Instructions for business customers
This section is directed towards customers of Embedded Signup and provides guidance about actions they may perform relating to phone numbers.
Add Phone Numbers to a WhatsApp Business Account
There are two methods to add additional numbers to a WhatsApp Business Account (WABA):
[Recommended] Go through the embedded signup flow again, select the existing Business Manager & WABA, add the number, and verify it.
In the Business Manager, go to the Phone Numbers tab of WhatsApp Manager, and select Add Phone Number. When using this option, the Solution Partner has to manually verify the phone number as phone verification is not available in the Business Manager. For this reason, it is recommended that businesses follow the embedded signup flow to add additional numbers.
Instructions for Solution Partners
This section is directed towards Solution Partners and provides instructions for managing customer phone numbers.
Getting phone numbers
Use the GET /<WABA_ID>/phone_numbers endpoint to get a list of business phone numbers on a business customer’s WABA.
After a business customer successfully completes the Embedded Signup flow and their phone number is verified, you must register the number for Cloud API use by calling POST /<PHONE_NUMBER_ID>/register with the messaging_product and pin parameters. See Step 4: Register the number for details.
Alternatively, you can pre-verify phone numbers and offer them to your customers in the new Embedded Signup flow. This prevents customers from having to contact you for a one-time password during the onboarding process. See Pre-Verified Phone Numbers.
A phone number must be registered up to 14 days after going through the Embedded Signup flow. If a number is not registered during that window, the phone must go through to the Embedded Signup flow again prior to registration.
Get phone metadata
The phone_numbers endpoint allows you to see the status of a phone number’s display name and other metadata.
Example request
In the following example, use the ID for the assigned WABA.
curl -i -X GET "https://graph.facebook.com/<API_VERSION>/<WABA_ID>/phone_numbers
?fields=
display_phone_number,
name_status,
new_name_status
&access_token=<SYSTEM_USER_ACCESS_TOKEN>"
To find the ID of a WhatsApp Business Account, go to Business Manager > Business Settings > Accounts > WhatsApp Business Accounts. Find the account you want to use and click on it. A panel opens, with information about the account, including the ID.
The review status of the current display name request. Available Options:
APPROVED: The name has been approved.
DECLINED: The name has not been approved.
EXPIRED: The approved name has expired.
PENDING_REVIEW: Your name request is under review.
NONE: No display name has been set.
new_name_status
The review status of a display name change request. This field returns data only if a display name change was requested.
Get phone number OTP status
To see if a phone number has been verified via OTP (one-time password), check that number’s code_verification_status field. First, make a GET call to the /<whatsapp-business-account-id}/phone_numbers endpoint:
curl -i -X GET \
"https://graph.facebook.com/<API_VERSION>/<WABA_ID>/phone_numbers
?access_token=<ACCESS_TOKEN>"
The response includes the code_verification_status with one of the following options: VERIFIED or NOT_VERIFIED. A sample response looks like this: