Skip to main content

WhatsApp Embedded Signup

WhatsApp Embedded Signup connects a Meta business portfolio to Telnyx. The business completes Meta’s signup window, and Telnyx then provisions the WhatsApp Business Account (WABA) and its phone numbers for Cloud API messaging. Tech providers that onboard their own customers use the Tech Provider guide instead.

Prerequisites

Telnyx account:
  • A Telnyx account above the trial level. Trial accounts cannot use WhatsApp.
Meta business portfolio:
  • A Facebook account with admin access to a business portfolio, or permission to create one during signup
  • Business verification is not required to start. Meta applies a messaging limit of 250 to new business portfolios, and business verification is one of the ways to raise it.
  • The business must comply with WhatsApp’s Commerce Policy
Phone number:
  • A Telnyx number or a number from another carrier. See Phone numbers.
  • Able to receive an SMS or a voice call for Meta’s verification code
  • Not registered to another WhatsApp account, unless it is migrated from another provider
  • For standard Cloud API signup, not active in the WhatsApp or WhatsApp Business app. To keep using an existing WhatsApp Business app number, use WhatsApp Coexistence.

Phone numbers

The business enters and verifies the number in Meta’s signup window. The number does not need to be on Telnyx, and Telnyx does not import or port it. After signup, assign each number to a messaging profile to receive inbound WhatsApp messages. See Signup webhook.

Meta signup window

Start Embedded Signup from Messaging Suite → WhatsApp Messaging in the Telnyx Portal with Connect WhatsApp Business, Add Account on the Business Accounts tab, or Add Number on the WhatsApp Numbers tab. Meta’s signup window then handles the business-side steps:
1

Grant permissions

Log in with Facebook and grant the whatsapp_business_management and whatsapp_business_messaging permissions.
2

Select a business portfolio

Select an existing business portfolio or create a new one.
3

Select a WhatsApp Business Account

Select an existing WhatsApp Business Account or create a new one. Meta creates the WABA, not Telnyx.
4

Add and verify the phone number

Enter the phone number and verify it with the code Meta sends by SMS or voice call.
Some platforms, including Meta, may not deliver SMS verification codes to virtual numbers (VoIP and DID ranges). Meta rates SMS OTP delivery to VoIP numbers as Not Recommended, while voice OTP is Standard (see Meta’s phone number requirements). If the SMS code doesn’t arrive, request verification by voice call instead.
Telnyx then provisions the account asynchronously and tracks progress in a signup session.

Provisioning states

The signup session moves through these states in order. The state field shows the current step, or the step that failed. The status field reports the session outcome: A SUCCESS session can still list errors. Telnyx records an error for each retried attempt, and a phone number that fails registration does not stop the session, unless the number is active in the WhatsApp Business app. Check each number’s status after signup.

Check signup status

Retrieve a signup session with GET /v2/whatsapp/signup/{session_id}/status:
This example shows a session that failed at the credit line step:
List finished signup sessions with GET /v2/whatsapp/signup. Filter by WABA with filter[waba_id], or by the tech provider’s customer reference with filter[customer_id]:

Signup webhook

Telnyx sends a whatsapp.waba_added event when a signup session succeeds or fails. Set the destination with PATCH /v2/whatsapp/user_data:
The event payload contains: When a phone number fails registration for a reason other than being active in the WhatsApp Business app, Telnyx sends a FAILURE event, continues provisioning, and sends another event for the same event_id when the session ends. Telnyx sends events only when webhook_url or webhook_failover_url is set. A session that fails before a WABA is identified sends no event. Inbound messages for a provisioned number are delivered to the webhook of the messaging profile assigned to that number. Assign the profile by setting profile_id with PATCH /v2/whatsapp/phone_numbers/{phone_number}/profile. See Receiving Webhooks.

Verify the result

After the session reaches SUCCESS, list the WABAs with GET /v2/whatsapp/business_accounts and retrieve each number with GET /v2/whatsapp/phone_numbers/{phone_number}. The WABA status is derived from Meta’s account_review_status and business_verification_status: INACTIVE does not block sending. Meta applies the messaging limit for unverified businesses until business verification completes. The phone number status is Meta’s value. A number is ready for Cloud API messaging when status is CONNECTED. Coexistence numbers also need coexistence_state to reach active. See WhatsApp Coexistence.

Remove a phone number

DELETE /v2/whatsapp/phone_numbers/{phone_number} deregisters the number from Cloud API at Meta and removes it from Telnyx. The number stays in its WhatsApp Business Account at Meta. To register it in a different WABA, first delete it from the original WABA in WhatsApp Manager or migrate it through Embedded Signup. Coexistence numbers cannot be removed through this endpoint. Disconnect them from the WhatsApp Business app instead. See Disconnect coexistence.

Next steps

Send Messages

Send templates, text, media, and interactive messages

Quickstart

Send a first WhatsApp message end-to-end

Receiving Webhooks

Handle inbound messages and delivery status callbacks

Troubleshooting

State: SHARE_CREDIT_LINEMeta rejects the credit line in these cases:
  • is already using a payment method: The WABA already has a payment method, for example from a previous provider or its own Meta billing, so Meta does not attach the Telnyx credit line. Select or create a different WABA in the signup window. To move a number from the old WABA, delete it there first.
  • Credit Allocation Not Allowed During Month-End Close: Meta’s monthly billing close is running. Retry once the close completes, usually within the first few days of the month.
  • Balance from previous month: The WABA has spend from the previous billing cycle on its own Meta billing. Retry once that billing is settled.
State: SUBSCRIBE_WEBHOOKS or ASSIGNED_USERSerrors contains Telnyx cannot access WhatsApp Business Account. The WABA was not shared with Telnyx during signup. Grant the Telnyx system user named in the error the MANAGE task on the WABA, then retry. Tech providers can avoid this by passing extras.setup.solutionID in Embedded Signup. See the Tech Provider guide.
State: REGISTER_PHONE_NUMBERerrors reports that the phone number is active in the WhatsApp Business App. Standard Cloud API signup cannot register these numbers. Use WhatsApp Coexistence instead.
WhatsApp Manager shows Please contact Telnyx to resolve phone number connection issue and the number does not appear in the Telnyx Portal. Meta completed its steps, but the signup result never reached Telnyx. This happens when Meta’s signup window stays open after the last step instead of closing. Retry Embedded Signup and select the same WABA and phone number. If the number still does not appear, contact Telnyx support with the WABA ID and phone number.
Meta returns This number is registered to an existing WhatsApp account. To use this number, disconnect it from the existing account. Disconnect or delete the number from the existing account first. Meta notes it may take up to 3 minutes for the number to become available.
Meta verifies numbers by SMS or voice call only. SMS delivery to virtual numbers (VoIP and DID ranges) is not guaranteed, so request the code by voice call instead. Confirm the number accepts inbound calls.
Meta initially caps new business portfolios at two registered phone numbers. Meta raises the cap to 20 when the business is verified or reaches a messaging limit of 2,000.
Meta initially limits each business portfolio to 20 WABAs. Remove unused WABAs from the business portfolio or use an existing WABA.
Symptom: Embedded signup popup fails to load, shows a blank page, or gets stuck during the Facebook OAuth step.Causes:
  • Ad blockers (uBlock Origin, Adblock Plus, etc.) blocking Facebook/Meta domains
  • Privacy extensions (Privacy Badger, Ghostery) blocking third-party scripts
  • Browser security settings blocking cross-origin popups
Solutions:
  1. Temporarily disable ad blockers and privacy extensions for the signup flow
  2. Add facebook.com and meta.com domains to the extension’s allowlist
  3. Try using a different browser profile without extensions
  4. Use Chrome Incognito mode (extensions are typically disabled by default)
  5. Ensure popup blockers allow popups from the Telnyx Portal domain
Note: The WhatsApp embedded signup flow is powered by Meta/Facebook. The OAuth consent screen and business verification steps are hosted on Facebook’s servers, which means browser extensions that block Facebook domains will prevent the signup from completing.