Campaigns

One-shot broadcasts to a tagged segment of your contacts. Visual editor, HTML editor, or both.

The flow

  1. Compose. Brand → Campaigns → New. Pick a template or start blank. Visual + HTML modes side-by-side.
  2. Pick recipients. Filter by tag, manual list, or "all subscribed contacts".
  3. Schedule or send. Send now (immediate) or pick a UTC datetime for the cron to release later.
  4. Watch the send. Real-time per-contact status: queued → sent → opened → clicked.

Editor modes

  • Visual: Tiptap-based rich editor. Block dropdown, color + highlight, alignment, links, resizable images. Outputs clean inline HTML suitable for every email client.
  • HTML: CodeMirror-based syntax-highlighted editor for hand-crafting templates. Useful for porting designs from React Email or MJML output.
  • Toggle between them at any time — your edits survive the round-trip.

Variables

Reference contact fields with double curly braces:

Hi {{first_name}},

Thanks for trying our beta. We're shipping {{custom_field.next_feature}}
next week.
  • {{email}}, {{first_name}}, {{last_name}} — built-in.
  • {{custom_field.<key>}} — anything you set on the contact.
  • Missing values render as empty string (won't break the send).

Tracking

  • Opens: tracked via a 1×1 pixel served from /api/e/o/<token>.
  • Clicks: rewritten through /api/e/c/<token> with original URL preserved.
  • Geo: IPs lookup against the bundled MaxMind DB. Country + city per click.
Unsubscribe is automatic
Every campaign includes the RFC 8058 List-Unsubscribe header and a footer link. Gmail and Apple Mail render the one-click button natively.

Analytics

Each campaign gets its own analytics page: time-series, top links, recipient table with per-row event timeline, geo map. Public API for programmatic access.