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

  1. Go to developers.facebook.com and log in. If it's your first time, accept the developer terms.
  2. Click My Apps → Create App.
  3. 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.)
  4. Give it a name (only you see it), enter your email, and pick your business portfolio — or create one.
  5. 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.

  1. Go to business.facebook.com/settings → Users → System users.
  2. Click Add, give it a name like whatsapp-sender, and choose the Admin role.
  3. With the system user selected, click Assign assets → Apps → select your app → give it Full control.
  4. Also assign your WhatsApp account (under WhatsApp accounts) with full control.
  5. Click Generate new token, select your app, choose Never for expiry, and tick these permissions:
    • whatsapp_business_messaging
    • whatsapp_business_management
    • business_management
  6. 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:

  1. In your app, WhatsApp → API Setup → Add phone number.
  2. Enter a display name (your business name — Meta reviews it; it must match your brand) and your category.
  3. 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 free