Scenario · Subscription online store · Supplements and wellness

From a one-off purchase
to a subscription that renews.

Products people use every day but buy only once. Flexible subscriptions and custom kits that turn one-off orders into recurring customers, with a personal area where they manage everything themselves.

Project typeSubscription online store
SectorSupplements and wellness
Typical timing8–10 weeks
●Scenario
online store · supplements
My Plan
3
Lab tested
★★★★★
Omega-3 Pro
● SUBSCRIPTION
Free shipping · Pause anytime
€29
/month
○ One-time purchase
€36
30d
60d
90d
Start subscription
Recommended bundles

E-commerce scenario — supplements on subscription

Premium products.
A supermarket-level LTV.

The scenario: a young premium supplements brand — certified ingredients, lab-tested, no fillers. It targets mindful consumers willing to spend more on products that work. It has already built a loyal customer base through YouTube content and a science-led newsletter.

The problem is structural: each customer buys once and then disappears. Customer lifetime value (LTV) is barely above the first order, while acquisition cost is high: margins are so tight that each new customer barely covers costs. The answer is turning one-off purchases into recurring subscriptions — but the WooCommerce installed years ago can't do it, and the plugins added are badly configured and cause payment problems at renewal.

It needs a real subscription system, not a patched-up plugin.

"My ideal customer takes supplements every day. They should reorder every month. Instead I have to win them back from scratch every month. Something's wrong."

— The typical problem for brands selling repeat-purchase products
Scenario
Premium supplements brand (example)
Market
Italy (nationwide e-commerce)
Industry
Wellness · Nutraceuticals · B2C
Typical duration
9–10 weeks
Typical starting point
Basic WooCommerce, low LTV, subscriptions that don't work, no bundles
Services
Custom WooCommerce Subscriptions Configurable bundles Custom PHP plugin Client area CRO Email automation

Requirements for an e-commerce with recurring subscriptions

What was
really needed.

Six areas that come out of a funnel analysis, interviews with existing customers and a working session on cohort data — the only way to really see where value is lost over time.

A reliable recurring subscription system

The customer picks the frequency (30, 60 or 90 days) and the system charges and ships automatically. Pausing, changing frequency and cancelling are all self-serve in the customer area — no need to contact support. No friction at renewal.

Configurable bundles with progressive discount

The customer builds their own "kit" by choosing 2, 3 or 4 products with an increasing discount (10%, 15%, 20%). The more products they add, the more they save — and the harder it becomes to cancel, because they've built a personalized routine.

Personalized client area with subscription management

Customers need to see the next renewal, change address and payment method, pause, skip a delivery, add or remove products from the bundle — all without opening a support ticket. WooCommerce's standard customer area isn't enough.

Product pages with scientific content

Customers in this sector are demanding and informed: they read labels, check dosages, look up the studies cited. The product page has to include active ingredients with dosage, linked studies, FAQs on interactions and certifications. Long content, but well organised.

Regulatory compliance: labeling and claims

In Italy and the EU, food supplements have strict rules on what can and cannot be written. Health claims, implicit therapeutic indications, recommended dosages: every text on the website must comply with EC Regulation 1924/2006 and the Italian Ministry of Health guidelines.

Recurring payment management and churn prevention

Automatic payments fail: expired card, insufficient funds, 3DS not completed. Every failed payment is a subscription at risk. It needs a smart retry system with email and SMS notifications, and a win-back sequence for those who cancelled.

WooCommerce Subscriptions technical challenges

Where the real
problems hide.

Subscriptions on WooCommerce are more complex than they look: installing a plugin isn't enough. Every aspect — from recurring payments to stock for subscribers — hides complexity that only shows up in production.

01

WooCommerce Subscriptions plugin: deep customization

WooCommerce Subscriptions is the industry standard — but its customer interface is bare and its default behaviour doesn't cover cases like variable bundles, custom frequencies or "skip a delivery". It needs extending with a custom PHP plugin.

02

Recurring payments and 3DS failures

In Europe, the PSD2 directive requires strong customer authentication (3DS) for online payments. But recurring payments have a "merchant-initiated transaction" exemption — if it's misconfigured, the gateway rejects the renewal. Correctly configuring Stripe with MIT exemption + smart retry is critical and not clearly documented.

03

Configurable bundles with synced inventory

A 3-product monthly subscription bundle has to reduce stock for 3 different items at each renewal. If one runs out, the bundle must handle it gracefully: tell the customer, offer an alternative, not fail silently.

04

Client area UX: hidden complexity

The client area of a subscription service exposes more complex states than any other e-commerce: active, paused, awaiting payment, cancelled, in trial. The UI must make every state understandable and every action possible without ambiguity — for users who aren't comfortable with web portals.

05

Performance with long-form product pages

Product pages with thousands of words of scientific content, ingredient tables, cited studies, FAQ accordions, videos: all of it has to load fast with no layout shifts. The challenge is staying above 85–90 on mobile Lighthouse with that much content.

WordPress e-commerce development process

How I
organise the work.

Nine to ten weeks in four phases. Subscription complexity calls for a step-by-step approach: first the recurring payment engine, then the bundle builder, then the customer area. Each phase delivered and tested before moving on.

Weeks 1–2
Technical audit & architecture

Full audit of the existing WooCommerce: installed plugins (often dozens, many unused), CSS/JS conflicts, slow checkout. Cohort analysis of historical data to measure how many customers are lost. Architecture: WooCommerce Subscriptions + custom PHP plugin + Stripe Billing + an email automation tool.

Delivered: audit report · system architecture · migration plan
Weeks 3–4
Subscription engine + Stripe MIT

WooCommerce Subscriptions with a custom PHP extension for the specific rules (pause, skip delivery, edit bundle). Stripe with merchant-initiated transactions for PSD2 compliance. Dozens of payment scenarios tested: successful renewal, expired card, insufficient funds, incomplete 3DS.

Delivered: live subscriptions · payment scenarios tested
Weeks 5–8
Bundle configurator + custom theme + client area

A custom PHP plugin for the bundle builder with progressive discounts and stock synced across several items. A custom WooCommerce theme with long-form product pages (ingredients, studies, FAQ). A redesigned customer area with visual subscription management. Optimisation: server response under 2 seconds.

Delivered: bundle builder live · theme online · customer area · Lighthouse 85+
Weeks 9–10
Email automation + churn prevention + go-live

Email automation: welcome for new subscribers (5 emails in 14 days), pre-renewal notices, failed-payment recovery (3 attempts in 7 days with SMS), win-back 30 and 60 days after cancellation. Migration of existing subscribers. Controlled go-live with 24-hour monitoring.

Delivered: automations live · subscribers migrated · live site

Technical solution: checkout and subscriptions

How I solve
each problem.

// 01 · Custom PHP plugin for subscriptions

WooCommerce Subscriptions extended for real-world cases

WooCommerce Subscriptions handles the basic subscription cycle. But a brand like this needs rules the plugin doesn't support on its own: bundles with a progressive discount that updates when products change, the option to skip a single delivery without cancelling, a notice 5 days before renewal.

A custom PHP plugin hooks into WooCommerce Subscriptions with actions and filters, without touching the core, so it stays compatible with future updates. The same plugin calculates bundle discounts based on the chosen combination, following rules set from the admin panel without touching code.

The plugin is documented and covered by PHPUnit tests. The owner can change discount rules from the WordPress panel without touching code, and WooCommerce Subscriptions updates won't break anything.

// kit-subscriptions.php — hook pattern // Never modify the core: actions/filters only add_filter( 'woocommerce_subscriptions_renewal_order_items', 'pf_apply_bundle_discount', 10, 2 ); function pf_apply_bundle_discount($items, $subscription) { $bundle_count = pf_count_bundle_products($items); $discount_map = [ 2 => 0.10, 3 => 0.15, 4 => 0.20, ]; if (!isset($discount_map[$bundle_count])) { return $items; } $rate = $discount_map[$bundle_count]; foreach ($items as &$item) { $item['subtotal'] *= (1 - $rate); $item['total'] *= (1 - $rate); } return $items; }
// 02 · Stripe MIT + failed payment recovery

PSD2 compliance without friction: automatic renewal that works

With Stripe's default setup, each renewal may ask for 3DS authentication: if the customer doesn't complete it, the renewal fails — and that happens a lot. The answer is configuring Stripe with merchant-initiated transactions (MIT), which exempt recurring payments from strong authentication when consent was properly collected on the first order.

For payments that fail anyway (expired card, insufficient funds) there's a 3-step sequence: immediate retry, then after 24 hours with an email, then after 72 hours with an SMS. If all fail, the subscription goes "on hold" — not cancelled — and a win-back sequence starts. A realistic goal: recovering more than half of failed payments.

customer area · my subscriptions
CUSTOMER AREA · EXAMPLE
Omega-3 + Vitamin D + Magnesium bundle
● Active · next renewal 15 Jul
€38
/month (−15%)
⏸ Pause
⏭ Skip delivery
✏ Edit bundle
NEXT DELIVERY
Omega-3 Pro · 60 cps
×1
Vitamin D3 · 90 cps
×1
Magnesium Bisglycinate
×1
✓ Free shipping included
// 03 · Bundle configurator + scientific product pages

The personalized kit that raises LTV and cuts churn

The bundle builder is a custom WordPress widget: the customer picks 2 to 4 products and sees the discount and monthly price in real time. Each product shows a line with its main benefit — not the technical name, but the concrete result ("Deeper sleep", "Energy and focus").

Product pages become readable scientific documents: active ingredients with dosage per capsule, links to studies, warnings compliant with EC Regulation 1924/2006, FAQs on drug interactions. The goal is for time on the product page to grow from under a minute to a few minutes — a sign customers really read.

Customers with a 3- or 4-product bundle tend to cancel much less than those with a single product: their lifetime value can be several times higher. That's why the bundle is the heart of the project.

shop · build your kit
BUNDLE BUILDER · EXAMPLE
Omega-3 Pro
Heart and brain
€18
Vitamin D3
Bones and immunity
€14
Magnesium Bisglycinate
Sleep and recovery
€16
3 products · −15% discount
€48
€41
/month
Subscribe to the bundle →

WordPress e-commerce tech stack

Technologies chosen, not imposed.

WooCommerce as the base — the most flexible choice for a subscription system with custom rules. Every custom component is a separate plugin, tested and documented.

WordPress + WooCommerce
PHP 8 (custom plugin)
CSS custom properties + custom theme
Vanilla JavaScript ES6+
WooCommerce Subscriptions
Stripe Billing (MIT / PSD2)
Bundle configurator plugin (custom)
ActiveCampaign (email + SMS)
Churn prevention plugin (custom)
WebP Express + lazy loading
Schema.org Product + FAQPage
PHPUnit (custom plugin test suite)

WooCommerce stores that grew over the years often have dozens of plugins, many unused or duplicated. After the clean-up: under 10 plugins, all needed. Server response time drops a lot. Lighthouse goal: 85+ on mobile, 90+ on desktop — a great result for a WooCommerce store with subscriptions.

Example goals — subscription e-commerce

What to expect
in the first months.

Example figures, not a client's results: realistic goals for a scenario like this, to be measured with WooCommerce analytics, the Stripe dashboard, email automation reports and cohort data.

×3
ACTIVE SUBSCRIPTIONS
goal for the first six months
×2
LIFETIME VALUE
goal, much higher for bundle customers
50%+
PAYMENT RECOVERY
automatic recovery goal
−50%
MONTHLY CHURN RATE
monthly cancellation goal
×3
TIME ON PRODUCT PAGE
goal: people really read
85+
LIGHTHOUSE MOBILE
goal after the plugin clean-up

"Last month subscriptions brought in more than all the new traffic put together." That's where you want to get: no more starting from zero every month.

— The project's business goal

Lessons for a subscription e-commerce

What I bring
to every project like this.

These are the points I always keep in mind in subscription e-commerce.

→

Subscriptions need a payment engine configured with surgical precision. PSD2 and 3DS look like red tape until you see lots of renewals fail for missing authentication. Setting up the MIT exemption on Stripe properly isn't in the basic docs: it takes deep knowledge of payment APIs.

→

A bundle raises customer value far more than a price increase. Moving from a single product to a 3-product bundle raises lifetime value not because customers pay more each month (they pay less, thanks to the discount), but because they cancel much less. The tie to a "personal kit" weighs more than the discount.

→

Dozens of WooCommerce plugins don't make a site: they make a problem. Years of plugins "added to try" bring weight, conflicts and security risks. Cleaning up before development often improves response times more than any code optimisation.

→

Scientific content on product pages doesn't slow sales: it helps them. The instinct that "too much text scares people" is wrong with this audience: they read labels at the supermarket. Giving them studies, dosages and interaction FAQs increases time on page and conversions.

→

Recovering failed payments is worth as much as finding new customers. Every payment recovered automatically is a subscription that isn't lost. The email/SMS sequence is cheap to set up and then runs on its own.

// In short
Typical problem
Customer value close to acquisition cost, renewals failing
Approach
WooCommerce + custom PHP plugin + Stripe MIT + bundle builder
Goals
More subscriptions · higher customer value · fewer cancellations
Platform
WooCommerce · PHP 8 · Stripe Billing
Customer value with a bundle
Several times that of a one-off purchase
Subscriptions ↑ LTV ↑ Cancellations ↓ Custom PHP

Have a similar project in mind?

Tell me about it: we start from goals and priorities, and the first call is free.