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 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.
Only Solution Partner apps can be used by onboarded customers to send messages.
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:
account_updates
webhooks field and be able to successfully digest webhooks for onboarded customers.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.
Solutions states are displayed in the partner solutions panel. Solutions can have the following states:
State | Description |
---|---|
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. |
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 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.
Customers onboarded via Embedded Signup configured for a solution share the credit line of the Solution Partner associated with the solution.
Contact your potential partner and work together to determine:
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.
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.
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.
State | Permitted 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. |
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.
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.
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.
{ "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" }
Placeholder | Description | Example |
---|---|---|
| Your business portfolio ID. |
|
| Onboarded customer's business portfolio ID. |
|
| Onboarded customer's WhatsApp Business Account ID. |
|
| Strings of business portfolio IDs of the Tech Provider (or Tech Partner) and Solution Partner associated with the solution. |
|
| Solution ID. |
|
| UNIX timestamp indicating when the customer successfully completed the Embedded Signup flow. |
|
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.
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.
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.
{ "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>" } }
Placeholder | Description | Example Value |
---|---|---|
| Customer WhatsApp Business Account ID. |
|
| Customer WhatsApp Business Account name. |
|
| Customer WhatsApp Business Account timezone ID. |
|
| Customer WhatsApp Business Account template namespace for On-Premises API. See Language Packs. |
|
| Paginated results cursor. See Paginated Results. |
|
| Paginated results cursor. See Paginated Results. |
|
| Paginated results link. See Paginated Results. |
|
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...'
{
"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..."
}
}
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.