Campaigns out.
Conversations back.

One self-hosted workspace to create, deliver, measure, and answer every customer message—across email, SMS, WhatsApp, push, web chat, and voice.

One customer journey.
Every channel.

Plan the message once, then meet customers where the moment belongs.

EmailSMSWhatsAppPushWeb chatVoice

From blank page to delivered campaign.

A clear workflow to build, review, schedule, send, pause, and understand every delivery.

01

Choose the medium

Email, SMS, WhatsApp, and push each get content and delivery controls designed for the channel.

  • Draft, scheduled, sending, stopped, sent, and failed states
  • Audience and segment inclusion or exclusion
  • Test delivery, estimates, fees, and local-time scheduling
02

Shape the message

Compose visually, in blocks, or in source. Personalize content, attach files, preview, and run quality checks before sending.

  • Responsive visual, block, and HTML editing modes
  • AI generation, subject ideas, improvements, and scoring
  • Plain text, tracking modes, link checks, and query parameters
03

Connect with control

Add providers per brand, test credentials, choose senders, synchronize templates, and roll each channel out behind a feature flag.

  • SES, SendGrid, Mailjet, Elastic Email, SMTP, and local stream
  • Twilio and Vonage SMS; Meta, Twilio, and Vonage WhatsApp
  • Web Push, FCM, IMAP, Twilio Voice, and delivery webhooks

Know the person, not just the address.

Profiles, identifiers, consent evidence, custom fields, segments, and subscription state stay together.

Subscriber lifecycle
Active, unconfirmed, unsubscribed, bounced, complaint
Growth tools
CSV import and export, hosted and embedded forms, reCAPTCHA
Consent
Single or double opt-in, legal evidence, preference center, scoped unsubscribe
Segmentation
Custom fields, all/any condition groups, live counts, inclusion and exclusion

Automate the follow-up.
Keep the judgment.

Build drip, annual, and date-based journeys with audience rules, channel-aware steps, and per-step reporting.

Before / after offsetsSegment controlsSuppression checksPer-step reporting

Campaign history meets the live conversation.

Every reply arrives with the customer, channel, consent, assignment, and service context your team needs.

Queue with intentAll, mine, unassigned, unread, waiting, snoozed, and SLA-aware states.
Answer on the right channelEmail, SMS, WhatsApp, and chat replies with internal notes and media.
Call from contextTwilio browser voice, call windows, assignment, answer state, and dispositions.
Bring chat to your productSandboxed embeddable widget, public keys, allowed origins, and realtime presence.
AIGenerateSuggestImproveScoreAnalyse

Proof after send.

Delivery, engagement, links, geography, recipient activity, exports, and evidence-based AI analysis in one report.

  • Identified, anonymous, or disabled tracking
  • Opens, clicks, bounces, complaints, and unsubscribe events
  • Link metrics, activity timeline, geography, and CSV exports
  • Persisted AI score and actionable recommendations

The operational layer is already here.

Templates, files, rules, suppressions, provider health, brand controls, permissions, audit records, and background jobs.

Your stack. Your data.
Your delivery.

Run it on infrastructure you control, use local stream delivery in development, and swap channel providers without rebuilding the product.

ReactAdministration UI
Node.jsExpress API
PostgreSQLNative channel data
RedisBullMQ workers
S3Compatible storage
ProvidersEvery channel
Socket.IO realtimeClamAV scanningSQLite compatibility bridgeREST APIWebhooksDocker Compose

Not a demo shell.
The whole operating surface.

Workspace & security

  • Multi-brand workspaces
  • Owner, admin, and client accounts
  • Area-level permissions
  • Brand duplication and guarded deletion
  • Password reset and session security
  • TOTP with recovery codes
  • WebAuthn passkeys
  • Bearer API tokens
  • Themes, locale, and time zone
  • Audit records

Campaigns & AI

  • Email, SMS, WhatsApp, and push
  • Visual, block, and source editors
  • Templates and duplication
  • Attachments and personalization
  • Audience and segment targeting
  • Tests, estimates, and fee quotes
  • Scheduling, stop, and resume
  • Open and click tracking modes
  • AI generation and subject ideas
  • Copy improvement and scoring

Audiences & consent

  • Profiles, notes, and custom values
  • Email, phone, and WhatsApp identities
  • CSV and pasted-address imports
  • Custom fields and dynamic segments
  • Hosted and embedded forms
  • Single and double opt-in
  • Consent and preference evidence
  • Preference center
  • Scoped unsubscribe
  • Subscriber data export and deletion

Automation

  • Drip series
  • Annual date workflows
  • One-time date workflows
  • Before and after offsets
  • Step ordering and enablement
  • Mixed-channel steps
  • Segment inclusion and exclusion
  • Consent and suppression gates
  • Per-step engagement reporting
  • Automation AI analysis

Inbox & voice

  • Email, SMS, WhatsApp, and web chat
  • All, mine, and unassigned queues
  • Waiting, snoozed, and closed states
  • Assignment and SLA controls
  • Internal notes and media
  • Realtime presence and status
  • Customer tags and consent context
  • Sandboxed embeddable chat
  • Twilio browser voice
  • Call records and dispositions

Operations & API

  • Templates and file manager
  • Rules and webhook attempts
  • Suppressions and blocked domains
  • Provider feedback events
  • Provider and background-job health
  • Monthly allowances and fees
  • PayPal checkout
  • Public JSON API and RSS
  • Signed subscriber links
  • Exports, retries, and housekeeping

Run the whole customer messaging stack.

Clone the repository, start the local infrastructure, migrate, seed, and open a complete demonstration workspace.

Fresh local run
git clone https://github.com/rsm23/sendry.git
cd sendry
corepack enable
pnpm install
cp .env.example .env
pnpm dev:setup
pnpm dev

Open http://localhost:5173