addressium
Prototype
GitHub
Admin user pool · staff only

Sign in to the console

Newsletter operators & administrators
Forgot your password?
Single sign-on
🔐 MFA required · TOTP
Hosted UI secured by Amazon Cognito · admin.addressium.northwindtimes.example
Northwind Times / Dashboard
us-east-1 · prod
DA

Dashboard

Sending health and audience at a glance — last 30 days.

Total subscribers128,430▲ 3.1% vs last mo.
Emails sent (30d)2.41M▲ 8.4%
Avg. open rate42.6%▲ 1.2 pts
Avg. click rate7.9%▼ 0.4 pts

Sends & engagement

Deliverability

Healthy
Delivered99.2%
Bounces0.6%
Complaints0.03%

DKIM
Passing
SPF
Passing
DMARC
p=reject
SES quota
312k / day · 340 msg/s

Recent campaigns

View all →
The Morning Ledger — Jul 20
Sent to 96,204 · 2 hours ago
44.1% open8.3% clickSent
Market Signal — Weekly Brief
Sent to 8,410 paid · yesterday
61.7% open14.2% clickSent
Weekend Long Read — Jul 20
Scheduled · Sat 8:00 AM ET
Scheduled
Product Dispatch — v4 launch
Draft · edited 3 days ago
Draft

Newsletters

Each newsletter is a list with its own opt-in policy, from-address and compliance footer.

Open newsletters appear on the public opt-in page and accept signups. Closed ones are hidden from the directory and reject new signups — existing subscribers still receive them.
NewsletterOpt-inSubscribersFrom addressCadenceAccessSignups
The Morning LedgerDouble opt-in96,204ledger@northwindtimes.exampleDaily · 6am ETFreeOpen
Market SignalDouble opt-in8,410signal@northwindtimes.exampleWeeklyPaidOpen
Field NotesDouble opt-in54,880notes@northwindtimes.exampleWeekly · ThuFreeOpen
Weekend Long ReadDouble opt-in61,300read@northwindtimes.exampleWeekly · SatFreeOpen
Product DispatchSingle opt-in12,940product@northwindtimes.exampleAd-hocFreeClosed

Subscribers

Every subscriber is a Cognito account (shared pool) keyed by sub. Click a row to view, manually unsubscribe, or suppress.

128,430 people
SubscriberStatusEntitlementListsLast openCognito sub
JR
Jordan Reyes
jordan.reyes@gmail.com
ConfirmedPaid32h agoa1f3…9c2
MO
Mei Okafor
mei@okafor.studio
ConfirmedFree21d ago7be0…14a
TS
Tomás Silva
tsilva@proton.me
PendingFree1c40d…8f1
AH
Aisha Hassan
aisha.h@outlook.com
ConfirmedPaid45h ago2d99…30b
DK
Daniel Kim
dan.kim@gmail.com
UnsubscribedFree012d ago5aa1…7e4

Segments

Saved filters over attributes and engagement. Resolved at send time via GSIs + materialized tags.

SegmentSizeBasis
Engaged — opened last 30d71,220engagement
Paid subscribers14,860entitlement = paid
Lapsed — no open 90d18,940engagement
NYC metro9,410attribute · city
Segment builder

Lapsed — no open 90d

Match ALL of the following
List is The Morning Ledger
Status is Confirmed
Last open before 90 days ago

Estimated match18,940

Campaigns

Ongoing series aggregate their editions for trend reporting; one-offs report individually. Recurring sends run on EventBridge Scheduler.

Ongoing series · last 30 days
The Morning LedgerDaily
Editions
30
Avg open
43.6%
Avg click
8.1%
Market SignalWeekly · paid
Editions
4
Avg open
60.9%
Avg click
13.8%
Field NotesWeekly
Editions
4
Avg open
39.2%
Avg click
6.4%
recent sends
CampaignTypeStatusAudienceOpenClickWhen
The Morning Ledger — Jul 20Ongoing · DailySent96,20444.1%8.3%2h ago
Market Signal — Weekly BriefOngoing · WeeklySent8,41061.7%14.2%Yesterday
Weekend Long Read — Jul 20Ongoing · WeeklyScheduled61,300Sat 8:00 ET
Product Dispatch — v4 launchOne-offDraft3d ago

New campaign

Compose → choose audience → review & send.

Content
Audience
3Review
Subject line
Variant A · 50%
Variant B · 50%
Magic-link on · 5 / 7 ad slots filled. Editorial links get each recipient’s token; LiveIntent ad tags stay untouched. Edit ad tags →
Review
Newsletter
The Morning Ledger
Audience
Engaged — opened last 30d · 71,220
Suppressed
1,204 (bounces + complaints)
From
ledger@northwindtimes.example
Unsubscribe
One-click (RFC 8058)
Send
Now — throttled to 340 msg/s

Templates

Three authoring modes — pick the right one per team. All render through the same responsive pipeline and get the compliance footer + one-click unsubscribe injected automatically.

Visual builderno code

Drag-and-drop blocks (GrapesJS → MJML). For editors & ad reps building polished sends without touching code. Open →

MJMLdevelopers

Responsive markup + merge tags with live preview. Full control over layout.

Raw HTML blastone-off

Paste advertiser-supplied HTML as-is. Footer + unsubscribe injected; sanitized for safety.

MJML source
v7 · autosaved
<mj-section>
  <mj-column>
    <mj-text font-size="17px">
      Good morning, {{ first_name }}.
    </mj-text>
    <mj-button href="{{ editorial_url }}">
      Read today’s lead
    </mj-button>
    <mj-text>{{ unsubscribe_footer }}</mj-text>
  </mj-column>
</mj-section>
Live preview

Automations

Trigger-based drip sequences, orchestrated by Step Functions.

AutomationTriggerStatusIn flow
Welcome seriesSubscription confirmedLive1,840
Re-engagementNo open · 60dLive6,210
Paid onboardingentitlement → paidPaused0
Welcome series
Trigger — Opt-in confirmed
Double opt-in verified
wait 0 min
Send — Welcome + what to expect
Template: Welcome 01
wait 2 days
Branch — Opened welcome?
Yes → best-of digest · No → re-send

Analytics — The Morning Ledger, Jul 20

Every generic email is archived, so clicks overlay onto the real message.

Delivered95,41099.2%
Unique opens42,07644.1%
Unique clicks7,9188.3% CTR
Unsub / complaint610.06%
A/B subject winner: Variant B — “Markets are flashing a signal — here’s the chart” — beat A on open rate (46.2% vs 41.8%) and was auto-sent to the remaining 80% after 2 hours.
Click map · archived copy
campaign_2f9c…
editorial link · click count hottest link LiveIntent ad — excluded

Top links

editorial only
LinkClicksCTR
the chart everyone’s sharing3,2043.4%
a deal to watch1,0901.1%
rates6420.7%
energy4180.4%
Unsubscribe540.1%
Engagement funnel
Sent
96,204
Delivered
95,410 · 99.2%
Unique opens
42,076 · 44.1%
Unique clicks
7,918 · 8.3%
Bypassed paywall
6,140 · magic link

All links

editorial only
LinkClicksUniqueCTR
the chart everyone’s sharing3,2042,9813.4%
a deal to watch1,0901,0041.1%
rates6425980.7%
energy4184020.4%
Unsubscribe54540.1%

Opens by client

Apple Mail58%
Gmail29%
Outlook8%
Other5%

Mobile
64%
Desktop
36%

Settings

Deployment configuration for this addressium account.

DomainDKIMSPFDMARCTracking
northwindtimes.exampleVerifiedPassp=rejectclick.northwindtimes.example
news.northwindtimes.exampleVerifiedPassp=noneclick.northwindtimes.example
SES is out of the sandbox. Production quota: 312,000/day at 340 msg/s. Setup wizard verifies DKIM/SPF/DMARC on first deploy.
Magic-link tokens
Signing
Asymmetric · ES256 (KMS)
JWKS
/.well-known/jwks.json
Placement
URL fragment #tok=
Scope
content:read
TTL
14 days
Redemption
Reusable · stateless
Forwardable by design — lite scope only. The main site must gate profile pages behind step-up auth.
Entitlement
subentitlemententitlement_asoffirst_name

Last sync
4 min ago · 212 updated
Values
free paid
Deliverability alerts → Amazon SNS

Point alerts at an SNS topic — fan out to email, SMS, Slack, PagerDuty, or a Lambda.

ops@northwindtimes.example#deliverability
Alert rules
Complaint rate
Warn 0.1% · auto-halt 0.3%
Bounce rate
Warn 2% · auto-halt 5%
Send failure spike
SES send errors
Reputation drop
SES account reputation
GDPR / CCPA — data-subject requests

Export or erase a person by email. Erasure removes the profile + events and writes a hashed tombstone to suppression so they’re never re-added.

Retention & consent
Consent capture
timestamp · IP · source URL
Event retention
Right to be forgotten
Automated
Data residency
us-east-1 · your account

Admin team

Staff in the separate admin user pool. Each member has a role, scoped to one or more organizations.

MemberRoleOrg accessMFALast active
DA
Dana Alvarez
dana@northwindtimes.example
Developer AdminAll orgsTOTPNow
PW
Priya Walsh
priya@northwindtimes.example
EditorNorthwind · LakesideTOTP1h ago
RB
Ruben Ba
ruben@northwindtimes.example
Analyst (Sales)All orgsTOTP3d ago
MC
Marco Cruz
marco@northwindtimes.example
SupportNorthwindPending
Migrate from Amazon Pinpoint

Import endpoints, segments and the opt-out list from a Pinpoint export or CSV. Runs as a dry-run first.

⬆ Drop a Pinpoint export or CSV
endpoints · segments · suppression
Last import — dry run
Source
pinpoint-export-0719.csv
Created
12,204
Updated
3,880
Skipped (dupes)
418
Suppressed
96
Errors
0

Feeds

Pull articles from RSS / Atom / JSON feeds to auto-build campaigns. Feed fields map to merge tags.

FeedMaps toLast pulledItemsStatus
Homepage RSS
northwindtimes.example/feed.xml
The Morning Ledger6 min ago28Active
Markets JSON
api…/markets.json
Market Signal14 min ago12Active
Features Atom
northwindtimes.example/features.atom
Field Notes1 h ago6Paused
Field mapping — Homepage RSS
<title>
{{article_title}}
<link>
{{editorial_url}} + token
<description>
{{article_excerpt}}
media:thumb
{{article_image}}

Merge tags

In-email replacement variables and where each value comes from at send time.

Tags backed by a token claim ride in the magic link; per-recipient tags resolve during bulk send; per-campaign tags are identical for everyone.
TagSourceScopeExampleFallback
{{first_name}}Profile attributeper-recipientJordanthere
{{editorial_url}}Feed link + magic tokentoken…/article#tok=…
{{entitlement}}Profile · syncedtoken claimpaidfree
{{article_title}}Feed fieldper-campaignThe one chart…
{{unsubscribe_url}}Systemper-recipient…/u/…
{{unsubscribe_footer}}System · list addressper-campaignNorthwind Times · 123 Main Street…

Ad tags

LiveIntent ad HTML per slot. For recurring newsletters the fills are set once at the series level and reused by every edition; one-off blasts set them per campaign. Inserted as-is — never tokenized or click-tracked.

Slots in this template

7 slots
SlotPositionThis edition
{{ad_top}}Above the foldFilled
{{ad_inline_1}}After story 1Filled
{{ad_inline_2}}After story 2Filled
{{ad_inline_3}}After story 3Filled
{{ad_native}}Native unitFilled
{{ad_sidebar}}SidebarEmpty
{{ad_footer}}Below footerEmpty
Edit slot — {{ad_top}}
not tracked
LiveIntent HTML for The Morning Ledger — series default · reused by every daily edition
Pasted verbatim into the slot at send time. Links inside are left untouched — no magic token, no click rewriting, excluded from the click map. Saved at the series level, so every future edition reuses it until you change it.

Identity & pools

Per-organization Cognito pools, app clients and magic-link signing. Stored in SSM; scoped to Northwind Times.

Admin user pool · staff
shared across orgs
Subscriber user pool
per-org · shared w/ site
Magic-link signing · Northwind Times
Each organization has its own signing key, JWKS and subscriber pool — silos never share tokens. Rotating here republishes only Northwind Times’s JWKS.

Data & exports

Import from Pinpoint / CSV and export subscriber lists or segments — scoped to this organization.

Import
⬆ Drop a Pinpoint export or CSV
endpoints · segments · suppression
Export
emailfirst_nameentitlementstatus

Recent jobs

JobTypeRowsStatusWhen
export-ledger-0720.csvExport96,204ReadyJust now
pinpoint-export-0719.csvImport (dry run)16,502ReviewedYesterday
suppression-0715.csvImport1,204Committed5 days ago
← Subscribers

Jordan Reyes Paid

jordan.reyes@gmail.com

Identity
Cognito sub
a1f3b8c0-…-9c2
Organization
Northwind Times
Status
Confirmed
Entitlement
paid · asof 4 min ago
Source
Signup form · homepage
Consent
2025-11-04 · IP 73.x · double opt-in
Suppression
None

List subscriptions

The Morning Ledger
Confirmed · daily
Market Signal
Confirmed · weekly · paid
Weekend Long Read
Confirmed · weekly
Manual unsubscribe writes a suppression entry and flips the list status immediately — the next send skips them.

Recent activity

Opened — The Morning Ledger, Jul 20
2 hours ago
Clicked — “the chart everyone’s sharing”
2 hours ago · lite session established
Opened — Market Signal
Yesterday

Suppression

Addresses that are never sent to. Hard bounces and complaints are added automatically.

Suppression scope

How the do-not-send list is shared across your organizations. Set once per deployment; override per org if needed.

3,912 addresses
AddressReasonScopeAdded
bounce@olddomain.comHard bounceGlobal2h ago
angry@example.comComplaintGlobalYesterday
dan.kim@gmail.comUnsubscribeNorthwind Times12d ago
test@spamtrap.netManualGlobal1 mo ago

Organizations

Each organization is an isolated silo. Manage the subscriber-pool ↔ org ↔ domain links and per-org setup here.

OrganizationDomainSubscriber pool IDTime zoneSending IPSuppressionSetup
Northwind Timesnorthwindtimes.exampleus-east-1_Smt7Rp4WqAmerica/DenverSharedHybridVerified
Lakeside Ledgerlakesideledger.exampleus-east-1_Lakeside3Kp9xAmerica/DenverDedicatedHybridVerified
Copperline Couriercopperlinecourier.exampleus-east-1_Asp2Qw8vAmerica/DenverSharedPer-orgDMARC pending
Setup checklist — Copperline Courier
Domain verified in SES
DKIM signing enabled
SPF aligned
DMARC — move p=none → p=reject
Subscriber pool linked
Magic-link JWKS published
First-time install

A fresh addressium deploy runs the setup wizard once: verify a domain in SES (DKIM / SPF / DMARC), then create the first organization and link a Cognito subscriber pool. Every org after that repeats this checklist.

Your account’s domains are already verified — this is what a new developer installing the repo walks through per org.

API & webhooks

Programmatic access for entitlement sync, subscriber events and integrations — scoped per organization.

API keys

NameKeyScopeLast used
Stripe entitlement syncsk_live_9f2c…a1entitlement:write4 min ago
CMS integrationsk_live_2b7d…c4subscribers:read1h ago

Outbound webhooks

EndpointEventsStatus
northwindtimes.example/hooks/addressiumsubscribed · unsubscribed · complainedHealthy
ops.northwindtimes.example/deliverabilitybounce · complaintHealthy

Usage & cost

addressium is free software — this is your AWS spend, attributed per organization for chargeback across publications.

Emails sent412,000▲ 6.2%
Est. SES cost$41.20$0.10 / 1k
Subscribers254,530▲ 2.9%
Est. AWS total$96.40SES + IP + infra

By organization

OrganizationEmails (mo)SES costDedicated IPStorageEst. total
Northwind Times268,400$26.841.2 GB$27.90
Lakeside Ledger112,900$11.29$24.95/mo0.6 GB$37.10
Copperline Courier30,700$3.070.3 GB$3.40
Total412,000$41.20$24.952.1 GB$96.40
Emails sent · 30 days
Cost breakdown
SES sending$41.20
Dedicated IP$24.95
DynamoDB$11.80
Lambda + S3$18.45

Visual builder

Drag-and-drop email builder (GrapesJS → MJML). Outputs the same responsive MJML as hand-authored templates; the compliance footer is added on send.

Blocks · drag in
▤  Heading
¶  Text
▭  Image
◼  Button
▥  Columns
—  Divider
▱  Ad slot
✦  Article (feed)
␣  Spacer
headerThe Morning Ledger
heading

Good morning, {{first_name}}

textThe one chart that explains the market — and three things to watch before the open.
buttonRead today’s lead
ad_top · LiveIntent{{ad_top}} — inserted on send, not tracked
footer · autoNorthwind Times · 123 Main Street, Anytown, USA · Unsubscribe
Button · settings

Editorial links get each recipient’s magic-link token automatically.

Roles & access

What each admin role can do. Assign roles per member and scope them to specific organizations.

CapabilityDeveloper AdminEditorAnalyst (Sales)Support
View reports & analyticsread-only
Schedule / resend / modify send times
Create / edit / send campaigns
Manage templates & segments
Manage individual subscribers
Manually unsubscribe someone
Delete contacts
Close / reopen newsletters
Manage suppression & alerts
Identity, pools, organizations
API keys, webhooks & feeds
Manage team & roles
Roles are also org-scoped: an Editor for Lakeside Ledger can’t send for Northwind Times, and a Sales/Analyst gets read-only reporting only for the orgs you grant. Destructive actions (delete contacts, close newsletters) are Developer-Admin-only by design.

Audit log

Every admin action, immutable. Filter by member, organization or action type.

WhenMemberActionOrg
2m agoDana AlvarezSent campaign “The Morning Ledger — Jul 20”Northwind Times
1h agoPriya WalshClosed newsletter “Product Dispatch”Northwind Times
3h agoDana AlvarezManually unsubscribed dan.kim@gmail.comNorthwind Times
YesterdayRuben BaExported 96,204 subscribers (CSV)Northwind Times
2d agoDana AlvarezProvisioned organization “Copperline Courier”
3d agoPriya WalshRotated magic-link signing keyLakeside Ledger
Northwind Times newsletters

Independent journalism, in your inbox.

Pick the newsletters you want. Every subscription is double opt-in — we’ll email you to confirm, and you can manage or leave anytime.

The Morning Ledger

Daily · weekday mornings
Free

The business day in a five-minute read. Markets, deals, and the one chart that matters.

96,204 readers

Market Signal

Weekly · Sunday
Paid

Deep premium analysis for investors. Included with a Northwind membership.

8,410 members

Field Notes

Weekly · Thursday
Free

Long-form features and reporting from the field. One story, told well.

54,880 readers

Weekend Long Read

Weekly · Saturday
Free

The best of the week plus one essay worth your Saturday coffee.

61,300 readers