# Integrated Onboarding

The Integrated Onboarding (IO) solution offered by 360Dialog simplifies the process of creating and adding numbers in the WhatsApp Business Account, giving the partner flexibility to offer their clients the best experience possible.

Choosing the right Integrated Onboarding type depends on several factors, including technical capabilities, resources, and specific needs for integrating with the WhatsApp Business API.

## Implementation Methods

Select one of the following implementation methods to get started:

### Direct Link

Integrated onboarding can be started by linking to the partner's dedicated signup URL.

**Ideal for:** Partners who want to onboard numbers right away. **Best for the quickest start.**

✅ No-code\
✅ Available immediately\
✅ Standard user experience

{% content-ref url="/pages/eitKAkWR5fPzgD0zbSDm" %}
[Using Direct Link](/partner/onboarding/integrated-onboarding/using-direct-link.md)
{% endcontent-ref %}

### Connect Button

The **Connect Button** is a basic Integrated Onboarding solution built by 360Dialog. It is a React.js NPM package that can be embedded into React applications. It allows partners to trigger account creation and 360Dialog-hosted Embedded Signup through intuitive pop-ups.

**Ideal for:** Partners who prefer a streamlined, no-hassle setup with standard technical involvement. **Best for most partners.**

✅ Low-code\
✅ Fast implementation\
✅ Standard user experience

The basic Integrated Onboarding will show:

1. A 360Dialog-branded Signup Page, where the client will submit their information to create an account
2. Embedded Signup, where the client will log in their Business Manager account and register their WABA and phone number
3. Permission screen, where the client will give their partner permission to manage their channels (only required if using Direct Payment)

{% content-ref url="/pages/uUWCoNOOoeWFuLy4NrwL" %}
[Using Connect Button](/partner/onboarding/integrated-onboarding/connect-button.md)
{% endcontent-ref %}

### Custom IO

Partners can customize the Integrated Onboarding experience by building their own IO trigger.

**Ideal for:** Partners with the capability to manage more complex integrations and who prefer to have more control over the signup experience.

✅ Framework-agnostic\
✅ More customizable versus the Connect Button\
✅ Standard user experience

The custom Integrated Onboarding will show:

1. A 360Dialog-branded Signup Page, where the client will submit their information to create an account
2. Embedded Signup, where the client will log in their Business Manager account and register their WABA and phone number
3. Permission screen, where the client will give you permission to manage their channels (only required if using Direct Payment)

{% content-ref url="/pages/u0vdSjrq2umvRYlVv7If" %}
[Using Custom IO](/partner/onboarding/integrated-onboarding/using-custom-io.md)
{% endcontent-ref %}

### Partner-Hosted Embedded Signup

Partners who are approved by Meta as Tech Providers have the option to host their own Embedded Signup.

**Ideal for:** Partners who want to fully own their sign up experience. **Best for the biggest partners.**

✅ High-code solution\
✅ Fully customizable\
✅ Partner hosts the flow

For more information on Tech Providers, and becoming a Tech Provider, refer to the documentation below:

* [Details about the Tech Provider Program](/partner/get-started/tech-provider-program.md)
* [Become a Meta Tech Provider](/partner/get-started/tech-provider-program/become-a-meta-tech-provider.md)

{% content-ref url="/pages/8wUoHUuwfuWzhRQTaGBc" %}
[Partner-Hosted Embedded Signup](/partner/onboarding/partner-hosted-embedded-signup.md)
{% endcontent-ref %}

## Standard components

### **URL/Query Parameters**

When triggering Integrated Onboarding, different URL parameters allow you to preselect different settings or customize the flow whenever you need.&#x20;

<table><thead><tr><th width="152.39453125">Parameter name</th><th width="205.0234375">Description</th><th width="103.2421875">Values</th><th width="123">Stored in database?</th><th>Returned in redirect?</th></tr></thead><tbody><tr><td><code>email</code></td><td>User email to pre-fill the signup form</td><td><code>string</code></td><td>Yes, as part of the client setup</td><td>No</td></tr><tr><td><code>name</code></td><td>User name to pre-fill the signup form</td><td><code>string</code></td><td>Yes, as part of the client setup</td><td>No</td></tr><tr><td><code>number</code></td><td>A specific phone number to request permission for. The number has to match the existing number in the hub. It includes the country code without the leading 00/+.</td><td><code>number</code></td><td>No</td><td>No</td></tr><tr><td><code>state</code></td><td>Any string value that shall be passed through and returned with the redirect.</td><td><code>string</code></td><td>Yes</td><td>Yes</td></tr><tr><td><code>redirect_url</code></td><td>Will be used as individual redirect URL instead of the globally set one.</td><td><code>string</code> (URL-encoded)</td><td>No</td><td>Will be used as the new redirect URL</td></tr><tr><td><code>partner</code></td><td>Any string value that shall be stored on the client model. Can be retrieved via API as <code>partner_payload</code>.</td><td><code>string</code></td><td>No</td><td>No</td></tr><tr><td><code>next</code> </td><td>Can be used to redirect clients directly to either the login form or the signup form, in case they are not yet logged in.</td><td>"login" / "signup"</td><td>No</td><td>No</td></tr><tr><td><code>lang</code></td><td>Can be used to set the default language of the Integrated Onboarding (not including Meta’s ES)<br><br>Allowed values:<br><code>de</code>, <code>en</code></td><td><code>string</code></td><td>No</td><td>No</td></tr><tr><td><code>plan_selection</code></td><td><p>Can be used to set the default pricing plan for the number to be added. </p><p></p><p>Will only work for partners enabled for tiered pricing. <br><em>*If you are not sure of you billing plan, please reach out to our Support Team.</em><br></p><p>Clients on partners with client payment will be able to change the pre-selected plan.</p><p></p><p>Allowed values: <code>basic</code>, <code>regular</code>, <code>premium</code> </p><p><br>Default: <code>regular</code>.</p><p><strong><code>basic</code> value is only available to partners on the Premium plan.</strong></p></td><td><code>string</code></td><td>Yes, as part of the number setup</td><td>No</td></tr><tr><td><code>connect_client_user</code></td><td><code>true</code></td><td><code>string</code></td><td>Yes, as part of the number setup</td><td>No</td></tr><tr><td><code>io_signature</code></td><td><strong>Required</strong> if IO Signature is enabled.<br><br>Refer to <a href="/pages/aiDCaejptNH0pxDkYM29">IO Signature</a> for details.</td><td><code>string</code></td><td>Yes, as part of replay protection</td><td>No</td></tr><tr><td><code>io_timestamp</code></td><td><strong>Required</strong> if IO Signature is enabled. UNIX timestamp in seconds.<br><br>Refer to <a href="/pages/aiDCaejptNH0pxDkYM29">IO Signature</a> for details.</td><td><code>number</code></td><td>No</td><td>No</td></tr></tbody></table>

{% hint style="success" %}
Effective **January 2024**, 360Dialog will not issue billing correction notes due the misuse of the `plan_selection` parameter and charges will be applied in accordance with the agreed-upon financial terms and the parameters used during onboarding.
{% endhint %}

### **Embedded Signup**

Embedded Signup allows customers to log into their Meta account to create new Meta business portfolios, WhatsApp Business Accounts (WABAs), and/or register new phone numbers.&#x20;

The 360Dialog Embedded Signup is triggered automatically throughout the Integrated Onboarding flow. Partners can host their own Embedded Signup if they wish to, after following specific requirements from Meta.

### **Webhook Events**

When you have a Partner API Webhook URL set, we will send different webhook events that will allow you to understand a status of a signup.

[See Webhook events and notifications. ](/partner/onboarding/webhook-events-and-setup/webhook-events-partner-and-messaging-api.md#pending-client-user)

### **Permission Screen (direct payment only)**

If your Partner Hub is set to Partner Payment, you will receive permission to manage the numbers signed up by default. If the setting is Direct Payment, the client will have to give you permission to manage the numbers. See [Partner Permissions](/partner/partner-hub/api-keys.md).

The `/permission` screen is designed to allow the client (account owner) to share this permission while still in the Integrated Onboarding. Alternatively, the client can grant permissions in their Client Hub settings

To trigger the permission screen, this route needs to be called:

```url
https://hub.360dialog.com/dashboard/app/<partner-id>/permissions
```

Independently of the development language you’re using, you should be able to use the browser’s `open()` method of the [Window](https://developer.mozilla.org/en-US/docs/Web/API/Window) interface. It follows the syntax:

```javascript
open(url, target, windowFeatures)
```

In the specific case this would result for example in the following method:

```javascript
const windowFeatures = "toolbar=no, menubar=no, width=600, height=900, top=100, left=100"
open(https://hub.360dialog.com/dashboard/app/<partner-id>/permissions, "integratedOnboardingWindow", windowFeatures)
```

The permission screen is optimized to be opened in a popup without controls and a size of 600 px (width) by 900 px (height).


---

# Agent Instructions: 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/integrated-onboarding.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.
