Hypertune · email

Hypertune email: where it stands and what to change

Live Klaviyo numbers and the changes, in order · 23 September 2026

23 September 2026, Vinson Leow, for Austin. Numbers are live from Klaviyo, measured on payments that went through in Stripe, last 90 days unless stated. Gavin handles all email, paid hourly and ad hoc. Kevin does anything on the website, the app or Stripe.

Summary

What to change, in order

#ChangeWhoStatus
1Rebuild the failed-payment flow: one entry per customer per 30 days, an "Update payment method" button in every email, everyone kept to the end, free-month offer paused.Gavin. Kevin: in-app banner, two Stripe settingsReady. Needs the billing page link
2Extend Stripe's retries from 7 to 14 days. Emails on days 0, 3, 7 and 14.Austin decides, Kevin sets itDecision
3Remind yearly subscribers before they renew. First renewals in November.Kevin, then GavinDecision on route
4Abandoned checkout: two emails when someone leaves the Stripe payment page.Kevin sends the event, Gavin buildsGavin can build the draft now
5Campaign rules: exclude recent payers and anyone inside a flow.GavinReady
6Send the cancellation reason to Klaviyo so the cancel emails branch.KevinReady
7Trial sequence, five emails.Vinson writes, Gavin buildsAfter 1 to 6
8One sender name, 13 old drafts deleted, template fixes.GavinReady

The numbers

FlowEmails, 90 daysClicksPaymentsValueLast 30 days
Payment failed27,15732176$1,24851 payments, $374, 5 clicks
Account created24,1742086$1280
Trial cancelled16,6628410$1163, $23
Trial started10,1432091$100, from 306 emails
Became paid8,483432$100
Subscription cancelled3,737204$1153, $55
Total90,356596199$1,628$453

Klaviyo credits a payment to an email when it follows an open or a click. Apple Mail opens emails automatically, so "credited" does not mean "caused". Clicks are the honest signal: 596 in 90 days across 90,356 emails.

CampaignSentToExcludedClicksPaymentsUnsubscribed
Beta over, email 228 Jun4,355 openers of email 1paid in last 7 days1,239 (28%)11.5%
"Go Hyper for $60/year"8 Sep6,601 in two "cancelled" segmentsnobody1015, $1350.1%

15,487 profiles can be emailed.

1. Failed payments

Today the flow restarts every time Stripe retries a card: 27,157 emails in 90 days to about 3,800 people. The first email links only to Discord. After 48 hours only "insufficient funds" customers continue; everyone else is dropped, although they recover better (2 to 8%, against 1.8%). The free-month offer went to 88 people and produced no payments.

At stake: in the last dashboard window 412 past-due subscriptions recovered and 484 were lost ($3,453 MRR). The rebuild is aimed at the 484.

Six changes to the rebuild agreed on 17 September:

  1. One entry per customer per 30 days.
  2. Every email has one button, "Update payment method", to the billing page.
  3. Everyone stays to the end. The decline reason changes the wording only.
  4. Emails on days 0, 3 and 7 (and 14 if change 2 is approved). The last one says the subscription closes today.
  5. Pause the free-month offer.
  6. Measure on Successfully Paid.

Kevin: an in-app banner from the day a payment fails until it is fixed, same button. In Stripe, Smart Retries on and Stripe's own failed-payment emails off, so customers do not get two sets.

2. Retry window

Stripe cancels a failing subscription after 7 days today. Stripe recommends 8 retries over 2 weeks. Customers with insufficient funds often recover on payday, and a 7-day window gives up on them first. Change: 14 days, with a fourth email on day 14.

3. Yearly renewals

1,811 subscribers on the legacy $47.88 yearly plan renew for the first time between November and June: 43 in November, 330 in December, then 170 to 310 a month. That is about $86,700 of renewals. 352 of them have already set their plan to cancel. Nothing tells anyone a renewal is coming, so the first they hear is the charge, and the ones whose card has expired go straight into failed payments.

Two routes:

Recommended: Stripe's reminder now, the Klaviyo version before the December batch.

4. Abandoned checkout

Klaviyo has recorded no checkout starts since June. GA4 counted 2,963 checkout starts in the 20 days to 21 September against about 1,100 new paying subscriptions. Some are repeat attempts and some are trials that pay later, but the gap is large and nobody gets an email.

Kevin: when a Stripe checkout expires unpaid, send a "Checkout Abandoned" event to Klaviyo with the email, plan, price and Stripe's recovery link. Checkout expiry set to one hour. Skip anyone already subscribed. Gavin: an email after one hour and another the next day, one button to the recovery link, stopping as soon as they pay.

5. Campaign rules

The 8 September campaign went to two segments with no exclusions and Smart Sending off. One segment's definition includes "started a paid subscription in the last 90 days and has paid in the last 90 days", which is a current customer: 3,213 active subscriptions matched. Another 729 recent cancellers were partway through a cancel sequence. Result: 10 clicks, 15 payments, $135. In June the team excluded recent payers.

Standing rules for every campaign: exclude anyone who paid in the last 30 days, exclude anyone who entered a flow in the last 14 days, Smart Sending on, one job per email, one tagged destination. Fix the "Paid & Cancelled users" segment.

6. Cancellations

Both cancel flows branch on "Reason Left" to send a discount (too expensive), setup help (too complicated) or a fix-it email (no improvement). The field is never filled in, so those emails have never sent and everyone gets the generic one. The answers exist: the dashboard shows 730 survey responses last window. Kevin writes the answer to the Klaviyo profile on cancel. Gavin rewrites the first paid-cancel email, which reuses the trial version, so it acknowledges they were a paying customer.

7. Trials

About 300 trials a month now (306 trial-welcome emails in the last 30 days). They get one email. The day-2 and day-4 emails, including "your trial ends soon", are switched off. A five-email sequence is still right, but it reaches a tenth of the people it would have in July, so it comes after items 1 to 6.

8. Housekeeping

Not doing

Decisions for Austin

  1. Approve the failed-payment rebuild, and when Gavin ships it.
  2. The billing page for the button: Stripe's portal or our account page.
  3. Retry window to 14 days.
  4. Renewal reminder: Stripe's email now, Klaviyo version before December.
  5. The campaign rules as standing policy.
  6. Kevin takes the abandoned-checkout event and the cancellation reason.
  7. One sender name. Publish or delete the three "Became paid" drafts.
  8. The one price shown on the last day of the trial.

Build sheet for Gavin

Exit filter on every flow: leave once Successfully Paid has happened since entering. Conversion metric everywhere: Successfully Paid.

#BuildReady?
1Payment failed (Un6Nkh): re-entry once per 30 days; card-update button in every email; decline reason changes copy only; days 0, 3, 7 (14 if approved); pause the free-month A/B.Needs the billing page link
2Campaign policy: exclusions and Smart Sending as in section 5; fix "IB // Paid & Cancelled users".Ready
3Confirm Successfully Paid as the account default and on all six flows.Ready, 10 minutes
4Abandoned checkout: new flow on Checkout Abandoned. Hour 1 "You didn't finish", plan and price, button to {{ event.recovery_url }}. Day 1 explains that changes are reversible and tuned to the customer's hardware, same button. Re-entry once per 7 days.Build as draft; live when Kevin's event arrives
5Renewal reminder (Klaviyo route): date-based flow on the renewal date property, 14 and 3 days before, card-update button.When Kevin syncs the date
6Account created (Rwzvi6) day 8: remove the free month, make it "start your 7-day trial". Subscription cancelled (XK844V) email 1: acknowledge they paid.Ready
7Template pass, 21 templates.Ready
8Delete the 13 draft flows, keeping two shells if wanted. One sender name.Sender name waits on Austin
9Trial started (SDXETb): day 0 download and first optimise; day 1 first win; day 3 restore point and what changes; day 5 game profiles; day 6 "trial ends tomorrow", one price.Waits on Vinson's brief

Waiting on Kevin:

WhatUnblocks
Checkout Abandoned event on unpaid checkout expiry: email, plan, price, recovery_url. Expiry 1 hour, recovery link on, skip if subscribed.Build 4
Reason Left written to the profile on cancel.Cancel-flow branches
In-app banner from payment failure until paid.Build 1
Stripe: Smart Retries on, retry window as decided, Stripe's failed-payment emails off, renewal reminder on.Builds 1 and 5
Renewal date on each yearly subscriber's profile.Build 5