Skip to main content

Troubleshooting template experiments

Fixes for a variant not showing, control contamination, broken styles, and URL matching.

Written by Shashank Agrawal

Common issues with template experiments and how to resolve them.

The variant template isn't showing

Visit a targeted page and check the address bar for ?view=<suffix>.

  • No ?view= is added. You may be in the Control arm (assignment is deterministic per visitor — try an incognito window, or a different device). Also confirm you're on a page that matches the experiment's target URLs and page type.

  • ?view= is present but the page looks like the default. The suffix probably doesn't exist in your live theme. Shopify silently falls back to the default template when ?view= points to a template it can't find. Confirm templates/<page-type>.<suffix>.json (or .liquid) exists in the live theme, and that the suffix in Cooee matches it exactly. See Managing your variant templates.

  • Bots and automation are excluded. Cooee skips known bots and headless browsers, so they always see the control.

The variant shows on a product reached through a collection

Shopify serves the same product under several URLs — /products/<handle> and /collections/<collection>/products/<handle>. Cooee matches target URLs against the page's canonical path, so a product is matched consistently no matter which route the visitor took. You only need to list the canonical /products/<handle> path — you don't need to add the collection-nested variants.

Control visitors are seeing the variant

This almost always means the alternate template was assigned to a product or collection in Shopify admin. An admin template assignment is served to everyone visiting that page and overrides Cooee's control/variant split.

Fix: In Shopify admin, open the affected product/collection and set its template back to Default. Only configure the alternate template inside Cooee.

The variant looks broken or unstyled

Some themes load CSS/JS or render sections only when the template name is an exact match. On an alternate template the name includes the suffix (e.g. product.daypack), so an exact check fails and styles or scripts don't load.

Look for exact template checks in your global theme files and loosen them:

{% comment %} Breaks on alternate templates {% endcomment %}
{% if template == 'product' %} ... {% endif %}{% comment %} Works everywhere {% endcomment %}
{% if template contains 'product' %} ... {% endif %}
{% comment %} or check the page type {% endcomment %}
{% if request.page_type == 'product' %} ... {% endif %}

Search your theme code for template == in shared files (theme.liquid, layout, global sections) — not inside the templates themselves.

My change is affecting pages outside the test

If a change appears on pages that aren't in the experiment, you're likely editing a shared section (header, footer, or a global section reused across templates) rather than the alternate template itself. Shared sections affect your whole store. To test a global element, use a Theme A/B test instead of a template experiment.

An old ?view= is stuck in the URL

If a visitor bookmarked or shared a variant URL after the experiment ended, Cooee detects the stale parameter and strips it, returning them to the default template. No action is needed on your side.


Still stuck? Reach out to Cooee support with the experiment name and an example URL and we'll take a look.

Did this answer your question?