WhatsAppinfrastructurethat stays up.
Send and receive over a REST API. Run AI agents on your conversations. And watch a health engine that tells you a number is at risk before it gets banned, not after.
Integrate
# Send a WhatsApp message. curl https://api.wavesenda.com/api/v1/messages/send/ \ -H "Authorization: Bearer ws_live_…" \ -d '{"session":"support","to":"+237612345678", "text":"Your order is on its way."}'
{
"id": "0193f0a2-4c7e-7000…",
"status": "queued",
"session": "support"
}Queued, not sent-and-blocked. Outbound traffic is paced per number to protect it — you get the id immediately and the delivery result by webhook. Pass wait: true when you genuinely need the WhatsApp id inline.
Everything on the wire
The part that keeps you alive
Every unofficial API is one bad campaign from a dead number.
So we score each number continuously — reply rate, failure rate, opt-outs, connection stability — and act on it. Traffic is paced with randomised gaps and typing simulation. New numbers ramp over weeks instead of blasting on day one. When the score drops, sending throttles automatically; when it drops further, it stops.
A competitor sells you a pipe and lets you find out. This is the difference.
Agents that know when to stop
A confident wrong answer is worse than no answer.
Agents answer from a knowledge base you upload and can call your own APIs to check a real order. When they are not sure, they fetch a person and hand over a summary of the thread — rather than guessing on your business’s behalf.
- Everything the AI writes is marked, in the inbox and the audit log.
- Thumbs-down with a correction becomes knowledge. No retraining.
- Replies in the customer’s language, including from a voice note.
- Every run is logged with its cost, confidence and tools called.
Follow-ups that read the reply
A drip that branches on what they said.
Most automation sends message two a day after message one and calls that a sequence. A flow asks what came back first — and two of its steps are a model, so “are they asking about price or about delivery?” is a branch rather than a rule you have to write.
Built on a canvas, in plain English, by whoever runs the number. A reply stops the whole thing by default, because a drip talking over a live conversation is worse than no drip at all.
The promises nobody wrote down
You said you would send it tomorrow.
Your business runs in these chats, and the promises you make in them are written down nowhere. Not in a CRM, not on a list — just in a thread that is four hundred messages long by Thursday.
WaveSenda reads them out as they are made, on both sides, and keeps them somewhere you can see. At seven the next morning you get the ones falling due. Mark them done, or say it was never a promise — that is the whole interface.
It records obligations, not people. No sentiment score, no relationship rating, nothing that profiles whoever you are talking to — only what was promised, by whom, and whether it has happened.
In a group it keeps the decisions too. “Ok agreed” means nothing on its own, so it reads the messages around it — and a week later nobody has to scroll back to find out whether the date was ever settled.
The day the number dies
Banned at 9am. Trading by 9:04.
This runs on WhatsApp’s consumer service, and numbers on it do get banned. Everything else here exists to make that unlikely. This exists for the morning it happens anyway.
A standby number sits connected and idle, doing nothing at all. When the health engine calls the primary dead — or you press the button, because you usually know before it does — everything moves across.
The people who were mid conversation are told where to find you, on the new number, in the thread they were already in. That message is the difference between an outage and a lost customer list.
Start from something that works
An empty flow editor is where a trial ends.
Import a ready-made flow and edit it like anything else. Every one of them stops the moment the customer replies, and every one arrives switched off so nothing is sent to anybody before you have read it.
Abandoned cart recovery
Ask once, offer help, then stop.
Appointment reminder
The day before and the morning of.
Unpaid invoice reminder
Firm, polite, and it stops when they answer.
Get paid without leaving the chat
The sale was agreed here. So is the payment.
Raise a payment request in the conversation where the price was agreed. The buyer gets a card checkout, you get a receipt, and the record stays attached to the thread instead of living in a spreadsheet.
The money lands in your own Stripe account, never ours. Stripe verifies you, holds the funds, pays them out and owns the disputes — which is why a payment cannot be raised until you have connected one.
We keep a small percentage of what you collect, taken by Stripe at the moment of the charge rather than invoiced later. Higher plans reduce it, and on Business we take nothing at all.
It never applies to your subscription — only to money you collect from your own customers. Stripe’s processing fee is separate and goes to them.
See the rate by plan →