How to set up the WhatsApp Cloud API (2026 step-by-step guide)
Create a Meta app, get a WhatsApp Business Account, send your first message from the free test number, then make it permanent with a system-user token — every step, with the parts Meta's docs skip.
Updated September 25, 2026 · 6 min read
Meta's WhatsApp Cloud API is the official, free-to-access way to send WhatsApp messages from software. There's no middleman: Meta hosts the API, and you pay Meta only for the messages you send. The catch is the setup — it's spread across three different Meta dashboards, and a couple of steps (like the permanent token) are easy to get wrong.
This guide walks through all of it, in order, in about 20 minutes. You don't need to be a developer.
Using SendFromChat? You can skip this whole guide. Click Continue with Facebook on the Connect WhatsApp page, pick your number, and you're connected — no Meta app, token or webhook setup. This guide is for doing it by hand with your own Meta app.
What you'll end up with
By the end you'll have four things, which is all any WhatsApp tool (including ours) needs to send on your behalf:
| What | Looks like | Where it comes from |
|---|---|---|
| WhatsApp Business Account ID (WABA ID) | a long number, e.g. 104598623… |
Meta app → WhatsApp → API Setup |
| Phone number ID | a long number — not your phone number | Meta app → WhatsApp → API Setup |
| Access token | a long string starting with EAA |
Business Settings → System users |
| A phone number that can send | Meta's free test number, then your own | Meta app → WhatsApp → API Setup |
Before you start
- A Facebook account. Meta ties developer access to a personal profile. It isn't visible to your customers.
- A Meta Business portfolio (formerly "Business Manager"). You can create one during setup if you don't have one.
- A phone number for WhatsApp Business — but not yet. You'll test with Meta's free test number first, and only add your real number once everything works. The real number must not be registered on the regular WhatsApp or WhatsApp Business app at the same time (you can migrate it, or use a new number).
Step 1: Create a Meta developer app
- Go to developers.facebook.com and log in. If it's your first time, accept the developer terms.
- Click My Apps → Create App.
- When asked what the app is for, choose Other, then app type Business. (Meta renames these screens occasionally — you're looking for the option that lets you add WhatsApp.)
- Give it a name (only you see it), enter your email, and pick your business portfolio — or create one.
- On the app dashboard, find WhatsApp in the list of products and click Set up.
Meta now creates a WhatsApp Business Account for you and attaches a free test phone number to it.
Step 2: Send your first test message
Open WhatsApp → API Setup in the left menu of your app. You'll see:
- a temporary access token (valid for 24 hours),
- the test number's phone number ID and your WhatsApp Business Account ID,
- a "To" field.
Add your own mobile number as a recipient (Meta sends a verification code to it — test numbers can only message up to five verified recipients). Then press Send message. Within seconds you should receive Meta's hello_world template on WhatsApp.
Write down the phone number ID and WhatsApp Business Account ID now. You'll paste both into SendFromChat (or any other tool) later.
If the message doesn't arrive, the usual causes are: the recipient number wasn't verified, it was entered without the country code, or the WhatsApp app on that phone is logged into a different number.
Step 3: Make a permanent access token
The temporary token on the API Setup page expires after about 24 hours. For anything real you need a permanent token from a system user — a non-human account in your business portfolio.
- Go to business.facebook.com/settings → Users → System users.
- Click Add, give it a name like
whatsapp-sender, and choose the Admin role. - With the system user selected, click Assign assets → Apps → select your app → give it Full control.
- Also assign your WhatsApp account (under WhatsApp accounts) with full control.
- Click Generate new token, select your app, choose Never for expiry, and tick these permissions:
whatsapp_business_messagingwhatsapp_business_managementbusiness_management
- Copy the token (it starts with
EAA). You won't be able to see it again — store it somewhere safe.
This token never expires unless you revoke it. Treat it like a password: anyone who has it can send messages as your business.
Step 4: Add a payment method in Meta
Meta charges per template message (see how WhatsApp API pricing works). To send to anyone beyond your test recipients, add a card:
- In Business Settings → Accounts → WhatsApp accounts, open your account and go to Payment settings (Meta may call it "Add payment method").
Replies to customers inside the 24-hour window after they message you are free up to 1,000 a month per business phone number (Meta pricing page, checked 23 Oct 2026), so small tests cost little or nothing.
Step 5: Add your real phone number
Once testing works, add the number your customers will see:
- In your app, WhatsApp → API Setup → Add phone number.
- Enter a display name (your business name — Meta reviews it; it must match your brand) and your category.
- Verify the number by SMS or voice call.
The new number gets its own phone number ID — that's the one to use from now on. New numbers start with a limit of messaging 250 people per 24 hours; see WhatsApp messaging limits for how that grows.
Step 6: Set up the webhook (so replies reach you)
Sending works without a webhook, but nothing incoming does: customer replies, delivery receipts ("delivered", "read"), template approvals. Webhooks are how Meta tells your software about them.
In your app open Use cases → Customize (next to WhatsApp) → Configuration — on older apps it's WhatsApp → Configuration. In the Webhook box enter:
- Callback URL — your tool's webhook address. For SendFromChat, the Connect WhatsApp page shows your number's own URL.
- Verify token — any secret string your tool gives you.
Then under Webhook fields, subscribe to messages and message_template_status_update.
Step 7: Business verification (optional to start, required to grow)
You can send right away without it, but business verification unlocks higher messaging limits, a verified display name, and more phone numbers. Start it in Business Settings → Security Center → Start verification. You'll need your legal business name, address, and a document that proves them (for example a tax registration or utility bill), and a website on your own domain. It usually takes from a few days to two weeks.
Common problems
"Invalid OAuth access token" / "Authentication Error" — the token expired (it was the 24-hour temporary one) or is missing a permission. Generate a system-user token as in step 3.
Message "sent" but never arrives — free-form (non-template) messages only deliver within 24 hours of the person's last message to you. Outside that window, WhatsApp accepts the request and silently drops it. Use an approved template instead. More in the 24-hour window explained.
"Recipient phone number not in allowed list" — you're still on the test number, which can only message verified recipients. Add the recipient in API Setup, or switch to your real number.
Template rejected — see why WhatsApp templates get rejected.
The shortcut
SendFromChat skips all of the above: Continue with Facebook, pick your number, done — replies, delivery receipts and templates work straight away. Then create templates, upload a contact list and send from the dashboard, by asking Claude, ChatGPT or Cursor, or from your own app with the REST API.
Already built your own Meta app with the steps above? You can connect it too: paste your access token on the Connect WhatsApp page under Advanced, and SendFromChat finds your WhatsApp account and number from it.
Do this from your AI assistant
SendFromChat connects Claude, ChatGPT, Cursor or any MCP client to the WhatsApp Business API — templates, bulk sends, inbox, chatbots and sequences, just by asking. 30 days free, no card.
Start freeMore guides
Send WhatsApp messages from PHP and Laravel: a working example
Send WhatsApp template messages from plain PHP (cURL) or Laravel's HTTP client with a REST API — test keys, safe retries, errors by type and signed webhook verification.
WhatsApp for Black Friday: a dated plan to be ready to send on 27 November 2026
Black Friday is Friday 27 November 2026. A step-by-step plan for a first WhatsApp campaign - connect a number, collect opt-in, get templates approved, warm up and send - with the limits that decide how many people you can reach.
Track WhatsApp delivery status in your app: sent, delivered, read and failed
Store the status of every WhatsApp message you send, handle receipts that arrive late or twice, read the failure reason, and fall back to polling when a webhook is missed. TypeScript example with a REST API.
Do you need a Facebook login for the WhatsApp Business API? What 'Continue with Facebook' asks
What the Facebook window asks you to do when you connect a WhatsApp number, which two permissions it gives an app, what you keep, and how to remove the access later. Based on Meta's own pages, read 31 Oct 2026.