Skip to main content
If you’re building a product for other businesses (a CRM, a booking tool, a helpdesk, an agency dashboard), you can offer WhatsApp inside it without becoming a Meta Tech Provider yourself. Your users connect their own WhatsApp Business account through a hosted signup link, the account lands in your Wassist organization, and you decide how each number is answered: by your own code through a webhook, or by a managed agent you create for that user. Your users never need a Wassist login. Everything happens through your API key.

How it maps to your product

Wassist has no concept of your users, so keep the mapping yourself: your user ID, their WhatsApp account id, and their phone numbers.
Registering numbers needs the Starter plan or above on your organization, and the Business API proxy needs Pro.

1. Send your user through signup

Create an API key under Settings → Developers → API keys, then create a link session when your user clicks “Connect WhatsApp” and redirect them to its linkUrl:
Your user lands on a Wassist-hosted page and picks one of three options, each of which opens Meta’s signup popup:
  • Connect Existing App: move a number from the WhatsApp Business app. Their contacts and chat history start syncing.
  • Create Fresh Number: create a new WhatsApp Business Account through Meta.
  • Connect Existing WhatsApp Business API: share an account that already uses the API.
When they finish, Wassist redirects them to your successUrl with ?session_id=<id>&confirmed=true appended. The Back link on the hosted page goes to your returnUrl.
Don’t put a query string in successUrl. Wassist appends ?session_id=... to it, so put your own identifiers in the path, as above.
Sessions stay usable until they succeed. If your user abandons one, or you issue them a new link, expire the old one with wassist.whatsappLinkSessions.expire(sessionId).

2. Record the new account

On the success redirect, confirm the session with the API rather than trusting the query string, then find the account that appeared:
The link session doesn’t return the account it created, which is why the snapshot above is needed. Two edge cases:
  • No new account appears. The user re-linked an account that’s already in your organization. Wassist refreshes its access token and keeps the same account id.
  • More than one new account appears. Two of your users finished at the same moment. Match on the account’s name (the business name they entered at Meta), or ask the user to pick.

3. Register the numbers

The Connect Existing App option registers the number automatically. For the other two, the account arrives with its numbers still on Meta’s side, and you register the ones you want Wassist to handle. These two endpoints aren’t in the SDK yet, so call them directly:
number on each registered phone number is the E.164 number without the + (for example 447700900100). It’s the identifier for every phoneNumbers.* call and the whatsappNumber field on webhook events, so store it against your user.
Add a pre-verified Wassist number to their account. It’s ready straight away, with no SMS verification:

4. Handle their conversations

Pick per number. You can run some users on webhooks and others on managed agents, or mix both on one number.
Create one webhook for your whole platform under Settings → Developers → Webhooks, then route each of your users’ numbers to it:
Every inbound message arrives as a signed subscription.message.received event. Look up which of your users owns the number from whatsappNumber, then reply through the Messages API:
Keep conversation state keyed by conversationId, which is unique across all of your users. See Conversation routing for the full event list and Webhooks for signing and retries.

Combine both

A common setup is a managed agent on every number, with your own inbox taking over individual chats when a human needs to step in. Subscribe just that conversation to your webhook, then hand it back when you’re done:

Operate your users’ accounts

You need an approved template to message a customer outside WhatsApp’s 24-hour window. Meta approves templates per WhatsApp account, so create the template once in your organization and publish it to each user’s account:
Approval status is tracked per account on the template. See WhatsApp templates.
The Business API proxy forwards requests to Meta’s Graph API using the access your user granted, so you can call endpoints Wassist doesn’t wrap without handling Meta tokens yourself. Requires the Pro plan.
Stop handling a user’s messages without touching their WhatsApp account:
Messages are still stored while a number has no routing. Your user can revoke Wassist’s access to their account at any time from Meta Business Settings.
Each of your users’ businesses is its own account at Meta, with its own messaging limits and display-name review. For higher limits and the verified badge, the user completes Meta business verification from Meta Business Suite. See Business verification.
Try the whole flow on yourself first: create a link session, open the linkUrl, and connect your own WhatsApp Business account as if you were one of your users.

Conversation routing

Webhook, agent and no-routing modes, per number and per conversation.

Configure tools

Give each user’s agent access to their data.

Link session API

Create, list and expire link sessions.