Embedded Signup v2 is deprecated on October 15, 2026. Use v4 configurations only.
Architecture
Platform SMS helpers are SMS/MMS only — not WhatsApp. SIP trunk voice on a marketplace number is independent of WhatsApp Cloud API and of SMS webhooks.
Prerequisites (platform)
- Meta Business portfolio with Business Verification and 2FA
- New Business-type Meta app (do not reuse an old app)
- Products: WhatsApp, Facebook Login for Business, Webhooks
- App Review advanced access:
whatsapp_business_management,whatsapp_business_messaging - Tech Provider / Access Verification (raises weekly onboard limit 10 → 200)
Meta App Dashboard checklist
1. Create the app
- Go to developers.facebook.com → Create App → type Business
- Do not put “WhatsApp” in the app name (Meta trademark rules)
- Attach your verified Business portfolio
2. Facebook Login for Business
- Open Facebook Login for Business → Settings → Client OAuth settings
- Enable: Client OAuth login, Web OAuth login, Enforce HTTPS, Embedded Browser OAuth Login, Strict Mode, Login with the JavaScript SDK
- Allowed domains and Valid OAuth redirect URIs: your production domain and preview domains (HTTPS only), e.g.
https://app.famulor.io
3. Embedded Signup configuration
- Facebook Login for Business → Configurations → Create from template
- Choose WhatsApp Embedded Signup Configuration With 60 Expiration Token
- Copy the Configuration ID →
META_EMBEDDED_SIGNUP_CONFIG_ID/NEXT_PUBLIC_META_EMBEDDED_SIGNUP_CONFIG_ID
4. App webhooks (platform callback)
- WhatsApp → Configuration → Webhook
- Callback URL:
https://app.famulor.io/api/webhooks/meta/whatsapp-platform - Verify token: same value as
META_WEBHOOK_VERIFY_TOKEN - Subscribe at least:
account_update,messages,calls,message_template_status_update
/api/webhooks/messaging/whatsapp/{connectorId} so multi-tenant routing matches the rest of the messaging channels. Fields that do not support override (e.g. some account/template events) stay on the platform callback.
5. Environment variables
6. App Review and Live mode
- While the app is in Development, only admins/developers/testers can complete Embedded Signup
- Submit App Review for the WhatsApp permissions, then switch to Live
- Subscribe to
account_updatebefore onboarding real customers
Product UX (workspace)
Settings → Channels → WhatsApp- Pick an assistant
- Optionally select a marketplace number (SMS-capable preferred for Meta OTP)
- If a marketplace number is selected, we temporarily point its SMS webhook at our OTP capture endpoint (phone/SIP voice unchanged) and show Meta’s OTP in the UI
- Click Connect with Meta → complete the popup
- Server: exchange code → business token → subscribe WABA → webhook override → register phone → create connector (
onboarding_source=embedded_signup) - Instruct the customer to add a payment method in WhatsApp Manager before high-volume messaging
Marketplace numbers + OTP
Buying a number in Settings → Numbers never auto-enables WhatsApp.
Public API
GET /api/whatsapp/embedded-signup/config— public app/config IDs + enabled flagPOST /api/whatsapp/embedded-signup— complete onboarding (code,waba_id,phone_number_id,assistant_id, …)POST/GET/DELETE /api/whatsapp/otp-session— marketplace OTP capture lifecycle- MCP:
complete_whatsapp_embedded_signup