Newsletter

Full email newsletter infrastructure built into the editor. Write in the newsletter compose view, send to your subscribers.

Sending

  • SendGrid backend (fetch-based, no SDK)
  • Batched sending: 1,000 recipients per API call
  • Auto image extraction: local images → base64 → R2 upload → email embed
  • TipTap → Markdown → HTML + plaintext conversion
  • Juice CSS inlining for email client compatibility
  • Table-based layout for Outlook support

Style Presets

PresetStyle
CleanSystem sans-serif, GitHub-readme feel
LiteraryGeorgia serif, warm editorial, Substack-like
MinimalGeorgia body + sans-serif headings, elegant whitespace
BoldHelvetica, strong headings, magazine feel

Each preset has a dark mode variant.

Custom Domains

Send from your own domain (e.g., updates@yourbrand.com):

  1. Add your domain in the newsletter settings
  2. Auto-DNS setup for Cloudflare-managed domains
  3. SendGrid Domain Authentication (CNAME, SPF, DKIM)
  4. Verification status tracking

Subscriber Management

  • Add and list subscribers with pagination
  • Per-recipient HMAC-signed unsubscribe URLs
  • Test email support before sending

Analytics

Via SendGrid Event Webhook:

  • Delivered count, open rate, click rate
  • Bounce tracking (hard + soft)
  • Unsubscribe tracking
  • Per-issue aggregation