Prerequisites
- A Meta developer account — developers.facebook.com
- A Facebook Business Manager (free to create)
- A phone number you can receive SMS/calls on for OTP verification (for production). For dev, Meta gives you a free test number that can message up to 5 verified recipients.
- Friday running with the bundled tunnel active, or a real HTTPS domain.
Setup
1
Create a Meta app
- Open developers.facebook.com/apps and click Create app.
- App details — pick an app name.
- Use cases — choose Other → Business → then tick Connect with customers through WhatsApp.
- Business portfolio — select an existing Business portfolio or create a new one. Pick Verify later unless you already have the business paperwork ready.
- Requirements → Overview → Create app. Meta re-prompts for your Facebook password before finalizing.
- On the “Welcome to WhatsApp Business Platform” page, accept the Facebook Terms for WhatsApp Business and Meta Hosting Terms and click Continue.
- Keep the default Opt in to all current and future WhatsApp accounts, then Continue → Save.
2
Create a permanent access token
- Open business.facebook.com/latest/settings/system_users and select the right business at the top-left.
- Users → System users → click Add.
- Fill in the form — name the system user (avoid hyphens), set role to Admin, then Create system user.
- Click Assign assets → pick WhatsApp accounts → check your WhatsApp Business Account → toggle Everything on → Assign assets → Done.
- Accounts → Apps, click your app, then Assign people → check the system user → toggle Manage app on (Full control) → Assign.
- Back on System users → <your system user> click Generate token:
- Select your Meta app → Next
- Set expiration: Never → Next
- Tick both
whatsapp_business_messagingandwhatsapp_business_management→ Generate token - Copy the token immediately — the popup shows it once.
3
Collect the other two values
4
Connect WhatsApp in Studio
- In Studio, select your space from the sidebar and click Info.
- Find the Communicators card and click Connect next to WhatsApp.
- Paste the Access Token, App Secret, and Phone Number ID into the form, then submit.
5
Subscribe to the messages webhook field
Meta requires you to opt in to the events you want to receive.
- In the Meta dashboard, left nav Configuration (under “Connect on WhatsApp” use case).
- In the Webhook fields table, find
messagesand toggle its Subscribe switch. Optionally also subscribe tomessage_status/message_echoes.
6
Add recipients (test number only)
If you’re using Meta’s free test number, WhatsApp will only deliver outbound messages to pre-verified recipients. Inbound is unrestricted.
- Left nav → API Setup.
- Click the To combobox → Manage phone number list.
- Type the 10-digit national number. Click Next. Meta sends a WhatsApp message to that number with a 5-digit verification code.
- Enter the code into the verification modal.
7
Talk to your bot
From a verified WhatsApp number on your phone, send a message to the business number. It should appear in Studio with a green WHATSAPP badge, and replies flow back automatically.
Troubleshooting
Webhook fails to register from Studio
Webhook fails to register from Studio
Usually a token issue. Make sure your access token has both
whatsapp_business_messaging and whatsapp_business_management scopes, and that the system user has been assigned the WhatsApp Business Account.Signature verification errors
Signature verification errors
app_secret doesn’t match the App Secret under App Settings → Basic.
Re-copy and reconnect via Studio; any whitespace or truncation fails
verification.Outbound replies fail with 'Access denied' (HTTP 403)
Outbound replies fail with 'Access denied' (HTTP 403)
You’re using the 24-hour temporary access token from WhatsApp → API
Setup and it expired. Create a permanent System User token following the
steps above and reconnect.
Test number recipient limit (5)
Test number recipient limit (5)
Production requires registering a real business number with OTP verification — free test numbers are capped at 5 approved recipients and cannot be promoted.
Production notes
- Meta rotates App Secrets on request under App Settings → Basic → Reset. After rotating, reconnect WhatsApp in Studio so the new secret is stored.
- WhatsApp message history cannot be fetched via the Cloud API — only messages received while Friday is running are available as conversational context.
- You can’t edit or delete already-sent WhatsApp messages. Streaming replies are sent as a single message once the response is complete.
Configure via YAML
For CI or fully scripted setups, paste credentials directly intoworkspace.yml or the .env file in the Friday home directory (default ~/.friday/local/.env). You’ll also need to set the callback URL and verify token in Meta’s dashboard manually.
- Credentials inline
- Credentials via env
workspace.yml
openssl rand -hex 32. Then in the Meta dashboard’s Configuration panel, paste the Callback URL as <tunnel>/platform/whatsapp and the Verify token you chose, click Verify and save, and subscribe to the messages field.
