Build the Client's WhatsApp Chatbot Before Meta Approves Anything
Most agencies wait on Meta verification before they build. You don't have to. Here's the Wabery order of operations: one project per client, a sandbox number today, the client's real number when Meta clears it.
There is a dead period in every WhatsApp project. The client says yes. Then somebody has to create a Meta Business account, verify a legal entity, pick a display name, and wait. Days, sometimes weeks. Nothing ships. The agency looks slow at exactly the moment it needed to look fast.
Almost every agency builds in that order: get the number approved, then start building. It’s backwards. The approval is a paperwork problem at the client’s end. The chatbot is your work, and none of it depends on their paperwork being finished.
Wabery is built around the opposite order. Build first on a sandbox number, demo a working thing in the first week, and connect the client’s real number as the last step instead of the first.
Here’s how the pieces fit.
One Project Per Client
A project in Wabery is one client. Their contacts, conversations, channels, credentials, and environments live inside it and do not leak into another client’s project. When you finish an engagement, you archive a project, not untangle a shared account.
That boundary also runs your platform bill. Wabery prices per Live client project, not per seat and not per message markup. A project flips to Live automatically the first time a real client channel connects to it, which means projects you’re still building use no paid Live-project capacity. Shared-sandbox delivery is a separate wallet charge from October 1, 2026.
wabery projects listThe practical effect: you can have twelve client projects open in draft, pitch all twelve, and pay for the ones that actually signed.
The Sandbox Is a Real WhatsApp Number That Isn’t Theirs
Every project gets a shared sandbox WhatsApp number with no Meta Business account or display-name review. Delivery is free through September 30, 2026; from October 1 it uses wallet credit at Meta’s published service rate. The $2 starter credit is allocated after you add a card.
You get the join code from project settings, text it from your own phone, then send a normal message. That’s a real conversation in the Inbox, and from there the sandbox behaves like production: same REST API, same CLI, same MCP server, same signed webhooks, same Flows.
npm i -g @wabery/cliwabery loginwabery doctorThis is the part that changes how the first client meeting goes. You are not showing a Figma of a conversation. You are handing them a phone number and asking them to try to break it.
One rule: the sandbox is for building and demos, not for a client’s customer traffic. It’s a shared number.
Describe It, Then Refine It
The build itself has three doors, and they all write to the same project.
Say what it should do. Describe the client’s job in plain language and Wabery drafts a working chatbot you can test in the sandbox immediately. “Take reservations for a restaurant, confirm the same day, hand off anything about large groups.” That’s a starting point you edit, not a demo that falls apart on the second message.
Build it visually. Automations are a trigger plus a chain of actions on a canvas: welcome messages, keyword menus, a Flow to collect structured details, a delay for a next-day follow-up, a condition to branch, a handoff that pauses the bot so a human can take the thread. Most client work never needs more than this.
Write code where it earns its place. When a step needs live data, a hosted function runs your TypeScript inline from an automation. Real availability, an order status, a price quote. If the function fails, the automation continues, so a bad deploy never wedges a conversation.
And if you’d rather stay in your editor, the hosted MCP server at https://mcp.wabery.com lets Claude, ChatGPT, Cursor, or Codex build against the project directly over OAuth. No API key to paste, no local install. You describe the change, your agent makes it, you test it on the sandbox number.
Draft and Live Are Separate, On Purpose
A hosted agent has a Draft version and a Live version. You edit Draft, test it against the sandbox, then Review and publish.
External tools cannot publish Live for you. Your coding agent can rewrite the whole chatbot at 2 AM and the client’s customers still see the version you approved. For an agency running client numbers, that gate is the difference between moving fast and explaining yourself on a Monday.
Official WhatsApp Only
Wabery connects through the official WhatsApp Business API as a Meta Business Partner. There is no QR-code pairing, no unofficial library, no linked-device workaround.
This is a deliberate constraint and it’s worth being blunt about the tradeoff. Unofficial access is faster to start and it is the reason a lot of agencies have had a client’s number banned mid-campaign. On the official path you get template messaging, Flows, verified display names, delivery receipts, and a number that survives volume. You also inherit Meta’s rules, including the 24-hour messaging window.
Related: on a dedicated WABA, the client pays Meta directly at its published rates. Wabery does not mark those messages up. For the shared sandbox, Wabery pays Meta and deducts the same published service rate from wallet credit after the October 1 cutoff.
Connecting Their Number Once the Business Is Approved
When the client’s Meta side clears, connecting takes minutes. Open their project, go to Channels, add a WhatsApp channel, and pick how the number is used today:
| Situation | Choose |
|---|---|
| New number, or not on any API provider | Set up a new number |
| Their staff still uses the WhatsApp Business phone app | Keep using the Business app |
| The number is on another provider or another WABA | Move an existing API number |
| The number was in this Wabery project before | Reconnect a Wabery number |
The migration case is the one that goes wrong most often elsewhere, so a few things to get right before you start: leave the number in its current account, put both accounts in the same Meta Business Portfolio, add a payment method to the new account, turn off two-step verification for the duration, and have admin access to both sides. Do not delete or deregister the number first. The migration has to find it where it is.
If Meta applies a cooldown, wait it out. Retrying in a loop makes it worse.
The moment that channel connects, the project goes Live and the chatbot you already tested starts answering on their number. Nothing gets rebuilt.
What This Actually Changes About Selling
Before: “We’ll start once your Meta verification comes through.” Two weeks of silence, and a client who is quietly reconsidering.
After: “Here’s a number. Text it. That’s your chatbot.” The paperwork runs in parallel and the client is already sold on the thing before it has their logo on it.
Before: Client two means rebuilding your stack inside a new account, or worse, sharing one.
After: New project, same primitives, isolated data. The second build is the same work as the first minus the learning.
Before: You eat the platform cost while the deal is still in the pipeline.
After: Draft projects are free. You pay when a client channel goes Live, which is when you started invoicing anyway.
The Questions Agencies Ask First
Can I use my own agent instead of Wabery’s builder?
Yes. Connect an agent from Claude, ChatGPT, n8n, Make, or your own API. Wabery handles the WhatsApp connection, delivery, conversation state, and Meta’s rules. What the bot says is yours.
Do I need a Meta Business account to start?
No. That is the whole point of the sandbox. You need one before the client’s real number goes Live, not before you build.
What does it cost to run one client?
The platform includes one Live project, one connected client channel, and 500 messages a month. Pro is $15 a month for two Live clients and 50K shared messages, and additional client projects start at $5. Meta bills dedicated WABAs directly. Shared-sandbox delivery is free through September 30, 2026 and wallet-funded from October 1; AI usage is billed separately.
Can a human take over a conversation?
Yes. A handoff action pauses native automations, external webhooks, and outbound API sends for that one conversation, so nothing talks over your teammate while they’re in the thread.
What if the client fires us?
The project holds their channel and their data in one place. Disconnect, hand over, or archive. You are not surgically extracting one client from a shared inbox.
Start Where the Work Is
You don’t need Meta’s permission to start building. You need it to start sending on the client’s number, and those are two different days on the calendar.
Open a project, text the sandbox number, and have something answering before the verification email even lands.
Questions or feedback? Reach out anytime