Integrated Onboarding setup

The Integrated Onboarding allows you to offer a completely integrated signup experience to clients. After it is implemented, the Connect Button should trigger a pop-up which the client will use to create their WhatsApp Business API account.

After the signup is completed, the client will give you permission to manage their account. This will trigger a redirect back to your application, including all necessary data about the client, which you can use to retrieve the API key on their behalf. Make sure your redirect URL is set. Otherwise the permission can not be shared and will result in a client-facing error.

Here are a few screenshots to illustrate:

Signup first page with Partner Payment

Integrated Onboarding works with both Partner Payment and Direct Payment. Different payment types have only two differences in the onboarding flow:

  1. Partner paid clients will see a link to the terms of service on the sign up form.

  2. Direct paid clients will see a checkbox to confirm the terms of service including the price list on a second page, which appears after the signup form and before the ES flow starts. This page also contains information about the price and a field to input a credit card.

Demo

Watch a quick Clickthrough showing how Integrated Onboarding works:

And a detailed explanation on how it works:

We have built a demo tool so you can see how to use and configure the 360dialog Connect Button and how to consume the associated redirects, which will allow you to onboard clients through the Integrated Onboarding.

Here is the Public Github Repoarrow-up-right

Here is the Demo / Connect Button generatorarrow-up-right

Postman Collection

Here you can access a Postman Collection with all endpoints needed to implement Integrated Onboarding.arrow-up-right

Signup step by step

Registering a new client

When registering a new client, the whole flow should be followed.

See URL parameters available to understand how to make the process seamless for the client.

It is mandatory that the client registers the account under their own email address and Business Manager. Partners that register client accounts on behalf of clients will get banned.

Adding number to existing client

When adding a number to an existing client, the whole flow should be followed, but instead of creating a new account the client should log in their existing 360dialog Client Hub credentials.

See URL parameters available to understand how to make the process seamless for the client.

It is mandatory that the client registers the account under their own email address and Business Manager. Partners that register client accounts on behalf of clients will get banned.

Getting permission for active number

If you have clients registered under your 360dialog Partner Hub before Integrated Onboarding, you can set a permission flow for them so you can manage all clients the same way. See how to do this here. It is simply triggering step two of the onboarding flow.

This can also be used by existing clients with 360dialog Client Hub accounts to add new phone numbers to their existing accounts or to restart onboarding when the client closes the signup window before giving permission.

The choice if this number will be added to an existing WABA or a new one will be available after the signup process starts.

Getting permission in the 360dialog Client Hub

The client also has the option to give permission to a number directly in their 360dialog Client Hub.

To do so, the client can log in to the 360dialog Client Hub as usual → click on their profile in the bottom left → “Organization settings” → The current permissions will be listed and can be edited.

Building the integration

circle-info

Integrated Onboarding works best with other Partner APIarrow-up-right features. We suggest that you read the Partner API documentation carefully to understand its almost unlimited possibilities and provide the best experience possible to your customers.

1. Set Redirect URL for your 360dialog Partner Hub

Set Redirect URL for your Partner Hub

PATCH https://hub.360dialog.io/api/v2/partners/{partner_id}

Request example

curl --request PATCH --url https://hub.360dialog.io/api/v2/partners/partner_id --header 'Authorization: ' --header 'Content-Type: application/json' --data '{ "webhook_url": "string", "partner_redirect_url": "string" }'

Path Parameters

Name
Type
Description

partner_id*

string

Your Partner Hub ID

Request Body

Name
Type
Description

webhook_url*

string

Your Webhook URL which needs to be previously created - see how in the Partner API integration document

partner_redirect_url*

string

The Redirect URL you will use

After the signup is completed, the client will give you permission to manage their account. This will trigger a redirect back to your application, including all necessary data about the client, which you can use to retrieve the API key on their behalf. Make sure your redirect URL is set. Otherwise the permission can not be shared and will result in a client-facing error.

Important: To use the ConnectButton component of the 360dialog-connect-button package the redirect URL needs to match the route that has the button integrated.

2. Call the permission screen and consume the redirect

You can either create your own workflow or use the React.js button component provided by 360dialog.

If you have multiple 360dialog Partner Hubs (one for Partner Payment and one for Direct Payment, for example), you can create different buttons for each Hub and show them to users accordingly.

There are two options here:

2.1 Use our React.js Connect Button component

Install and add the 360dialog Connect Button via npm/yarn and follow the instructions on NPMJS

https://www.npmjs.com/package/360dialog-connect-buttonarrow-up-right

With the 360dialog Connect Button you will get the client ID, all newly permitted channel IDs as well as revoked channel IDs via a callback object that is provided to a callback function.

The button automatically handles the popup and redirect.

2.2 Build your own custom flow on any development language you choose

Process flow of permission call and redirect + API key retrieval

2.2.1 Call /permissions screen

In order to receive permissions to access clients' API keys, but also to enable the sign up flow for clients the following route needs to be called:

Independently of the development language you’re using, you should be able to use the browser’s open() method of the Windowarrow-up-right interface. It follows the syntax:

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

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

2.2.2 Consuming redirect

After the client signed in or up and granted permission to one or multiple phone numbers, your redirect URL is being called with query parameters.

Parameter in query

Description

client=<client-id>

Client ID

channels=[<channel-id>,<channel-id>]

Array of channel IDs, that were being permitted during the last call to the permission page

revoked=[<channel-id>]

OPTIONAL In case the client removes permissions to one or multiple numbers during the most recent call to the permission page, the channel IDs of the newly revoked channels will be present in the query

See the full list of possible URL Parameters here.

Usually the newly opened popup window should close automatically if the redirect URL matches the calling window’s URL. It will pass the query parameters to the calling window, where these can be retrieved by using the addEventListener() method together with the Window target:

To retrieve the parameters from the query string, e.g. ?client=oaY9LLfUCL&channels=[y9MiLoCH], the browser’s get() method of the URLSearchParamsarrow-up-right interface can be used.

Whenever a new channel is createdarrow-up-right and a channel permission is grantedarrow-up-right, you will receive a Webhook event. This can trigger the next step.

Learn how to use filters to get information about specific channels here.

If the newly opened popup window won't close after the redirect call (if redirect is the same as parent window URL), you can add a function that is executed on window.onload, ensuring that the parameters are processed only after the page has finished loading:

The code block below shows an example including explanations (your implementation may differ). You can initiate the Integrated Onboarding Flow with the function open360DialogPopup(window.location.origin)(remember that your implementation may differ):

3. Create API key(s) via Partner API

Create an API key for each shared channel and store on your system for further use.

Create API key for a channel

POST https://hub.360dialog.io/api/v2/partners/{partner_id}/channels/{channel_id}/api_keys

Request example

curl --request POST --url https://hub.360dialog.io/api/v2/partners/partner_id/channels/channel_id/api_keys --header 'Authorization: ' --header 'Content-Type: application/json'

Path Parameters

Name
Type
Description

channel_id*

string

ID of the Channel you want to create the API key for

partner_id*

string

Your Hub's Partner ID

Permission screen will only show after number is running, which means that the API key can be retrieved immediately after the redirect without any additional API calls.

circle-info

Know the difference between different URLs:

partner_redirect_url is used for Integrated Onboarding only.

  • can only be set through API

  • should be a URL, that can be opened in a browser

webhook_url is used to receive any webhook events.

  • This is an API endpoint, that can receive POST requests.

  • can only be set through API

onboarding_deeplink is used for Embedded Signup

  • Is set through the profile section on the partner hub

  • should be a URL, that can be opened in a browser

Building the integration: video guides

Video 1: Overview and setting Redirect URL

Video 2: Adding the button and styling it

Video 3: Trigger flow and create API key

Video 4: Passing query parameters

URL Parameters

Here you can see details about accepted URL parameters when opening the /permission route on the Integrated Onboarding.

Parameter name
Description
Values
Stored in database?
Returned in redirect?

email

User email to pre-fill the signup form

string

Yes, as part of the client setup

No

name

User name to pre-fill the signup form

string

Yes, as part of the client setup

No

number

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/+.

number

No

No

state

Any string value that shall be passed through and returned with the redirect.

string

Yes

Yes

redirect_url

Will be used as individual redirect URL instead of the globally set one.

string (encoded)

No

Will be used as the new redirect URL

partner

Any string value that shall be stored on the client model. Can be retrieved via API as partner_payload.

string

No

No

next

Can be used to redirect clients directly to either the login form or the signup form, in case they are not yet logged in.

login / signup

No

No

Demo

We have built a demo tool so you can see how to use and configure the 360dialog Connect Button and how to consume the associated redirects, which will allow you to onboard clients through the Integrated Onboarding.

Here is the Public Github Repoarrow-up-right

Here is the Demo / Connect Button generatorarrow-up-right

Last updated

Was this helpful?