← Home

Winning back the seven in ten who abandon checkout

As sole designer I took Teachable's most-requested commerce feature from research spike to launch in four months; it has recovered $22M+ in sales for creators since.

The student recovery email beside the pre-filled return-to-checkout screen
Role
Product Designer II
Timeline
Jan–Apr 2023,
From concept to launch
Scale
~1M abandoned checkouts per month
Team
1 PM, 1 EM, 5 Engineers
01 · Context and problem
The company

Teachable turns creators into merchants

Teachable is where creators sell online courses, coaching, and digital downloads, with roughly 78K schools active in a given month. Every sale runs through its checkout.

The problem

A million students a month started checkout and vanished

Creators could not see who abandoned and had no way to reach back out; the revenue just disappeared. Of 160 open feature requests, 60% were commerce related, and high-earning creators named this gap as a reason to leave.

Why now

Every competitor had a version. Teachable had a support queue.

Kajabi, Thinkific, Shopify, and the cart tools all offered some form of recovery, and creators were wiring up Mailchimp and Zapier workarounds that broke. One top seller called it the deciding factor between staying and leaving.

02 · Impact
0 → $22M+

GMV recovered for creators since launch.

0 → 116K+

Abandoned orders recovered.

0 → 20K+

Schools running the feature.

Teachable earns a fee on every recovered sale, and these numbers are still climbing three years after launch.

“I just turned it on and it's been recovering some sales for me. I like the fact that I haven't had to think about it.”

Teachable creator, post-launch research
03 · What shipped
What shipped

A recovery system that runs itself

When a student enters an email at checkout and walks away, Teachable now sends one recovery email an hour later and returns them to a checkout with everything but payment pre-filled. Creators control it from a plan-gated admin page: metrics, template editing, send history. Most never touch it, which is the point.

04 · Key decisions

Turn it on for every school

Eight weeks after launch, opt-in adoption had stalled and Legal was wary of sending email on creators' behalf. My PM and I built the compliance case ourselves and won the argument.

ChoseOpt-in by default for every new and existing school, announced by email.
RejectedStaying opt-out and nudging harder, which protected optics but left recovered revenue on the table.
CostSome creators saw abandon stats before they understood the feature existed; with only a few dozen schools opted out.
The team's immediate post-launch readout put the result at roughly 40% more recovered GMV and 20% more recovered orders.

Reveal addresses only with consent

Recovery emails to students who never opted into marketing looked like a GDPR problem, and I flagged it to Legal before Legal found it. The answer was to split sending from seeing.

ChoseTransactional recovery emails to every abandoner who provided an address at checkout. Full email addresses visible only for students who checked the consent box, otherwise masked.
RejectedConsent-gated sending, as well as exposing all addresses.
CostCreators asked why addresses were hidden, which generated its own support tickets.

Gate by plan, not by gateway

The feature had to earn twice: recovered sales for creators, and plan upgrades for Teachable. My PM and I designed the tiers with the Growth pod's PM as an upgrade ladder.

ChoseFree sees the dollars sitting in abandoned carts. Basic gets 15 metered sends and a locked template. Pro gets unlimited sends, template editing, and student data.
RejectedA separate paid add-on and gating by payment gateway; a quick model showed plan gating was the better bet.
CostBasic's send cap and locked template became immediate complaint themes, a pressure point by design.

I ran the impact-versus-effort session that drew this line.

MVP LAUNCH
  • Abandon tracking at email entry
  • One recovery email after an hour
  • Plan-gated admin page with metrics
  • Template editing on Pro
  • Consent-aware send history
FAST FOLLOWS
  • Coupons in emails (shipped six weeks later)
  • Editable send times
  • Subject-line editing and translation
  • A/B testing
  • Product-level emails
  • Exportable recovery lists
05 · Deep dive

The admin page, three ways

One page under Emails carries the whole feature, and its state is the upgrade pitch: each plan tier sees a different version of the same real estate.

1Metrics row. Emails sent, revenue recovered, clickthrough, and conversion sit above the fold; Basic sees them under an upgrade banner, because the numbers sell the upgrade better than copy does.
2On/off control. Both directions are guarded: turning off requires confirmation, and turning on checks for an active abandoned-cart webhook first, a guardrail I added so students never receive duplicate recovery emails.
Abandoned Cart Emails admin page, Pro tier, active state 1 2 click to expand

Send history that respects consent

Every recovery email lands in the same history as the rest of a school's sends. The recipient column is where the GDPR decision becomes visible.

1Type filter. Abandoned Cart is a filter, not a silo: recovery sends sit beside receipts and drips so creators audit them the way they already audit email.
2Masked recipient column. Students who checked the consent box show full addresses; everyone else is masked to a first character, with a tooltip explaining why. Consent decides visibility, not sending.
Email History filtered to Abandoned Cart, Pro view, with masked recipient column 2 1 click to expand
{{ modalNode }}
06 · Reflection

Open rates beat e-commerce averages and still missed cart-abandonment benchmarks, partly because subject lines couldn't be edited or translated. Run it again and I trade the first fast-follow for subject-line editing and translation. Effort should follow revenue through the flow, not screen count in the admin.

I put my craft into the admin experience: the gating, the metrics, the guardrails. But the artifact doing the converting was a single email, and I treated it like a template.