D2C E-Commerce Platform
A full headless commerce rebuild for a UK beauty brand from 4.2s page loads to 0.8s, zero to 34% subscription revenue, and 180% total revenue growth in six months.
The Challenge
Shopify was the ceiling and they'd hit it.
A confidential UK-based direct-to-consumer beauty and skincare brand had built their initial store on Shopify. It worked until their product ambitions outgrew the platform. They needed a custom subscription management engine with logic Shopify apps couldn't replicate. They needed a product configurator supporting 50+ combinations. They needed full ownership of their customer data.
On top of these capability gaps, performance was a problem. Page load times averaged 4.2 seconds a direct drag on conversion rates in a market where 1 second of delay costs measurable revenue. Their SEO was suffering from client-side rendering, and their analytics were fragmented across Shopify and third-party apps.
The decision to migrate away from Shopify entirely was made. They needed a partner who could build the full replacement, not just a new theme.
Project Parameters
Industry: E-Commerce / Consumer Goods
Client: Confidential UK-based D2C beauty brand
Timeline: 16 weeks, discovery to launch
Our Approach
Headless commerce with complete data ownership.
We chose a headless architecture from the start. Rather than adopting a third-party headless CMS or a pre-built commerce engine, we built a lightweight custom commerce backend in Node.js giving the client complete control over their data model, pricing logic, and subscription rules without paying ongoing platform fees to any vendor.
Next.js 14 with server-side rendering was selected for the storefront, solving the SEO and performance issues simultaneously. Product pages and category pages are rendered on the server, meaning search engines index the full content and customers experience near-instant page loads via CloudFront's global CDN.
Stripe handled payments and recurring billing, with our custom subscription layer managing upgrade, downgrade, pause, and cancellation flows none of which were possible on their previous platform.
The Solution
Three features that drove the revenue results.
50+ Combination Product Configurator
A custom product configurator lets customers build personalised skincare routines by selecting product variants, sizes, and scent profiles across multiple combinations. The configurator uses real-time inventory checking, dynamic pricing, and saves configurations to customer accounts driving a 23% increase in average order value.
Custom Subscription Engine
Built entirely on Stripe's billing API with a custom management layer, the subscription system supports monthly and quarterly cycles, configurable delivery cadences, easy product swaps between billing periods, and a customer-facing portal for complete self-service management. Subscription revenue went from zero to 34% of total revenue.
Loyalty Points & Analytics Dashboard
A custom loyalty points system rewards purchases, referrals, and product reviews all tracked in the client's own PostgreSQL database, not a third-party app. The paired analytics dashboard surfaces customer lifetime value, cohort retention, and subscription health metrics that simply didn't exist on their previous platform.
The Results
Six months post-launch performance.
0.8s
Page Load Time
Down from 4.2s (81% faster)
180%
Revenue Increase
6 months post-launch
23%
Higher Average Order Value
Driven by product configurator
34%
Subscription Revenue Share
Up from 0% before launch
Tech Stack
A modern headless stack optimized for performance, SEO, and long-term maintainability with no platform lock-in.
Frontend
Next.js 14 · TypeScript · React · Server-Side Rendering · Tailwind CSS · Framer Motion
Backend & Commerce
Custom Headless Commerce Engine · Node.js · Stripe Billing API · PostgreSQL · Redis cache layer
Infrastructure
AWS CloudFront CDN · S3 (media storage) · Vercel (frontend deployment) · GitHub Actions CI/CD
Have a similar challenge?

