Pinwheel.
All ProjectsHeadless Commerce / Medusa.js / Next.js / Multi-Tenant / WordPress Migration

Multi-Tenant Headless E-Commerce Platform

Blooms at London is a premium London florist with multiple locations across the capital. When their business outgrew WordPress, we rebuilt their entire digital operation from the ground up — a headless Medusa.js platform powering three independent storefronts from a single backend.

Visit Live Site
Blooms at London

What We Did

3Independent storefronts on a single Medusa.js backend
100+Products migrated from WordPress with full inventory data
5.0★Average Google rating across 400+ reviews maintained post-migration
● The Client

Blooms at London

Blooms at London is one of London's most-reviewed independent florists, delivering handcrafted bouquets, wedding flowers, and seasonal arrangements across the capital. With multiple locations and three distinct trading brands — Blooms at London, Epsom Flowers, and On The Hill Flowers — they needed a commerce infrastructure that could scale with them.

Their previous WordPress setup had become a bottleneck. Managing inventory across brands was manual and error-prone, the checkout experience was slow, and adding new product features required developer intervention every time. They came to Pinwheel with a clear brief: rebuild the whole thing, make it fast, and make it manageable without technical staff.

● The Work

What Did We Do?

We started with a full migration off WordPress. The existing product catalogue — over 100 SKUs across multiple categories — was imported into a Medusa.js v2 backend deployed on Railway. From there, we built the architecture that powers all three brands.

Shared inventory, independent sales channels. The core technical challenge was giving three storefronts — Blooms at London, Epsom Flowers, and On The Hill Flowers — complete independence in their product catalogues and pricing, while still drawing from a single shared warehouse and inventory pool. Medusa's native sales channel architecture made this possible: each storefront has its own channel, and products can be published selectively to one, two, or all three, with channel-specific pricing and availability rules.

Custom admin dashboard. We built a bespoke admin interface on top of the Medusa admin SDK, tailored to how the Blooms team actually works. Staff can edit product images and descriptions, manage featured products on each storefront's homepage, set custom lead times by product category, view order management across all three channels from a single screen, and generate VAT-compliant invoices. None of this required developer involvement.

Multi-recipient checkout. A custom checkout extension allows customers to send flowers to multiple recipients in a single transaction — different addresses, different delivery dates, different messages. This was built as a Medusa workflow extension and is unique to the Blooms platform.

Transactional email flows. We built a full order notification lifecycle using Resend: order received, payment confirmed, order dispatched, and a delivery completion trigger that fires a follow-up review request. Each email is templated per-brand with individual styling.

WhatsApp order notifications. The fulfilment team receives instant WhatsApp messages the moment a new order is placed — formatted with the order details, recipient address, and required delivery date — via the WhatsApp Business API. This eliminated the need to check the admin panel manually and reduced missed orders to zero.

Reporting. A custom reporting module surfaces revenue by storefront, order volume trends, and top-performing products, giving the directors visibility across all three brands without needing to export from separate systems.

● Technology Stack
Medusa.js v2Headless commerce backend — orders, products, inventory, sales channels
Next.js (App Router)Three independent storefronts — server-rendered, edge-cached
RailwayBackend hosting — containerised Node.js + PostgreSQL
PostgreSQLPrimary database — orders, customers, products, inventory
ResendTransactional emails — order confirmed, dispatched, delivered
WhatsApp Business APIInstant order notifications to the fulfilment team
StripePayment processing — cards, Apple Pay, Google Pay
● The Results

What Did We Achieve?

The platform consolidated three previously separate WordPress sites and their fragmented operations into a single, coherent system. The Blooms team now manages their entire product catalogue, all three storefronts, and fulfilment from one place.

Order processing time dropped significantly once WhatsApp notifications replaced manual admin-panel checking. The multi-recipient checkout unlocked a new gift-sending use case that had previously been impossible, and it has become one of the platform's most-used features.

All three storefronts load significantly faster than the previous WordPress stack — a direct result of server-rendered Next.js pages with edge caching. Blooms at London has maintained over 400 five-star Google reviews and a 5.0 rating, and the platform continues to scale as the business adds products and explores new sales channels.

● Same Platform

Part of a Shared Commerce Platform

Blooms at London, Epsom Flowers, and On The Hill Flowers are three independent storefronts powered by a single shared Medusa.js backend. Each brand has its own storefront and sales channel while sharing one centralised inventory and fulfilment operation.

● Get In Touch

Want To Know More?

Fill in the form and one of our expert team will be in touch to discuss your needs.

Dedicated Account Manager
Nationwide Account Team
Transparent Prices
● Ready to Build?

Let's Build SomethingRemarkable.

Whether it's a headless commerce platform, a bespoke automation system, or a high-performance web presence — we'd love to hear about it.