Changelog
What's New
Track changes, new features, and updates.
Major
Minor
Patch
New Features
Official WhatsApp Cloud API
Connect WhatsApp Business numbers through Meta's official Graph API alongside QR-linked devices:
- Per-account credentials (access token, phone number ID, WABA ID) with a verify-before-save flow
- Send text, media (image/video/audio/document/sticker), location, contacts, reactions, reply buttons and template messages — by API key too (
/api/v1) - Template management: list, submit for review and delete templates, with a picker in the send form
- Inbound webhook receiver with Meta signature verification (
X-Hub-Secret-256) and event forwarding to your webhook URL - Dedicated Cloud API dashboard section with connect modal, quality ratings and per-number management
Email Foundation (Phase 1)
- SMTP + Resend delivery engine — per-user provider settings with global fallback, STARTTLS and SSL support, MIME multipart (HTML + plain text), queued sending with 3 retries
- Email template builder — block-based editor (heading, text, image, button, divider, spacer, social) with live preview, desktop/mobile toggle, sample-data mode and
{{variable}}support. Renders email-client-safe table HTML - Send email — single, bulk (paste recipients), schedule for later, template picker with subject override
- Campaigns — group recipients around a template, queue with Asynq workers, track sent/failed counters per campaign
- Email settings page — SMTP/Resend toggle, masked credentials, test-email button
Email Marketing (Phase 2, complete)
- A/B testing — send two or more subject/body variants to a slice of your list (default 20%), compare open and click rates per variant, then send the winner to the remaining holdout with one click. Includes a suggested-winner hint (opens ×2 + clicks)
- Resend event webhooks — bounces, spam complaints, opens and clicks reported by Resend update delivery records automatically (svix signature verified,
RESEND_WEBHOOK_SECRET) - Open tracking via 1×1 pixel, click tracking via link rewriting with redirect, and unsubscribe links — all recorded per recipient
- Email analytics dashboard — sent/failed/opened/clicked/unsubscribed stats, open & click rate bars, scheduled sends with cancel, recent activity log
- Scheduled Cloud API bulk sends — pass
scheduled_atto the Cloud API bulk endpoint and it's delivered later via the queue
SMS Completion (Phase 0)
- Bulk and scheduled SMS via Asynq workers with per-recipient variable substitution
- New
sms_logmodel with delivery status, error messages and segment counting - New Send SMS page with single/bulk modes, GSM character/segment counter, scheduling and a live delivery log
Workflow Automation (Phase 6.1, core)
- Workflow engine — automate actions when triggers fire:
message received(filter by channel and keyword) andcontact created(filter by tag) - Actions: send WhatsApp (via any device), send SMS, send Email, or delay — chained in order.
Trigger data flows into actions via
{{from}},{{name}},{{text}},{{email}}variables - Conditions ("only run if field equals/contains/exists"), activation toggle, per-run history with success/failure records, and a one-click test run with sample data
- Fires from real events: inbound WhatsApp messages (QR devices and Cloud API numbers) and contact creation — new Workflows page in the dashboard
Multi-Channel Foundation (Phase 3)
- Unified send endpoint —
POST /api/messages/senddispatches to WhatsApp, SMS or Email bychannel; also available on the API-key surface - Cross-channel analytics —
GET /api/analytics/overviewaggregates stats across all channels
Unified Inbox & Contact Segments
- Message persistence — inbound WhatsApp messages (QR devices and Cloud API numbers), outbound
sends across WhatsApp/SMS/email are now stored in a
messagetable with read/unread tracking - Unified Inbox — new dashboard page with threaded conversations, chat bubbles, unread badges, search, auto-refresh, thread deletion and replies from any connected device or cloud number
- Unsubscribe suppression — unsubscribed recipients are now filtered automatically from bulk sends, campaigns and A/B winner sends (compliance)
- Contact tag segments — campaigns and bulk emails accept a
contact_tag("send to everyone taggedvip"), deduplicated against manually entered recipients - Usage metering & plan enforcement — every outbound send counts against the plan's
messages_per_month; the counter auto-resets on period rollover and sends return HTTP 429 when the quota is exhausted
Media Library, Charts & Weekly Reports
- Media library — upload files (up to 10 MB) or register external URLs once, then reuse them
everywhere: the email template builder's image blocks can now pick straight from your library.
Uploaded files are served from
/media/... - Real charts — the dashboard and email analytics now use proper Unovis bar charts with tooltips (via shadcn-vue Chart), including a new last-14-days email trend
- Weekly reports — opt in from Email Settings and every Monday you get "your week in numbers" (WhatsApp sent, SMS sent, emails sent/opened/failed, new contacts) delivered through your own SMTP/Resend settings. Preview your stats or send the report instantly from the settings page
Improvements
- Dashboard rebuilt: quick actions, all-channels overview, email engagement strip, responsive layout
- Sidebar navigation grouped into sections (WhatsApp / SMS / Email / Account / Resources) with a new mobile Sheet drawer
.env.examplegainsPUBLIC_BASE_URL,META_APP_SECRET,META_WEBHOOK_VERIFY_TOKEN,META_GRAPH_VERSION
New API Endpoints
# Cloud API
POST /api/whatsapp/cloud/accounts/verify
CRUD /api/whatsapp/cloud/accounts
POST /api/whatsapp/cloud/accounts/:id/send | send-bulk | mark-read
CRUD /api/whatsapp/cloud/accounts/:id/templates
PUBLIC /api/whatsapp/cloud/webhook (GET verify + POST events)
# Email
GET/PUT /api/email/settings · POST /api/email/settings/test
POST /api/email/send | send-bulk
GET /api/email/logs | scheduled | analytics
DELETE /api/email/scheduled/:id
CRUD /api/email/templates (+ :id/export, import)
CRUD /api/email/campaigns (+ :id/send, :id/analytics)
CRUD /api/media (+ /upload, /url) · static /media/:file
GET /api/email/analytics/daily · /api/email/reports/preview · /send-now
CRUD /api/email/ab-tests (+ :id/start, :id/choose-winner)
PUBLIC /api/email/webhooks/resend (svix-signed Resend events)
PUBLIC /api/track/open/:logId · click/:logId · unsub/:logId
# SMS
POST /api/sms/send-bulk
GET /api/sms/logs | analytics
# Unified
POST /api/messages/send (channel: whatsapp|sms|email)
GET /api/analytics/overview
# Workflows
CRUD /api/workflows (+ /:id/runs, /:id/test-run)
Setup Notes
- Set
PUBLIC_BASE_URLto your API's public URL so email tracking links resolve - For Cloud API webhooks, set
META_APP_SECRETandMETA_WEBHOOK_VERIFY_TOKEN, then point your Meta app webhook to/api/whatsapp/cloud/webhook - Run the backend once to apply the new SurrealDB tables (
whatsapp_cloud_account,sms_log,email_template,email_campaign,email_log,email_settings)
Click to expand
New Features
Bulk Message Template Variables
Send personalized bulk messages using template variables. Use {{ name }} syntax in your message and provide per-recipient values.
Example:
{
"message": "Hello {{ name }}, your order is ready!",
"params": {
"254722790520": { "name": "John" }
}
}
Dynamic UI for Template Variables
The message composer now:
- Automatically detects
{{ variable }}patterns - Generates input fields for each recipient
- Shows detected variables summary
Improvements
- Improved bulk message error handling
- Better API preview for bulk messages
Click to expand
Major Release: Campaign Management
Message Scheduling
Schedule messages to be sent at a specific date and time. Supports:
- Individual message scheduling
- Bulk message scheduling
- Timezone-aware scheduling
- View scheduled messages
- Cancel scheduled messages
New UI Components
- Schedule message page
- Schedule bulk message page
- Scheduled messages list view
Backend Changes
- Asynq task queue integration
- New database models for scheduled messages
- Improved error handling
Breaking Changes
- API endpoint structure updated
- New required fields for scheduled messages:
scheduled_date
Click to expand
Bug Fixes
- Fixed device connection status not updating correctly
- Resolved memory leak in WhatsApp client handler
- Fixed webhook delivery for offline messages
Improvements
- Enhanced device selection UI
- Better error messages for API calls
- Improved loading states
Click to expand