Agencies

How an agency organizes dozens of client WhatsApp numbers

An agency with 5 clients runs WhatsApp from memory. With 30, what breaks is not the technology, it is the organization: nobody knows which number belongs to whom, which chip is warming up, who reconnected the QR code and how much each client costs. This guide describes the method operations with many numbers use: one instance per client, standard naming, an operations sheet, the client connecting their own number and a short weekly routine. ZapZap is an unofficial API: WhatsApp may limit or block any number, and that is part of the method, not left out of it.

Published on · 5 min read

This article is also available in: Português · Español

Rule 1: one number per client, one instance per number

Mixing two clients on the same number is the source of most headaches: the history gets tangled, one report takes both down and you cannot bill each one fairly. On ZapZap each number is its own instance, isolated from the others in the same account, and the cost is R$15 per active number per month, prepaid, with no per-message fee. The price per number does not change with volume, so the cost per client is a simple multiplication.

If the client already has a business number with history, connect that one. It is the best asset they have. If they will start with a new number, treat it as a chip that is warming up, not a ready-made tool. See WhatsApp chip warm-up.

Rule 2: standard names and the client ID in metadata

With 10 instances free-form names still work. With 40 they do not. Adopt a pattern like client-unit-purpose (for example, client-a-downtown-store-sales) and store the client identifier in the instance's metadata field, which comes back on lookup and on every webhook. That way your system knows whose event it is without a parallel table.

Creation can be done by API, which removes the manual onboarding bottleneck. Before creating, check the cost, because there is a one-time activation fee per instance. The example below shows both calls. The WhatsApp API and the reference list every field.

Rule 3: an operations sheet with each number's phase

The expensive mistake is treating all numbers as equal. A three-day-old chip and an eight-month-old one carry very different risks, and the sheet has to say which is which. Keep one row per number with client, instance, connection date, warm-up phase, daily limit, last send, status and owner. The phase sets the limit: a number in the early phase talks to people who already know the client and does not send blasts.

The template below fits in an ordinary spreadsheet. It answers, in ten seconds, who can send today, who is warming up and who is disconnected.

Operations sheet template

Operations sheet (one row per number)
number | client | instance_id | connected_on | phase (0 to 4) | day_limit | last_send | status | owner | note
5511900000001 | client-a | inst_001 | 2026-11-03 | 2 | no active sending | n/a | connected | Ana | talking to known contacts
5511900000002 | client-b | inst_002 | 2026-10-20 | 4 | batches up to 30 | 2026-11-10 | connected | Bruno | good reply rate
5511900000003 | client-c | inst_003 | 2026-11-09 | 0 | no sending | n/a | disconnected | Ana | waiting for the client to scan the QR

Rule 4: the client connects their own number and sees their own results

Borrowing the client's phone, or asking for their WhatsApp password, is a risk for both sides. The clean path is the connection link: you generate it, the client opens it on the phone that holds the number, scans the QR code and that is it, no account needed. If the number drops, they reconnect through the client portal instead of opening a ticket with you.

The portal also solves another agency problem, which is proving results. The client opens it by link or by number and password and sees leads and sales for the period, and you choose which sections they see. Name, logo and color for that number are the client's own, in the portal and in the connection link. It is the client's brand on those two screens, not a full resale with its own domain.

Rule 5: a 20-minute weekly routine

An operation with many numbers does not need a long meeting, it needs a short, fixed routine. On Monday, open the sheet and check three things: disconnected numbers (ask the client to reconnect), numbers that changed phase and can take more volume, and numbers with a bad signal during the week (a drop in reply rate, more negative replies than usual). A number with a bad signal steps back a phase instead of being pushed.

At month end, add up the active numbers per client. At R$15 per number, 12 numbers are R$180, 25 are R$375 and 40 are R$600. The activation fee is charged once per instance created. To compare with other ways of operating, see how much it costs to run 10, 25 or 50 numbers.

What the method does not solve

Organization reduces operational risk, not channel risk. Outside the official API, WhatsApp may restrict or block numbers, even with warm-up, consent and a human pace. Agree on this in writing with the client before connecting the first number, and have a chip replacement plan. For each client niche, see the pages for agencies, traffic managers and resale under the client's brand.

Quick summary

  • One number per client and one instance per number: isolation, fair billing and less panic when a number drops.
  • Standardize the name and store the client identifier in metadata, which comes back on every webhook.
  • A sheet with each number's phase decides who can send and how much.
  • The client connects through the link, follows results in the portal and reconnects alone if the number drops.
  • Organizing reduces operational risk, not the risk of the unofficial channel.

Also read

Frequently asked questions

How many numbers can an agency manage in a single account?

The pricing page does not publish a per-account number limit, and the price is the same R$15 per active number per month for any quantity. For operations with a few dozen numbers, talk to support before migrating all your clients.

How do I know which client each instance belongs to?

Store the client identifier in the metadata field when you create the instance by API. It comes back on the instance lookup and on every webhook, and a naming standard helps human readability.

Does the client need a ZapZap account?

No. They connect the number through the connection link and follow results in the portal. The agency holds the account and pays the balance.

Can the agency apply the client's brand?

Yes, per number: name, logo, color and the option to remove Powered by, in the client portal and in the connection link. The main dashboard and the API remain ZapZap's, and there is no custom domain.

Does organizing numbers well prevent a ban?

No. It reduces operational mistakes, like sending from a brand-new chip. The risk of the unofficial channel remains: WhatsApp may restrict or block numbers even with good practices.

Set up the first client's operation

Create the account, connect a number and try the connection link and the portal. R$15 per active number per month, no per-message fee. Verify your phone and you get a welcome credit, subject to the current campaign.