From Vinson · 25 September 2026
This is everything to build in Klaviyo, in order. It assumes every proposal in the email report is approved. If anything changes when we go through it with Austin, I'll send you a new version, and the newest one always wins.
Kevin handles the website, the app and Stripe. Where a build needs something from him, it says so, and the full list is in "Waiting on Kevin" near the end.
Before you start: send me an hours estimate per build (1 to 9 below). You're paid hourly, so I'd like to agree the total before work begins.
Klaviyo credits email with $1,628 in the last 90 days, about 1% of revenue, and most of that is Stripe retrying cards on its own. Nothing in the account has changed since 23 July. Four gaps cost real money:
utm_source=klaviyo&utm_medium=email&utm_campaign=<flow or campaign name>&utm_content=<email number>, so we can see which email drove the visit.| # | Build | Target | Waits on |
|---|---|---|---|
| 1 | Failed payment rebuild | Live before 1 November | Kevin: portal link, Stripe settings |
| 2 | Campaign rules and segment fix | Next week | Nothing |
| 3 | Successfully Paid as the default everywhere | Next week, 10 minutes | Nothing |
| 4 | Abandoned checkout | Draft next week; live when Kevin's event arrives | Kevin: Checkout Abandoned event |
| 5 | Yearly renewal reminder | Live by 15 November | Kevin: renewal date and amount on profiles |
| 6 | Cancel and account-created fixes | Copy fixes next week; branches when Kevin's field arrives | Kevin: Reason Left |
| 7 | Template pass | Next week | Nothing |
| 8 | Housekeeping | Next week | Austin: sender name, "Became paid" drafts |
| 9 | Trial sequence | After 1 to 6 | Vinson's brief; Kevin: plan and price |
Flow: IB // Stripe payment failed -- (Un6Nkh).
Why: Stripe retries a declined card several times and the flow restarts on every retry, so about 3,800 people got 27,157 emails in 90 days. The first email links only to Discord. After 48 hours the flow keeps only insufficient-funds declines and drops everyone else, who recover more often.
Build:
- insufficient funds: "your bank declined the payment; it may go through after payday, or you can use another card";
- expired or lost card: "your card needs updating";
- anything else: the generic version.
Done when: a test profile gets one sequence per 30 days however many retries fail, the button opens the portal, and the flow stops once the payment succeeds.
We measure: past-due subscriptions recovered against lost, monthly. Baseline: 412 recovered, 484 lost, 22 Aug to 21 Sep.
Standing rules for every campaign:
Fix the segment IB // Paid & Cancelled users. It currently matches anyone who "started a paid subscription in the last 90 days and has paid in the last 90 days", which catches 3,213 current customers. Redefine it as: cancelled in the last 90 days, and Successfully Paid zero times in the last 35 days.
Done when: both exclusion segments exist and are saved as the default exclusions for new campaigns (or listed in a note in the account if Klaviyo won't save defaults). The fixed segment returns no active subscribers when checked against a handful of known paying customers.
Set Successfully Paid as the account's default conversion metric and on all six live flows. Ten minutes.
Why: GA4 counted 2,963 checkout starts in 20 days against about 1,100 new paying subscriptions, and Klaviyo has recorded no checkout starts this year. Nobody who leaves the Stripe payment page hears from us.
Build a new flow, triggered by Checkout Abandoned (Kevin sends it when a Stripe checkout expires unpaid, one hour after it opened, and skips anyone already subscribed):
{{ event.recovery_url }}, which reopens the same checkout.Build it as a draft now. It goes live when Kevin's event arrives and a test checkout has triggered it.
Done when: an abandoned test checkout triggers email 1 within about an hour, the button reopens that checkout, and paying stops the flow.
Why: 1,811 subscribers on the early-bird $47.88 yearly plan renew for the first time between November and August: 42 in November, 264 in December, then about 250 a month. Kevin switches on Stripe's built-in reminder now, which covers November. Your Klaviyo version replaces it before the December batch.
Build a date-based flow on the renewal date property Kevin adds to each yearly subscriber's profile:
Done when: a test profile with a renewal date 15 days out gets both emails on the right days with the right amount.
Flows: IB // Cancelled subcription -- (XK844V), IB // Cancelled free trial -- (YAQBAv), IB // Account created (Rwzvi6).
Why: both cancel flows split on "Reason Left", but that field is never filled in, so only the generic email has ever sent. Kevin will write the cancellation survey answer into Reason Left.
Map the branches to the survey answers:
| Survey answer (share of 730) | Branch |
|---|---|
| Did not give me performance (38%) | Existing fix-it email |
| Too expensive (20%) | Existing discount email |
| Not using it enough (19%) | Setup help email |
| Other (17%) | Generic email |
| Bug (5%) | New: support contact email |
"Too complicated" is a branch but not a survey answer. Fold it into setup help.
Copy fixes you can do now:
Done when: a test profile with each Reason Left value gets the right branch.
All 21 templates:
Send me a list of what you changed.
Flow: IB // Stripe Free Trial Activated -- (SDXETb). About 300 trials a month now, so this comes after 1 to 6.
Shape:
I'll send the brief and copy. Wait for it before building.
Agree the exact property and event names with him before you build, so they match.
| What Kevin provides | Unblocks |
|---|---|
| Stripe customer portal link with card update switched on | 1, 5 |
| Stripe: Smart Retries on, retry window as decided, Stripe's failed-payment emails off (on your go-live day), renewal reminder on | 1, 5 |
| In-app banner from payment failure until paid, same button | 1 (runs alongside) |
Checkout Abandoned event: email, plan, price, recovery_url; 1-hour expiry; skip if subscribed | 4 |
| Renewal date and renewal amount on each yearly subscriber's profile | 5 |
Reason Left written to the profile on cancel, using the survey answer | 6 |
| Plan and price on the profile for trial users | 9 |