WhatsApp n8n integration: The ultimate guide

Share
WhatsApp n8n integration: The ultimate guide

Just to be on the same page:

n8n can automate workflows, and WhatsApp is where many businesses communicate with customers.

And by connecting n8n with WhatsApp, you can automate:

  1. Customer support
  2. Lead qualification
  3. Reminders
  4. The list goes on and on
Infographic showing three n8n + WhatsApp automation use cases: customer support, lead qualification, and weekly reminders, with a "Save time. Focus on what matters." tagline.

But now comes an important question.

How do we connect our WhatsApp account with n8n?

How do we send messages inside WhatsApp using n8n, even though they are two different applications?

Simple.

We can connect n8n with WhatsApp through the WhatsApp Cloud API.

Woah! Woah! Slow down! What's an API?

Ah, forgot to explain that :D

What's an API and a WhatsApp API?

An API (Application Programming Interface) is like a bridge that lets two different applications talk to each other and share functionality.

Actually, you can understand the role of an API better when you realize when you need it and when you don't.

You don't need an API when you're okay using a service in its own ecosystem.

For example, you don't need WhatsApp Cloud API when you're comfortably getting your work done inside the WhatsApp mobile or desktop app.

WhatsApp mobile app showing the Chats screen with a list of personal and group conversations, illustrating standard in-app messaging functionality

But you DO need an API when you want to achieve something beyond the service's default functionality.

For example, although you can send and receive messages using the WhatsApp mobile app, you can't use an AI agent to respond to your customer queries automatically.

This AI Agent feature isn't available inside WhatsApp's mobile app.

You need to borrow this AI Agent functionality from a tool like n8n.

This means you need to manage your WhatsApp messages with n8n.

But because n8n and WhatsApp are different software and companies, you need to use the WhatsApp Cloud API to allow n8n to access and manage your WhatsApp messages.

In other words, WhatsApp Cloud API acts as a bridge between WhatsApp and n8n, allowing you to use an AI agent to respond to your customer queries.

Flow diagram showing how a WhatsApp message travels through WhatsApp Cloud API to n8n's AI Agent and back to the user

Alright! Now that you understand the purpose of a WhatsApp Cloud API or any API usage in general, next, let's see...

How to get access to WhatsApp Cloud API

Just to recap, with the WhatsApp Cloud API, you can link WhatsApp to n8n and automate customer conversations.

And you can achieve this in two ways:

  1. The direct way - Using the Meta platform to get access to the WhatsApp Cloud API.
  2. The indirect way - Using third-party services like Twilio or software like GoHighLevel to indirectly use the WhatsApp Cloud API.
Twilio's WhatsApp Business Platform page with headline "Global reach with a local feel. That's the power of WhatsApp."

People use services like Twilio to indirectly use WhatsApp Cloud API because the direct way has a strict Meta verification process that most businesses fail.

But if you can crack it, the direct way is the best way because it reduces dependency on third-party services like Twilio just for using the API.

So, in this lesson, first, we will see how to integrate WhatsApp and n8n using the direct method, that is, using the Meta platform to get access to the WhatsApp Cloud API.

The direct method - Using the Meta platform to get access to the WhatsApp Cloud API.

We can achieve this in nine detailed steps:

  1. Create a Meta developer account and an app
  2. Create a business portfolio as part of the app creation process to provide your business details to Meta
  3. Create a system user for your Business Portfolio, assign it to the app, and generate an access token for later use.
  4. Create a WhatsApp business account (WABA), add a phone number to it, and verify it.
  5. Assign the system user to the WhatsApp business account with full permissions.
  6. Register the Phone number and subscribe to the WhatsApp Business Account webhook.
  7. Integrating WhatsApp with n8n using the system user's access token, App ID, and its secret.
  8. Verify your business.
  9. Add a payment method to your WhatsApp Business Account (WABA).
πŸ›‘
You won't be charged for replying to a customer's message as long as you respond within 24 hours. After 24 hours, any reply is treated as a new conversation started by your business, and charges may apply.

Finally, integrate the WhatsApp Cloud API with n8n only if all the above steps are successful.

Come on, let's dive in.

Step 1: Create a developer account on Meta and then create an app

We must create an app inside our Meta developer account to be able to use Meta APIs such as Facebook, Instagram, and WhatsApp Cloud API.

In our case, we want to create an app to use the WhatsApp Cloud API.

And for creating an app, you need to access your Meta Developer account first.

So, go to Meta's Developer site and click on the "Login" button located in the top-right-hand corner:

Meta Developer site homepage with a cursor pointing to the "Login" button in the top-right corner

Next, click on the "Login with Facebook" button:

Meta for Developers page with a hand cursor pointing to the "Log in with Facebook" button in the login panel on the right

But I don't have a Facebook account.

Unfortunately, you can't access Meta's Developer account without a Facebook account because Meta API access often involves managing Facebook Pages, Ad Accounts, etc.

So, if you don't have a Facebook account yet, sign up for it by clicking on the "Create new account" button from the same screen:

Meta for Developers landing page showing a "Create new account" button alongside options to log in with Facebook or a managed Meta account

Or go to:

https://www.facebook.com/

Once you sign up for a Facebook account and log into it, come back to: https://developers.facebook.com/

Social technologies | Meta for Developers
Use Meta’s developer tools and resources to build solutions that help people connect and grow businesses.

Next, click on the "Get Started" button located in the top-right-hand corner of the screen:

Meta for Developers homepage with a cursor highlighting the "Get Started" button in the top-right corner

This will take us to the "Create a Meta for Developers account" screen.

Simply put, a registration screen for a developer account.

The registration process involves four steps.

Step A: Begin the registration by clicking the "Continue" button

Meta for Developers registration screen showing the "Register" step active in a 4-step sidebar, with a "Continue" button highlighted by a cursor icon.

Step B: Verify your account

You can verify your developer account by adding a mobile number:

Meta for Developers "Verify Your Account" form showing a Country dropdown set to India (+91), a Mobile number field with a partial number entered, and a "Send Verification SMS" button highlighted by a cursor.

And then sending an OTP via SMS to perform the verification:

Meta for Developers account creation screen showing the "Verify account" step, prompting the user to enter the OTP code sent via SMS to a mobile number.

Once the verification is done...

Step C: Confirm the email address that you want to use with Meta Developer account

Meta for Developers account setup β€” "Review Your Email Address" step showing a pre-filled primary email field and a "Confirm Email" button

The email gets automatically picked from your Facebook account.

Finally...

Step D: Choose a role that describes you the best and complete the registration process

Meta for Developers registration "About you" step showing seven role options β€” Developer (selected), Marketer, Analyst, Product manager, Student, Owner/founder, and Other β€” with a "Complete Registration" button.

You can choose any role, and choosing one over the other will not impact the registration process.

For example, I am primarily a coder, so I chose "Developer" for the role.

And, once you choose the role, click on the "Complete Registration" button to finish the process of creating a developer account for Meta.

Once the registration is complete, you will be taken to the "Apps" screen:

Meta for Developers Apps screen showing an empty state with "No apps yet" message and a "Create App" button

Next, we need to create an App for using the WhatsApp Cloud API.

So...

How to create an app and business portfolio for using WhatsApp Cloud API

To achieve this, start by clicking on the "Create App" button.

You can find this button at the center of the page or on the top-right-hand corner of the screen.

Location of "Create App" button on the "Apps" screen of Meta Developer account

Next, you might get greeted with this pop-up that says "There's a new way to create apps with Meta":

Meta Developer portal showing the "There's a new way to create apps with Meta" pop-up dialog, with a cursor pointing at the "Create app" button in the bottom-right corner.

If you see this, click on the "Create App" button one more time to close the pop-up.

You'll now be taken to the "Create an app" screen.

Screenshot of the "Create an app" Step 1 β€” App details form, with a 5-step progress indicator and fields for app name and contact email.

If you notice, the app creation process is divided into multiple steps again.

Let's start with providing the app details.

First, enter a name for the app.

You should be able to recognize the purpose of creating this app by just looking at the app name.

For example, I went with "n8n WApp Agent" because I am creating this app to integrate the WhatsApp API with n8n.

πŸ›‘
Note: When entering the app name, do not use official words like "WhatsApp", "Instagram", etc.

Meta will throw an error if you do so. So, use shortcut names.

For example, I often use "WApp" for WhatsApp and "IG" for Instagram when providing app names.

Simply put, instead of "n8n WhatsApp Agent", I just type "n8n WApp Agent".

Next, enter an email address that you regularly use. This is important because Meta might contact you about policies and app restrictions.

You always have to stay alert to comply with Meta's policies and app restrictions to be able to perform n8n automations in an uninterrupted way.

So, keep an eye on the provided email's inbox.

"Create an app" form β€” App details step with app name and contact email filled in; cursor pointing at the Next button.

Anyway, click on the "Next" button to move to the next step.

Select a use case for creating this app

If you notice, there are many use cases to pick from.

Meta Developer portal "Create an app" wizard on the Use Cases step, with a pointer highlighting the "Business messaging (3)" filter option in the left sidebar.

We are interested in the "Connect with customers through WhatsApp" use case.

So, click the "Business messaging" filter located on the right-hand side of the screen.

Meta developer portal "Add use cases" screen showing three annotated steps: selecting the Business messaging filter, choosing Connect with customers through WhatsApp, and clicking Next.

And then select the "Connect with customers through WhatsApp" option and click the "next" button.

As soon as you click the "next", you will be asked to select a business portfolio.

If this is not the first time you have created a business portfolio, you can select any of the existing portfolios:

The "Business" step of the Create an app wizard, showing a list of existing business portfolios to connect, with "N8N Agents" selected.

But in my case, I have no business portfolio created yet.

So, I need to create a new one.

Meta "Create an app" wizard on the Business step, showing a warning: "No businesses available. Check your portfolio in business settings or create a new one." A cursor points to the "create a new one" link.

Step 2: Create a business portfolio as part of the app creation process to provide your business details to Meta

But before we create a new business portfolio, we need to understand why we are creating one.

Among other things, a business portfolio is what lets us add and manage the three pieces we need to connect WhatsApp to n8n:

  1. The details of our business (or our client's business)
  2. The WhatsApp account, and the phone number that lives inside it
  3. The system user who will let n8n reach the WhatsApp Cloud API on our behalf

Simply put, without a business portfolio, we cannot access the WhatsApp Cloud API.

So, let's create one now.

To do so, click on the "create a new one" link.

Create an app wizard on the Business step, showing a warning: "No businesses available. Check your portfolio in business settings or create a new one." A cursor points to the "create a new one" link.

This will bring up a pop-up:

Meta "Create a business portfolio" pop-up showing fields for portfolio name, first name, last name, and business email, with the "Create portfolio" button highlighted at the bottom.
  1. Enter a name for your business portfolio and fill in your contact details
  2. Finally, click on the "Create portfolio" button

Next, we need to verify the business portfolio we just created.

So, click on the "Start Verification" button.

Meta developer portal modal prompting business portfolio verification, with the "Start verification" button highlighted by a cursor.

This will now take us to the business portfolio settings on business.facebook.com.

Facebook Business Portfolio Settings – Security Center showing "Your organization does not need to be verified" for my business

And you will see a message that says that our portfolio does not need to be verified.

This message is temporary, and Meta will change this requirement by the time we finish integration between WhatsApp and n8n.

So, we will once again visit the verification step at the end.

For now, let's go back to developers.facebook.com and finish the app creation process.

Facebook Developer portal "Create an app" wizard on the Business step

First, you will notice that the "Business" step now lists the business portfolio we just created.

So, choose the new portfolio and click the "Next" button.

Finally, go through the details you have provided so far and click on the "Go to dashboard" button:

Meta Developer Portal app overview showing app details and the "Go to dashboard" button highlighted at the bottom right.

You will now be taken to the app's dedicated dashboard.

Meta for Developers app dashboard with a "Welcome to the app dashboard" onboarding modal and a "Take the tour" button

For starters, you might get asked to take the tour of the App dashboard.

At the time of writing this article, clicking the "Take the tour" button only closes the pop-up.

So, go ahead and click on it.

Also, we are not yet done with the app creation process.

To finish the process, go to the "Use cases" screen:

Meta for Developers app dashboard with a hand pointer highlighting "Use cases" in the left sidebar navigation.

It contains the use case we chose during the app creation process.

Meta for Developers "Use cases" page showing the "Connect with customers through WhatsApp" use case

Click on the "Customize" button of our use case.

Next, make sure you are on the "Quick Start" tab inside the customization screen and then click on the "Continue" button:

WhatsApp Business Platform Quickstart screen with a business portfolio selected and the Continue button

If you click on the "Continue" button, two things happen:

  1. The app creation process will be finished
  2. You'll receive a test phone number to test the WhatsApp Cloud API

To be honest, we will not be using the test phone number. We will be using a real one.

So, I will go ahead and click on the "Continue" button.

WhatsApp Business Platform onboarding screen showing a red "Onboarding Failure" error: "We limit how often you can post, comment or do other things in a given amount of time to help protect the community from spam. You can try again later."

And bang!

Onboarding failure.

One possible reason for this is that I created a new Facebook account for this tutorial and immediately started working to gain access to the WhatsApp Cloud API.

So, Meta thinks I am a spammer.

But don't worry.

When I tried hitting the "Continue" button once again after waiting for 5 minutes, I didn't receive the error, and the onboarding process was successful.

Meta for Developers: WhatsApp Business Platform Quickstart page with "Become a Tech Provider" and "Start onboarding" button

The failure got fixed automatically when I tried again after 5 minutes or more.

So, if you are getting the same error, please be patient, wait for 5 minutes or 15 minutes or more, and try again.

That's all.

We are now done with the app and business portfolio creation process.

Next, we should link them together by creating a system user.

So...

Step 3: Create a system user for your Business Portfolio, assign it to the app, and generate an access token for later use.

So, what is a system user?

Let's just say you created an automation in n8n that sends WhatsApp messages automatically.

For example, it sends order confirmations as soon as a purchase is made by the user.

To achieve this, n8n must communicate with the WhatsApp Cloud API.

But, Meta does not allow a random n8n automation to make requests to the WhatsApp Cloud API.

Whenever a request is received, Meta needs to know who is making the request and whether they have permission to perform the requested action (sending messages).

So, how does Meta know that our n8n automation is authorized to send messages?

This is where a system user account comes in.

A system user is not a real user account. It is a special robotic account that lives inside your Meta Business portfolio.

A system user is designed specifically for tools like n8n to send authorized requests to Meta APIs, such as WhatsApp API, Instagram API, and Messenger API.

Think of the system user as the account that n8n uses when talking to Meta's APIs.

πŸ’‘
Note: A system user is also used for registering a WhatsApp Business Account's phone number. Without this registration, we can not send or receive WhatsApp messages via API.

"Okay! But how does n8n use the system account? Do we have to provide any credentials?"

Yes.

Meta allows us to generate something called an access token for the system user.

An access token is a unique credential that proves the identity of the system user.

We configure n8n with this access token.

After that, whenever our n8n automation makes a request to the WhatsApp Cloud API, n8n automatically includes the system user's access token with the request.

Meta then verifies the access token before processing the request.

This tells Meta that:

  • The request is coming from an authorized system user.
  • The automation has permission to access the WhatsApp Cloud API.
  • The automation can send and receive WhatsApp messages on behalf of the business.

Coming back to our example, n8n can now send order confirmations to the customer on behalf of your business.

That's the purpose of a system user.

Also, a system user belongs to your business portfolio rather than to you personally.

So, the automation keeps running even if your own account changes or you lose access.

πŸ’‘
Note: Just a heads up that before we set up the access token of a system user inside n8n, we should also assign it to the app we created in the previous step and the WhatsApp Business account that we create in an upcoming step.

We will perform this assigning when the time comes.

Alright, enough theory.

Come on, let's go ahead and create a system user.

How to create a system user inside the Meta business portfolio

To achieve this, we need to access the settings of the business portfolio we just created.

So, go to:

https://business.facebook.com

Next, in the top-left corner of the screen, click on the portfolio list:

Meta Business Suite screenshot showing two numbered steps: clicking the portfolio list dropdown (step 1) and clicking the settings gear icon next to "Laxmi Bhai Consultation Services" (step 2).

Under the "Business portfolios" section, look for the business portfolio we just created and then click on its settings button.

This will take us to the settings screen of our portfolio.

Next, click on the "System Users" link from the menu on the left.

Facebook Business Settings sidebar with the Users section expanded, showing a hand cursor pointing at the "System users" link.
Facebook Business Settings β€” System users page showing an empty state: "No system users added yet," with a hand cursor on the Add button.

As you can see, there are no system users yet because our business portfolio is newly created.

So, let's create a new system user by clicking on the "Add" button.

πŸ’‘
Note: This will bring up a pop-up. Accept the non-discrimination policy for system users if an additional pop-up shows up for you.
"Create system user" dialog with a name and role set to Admin, and cursor hovering over the Create button

Next, give a name to your system user. You can name it anything.

For the role, you can pick either "Admin" or "Employee."

Both will work for what we're doing.

The difference is mostly about how much access the system user gets by default.

I'm going with "Admin" simply because I'm the only one managing this business portfolio, so I don't need the tighter control that the "Employee" role is designed for.

πŸ’‘
Note: Whatever role you pick, you will still need to manually give this system user access to your WhatsApp account in a moment. Meta doesn't always do this automatically, even for admins (at least as of now).

Anyway, once enter the name and choose a role, click on the "Create system user" button.

Facebook Business Manager System Users page showing the newly created system user with Admin access, its ID, and options to Generate token or Revoke tokens.

And there we go!

The system user is now created.

Next, we need to assign this system user to the app we created in step 1 with full permissions.

To do that, scroll down a little bit and click on the "Assign assets" button.

Facebook Business Manager System Users page showing the newly created system user selected, with a "No assets assigned" empty state and the "Assign assets" button highlighted by a cursor.

This will open a pop-up with the list of apps you created on your Facebook developer account.

Facebook "Select assets and assign permissions" dialog showing step 1: selecting the app, step 2: enabling "Manage app" under Full control, and step 3: clicking "Assign assets".

Next, from the list of apps:

  1. Select the app you created
  2. Assign full control to the system user
  3. Finally, click on the "Assign assets" button
Facebook "Select assets and assign permissions" dialog showing a success state: "Assets assigned β€” 1 asset was assigned to." with a Done button.

That's all.

The app is now successfully assigned to the system user.

Click the "Done" button to finish the process.

Also, while we are here on the "System users" screen, let's also generate an access token for the system user we just created.

It will help with two things:

  1. To register the WhatsApp Business Account (WABA) phone number in step 6
  2. To send WhatsApp messages via n8n in step 7

So, let's generate it upfront.

How to generate an access token for a system user

System Users panel with "AI Agent for n8n" selected; cursor pointing to the "Generate token" button.

First, click on the "Generate token" button.

Generate token dialog showing "Wapp AI Agent" selected in the app dropdown (callout 1) and the Next button highlighted (callout 2)

Next, select the app that we created in step 1.

Generate token dialog β€” "Set expiration" step showing two radio options: "60 days (Recommended)" and "Never" (selected), with callout 1 pointing to the Never option and callout 2 pointing to the Next button.

Next, set the expiration for the token.

For better security, it is recommended to set the expiration to 60 days.

But each client comes with different expectations.

If the client is technical and can manage the Meta platform and n8n on their own, they can generate the token as often as it is required for security purposes.

If the client is paying you for the maintenance of the project, you need to follow security best practices as well.

If that is the case, follow the recommendation and choose the expiry at the "60 days" option.

But if the client is non-technical, doesn't want to handle maintenance, and still expects the system to run seamlessly for a long time, choose "never" so the access token never expires.

For the purposes of this lesson, I will choose to "never" expire the token.

Next, assign the required permissions so that the access token can be utilized without any problems:

Generate token dialog showing the "Assign permissions" step with 4 permissions selected in a dropdown: manage_app_solution, whatsapp_business_manage_events, whatsapp_business_management, and whatsapp_business_messaging.

To avoid any unexpected interruptions, select the following four permissions:

  1. manage_app_solution
  2. whatsapp_business_manage_events - The permission is required for listening to the "received a WhatsApp message" notification inside n8n
  3. whatsapp_business_management
  4. whatsapp_business_messaging - This permission is required for sending WhatsApp messages via n8n

So, select all four permissions and hit the "Continue" button to finish the token generation process.

Token created dialog showing the generated access token with a Copy button (step 1) and a Done button (step 2) annotated with numbered callouts.

Finally, copy and save this access token somewhere safe temporarily because we will need it in steps 6 and 7.

Having said that,

We still need to:

  1. Create a WhatsApp Business Account (WABA)
  2. Assign a phone number to it and verify it. This number will be used for sending or receiving messages
  3. Register and subscribe to the Phone number (using the system user's access token)
  4. Link the system user to the WhatsApp Business Account (WABA) with full permissions
  5. Integrate WhatsApp API with n8n using the system user's access token and App secret.

Uff...lot of work to do.

Come on, let's get to it without wasting any time.

Next...

Step 4: Create a WhatsApp business account (WABA), add a phone number to it, and verify it

When you install WhatsApp on your mobile phone:

  1. You need to add your phone number to it
  2. You then need to verify that phone number using a one-time password (OTP).

Only then you will be able to view, send, and receive messages to your mobile app.

Similarly, if you want to use the WhatsApp Cloud API for reading, sending, or receiving messages:

  1. You need to create a WhatsApp Business Account
  2. You need to add a phone number to it and verify it using OTP

So, come on, let's create a WhatsApp Business account.

Make sure you are inside the settings screen of your business portfolio:

Next, click on the "WhatsApp Accounts" link from the menu on the left:

Facebook Business Manager Settings β€” WhatsApp Accounts page showing a test account and the expanded "+ Add" dropdown with options to create or link a WhatsApp Business account.

As you can see, there is already a test WhatsApp account.

But we want to create a production-ready WhatsApp account.

So, click on the "Add" button located in the top-right corner of the screen.

And from the dropdown, click on the "Create a new WhatsApp Business account" button.

From here, the rest of the process is divided into three steps:

A) Add business details
B) Add Phone number
C) Phone number verification

Meta Business Manager screenshot showing the "Create a WhatsApp Business account" dialog, Step A: Details β€” with display name filled in and Category set to "Professional Services", annotated with two numbered callouts pointing to the Category dropdown (1) and the Continue button (2).

Step A: Add business details

For the display name, make sure you enter your registered business name. Otherwise, you'll face errors.

When you send a message in WhatsApp, your customers will see this display name unless they save your number using a different name.

WhatsApp chat screenshot showing "Laxmi Bhai Consultation Services" as the business display name at the top of the conversation, with an arrow labeled "Display Name" pointing to it.

Next, for the category, I selected "Professional Services" because I am a service provider. You should choose it appropriately, too.

Finally, click on the "Continue" button.

Error dialog reading "Setup can't be completed" during WhatsApp Business account creation, stating the business has not met WhatsApp's policy requirements and prompting the user to update business information.

And bang!

There is an error.

But don't worry.

If you read the error details carefully, it says that we didn't provide our business and contact information.

So, providing our details should fix this error.

So, keep this tab open and create a new tab in the browser and go to your business portfolio's settings screen.

And if you notice the top-left corner, there is a button called "Business Info".

Click on it to open up the business details.

Meta Business Settings showing the Business info page for "Laxmi Bhai Consultation Services" with empty Business details β€” no legal name, address, phone, or website filled in.

And as you can see, the business details are empty.

I did not provide the legal business name, address, and other details.

So, to fix it:

  1. Click on the "Edit" button inside the business details section
  2. Enter your business details or your client's.
  3. Click the "Save" button
"Edit business details" modal with fields filled in for Country (India), City (Hyderabad), State (Telangana), Zip (500072), and Business website, with the cursor hovering over the Save button.

Next, switch to the WhatsApp Business Account creation tab and submit the details again by clicking on the "Continue" button.

WhatsApp Business account creation dialog showing a policy error banner.

This time, the error is gone, and we were moved to the next step.

Step B: Add Phone number

First, select "Add a new number" and then enter the phone number you want to dedicate to use with WhatsApp Cloud API.

WhatsApp Cloud API setup dialog showing "Add a new number" selected (step 1) and the phone number input field highlighted (step 2), with verification method options below.

I am using the word "dedicate" because you can no longer use this phone number inside WhatsApp mobile or desktop apps.

πŸ›‘
Note: At any given time, a phone number can be used with either the mobile app or the WhatsApp Cloud API. But not both.

Of course, you can release the phone number from the API to switch between the API and the mobile app.

This is not a permanent change.
πŸ’‘
I implemented WhatsApp automation for many business owners. Most of them use multiple phone numbers to overcome this restriction. One number for the mobile app and multiple others for WhatsApp API.

Step C: Phone Number Verification

WhatsApp Business Manager dialog for adding a phone number, with "Text message" selected as the verification method (callout 1) and the Continue button highlighted (callout 2).

For verification, select "Text message" or "Voice call" and click the "Continue" button to receive the OTP.

WhatsApp Business "Verify your phone number" dialog showing a 6-digit OTP

Once you receive the OTP, enter it and click the "Next" button.

Success dialog in WhatsApp Business Manager: "Your WhatsApp Business account was created," with a Finish button highlighted by a cursor.

If all goes well, you'll see this success message.

Click on the "Finish" button to finish the WhatsApp Business Account (WABA) process.

WhatsApp Business Manager screenshot showing the newly created WABA "Laxmi Bhai Consultation Services" with its account ID and Summary tab open, with three numbered callouts highlighting key details.

If you now notice:

  1. The WhatsApp account list now contains the newly created account (orange arrow).
  2. Our WABA has a dedicated ID (pink arrow). Save this somewhere because we will use it in steps 6 and 7.
  3. Keep an eye on the "People" tab because we will work inside it next.

That's it!

That's all it takes to create a WhatsApp Business Account.

Next...

Step 5: Assign the system user to the WhatsApp business account (WABA)

Meta Business Manager screenshot showing a WhatsApp Business Account detail panel with a cursor pointing to the "People" tab.

Inside the newly created WABA, click on the "People" tab.

If you notice, Meta assigned my personal Facebook account to it.

Because I created a system user with the "Admin" role, I thought that system user would get automatically assigned too.

But that is not the case. I should never fully trust Meta API docs πŸͺ‚

Never mind.

Let's assign the system user manually.

WhatsApp accounts panel showing the "Assign people" button (cursor hovering over it) above the People tab, with 1 person currently assigned and full access.

First, click on the "Assign People" button located directly on top of the "People" tab.

WhatsApp Business "Add people and set permissions" dialog showing three numbered steps: select the AI Agent system user, enable Full Control, then click Assign.

Next:

  1. Select the system user you recently created
  2. Assign full control of the WABA to it
  3. Click on the "Assign" button

If all goes well, you should see this success message.

Success dialog confirming "People assigned β€” 1 person was added to the Laxmi Bhai Consultation Services WhatsApp account."

That's all it takes to assign a system user and phone number to WABA.

Having said that, we have one small problem to fix. It has to do with the connection status of the phone number we just assigned to our WABA.

First, let's check the status of the Phone number.

To do that, make sure you are inside the newly created WABA.

Meta Business Suite screenshot showing the WhatsApp accounts page inside a WABA, with a "Scroll Down" annotation indicating where to scroll to find the WhatsApp Manager button.

And scroll down until you find the "WhatsApp Manager" button.

WhatsApp accounts settings panel showing business information for "Laxmi Bhai Consultation Services" with account status "Approved", and a cursor pointing to the "WhatsApp Manager" button at the bottom.

Click on it, and it will take us to the "Phone numbers" screen.

WhatsApp Manager "Phone numbers" screen showing the number with a "Pending" status highlighted by a pink arrow.

And if you observe, the phone number we added to our WABA still has the Pending status.

It is pending because we didn't register the phone number with the WhatsApp Cloud API.

After the registration, the status should change to Connected.

"But we verified the phone number, right?"

Verification of the phone number is not enough. We should register it too.

You can't send messages unless the status changes from Pending to Connected.

So, let's see how to do it...

But before that, I want you to save the ID of the Phone number we just added in a safe place to use in Step 6.

So, click on the Phone number:

WhatsApp Manager Phone numbers list showing a phone number entry with a click cursor indicating to select it

This will open up the configuration screen of the Phone number, and it contains the Phone number ID:

WhatsApp Business configuration screen for the selected WABA number with a hand cursor pointing to the Phone number ID

Click the phone number ID to save it somewhere safe, and we will use it in the next step.

Step 6: Register the Phone number and subscribe to our WhatsApp Business Account (WABA)

We are almost there.

Setting up the WhatsApp Cloud API involves two more steps that Meta barely documents:

  1. Registering your phone number: This activates your number to send messages out through the API. If you don't register, you can not send messages through your n8n automation.
  2. Subscribing to our WhatsApp Business Account (WABA): This tells Meta where to deliver incoming messages. If we don't subscribe, customers can message your number all day, and your n8n automation will never hear about it.

In other words, registration handles messages leaving your business, and subscription handles messages arriving at your business.

A real conversation flows in both directions, right?

So, we need to perform both steps.

"How do we do this? I don't see any buttons".

Unfortunately, there are no buttons inside Meta for this.

To register or subscribe, we have to send HTTP requests via Postman or cURL (Client URL).

"HTTP What?"

Oh, I almost forgot.

HTTP stands for Hypertext Transfer Protocol, and it is the backbone of the internet.

I have written a detailed lesson that covers "just enough" explanation of HTTP to get the job done.

Understanding just enough HTTP to work with the WhatsApp Cloud API
This lesson acts as a foundation for understanding HTTP to perform tasks related to the WhatsApp Cloud API

Go through it before you move forward.

"Wait! Wait! I don't know how to code or use a terminal. Can we send these HTTP requests using a web browser?"

Haha! Don't worry.

This is where the Postman website comes in.

Using Postman to send WhatsApp Cloud API requests

Postman is a free tool for sending HTTP requests by hand.

Postman gives us an easy-to-use interface for sending HTTP requests for free.

No coding. No Terminal.

Actually, they also published a ready-made Postman collection for the WhatsApp Cloud API, so most requests are already set up.

So, you just fill in your own values.

It is easier than you think.

So, first, go to the Postman website and sign up for a free account:

https://www.postman.com/

Next, open up the WhatsApp Cloud API collection on Postman:

https://www.postman.com/meta/whatsapp-business-platform

Now, if you notice the sidebar on the left side of the screen:

Postman sidebar showing the Collections list with "WhatsApp Cloud API" folder

Inside the sidebar, open up the "WhatsApp Cloud API" folder:

Postman sidebar showing the WhatsApp Cloud API collection expanded, with the Registration and Webhook Subscriptions sub-folders open

If you notice, there are two sub-folders called Registration and Webhook Subscriptions.

For our two pending steps, we will work inside each of these folders.

Gather the details

Performing the above steps will require the following details:

  1. System user access token - You saved this during Step 3.
  2. WhatsApp Business Account ID - You saved this during Step 4.
  3. Phone number ID - You saved this at the end of step 5.
  4. Security Code - We will generate this in a moment

If you didn't save them, refer to the above steps and gather them.

Step 6.0: Set up the security pin via two-step verification

We can set up the PIN by making an HTTP request to the WhatsApp Cloud API.

We need to use the POST method because we are sending a PIN as data to the WhatsApp Cloud API.

We should also send the following details as part of the HTTP request:

  1. User-Access Token - This will tell the WhatsApp API that we are authorized to make this request. We will send this one as the authorization header.
  2. Version number - The version of the WhatsApp Cloud API. At the time of writing this lesson, Postman is using version 18 of WhatsApp Cloud API.
  3. ID of the Phone Number that we added to our WABA.

Also, as part of the process, we need to provide a security pin in the body of the HTTP request:

{
    "pin": "738748"
}

This pin will tighten the security for your WABA number.

For example, if you add a new phone number or want to deregister an existing one, you should enter the same security PIN again.

If you don't, the request will not be processed.

It is just like a PIN for your ATM card.

But instead of guarding your money, it protects your WABA account from misuse.

Also, don't worry about forming this HTTP request by hand because we can use the Postman UI to get the job done.

So, inside the Postman WhatsApp Cloud API collection page:

  1. Open up Phone Numbers folder
  2. And then click on Set Two-Step Verification Code

Or you can open up this link:

https://www.postman.com/meta/whatsapp-business-platform/request/5j8rbxr/set-two-step-verification-code

Next, inside the request configuration section (center part of the dashboard), click on the "Body" tab and enter a 6-digit pin:

Postman API client showing the "Set Two-Step Verification Code" POST request with the Body tab selected (step 1) and a JSON body containing the "pin"(step 2).

Please remember the PIN that you entered because you will use it in the future.

πŸ›‘
Please do not enter a PIN that is easy to guess for hackers. For example, the first guess many hackers will make is 123456, or your date of birth.

PIN should be easy for you to remember, but it must be hard for others to guess.

Next, we need to provide User-Access Token, Version, and Phone Number ID to Postman before we send the request.

And if you notice the HTTP request configuration section of Postman, it is using self-descriptive variable names for three of them:

Postman screenshot of a "Set Two-Step Verification Code" POST request showing {{Version}} and {{Phone-Number-ID}} variables in the URL and {{User-Access-Token}} in the Bearer Token field.

Variables like {{Phone-Number-ID}} are being used because these values change for every WABA account (except the version number).

"So, how do we replace these placeholders with actual values?"

Simple.

If you notice the top-right corner of the screen, there is a button for setting up variables:

Postman screenshot of a POST request to the WhatsApp Business Platform API, with a hand cursor pointing to the variables button in the top-right corner of the interface.

Click on it to open up a sidebar where you can enter values for the variables of the request:

Next, for the User-Access Token, enter the access token of your system user

πŸ’‘
You don't need to enter the version number because Postman filled it for you.

Then, enter the ID of the Phone Number you added to WABA

Finally, click on the "Send" button to set the security PIN for your Phone number.

If all goes well, you should see a success: true message after the request is complete:

Postman screenshot of a POST request to Set Two-Step Verification Code returning a 200 OK response

But if it failed for any reason, read the error message carefully, fix it, and only then move to the next step.

And now that we have set up the security PIN, next, let's use it to register our WABA phone number.

Step 6.1: Registering your phone number with WABA

Just to recap, when you add a number to your WABA, it shows up as Pending:

WhatsApp Manager Phone Numbers screen showing a newly added Indian number with a "Pending" status highlighted by a pink arrow.

So, we need to register the number by sending an HTTP request to the WhatsApp Cloud API to change this status to Connected and start sending messages.

And the HTTP request is almost the same as the request we made for setting up the PIN:

  1. We must use the POST method
  2. We need to provide User-Access Token, Version, and Phone Number ID to Postman before we send the request.
  3. One addition is that we should also provide the security PIN we generated in the previous step.

So, inside the Postman WhatsApp Cloud API collection page:

  1. Open up Registration folder
  2. And then click on Register Phone

You can also open this link directly if it works for you:

https://www.postman.com/meta/whatsapp-business-platform/request/77hl2kg/register-phone?sideView=variables

Next, inside the request configuration section (center part of the dashboard), click on the "Body" tab and replace <your-6-digit-pin> with the PIN you generated during the previous step:

πŸ’‘
Postman saved us time by prefilling the messaging_product key-value pair for us. So, leave it as is.

Next, inside the "Variables" sidebar, make sure that User-Access Token, Version, and Phone Number ID are filled correctly.

πŸ’‘
Postman prefills them automatically because you have provided them during the previous request.

Postman is smart enough to reuse the variables across all HTTP requests. But double-check the values before sending the request.
Postman showing a POST Register Phone request to the WhatsApp Graph API with a JSON body containing messaging_product and pin fields, and a cursor pointing at the Send button.

Finally, click on the "Send" button to send the registration request.

If all goes well, you should see a success: true message after the request is complete:

Postman screenshot showing a POST request to the WhatsApp Cloud API "Register Phone" endpoint with a JSON body containing messaging_product "whatsapp" and a pin, and the response body showing true for success

Also, if you now go back to the Phone number dashboard inside your WABA account on business.facebook.com, you should see the status of the Phone number as Connected instead of Pending:

WhatsApp Manager Phone numbers dashboard showing the phone number with status "Connected", highlighted by a red arrow.

And there we go!

My phone number is now successfully connected.

"Yayyyyyyyyyyy!"

Oh Yeah :)

Anyway, although we can now send messages via the WhatsApp Cloud API, we still need to subscribe to WABA webhooks to be able to receive messages via the API.

So...

Step 6.2: Subscribing to our WhatsApp Business Account (WABA)

We need to subscribe to our WABA by sending an HTTP request to the WhatsApp Cloud API.

And the HTTP request is almost the same as the request we made for registering our Phone number:

  1. We must use the POST method
  2. We need to provide User-Access Token, Version and WABA-ID to Postman before we send the request.

If you notice the Postman dashboard, there are three small changes when compared to the previous request, though:

  1. We don't need to send any details. So, we don't need to configure Body for this HTTP request.
  2. And because we are not sending a Body with the request, we don't need to send a Content-Type header.
  3. Finally, because we are subscribing to our WABA, we need to provide our WABA-ID. We don't need to provide our Phone Number ID.

So, inside the Postman WhatsApp Cloud API collection page:

  1. Open up Webhook Subscriptions folder
  2. And then click on Subscribe to a WABA
Postman screenshot showing step 1: expand the Webhook Subscriptions folder in the WhatsApp Cloud API collection, and step 2: click the POST "Subscribe to a WABA" request.

You can also open this link directly if it works for you:

https://www.postman.com/meta/whatsapp-business-platform/request/26gui66/subscribe-to-a-waba?sideView=variables&tab=overview

Next, inside the "Variables" sidebar, make sure that User-Access Token, Version, and WABA-ID are filled correctly:

Postman screenshot of the "Subscribe to a WABA" POST request with User-Access-Token, Version (v18.0), and WABA-ID filled in the Variables sidebar, and a cursor hovering over the blue Send button.

Finally, click on the "Send" button to send the subscription request.

If all goes well, you should see a success: true message after the request is complete:

Postman screenshot of a POST request to the WhatsApp Cloud API "Subscribe to a WABA" endpoint, showing a 200 OK response

And that's all.

We have now set up our WhatsApp Cloud API access correctly.

So, we should now be able to receive and send messages by integrating n8n with WhatsApp Cloud API.

Come on, let's put our API access to the test via n8n.

Step 7: Integrate n8n with WhatsApp Cloud API

If you don't have n8n installed or if you're totally new to n8n, I have written an in-depth beginners' guide to n8n:

n8n Tutorial for Beginners: Build Your First AI Automation in 45 Minutes (From Scratch)
n8n is a workflow automation tool. So, before learning n8n, it is important that you understand what a workflow truly means. So, what is a workflow? A workflow is a set of steps you follow to complete a digital task from start to finish. If a task needs more than

Go through it.

For the rest of this article, I will assume that you are comfortable using n8n.

Let's create a new workflow inside n8n:

n8n workflow editor showing an empty canvas with an "Add first step…" prompt in the center

Now, we should test whether we can receive and send messages using the WhatsApp Cloud API.

First, let's test if we can receive messages to process inside n8n.

To do that, we need to add the "On messages" WhatsApp Trigger to the workflow.

Workflow builder showing the WhatsApp Business Cloud trigger list with "On messages" highlighted and a cursor pointing to it, next to an empty "Add first step" canvas.

The "On messages" node will trigger every time we receive a message to our WhatsApp Business Account phone number.

So:

  1. Click on the "Add first step" node
  2. Search for "WhatsApp"
  3. Click on the "WhatsApp Business Cloud"
Workflow builder showing a search for "WhatsApp" in the trigger panel, with step 1 pointing to the search box and step 2 pointing to "WhatsApp Business Cloud" in the results.

Next, look for the "On messages" node and click on it to add it to the workflow.

Workflow builder showing the WhatsApp Business Cloud node list with the cursor hovering over "On messages"

As soon as you click on it, the settings of the node will open up:

n8n WhatsApp Trigger node settings panel showing the Credential field set to "No credentials yet" with a "Set up credential" button highlighted by a pointing hand icon.

And as you can see, we need to set up the credentials of our WhatsApp Cloud API.

So, click on the "Set up credential" button.

WhatsApp OAuth account credential dialog showing required Client ID and Client Secret input fields under the Connection tab, with a Save button in the top right.

Now, we need to provide the "Client ID" and "Client Secret".

If you remember, we created an app on the Meta Developer platform during the first two steps of the lesson:

Meta Developer platform overview page for the newly created "Wapp AI Agent" app, showing app details, WhatsApp use case

And when we created this app, Meta generated an ID and a secret code for this app.

To access them, go to the My Apps page on the Meta Developers site:

https://developers.facebook.com/apps/

Next, open up the app you created during the lesson:

Meta for Developers My Apps dashboard showing the Wapp AI Agent app card with a cursor pointing to it to open the app.

Now, from the left sidebar, click on the "App settings" and then click on "Basic":

Meta for Developers dashboard showing the Basic settings page with App ID and App secret fields highlighted by numbered callouts

And voila!

You can now see the App ID and its secret.

For WhatsApp Credentials inside n8n, we now need to provide the App ID and Secret to the Client ID and Client Secret fields, respectively:

Annotated diagram showing App ID maps to Client ID and App Secret maps to Client Secret in the n8n WhatsApp OAuth credential form

That's All.

Once you are done, click the "Save" button to save the credentials and test them.

WhatsApp OAuth account settings panel showing a green "Connection tested successfully" banner, with Client ID and Client Secret fields filled in and a "Saved" status in the top corner.

If all goes well, you should see the "Connection tested successfully" message.

But let's also test it from our side.

First, close the credentials pop-up inside n8n and then click on the "Execute step" button:

n8n WhatsApp Trigger node configuration panel showing "Execute step" button and ready to listen for incoming WhatsApp messages.

This will now make our n8n Workflow wait for someone to send a message to our WhatsApp Business Account number:

n8n WhatsApp Trigger node actively listening for a test event

I will now send a message to my WABA number:

0:00
/0:14

Super cool!

n8n received the message that I sent to my WABA number.

You can now process the message and reply using n8n's AI Agent and automate customer support.

And, now that we are receiving messages via WhatsApp Cloud API to n8n, let's also test sending a message.

To do that, close the WhatsApp Trigger node's settings and click the "Add node" button:

Workflow canvas showing the WhatsApp Trigger node with a "1 item" output connector; a cursor points to the "+" button used to add the next node.

Next, search for WhatsApp again and add the "Send message" node to our workflow:

n8n workflow editor showing the WhatsApp Business Cloud node panel with "Send message" listed under Message Actions, alongside a canvas containing a WhatsApp Trigger node
n8n "Send message" node Parameters tab showing the Credential field set to "No credentials yet" with a "Set up credential" button highlighted by a pointer

If you notice, we need to set up credentials for the "Send message" node, too.

WhatsApp account credential setup dialog showing required fields for Access Token and Business Account ID (WABA ID), with Allowed HTTP Request Domains set to "All".

For sending the message, instead of the App ID and the secret, we need to provide the WABA ID and the system user's access token as the credentials.

The reason is that the two nodes are doing two completely different jobs.

The "On messages" trigger is listening.

Its only concern is confirming that the incoming notifications belong to your app.

So it authenticates at the app level, using the App ID and Secret, which are the two values that identify the app itself.

The "Send message" node is acting on your behalf.

It needs to prove two separate things: 

  1. Who is sending this message
  2. And which WhatsApp account they're allowed to send from

That's why it needs the system user's access token (the identity β€” the authorized robot account we created in Step 3) along with the WABA ID (the specific WhatsApp account that the account is permitted to touch).

So, in one line:

  1. The App ID + Secret answers "which app is this?"
  2. While the access token + WABA ID answers "who is sending, and which WhatsApp account are they allowed to use?"

Two different questions, so two different sets of credentials.

And you can get them inside business.facebook.com.

If you remember, we gathered and provided the same credentials during Step 6.2 above, where we subscribed to our WhatsApp Business Account (WABA) using Postman:

Add them inside the "Send message" node credentials inside n8n and test the connection once again:

n8n WhatsApp API credentials panel showing a "Connection tested successfully" confirmation, with masked Access Token and Business Account ID fields filled in.

Now, close the credentials box so that we can configure the "Send message" node and send a test message.

Send message node parameters panel showing "Error fetching options from WhatsApp Business Cloud" in the Sender Phone Number field.

And bang! There is an error!

To send a message, we need a sender's phone number (our WABA number), which n8n automatically pulls from our WABA based on the credentials we provided.

But n8n says:

Error fetching options from WhatsApp Business Cloud

And it is my mistake.

Instead of providing the WABA ID, I provided my Phone Number ID.

So, n8n couldn't find the phone number that I added to my WABA account.

And many of us make this mistake for many reasons.

If you encounter this message, make sure you are providing the correct WABA ID to n8n.

I realized and corrected my mistake, and the error is now gone for me:

n8n WhatsApp node configuration showing a single sender phone number successfully loaded in the Sender Phone Number dropdown

I added only one phone number to my WABA, and n8n pulled it successfully.

And I will select it as the sender's phone number.

Also, if you observe the "Send message" settings, there are seven options we need to configure:

  1. Credential - We configured it just now with WABA ID and access token.
  2. Resource - It must be set to "Message", and n8n set it up for us by default. So, no changes here.
  3. Operation - It must be set to "Send", and n8n set it up for us by default. So, no changes here, too.
  4. Sender Phone Number - We must select the Phone Number that we added to our WABA. We just did it after fixing the error.
  5. Recipient's Phone Number - Enter the number of a person to whom you want to send the test message. You can also provide it dynamically from a previous node inside n8n.
  6. Message Type - We can send all kinds of messages, including images, audio, and video. But for now, we want to send a text message, and n8n selected it for us by default. So, no changes here, too.
  7. Text body - Because I selected "Text" for the message type, I need to provide a text that will be sent to the recipient.

Here is my finished setup:

WhatsApp node configuration panel with fields filled in and the red "Execute step" button highlighted by a pointing hand cursor.

Finally, to send the test message, click on the "Execute Step".

0:00
/0:10

Done!

It works <3

We are now done with integrating the WhatsApp Cloud API with n8n.

You can now create any kind of automation with WhatsApp.

Having said that, we still have to perform two more steps to be truly limitless:

  1. Verify our business details inside Meta's business portfolio - If we don't do this, Meta will put a limitation on how many messages we can send to our customers
  2. Add a payment method - If we don't add this, we can not send self-initiated outreach or marketing messages

"Brooooooooooo!"

Haha, I am sorry.

I understand this process is exhaustive. But once you do it a couple of times, you can finish all this setup in less than 15 minutes 😏

So, next and the last step...

Step 8: Verify your business

Setting up the API is the easy part.

But business verification is where most people get stuck forever.

Meta is very strict in this regard.

They care about their users so much that they can't risk losing them at any cost.

So, they only let legitimate businesses send messages to their users.

So, if you're missing a document or two about your business, or if your business details look suspicious, or if Meta feels you are sending spammy messages to your customers, your WABA account will get suspended without any remorse.

This is why you need to be very careful, honest, and attentive during the business verification process.

πŸ›‘
Note: During business verification, if you don't know the answer to something, don't guess it. Be thorough.

With that said, let's start the process.

Step 8.1: Verify your business

Open up the settings of your business portfolio on:

https://business.facebook.com

Next, if you open up the "Business Info" page, you'll see that your business is currently unverified:

Facebook Business Manager "Business info" page showing the Business verification status as "Unverified".

And to start the verification process:

  1. Find and click on the "Security Center" button from the left sidebar menu. This link is located towards the bottom 25% of the current page.
  2. And then click on the "Start verification" button

This will bring a pop-up that says what's involved:

Read it carefully, and then click the "Get started" button.

Step A: Select the country where you registered your company and click the "Next" button.

Step B: Select your business type and click the "Next" button. Mine is a sole proprietorship.

It is hard to pronounce. LOL.

Step C: Is your business officially registered or not?

Mine is a registered business. I verified mine many times and never faced any problems after selecting "Registered".

I never had to select "Not yet registered". So, I apologize to say that I don't know what happens if you go that route.

Step D: Provide business registration details such as Tax ID or Business Registration number.

I am living in India, so I provided my GST number as the Tax ID.

Depending on your country, provide the correct details here.

Steps E and F are about providing your business location address and contact information:

You must provide the company address as it appears on documents that are used for address or business proof.

Next, you need to provide contact information for your business.

Step G: Meta searches for public records of your business

Based on the details we provided so far, Meta will check if a real business exists.

If you provided accurate information, Meta will find your business listing inside the public records.

It found mine:

Also, if you notice, the listing contains the contact details of my business, and these details match closely with the details I entered during steps E and F.

I can also verify that I have access to the phone number and email address that I provided during the verification process.

This improves my odds of getting my business verification approved from Meta.

Some businesses get stuck because their address and contact information are not verifiable.

They no longer use the same phone number or email, but they don't update their documents with the new number or email.

If you are in that zone, Meta will make things a lot difficult for you.

Anyway, for now, I am not in that zone πŸ•ΆοΈ

So, I will select my business listing and hit the "Next" button.

Step H: Review the details you provided so far

Especially, review the Phone number and Email because you'll receive a confirmation code to them in the next step.

If there is any misinformation, now is the time to fix.

Step I: Confirm your connection to your business by getting OTPs to your phone and email

Meta will send a confirmation code to at least two services.

I went with SMS and email to receive confirmation codes, and gave confirmation to Meta that I have access to them:

And with this step, I submitted my information and waited for Meta to approve my business verification.

You can check the status of the verification inside the "Security Center" page of your business portfolio:

Meta Business Portfolio Security Center screenshot showing the Business Verification section with status "In review"

If you notice, there is a "Business Verification" box, and it currently says "In review".

I kept refreshing this page. My anxiety was through the roof πŸ˜΅β€πŸ’«

Finally, Meta approved my business verification in less than 15 minutes:

Meta Business Manager screenshot showing Business Verification status as "Verified"

And that's all it takes to verify your business with Meta.

For some of us, it is easy because our business details are accurate and verifiable.

For some of us, it is much trickier and can easily get stuck for days.

And because Meta doesn't provide detailed feedback, there is not much we can do if we get stuck anyway.

So, I just hope you succeed on the first attempt. If not, fix your documents and details.

"Hmmmm. Are we done yet? This tutorial feels like it is going forever!"

Haha! Sorry about that.

We just need to perform one last step to be truly done with the API setup and integration with n8n.

And that is...

Step 9: Add a payment method to your WhatsApp Business Account (WABA)

We need to add a payment method because WhatsApp charges you money when you initiate messages to your customers.

You will not be charged for receiving messages. You'll not be charged to respond to a customer's query if you can reply within the next 24-hours after the message is received.

But you will get charged:

  1. If you initiate the conversation
  2. If you failed to respond to the customer's query within 24-hours
  3. If you send promotional messages

Before we go on, it's worth understanding why that 24-hour rule exists, because at first it looks random.

But once it clicks, the whole pricing model makes sense.

Here is the thing: WhatsApp doesn't charge you per message. It charges you per conversation.

When a customer messages you first, that opens what WhatsApp calls a 24-hour customer service window.

Inside that window, every reply you send back is free.

This is because the customer started the conversation and effectively signaled "yes, I want to hear from this business."

WhatsApp has no reason to charge you for a conversation the user invited.

But the moment that the 24-hour customer service window closes or the moment you are the one starting the conversation instead of the customer, WhatsApp treats it as a new, business-initiated conversation.

And that's the kind it charges for.

You can read more about it here:

Business Platform Pricing
Deliver on business messaging goals with transparent WhatsApp Business Platform pricing. Explore WhatsApp API pricing to do more with conversations.

The pricing also depends on the type of message, the customer's country, etc.

For example, if you are sending marketing outreach messages for customers in North America, each delivered message costs you $0.0250.

And many business owners are okay with this pricing because it is affordable for them.

Anyway, the bottom line is:

  1. WhatsApp Cloud API is not free, depending on the type of messages you are sending to your customers.
  2. And you need to add a payment method to avoid failures when sending messages.

So, let's quickly see how to add a payment method and get done with this tutorial for good πŸͺ‚

We need to add the payment method at the WhatsApp Business Account (WABA) level.

So, first, open up the settings of your business portfolio:

Next, from the left sidebar menu, click on "WhatsApp accounts" and then make sure your WABA is selected.

Meta Business Suite Settings: step 1 click "WhatsApp accounts" in the left sidebar, step 2 select your WABA from the list on the right.

Now, inside your WABA info section, if you scroll down a bit, you'll find a section for "Payment method," and it is currently empty.

To fix it, click on the "Payment Settings" button, and you'll then be taken to the "Billing & payments" screen of your WABA account:

WABA Billing & payments screen showing a $0.00 balance, an empty Payment methods section, and the "Add payment method" button highlighted with a pointer cursor.

Finally, click on the "Add payment method" button to add your card details.

That's all.

And once you add the payment method, it might not immediately reflect on your WABA account.

For me, it took days. It could be a buggy dashboard.

But here is how it looks after my payment method was added:

WhatsApp Business Manager Summary tab showing "Laxmi Bhai Consultation Services" as verified and approved, with a VISA card listed as the payment method.

Add greens. It is a treat to watch them.

That's all it takes to add a payment method.

The Conclusion

We are now done with all the steps for successfully integrating WhatsApp Cloud API with n8n.

I know it has been an exhaustive journey for you.

But now that you have reached here, you can now automate your WhatsApp messaging however you want by being reasonable and not spammy.

Also, to use the Meta platform to access the WhatsApp Cloud API, you need to be a verified business owner who can tick all the boxes. 

Sometimes, your access gets rejected even when you have everything in place, or your account can get suspended even if you are doing everything right.

So, many of us get stuck forever if we are purely depending on the Meta platform.

And this is where third-party services like Twilio or software like GoHighLevel, ManyChat come in.

These third-party services are trusted partners of the WhatsApp Cloud API, and they allow us to bypass the strict verification process of Meta.

Many people use these third-party services for this very reason.

So, in the next lesson, I will teach you how to perform the same n8n-WhatsApp integration using Twilio.

Having said that, I recommend you try accessing WhatsApp Cloud API through Meta's official site first. 

Only if that doesn't work, explore other techniques. 

This eliminates dependency on third-party services when possible.

Anyway, take care and happy automation :)