Meta’s official WhatsApp API + Make: outreach to your own base with rate control and a handbrake
A consumer lending company needed to reach 391 contacts from its own base over WhatsApp — no unofficial API, no burning the number, and no depending on someone pressing a button every day. What we delivered: Meta’s official API in Coexistence mode, a Make scenario with rate control, and an entire operation that fits in a spreadsheet.
The request arrived small and clear: a consumer lending company wanted to reach its own customer base over WhatsApp in an organized way, without someone copying and pasting messages all day. The base had 391 contacts.
The niche changes everything in a project like this. A financial offer plus a cold list is the combination with the highest report rate inside WhatsApp — and reports, at volume, do not produce a warning: they produce a drop in number quality and, at the limit, a number taken offline. That does not change the price, but it changes every technical decision that follows.
Why the official API, and not the cheap route
There is an entire market of unofficial libraries that automate WhatsApp by pretending to be a phone. They work, they are cheap, and they are the most common reason a business number gets banned without notice. Meta does not have to prove anything: it simply disconnects.
The delivery used the official WhatsApp Cloud API, activated in Coexistence mode — the phone app keeps working in parallel, on the same number. That matters more than it sounds: the company does not lose the manual service it already had while gaining automated outreach.
The whole operation fits in a spreadsheet
The centre of the system is a Google Sheet. One column says whether a contact should be approached, another records the status Meta returned, another holds the date of the last attempt. Whoever operates it never opens Make, never opens the Meta console, and does not need to understand either.
The Make scenario reads the sheet, validates the row, respects the pace, sends through the official API and writes the result back to the same row. That write-back is what guarantees idempotency: a marked row does not return to the queue, and running the scenario twice does not send the message twice.
Rate control is the product, not a detail
The system runs five cycles a day, every two hours, inside business hours Monday to Friday, in batches of six messages per round with a ceiling of thirty per day. Nobody switches anything on or off.
That number was not eyeballed. It is the result of two constraints crossing: the number’s quality rating at Meta, which falls if volume climbs faster than the base responds positively, and the automation platform’s operations budget, which is finite and has to last the whole month.
Outreach without a brake is not faster outreach. It is the same outreach, with an expiry date.
What cost more than projected
The operations budget was measured in production, not estimated: eleven operations for an empty cycle, thirty-five for a full cycle of six messages, exactly four operations per contact on send.
The status webhook cost more than projected. Beyond the delivery event, every message generates an event that matches no route — and that event consumes an operation at the trigger, before any filter. No filter in Make can avoid it: the cost belongs to the trigger, not the router. The finding was recorded as such, with the projection rebuilt from the measured number rather than the expected one.
The first real day
Thirty-one messages sent, two failures from numbers without WhatsApp, zero replies, and two opt-outs through the native button — 6.5% of the sample.
Zero replies in one day concludes nothing. Two opt-outs in thirty-one does: that is the metric that decides whether volume can rise. It is why the system has a planned slow-down mode rather than a kill-everything button — stopping is easy, decelerating at the right moment is the hard part.
The operator is not the builder
The person running the flow day to day is on the client’s team, not a technician. The spreadsheet was designed for her, the training was delivered as a document she can consult, and the system has a tested manual stop. The deliverable is not the Make scenario: it is the operation continuing to run without us.
Delivered on 17 August 2026, with thirty days of support. The remaining 376 contacts entered the queue the same day, projected to finish in early September.