WhatsApp

The token from the obvious button is the wrong one.

Go to business.facebook.com/settings/system-users, create a System User with the Admin role, give it Full control of your WhatsApp Business Account, then generate a token with expiration Never. Six clicks, in order, below.

Step by step

Create the System User and its token

1

Open System Users in Business Settings

Go to business.facebook.com/settings/system-users. If that link lands you somewhere else, open Meta Business Suite, then Settings (or Business settings) → UsersSystem Users.

Only a business portfolio admin can see this screen. If Users has no System Users entry, you are looking at a personal profile rather than a business portfolio, or you are not an admin of it.

2

Add a System User with the Admin role

Click Add, give it any name you will recognise later, and choose the Admin role.

A System User is not a person and has no login. It exists so your WhatsApp connection stops depending on one employee's Facebook account.

3

Assign your WhatsApp Business Account with Full control

Select the System User, click Add Assets, pick WhatsApp Accounts, tick your WhatsApp Business Account and choose Full control.

Skip this and everything else still looks fine: the token is valid, and it simply cannot touch your WhatsApp account. Partial access is not enough — templates and number management need full control.

4

Generate the token

Click Generate new token, choose the app you use for WhatsApp, and tick both of these permissions:

  • whatsapp_business_messaging — sending and receiving messages.
  • whatsapp_business_management — numbers and message templates.

Also tick business_management if it is offered. It is what lets us detect your WhatsApp Business Account for you instead of asking you to paste its ID.

5

Set expiration to Never the whole point

In the same dialogue, set Token expiration to Never. The other option, 60 days, works perfectly on the day you paste it and then stops WhatsApp two months later with no warning anywhere.

6

Copy the token now

Meta shows it once. Copy it straight into the connect form, or into your password manager. If you lose it, you cannot read it back — you generate a new one.

Why this matters

A personal token dies silently — this really happened here

Not a theoretical risk. It has taken a live WhatsApp connection down on this product.

A token generated from your own Facebook account is tied to that account. Change your Facebook password and Meta invalidates it — the session it belonged to is gone. Nothing breaks loudly. Sending stops working, incoming messages stop arriving, and no screen in Meta announces it. On one live account here, exactly that happened: the WhatsApp connection was reported as working while every message quietly failed, and the cause was a password change days earlier.

A System User token has no owner to change a password. That single difference is the difference between working and silently broken.

Two other tokens are worse still, and both are easier to find than the right one:

  • The temporary token on the API Setup screen. It expires in 24 hours. It is there for developers testing with a test number.
  • A 60-day user token. It works today. It ends your WhatsApp service on a date nobody has written down.
What we do with it

We check the token before anything is saved

In your dashboard at app.orcalinq.com, open ChannelsWhatsApp and choose to connect your own WhatsApp Business account. Paste the System User access token, your App ID and your App secret. That first step only reads your Meta account — nothing is stored.

On the next screen we tell you what Meta said about the token:

  • It expires. You get a red panel: "This token expires in N days — WhatsApp will stop working", with the exact date. You can continue with it, but you have been told.
  • A permission is missing. We name it: "Missing permissions: … Sending messages or managing templates will fail until you regenerate the token with both permissions ticked."
  • Meta rejected it outright. Usually the token and the app secret come from two different apps. They must belong to the same app.
  • We could not find a WhatsApp Business Account. See the next section — this one is normal more often than it is wrong.

Once you pick your number we finish the setup for you: point Meta's webhook at your inbox, subscribe your app to your WhatsApp Business Account, and register the number on the Cloud API. Anything we cannot do from here comes back as the exact instruction to do it by hand, rather than a failure you have to interpret.

The confusing part

"Couldn't find a WhatsApp Business Account" is often not your mistake

A System User with broad access carries the WhatsApp permissions against all of your assets rather than a named list. Meta's own token debugger shows this as "Applies to all objects". That is normal and not something you need to fix.

The side effect is that Meta's "list the WhatsApp accounts this token can reach" call returns nothing for an account that isowned by your business — while the same token can read that account perfectly once you name it. So enumeration comes back empty and the account is there all along.

That is why the connect form has a WhatsApp Business Account ID (optional) box. Leave it blank the first time. If the screen says it could not find an account, paste your WABA ID in and run it again.Where to find that ID.

Two things worth checking first, because they cause the same message: the WhatsApp account really is assigned to this System User with Full control (step 3), and the token carries business_management (step 4).

Later on

Replacing a token

Generate the new token in Meta, then run ChannelsWhatsApp → connect your own account again with the new value. The screen warns you that WhatsApp is already connected and that finishing overwrites the stored credentials — which is exactly what you want. There is no separate "update token" screen; reconnecting is the update.

The same applies if you ever reset your App secret in Meta. Incoming messages are checked against it, so they stop being accepted until you reconnect with the new secret.

If that did not work

When the screens do not match

  • No "System Users" under Users. You are in a personal profile, not a business portfolio, or you are not an admin of the portfolio. Ask the portfolio admin to add you as an admin, or to create the System User and send you the token.
  • "Add Assets" does not offer WhatsApp Accounts. The WhatsApp account is not in this business portfolio. That happens when the app and the WhatsApp account were created under two different portfolios. Use the portfolio that actually holds the WhatsApp account.
  • "Generate new token" does not list your app. The System User needs access to the app as well. Assign the app to the System User under Add AssetsApps, then try again.
  • Only "60 days" is offered for expiration. We cannot tell from here why Meta withholds Never for a given portfolio, and we will not guess. Generate the 60-day token so you can get going, write the expiry date in your calendar, and try again for a permanent one later. We show you that date on the connect screen every time, so it is never a surprise.
  • Meta says the token is not valid. Check you pasted it whole — these tokens are long and easily truncated — and that the app secret belongs to the same app.
  • Still stuck. Email support@orcalinq.com with your App ID and the message on screen. Never send the token or app secret by email.

Token in hand?

Channels → WhatsApp → connect your own account. We read your Meta setup, you pick the number, we finish the wiring.