NEXSUM_LABS
  1. Home
  2. Work
  3. A 40-SKU home goods retailer replatformed to Shopify without a launch-week outage
Book a call

[ Case study ]

Home & living retailShopify OS 2.0Liquid sectionsShopify MarketsGA4 ecommerce events

A 40-SKU home goods retailer replatformed to Shopify without a launch-week outage

The retailer's aging self-hosted store went down for hours every promotion. Checkout failed silently on mobile Safari for a subset of customers, orders were reconciled by hand each night, and the one developer who understood the platform had left.

CLIENT a 40-SKU home goods retailer — FOCUS Run the old store and the new one in parallel

Shopify DevelopmentEcommerceShopify DevelopmentHome & living retailRepresentative example
Client
a 40-SKU home goods retailer
Industry
Home & living retail
Engagement
10 weeks, phased — systems pod — 2 engineers + commerce lead
Service
Ecommerce / Shopify Development
Headline outcome
Checkout conversion rate, the two months after cutover versus the two months before, like-for-like traffic: 3.1% → 4.6%, read from Order data reconciled against analytics

Representative examplesEvery case study in this library is an illustrative composite of the kind of engagement we deliver — written to show our method and standards, not to name clients.

Where they started

Selling lamps, ceramics, and textiles through one self-hosted web store, the retailer ran on a platform installed before its current staff arrived. Forty products carried long-tail variants — fabric, size, care instructions — that made each record richer than its category suggested. The team of three handled merchandising, packing, and the books, with orders reconciled against the payment gateway by hand each evening. Promotions drove their best weeks, and the holiday quarter carried the year. When the developer who understood the platform left, the store became something the team operated rather than maintained.

What it was costing

The retailer's aging self-hosted store went down for hours every promotion. Checkout failed silently on mobile Safari for a subset of customers, orders were reconciled by hand each night, and the one developer who understood the platform had left.

What they could see

  • Every promotion brought hours of downtime; the two biggest sales days of the prior year each included an outage mid-checkout.
  • A subset of mobile Safari customers reached the payment step, saw a spinner, and never returned — with no error logged anywhere.
  • Each night someone matched the day's orders against gateway emails by hand, a process that slipped during busy weeks.
  • Price or copy edits sat in a queue for days because they required the developer, who had left.

The constraints we worked inside

  • The holiday season was the revenue core; cutover could not touch November or December.
  • Product data included long-tail variants (fabric, size, care instructions) that had to survive migration cleanly.
  • The team of three operated the store; the new setup had to be editable without a developer on call.

What had been tried before

They hired a freelancer for one-off fixes, patching the checkout and adding a caching plugin ahead of each sale.
Each patch moved the failure somewhere new; the Safari bug survived three rounds because the payment app interaction was never tested end to end.
They stood up a second store on a hosted builder over one summer, planning to re-enter the catalog manually.
Variant data defeated manual entry — care instructions and fabric options turned a forty-product job into weeks — and the trial was abandoned before holiday prep.

What we proposed

We proposed rebuilding on Shopify while the legacy store kept trading, then cutting over well before the holiday freeze. The core reasoning: the platform's failures were structural — hosting, checkout codebase, and admin all needed replacing at once — but the risk lived in data, not design. So we ran both stores in parallel with a product-by-product parity check, migrated products, customers, and order history in staged passes behind a redirect map, and kept the legacy stack warm with a tested rollback for two weeks after DNS flipped. Every risky prerequisite was retired early so the cutover itself stayed small.

Just as important is what we ruled out, and why:

  • Staying on the legacy stack and fixing the checkout in placeThe framework was past end-of-life, the Safari bug lived in a payment app whose vendor had folded, and the departed developer's customizations had no documentation.
  • Migrating to another self-hosted platform with a local agency partnerIt reproduced the exact dependency that hurt them — every edit requiring a developer's time — while adding a hosting bill and a new single point of knowledge.

How the work ran

01Run the old store and the new one in parallel

The Shopify build ran on a staging domain with a product-by-product parity check against the legacy catalog, so discrepancies surfaced while both systems were still safe.

02Move data in staged passes

Products, customers, and order history migrated in batches with a redirect map — search equity checked per batch, not at the end.

03Cut over small, with rollback armed

DNS flipped on a quiet Tuesday with the legacy store kept warm for two weeks and a tested rollback plan; the risky prerequisites were retired early so the cutover itself stayed small.

Delivered by the systems pod — 2 engineers + commerce lead over 10 weeks, phased, with working increments reviewed with the client every week.

The stack, and the reasoning

Shopify OS 2.0
Checkout, hosting, and security move to the platform, which directly retired the outage pattern; the admin lets a three-person team edit everything without code.
Liquid sections
Sections give the team drag-and-drop homepage and campaign layouts, so promotion pages no longer wait on a developer's availability.
Shopify Markets
Markets handled currency and duty display natively instead of a bolt-on script, keeping the small volume of international orders from needing custom code.
GA4 ecommerce events
The nightly reconciliation existed because sales data lived only in the gateway; GA4 events let us verify checkout behavior and reconcile from one instrumented source.

What went wrong

Obstacle

The parity check surfaced more discrepancies than expected — dozens of legacy records carried variant data entered freehand over the years, with no consistent naming.

Handled: We built a normalization pass into the migration script, mapped each legacy field to its Shopify equivalent, and re-ran per batch until parity ran clean.

Obstacle

Two weeks before cutover, a parity test order reproduced the mobile Safari failure on the legacy store — a payment app conflict nobody had diagnosed.

Handled: We isolated it with a test gateway and ruled the app out of the new build entirely, which simplified the checkout plan and the app budget.

How we worked together

Cadence
A Tuesday 30-minute call with the owner and the operations lead to review the parity report, plus a written weekly summary of what moved and what was blocked.
Client side
The owner owned scope decisions; the operations lead — the person who reconciled orders nightly — tested every staging release against her real routine.
Decisions
Open questions were logged as rows in the operations lead's reconciliation sheet, each with an owner and a due date, and the owner cleared hers before the Tuesday call so no build week started unresolved.
They provided
Gateway and hosting credentials, export access to the legacy database, and roughly two hours a week of the operations lead's time for testing.

What changed

The headline: checkout conversion rate, the two months after cutover versus the two months before, like-for-like traffic3.1% → 4.6%, read from Order data reconciled against analytics. A second check: minutes of unplanned downtime since cutover at 0.

Promotion weeks no longer start with a war room. The team spends the evening before a sale checking stock and imagery instead of rebooting a server, and the nightly reconciliation has shrunk to glancing at a dashboard. Editing a price or adding a product is a five-minute self-service task, which changed how often the catalog actually gets refreshed. Most telling: when a payment app misbehaved during a sale after cutover, they identified it themselves and swapped it without calling us.

The result was read from Order data reconciled against analytics against the pre-engagement baseline over the stated window, with a guardrail check on minutes of unplanned downtime since cutover. Where platform-reported numbers and business outcomes differ, this record says which layer it is quoting.

What they own now

  • The Shopify store admin, with every team member holding their own login and role.
  • A written runbook covering product edits, sale setup, refund handling, and app management.
  • The redirect map and parity-check script, documented so future catalog changes can be audited the same way.
  • GA4 with ecommerce events verified, plus a saved exploration report the owner checks weekly.
  • A tested rollback note from cutover, kept as the template for any future platform change.

What we would do differently

We would have discovered the mobile-Safari checkout bug on the legacy store first — it turned out to be a payment-app conflict, and knowing that early would have changed the app plan.

EcommerceShopify DevelopmentHome & living retailShopify OS 2.0

Next case study

A beauty brand stopped losing international orders at customs confusion