Skip to content

Multi-Tenancy

Whatbot is multi-tenant: each workspace (tenant) is fully isolated — its own numbers, contacts, conversations, templates, agents, and API keys.

One workspace, one or many WhatsApp numbers

Section titled “One workspace, one or many WhatsApp numbers”

A workspace holds one or more WhatsApp Business numbers, across one or more WhatsApp Business Accounts (WABAs) — some provisioned by us under a shared token, some the client’s own. They share one inbox, one contact list, and one set of flows, forms and agents. Two workspaces never share a number, an inbox, or a contact list.

Three rules govern how numbers are used:

  • A conversation is pinned to the number it started on. Every reply goes back out from that number. WhatsApp ties the 24-hour customer-service window to the pair (business number, customer), so answering from a different number would open a new window and can be rejected.
  • Anything that starts contact names its number, or uses the default. A broadcast, a flow trigger, a public-API send, or an agent’s new chat may pick a number; if it doesn’t, the workspace’s default number is used. Every workspace has exactly one default.
  • Everyone sees every number. Threads carry a badge showing which number they belong to, and the inbox can filter to one number. Per-agent number access is a separate permissions feature, not something numbers themselves enforce.

Manage numbers under Settings → WhatsApp Numbers: list them, connect more (from a WABA id, or after Embedded Signup, which reports every number on the account), pick the default, and disconnect. The default and the last remaining number cannot be disconnected — a workspace with no default has nothing to send from.

An API key (wa_live_…) belongs to exactly one workspace. Every call it makes reads and writes only that workspace’s data — there’s no cross-tenant access. Keys are stored hashed and can be revoked/rotated any time.

Own numbers

One or more WhatsApp numbers per workspace, across one or more WABAs.

Own templates

Templates belong to a WABA. A workspace with numbers on two WABAs has two template sets; pickers follow the number a message will send from.

Own contacts & inbox

Data is filtered by workspace on every query.

Own API key

Scoped credential; can’t reach other workspaces.

  • Client WABA shared with Zetta Tech: the business shares its own WABA with Zetta Tech as a partner, and Zetta Tech assigns it to the system user behind Whatbot’s shared token. The workspace stores no token of its own.
  • Embedded Signup: the workspace stores the token Meta issued in the popup (encrypted at rest) and uses it for that WABA’s calls.
  • Mixed: a workspace can hold both kinds at once. Each WABA records whether it is reached through the shared token or its own stored token, and the sending path uses the right one per number.
Per numberPer WABAPer workspace
Quality rating, registration, calling settings, Flows encryption key, customer-service windows, media idsTemplates, webhook subscription, access tokenContacts, opt-outs, agents, flows, forms, API keys

Opt-outs are workspace-wide on purpose: a customer who unsubscribes is silenced on every number, not just the one they replied to.

Onboarding is a one-time step per client: Embedded Signup, or the client sharing its WABA with Zetta Tech as a partner. After that, one system-user token reaches every shared WABA — there is no token per message. Each WABA still needs its own Meta billing and its own templates. See WhatsApp Setup.