WhatsApp Cloud API and Chatwoot: Direct, BSP, or Tech Provider?

Most guides to connecting WhatsApp to Chatwoot start at the wrong place. They open a Meta Developer account, click through to a temporary access token, and declare victory when a test message arrives. That part takes an afternoon. The part that decides whether you ship is the question nobody asks first: under whose account does the traffic run?

There are three answers, and they lead to very different builds. Pick wrong and you discover it months later, when you are migrating phone numbers or explaining to a client why their conversations live inside your billing account.

The three paths

 Direct Cloud APIThrough a BSPTech Provider
Who owns the WABAYouThe BSP, on your behalfEach client owns their own
Who Meta billsYouThe BSP bills you, with markupEach client, directly
Numbers supportedYour ownYoursUnlimited client numbers
Onboarding a clientN/AManual, via the BSPEmbedded Signup, self-serve
Meta approval neededBusiness verificationHandled by the BSPApp Review + Tech Provider status
FitsOne business, one numberTeams who want no infrastructureAgencies and platforms

Path 1 — Direct Cloud API

You create a Meta app, add the WhatsApp product, verify one phone number, and point Chatwoot at it. No intermediary, no per-message markup. This is the right choice for a single business running its own support desk, and it is what most published tutorials describe.

Two details catch people out. The access token Meta hands you by default expires in 24 hours — you need a System User token with whatsapp_business_messaging and whatsapp_business_management to get something permanent. And the phone number you register cannot already be attached to a WhatsApp account, personal or Business App. If it is, you delete that account first, and you do not get it back.

Use a number nobody is using. Not your main line, and not the number printed on your website.

Path 2 — Through a BSP

A Business Solution Provider resells access. You get a dashboard, support, and someone else absorbing the approval process. You pay for it twice: a markup on every conversation, and a dependency you cannot easily unwind.

The dependency is the part worth thinking about. Your number lives under their account. Migrating away is possible but it is a process, not a setting, and it usually involves downtime on a channel your customers are actively using.

For a single business with no technical team, a BSP is a defensible choice. For an agency onboarding clients, it means building your margin on top of someone else’s margin.

Path 3 — Tech Provider

Meta grants Tech Provider status to apps that onboard other businesses. Your clients connect their own WhatsApp Business Accounts to your app through Embedded Signup — they click a button on your site, log in with Facebook, and grant access. Meta bills them directly, on their own payment method. The provider never touches their money and never sits in the billing path, which means the client is not dependent on the provider for message spend, and the provider is not carrying somebody else’s bill.

This is worth asking any provider outright, because not all of them work this way – some put themselves in the billing path and invoice you for messaging on top of their own fee. Who Meta bills is the cleanest single question for telling the two models apart.

This is how the commercial platforms work, and it is available to anyone willing to go through App Review. It is also the only one of the three that scales past a handful of numbers without becoming administrative work.

Diagram showing three client WhatsApp Business Accounts sending messages through the WhatsApp Cloud API to a single Meta app webhook, which Chatwoot fans out to three separate inboxes matched on phone_number_id.
Under Tech Provider status, Meta delivers every client conversation to one callback URL and Chatwoot resolves the inbox from phone_number_id.

One webhook, many numbers

A reasonable fear when you first look at this: Meta sends webhooks at the app level, to a single callback URL. Chatwoot inboxes each have their own webhook path. So how do fifty clients share one endpoint?

They just do. Chatwoot resolves the target inbox from phone_number_id in the webhook payload, so a single callback URL serves every number you onboard. You do not need a routing layer in between, and building one is wasted effort.

What you do need, per client: subscribe your app to their WABA, register their phone number, and create the matching Chatwoot inbox. All three are API calls, which means onboarding can be fully automated behind the Embedded Signup button.

What actually stops you going live

The technical integration is the easy part. Three things hold up real launches, and none of them are in the setup tutorials.

1. Business verification

Get this done completely, and get it done first. Meta ties your sending limits and several account capabilities to a verified business, so an unverified account is a state to leave as quickly as possible rather than something to plan around. We treat verification as finished before a single client number goes live – it is the cheapest way to make everything afterwards predictable.

Verification requires documents proving the legal entity — registration certificate, tax identifier, an address that matches. If the business is young, or the paperwork is in a different name to the Facebook Business Portfolio, expect rounds of resubmission. Start this before you write any code, because it runs on Meta’s clock, not yours.

2. Template approval

WhatsApp lets you reply freely for 24 hours after a customer messages you. Outside that window you may only send pre-approved template messages. This is not a minor restriction — it governs every proactive notification you will ever send, from order updates to appointment reminders.

Templates get rejected for wording that reads as promotional when you submitted it as a utility, for placeholders that could produce misleading text, and for categories that do not match the content. Budget time for revisions, and write the templates before you promise a client a go-live date.

3. Knowing what it will cost

Meta charges per conversation or per message depending on category, and the rate varies by the customer’s country. A support desk answering inbound questions in one market has a very different bill to a platform sending utility notifications across several.

The published rate card changes. Check Meta’s current pricing page rather than any figure quoted in a blog post, including this one, and model your own volumes before quoting a client a monthly number.

One Chatwoot account or many?

If you are running Tech Provider, you face a design decision early: put every client’s inbox in one Chatwoot account, or give each client their own account inside the same installation.

One account is simpler to administer and gives you a single view across clients. It also means an agent misassignment exposes one client’s conversations to another. Separate accounts cost more setup and give real isolation, separate reporting, and the option to let clients log in and see their own inbox.

If the conversations belong to your clients’ customers rather than your own, separate accounts is the defensible answer. Chatwoot’s Platform API can create accounts and users programmatically, and the account’s own API creates the inbox, so the extra isolation does not have to mean extra manual work.

Choosing

  • One business, one number, technical team on hand — go direct. You will spend a day on setup and nothing on markup.
  • One business, no technical team — a BSP is a fair trade. Read the exit terms before you sign.
  • You are onboarding other businesses — Tech Provider, and start the App Review early. Nothing else scales, and anything else puts your clients’ traffic under your account.

Working with us

We deliver both of the paths worth taking. Which one fits depends on whether you want to own the infrastructure or just the account.

You own everything. We create your Meta app, stand up Chatwoot on your own domain, and connect your WhatsApp number. You hold every credential. We hand over a working system, and can stay on for maintenance if you want us to.

We host it. You connect your own WhatsApp Business Account to our platform through Embedded Signup. Nothing to install, nothing to patch, no server to watch. You verify your business with Meta and you are live.

In both cases the WhatsApp Business Account is yours and Meta bills you directly. We never sit between you and your money, and there is no per-message markup. We charge for our own work, by the hour – the setup, and whatever advice or help you need afterwards – and nothing on top of what you send. If you start on our platform and later want your own installation, we export your data and move the account across. That option is real precisely because the account was never ours.

Tell us what you are building and we will say which of the two fits, including the honest answer if it is neither.

Scroll to Top