Pinwheel.
All Articles
Case StudyMedusa.jsHeadless CommerceFloristWordPress Migration

Blooms at London: How a London Florist Went From 3 Broken WordPress Sites to One Headless Platform

Three storefronts, one warehouse, one fulfilment team — and three separate WordPress dashboards causing daily chaos. This is how Blooms at London rebuilt their entire digital operation on Medusa.js.

PinwheelEngineering Team, Pinwheel Media Ltd
·1 June 2026·5 min read

Blooms at London is one of London's most-reviewed independent florists. Three trading brands — Blooms at London, Epsom Flowers, and On The Hill Flowers — each with their own customer base, their own product range, and their own identity. All three share a single warehouse and a single fulfilment team.

When they came to us, they were managing this operation across three separate WordPress sites. What happened next is a good case study for any florist business considering a platform change.

The Problem

Three WordPress installs sounds manageable until you're running them day-to-day.

Inventory was a guessing game. Stock lived in three separate WooCommerce databases with no connection between them. When a product sold out on one site, someone had to manually update the other two. That meant phone calls, spreadsheets, and — frequently — overselling.

The fulfilment team checked three dashboards. Every morning, the team opened three browsers, logged into three admin panels, and manually compiled a single picking list. That process took time every day it happened, and introduced errors every time a new order arrived mid-process and got missed.

Adding anything required a developer. Want to change how gift messages appear at checkout? That's a plugin. Want to restrict same-day delivery to certain postcodes? That's custom PHP. Want to set different lead times for wedding bouquets versus everyday arrangements? Build something from scratch. The team had no autonomy over their own platform.

Pages were slow. WordPress + WooCommerce on shared hosting, with product images optimised for 2019 screens. Core Web Vitals failed on mobile. At peak periods — Valentine's Day, Mother's Day — load times got worse.

What We Built

We replaced all three WordPress sites with a single Medusa.js v2 backend deployed on Railway, powering three independent Next.js storefronts. Same URL, same brand, completely rebuilt underneath.

One Backend, Three Brands

The core of the platform is Medusa's native sales channel architecture. Each storefront has its own channel. A product can be published to one, two, or all three storefronts with its own pricing and availability per channel. When an item sells on any of the three sites, stock is deducted from a single shared inventory pool.

The Blooms team now has one admin panel. One place to add products, update prices, check stock, and view every order across all three brands simultaneously.

WhatsApp Order Notifications

The moment a new order is placed on any of the three storefronts, the fulfilment team receives a WhatsApp message with everything they need: the customer name, the delivery address, the ordered items, the requested delivery date, and any gift message.

No more checking dashboards. No more missed orders. No more morning compilation ritual.

The notification fires through a Medusa subscriber hook — a small piece of server-side code that listens for the order.placed event and formats a message via the WhatsApp Business API. The team receives it on their phones within seconds.

Multi-Recipient Checkout

One of Blooms' most popular use cases — especially at peak gifting periods — is customers sending flowers to multiple recipients in a single order. Different addresses, different delivery dates, different cards.

WooCommerce couldn't do this. Customers had to place multiple separate orders, each with its own checkout. It was friction that cost sales.

We built a custom checkout extension in Medusa that allows a single order to contain multiple delivery groups. Customers add items to each group, specify a delivery address and date per group, write individual gift messages, and pay once. The fulfilment team receives all groups as line items in a single structured order.

This feature alone has become one of the platform's most-used capabilities.

Transactional Email Flows

We built a full order lifecycle using Resend: order received, payment confirmed, order dispatched, and a delivery follow-up that triggers a review request. Each email is branded per storefront — Blooms at London receives Blooms-branded emails; Epsom Flowers customers receive Epsom-branded ones — despite all three running through the same backend.

Custom Admin Dashboard

Medusa ships with a standard admin panel. We extended it with a custom interface built for how the Blooms team actually works:

  • Edit product images and descriptions without touching code
  • Manage which products are featured on each storefront's homepage
  • Set custom lead times by product category (same-day, next-day, 5-day for weddings)
  • View all orders across all three channels in a single queue
  • Generate VAT-compliant invoices for business customers

None of this requires developer involvement. The team can do all of it themselves.

The Results

Operational complexity collapsed. Managing three storefronts used to mean three admin panels, three inventory reconciliation processes, and three sets of order notifications. It now means one.

Order processing is faster. WhatsApp notifications eliminated the daily dashboard-checking ritual and the errors that came with it. The team picks and packs from a single, real-time order queue.

The multi-recipient checkout unlocked a new revenue stream. Before this feature existed, customers placing multi-address gift orders had to make multiple transactions. They frequently didn't bother. Now they do — and it has become one of the platform's most-used features, particularly around Valentine's Day and Mother's Day.

Performance improved across all three sites. Server-rendered Next.js pages with edge caching load significantly faster than the previous WordPress stack, particularly on mobile. All three storefronts now pass Core Web Vitals.

The platform has scaled without drama. Since going live, the Blooms team has added products, expanded delivery areas, and adjusted pricing across all three storefronts — without a single developer call.


Blooms at London has maintained a 5.0-star rating across more than 400 Google reviews since the migration. The platform handles peak periods — Valentine's Day, Mother's Day — without the performance degradation they experienced on WordPress.

Is Your Florist Business in a Similar Position?

The problems Blooms faced before this build are common across the florist industry. If you're managing inventory manually, relying on a developer for every platform change, or losing peak-period sales to slow pages and checkout friction — the problem isn't your team. It's the platform.

If you're on Florist Touch, Florist Pro, or Florist Window and hitting similar ceilings, see what we built specifically for florists on legacy platforms — or run your numbers through our ROI calculator to see what switching would cost and save.

For a technical deep-dive on the Medusa.js architecture that powers this platform, read Building a Multi-Tenant Headless E-Commerce Platform on Medusa.js.

About the author

Pinwheel

Engineering Team, Pinwheel Media Ltd

Pinwheel is a UK web design and engineering agency specialising in headless e-commerce, bespoke website builds, and business automation systems. Based in Surrey, we've delivered 100+ projects for UK businesses since 2015 — from local service websites to complex multi-tenant commerce platforms.

● 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.