> For the complete documentation index, see [llms.txt](https://docs.360dialog.com/partner/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.360dialog.com/partner/onboarding/partner-hosted-embedded-signup.md).

# Partner-Hosted Embedded Signup

For advanced personalization, approved Meta Tech Providers can host a custom Embedded Signup flow.

## Requirements

#### Tech Provider registration and approved Solution

Enabling this option requires status as a Meta-approved Tech Provider with a live solution integrated with 360dialog. The solution must be in Meta's `ACTIVE` status. [More details](https://docs.360dialog.com/partner/get-started/tech-provider-program#multi-partner-solution).

#### Technical Capacity

Hosting and managing an independent Embedded Signup script requires technical implementation knowledge. Technical support from 360dialog is not available for troubleshooting custom Embedded Signup scripts.

#### Request Advanced Access for public\_profile permission

An additional permission is required for the onboarding process to function correctly. In the Meta for Developers App dashboard > navigate to your **App Review** > **Permissions** > Find the ‘`public_profile`’ permission and request `advanced access`.&#x20;

<figure><img src="/files/RS7gytzvYVMr8P7h4AlV" alt=""><figcaption></figcaption></figure>

Ensure advanced access is granted before configuring the ES.&#x20;

<figure><img src="/files/8XfQHUKDhrVTHet05f3Z" alt=""><figcaption></figcaption></figure>

#### Set Partner Hub Webhook URL and listen to Webhook Events

[See instructions here](/partner/partner-api/overview.md#partner-hub-webhook).

## Build Self-Hosted Embedded Signup

{% hint style="danger" %}
**Important:** The Meta documentation linked below includes steps for **registering a phone number**.

**Do not follow those steps.** Phone number registration is handled entirely by 360Dialog.
{% endhint %}

1. [Implement Embedded Signup](https://developers.facebook.com/docs/whatsapp/embedded-signup/implementation).
2. [Check the signup flow for Cloud API](https://developers.facebook.com/docs/whatsapp/embedded-signup/default-flow).\
   Note that if you have information about your customer's business, you can [inject this data](https://developers.facebook.com/docs/whatsapp/embedded-signup/pre-filled-data), which can significantly reduce the number of screens that your customers have to interact with.\
   \
   We recommend using Embedded Signup version 4. In this case you can enable the [Marketing Messages API (MM API)](https://docs.360dialog.com/partner/messaging-and-calling/sending-marketing-messages) for the client *during* the onboarding process. This allows your clients to skip an additional step of enabling the MM API after they are onboarded. Here is how to enable [Embedded Signup version 4](https://developers.facebook.com/docs/whatsapp/embedded-signup/versions/version-4).&#x20;

## Connect Self-Hosted Embedded Signup to 360dialog&#x20;

### Step 1: Create or retrieve a Client Account

In order to later submit the number, you need to either retrieve an existing `client_id` or create a new client instance through our Partner API using the endpoint below. Make sure to store the Client ID of each client within your database, since it will be required afterwards.  Alternatively, you can also retrieve it with [this endpoint](/partner/partner-api/api-reference/client-management.md#get-api-v2-partners-partner_id-clients).

#### Create client account&#x20;

This [endpoint](/partner/partner-api/api-reference/account-sharing.md#post-api-v2-partners-partner_id-account_sharing-clients) must be used to create the client account.&#x20;

### **Step 2: Surface Embedded Signup to client and fetch information**

{% hint style="danger" %}
**Important:** The Meta documentation linked below includes steps for **registering a phone number**.

**Do not follow those steps.** Phone number registration is handled entirely by 360Dialog.
{% endhint %}

When the[ Embedded Signup](https://developers.facebook.com/docs/whatsapp/embedded-signup) is completed by the client, you can use the code received in the payload to fetch detailed WABA information. See more [here](https://developers.facebook.com/docs/whatsapp/embedded-signup/embed-the-flow#after-business-completes-signup-flow) and [here](https://developers.facebook.com/docs/whatsapp/embedded-signup/manage-accounts#get-shared-waba-id-with-access-token).

### Step 3: Connect Client account to the registered Phone Number

Use the endpoint below to submit the phone number/channel to 360Dialog records. If the number was successfully onboarded via self-hosted Embedded Signup and the attached `client_id` matches the user data in 360dialog records, the onboarding flow ends by redirecting the Client to the Partner Redirect URL set.&#x20;

#### Submit channel/number created via self-hosted Embedded Signup

Please use this [endpoint](/partner/partner-api/api-reference/account-sharing.md#post-api-v2-partners-partner_id-account_sharing-numbers).&#x20;

{% hint style="info" %}
`channel_external_id` should be filled in with the phone number ID. Once it is filled in, we connect the particular number. If the value is sent as `null` we will connect all numbers associated with the particular waba `waba_external_id`
{% endhint %}

### Step 4: Create API key to start messaging

When the number is fully live, you will receive the [Channel Live Webhook Event](/partner/onboarding/webhook-events-and-setup/webhook-events-partner-and-messaging-api.md).&#x20;

You should be able to generate an API Key and connect it to your integration to start messaging with this phone number by default.

See [Partner Permissions](/partner/partner-hub/api-keys.md) for details.

<br>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.360dialog.com/partner/onboarding/partner-hosted-embedded-signup.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
