AstroBaaS

Marketing & email

Email Campaign Builder

Paid pluginsize Mplanned, not built

Indicative price, not an offer: €39/mo; 1000 emails/mo included, templates, A/B testing

Generated from docs/plan/paid/email-campaign-builder/PLAN.md in the AstroBaaS repository. Nothing described below is implemented — it is the written plan for it.

A paid module that gives merchants drag-drop email templates, campaign analytics, and A/B testing for product emails and promotions. Includes email deliverability SLA and a curated template library with support.

The problem

Merchants currently send product emails and promotional campaigns by hand or with basic email tools. They need drag-drop templates, A/B testing to optimize open/click rates, and reliable delivery with support SLA for critical campaigns.

What it does

  • Drag-drop email template editor (text, images, product cards, buttons, social links, dividers)
  • Curated template library (50+ professional templates: product launch, flash sale, abandoned cart, win-back, seasonal)
  • Campaign analytics (open rate, click rate, unsubscribe rate, click heatmap per link)
  • A/B testing (subject line, send time, email content, template variant; automatically picks winner)
  • Subscriber segmentation (by purchase history, customer tier, geography, last purchase date)
  • Send schedule (one-time, repeat weekly/monthly, or trigger-based on order/signup)
  • Campaign preview (desktop, mobile, dark mode rendering)
  • Email authentication (SPF, DKIM, DMARC setup guides and monitoring)
  • Bounce and complaint handling (automated unsubscribe on hard bounce)
  • Detailed delivery report (sent, opened, clicked, bounced, complained per recipient)

What it deliberately does NOT do

Each boundary carries its reason. A boundary without a reason gets crossed by the next person who reads this.

  • Full marketing automation (if-then-else workflows, triggered sends based on custom events) — paid ‘automation-engine’ module owns state machines
  • Predictive send time (ML to find best time for each subscriber) — requires data science infrastructure
  • Custom code in templates (Liquid/Handlebars beyond simple variable replacement) — security; core owns safe variable set only
  • SMTP relay (let merchant bring their own SendGrid/SES account) — paid ‘custom-smtp’ module owns this credential seam
  • Multivariate testing beyond subject line and send time — requires statistical framework
  • Third-party integrations (Slack notifications, Webhooks on campaign complete) — paid ‘integrations’ module owns webhooks

Data model

Extension of newsletter-campaigns. New entities: campaigns.emailCampaigns {id, name, recipientSegmentId, templateId, subjectLine, preheaderText, fromName, fromEmail, status, scheduledFor, sentAt, openCount, clickCount, bounceCount}; campaigns.emailTemplates {id, name, category, blocks[], isPaid}; campaigns.emailVariants {id, campaignId, variantLabel (A/B), subjectLine, recipientCount, openCount}; campaigns.emailAnalytics {id, campaignId, recipientId, sent, opened, clicked, bounced, bounceType}; campaigns.suppressedList {id, email, suppressReason, dateAdded}.

API

  • POST /api/campaigns/email
  • GET /api/campaigns/email
  • PATCH /api/campaigns/email/{id}
  • POST /api/campaigns/email/{id}/send
  • GET /api/campaigns/email/{id}/analytics
  • POST /api/campaigns/email/{id}/variants/ab-test
  • GET /api/campaigns/email/templates
  • GET /api/campaigns/suppressed-list
  • PATCH /api/campaigns/suppressed-list/{email}

Every route added here must also appear in src/pages/openapi.json.ts — a test fails the build if it does not.

Admin

Campaign builder: template selector (paid + core templates), drag-drop editor, segment selector, A/B setup. Campaign list: filter by status, date, performance metrics. Analytics dashboard: open/click rates, heatmap, top-performing templates. A/B test results: variant performance, confidence level, auto-selected winner. Suppressed list: view, restore emails. Email authentication: DKIM/SPF/DMARC setup guides and validation status.

The seam — why this is paid

Core owns free newsletter-campaigns (template builder, send to list, open tracking). Paid module owns advanced template library (50+ designs, design investment), A/B testing framework (statistical calculation, auto-winner selection), subscriber segmentation beyond purchase history, bounce/complaint handling with SLA, email authentication setup and monitoring (infrastructure knowledge and support).

Support commitment: email deliverability SLA, template library, GDPR consent enforcement

Dependencies

  • newsletter-campaigns module (subscriber list, basic send)
  • Orders module (to segment by purchase history, tier)
  • Email transport (SMTP or SES)
  • Scheduler (to schedule sends)
  • Audit log (to track campaign changes)

Acceptance checks

Each of these must be able to fail. Before claiming this is done, break the code deliberately and watch each one go red.

  • A campaign with A/B test splits traffic 50/50 between variant A and B; opening count matches split ratio ±10%
  • A campaign A/B test automatically selects winner after 48 hours or >500 opens, whichever comes first
  • An email with hard bounce is added to suppressed list and not sent to on next campaign (automatic unsubscribe)
  • A complaint (ISP abuse report) adds email to suppressed list immediately
  • Campaign with subject line ’% off’ vs. ‘Save Today’ shows open rates and indicates winner (e.g., 35% vs. 28%)
  • Campaign preview renders identically in desktop (1200px) and mobile (375px) viewports
  • Click heatmap shows which links in email received most clicks, with visual highlight
  • Segmentation by ‘customers with >3 orders in last 90 days’ returns only subscribers matching filter
  • A manually restored suppressed email can be sent to in next campaign without re-suppression
  • Delivery report generated 1 hour after send contains accurate sent/opened/clicked/bounced counts matching email provider webhooks ±1%

Risks

Template rendering: test against Outlook and Gmail for nested tables and complex CSS. A/B test sample size: warn merchant if campaign sends to only 100 subscribers (low confidence). Email deliverability: if domain lacks SPF/DKIM/DMARC, emails land in spam; educate on setup. Bounce handling: ISPs report bounces asynchronously; implement webhook retry logic. Segmentation correctness: slow queries on large order tables (100k+ orders) will hang page; optimize with indexes. Template injection: sanitize user-provided HTML; render in iframe for isolation. Suppressed list sync: if merchant uses multiple email services, sync across all manually. Analytics timing: click tracking pixel may fail; log failures and provide retry.

Commercial context

Suggested price€39/mo; 1000 emails/mo included, templates, A/B testing
Rival anchorKlaviyo: €20-1200/mo; Mailchimp: free-€350/mo; Braze: €200+/mo

The anchor is what the nearest equivalent charges on Shopify or Magento today. It is context for a pricing decision, not the decision.


Generated from the commerce plan. See docs/COMMERCE-PLAN.md for the full catalogue and ../../AI-GUIDE.md for how to work on this repository.