Skip to content

Subscriptions — the 96% churn problem

Current state

  • 26 subscriptions created in the lifetime of the store
  • 1 currently active
  • 16 cancelled · 9 on-hold
  • MRR: £51.98 (from that 1 sub)

Root cause

All 26 used a generic "Card" payment method — not branded WooPayments. Strongly suggests an old Stripe integration broke silently at some point, renewals failed, customers couldn't self-serve, and they all churned.

Fix: migrate to Stripe Billing

Why Stripe Billing over Woo Subscriptions:

Capability Woo Subscriptions Stripe Billing
Smart Retries on failed cards
Dunning emails Manual ✅ Built-in
Customer Portal (pause / skip / cancel) ❌ Have to build ✅ Hosted link
Swap-a-fruit before renewal ✅ (via metadata)
Works in a native iOS app ❌ (cookie-coupled)

The Customer Portal alone fixes half the churn: today, to cancel a sub, a customer has to log in to WP and find the right page. With Stripe's portal, it's one link.

Migration plan (Phase 2)

  1. Set up Stripe Billing Products + Prices for the 3 tiers:
    • Tropical Box Subscription — £42.49/week
    • Exotic Box Subscription — £59.99/week
    • Plug-In Box Subscription — £82.49/week
  2. Migrate the 1 active subscription with customer consent (email + £10 credit incentive).
  3. Add a Stripe webhook customer.subscription.* → creates a fresh Woo order on each renewal via the fruitplug-api plugin.
  4. Deactivate Woo Subscriptions (leave installed for a month as rollback).
  5. Win-back campaign to the 25 dead subs: personalised email + £10 Stripe credit redeemed on signup.

PWA UX to support retention

On /account/subscription:

  • Current plan + next charge date
  • Skip next box (one tap)
  • Pause up to 4 weeks (one tap)
  • Swap a fruit (3 days before ship)
  • Cancel (via Stripe Customer Portal link — stays in-app via next/link to the Stripe-hosted URL)

Targets

Metric Today 6-month target
Active subs 1 300
MRR £52 £15,000
Churn rate 96% lifetime <15% monthly