Skip to content
← Work
01 · AI companion subscription platform · Consumer SaaS

66,000 contacts. Six weeks. A lifecycle system rebuilt around behaviour.

An AI companion subscription platform whose lifecycle system had stopped responding to what users did. Authentication rebuilt, the list cleaned, onboarding moved from a timer to behavioural branching, and every flow given a benchmark. Every figure below says where it comes from.

Role
Lifecycle & Systems Lead (via Perennus)
When
Mar – Apr 2026 · 6 weeks
Stack
Customer.io · SPF / DKIM / DMARC · Gmail Postmaster Tools · Slack
Activation event
companion_creation_submit — a companion created in the product. Every “companion creation” figure on this page is that Customer.io conversion goal.
Client
Not named — no permission on record. Product details withheld.
Editorial cover: From spam to inbox.
28% → 0%Gmail user-reported spam · Postmaster, 18–25 MarScreenshot
1.0% → 8.4%Re-engagement conversion · Customer.ioScreenshot
13.3% → 60.2%Companion creation, before and after the rebuild · Customer.ioScreenshot

“Every report said ‘delivered’. Then I read the contact list, the trigger logic and the inbox-placement data, and found a lifecycle system that wasn’t responding to anything a user did — and was training Gmail to distrust the domain while it wasn’t.”

The situation

An AI companion app on a monthly subscription, with 66,000 contacts in Customer.io. On paper the system was working: campaigns scheduled, an onboarding sequence live, a re-engagement campaign live. Sends went out every day and every report came back green.

The reports measured whether emails were sent. Nobody was measuring whether they arrived, whether any sequence responded to something a user did, or what the users falling out of the funnel were worth.

I was brought in for six weeks, via Perennus, to audit the whole system, rebuild it, and hand it back documented.

Diagnosis
  1. 01
    Deliverability instability

    Gmail’s user-reported spam rate had spiked repeatedly since January, reaching roughly 28% in early February. SPF, DKIM and DMARC also required correction. The account’s deliverability report showed Gmail bounces at 56.3% and Gmail delivered at 43.7%. Every additional send was working against the domain.

  2. 02
    Invalid population

    Roughly a third of the 66,000 contacts — 32% — were invalid addresses the system had been emailing for months. The list was poisoning its own sender reputation, and the campaigns that mattered were paying for it.

  3. 03
    Poorly controlled triggers

    Reading the trigger logic rather than the reports: one misconfigured behavioural entry condition on the re-engagement campaign had queued around 174,000 sends against a 66,000-contact base — nearly three times the list. It appeared in no campaign report.

  4. 04
    Timer-based onboarding

    Onboarding fired on elapsed days, regardless of what the user had done in the product. In the month before the engagement it sent 76,266 emails and converted 13.3% of new users to companion creation. Roughly 87 of every 100 signups never got there.

  5. 05
    Weak behavioural gates

    No step in any sequence checked for an open, a click, a product event or a return. The system couldn’t tell an engaged user from a dead address, so it treated them identically.

Figures in the diagnosis are from the account’s own reports and trigger logic at the time of the audit. Where a screen exists it is shown; where it doesn’t, the figure is a finding, not an exhibit.

Intervention
  1. 01
    Authentication rebuild

    SPF, DKIM and DMARC corrected and rebuilt, so every receiving provider could verify the domain before volume came back.

  2. 02
    List cleanup

    The invalid third suppressed. Sends stopped going to addresses that could only bounce.

  3. 03
    Controlled ramp

    Volume brought back up on a schedule the domain could sustain, instead of re-flagging it on day one. Gmail’s user-reported spam rate read 0% across the eight send days after the fix, 18–25 March.

  4. 04
    Behavioural branching

    Onboarding rebuilt in Customer.io around what the user does — opened? created a companion? sent a message? came back? Each branch gets a different next email, or exits. The path is decided by behaviour, not by how many days have passed.

    The rebuilt onboarding flow in Customer.io, 1 April 2026 — sign-up trigger, then branches on opened? and companion created?. Email previews masked.
    ScreenshotThe rebuilt onboarding flow in Customer.io, 1 April 2026 — sign-up trigger, then branches on opened? and companion created?. Email previews masked. Open full size
  5. 05
    Lifecycle flows

    Five flows: onboarding, re-engagement, gate-hit, paywall conversion and broadcast. The re-engagement rebuild replaced the misconfigured entry condition and cleared the queue.

    The rebuilt re-engagement flow, 6 April 2026 — gated sends, a check for a message sent, a check for a return. Email previews masked.
    ScreenshotThe rebuilt re-engagement flow, 6 April 2026 — gated sends, a check for a message sent, a check for a return. Email previews masked. Open full size
  6. 06
    Measurement framework

    A KPI benchmark for every flow, reported daily in structured Slack updates, so leadership watched the system recover instead of waiting for a deck. On handoff: a launch-readiness roadmap and the SOPs the internal team runs the system from.

Timeline

Six weeks, in order.

Companion creation went from 13.3% to 60.2% across the onboarding rebuild, and both halves are captured. A later reading, taken after the product’s paywall was revised, shows 43.4% — a different stage of the product, not a re-measurement. It sits further down, on its own.

  1. BeforeTo March 2026

    Timer-based onboarding on an unverified domain.

    13.3%companion creationCustomer.io · monthly view, 76,266 sends
  2. InfrastructureMarch 2026

    Authentication rebuilt, list cleaned, volume ramped.

    0%Gmail user-reported spam, 18–25 Mar (peak had been 28%)Gmail Postmaster Tools
  3. Onboarding rebuildBy 1 April 2026

    Behavioural branching live: opened → companion created → next email.

    60.2%companion creation · the primary resultCustomer.io · 9,806 sends
  4. Lifecycle flowsBy 6 April 2026

    Re-engagement rebuilt on a correct entry condition; gate-hit and paywall flows live.

    1.0% → 8.4%re-engagement conversionCustomer.io · 1,459 vs 743 sends
  5. Paywall revisionLater

    The product’s paywall was changed. A later reading of onboarding shows 43.4% on 2,590 sends — a different stage of the product, kept here for completeness, not a re-measurement of the rebuild.

    43.4%companion creation after the paywall revision · not comparableCustomer.io · 2,590 sends
Before13.3%
Customer.io, onboarding — the month before: 76,266 sends, 5.8% opened, 0.8% clicked, 13.3% converted to companion creation.
ScreenshotCustomer.io, onboarding — the month before: 76,266 sends, 5.8% opened, 0.8% clicked, 13.3% converted to companion creation. Open full size
After60.2%
Customer.io, onboarding after the rebuild: 9,806 sends, 13.5% opened, 2.0% clicked, 60.2% converted to companion creation.
ScreenshotCustomer.io, onboarding after the rebuild: 9,806 sends, 13.5% opened, 2.0% clicked, 60.2% converted to companion creation. Open full size
Customer.io, re-engagement — before: 1,459 sends, 8.5% opened, 0.2% clicked, 1.0% converted. After: 743 sends, 27.1%, 6.1%, 8.4%.
ScreenshotCustomer.io, re-engagement — before: 1,459 sends, 8.5% opened, 0.2% clicked, 1.0% converted. After: 743 sends, 27.1%, 6.1%, 8.4%. Open full size
Deliverability

28% of recipients reporting spam, down to none.

The same Gmail Postmaster report, before and after the domain authentication rebuild and list clean. The first chart peaks at 28% in early February. The second runs 18–25 March on an axis that tops out at 4%.

Before28%
Gmail Postmaster Tools — user-reported spam rate, December 2025 to March 2026. The spike in early February is the 28% peak.
ScreenshotGmail Postmaster Tools — user-reported spam rate, December 2025 to March 2026. The spike in early February is the 28% peak. Open full size
After0%
Gmail Postmaster Tools — the same report, 18–25 March 2026. The axis tops out at 4%; the series sits on zero.
ScreenshotGmail Postmaster Tools — the same report, 18–25 March 2026. The axis tops out at 4%; the series sits on zero. Open full size
Afterwards · a different stage

The product’s paywall was revised later in the year. A reading of onboarding taken after that change shows 43.4% on 2,590 sends. It is a different version of the product and a different population — not a re-measurement of the rebuild above, and not comparable to it.

A later reading, after the product’s paywall was revised: 2,590 sends, 20.7% opened, 5.5% clicked, 43.4% converted. The BEFORE/AFTER labels are burned into this export by the tool it came from — it is a different stage of the product, not a re-measurement of the rebuild.
ScreenshotA later reading, after the product’s paywall was revised: 2,590 sends, 20.7% opened, 5.5% clicked, 43.4% converted. The BEFORE/AFTER labels are burned into this export by the tool it came from — it is a different stage of the product, not a re-measurement of the rebuild. Open full size
Result
from 13.3%60.2%Companion creation after the onboarding rebuildCustomer.io — both readings captured.

Deliverability first. On the account’s report, Gmail bounces went from 56.3% to 2.1% — a 96.3% reduction — and delivered from 43.7% to 97.9%. Gmail’s user-reported spam rate, which had peaked at 28%, read 0% for the eight send days after the fix.

With mail arriving and onboarding branching on behaviour, companion creation went from 13.3% to 60.2% of new users across the onboarding rebuild. That is the primary result of the engagement, and both readings are captured — the month before at 76,266 sends, and the rebuild at 9,806.

Re-engagement, running on a correct entry condition for the first time, converted 8.4% against 1.0% before. Opens went 8.5% → 27.1%, clicks 0.2% → 6.1%.

Later, the product’s paywall was revised. A reading of onboarding after that change shows 43.4% companion creation, 20.7% opened and 5.5% clicked, on 2,590 sends. It belongs to a different stage of the product and a different population — not a re-measurement of the rebuild.

Before → after

Every row says where it comes from.

MetricBeforeAfterSource
Companion creation · the onboarding rebuild13.3%60.2%Customer.io — both readings captured
Companion creation · after the paywall revision—43.4%Customer.io · screenshot · different stage
Gmail user-reported spam28% peak0% (18–25 Mar)Postmaster · screenshot
Gmail bounced56.3%2.1%Account deliverability report
Gmail delivered43.7%97.9%Account deliverability report
Re-engagement converted1.0%8.4%Customer.io · screenshot
Re-engagement opened8.5%27.1%Customer.io · screenshot
Re-engagement clicked0.2%6.1%Customer.io · screenshot
Takeaway

A lifecycle system that doesn’t respond to behaviour reports success anyway. The fix wasn’t better emails. It was making the system react to what users actually did — and reading the trigger logic instead of the dashboard.

Every report says the sends went out. Want someone to read the trigger logic?