# Digimetrics.ai — Retention Email Series
**Prepared 2026-08-27 · for implementation directly in the platform.digimetrics.ai codebase (no ESP)**

Researched live against the actual product (account: albert@mediaone.co, "Expert" plan, project: Furnituresg.com.sg) — every product noun, route, credit number, and mechanic below is real, not assumed. Where something is genuinely unconfirmed, it's flagged in **Open Questions** at the end rather than guessed.

---

## 0. How to use this document

This covers four sequences, each solving a different retention problem:

| Sequence | Problem it solves | Emails | Who it targets |
|---|---|---|---|
| **TRIAL** | Trial → paid conversion | 7 | Signed up, on free credits, not yet subscribed |
| **ACTIVATE** | Early churn (first 90 days) | 5 | Converted to paid, still within first 90 days |
| **REVIVE** | Credit/usage revival | 4 | Paying, but usage has gone quiet |
| **WINBACK** | Lapsed / cancelled | 4 | Trial expired unconverted, or subscription cancelled |

Each email spec has: **Trigger**, **Timing**, **Exit condition**, **Subject**, **Preview text**, **Body copy** (word-for-word), **CTA**, and **Data needed**. Section 5 lists every backend event/field this whole series depends on, in one place, for whoever wires it up.

**Category assignment** (see Account & billing → Email preferences, which splits "Account emails" — always sent — from "Product updates & announcements" — user-togglable): trial-ending and cancellation-confirmation emails should be **Account emails** (they're status-of-your-account, not marketing). Everything else in this doc — digests, nudges, win-back — should respect the **Product updates & announcements** opt-out. This is called out per-email below.

**Frequency cap:** no user should receive more than one email from this whole system in a 48-hour window, except TRIAL-05 (trial ending, time-critical) and WINBACK-01 (cancellation confirmation, always sends). If two sequences would fire on the same day, TRIAL and WINBACK outrank ACTIVATE and REVIVE.

---

## 0.5 — Implementation guide (read this before opening any `.html` file)

**This is a handoff package, not just a spec.** Every email below has a matching, ready-to-wire HTML template already built. This section is what to do with them.

### File map

```
digimetrics-retention-emails/
├── RETENTION-EMAIL-PLAN.md          ← this file
├── 01-trial/          (7 templates — trial-01, trial-02, trial-02b, trial-03 through trial-06)
├── 02-activate/       (5 templates — activate-01 through activate-05)
├── 03-revive/         (4 templates — revive-01 through revive-04)
└── 04-winback/        (4 templates — winback-01 through winback-04)
```

Every `.html` file starts with an HTML comment block stating its **Trigger, Timing, Category, Subject, Preview text, and every `{{token}}` it uses** — that comment is the fastest way to understand one email without cross-referencing this doc. The comment block is also where any *conditional* content in that email is documented — see below.

### Template structure (identical across all 19 files)

Every email is: `<style>` block (inline-friendly, table-based, MSO-safe) → hidden `.preheader` text → 600px centered table → small logo bar (`DIGIMETRICS<span>.AI</span>`) → one white rounded card (`#ffffff`, `1px solid #dbe7f6`, `24px` radius) containing an eyebrow label, headline, body copy, one CTA button, sign-off → a footer with preference/privacy links. This mirrors the structure of the existing "Digital Marketing Superstar" campaign email, scaled down from a big hero to lifecycle-email weight.

**Brand tokens used throughout — reuse these exactly if you build more emails later:**

| Token | Value | Used for |
|---|---|---|
| Page background | `#eef3fb` | `<body>` |
| Card background / border | `#ffffff` / `#dbe7f6` | main content card |
| Ink (headline) | `#12223d` | headlines, bold inline text |
| Ink (body) | `#536884` | paragraph text |
| Ink (muted) | `#7a8ca5` | footer, small print |
| Accent | `#3b82f6` (buttons) / `#2563eb` (links, big numbers) | CTA, stats, eyebrow labels |
| Light accent bg | `#f5f8fd` | callout cards (findings, stats, scores) |
| Urgency bg/text | `#fde2e2` / `#c0392b` | severity pills, "1 day left" badges only — used sparingly, not a general warning color |
| Body font | `-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif` | all copy |
| Label/mono font | `ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Consolas, monospace` | eyebrow labels, stat labels, pills |

### Reusable components (built once in TRIAL, reused across the other three sequences)

- **Finding callout card** — light-blue rounded box with an optional severity pill + bold title + gray detail line. First built in `01-trial/trial-03-findings-tease.html`; reused (simplified, no severity pill) in `02-activate/activate-02-inactivity-nudge.html` and `04-winback/winback-02-plus-14-days.html`.
- **Stat row** — 2 or 3 equal columns, big blue number + uppercase mono label underneath, stacks vertically on mobile. First built in `01-trial/trial-04-value-recap.html`; reused in `02-activate/activate-01-two-week-checkin.html` and `04-winback/winback-01-cancellation-recap.html`.
- **Pricing tier row** — 3-column credit-pack pricing (middle tier highlighted "Best value"), matching the real `/account` top-up pricing. Built in `03-revive/revive-02-running-low-topup.html` only.
- **Streak badge** — centered pill with strikethrough streak count. Built in `02-activate/activate-03-streak-break.html` only.
- **Reply-only layout** (no CTA button) — for the one email in this series that asks for a human reply instead of a click. Built in `03-revive/revive-03-two-cycles-quiet.html` only; needs its Reply-To header set to a real monitored inbox, not the sending address.

### Token & conditional syntax

Every `{{variable_name}}` is a literal placeholder — resolve these server-side before send (this doc assumes Handlebars-style syntax since that's the most common convention, but use whatever your templating layer actually is).

**Six emails contain conditional content** that can't be represented as valid HTML directly (an email can't render two mutually-exclusive branches at once). Where this happens, the file contains the **default/primary branch as live, rendered HTML**, and the **alternate branch fully written out inside an HTML comment**, clearly marked `BRANCH A` / `BRANCH B` with `{{#if}}` / `{{else}}` / `{{/if}}` markers. Your template engine needs to pick one branch and discard the other before sending — **never ship the raw `{{#if}}` text to a subscriber.** The six are:

| File | Branches on |
|---|---|
| `02-activate/activate-01-two-week-checkin.html` | `has_schedule` |
| `02-activate/activate-02-inactivity-nudge.html` | `new_findings_count > 0` |
| `02-activate/activate-04-30-day-milestone.html` | `health_score_delta` exists (+ optional `top_mover_keyword` line) |
| `02-activate/activate-05-habit-push.html` | `team_size == 1` (whole email — subject and preheader differ too, noted in the file's top comment) |
| `04-winback/winback-03-plus-30-days-incentive.html` | `{{incentive_line}}` — see below, this one needs a decision, not just a data lookup |

### Before you build: five decisions, not just data plumbing

These aren't backend wiring — they're product/business calls that change what ships. Full detail in **§7 Open Questions** below; summarized here so they're not missed:

1. **Free credit amount**: platform says 200, marketing site says 50. Pick one, fix the mismatch, then hardcode `{{credits_total}}`'s real value.
2. **Trial model**: day-based or credit-based? Changes whether TRIAL's Day 0/1/3/5/6/8 timing is literal or needs to become threshold-based.
3. **`winback-03`'s `{{incentive_line}}`**: needs an actual marketing/finance decision (discount, bonus credits, or no incentive) — the three options are spelled out in that file's top comment. Don't leave this as a live conditional in production; pick one and hardcode it.
4. **`revive-04`'s daily automatic check**: confirm whether it's default-on for every account or specific to certain projects, before estimating how many users this email actually reaches.
5. **`revive-03`'s reply-to inbox**: needs a real monitored address wired into the Reply-To header before this one goes live — it's the only email in the series that isn't fully automatable.

---

## 1. Voice & style guide (derived from your own copy)

Pulled from the "Digital Marketing Superstar" campaign email and the product's actual UI strings — match this, don't invent a new voice:

- **Plain English over scores.** Your own marketing copy says *"Unlike 99% of the marketing tools out there that tell you scores like 73/100 which doesn't make sense to most people, Digimetrics is GOAL-ORIENTED."* The product UI does show numeric scores (Health score 78, GEO ready 89/100) — that's fine to reference, but always lead with what it *means* before the number. "Your site health jumped 7 points this month (71 → 78) — mainly from fixing crawl errors." not "Health score: 78."
- **Confident, a little punchy, never corporate.** Short sentences. Contractions. Real product nouns, capitalized exactly as the UI shows them: *Full Site Audit (SEO + AI)*, *AI Readiness Check*, *Scheduled Runs*, *credits*, *your north star*, *Monty*.
- **Never invent a stat.** Every number in an email body must come from a real field (see §5) — no "join thousands of marketers."
- **One CTA per email.** Every email in this doc has exactly one primary button. Don't add a second competing link.
- **Sign-off:** "— The Digimetrics Team" (not an individual's name; matches the existing Superstar email's brand-level sign-off).

---

## 2. Sequence: TRIAL — Trial → Paid Conversion

**Enters:** on account creation (signup event).
**Exits:** immediately, on `subscription_started` (any paid plan) — no further TRIAL emails send once this fires, regardless of which step they're on.
**Category:** TRIAL-05 and TRIAL-06 are **Account emails** (trial-ending is account status). TRIAL-01, TRIAL-02, TRIAL-02B, TRIAL-03, and TRIAL-04 are **Product updates** (opt-out respected).

### TRIAL-01 — Welcome (Day 0, immediately after signup)

**Trigger:** `user_signed_up`
**Timing:** immediately
**Data needed:** `{{first_name}}`, `{{credits_total}}` (200 or 50 — see Open Questions)

**Subject:** Let's find out what's actually holding your site back
**Preview text:** One link, ~90 seconds, and a plain-English brief — no dashboard-hunting required.

**Body:**
> Hey {{first_name}},
>
> Welcome to Digimetrics. You've got {{credits_total}} free credits sitting in your account — here's the fastest way to spend the first 13 of them well.
>
> Give us your website. We'll crawl it, check how it's doing in Google *and* in AI answers like ChatGPT and Gemini, and come back with one plain-English brief: who to sell to, where to reach them, what's holding the site back, and what to fix first.
>
> No jargon. No "73 out of 100." Just what's actually wrong and what to do about it.
>
> **[Audit My Site →]**
>
> Takes about 90 seconds. If you want to see what the report looks like first, there's a free example on that page too.
>
> — The Digimetrics Team

**CTA:** "Audit My Site" → `/audit`

---

### TRIAL-02 — First-audit nudge (Day 1, conditional)

**Trigger:** 24h after signup AND `first_audit_completed = false`
**Timing:** Day 1
**Exit:** skip entirely if they've already run any tool
**Data needed:** `{{first_name}}`

**Subject:** Still there? Your free brief is one link away
**Preview text:** No website URL needed to see what you'd get — there's a free example.

**Body:**
> Hey {{first_name}},
>
> Quick one — you haven't run your first site audit yet, and it's the fastest way to see what Digimetrics actually does for you.
>
> Drop in your website URL and in about 90 seconds you'll get a plain-English brief on what's working, what isn't, and what to fix first — across both traditional SEO and whether AI tools like ChatGPT even know your site exists.
>
> **[Run My Free Audit →]**
>
> Not ready to share your URL? There's a free example report on that page — no signup, no credits spent.
>
> — The Digimetrics Team

**CTA:** "Run My Free Audit" → `/audit`

---

### TRIAL-02B — Early referral nudge, while they're pumped

**Trigger:** 24h after `first_audit_completed` first becomes true AND `has_sent_invite = false` AND `subscription_started = false`
**Timing:** floats — it's tied to their first "aha" moment (seeing real findings), not a fixed calendar day. For most users this lands around Day 1–2, matching "the next day" — but it correctly waits for someone who takes until Day 4 to run their first audit, instead of asking them to refer a tool they haven't seen work yet.
**Why this trigger and not a flat Day-1 blast:** asking for a referral before someone has seen any value is a cold ask; asking right after their first real result is the moment enthusiasm is actually highest. This is deliberately earlier and warmer than ACTIVATE-05 (Day 90) — that one is a fallback for solo users three months in who never referred anyone; this one catches the excitement while it's fresh. Both stay in the plan; they target different moments, not the same one twice.
**Collision rule:** subject to the standard 48-hour global frequency cap (§0). If the 24h mark lands on the same day as TRIAL-03, TRIAL-03 wins and this email reschedules to the next eligible day.
**Category:** Product updates (respects `email_preferences.product_updates` opt-out)
**Data needed:** `{{first_name}}`, `{{findings_count}}` (from their first completed audit)

**Subject:** Found something already? Share the credits with a coworker
**Preview text:** They get 2,000 credits, you get 2,000 too — takes 10 seconds to send.

**Body:**
> Hey {{first_name}},
>
> You just ran your first audit and it already turned up {{findings_count}} real findings. If there's someone else on your team who'd get value out of that too, send them your invite link.
>
> They start with 2,000 credits on top of their own free trial. You get 2,000 credits the moment they join — up to 10 rewards, and unlike your monthly allowance, these roll over and never expire.
>
> **[Get My Invite Link →]**
>
> — The Digimetrics Team

**CTA:** "Get My Invite Link" → `/invite`

---

### TRIAL-03 — Show them what's already been found (Day 3, conditional)

**Trigger:** Day 3 AND `first_audit_completed = true` AND `onboarding_steps_completed < 3`
**Timing:** Day 3
**Data needed:** `{{first_name}}`, `{{top_finding_title}}`, `{{top_finding_detail}}`, `{{top_finding_severity}}`, `{{onboarding_step_current}}` (name of next step, e.g. "My website visitors")

**Subject:** We already found something: {{top_finding_title}}
**Preview text:** {{top_finding_detail}}

**Body:**
> Hey {{first_name}},
>
> Your reports already turned up something worth knowing:
>
> **{{top_finding_title}}** ({{top_finding_severity}} priority)
> {{top_finding_detail}}
>
> This is exactly the kind of thing your north star plan is built to chip away at, one step at a time. You're partway through it already — next up is **{{onboarding_step_current}}**.
>
> **[Continue My Plan →]**
>
> Two minutes now saves you guessing later.
>
> — The Digimetrics Team

**CTA:** "Continue My Plan" → `/`

---

### TRIAL-04 — Value recap (Day 5, conditional)

**Trigger:** Day 5 AND `subscription_started = false`
**Timing:** Day 5
**Data needed:** `{{first_name}}`, `{{findings_count}}`, `{{tool_runs_count}}`, `{{credits_used}}`, `{{credits_total}}`, `{{plan_name_recommended}}` (cheapest paid plan, from pricing data)

**Subject:** Here's everything Digimetrics has found for you so far
**Preview text:** {{findings_count}} findings, {{tool_runs_count}} reports run — here's what happens when your free credits run out.

**Body:**
> Hey {{first_name}},
>
> Two days left on the house. Here's what you've built so far:
>
> - **{{findings_count}} findings** across your site, content, and AI visibility
> - **{{tool_runs_count}} reports** run
> - **{{credits_used}} of {{credits_total}} credits** used
>
> None of that goes away — but once your free credits are gone, running new reports and keeping your north star plan moving needs a plan. {{plan_name_recommended}} picks up right where you are, no re-onboarding.
>
> **[See Plans →]**
>
> — The Digimetrics Team

**CTA:** "See Plans" → `/account` (plan selector)

---

### TRIAL-05 — Trial ending tomorrow (Day 6) — *Account email*

**Trigger:** 24h before credit/trial expiry
**Timing:** Day 6
**Category:** Account email (always sends, not opt-out-able)
**Data needed:** `{{first_name}}`, `{{credits_left}}`

**Subject:** Your free credits run out tomorrow
**Preview text:** {{credits_left}} credits left — here's how to keep everything running.

**Body:**
> Hey {{first_name}},
>
> Heads-up: you've got {{credits_left}} free credits left, and they run out tomorrow. After that, your north star plan pauses where it is until you pick a plan — nothing is deleted, nothing is lost.
>
> **[Keep My Plan Moving →]**
>
> Takes under a minute. If you're not sure which plan fits, reply to this email and we'll help you pick.
>
> — The Digimetrics Team

**CTA:** "Keep My Plan Moving" → `/account`

---

### TRIAL-06 — Trial ended, last chance (Day 8) — *Account email*

**Trigger:** 24–48h after credits hit 0 AND `subscription_started = false`
**Timing:** Day 8
**Category:** Account email
**Exit:** this is the last TRIAL email; if no conversion, user rolls into WINBACK after 14 more days of inactivity
**Data needed:** `{{first_name}}`, `{{findings_count}}`, `{{top_finding_title}}`

**Subject:** Your plan is paused — {{top_finding_title}} is still unfixed
**Preview text:** Everything's saved. Pick up exactly where you left off.

**Body:**
> Hey {{first_name}},
>
> Your free credits ran out, so your north star plan is on pause — including **{{top_finding_title}}**, which was still sitting unfixed.
>
> Nothing's deleted. Pick a plan and you're back to exactly where you were, findings and all.
>
> **[Resume My Plan →]**
>
> — The Digimetrics Team

**CTA:** "Resume My Plan" → `/account`

---

## 3. Sequence: ACTIVATE — Early Churn Prevention (first 90 days, paid)

**Enters:** on `subscription_started`.
**Exits:** on `subscription_cancelled` (→ WINBACK takes over) or at day 90 (graduates to standard lifecycle, outside this doc's scope).
**Category:** all Product updates (opt-out respected).

### ACTIVATE-01 — Two-week check-in (Day 14 post-conversion)

**Trigger:** 14 days after `subscription_started`
**Data needed:** `{{first_name}}`, `{{tool_runs_count_14d}}`, `{{findings_resolved_count}}`, `{{has_schedule}}` (bool)

**Subject:** Two weeks in — here's what's actually moved
**Preview text:** {{tool_runs_count_14d}} reports run, {{findings_resolved_count}} findings cleared.

**Body:**
> Hey {{first_name}},
>
> Two weeks as a Digimetrics customer. Quick tally:
>
> - **{{tool_runs_count_14d}} reports** run
> - **{{findings_resolved_count}} findings** cleared off your plan
>
> {{if !has_schedule}}One thing you haven't set up yet: **Scheduled Runs**. Point any tool at your site on a weekly cadence and we'll track the trend for you automatically — health score, issues, the works — instead of you having to remember to re-run it.
>
> **[Set Up a Scheduled Run →]**
> {{else}}Your Scheduled Run is already tracking the trend for you — check back on {{schedules_link}} any time to see where you've moved.
>
> **[View My Trend →]**
> {{/if}}
>
> — The Digimetrics Team

**CTA:** "Set Up a Scheduled Run" → `/schedules` (or "View My Trend" → `/schedules` if already set up)

---

### ACTIVATE-02 — Inactivity nudge (7 days no login)

**Trigger:** `last_login` > 7 days ago AND account still paid
**Suppression:** don't fire if REVIVE or WINBACK already fired for this user in the last 14 days
**Data needed:** `{{first_name}}`, `{{new_findings_count}}` (findings surfaced since their last visit, if any recurring/scheduled run exists), `{{top_finding_title}}`

**Subject:** Your site's still moving, even when you're not looking
**Preview text:** {{if new_findings_count > 0}}{{new_findings_count}} new things worth knowing{{else}}Here's what's still open on your plan{{/if}}

**Body:**
> Hey {{first_name}},
>
> Been a week since you last checked in. {{if new_findings_count > 0}}Your scheduled reports kept running in the background and turned up **{{new_findings_count}} new findings**, including **{{top_finding_title}}**.{{else}}**{{top_finding_title}}** is still sitting on your plan, unaddressed.{{/if}}
>
> **[See What Changed →]**
>
> — The Digimetrics Team

**CTA:** "See What Changed" → `/`

---

### ACTIVATE-03 — Streak-break win-back

**Trigger:** `streak_days` was ≥ 5 AND streak just broke (no tool run yesterday, breaking a streak of 5+)
**Data needed:** `{{first_name}}`, `{{streak_days_lost}}`

**Subject:** Your {{streak_days_lost}}-day streak just ended
**Preview text:** Start a new one today — it only takes one report.

**Body:**
> Hey {{first_name}},
>
> Your {{streak_days_lost}}-day streak broke yesterday. No penalty, no lost credits — but if the daily habit was working for you, the fastest way back is just running one report today.
>
> **[Run a Report →]**
>
> — The Digimetrics Team

**CTA:** "Run a Report" → `/tools`

---

### ACTIVATE-04 — 30-day milestone digest

**Trigger:** 30 days after `subscription_started`
**Data needed:** `{{first_name}}`, `{{health_score_current}}`, `{{health_score_delta}}` (only if a schedule exists with 2+ runs), `{{findings_resolved_count_30d}}`, `{{top_mover_keyword}}` (from Top Movers if available)

**Subject:** Your first month, in three numbers
**Preview text:** {{if health_score_delta}}Health score {{health_score_delta > 0 ? '+' : ''}}{{health_score_delta}} in 30 days{{else}}Here's what a month with Digimetrics looks like{{/if}}

**Body:**
> Hey {{first_name}},
>
> One month in. Here's the scoreboard:
>
> {{if health_score_delta}}- Site health score: **{{health_score_current}}** ({{health_score_delta > 0 ? '+' : ''}}{{health_score_delta}} since your first run){{/if}}
> - **{{findings_resolved_count_30d}} findings** cleared
> {{if top_mover_keyword}}- **"{{top_mover_keyword}}"** moved up in rankings — your biggest mover this month{{/if}}
>
> {{if !health_score_delta}}One thing worth doing: set up a weekly Scheduled Run so next month's recap has a real before/after instead of a snapshot.
>
> **[Set Up a Scheduled Run →]**
> {{else}}
> **[See the Full Trend →]**
> {{/if}}
>
> — The Digimetrics Team

**CTA:** dynamic — "Set Up a Scheduled Run" or "See the Full Trend" → `/schedules`

---

### ACTIVATE-05 — Make it a habit (Day 90)

**Trigger:** 90 days after `subscription_started` AND account still active
**Data needed:** `{{first_name}}`, `{{team_size}}` (1 if solo)

**Subject:** {{if team_size == 1}}Running this solo?{{else}}Your 90-day recap{{/if}}
**Preview text:** {{if team_size == 1}}Bring in a teammate — they get 2,000 free credits, so do you.{{else}}Three months of findings, all in one place.{{/if}}

**Body:**
> Hey {{first_name}},
>
> Three months with Digimetrics. {{if team_size == 1}}You've been running this solo the whole time — worth knowing that if you bring a coworker on, they start with 2,000 credits on top of their own free trial, and you get 2,000 the moment they join. No limit on how many times you send the link, up to 10 rewards.
>
> **[Get My Invite Link →]**
> {{else}}Your whole plan — findings, scheduled trends, everything — is sitting there whenever you need it.
>
> **[View My Dashboard →]**
> {{/if}}
>
> — The Digimetrics Team

**CTA:** "Get My Invite Link" → `/invite` (solo) or "View My Dashboard" → `/` (team)

---

## 4. Sequence: REVIVE — Credit/Usage Revival (paying, going quiet)

**Enters:** any paid, active subscription. Runs continuously (not a one-shot funnel like TRIAL/WINBACK) — each email is its own independent trigger.
**Category:** all Product updates.

### REVIVE-01 — Mid-cycle low usage

**Trigger:** 15 days into billing cycle AND `credits_used_pct < 15%`
**Data needed:** `{{first_name}}`, `{{credits_left}}`, `{{credits_total}}`, `{{days_until_reset}}`, three tool suggestions (`{{suggested_tool_1/2/3}}`) — pick from tools never run on this account

**Subject:** {{credits_left}} of your {{credits_total}} credits are just sitting there
**Preview text:** They don't roll over — {{days_until_reset}} days left to use them.

**Body:**
> Hey {{first_name}},
>
> You're halfway through the billing cycle and you've still got {{credits_left}} of {{credits_total}} credits unused. Quick reminder: monthly credits don't roll over, so anything left on reset day is gone.
>
> Three things you haven't tried yet:
>
> - **{{suggested_tool_1}}**
> - **{{suggested_tool_2}}**
> - **{{suggested_tool_3}}**
>
> **[Browse All Tools →]**
>
> — The Digimetrics Team

**CTA:** "Browse All Tools" → `/tools`

---

### REVIVE-02 — Running low, offer a top-up

**Trigger:** `credits_used_pct > 90%` AND `days_until_reset > 5`
**Data needed:** `{{first_name}}`, `{{credits_left}}`, `{{days_until_reset}}`

**Subject:** You're almost out of credits, and reset is {{days_until_reset}} days away
**Preview text:** Top-up credits roll over — they never expire.

**Body:**
> Hey {{first_name}},
>
> You've burned through almost your whole monthly allowance — {{credits_left}} left, with {{days_until_reset}} days until reset. If you don't want to wait, a top-up is one click and, unlike your monthly allowance, top-up credits roll over indefinitely.
>
> **[300 credits — $19]** · **[1,000 credits — $59, best value]** · **[2,500 credits — $145]**
>
> **[Buy Credits →]**
>
> — The Digimetrics Team

**CTA:** "Buy Credits" → `/account` (top-up section)

---

### REVIVE-03 — Two low-usage cycles in a row

**Trigger:** `credits_used_pct < 20%` for two consecutive billing cycles
**Data needed:** `{{first_name}}`, `{{credits_used_pct_avg}}`

**Subject:** Is Digimetrics actually working for you?
**Preview text:** You've used under a fifth of your credits two months running — let's fix that.

**Body:**
> Hey {{first_name}},
>
> You've used less than a fifth of your monthly credits for two cycles in a row. That's usually one of two things: either your north star plan doesn't match what you're actually trying to do, or you haven't found the tools that fit your workflow yet.
>
> Reply to this email and tell us what you're trying to accomplish — a real person will point you at the right starting place, not a canned reply.
>
> **[Reply to This Email]**
>
> — The Digimetrics Team

**CTA:** reply-to (no button; this one is a genuine human-touch email, route to a monitored inbox — flag for whoever owns support routing)

---

### REVIVE-04 — Auto-check-only engagement

**Trigger:** account has ≥14 consecutive days where the *only* credit activity is an automatic recurring check (e.g. AI Readiness Check) — no manually-initiated tool run
**Data needed:** `{{first_name}}`, `{{auto_check_name}}`, `{{auto_check_credits_spent_30d}}`, `{{geo_score_current}}` (or equivalent metric the auto-check tracks)

**Subject:** Your AI Visibility score is at {{geo_score_current}}/100 — here's what's behind it
**Preview text:** You've spent {{auto_check_credits_spent_30d}} credits on autopilot this month — worth a look at what it's finding.

**Body:**
> Hey {{first_name}},
>
> Your {{auto_check_name}} has been quietly running every day — {{auto_check_credits_spent_30d}} credits spent this month keeping your AI Visibility score current. It's sitting at {{geo_score_current}}/100 right now.
>
> That's useful data piling up with nobody looking at it. Worth two minutes to see what's actually driving the score, and whether it's worth acting on.
>
> **[See My AI Visibility Report →]**
>
> — The Digimetrics Team

**CTA:** "See My AI Visibility Report" → `/geo`

---

## 5. Sequence: WINBACK — Lapsed / Cancelled

**Enters:** `subscription_cancelled` event, or `subscription_started = false` AND 14 days of total inactivity after TRIAL-06.
**Exits:** on `subscription_started` (any point, even mid-sequence) — stop immediately.
**Category:** WINBACK-01 is an **Account email** (cancellation confirmation is account status). WINBACK-02/03/04 are Product updates.

### WINBACK-01 — Cancellation confirmation + recap — *Account email*

**Trigger:** `subscription_cancelled`
**Timing:** immediately
**Data needed:** `{{first_name}}`, `{{findings_count_lifetime}}`, `{{tool_runs_count_lifetime}}`, `{{access_end_date}}`

**Subject:** Your subscription's cancelled — here's what you built
**Preview text:** Access continues until {{access_end_date}}. Nothing is deleted.

**Body:**
> Hey {{first_name}},
>
> Confirmed — your subscription is cancelled. You'll keep full access until {{access_end_date}}, and after that your account and everything in it stays intact; it just goes read-only until you resubscribe.
>
> Before you go, the numbers: **{{tool_runs_count_lifetime}} reports** run, **{{findings_count_lifetime}} findings** surfaced. That work doesn't disappear.
>
> **[Resubscribe →]**
>
> If something specific pushed you to cancel, reply and tell us — it goes to a real person, not a survey.
>
> — The Digimetrics Team

**CTA:** "Resubscribe" → `/account`

---

### WINBACK-02 — What changed since you left (+14 days)

**Trigger:** 14 days after cancellation AND not resubscribed
**Data needed:** `{{first_name}}`, `{{top_finding_title}}` (their top unresolved finding at time of cancellation)

**Subject:** {{top_finding_title}} is still unfixed
**Preview text:** Your plan's exactly where you left it.

**Body:**
> Hey {{first_name}},
>
> Two weeks out. **{{top_finding_title}}** was the top thing on your plan when you left, and it's still sitting there unresolved.
>
> Everything picks back up exactly where you left it — no re-onboarding, no lost history.
>
> **[Pick Up Where I Left Off →]**
>
> — The Digimetrics Team

**CTA:** "Pick Up Where I Left Off" → `/account`

---

### WINBACK-03 — Incentive offer (+30 days)

**Trigger:** 30 days after cancellation AND not resubscribed
**Data needed:** `{{first_name}}` — **needs a decision from you**: does this email carry an actual discount? Flagged in Open Questions — don't implement the incentive mechanic until that's confirmed; the copy below is written to be easy to adjust either way.

**Subject:** Come back — {{incentive_line}}
**Preview text:** One click to pick up your plan again.

**Body:**
> Hey {{first_name}},
>
> It's been a month. {{incentive_line}}
>
> **[Reactivate My Account →]**
>
> — The Digimetrics Team

*`{{incentive_line}}` — options depending on your call: "here's 20% off your first month back" / "here's 500 bonus credits on us" / (no incentive) "your data's still here whenever you're ready."*

**CTA:** "Reactivate My Account" → `/account`

---

### WINBACK-04 — Final touch (+90 days)

**Trigger:** 90 days after cancellation AND not resubscribed
**Exit:** last email in this sequence — no further automated emails after this one
**Data needed:** `{{first_name}}`

**Subject:** Last one from us about this
**Preview text:** We'll stop here — but your account's still waiting if you change your mind.

**Body:**
> Hey {{first_name}},
>
> This is the last email in this series — we won't keep nudging after this. Your account and everything in it are still there, and reactivating takes under a minute whenever that's useful.
>
> If it'd help, know someone who should try Digimetrics? Writing a quick testimonial (even now) still earns 2,500 credits toward a future account, once we review it.
>
> **[Reactivate My Account →]**
>
> — The Digimetrics Team

**CTA:** "Reactivate My Account" → `/account`

---

## 6. Data & trigger requirements (for whoever implements this)

Every field/event referenced above, in one place:

**Events needed:**
- `user_signed_up`
- `first_audit_completed`
- `onboarding_step_completed` (with step name/index)
- `subscription_started` (with plan name)
- `subscription_cancelled` (with cancellation date, access-end date)
- `tool_run_completed` (with tool name, credits spent, timestamp)
- `streak_broken` (with prior streak length)
- `credits_reset` (billing cycle boundary)

**Computed/derived fields needed per user, at send time:**
- `credits_left`, `credits_total`, `credits_used_pct`, `days_until_reset`
- `findings_count` (current), `findings_count_lifetime`, `findings_resolved_count` (in a given window)
- `top_finding_title` / `top_finding_detail` / `top_finding_severity` — highest-severity, most-recent open finding
- `tool_runs_count` (windowed: 7d / 14d / 30d / lifetime)
- `streak_days` (current), `streak_days_lost` (on break)
- `health_score_current`, `health_score_delta` — only computable if a Scheduled Run exists with ≥2 completed runs
- `last_login`
- `has_schedule` (bool)
- `team_size` (number of users on the account)
- `auto_check_name`, `auto_check_credits_spent_30d`, `geo_score_current` — for REVIVE-04, tied to whatever background/automatic check is currently running daily (observed on this account as "AI Readiness Check," ~10 credits/day — confirm this is the same for all accounts or account-specific)
- `has_sent_invite` (bool) — whether the account has ever generated/sent an invite link via `/invite`. Powers TRIAL-02B's suppression and doubles as the check ACTIVATE-05 already needs for its solo-vs-team branch.

**Suppression logic needed:**
- Respect the existing `email_preferences.product_updates` toggle (Account & billing → Email preferences) for every email marked "Product updates" above. Account emails always send regardless of this toggle.
- Global 48-hour cooldown between any two emails from this system for the same user, except TRIAL-05 and WINBACK-01.
- Sequence-priority order when multiple would fire same day: TRIAL > WINBACK > ACTIVATE > REVIVE. Within TRIAL specifically, if TRIAL-02B and a numbered TRIAL email (e.g. TRIAL-03) both become eligible the same day, the numbered email wins and TRIAL-02B reschedules to the next eligible day.
- Every sequence needs a hard stop on its exit condition (see each section header) — don't let a user keep receiving TRIAL emails after they've converted, etc.
- TRIAL-02B should not fire at all if `has_sent_invite` is already true by the time its trigger condition is met (they don't need the nudge — they already did it).

---

## 7. Open questions — confirm before building

1. **Free credit amount is inconsistent.** The platform login screen says "200 free credits to start." The marketing site (digimetrics.ai) says "50 credits included." TRIAL-01 through TRIAL-04 use `{{credits_total}}` as a variable for exactly this reason — pick the real number before hardcoding anything, and reconcile the marketing site copy to match.
2. **Is the trial time-boxed, credit-boxed, or both?** I didn't find a visible "trial ends in N days" countdown in the product itself — only the credit balance. The TRIAL sequence above uses days-since-signup as the timing axis (Day 0/1/3/5/6/8), which works either way, but if the real trial is purely credit-gated (ends whenever credits hit 0, could be day 2 or day 20 depending on usage), the day-based timing needs to become credit-threshold-based instead. Confirm which model is real.
3. **WINBACK-03 incentive** — does marketing/finance want to actually discount or gift credits to win back cancelled accounts, or keep it soft (no incentive)? Copy is written to flex either way, but this needs an actual decision before your teammate builds it.
4. **REVIVE-04's automatic daily check** — confirmed real (10 credits/day, "AI Readiness Check," feeding the AI Visibility dashboard card) on the account I checked, but I don't know if this is a default-on feature for every account, or something specific to this one project. Worth confirming since it affects how many accounts REVIVE-04 would actually target.
5. **REVIVE-03's reply-to-a-human email** — needs a real monitored inbox/routing decision before going live; it's the one email in this doc that isn't fully automatable.

---

## Sources
Live-tested against platform.digimetrics.ai on 2026-08-27: home dashboard, /tools (36-tool catalog), /usage (credit ledger), /account (billing, email preferences, testimonial reward), /schedules (Scheduled Runs, trend comparison), /invite (referral mechanics), and the onboarding "north star" plan UI. Voice reference: the "Digital Marketing Superstar" campaign email and digimetrics.ai marketing copy.

## What's included in this package
- This file (the full plan + implementation guide)
- 19 ready-to-wire HTML email templates across `01-trial/`, `02-activate/`, `03-revive/`, `04-winback/` — see §0.5 above for the file map, reusable components, and what still needs a decision before going live.
