Meta Business Account, sometimes referred to as Business Manager account or simply Business account, is being renamed to business portfolio. This change will appear gradually across Meta technologies. The change is cosmetic only and does not affect Meta Business Account IDs (business portfolio IDs).

Multi-Partner Solutions

Multi-Partner Solutions allow Solution Partners and Tech Providers to jointly manage customer WhatsApp assets in order to provide WhatsApp messaging services to their customers. For example, if you are a Tech Provider and are unable to offer custom or full WhatsApp messaging services to your customers, you can work with a Solution Partner to offer your customers the Solution Partner's services.

The basis of a Multi-Partner Solution is a partner solution, which is an agreed upon configuration in the app dashboard that defines which customer WhatsApp assets each partner can access. Once created and accepted, the solution can be used to customize the Embedded Signup flow. Any customers onboarded via the flow can grant asset access to all of the solution's partners.

Limitations

Only Solution Partner apps can be used by onboarded customers to send messages.

Requirements

You must be an approved Solution Partner, a Tech Provider who has completed the steps in our Get Started for Tech Providers document appropriate for your intended usage, or a Tech Provider who has been upgraded to a Tech Partner.

If your app will be calling our APIs to access onboarded customer data:

  • The app must be the same app whose token will be used in API requests.
  • The app must have completed App Review and been approved for the whatsapp_business_management and whatsapp_business_messaging permissions.
  • The app must be subscribed to the account_updates webhooks field and be able to successfully digest webhooks for onboarded customers.

Partner Solutions

A partner solution is an asset sharing relationship between two partners — a Tech Provider (or Tech Partner) and a Solution Partner.

Solutions are initiated, accepted, and managed in the App Dashboard > WhatsApp > Partner Solutions panel.

Solutions can be initiated by either partner of the solution. Once initiated, a solution request is sent to the invited partner, who can then use the panel in their app dashboard to accept or decline the request. Once accepted, either partner can use the solution to customize the Embedded Signup flow and onboard customers.

Solution States

Solutions states are displayed in the partner solutions panel. Solutions can have the following states:

StateDescription

Active

The solution has been accepted by the invited party and can be used to configure Embedded Signup for customer onboarding.

Deactivated

The solution has been deactivated.


Customers who attempt to access Embedded Signup configured for a solution in this state will see an error informing them that it cannot be used for onboarding at this time.

Draft

The solution has been initiated and saved, but you have not sent it to your partner.


Customers who attempt to access Embedded Signup configured for a solution in this state will see an error informing them that it cannot be used for onboarding at this time.

Inactive

The solution request was declined by your partner.


Customers who attempt to access Embedded Signup configured for a solution in this state will see an error informing them that it cannot be used for onboarding at this time.

Pending

Solution has not been accepted or declined by your partner.


Customers who attempt to access Embedded Signup configured for a solution in this state will see an error informing them that it cannot be used for onboarding at this time.

Pending deactivation

Your partner has requested to deactivate the solution. You can accept or decline this request.

Onboarding Limits

Tech Providers who are part of a partner solution can onboard up to 200 total new customers in a rolling one week period. Only customers who are new to the WhatsApp Business Platform count against this limit.

Embedded Signup

Embedded Signup can be configured and hosted by either of the solution's partners, or both partners. Once implemented, customers who access it will see a customized version of the Embedded Signup flow, which makes it clear that by completing the flow they are granting WhatsApp data access to both partners:

When a customer completes the flow, all of the customer's WhatsApp assets that we need are automatically generated, and access to those assets is granted to both partners of the solution.

Billing

Customers onboarded via Embedded Signup configured for a solution share the credit line of the Solution Partner associated with the solution.

Instructions

Contact your potential partner and work together to determine:

  • A solution name. The solution name will appear in the partner solutions panel in the app dashboard, so both you and your partner should agree on a name that can be distinguished from other solutions you may initiate or accept.
  • Who will initiate the solution request. Either your or your partner can initiate the request. If you are initiating the request, you will need your partner's app ID, so be sure to ask for it.
  • Who will configure Embedded Signup and surface it to customers. Both you and your partner can configure and surface Embedded Signup.
  • Anything else, such as contracts, service level agreements, services provided, billing processes, etc. This is left to the discretion of you and your partner, subject to each of your separate agreements with Meta.

Tech Providers and Tech Partners

  1. Initiate a partner solution request using your partner's app ID, or provide your partner with your app ID if they are initiating it.
  2. Confirm that the partner has accepted your request (its status is set to Active in the App Dashboard), or accept the request if your partner initiated it.
  3. Make sure your app is listening for newly onboarded customers. Although not required, it is advised that you do this, otherwise you will have to rely on emails or your Solution Partner to know when a customer has completed Embedded Signup.
  4. If you will be surfacing Embedded Signup, configure Embedded Signup and surface it to customers.

Solution Partners

  1. Initiate a partner solution request using your partner's app ID, or provide your partner with your app ID if they are initiating it.
  2. Confirm that the partner has accepted your request (its status is set to Active in the App Dashboard), or accept the request if your partner initiated it.
  3. Make sure your app is listening for newly onboarded customers.
  4. If you will be surfacing Embedded Signup, configure Embedded Signup and surface it to customers.
  5. Share your credit line with each newly onboarded customer.

Initiating Solution Requests

Navigate to the App Dashboard > WhatsApp > Partner Solutions panel and click the Create a partner solution button.

Use your partner's app ID to complete the flow.

Once completed and sent, your partner will receive an email and Meta Business Suite notification notifying them of the request. The solution will appear in the solutions panel with a Pending status until accepted by your partner. If accepted, it's status will change to Active. If declined, it's status will change to Inactive.

Accepting Solution Requests

Everyone with admin (Full control) privileges on your business portfolio will be notified by email and Meta Business Suite notifications when your partner sends you a partner solution request.

The request will appear in the App Dashboard > WhatsApp > Partner solutions panel with a Pending status.

If you have multiple solutions and are having a hard time locating the solution request, use the dropdown menu in the top-right corner of the panel and filter by Pending.

Confirm that everything is correct before accepting the request, as solutions cannot be declined once they have been accepted.

Once you accept the solution, its status will be set to Active and you and your partner can use it to configure Embedded Signup and begin surfacing it to customers.

If any information is incorrect, decline the request and ask your partner to submit a new request with the correct settings. Your partner will automatically be notified by email and Meta Business Suite notification if you decline the request.

Editing or Deactivating Solutions

Use the App Dashboard > WhatsApp > Partner solutions panel to edit or deactivate a solution. Note that you can only edit solutions that were initiated by you.

StatePermitted actions

Active

You may edit the solution name, or deactivate the solution.

Deactivated

Solutions in this state cannot be edited.

Draft

You may edit the solution name.

Inactive

You may edit the solution name.

Pending

Solutions in this state cannot be edited until accepted or declined by your partner.

Pending deactivation

You may accept or decline the partner's deactivation request.

Deactivating Solutions

You can request deactivation of any solutions that you have initiated, and which are in an Active state. When you request deactivation, the solution's status will change to Pending deactivation and your partner will be notified by email and Meta Business Suite notification of your request. Your partner can then accept or reject your request.

Solutions with a status of Pending deactivation can still be used to onboard customers.

If the deactivation request is rejected, the solution will remain in an Active state and can continue to be used to onboard customers.

If the deactivation request is accepted, the solution status will be set to Deactivated and can no longer be used to onboard customers, so make sure that neither you nor your partner are surfacing it to customers.

Configuring Embedded Signup

Configure Embedded Signup by assigning the solution ID to a solutionID property in the extras.setup object. For example:

<script type="text/javascript">
  document.getElementById('login-btn').onclick = () =>
    FB.login(response => {}, {
      config_id: '<CONFIG_ID>', // your configuration ID
      response_type: 'code',    // must be set to 'code' for System User access token
      override_default_response_type: true, // when true, any response types passed in the "response_type" will take precedence over the default types

      extras: {
        setup: {
          solutionID: '1985687578474211'
        }
      }
    });
</script>

<button id="login-btn" style="background-color:green; padding:10px 20px; color:#fff;">
  Launch Embedded Signup
</button>

Both you and your partner's business portfolio (Business Settings > Business Info) will appear throughout the Embedded Signup flow.

Once configured, surface the customized Embedded SIgnup flow to customers on your platform wherever you feel it is appropriate. Note that if you have multiple active partner solutions, it is your responsibility to inject the correct solution ID into your Embedded Signup configuration and surface it to your intended customers, otherwise a customer could be onboarded using the wrong solution.

Listening for Onboarded Customers

To listen for onboarded customers, your app must be subscribed to the account_updates webhooks field. When a customer completes the Embedded Signup flow configured with your solution, an account update webhook is triggered with a PARTNER_ADDED event.

In addition, we will send an email to admins of the business portfolio that owns the app, and a Meta Business Suite notification to the business portfolio that owns the app.

Payload Structure

{
  "entry": [
    {
      "id": "<BUSINESS_PORTFOLIO_ID>",
      "time": <TIMESTAMP>,
      "changes": [
        {
          "value": {
            "event": "PARTNER_ADDED",
            "waba_info": {
              "waba_id": "<CUSTOMER_WABA_ID>",
              "owner_business_id": "<CUSTOMER_BUSINESS_PORTFOLIO_ID>",
              "solution_id": "<SOLUTION_ID>",
              "solution_partner_business_ids": [<SOLUTION_BUSINESS_IDS>]
            }
          },
          "field": "account_update"
        }
      ]
    }
  ],
  "object": "whatsapp_business_account"
}

Payload Properties

PlaceholderDescriptionExample

<BUSINESS_ACCOUNT_ID>

Your business portfolio ID.

506914307656634

<CUSTOMER_BUSINESS_PORTFOLIO_ID>

Onboarded customer's business portfolio ID.

6143763655652543

<CUSTOMER_WABA_ID>

Onboarded customer's WhatsApp Business Account ID.

102290129340398

<SOLUTION_BUSINESS_PORTFOLIO_IDS>

Strings of business portfolio IDs of the Tech Provider (or Tech Partner) and Solution Partner associated with the solution.

"506914307656634","116133292427920"

<SOLUTION_ID>

Solution ID.

303610109049230

<TIMESTAMP>

UNIX timestamp indicating when the customer successfully completed the Embedded Signup flow.

1690592557

Capture the waba_id, solution_id, and owner_business_id property values, as well as any other property values you may need, so you can use them in API calls for newly onboarded customers.

Manually Checking for Onboarded Customers (Optional)

As a fallback in case of webhook problems, you can manually check for onboarded customers by sending a GET request to the Business Portfolio > Client WhatsApp Business Accounts endpoint, which returns WABA IDs of all customers newly onboarded via the solution.

Request Syntax

GET /<BUSINESS_PORTFOLIO_ID>/client_whatsapp_business_accounts
  ?filtering=[
    {
      "field":"partners",
      "operator":"ALL",
      "value":[
        "<PARTNER_BUSINESS_PORTFOLIO_ID>"
      ]
    }
  ]

Replace <PARTNER_BUSINESS_PORTFOLIO_ID> with your partner's business portfolio ID.

Response

{
  "data": [
    {
      "id": "<CUSTOMER_WABA_ID>",
      "name": "<CUSTOMER_WABA_NAME>",
      "timezone_id": "<CUSTOMER_WABA_TIMEZONE_ID>",
      "business_type": "ent",
      "message_template_namespace": "<MESSAGE_TEMPLATE_NAMESPACE>"
    },
    ...
  ],
  "paging": {
    "cursors": {
      "before": "<BEFORE>",
      "after": "<AFTER>"
    },
    "next": "<NEXT>"
  }
}
PlaceholderDescriptionExample Value

<CUSTOMER_WABA_ID>

Customer WhatsApp Business Account ID.

102290129340398

<CUSTOMER_WABA_NAME>

Customer WhatsApp Business Account name.

Cool New Customer 2

<CUSTOMER_WABA_TIMEZONE_ID>

Customer WhatsApp Business Account timezone ID.

7

<MESSAGE_TEMPLATE_NAMESPACE>

Customer WhatsApp Business Account template namespace for On-Premises API. See Language Packs.

0add05f3_abbe_4a55_b6f5_e751fa4e1244

<BEFORE>

Paginated results cursor. See Paginated Results.

QVFIU...

<AFTER>

Paginated results cursor. See Paginated Results.

QVFIU...

<NEXT>

Paginated results link. See Paginated Results.

https://graph.facebook.com/v18.0/50691...

Example Request

curl -g 'https://graph.facebook.com/v19.0/506914307656634/client_whatsapp_business_accounts?filtering=[{%22field%22%3A%22partners%22%2C%20%22operator%22%3A%20%22ALL%22%2C%20%22value%22%3A%20[%22520744086200222%22]}]' \
-H 'Authorization: Bearer EAAJB...'

Example Response

{
  "data": [
    {
      "id": "102290129340398",
      "name": "Cool New Customer 2",
      "timezone_id": "7",
      "business_type": "ent",
      "message_template_namespace": "0add05f3_abbe_4a55_b6f5_e751fa4e1244"
    },
    {
      "id": "112077945305052",
      "name": "Cool New Customer 1",
      "timezone_id": "7",
      "business_type": "ent",
      "message_template_namespace": "b2d0c901_b542_46a0_ab99_5939b75267d8"
    },
    ...
  ],
  "paging": {
    "cursors": {
      "before": "QVFIU...",
      "after": "QVFIU..."
    },
    "next": "https://graph.facebook.com/v19.0/50691..."
  }
}

Sharing Your Credit Line

This action is only required for Solution Partners.

When you are informed by webhook, or by your partner, of a newly onboarded customer, you must share your line of credit with the customer.

See Share and Revoke Credit Lines.