How to open a WhatsApp Business API account through Meta Business Manager
Opening a WhatsApp messaging account runs through Meta Business Manager, in 7 steps that have to happen in order. You finish with four values: App ID, Phone number ID, WhatsApp Business Account ID, and a permanent token. Those four connect the account to whatever system handles your messages.
The setup itself takes about an hour. What takes longer is Meta's verification against your website and company records, and there's no way to speed that up. So it helps to have the materials ready before you begin.
What to have ready
Five things, and it's worth having all of them ready before the first step. Missing one stops the process partway through.
- A live website on https, reachable from the US. It needs your company name, address, and a short description of what you do. Meta checks the site from outside Israel, and a site that blocks foreign traffic won't pass, usually without a detailed error message.
- A personal Facebook profile that's active and genuinely used by whoever is doing the setup. Meta looks at the private profile here, even if you also run a business page.
- Access to your organisation's Business Manager. If you don't have one yet, you can create it free from that same profile.
- A dedicated phone number, mobile or landline, that has never had WhatsApp installed on it. It has to receive an SMS or a voice call during setup. A landline answered by an IVR menu won't work, though you can set call forwarding from it.
- A credit card. Meta bills for message traffic from the moment the account goes live.
1Business details in Business Manager
Log in to the Facebook profile that has access to the company's Business Manager, then go to business.facebook.com/settings.
Open the Business Info tab and check that every detail is filled in. If the fields are empty, fill them now. Meta later compares what's here against what's on your website, and any mismatch holds up verification.
Edit business information
✕- 1The company's full legal name, exactly as it appears on your incorporation or business registration certificate. Meta accepts Hebrew here as well as English. If the company is registered under both, enter the one on the official document, and make sure the same form appears on your website.
- 2Pick Israel from the list.
- 3The company address, the same one shown on your website and business page. With several branches, pick one and stay with it.
- 4The phone number as it appears on your site. Israeli service numbers (*, 1-800, 1-700) are rejected here.
- 5Your website on https. Meta gives this field a lot of weight during verification, so check that the address is correct and the site loads.
- 6Company or VAT registration number. Marked optional, worth filling in anyway because it helps Meta match you against official records.
2Creating the app and wiring the webhook
The app is the wrapper Meta grants API access through. You create it once and use it for everything that follows.
[your app name]
People
Add peopleThese people have access to [your app name]. You can view, edit or delete their permissions. Your app need at least one app admin in order to access the app dashboard and reduce the risks of missing important actions.
- 1Open Accounts in the side menu.
- 2Click the Apps sub-tab.
- 3Click Add. If the button is greyed out, your personal profile isn't verified with Meta as a developer yet. Open a developer account at developers.facebook.com from that same profile, then come back here.
- 1Choose Create a new app ID.
Which use case do you want to add to your app?
Get started by selecting the main use case you'd like to add to your app. You'll be asked to add permissions to your use case later.
- 1Choose Other. The first option is for Facebook Login and doesn't apply here.
- 2Click Next.
Select an app type
The app type can't be changed after your app is created. Learn more
- 1Choose Business. It's the only type that grants WhatsApp access.
- 2Click Next. Note that the app type can't be changed after creation.
- 1A name for the app, your choice. Something you'll recognise a year from now, say the company name followed by WA.
- 2The email Meta will contact you at about this app. Check it carefully, because restriction notices land there.
- 3The Business Manager the app belongs to. If you have several, pick the one whose business details you filled in at step 1.
- 4Click Create app.
Instagram Graph API
Integrate your app with the Instagram API to let businesses use your app with their Instagram accounts.
Jobs
Post jobs to the Facebook platform and receive applications from users.
Marketing API
Integrate Facebook Marketing API with your app.
Messenger
Customize the way you interact with people on Messenger.
Web Payments
Accept in-app payments through Facebook's secure payment system.
ThreatExchange
Share and learn about potential threats to help everyone stay more secure.
Webhooks
Subscribe to changes and receive updates in real time without calling the API.
Integrate with WhatsApp
Facebook Login for Business
A secure way for businesses to give your app permissions to access data.
- 1Scroll down to the WhatsApp tile and click Set up.
- 1Check that the Business Manager shown is the right one.
- 2Click Continue. If an error blocks you here, the account is barred from setting up a messaging service. Contact Facebook support through the question mark at the bottom of the Business Manager side menu. They answer quickly.
- curl -i -X POST `
- https://graph.facebook.com/v17.0/[phone number id]/messages `
- -H 'Authorization: Bearer [permanent access token]' `
- -H 'Content-Type: application/json' `
- -d '{ "messaging_product": "whatsapp", "to": "", "type": "template", "template": { "name": "hello_world", "language": { "code": "en_US" } } }'
- 1Click the Configure webhooks link in step 3. The curl block above it is a test message Meta prepares for you, and you can ignore it at this stage.
Webhook
To get alerted when you receive a message or when a message's status has changed, you need to set up a Webhooks endpoint for your app. Learn how to configure Webhooks.
Permanent token
Learn how to create a permanent token
Phone numbers
You have 2 production numbers and 1 test number.
- 1Click Edit. At this point it still reads No URL added and No token added, because the connection isn't configured yet.
- 2Notice that Manage next to Webhook fields is greyed out. It only becomes available once a URL and a token are saved, which is why the steps go in this order.
- Skip ahead to step 3 and finish the rest of the guide.
- Send us the five values listed in the final section once you're done.
The dialog asks for two values:
Callback URL is where Meta posts every incoming message. In n8n that's the Production URL of the Webhook node in the workflow handling your messages. Copy it from the node. The address has to be https and reachable from the internet, so a workflow running in Test mode won't work here.
Verify token is a string you make up. Meta sends it back once to confirm the address really is yours. Generate a random string, paste it both here and into the n8n node settings, and keep a copy somewhere secure. The string should be unique to you. Some guides online offer a ready-made token to copy, and it is better to skip those, because anyone who knows the string can register themselves as a listener on your endpoint.
Click Verify and save. Meta calls the address at that moment and expects the right answer back, so the address has to be live. A placeholder or a temporary URL won't pass the check. If n8n doesn't return the expected answer you'll see an error straight away, and it's worth confirming the workflow is active and the string matches on both sides.
Webhook
To get alerted when you receive a message or when a message's status has changed, you need to set up a Webhooks endpoint for your app. how to configure Webhooks.
Permanent token
Learn how to create a permanent token
Phone numbers
You have 2 production numbers and 1 test number.
- 1It currently reads No fields selected. Meta sends nothing until you pick which events you want.
- 2Click Manage next to Webhook fields.
Webhook fields
✕| Name | Test version | Subscription version | Subscribe 1 | |
|---|---|---|---|---|
| account_alerts | v17.0▼ | Test | v17.0▼ | ✓ |
| account_review_update | v17.0▼ | Test | v17.0▼ | ✓ |
| account_update | v17.0▼ | Test | v17.0▼ | ✓ |
| business_capability_update | v17.0▼ | Test | v17.0▼ | ✓ |
| business_status_update | v17.0▼ | Test | v17.0▼ | ✓ |
| campaign_status_update | v17.0▼ | Test | v17.0▼ | ✓ |
| message_template_quality_update | v17.0▼ | Test | v17.0▼ | ✓ |
| message_template_status_update | v17.0▼ | Test | v17.0▼ | ✓ |
| messages | v17.0▼ | Test | v17.0▼ | ✓ |
- 1Tick every box in the Subscribe column.
Webhook fields
✕| Name | Test version | Subscription version | Subscribe | |
|---|---|---|---|---|
| messages | v17.0▼ | Test | v17.0▼ | ✓ |
| phone_number_name_update | v17.0▼ | Test | v17.0▼ | ✓ |
| phone_number_quality_update | v17.0▼ | Test | v17.0▼ | ✓ |
| security | v17.0▼ | Test | v17.0▼ | ✓ |
| template_category_update | v17.0▼ | Test | v17.0▼ | ✓ |
- 1This dialog has two scrollbars, one for the page and one for the table itself. The bottom rows are easy to miss. Scroll inside the table to the end and tick those too.
- 2Click Done.
3Setting up the phone number
- curl -i -X POST `
- https://graph.facebook.com/v17.0/[phone number id]/messages `
- -H 'Authorization: Bearer [permanent access token]' `
- -H 'Content-Type: application/json' `
- -d '{ "messaging_product": "whatsapp", "to": "", "type": "template", "template": { "name": "hello_world", "language": { "code": "en_US" } } }'
- 1Switch to the API Setup tab in the side menu.
- 2Click Add phone number in step 5.
Create a WhatsApp Business profile
This profile will show information about your business to people on WhatsApp. You can edit this information anytime by going to Business assets in Meta Business Suite Settings and selecting this WhatsApp account.
- 1Display name. This is what customers see in WhatsApp, and it's the field most accounts get stuck on. It has to represent the sending brand faithfully, appear as live text on the company website, and appear in your Business Manager business details. Anything too generic, say "Customer Service", usually will not be approved. Meta's full guidance.
- 2Business category. Pick from the list. If nothing fits, choose Other.
- 3Business description. Optional, up to 512 characters, editable at any point.
Choose how you would like to verify your number
Select how you would like to verify your number. If you are using a landline number, choose phone call.
- 1Enter the number in international format and choose how to verify it. For a landline, pick the voice call.
- 2Click Next. Meta sends a code, which you enter in the dialog that opens.
Temporary access token
Send and receive messages
Step 1: Select phone numbers
Send free messages with the provided test phone number. Learn more.
- curl -i -X POST `
- https://graph.facebook.com/v17.0/[phone number id]/messages `
- -H 'Authorization: Bearer [permanent access token]' `
- -H 'Content-Type: application/json' `
- -d '{ "messaging_product": "whatsapp", "to": "", "type": "template", "template": { "name": "hello_world", "language": { "code": "en_US" } } }'
- 1App ID.
- 2Phone Number, the number you verified.
- 3Phone number ID. This is the identifier your messaging system sends with, rather than the number itself.
- 4WhatsApp Business Account ID. Copy all of these somewhere safe. You'll need them to connect n8n.
- 1Duplicate the browser tab and in the new one go to Settings.
- 2Click Basic.
- 3Find the App secret field.
- 4Click Show. Meta may ask for your Facebook password again. Copy the value and store it with the rest.
Webhook
To get alerted when you receive a message or when a message's status has changed, you need to set up a Webhooks endpoint for your app.
Permanent token
Learn how to create a permanent token
Phone numbers
You have 2 production numbers and 1 test number.
- 1Go to Configuration in the side menu.
- 2Click Manage phone numbers, then the number itself.
On the screen that opens, upload a profile picture for the number, usually your logo. It has to be square, at least 640 pixels a side. You can add a website and extra contact details there too.
Save with the button in the top corner. All of this stays editable later.
4Adding a payment method
- curl -i -X POST `
- https://graph.facebook.com/v17.0/[phone number id]/messages `
- -H 'Authorization: Bearer [permanent access token]' `
- -H 'Content-Type: application/json' `
- -d '{ "messaging_product": "whatsapp", "to": "", "type": "template", "template": { "name": "hello_world", "language": { "code": "en_US" } } }'
- 1Click Add payment method.
- 1Click Add payment method at the bottom of the screen and enter card and invoicing details. Worth noticing: fill these in even if payment details already appear at the top of the screen. These are two separate settings, and it's an easy one to miss.
You can reuse details already on the account via Payment Method, or enter a new card via Credit Card. After that, the invoice details dialog opens.
5Creating a System User
A System User is a user that isn't a person. It exists to hold the token your system authenticates with. The benefit: when an employee leaves or changes their password, the connection keeps working.
Assigned assets
Add assetsHere are the assets n8n API User (System User) can access. View and manage their permissions. Add or remove assets.
- 1Go back to Business Manager and open Users › System users.
- 2Click Add.
Create system user
✕Enter a name for the system user you want to create below:
[your Business Manager name] will be the owner of this system user.
- 1A name for the user. It makes no operational difference, so pick something that explains what it's for, say n8n API User.
- 2Set the role to Admin. If the interface won't allow it, choose Employee and carry on.
- 3Click Create system user.
6Assigning permissions to the System User
This step has three separate assignments, and it's worth working through all of them in order. If one is missing, the token still generates normally but returns a permissions error on the first attempt to send a message, which is hard to trace after the fact.
Add people to [your app name]
✕Can change app settings, test the app and view analytics.
Can view app analytics.
Can test the app.
Can manage roles, change app settings, test the app and view analytics. 4
- 1Open Accounts in the side menu.
- 2Click Apps and select the app you created.
- 3Click Add people and tick the System User.
- 4Under Full control, switch Manage app on.
- 5Click Assign.
Add people to [your WhatsApp account name]
✕You can create message templates, add phone numbers, access metrics and send messages to customers.
You can do all of the above, and also assign users and view payment information. 4
- 1Open Accounts again.
- 2Click WhatsApp Accounts and select the account that was created.
- 3Go to People, click Add people and tick the same System User.
- 4Under Full control, switch on Manage WhatsApp business accounts.
- 5Click Assign.
Assign Assets to n8n API User
✕Can change app settings and view analytics.
Can view app analytics.
Can test the app.
Can manage roles, change app settings and view analytics. 4
- 1Open Users › System users and select the user.
- 2Click Add Assets and pick Apps.
- 3Tick the app you created.
- 4Under Full control, switch on Manage app.
- 5Click Save changes.
7Generating the permanent token
- 1Click Generate new token.
Generate token
✕- 1Select the app you created.
- 2Tick Permanent. The 60-day option suits testing. On a live account, an expired token drops the connection without warning.
By clicking 'Generate token', you agree to install selected app for system user API User.
- 1Tick whatsapp_business_messaging.
- 2Tick whatsapp_business_management. Those are the two permissions you need. The rest can stay off.
- 3Click Generate token.
Generate token
✕******************************
******************************
****************
Copy and save this token as it won't be stored at Facebook.
- 1Copy the token before closing the window. Meta doesn't store it, and there's no way to display it again later. If the window closes before you manage to, you can generate a new token and repeat this step.
What you will have at the end
The setup leaves you with five values. These are the connection details for the messaging account, and any system that runs your WhatsApp will ask for them:
- WhatsApp Business Account ID, the identifier of the business WhatsApp account
- Phone Number ID, the identifier of the number you verified
- App Secret, the app's secret key
- App ID, the identifier of the app you created
- The permanent token, which lets the system authenticate as the account
Keep all of them somewhere secure, a company password manager for instance. In practice the details sometimes arrive first in a spreadsheet or an email, which is fine as an interim step. Move them across once the setup is finished.
The permanent token is worth a closer look: it allows messages to be sent on behalf of the business, and it stays valid until someone revokes it from the interface. So it's comfortable to grant access only to the people actually working with the connection.
If you skipped the webhook in step 2 because we're building your automation, the account is valid and ready and your part is done. The five values above are all we need to connect the system.
The next step is message templates. Every message the business initiates needs Meta's approval in advance, and that's a separate process with its own rules. We'll cover it in its own guide.
Every screenshot in this guide was rebuilt in HTML. They show the structure of Meta's screens with the details masked, so no account names or identifiers belonging to anyone appear here.