Skip to content

Case Study — WooCommerce → Shopify Migration

A Custom WooCommerce Store, Re-platformed to Shopify — Without Losing the Hard Parts

A fully custom, self-hosted WooCommerce store moved onto Shopify — including a multi-carrier shipping engine, hazmat classification and all, rebuilt as a store-exclusive app fast enough to beat Shopify's checkout timeout.

Platform
Woo → Shopify
Shipping app
Store-exclusive
Carrier calls
Parallel cURL
Host
Google Cloud
Cover image case study 2 woo to shopify
Client
Direct-to-consumer eCommerce retailer
Industry
Retail / eCommerce
Year
2024
Services
Shopify migration, Custom Shopify app, Carrier rate integration, Performance engineering

The client had spent years building their store the way serious eCommerce teams used to: WordPress and WooCommerce, self-hosted, every line of code theirs to change. That freedom was also the problem. The business now ran on custom logic — multi-carrier shipping math, hazardous-goods rules, three tiers of customer pricing — and they wanted the operational calm of Shopify without throwing any of it away.

01 — The Challenge

A SaaS Platform That Doesn't Let You Touch the Parts That Matter

Shopify takes a lot of hard problems off your plate. It also takes away the keys. Moving a store that depended on deep custom code meant re-solving each piece inside a platform that owns the checkout, meters your code access, and enforces its own performance rules.

  1. 01

    Code access shrinks to a theme

    WooCommerce gave the client full server and code control. On Shopify you get the theme, App Store apps, and tightly scoped custom apps — everything else runs through APIs, on Shopify's terms.

  2. 02

    The checkout isn't yours

    Cart and checkout flow are controlled by Shopify. Any custom behaviour — pricing, shipping, validation — has to hook in through a supported API rather than a plugin dropped into the codebase.

  3. 03

    A shipping engine, not a shipping setting

    The original store priced every order against multiple third-party carriers — eShipper, KH Ship, UPS, USPS and more — with hazardous-product classification and per-shipment cost adjustments layered on top. None of that maps to Shopify's built-in rates.

  4. 04

    A timeout that fails the sale

    Shopify calls the shipping-rate endpoint with a strict timeout. If the response is slow, the shopper sees “Shipping not available” and the order dies. A faithful port of the old plugin would have been correct and useless.

  5. 05

    Pricing that changes per customer

    Normal customers, Artists and Wholesalers each see different prices, with quantity-based tiers on top — and the tiers had to render as a clean, readable table, not a wall of variants.

02 — Our Approach & the Technical Journey

The Fix Was Concurrency, Not a Bigger Server

The shipping problem looked like a hosting problem. It wasn't. The old plugin asked each carrier for a rate one after another; on Shopify's clock, the sum of those round trips was the whole budget. Speeding up any single call barely moved the number.

  1. Milestone

    Map the plugin before touching it

    We reverse-engineered the WooCommerce shipping plugin end to end — every carrier integration, the hazmat classification rules, the cost adjustments — so the Shopify rebuild matched the real behaviour, not a summary of it.

  2. Dead end

    A straight port on shared hosting

    Re-implementing the same sequential carrier calls behind a Shopify rate endpoint reproduced the exact failure we were hired to remove: on a busy cart, the combined carrier latency blew past Shopify's timeout and checkout showed “Shipping not available.”

  3. Breakthrough

    One store-exclusive app, calls fired in parallel

    We rebuilt the engine as a custom Shopify app exclusive to the client's store, hosted on Google Cloud, and rewrote the rate logic to call every carrier concurrently with PHP cURL multi-handles. Total response time collapsed to roughly the slowest single carrier — comfortably inside Shopify's window.

Before — sequential rate calls

Shopify checkout
ported plugin on shared hostingsum of carrier latency exceeds Shopify's rate-endpoint timeout
Carrier APIs, one after another

After — parallel rate app on GCP

Shopify checkout
parallel cURL multi to every carrierhazmat rules + cost adjustments appliedmerged rates returned within the timeout
Store-exclusive app · Google Cloud

Moving to a faster host helped at the margins; running the carrier calls concurrently instead of serially is what actually put the response back inside Shopify's budget.

03 — The Solution

The Custom Logic Survives — Shopify Just Doesn't Know It's There

The shopper sees a normal Shopify checkout. Behind it, a purpose-built app does the same work the old WooCommerce plugin did, faster and with less to maintain.

Architecture

A store-exclusive Shopify app

Not a public App Store listing — a private app scoped to this one store, so the client keeps the custom behaviour they need without giving up Shopify's managed platform.

Infrastructure

Tuned Google Cloud hosting

The app runs on a fast Google Cloud server configured for Shopify's traffic patterns, keeping the rate endpoint responsive under real checkout load.

Performance

Parallel carrier rating

Every third-party carrier call — eShipper, KH Ship, UPS, USPS and the rest — fires at once via cURL multi-handles, with hazardous-goods classification and shipment cost adjustments applied to the merged result.

Storefront

Role-based & tiered pricing

Normal, Artist and Wholesaler pricing plus quantity breaks, resolved through Shopify's APIs and presented as a clean tiered-pricing table on the product page.

04 — Key Results & Impact

What the Migration Delivered

0

Checkout-killing rate timeouts

Every quote returns inside Shopify's window

1

Store-exclusive Shopify app

Full custom logic without leaving SaaS

4+

Carriers priced in parallel

eShipper, KH Ship, UPS, USPS…

3

Pricing tiers preserved

Normal, Artist, Wholesaler + quantity breaks

05 — Why This Matters

SaaS Limits Are Design Problems, Not Dead Ends

Re-platforming to Shopify is easy to sell and hard to do well when a store runs on custom code. The trap is treating the platform's constraints as walls instead of as a brief.

We kept the client on managed infrastructure, kept their shipping and pricing logic intact, and made the checkout faster than it was on the store they controlled outright — because the real work was picking the right fix (concurrency) over the obvious one (a bigger box).

Shopify Migration · Custom Shopify App · Carrier Rate Integration · Performance Engineering

Building something that has to be reliable?

Talk to a senior engineer about AI-accelerated delivery or a production RAG / agent system. We work with teams across the US, Canada and beyond.

Book a Discovery Call