We needed a way to send WhatsApp messages for our smaller clients. The market wanted four cents per message. So we built our own.
The call
Most of our clients run on WhatsApp the way other markets run on email. A clinic sends 5,000 appointment reminders a month. A boutique pushes new arrivals to recent buyers. A delivery service confirms orders at every state transition. The official routes — Twilio, MessageBird, 360dialog — charge $0.04 to $0.08 per message, require template approvals, and add a per-conversation fee on top. For a small business, that's €200 of overhead before anything else.
The unofficial routes — Chrome extensions, "bulk sender" apps — get your number banned within a week and store your contacts on a stranger's server.
We needed a third path for our own work. So we built it.
What we did
WahaSend started as our internal tool — a self-hosted, single-owner WhatsApp notification service we ran for the clients who couldn't justify the platform fees. One Docker command stands up the whole stack on any VPS. The owner pairs their phone once by QR code, and from then on the system handles the things small teams can't: a real dashboard for campaigns and templates, an API for transactional sends, automatic reconnection when WhatsApp's protocol drifts, retries, anti-ban behaviour, and delivery state we can actually trust.
It quietly became infrastructure for every other case study on this page that says "WhatsApp via WahaSend." Classic's marketing engine, Munkidh's donor alerts, Enatega's order lifecycle messages, Tamanokt's notifications — all the same engine, all the same flat cost.
Once we'd run it in production long enough to trust it, we made it available to people who weren't us.
Where it sits now
Live at wahasend.com, with paying customers in production. The platform is licensable two ways:
- As a Docker image — for teams who just want to run it on their own server, today, with a single command.
- As source code — for teams who want to own the codebase, extend it, or fold it into a larger system.
An internal tool that paid for itself, and is now paying its own way.
Node, TypeScript, Postgres, Redis, BullMQ for the queue, WAHA underneath, Docker + Caddy for delivery.
