Getting Started with Aeion Marketing

Create your first email campaign, build a welcome automation journey, configure domain authentication, run your first Wilson Score A/B test, and set up SMS — all in Aeion OS.

1

Configure Your Email Provider

Before sending anything, configure your sending domain and email provider.

Navigate: Marketing → Settings → Email Providers

Configure SendGrid, Mailgun, Resend, Postmark, or SMTP:

json { "provider": "sendgrid", "label": "Production", "apiKey": "SG.xxxxx", "fromEmail": "noreply@yourdomain.com", "fromName": "Your Brand", "isActive": true, "webhookUrl": "https://yourtenant.aeionos.com/bridge/marketing/webhook" }

Required webhook URL: Webhook events (opens, clicks, bounces, complaints) route here and update your send records automatically.

Test the provider: Click Send Test Email — a diagnostic email is sent, latency and success/failure recorded in the provider record.

If you haven't configured DNS:

  1. Run Domain Authentication Check — probes your domain's SPF, DKIM, and DMARC records
  2. Tests the common DKIM selector patterns used by major providers (Google, SendGrid, Mailgun, etc.)
  3. Grades: A (proceed), B (proceed with warning), C/F (block and fix)
  4. Result cached briefly to avoid unnecessary repeat DNS lookups
  5. Follow the recommendations to add DNS records
2

Upload Your Subscriber List

Navigate: Marketing → Subscribers → Import CSV

CSV format:

csv email,name,rfm_lifetime_value,consent_text sarah@example.com,Sarah Chen,450,I consent to receive marketing emails mike@example.com,Mike Ross,120,I consent to receive marketing emails lisa@example.com,Lisa Park,890,I consent to receive marketing emails

What happens during import:

  1. The CSV is parsed, including quoted fields
  2. Each subscriber is found or created
  3. A subscription record is created for the newsletter
  4. If double opt-in is required: status = "pending", and a 72-hour confirmation token is generated
  5. If confirmation is skipped (admin import): status = "active" immediately

Consent tracking: Every imported subscriber has their consent text recorded — required for GDPR Article 7 compliance.

Double opt-in flow:

  1. Subscriber receives confirmation email with a link
  2. The link contains a unique, unguessable token
  3. The token expires after 72 hours
  4. After expiry, subscriber must re-subscribe
3

Build Your First Email Template

Navigate: Marketing → Templates → New Template

The email editor is a visual MJML canvas — drag and drop blocks, style them, and the compiler produces standards-compliant HTML.

Block types:

  • Hero — Large image + headline
  • Text — Rich text with {{handlebars}} variable support
  • Image — Optimized via Media module, lazy-loaded
  • Button — CTA button
  • Columns — 2-column or 3-column layout
  • Spacer — Vertical spacing control
  • Divider — Horizontal rule
  • Footer — Unsubscribe link (auto-generated, RFC 8058 compliant)

Handlebars variables:

``` Hello {{firstName}},

{{#if rfm.isChampion}} As one of our best customers, enjoy 20% off your next order. {{else}} Thanks for shopping with us! {{/if}} ```

Variable evaluation: Variables resolve at render time, per subscriber. A 100K-subscriber campaign renders 100K personalized emails from one template.

Preview: See how the email renders across Gmail, Apple Mail, Outlook, and Yahoo.

4

Create Your First Campaign

Navigate: Marketing → Campaigns → New Campaign

json { "name": "Q2 Product Launch", "subject": "{{#if subscriber.rfm.isChampion}}Exclusive: {{productName}} is here{{else}}{{productName}} is now available{{/if}}", "templateId": "template_01J8XK4N3P", "segment": { "conditions": [ { "field": "rfm.category", "operator": "equals", "value": "champion" }, { "field": "lastEngagementAt", "operator": "greaterThan", "value": "-90d" } ], "logic": "AND" }, "fromEmail": "noreply@yourdomain.com", "fromName": "Your Brand" }

A/B test variant:

Variant A: "Your cart is waiting, {{firstName}}" Variant B: "Don't leave your cart behind"

Split: 50% to Variant A, 50% to Variant B. Wilson Score evaluates after significance is reached.

Send: Click Launch Campaign:

  1. The campaign is validated — a duplicate launch (double-click or retry) can't re-send to your whole list
  2. Status is set to "sending"
  3. Recipients are chunked into isolated batches, so one bad batch never affects the rest of the send
  4. Batches are processed concurrently (10K+ msgs/sec)
  5. Each send includes pre-processed HTML, a unique tracking token, and a List-Unsubscribe header
5

Build a Welcome Automation Journey

Navigate: Marketing → Automations → New Automation

Welcome sequence (7 days):

[Trigger: Subscriber joins list] ↓ [Email 1: Welcome + your best-seller] ↓ [Wait: 2 days] ↓ [Condition: Opened email?] ├─ Yes → [Email 2: Cross-sell product] → [Wait: 3 days] → [Goal: Purchase → Exit] └─ No → [SMS: "Did you miss our email?"] → [Wait: 2 days] → [Exit: Inactive]

Node execution:

  • Email node: Renders the MJML template and sends it
  • Wait node: Schedules a delayed step; enrollment status moves to "waiting" and resumes automatically when the timer fires. A recursion guard protects against runaway loops
  • Condition node: Evaluates subscriber.rfm.category === 'at-risk', branches true/false
  • SMS node: Composes and sends via AWS SNS or Twilio
  • Goal node: Sets enrollment status → "completed"
  • Exit node: Logs exit reason

Re-enrollment: Set allowReEnrollment: true on the automation for repeatable journeys.

6

Analyze A/B Test Results with Wilson Score

VariantSentOpensOpen RateWilson Lower BoundWinner?
A: "Your cart is waiting, {{firstName}}"5,0001,10022.0%0.209
B: "Don't leave your cart behind"5,00098019.6%0.187
7

Set Up SMS

Navigate: Marketing → Settings → SMS Providers

json { "provider": "twilio", "accountSid": "ACxxxx", "authToken": "xxx", "fromNumber": "+1555xxxxxxx", "isActive": true }

SMS in automation journeys: Add an SMS node to any automation. Dispatches via AWS SNS or Twilio. 160-char single-segment limit, 306 for concatenated.

SMS use cases:

  • Abandoned cart: "{{firstName}}, you left {{productName}} in your cart. Complete: {{checkoutUrl}}"
  • Appointment reminder: "Your appointment is tomorrow at {{time}}. Reply CANCEL to reschedule."
  • Shipping notification: "Your order #{{orderId}} has shipped! Track: {{trackingUrl}}"

RFM Segmentation for Smarter Campaigns

ScoreRecencyFrequencyMonetary
4≤7 days20+$500+
38–30 days10–19$100–499
231–90 days4–9$20–99
191+ days0–3$0–19

Compliance: GDPR, Unsubscribe, Suppression

GDPR Anonymization: When a subscriber requests deletion, email, name, and IP are hashed with SHA-256. Metrics stay intact, PII is irrecoverable. GDPR Article 20 right to portability → JSON export.

Unsubscribe (RFC 8058): Every email includes List-Unsubscribe: <url> and List-Unsubscribe-Post: List-Unsubscribe=One-Click. Gmail, Yahoo, Outlook show native unsubscribe button. One click → suppressed.

Suppression: Hard bounces, complaints, unsubscribes, GDPR deletions, and role addresses are all suppressed automatically, checked before every send. Fail-open: never block a campaign on a database hiccup.