# Embedded Signup for WhatsApp Business API

<p class="callout info">Refer [https://developers.facebook.com/docs/whatsapp/embedded-signup/](https://developers.facebook.com/docs/whatsapp/embedded-signup/) for details</p>

[![image.png](https://docs.versalence.online/uploads/images/gallery/2025-02/scaled-1680-/EBNsdoacGjaychkQ-image.png)](https://docs.versalence.online/uploads/images/gallery/2025-02/EBNsdoacGjaychkQ-image.png)[![image.png](https://docs.versalence.online/uploads/images/gallery/2025-02/scaled-1680-/NmclfG75bZTAw29b-image.png)](https://docs.versalence.online/uploads/images/gallery/2025-02/NmclfG75bZTAw29b-image.png)

[![image.png](https://docs.versalence.online/uploads/images/gallery/2025-02/scaled-1680-/jeQBoXQ48IQGYPy7-image.png)](https://docs.versalence.online/uploads/images/gallery/2025-02/jeQBoXQ48IQGYPy7-image.png)

Once your App verification is complete and you receive the verified tech provider badge, lets us move to build the Embedded Signup

[![image.png](https://docs.versalence.online/uploads/images/gallery/2025-02/scaled-1680-/C62uwaBFbPCtOgZn-image.png)](https://docs.versalence.online/uploads/images/gallery/2025-02/C62uwaBFbPCtOgZn-image.png)

Ensure you have Facebook Login for Business enabled in your app, if not click on Dashboard and enable it

[![image.png](https://docs.versalence.online/uploads/images/gallery/2025-02/scaled-1680-/nQ962i0EvjiPtrMJ-image.png)](https://docs.versalence.online/uploads/images/gallery/2025-02/nQ962i0EvjiPtrMJ-image.png)

Head to Facebook Login for Business and select Configurations -&gt; Create configuration

[![image.png](https://docs.versalence.online/uploads/images/gallery/2025-02/scaled-1680-/xlIym8KUwvwceTxf-image.png)](https://docs.versalence.online/uploads/images/gallery/2025-02/xlIym8KUwvwceTxf-image.png)

Add a Name to the configuration

[![image.png](https://docs.versalence.online/uploads/images/gallery/2025-02/scaled-1680-/rHAIZyjnwPHVYz8E-image.png)](https://docs.versalence.online/uploads/images/gallery/2025-02/rHAIZyjnwPHVYz8E-image.png)

Select Login variation as WhatsApp Embedded Signup

[![image.png](https://docs.versalence.online/uploads/images/gallery/2025-02/scaled-1680-/8eCiqhfSmzSjuJzh-image.png)](https://docs.versalence.online/uploads/images/gallery/2025-02/8eCiqhfSmzSjuJzh-image.png)

Select System-user Access Token &amp; Never Expire

[![image.png](https://docs.versalence.online/uploads/images/gallery/2025-02/scaled-1680-/QRdoT8v0nXFTfUl5-image.png)](https://docs.versalence.online/uploads/images/gallery/2025-02/QRdoT8v0nXFTfUl5-image.png)

Select WhatsApp Accounts and Select all Asset Task Permissions

[![image.png](https://docs.versalence.online/uploads/images/gallery/2025-02/scaled-1680-/CLxOZSGmLGdAJ3xh-image.png)](https://docs.versalence.online/uploads/images/gallery/2025-02/CLxOZSGmLGdAJ3xh-image.png)

From Permssions select business\_management, catalog\_management, whataspp\_business\_management &amp; whatsapp\_business\_messaggng

[![image.png](https://docs.versalence.online/uploads/images/gallery/2025-02/scaled-1680-/OdCFa0PtaWpE4LBj-image.png)](https://docs.versalence.online/uploads/images/gallery/2025-02/OdCFa0PtaWpE4LBj-image.png)

click Save to save the configuration

[![image.png](https://docs.versalence.online/uploads/images/gallery/2025-02/scaled-1680-/tc3kFhGwusTczspV-image.png)](https://docs.versalence.online/uploads/images/gallery/2025-02/tc3kFhGwusTczspV-image.png)

To whitelist the domains, head to settings and add the domains and ensure to enable Client OAuth Login, Web OAuth Login, Embedded Browser OAuth Login

[![image.png](https://docs.versalence.online/uploads/images/gallery/2025-02/scaled-1680-/1YbvL824mFXNgoWD-image.png)](https://docs.versalence.online/uploads/images/gallery/2025-02/1YbvL824mFXNgoWD-image.png)

Finally to embed the code you will need

- Configuration ID
- App ID
- App Secret

Configuration ID from the screen above. App ID and App secret from the screen below

[![image.png](https://docs.versalence.online/uploads/images/gallery/2025-02/scaled-1680-/UfZNdsGw3M5Ok2Bn-image.png)](https://docs.versalence.online/uploads/images/gallery/2025-02/UfZNdsGw3M5Ok2Bn-image.png)

---

---

# Onboarding business customers as a Tech Provider or Tech Partner

This document describes the steps Tech Providers and Tech Partners must perform to onboard new business customers who have completed the Embedded Signup flow.

If you are a Tech Provider or Tech Partner, any business customer who completes your implementantation of the Embedded Signup flow will not be able to use your app to access their WhatsApp assets or send and receive messages (if you are offering messaging services) until you complete these steps.

## What you will need

<div class="_4-u2 _57mb _1u44 _3fw6 _4-u8 _3la3" id="bkmrk-the-business-custome"><div class="_4-u3 _588p">- the business customer's WABA ID (returned via [session logging](https://developers.facebook.com/docs/whatsapp/embedded-signup/implementation#session-logging-message-event-listener) or [API request](https://developers.facebook.com/docs/whatsapp/embedded-signup/manage-accounts#get-shared-waba-id-with-access-token))
- the business customer's business phone number ID (returned via [session logging](https://developers.facebook.com/docs/whatsapp/embedded-signup/implementation#session-logging-message-event-listener) or [API request](https://developers.facebook.com/docs/whatsapp/embedded-signup/manage-accounts/phone-numbers#getting-phone-numbers))
- your app ID (displayed at the top of the **App Dashboard**)
- your app secret (displayed in the **App Dashboard** &gt; **App settings** &gt; **Basic** panel)

</div></div>Also, if you wish to test messaging capabilities using the customer's business phone number, you will need a WhatsApp phone number that can already send and receive messages from other WhatsApp numbers.

Perform all of the requests described below using server-to-server requests. Do not use client-side requests.

## Step 1: Exchange the token code for a business token

Use the **GET /oauth/access\_token** endpoint to exchange the token code [returned](https://developers.facebook.com/docs/whatsapp/embedded-signup/implementation#session-logging-message-event-listener) by Embedded Signup for a business integration system user access token ("business token").

### Request

```
curl --get 'https://graph.facebook.com/v21.0/oauth/access_token' \
-d 'client_id=<APP_ID>' \
-d 'client_secret=<APP_SECRET>' \
-d 'code=<CODE>'
```

### Request parameters

<div class="_4-u2 _57mb _1u44 _3fw6 _4-u8 _3la3" id="bkmrk-placeholder-descript"><div class="_4-u3 _588p"><div class="_57-c"><table class="_4-ss _5k9x" style="width: 100.002%;"><thead><tr><th style="width: 15.363%;">Placeholder</th><th style="width: 32.9041%;">Description</th><th style="width: 51.7233%;">Example value</th></tr></thead><tbody class="_5m37" id="bkmrk-%3Capp_id%3E-required.-y"><tr class="row_0"><td style="width: 15.363%;">`<APP_ID>`

</td><td style="width: 32.9041%;">**Required.**

Your app ID. This is displayed at the top of the **App Dashboard**.

</td><td style="width: 51.7233%;">`236484624622562`

</td></tr><tr class="row_1 _5m29"><td style="width: 15.363%;">`<APP_SECRET>`

</td><td style="width: 32.9041%;">**Required.**

Your app secret. You can get this from the **App Dashboard** &gt; **App Secret** &gt; **Basic** panel.

</td><td style="width: 51.7233%;">`614fc2afde15eee07a26b2fe3eaee9b9`

</td></tr><tr class="row_2"><td style="width: 15.363%;">`<CODE>`

</td><td style="width: 32.9041%;">**Required.**

The code [returned by Embedded Signup](https://developers.facebook.com/docs/whatsapp/embedded-signup/implementation#session-logging-message-event-listener) when the customer successfully completed the flow.

</td><td style="width: 51.7233%;">`AQBhlXsctMxJYbwbrpybxlo9tLPGy-QAmjBJA03jxLos43wxlBlrYozY5C33BXJULd133cOJf_5y6EkJZYMrAmW-EMj3Wdap9-NUM2nS4s8tC-ES7slBhh6QpCFM7-SzpI-iqsjqTGyxbUUW3AeaEyLkeZFIkBgcQ_SOxo9HShm20SDR5_n7AT9ZJ5dcgpqBQykNT-pQ8V7Ne9-sr6RLAWtJMF7-Zx6ABudRcWIN53tUTtquDVNuq3lrco4BlVQAv-54tR83Ae0ODN9Uet6j-BVLuetXhQCM3sz9RdgedlbxkidMbkztvYX1j7baOrJxyLyYGWYgbnUrKRQKCtWTsO5ekIGFgtbpS8UPJNqV6j8E5XKPJ8QA7ZFqzkB0s2O__J5FrjHzc_rDo1EuRbw98ihHDzQnvuXeHapEyfhLDJct0A`

</td></tr></tbody></table>

</div></div></div>### Response

Upon success:

```
<BUSINESS_TOKEN>
```

### Response parameters

<div class="_4-u2 _57mb _1u44 _3fw6 _4-u8 _3la3" id="bkmrk-placeholder-descript-1"><div class="_4-u3 _588p"><div class="_57-c"><table class="_4-ss _5k9x" style="width: 100.002%;"><thead><tr><th style="width: 17.1602%;">Placeholder</th><th style="width: 30.7494%;">Description</th><th style="width: 52.0808%;">Example value</th></tr></thead><tbody class="_5m37" id="bkmrk-%3Cbusiness_token%3E-the"><tr class="row_0"><td style="width: 17.1602%;">`<BUSINESS_TOKEN>`

</td><td style="width: 30.7494%;">The customer's [business token](https://developers.facebook.com/docs/whatsapp/business-management-api/get-started#business-integration-system-user-access-tokens).

</td><td style="width: 52.0808%;">`EAAAN6tcBzAUBOwtDtTfmZCJ9n3FHpSDcDTH86ekf89XnnMZAtaitMUysPDE7LES3CXkA4MmbKCghdQeU1boHr0QZA05SShiILcoUy7ZAb2GE7hrUEpYHKLDuP2sYZCURkZCHGEvEGjScGLHzC4KDm8tq2slt4BsOQE1HHX8DzHahdT51MRDqBw0YaeZByrVFZkVAoVTxXUtuKgDDdrmJQXMnI4jqJYetsZCP1efj5ygGscZBm4OvvuCYB039ZAFlyNn`

</td></tr></tbody></table>

</div><div data-click-area="to_top_nav">  
</div></div></div>## Step 2: Subscribe to webhooks on the customer's WABA

Use the [POST /&lt;WABA\_ID&gt;/subscribed\_apps](https://developers.facebook.com/docs/graph-api/reference/whats-app-business-account/subscribed_apps/#Creating) endpoint to subscribe your app to webhooks on the business customer's WABA. If you want the customer's webhooks to be sent to a different callback URL than the one set on your app, you have multiple [webhook override](https://developers.facebook.com/docs/whatsapp/embedded-signup/webhooks/override) options.

### Request

```
curl -X POST 'https://graph.facebook.com/<API_VERSION>/<WABA_ID>/subscribed_apps' \
-H 'Authorization: Bearer <BUSINESS_TOKEN>'
```

### Request parameters

<div class="_4-u2 _57mb _1u44 _3fw6 _4-u8 _3la3" id="bkmrk-placeholder-descript-2"><div class="_4-u3 _588p"><div class="_57-c"><table class="_4-ss _5k9x" style="width: 100.002%;"><thead><tr><th style="width: 17.4%;">Placeholder</th><th style="width: 26.7035%;">Description</th><th style="width: 55.887%;">Example value</th></tr></thead><tbody class="_5m37" id="bkmrk-%3Cbusiness_token%3E-req"><tr class="row_0"><td style="width: 17.4%;">`<BUSINESS_TOKEN>`

</td><td style="width: 26.7035%;">**Required.**

The customer's[ business token](https://developers.facebook.com/docs/whatsapp/business-management-api/get-started#business-integration-system-user-access-tokens).

</td><td style="width: 55.887%;">`EAAAN6tcBzAUBOwtDtTfmZCJ9n3FHpSDcDTH86ekf89XnnMZAtaitMUysPDE7LES3CXkA4MmbKCghdQeU1boHr0QZA05SShiILcoUy7ZAb2GE7hrUEpYHKLDuP2sYZCURkZCHGEvEGjScGLHzC4KDm8tq2slt4BsOQE1HHX8DzHahdT51MRDqBw0YaeZByrVFZkVAoVTxXUtuKgDDdrmJQXMnI4jqJYetsZCP1efj5ygGscZBm4OvvuCYB039ZAFlyNn`

</td></tr><tr class="row_1 _5m29"><td style="width: 17.4%;">`<WABA_ID>`

</td><td style="width: 26.7035%;">**Required.**

The customer's WABA ID.

</td><td style="width: 55.887%;">`102290129340398`

</td></tr></tbody></table>

</div></div></div>### Response

Upon success:

```
{
  "success": true
}
```

<div class="_4-u2 _57mb _1u44 _3fw6 _4-u8 _3la3" id="bkmrk--15"><div class="_4-u3 _588p"><div></div><div data-click-area="to_top_nav">  
</div></div></div>## Step 3: Register the customer's phone number

Use the [POST /&lt;BUSINESS\_PHONE\_NUMBER\_ID&gt;/register](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/registration#register) endpoint to register the customer's business phone number for use with Cloud API.

### Request

```
curl 'https://graph.facebook.com/v21.0/<BUSINESS_PHONE_NUMBER_ID>/register' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <BUSINESS_TOKEN>' \
-d '
{
  "messaging_product": "whatsapp",
  "pin": "<DESIRED_PIN>"
}'
```

### Request parameters

<div class="_4-u2 _57mb _1u44 _3fw6 _4-u8 _3la3" id="bkmrk-placeholder-descript-3"><div class="_4-u3 _588p"><div class="_57-c"><table class="_4-ss _5k9x" style="width: 100.002%;"><thead><tr><th style="width: 26.9343%;">Placeholder</th><th style="width: 28.8328%;">Description</th><th style="width: 44.2234%;">Example value</th></tr></thead><tbody class="_5m37" id="bkmrk-%3Cbusiness_phone_numb"><tr class="row_0"><td style="width: 26.9343%;">`<BUSINESS_PHONE_NUMBER_ID>`

</td><td style="width: 28.8328%;">**Required.**

The customer's business phone number ID returned.

</td><td style="width: 44.2234%;">`106540352242922`

</td></tr><tr class="row_1 _5m29"><td style="width: 26.9343%;">`<BUSINESS_TOKEN>`

</td><td style="width: 28.8328%;">**Required.**

The customer's business token.

</td><td style="width: 44.2234%;">`EAAAN6tcBzAUBOwtDtTfmZCJ9n3FHpSDcDTH86ekf89XnnMZAtaitMUysPDE7LES3CXkA4MmbKCghdQeU1boHr0QZA05SShiILcoUy7ZAb2GE7hrUEpYHKLDuP2sYZCURkZCHGEvEGjScGLHzC4KDm8tq2slt4BsOQE1HHX8DzHahdT51MRDqBw0YaeZByrVFZkVAoVTxXUtuKgDDdrmJQXMnI4jqJYetsZCP1efj5ygGscZBm4OvvuCYB039ZAFlyNn`

</td></tr><tr class="row_2"><td style="width: 26.9343%;">`<DESIRED_PIN>`

</td><td style="width: 28.8328%;">**Required.**

Set this value to a 6-digit number. This will be the business phone number's two-step verification PIN.

</td><td style="width: 44.2234%;">`581063`

</td></tr></tbody></table>

</div></div></div>### Response

Upon success:

```
{
  "success": true
}
```

<div class="_4-u2 _57mb _1u44 _3fw6 _4-u8 _3la3" id="bkmrk--16"><div class="_4-u3 _588p"><div data-click-area="to_top_nav">  
</div></div></div>## Step 4: Send a test message

*This step is optional.*

If you wish to test the messaging capabilities of your business customer's business phone number, send a message to the customer's number from your own WhatsApp number (this will open a [customer service window](https://developers.facebook.com/docs/whatsapp/cloud-api/guides/send-messages#customer-service-windows), allowing you to respond with any type of message).

Next, use the [POST /&lt;BUSINESS\_PHONE\_NUMBER\_ID&gt;/messages](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/messages) endpoint to send a [text message](https://developers.facebook.com/docs/whatsapp/cloud-api/messages/text-messages) in response.

### Request

```
curl 'https://graph.facebook.com/v21.0/<BUSINESS_PHONE_NUMBER_ID>/messages' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <BUSINESS_TOKEN>' \
-d '
{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "<WHATSAPP_USER_NUMBER>",
  "type": "text",
  "text": {
    "body": "<BODY_TEXT>"
  }
}'
```

### Request parameters

<div class="_4-u2 _57mb _1u44 _3fw6 _4-u8 _3la3" id="bkmrk-placeholder-descript-4"><div class="_4-u3 _588p"><div class="_57-c"><table class="_4-ss _5k9x" style="width: 100.002%;"><thead><tr><th style="width: 27.8839%;">Placeholder</th><th style="width: 25.7463%;">Description</th><th style="width: 46.3603%;">Example value</th></tr></thead><tbody class="_5m37" id="bkmrk-%3Cbody_text%3E-required"><tr class="row_0"><td style="width: 27.8839%;">`<BODY_TEXT>`

</td><td style="width: 25.7463%;">**Required.**

Message body text. Supports URLs.

Maximum 4096 characters.

</td><td style="width: 46.3603%;">`Message received, loud and clear!`

</td></tr><tr class="row_1 _5m29"><td style="width: 27.8839%;">`<BUSINESS_PHONE_NUMBER_ID>`

</td><td style="width: 25.7463%;">**Required.**

The customer's business phone number ID.

</td><td style="width: 46.3603%;">`106540352242922`

</td></tr><tr class="row_2"><td style="width: 27.8839%;">`<BUSINESS_TOKEN>`

</td><td style="width: 25.7463%;">**Reqiured.**

The customer's business token.

</td><td style="width: 46.3603%;">`EAAAN6tcBzAUBOwtDtTfmZCJ9n3FHpSDcDTH86ekf89XnnMZAtaitMUysPDE7LES3CXkA4MmbKCghdQeU1boHr0QZA05SShiILcoUy7ZAb2GE7hrUEpYHKLDuP2sYZCURkZCHGEvEGjScGLHzC4KDm8tq2slt4BsOQE1HHX8DzHahdT51MRDqBw0YaeZByrVFZkVAoVTxXUtuKgDDdrmJQXMnI4jqJYetsZCP1efj5ygGscZBm4OvvuCYB039ZAFlyNn`

</td></tr><tr class="row_3 _5m29"><td style="width: 27.8839%;">`<WHATSAPP_USER_NUMBER>`

</td><td style="width: 25.7463%;">**Required.**

Your WhatsApp phone number that can send and receive messages from other WhatsApp numbers.

Note that this cannot be a business phone number already registered for use with Cloud API or On-Premises API.

</td><td style="width: 46.3603%;">`+16505551234`

</td></tr></tbody></table>

</div></div></div>### Response

Upon success:

```
{
  "messaging_product": "whatsapp",
  "contacts": [
    {
      "input": "<WHATSAPP_USER_NUMBER>",
      "wa_id": "<WHATSAPP_USER_ID>"
    }
  ],
  "messages": [
    {
      "id": "<WHATSAPP_MESSAGE_ID>"
    }
  ]
}
```

### Response parameters

<div class="_4-u2 _57mb _1u44 _3fw6 _4-u8 _3la3" id="bkmrk-placeholder-descript-5"><div class="_4-u3 _588p"><div class="_57-c"><table class="_4-ss _5k9x" style="width: 100.002%;"><thead><tr><th style="width: 29.1865%;">Placeholder</th><th style="width: 27.8998%;">Description</th><th style="width: 42.9041%;">Example value</th></tr></thead><tbody class="_5m37" id="bkmrk-%3Cwhatsapp_message_id"><tr class="row_0"><td style="width: 29.1865%;">`<WHATSAPP_MESSAGE_ID>`

</td><td style="width: 27.8998%;">WhatsApp message ID.

</td><td style="width: 42.9041%;">`wamid.HBgLMTY0NjcwNDM1OTUVAgARGBI1RjQyNUE3NEYxMzAzMzQ5MkEA`

</td></tr><tr class="row_1 _5m29"><td style="width: 29.1865%;">`<WHATSAPP_USER_ID>`

</td><td style="width: 27.8998%;">Your WhatsApp user ID.

</td><td style="width: 42.9041%;">`16505551234`

</td></tr><tr class="row_2"><td style="width: 29.1865%;">`<WHATSAPP_USER_NUMBER>`

</td><td style="width: 27.8998%;">Your WhatsApp phone number that the message was sent to.

</td><td style="width: 42.9041%;">`+16505551234`

</td></tr></tbody></table>

</div></div></div>If you were able to successfully send and receive messages using the customer's business phone number, and if **messages** webhooks were triggered [describing the initial message that you sent](https://developers.facebook.com/docs/whatsapp/cloud-api/webhooks/payload-examples#received-messages), as well as the [delivery statuses](https://developers.facebook.com/docs/whatsapp/cloud-api/webhooks/payload-examples#message-status-updates) of the message you sent in response, the customer's business phone number is working properly.

## Step 5: Instruct the customer to add a payment method

Instruct your customer to use the WhatsApp Manager to add a payment method. You can provide them with the following Help Center link:

[https://www.facebook.com/business/help/488291839463771](https://www.facebook.com/business/help/488291839463771)

Alternatively, you can instruct them to:

<div class="_4-u2 _57mb _1u44 _3fw6 _4-u8 _3la3" id="bkmrk-access-the%C2%A0whatsapp-"><div class="_4-u3 _588p">1. Access the **WhatsApp Manager** &gt; **Overview** panel at [https://business.facebook.com/wa/manage/home/](https://business.facebook.com/wa/manage/home/)
2. Click the **Add payment method** button
3. Complete the flow

</div></div>Once your customer adds a payment method, they are fully onboarded onto the WhatsApp Business Platform and can begin using your app to access their WhatsApp assets and send and receive messages (if you are providing them with that service).