Skip to main content

Overview

The dex newsletter command manages email newsletter campaigns, including template rendering, draft creation, scheduling, sending, and subscriber imports.

Usage

dex newsletter <templates|preview|draft|test-send|schedule|send|stats|segment-estimate|import> [args]

Subcommands

Templates

List available newsletter templates.
dex newsletter templates

Preview

Render and preview a newsletter template.
dex newsletter preview --template newsletter [--vars '{"k":"v"}' | --vars-file ./vars.json] [--out ./tmp/file.html] [--open true|false]
--template
string
Template key to render (default: newsletter)
--vars
string
JSON string of template variables
--vars-file
string
Path to JSON file with template variables
--out
string
Output HTML file path
--open
boolean
default:"true"
Automatically open preview in browser

Draft

Manage newsletter campaign drafts.
List newsletter campaigns.
dex newsletter draft list [--limit 50]
--limit
number
default:"50"
Maximum number of campaigns to list

Test Send

Send a test email to verify campaign.
dex newsletter test-send <campaignId> --to [email protected]
campaignId
string
required
Campaign ID to test send
--to
string
required
Email address to send test to (or use DEX_NEWSLETTER_TEST_EMAIL env var)

Schedule

Schedule a campaign for future delivery.
dex newsletter schedule <campaignId> [--at 2026-03-01T18:00:00.000Z]
campaignId
string
required
Campaign ID to schedule
--at
string
ISO 8601 timestamp for scheduled send (default: 15 minutes from now)

Send

Send campaign immediately.
dex newsletter send <campaignId>
campaignId
string
required
Campaign ID to send now
This sends the campaign to the entire audience segment immediately. Use test-send to verify first.

Stats

Get campaign statistics.
dex newsletter stats <campaignId>
campaignId
string
required
Campaign ID to get stats for
Output includes:
  • Queued count
  • Sent count
  • Failed count
  • Delivered count
  • Bounced count
  • Complaints
  • Opens
  • Clicks

Segment Estimate

Estimate audience size for a segment.
dex newsletter segment-estimate [--segment all_subscribers]
--segment
string
Segment name to estimate (default: all_subscribers)

Import

Import subscribers from CSV.
dex newsletter import --csv ./subscribers.csv [--source mailchimp] [--consent-mode verified]
--csv
string
required
Path to CSV file with subscriber data
--source
string
Import source identifier (default: mailchimp)
Consent verification mode: verified or unverified (default: verified)
CSV should include columns: email, auth0_sub (optional), timezone (optional), tags (pipe or comma-separated), contributor (true/false), status_watcher (true/false)

Examples

Preview a template

dex newsletter preview --template newsletter --vars '{"featured_entry":"john-doe","headline":"New Season"}' --open true

Create and test a campaign

# Create draft
dex newsletter draft create --name "March Newsletter" --subject "Season 3 Announcement" --segment all_subscribers --vars-file ./vars.json

# Get campaign ID from output, then test send
dex newsletter test-send campaign-123 --to [email protected]

Schedule a campaign

dex newsletter schedule campaign-123 --at "2026-03-15T18:00:00.000Z"

Get campaign stats

dex newsletter stats campaign-123

Import subscribers

dex newsletter import --csv ./mailchimp-export.csv --source mailchimp --consent-mode verified

Template Variables

Newsletter templates support dynamic content through variables. Common variables include:
{
  "featured_entry": "entry-slug",
  "headline": "Newsletter Headline",
  "intro_text": "Introduction paragraph",
  "cta_label": "Read More",
  "cta_url": "https://dex.example.com/entry/..."
}
Refer to template documentation for specific variable requirements.

Workflow

1

Preview template

Use dex newsletter preview to verify template rendering with your variables
2

Create draft

Create a campaign draft using dex newsletter draft create
3

Test send

Send test email to verify content: dex newsletter test-send
4

Estimate audience

Check segment size with dex newsletter segment-estimate
5

Schedule or send

Either schedule for later or send immediately
6

Monitor stats

Track performance using dex newsletter stats

See Also

Build docs developers (and LLMs) love