Shopify experimentation constraints
Most CRO content assumes you control the stack. Shopify stores don’t, and the platform constraints shape what’s actually possible. Knowing the limits saves you from chasing a testing approach that won’t work, and from buying tools that don’t deliver what they promise on Shopify specifically.
The constraints break into a few categories.
Server-side testing is mostly off the table
Section titled “Server-side testing is mostly off the table”Shopify renders most pages from its own templates. You don’t control the server, you can only run code in the browser via the theme and apps. That means feature flags are client-side by default, which has knock-on effects:
- Flicker. Visitors briefly see the control before the variant loads. Hurts the experience and biases the test against slow-loading users.
- No structural content variation. You can swap copy, hide elements, restyle. You can’t easily render a fundamentally different page structure from the same template.
- Checkout is off-limits. Until very recently, the checkout was a black box you couldn’t modify at all. Shopify Plus now allows some checkout extensibility but it’s limited.
The exception is Shopify Plus, where checkout extensions and Shopify Functions give you server-side hooks. Plus is roughly 10x the price of standard Shopify and accessible only to bigger stores.
App-based testing has its own quirks
Section titled “App-based testing has its own quirks”Most Shopify stores end up running A/B tests through apps - Convert, Intelligems, Visually, or similar. Each has tradeoffs:
- They add JS to every page (or every page where they think a test might run), which affects performance.
- They typically run client-side, so the flicker problem persists.
- Sample ratio mismatch detection varies wildly in quality. Some apps surface SRM, most don’t.
- Statistical methods vary - some are doing proper Bayesian inference, others are just plotting running results. Read the documentation before trusting the verdict.
Traffic is the binding constraint
Section titled “Traffic is the binding constraint”Most Shopify stores don’t have enough traffic to support well-powered tests on realistic effect sizes. A store doing 30k monthly sessions with a 2% conversion baseline can detect a 15% relative lift in 4 weeks at α = 0.05, 80% power. It can’t detect 5% lifts at all.
This shapes what to test. Big, high-leverage changes (offer restructuring, hero re-architecture, full PDP redesign) are detectable. Subtle tweaks (button copy variations, microcopy changes) aren’t.
The honest framing for sub-50k-sessions stores is that A/B tests are directional, not statistical. Big winners and big losers will show through. Subtle effects will be lost in the noise no matter how long you run.
What works well on Shopify
Section titled “What works well on Shopify”Despite the constraints, plenty of CRO is shippable:
- Theme-level changes. Most page elements can be A/B tested with reasonable instrumentation.
- Klaviyo and email tests. Email lives outside Shopify’s render path, so testing is straightforward.
- Landing-page tests on dedicated builders. Unbounce, Leadpages, or custom theme pages bypass most Shopify constraints because they render differently.
- App-driven UI tests. Personalisation widgets, reviews displays, sticky bars - these run as overlays and can be A/B tested cleanly.
Where Shopify-specific CRO goes wrong
Section titled “Where Shopify-specific CRO goes wrong”- Trying to run platform-quality experimentation on a 10k-session store. The maths doesn’t support it. Better to make bigger swings and accept the directional nature of the data.
- Buying enterprise testing tools that promise server-side on Plus when you’re not on Plus. The features won’t activate.
- Ignoring the flicker problem. Visitors see control flash before variant loads. Most teams underestimate how much this contaminates results.
- Trying to test checkout when you can’t. On standard Shopify, the checkout is opaque. Stop trying to test the checkout step and test the journey into checkout instead.