Host your own Embedded Signup

For even more personalization, you can also host your own Embedded Signup flow.

At the moment, this is only available for Partners using Partner Payment model.

Requirements

Tech Provider registration and approved Solution

To enable this option, you must be a Meta approved Tech Provider and have a live Solution with 360dialog.

Refer to the following documentation to understand details about this option:

Technical capacity to host and manage your own Embedded Signup

You will also need to be able to host and manage your own Embedded Signup script, which requires technical knowledge. We will not be able to support you on troubleshooting your own Embedded Signup.

Cloud API enabled

As announced in November 2023, Meta is transitioning to a fully Cloud-hosted WhatsApp Business Platform and will stop supporting On-Premise API in October 2025.

Starting from On-Premise client v2.53, all new feature updates will be exclusively delivered to Cloud API. While the On-Premise API client will receive quarterly releases, they will focus solely on bug fixes and security patches. From May 15, 2024, 360dialog will not allow for new numbers to be onboarded with On-Premise API. We will continue supporting already registered On-Premise API throughout 2024, but we strongly recommend to start changing the hosting type of numbers to Cloud as soon as possible. Learn here how to integrate with Cloud API.

This option is only available if your Partner Hub is already enabled for Cloud API.

Set Partner Hub Webhook URL and listen to Webhook Events

See instructions here.

Building the Integration

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.

Create client account

POST https://hub.360dialog.io/api/v2/partners/{partner_id}/account_sharing/clients

Request example curl --request POST --url https://hub.360dialog.io/api/v2/partners/partner_id/account_sharing/clients --header 'Accept: application/json' --header 'Authorization: Bearer 123' --header 'Content-Type: application/json' --data '{ "name": "string", "email": "string", "user_name": "string"}'

Request Body

NameTypeDescription

name*

string

Name of the client user

email*

string

Email address of the client user.

user_name*

string

Name of the client user.

{
  "id": "string", // ID of the Client
  "created_at": "string",
  "created_by": {
    "user_id": "string",
    "user_name": "string"
  },
  "modified_at": "string",
  "modified_by": {
    "user_id": "string",
    "user_name": "string"
  }
}

Step 2: Surface Embedded Signup to client and fetch information

When the Embedded Signup is completed by the client, you can use the code received in the payload to fetch detailed WABA information. See more here and here.

Step 3: Connect Client account to 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 end by redirecting the Client to the Partner Redirect URL set.

Submit channel/number created via self-hosted Embedded Signup

POST https://hub.360dialog.io/api/v2/partners/{partner_id}/account_sharing/numbers

Request example curl --request POST --url https://hub.360dialog.io/api/v2/partners/partner_id/account_sharing/numbers --header 'Accept: application/json' --header 'Authorization: Bearer 123' --header 'Content-Type: application/json' --data '{ "solution_id": "string", "waba_external_id": "string", "waba_business_id": "string", "client_id": "string", "plan_selection": "string" }'

Path Parameters

NameTypeDescription

partner_id*

string

Request Body

NameTypeDescription

solution_id*

string

Your approved Solution ID

waba_business_id

string

The Client's Business Manager ID

waba_external_id*

string

The WABA ID returned through the ES callback.

client_id

string

The ID of the client

plan_selection

string

Can be used to set the default pricing plan for the number to be added.

Will only work for partners enabled for tiered pricing. *If you are not sure of you billing plan, please reach out to our Support Team.

Clients on partners with client payment will be able to change the pre-selected plan.

Allowed values: basic, regular, premium

Default: regular

Use the plan_selection parameter to set the pricing plan. If no value is provided, numbers will be connected with regular pricing plan as default.

{
  "app_id": null,
  "created_at": "2023-11-02 09:00:00",
  "expires_at": "2023-11-09 09:00:00",
  "start_at": "2023-11-02 09:00:00",
  "debug_info": null,
  "durable": true,
  "id": "CMD0",
  "last_retry_at": null,
  "max_retries": 5,
  "name": "event",
  "priority": 9,
  "retries": 0,
  "source": "csi_partners",
  "status": "created",
  "topic": "domain-events",
  "value": {
    "action_name": "event",
    "app_id": null,
    "payload": {
      "actor_id": "U100",
      "channel_id": null,
      "client_id": "CL0",
      "config_id": null,
      "id": "DM0",
      "name": "fb_login_callback",
      "partner_id": "P0",
      "project_id": null,
      "properties": {
        "campaign_id": null,
        "channel_origin": "tech_provider",
        "hosting_platform_type": "meta_cloud_api",
        "contact_info": null,
        "contact_user": null,
        "created_at": "$ANY()$",
        "created_by": {
          "user_id": "U100",
          "user_name": "Test User"
        },
        "has_integration_layer": false,
        "id": "CL0",
        "input_token": "",
        "meta_info": null,
        "modified_at": "2023-11-02 09:00:00",
        "modified_by": {
          "user_id": "random",
          "user_name": "a name"
        },
        "name": "business",
        "organisation": "waba business id",
        "partner_payload": "This client is created automatically by partner/tech provider",
        "max_channels": 10,
        "suspicious": false,
        "status": "active",
        "pricing_tier": "regular",
        "bundle_id": null,
        "enabled_for_chat_support": false,
        "waba_external_id": "waba id"
      },
      "scope": "client",
      "timestamp": "1698915340",
      "waba_account_id": null
    }
  }
}

Step 4: Create API key to start messaging

When the number is fully live, you will receive the Channel Live Webhook Event.

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 for details.

Last updated