Preferred onboarding (platform domain only, e.g. app.famulor.io): WhatsApp Embedded Signup (Connect with Meta). On whitelabel custom domains, workspaces use manual credential paste only.
Marketplace numbers (Settings → Numbers) are PSTN/SIP for phone voice. The same E.164 becomes WhatsApp only after Meta verifies it (OTP). Your SIP trunk settings are independent of WhatsApp Cloud API. Platform SMS helpers are SMS/MMS only — not used for WhatsApp.
Prerequisites
Workspace users- Plan includes WhatsApp text and/or WhatsApp voice
- Webhooks use your base app URL (platform host or verified custom domain). After you connect, Settings shows the exact webhook URL to paste into Meta if needed — no server env access required
Product UI
- Connect with Meta (Embedded Signup) — pick assistant, optional marketplace number, OTP helper for marketplace SMS
- Or paste credentials manually (token, app secret, verify token, phone number ID, WABA ID)
- Toggles: text / voice inbound / voice outbound
- Edit a connection → WhatsApp Sender Details (display name, AI auto-responses, keep unread, business profile, Sync Profile to WhatsApp, calling readiness)
- Select Templates beside a sender to open its dedicated template page. Sync with Meta follows every result page, imports templates created in WhatsApp Manager, and refreshes approval status. Add template lets you create a custom draft or browse the official template library by language with a live phone preview. Variables must be numbered contiguously (
{{1}},{{2}},{{3}}) and mapped to a system variable, lead attribute, assistant variable, or custom key. URL and phone-number buttons must be configured before a library template is added. - Test WhatsApp call (
POST /api/calls/whatsapp-outbound)
https://app.famulor.io/api/webhooks/messaging/whatsapp/{connectorId}Subscribe: messages, calls, message_template_status_update (API v23/v24). For voice, also enable calling on the phone number (Edit → Enable calling on Meta).
Campaigns
Choose WhatsApp in the campaign wizard to send an active sender’s approved text template once per lead. Saved template bindings are prefilled and can be overridden per campaign. Mappings can use canonical contact fields, read-only channel/system variables, lead attributes, assistant variables, or a custom lead key. WhatsApp Call (Beta) requires workspace Beta Features,multichannel_campaigns, whatsapp_voice, an outbound-ready sender, and a specifically selected APPROVED call-permission template for that sender (channel_config.permission_template_id). Campaign create and update fail closed without it; legacy campaigns keep their automatic fallback until edited. Business-initiated calling also depends on Meta availability, region, and explicit customer permission. Permission requests and their visible Awaiting permission delivery state are handled automatically. Inside the 24-hour service window the platform uses Meta’s interactive request; outside it, the selected approved template opens the request. A grant only resumes the lead while its campaign is running.
Voice campaigns may use an approved WhatsApp template as their single post-retry follow-up. Successful calls, suppressed contacts, and manually paused campaigns never create that follow-up.
History
- Text conversations: channel WhatsApp (
messaging_*tables) - Voice: channel WhatsApp voice (
calls.metadata.channel = whatsapp_voice)
Billing
- Text: existing messaging receive/send credits
- Voice: existing voice-minute credit reservation/settlement (same as phone/SIP calls)
- Meta conversation pricing: customer payment method in WhatsApp Manager (Tech Provider)
Public API
- Embedded Signup:
GET/POST /api/whatsapp/embedded-signup, OTP session routes - Messaging connectors:
GET/POST /api/v1/messaging-connectorswithplatform=whatsapp - Templates:
GET/POST /api/v1/whatsapp/templates; usesource=library,language,limit, and the returnedpaging.aftercursor to browse the official library.parameter_bindingsmaps positions such as1orheader.1to variable keys. Supplylibrary_template_namepluslibrary_button_valueswhen a preset has URL or phone-number buttons.action=updateedits drafts locally or sends component changes for an existing provider template. API and MCP clients can create the same call-permission template by supplying aBODYandCALL_PERMISSION_REQUESTcomponent. - Outbound voice:
POST /api/v1/calls/whatsapp-outbound - History AI resume:
POST /api/v1/history/actionswithaction=resume_ai,kind=messaging, and the conversation ID - Calling management:
GET /api/v1/whatsapp/callingreads readiness (Meta call settings, webhook subscription, quality rating) for a connector’s business number;POST /api/v1/whatsapp/callingrunsenable_calling,resubscribe, orensure_voice. - Sender assets:
POST/DELETE /api/v1/whatsapp/connectors/{id}/assetsupload or remove a Business Profile logo/banner (URL or base64). - Messenger Connect can now be driven entirely through the API too:
POST /api/v1/messenger/facebook-login/pageslists the Facebook Pages a user access token can manage, ahead ofPOST /api/v1/messenger/facebook-login. - MCP: WhatsApp template tools +
complete_whatsapp_embedded_signup+start_whatsapp_outbound_call+get_whatsapp_calling_status+manage_whatsapp_calling+upload_whatsapp_sender_asset/delete_whatsapp_sender_asset+list_messenger_facebook_pages