StartImplementation Guides

Onboard client WhatsApp accounts with a Meta Multi-Partner Solution

This guide shows you how to set up a Meta Multi-Partner Solution with Sent, onboard your clients' WhatsApp Business Accounts (WABAs) into it, and send from each one through its own Sender Profile.

A Multi-Partner Solution is Meta's arrangement for two partners serving the same WhatsApp clients. You are the Tech Provider: you own the Meta app and the client relationship. Sent is the Solution Partner and sends messages on your behalf. A client shares their account into the partnership once, and from then on Sent sends from it and obtains the access token for it. You never handle a client's token.

When to use a partner solution

Before Sender Profiles are enabled, the Sender Profiles page offers two ways to start:

ChoiceWhat it means
Become a PartnerYour clients share their WABAs into your partnership with Sent. Use it when you own a Meta app as a Tech Provider. It opens the partnership setup and doesn't enable Sender Profiles. Only Owners and Admins working in the organization see it.
Continue with dedicated WABAsEnables Sender Profiles. Each profile connects its own WABA with Log in with Meta, as in Connect a WhatsApp Business Account. There is no partnership.

You don't have to choose one or the other. A partnership doesn't stop any profile from connecting a dedicated account, and you can create a partnership later from the Sender Profiles page.

Before you start

  • An organization account. A partnership belongs to your organization, never to a single profile, and the accounts in it are attached to profiles.
  • The Owner or Admin role in that organization. The controls that create the partnership and onboard clients are hidden from other roles.
  • A Meta app you own. Sent creates the partnership on that app, and you sign in with the Meta account that owns it.
  • To attach accounts to profiles: Sender Profiles enabled, and your organization's own WhatsApp Business Account connected to Sent. Sent finds your clients' shared accounts through your organization's account, so without it none can be listed or attached. Connect it with Connect a WhatsApp Business Account. Neither is needed to create the partnership or onboard clients.

Set up the partnership and onboard clients

Create the partnership

Open Sender Profiles and select Partner Solution. If Sender Profiles aren't enabled yet, select Become a Partner instead.

Under 1. The partnership, enter a Partnership name. It defaults to your organization's name followed by + Sent. Then select Authorize with Meta. In Meta's window, sign in with the Meta account that owns your app, pick the app Sent should manage, and grant permission.

This step creates the partnership only. No WhatsApp account is connected yet. When it finishes, the dialog shows Partnership created and the partnership's Solution ID.

You do this once. Your organization holds one partnership, and when you open Partner Solution again it shows the existing one.

Onboard a client

Under 2. Onboard a client, select Launch client signup. This opens WhatsApp signup, and your client, not you, signs in to it with their own business account. The account they finish with is shared into your partnership.

When the client finishes, the dialog shows Client onboarded and the account's WABA ID. Copy it if you plan to attach the account through the API. Select Onboard another client for the next one.

Attach the account to a Sender Profile

In the Sender Profile's setup, on the WhatsApp step, select Use a shared account. The button appears once your organization has a partnership. Pick the client's account and one of its numbers, then select Attach account.

Only accounts marked Approved can be picked, and only verified numbers. A number that isn't verified yet shows Needs verification in Meta, and the client verifies it in Meta before it can be attached.

A number sends for one profile only. To attach the account without the dashboard, use the API as described in the next section.

Attach a shared account through the API

Connect a shared account to an existing profile with POST /v3/channels/whatsapp. Use an organization API key and send x-profile-id for the profile that should send from the account, or use that profile's own API key:

curl -X POST "https://api.sent.dm/v3/channels/whatsapp" \
  -H "x-api-key: $ORG_API_KEY" \
  -H "x-profile-id: $PROFILE_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "waba_id": "123456789012345",
    "phone_number_id": "987654321098765"
  }'
  • waba_id is required. Take it from Client onboarded in the dashboard. The API has no endpoint that lists your shared accounts; the dashboard's Use a shared account list shows them.
  • phone_number_id is optional. You can omit it to connect the account now, then call the endpoint again with the same waba_id and a phone_number_id to name the number.
  • Don't send access_token, solution_id or owner_business_id; they're ignored. Sent works all three out from your partnership. The token is issued for each client business and rotates roughly every sixty days, so a token you sent would soon go stale.

Each call replaces the profile's WhatsApp account with what you send. A call without phone_number_id clears a number that was already named, and a call with a different waba_id swaps the account.

The response is the WhatsApp account: waba_id, phone_number_id, solution_id, owner_business_id, status, and a reason_code and reason whenever status isn't ACTIVE. It never returns the token.

This endpoint doesn't check the number with Meta. A phone_number_id that isn't on the account still reads ACTIVE, and the profile's WhatsApp messages then fail when sent. Copy the ID carefully, or attach from the dashboard, which only offers the account's own numbers.

To attach an account while you create the profile, pass the same two fields as channels.whatsapp on POST /v3/sender-profiles. Sent fills in the solution, business, and token the same way. Creating a profile also checks the account and number with Meta, and refuses with 409 an account or number already recorded on any other profile or on an organization. A profile with its own WhatsApp account also needs a sender of its own, so channels.whatsapp requires channels.sms. See Create and activate Sender Profiles via the API.

Call POST /v3/channels/whatsapp for a profile, not for the organization. Your organization's own account is the one the partnership belongs to, so attaching a shared account to the organization itself is refused with 400.

Confirm the account can send

Read the profile's WhatsApp channel with GET /v3/channels, sending x-profile-id for the profile. Managing channels explains the full response.

whatsappMeaning
status ACTIVEThe account and its number are connected. The profile sends from them.
status ACTION_NEEDED, reason_code CHANNEL_007The account is connected but no number is named. Call POST /v3/channels/whatsapp again with the same waba_id and a phone_number_id.
nullNo WhatsApp account is connected to this profile.

Until a number is named, the profile's WhatsApp messages fail with reason code DELIVERY_003. They don't fall back to your organization's account, because a client's traffic going out under your business's name would show recipients the wrong sender.

Tokens, and when a client leaves

You don't manage tokens. Sent obtains each client's token when the account is attached. If Meta rejects the token while a message is being sent, Sent obtains a new one and retries the message. If Meta won't issue a new one, the message fails with reason code DELIVERY_009. Contact support if you see it.

When the relationship ends in Meta, Sent stops using WhatsApp for the affected senders.

  • If a client removes the partnership from their WhatsApp account, this applies to every profile that sends from that account.
  • If Meta deactivates or rejects the partnership itself, it applies to every profile attached through it and to your organization's own account.

Your organization's own account is included in the second case even though you connected it with Log in with Meta, because the partnership belongs to it. Sender Profiles on dedicated accounts aren't affected in either case. A message that lets Sent pick the channel goes out on another available channel instead of WhatsApp. Contact support to restore WhatsApp.

GET /v3/channels can still show the WhatsApp channel as ACTIVE after the relationship ends. Don't rely on the status alone to tell whether a profile still sends on WhatsApp.

Removing an account is not self-service. To detach a shared account from a profile, or move a client off your partnership, contact support.

Deleting a Sender Profile deregisters its WhatsApp number from Meta. For a client's shared account, that takes the client's own number off WhatsApp. To stop sending for a client without that, contact support instead of deleting the profile.

Troubleshooting

What you seeCauseWhat to do
No Partner Solution buttonYou aren't an Owner or Admin, you aren't working in organization mode, or Sender Profiles aren't enabledSwitch to the organization and use an Owner or Admin login. Before Sender Profiles are enabled, use Become a Partner
Authorization cancelledSent wasn't granted permission to manage the appRun Authorize with Meta again and grant the permission
2. Onboard a client shows "Create the partnership first"The partnership doesn't exist yetComplete step 1 first. Meta shows the client an error until Sent has accepted the partnership
Signup did not return an accountNo WhatsApp Business Account came back from the signup windowAsk the client to run signup again
"No WhatsApp accounts are shared with this organization yet"No client has finished signup, or your organization's own WhatsApp account isn't connectedOnboard a client, and confirm your organization's WhatsApp channel is connected
Needs verification in Meta on a numberThe number isn't verified in MetaAsk the client to verify the number in Meta, then attach it
400 "WhatsApp Business Account not found"The waba_id isn't shared into your partnership, or your organization's own WhatsApp account isn't connectedCheck the ID, onboard the client if they haven't finished signup, and confirm your organization's WhatsApp channel is connected
400 "Organization has no Multi-Partner Solution configured"Your organization has no partnershipCreate one in the dashboard
400 "is already used by profile"The number is attached to another profileName a different phone_number_id
409 RESOURCE_007 on POST /v3/sender-profilesThe account or the number is already recorded on another profile or organizationMeta registers a number to one business account, so supply an account and number nobody else uses
Messages fail with DELIVERY_003The profile's account has no number namedName the number, as in Confirm the account can send

On this page