> For the complete documentation index, see [llms.txt](https://docs.360dialog.com/partner/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.360dialog.com/partner/onboarding/new-whatsapp-account-model.md).

# New WhatsApp account model

Meta's new account structure (WhatsApp account + Messaging account) is live for all accounts: adding 360dialog to a number already with another provider, conversation routing, templates and throughput

Meta has changed the account structure of the WhatsApp Business Platform (Meta's [account model evolution](https://developers.meta.com/resources/videos/whatsapp-account-model-evolution/)). It rolled out from late September 2026 and reached all businesses by mid-October 2026. One business phone number can now work with several providers at the same time. Meta migrated all accounts automatically. Existing IDs, tokens, endpoints and billing keep working.&#x20;

## What changed

In the legacy model one WhatsApp Business Account (WABA) held the phone number, the templates and the billing of one integration. The new structure splits that into two objects:

| Object                                                       | What it holds                                                                                                                                                      | How many per phone number |
| ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------- |
| WhatsApp account (WAAC)                                      | The business phone number, display name / business username, catalogs.                                                                                             | One.                      |
| Messaging account (formerly WhatsApp Business Account, WABA) | Message templates, billing (payment method / credit line) and webhooks of one provider: 360dialog, another BSP, a direct Cloud API integration or a Meta solution. | One per provider.         |

An existing WABA became the Messaging account of its provider, with the same ID. The phone number now lives in the WhatsApp account.

In practice:

* A business can keep its number with 360dialog and add another provider on the same number. Each Messaging account has its own payment method; 360dialog's Messaging account uses 360dialog's credit line.
* Templates belong to the Messaging account. Another provider on the same number does not see or reuse your client's templates, and templates are not copied when a number is added to a new provider. See [Templates](#templates).
* Throughput and messaging limits are per phone number, so they are shared across all Messaging accounts (providers) on that number.
* The identifier you store today as the WABA ID is the Messaging account ID of your integration. Existing WABA IDs did not change. See [What you see in Embedded Signup](#what-you-see-in-embedded-signup).
* A business is on the new model if Meta Business Suite shows both **WhatsApp accounts** and **Messaging accounts**. All businesses had been moved by mid-October 2026.

## What stays the same

Meta guarantees backward compatibility through H1 2028:

* Cloud API endpoints and the 360dialog Messaging API are unchanged.
* Phone number IDs, access tokens and 360dialog API keys keep working.
* Template workflows and billing are unchanged.
* The new WhatsApp account and Messaging account identifiers are additive. All currently stored identifiers remain valid.
* The 360dialog Partner API and the Partner Hub continue to use `waba_external_id`, `waba_account_id` and the existing WABA-based fields and labels. Where the API reference says “WABA”, read “Messaging account”.

## Adding 360dialog to a number that is with another provider

This replaces the old number migration (offboard from the previous provider, disable two-step verification, re-register the number, verify it with a code). That flow no longer exists.

The business adds 360dialog as an additional provider on the number:

1. An admin of the business’s own Meta Business Portfolio starts 360dialog’s Embedded Signup through the partner’s [Integrated Onboarding](/partner/onboarding/integrated-onboarding.md) or partner-hosted flow. The partner can assist but cannot complete Embedded Signup on the client’s behalf.
2. On the first screen the business selects the existing phone number.
3. The Business Portfolio and WhatsApp account fields are greyed out. This is expected: Meta pre-selects the portfolio and the WhatsApp account that already hold the number.
4. When signup completes, the number has a new Messaging account for 360dialog, with 360dialog's credit line. The previous provider is not removed.

No longer needed: deleting the number from the old provider, disabling two-step verification (2FA), a verified Business Portfolio before starting, or "re-onboarding" the number.

Full steps, the after-onboarding checklist and troubleshooting: Migrate a number to 360Dialog.

## Conversation routing on shared numbers

When a number has several providers, Meta decides which one answers a given conversation ("conversation routing"). Meta keeps the existing routing when a provider is added. After a business adds 360dialog to a number that is, or was, with another provider, the previous provider stays the responder **until the business changes it.** Only the business can change it. 360dialog cannot change it for the client and does not offer Meta's routing orchestration.

Symptoms when routing still points to the previous provider: the channel is Ready (`running`) and looks healthy in the Partner Hub, but

* no incoming messages and no message webhooks reach 360dialog (they go to the previous provider);
* Meta's `health_status` may say "Your app is not subscribed to the message webhook" although the phone number and WABA webhook URLs are set;
* free-form replies fail with error "(#131070) Message failed to send because another app is controlling this thread now".

Fix, done by the business in Meta Business Suite: **Business settings → WhatsApp accounts → select the account/number → Conversation routing → Manage → Select 360dialog in every dropdown → Apply**&#x20;

<figure><img src="https://2248475362-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FuyAl2S0lSHJaNDXJHo7A%2Fuploads%2FMeTRO096yLbGL5aniMu1%2Fanother.app.is.controlling.the.flow1.png?alt=media&amp;token=b22df54b-3f4f-4201-b120-a7b504131c15" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2248475362-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FuyAl2S0lSHJaNDXJHo7A%2Fuploads%2FjWEOHlomZcL7ruoPbWkx%2Fanother.app.is.controlling.the.flow2.png?alt=media&amp;token=51f182d0-066c-42c0-98f9-34b9b831344d" alt=""><figcaption></figcaption></figure>

Only a Business Portfolio admin can do this. Alternatively, removing the previous provider from the number resets the routing. Ask your clients to do this right after onboarding, before they test incoming messages.

## Templates

Templates are not carried over to the new Messaging account. If the client needs the templates it used with the previous provider, 360dialog Support can duplicate them from the source Messaging account on request. A number can have several Messaging accounts, each with different templates, so tell Support which one is the source. Meta reference: [template migration](https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/template-migration).

## Measurement-only setups

If the business keeps another provider for messaging and uses 360dialog only to measure (for example with 360Pilot), it must also grant 360dialog Conversation Visibility (the standby role) in Meta Business Suite. Embedded Signup grants the number, portfolio and messaging permissions, but not visibility. With visibility granted, 360dialog receives standby webhooks (copies of the messages).

## Partner Hub features affected

* Migrate number between WABAs in the 360dialog Hub no longer works under the new model. The pages Migrate a phone number to a new WABA and Moving numbers between Business Managers are marked accordingly.

## Changes in Embedded Signup

All Embedded Signup versions reflect the new structure, whether it's 360dialog's [Integrated Onboarding](/partner/onboarding/integrated-onboarding.md) or a partner-hosted flow.

* **The Messaging account ID arrives in the existing WABA ID field.** Store it the same way the WABA ID is stored today and pass it to the Partner API as `waba_external_id`. No code change is required, but be aware that two providers on the same number receive **different** IDs in that field. Embedded Signup v5 also returns the Messaging account IDs in a `messaging_account_ids` field.
* **A number already in use can be shared.** The signup flow lets a business add 360dialog to a phone number that is already active with another provider or a direct integration. Embedded Signup creates a Messaging account for the partner’s solution and returns its ID. In the legacy model this case ended in an error or required a migration.

## Troubleshooting and FAQ

<details>

<summary>The channel is Ready, but no incoming messages or webhooks arrive</summary>

If the number is, or was, with another provider, Meta still routes conversations to that provider. The business sets conversation routing to 360dialog in Meta Business Suite: Business settings → WhatsApp accounts → select the number → Conversation routing → select 360dialog in every dropdown → Apply. Only a Business Portfolio admin can do this. See [Conversation routing on shared numbers](#conversation-routing-on-shared-numbers).

</details>

<details>

<summary>Can a client's number be with 360dialog and another provider at the same time?</summary>

Yes. Each provider gets its own Messaging account with its own templates and billing, and messaging limits are shared across them. 360dialog only receives the customers' messages if conversation routing points to 360dialog.

</details>

<details>

<summary>How does a client move a number from another provider to 360dialog?</summary>

The number is no longer migrated. The client's Business Portfolio admin runs 360dialog's Embedded Signup and selects the existing number. A new Messaging account is created for 360dialog, and the previous provider stays until the business removes it in Meta Business Suite. See Migrate a number to 360Dialog.

</details>

<details>

<summary>Meta bills the client's card instead of 360dialog's credit line</summary>

Each Messaging account has its own payment method. 360dialog's Messaging account must use 360dialog's credit line; if it does not, contact our [Support Team](https://docs.360dialog.com/docs/support/get-support).

</details>

## Further reading

* Meta: [WhatsApp account model evolution (video)](https://developers.meta.com/resources/videos/whatsapp-account-model-evolution/)
* Meta: [Account model evolution (developer docs)](https://developers.facebook.com/documentation/business-messaging/whatsapp/account-model-evolution)
* Meta: [Embedded Signup overview](https://developers.facebook.com/documentation/business-messaging/whatsapp/embedded-signup/overview/)
* Meta: [WhatsApp Business accounts](https://developers.facebook.com/documentation/business-messaging/whatsapp/whatsapp-business-accounts/)

*Last reviewed: 29 October 2026.*


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.360dialog.com/partner/onboarding/new-whatsapp-account-model.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
