Self-hosted · Open ecosystem

Self-hosted WhatsApp messaging that scales with you.

Link your devices with a QR scan, send single messages or run bulk campaigns, deliver OTPs, and integrate everything through a clean REST API. No per-message fees, no third-party gatekeepers.

Multi-device QR linking
REST API + webhooks
Persistent sessions on VPS
Role-based team access
9:41100%
WASend
Link device
Scan to connect a new channel
Awaiting scan
v1.0.0
+1 555 ··· 8821
Hey! Is the campaign ready?
Yes, sending in 30s 🚀
Everything in the box

The complete WhatsApp platform, in one app.

Devices, campaigns, OTPs, contacts, API, team — every piece of the messaging workflow lives here, in a self-hosted package you control.

Channels & Devices

Link multiple WhatsApp numbers with a QR scan and manage them from one place.

  • QR-pair new numbers in seconds
  • Multi-channel broadcast from one dashboard
  • Persistent sessions survive redeploys (WA_SESSIONS_DIR)
  • Per-device API tokens with rotation
Explore

Bulk Campaigns

Run personalised, throttled bulk sends with templates and country-code awareness.

  • {{name}} placeholders per contact
  • Country-code picker (IN, US, UK, AE, …)
  • Ready-made greeting, promo & reminder templates
  • Interval throttling to stay under WhatsApp radar
Explore

OTP Delivery

Send one-time passwords with rotation, contact-group targeting, and delivery status.

  • Auto-rotate OTP codes
  • Target an entire contact group in one go
  • Live delivery & failure reporting
  • Works with any of your linked devices
Explore

Contacts & Groups

Full CRUD on contacts, organise them into groups, and reuse groups across sends.

  • Import, edit, delete contacts
  • Group contacts by audience or use-case
  • Search & filter across thousands of contacts
  • Re-use groups in campaigns and OTPs
Explore

REST API & SDKs

Hit three endpoints to send, check balance, and pull reports. Sample code in 6 languages.

  • GET /api/send-message · /api/balance · /api/reports
  • cURL, Node.js, PHP, Python, Java, Go samples
  • Per-device API tokens
  • Drop-in for any backend stack
Explore

Team & Multi-tenancy

Three-tier roles, company isolation, audit logs, and a superadmin console.

  • Roles: superadmin · admin · user
  • Company-level data isolation
  • Invite teammates via email or link
  • Full audit log for every privileged action
Explore
Live status
Analytics
Reports
Webhooks
Rate limits
CLI-friendly
Self-host in minutes

Your infrastructure. Your data.

WASend is a self-hosted Next.js app. Run it on a $5 VPS with PM2, behind Nginx, or inside Docker. No third-party API bills, no rate-limited middleman.

VPS / Coolify — read this first

On a redeploy, the container filesystem is wiped. Set WA_SESSIONS_DIR to a persistent volume or host mount so your linked WhatsApp devices reconnect automatically — no QR re-scans.

bash
# 1. Install
npm install

# 2. Configure
cp .env .env.local
#   set MONGODB_URI, NEXTAUTH_SECRET, NEXTAUTH_URL, ADMIN_SETUP_KEY

# 3. Seed the first superadmin
npm run seed

# 4. Build & run with PM2
npm run build
npm install -g pm2
pm2 start npm --name wasend -- start
pm2 save && pm2 startup