# Welcome to Shoplift

Shoplift is a next-generation A/B testing and conversion optimization platform for high-growth Shopify brands. Shoplift is **completely no-code** and **seamlessly integrates with your Shopify store**, so you can run high-converting tests in minutes.

## How it works

{% embed url="<https://www.loom.com/share/d9659ab6aba34cca8c988718eebd1f28?sid=af8a7d24-5ac8-488c-84e8-3c98453c2aa3>" %}
How Shoplift Works
{% endembed %}

## Explore our docs

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>FAQs</strong></td><td>Find the answers to frequently asked questions</td><td><a href="/files/8V5lI28BxmBeRrlDiTxW">/files/8V5lI28BxmBeRrlDiTxW</a></td><td></td><td><a href="/pages/NJeL40Njoy0BbMcKnoCq">/pages/NJeL40Njoy0BbMcKnoCq</a></td></tr><tr><td><strong>Quickstart</strong></td><td>Get up and running by launching your first test</td><td><a href="/files/a0ZNkEGgVR1lLLEGCkRD">/files/a0ZNkEGgVR1lLLEGCkRD</a></td><td></td><td><a href="/pages/7Nujhp0y0aheFK02rDya">/pages/7Nujhp0y0aheFK02rDya</a></td></tr><tr><td><strong>What to Test</strong></td><td>Get ideas for high-impact tests to run </td><td><a href="/files/p1IiSemX5UMNBEvyEgfK">/files/p1IiSemX5UMNBEvyEgfK</a></td><td></td><td><a href="/pages/RkCTlkyIeBnKFYFYKrUH">/pages/RkCTlkyIeBnKFYFYKrUH</a></td></tr><tr><td><strong>Lift Assist™</strong></td><td>Explore our smart test recommendation feature</td><td><a href="/files/4e7TQzu7nzowPV5mPM0o">/files/4e7TQzu7nzowPV5mPM0o</a></td><td></td><td><a href="/pages/fUoHrxrGXadIDZtAPv9G">/pages/fUoHrxrGXadIDZtAPv9G</a></td></tr><tr><td><strong>Template Testing</strong></td><td>Learn how to run tests on targeted experiences with template testing</td><td><a href="/files/lkQzsGmPBdOwQoX7Sy1W">/files/lkQzsGmPBdOwQoX7Sy1W</a></td><td></td><td><a href="/pages/5gBKTrPLqfVjcXFEV527">/pages/5gBKTrPLqfVjcXFEV527</a></td></tr><tr><td><strong>Theme Testing</strong></td><td>Learn how to run sitewide tests with theme testing</td><td><a href="/files/occJ19lQX3BiIqjvYxxV">/files/occJ19lQX3BiIqjvYxxV</a></td><td></td><td><a href="/pages/L5jqYhggBxBiqV8OueI9">/pages/L5jqYhggBxBiqV8OueI9</a></td></tr><tr><td><strong>Audience Targeting</strong></td><td>Segment your tests for different cohorts of website visitors</td><td><a href="/files/8DnJsDCdCMytaKIKnXxY">/files/8DnJsDCdCMytaKIKnXxY</a></td><td></td><td><a href="/pages/uypLccNHEKs4h4HRtprZ">/pages/uypLccNHEKs4h4HRtprZ</a></td></tr><tr><td><strong>Tracking</strong></td><td>Learn how Shoplift tracks conversions and key metrics on your store</td><td><a href="/files/SzFUtTbjESgnchFicdfJ">/files/SzFUtTbjESgnchFicdfJ</a></td><td></td><td><a href="/pages/wqZPxHFHaQFPj8JdJnvt">/pages/wqZPxHFHaQFPj8JdJnvt</a></td></tr><tr><td><strong>Reports</strong></td><td>Explore our robust, out-of-the-box reporting features</td><td><a href="/files/dEvd204vEsmp9FBl9tjz">/files/dEvd204vEsmp9FBl9tjz</a></td><td></td><td><a href="/pages/bzuZL74Vqm35bpuXxaIN">/pages/bzuZL74Vqm35bpuXxaIN</a></td></tr><tr><td><strong>Integrations</strong></td><td>Connect supported tools to enhance your testing capabilities</td><td><a href="/files/RrOzGf2Z7uYTG75RENCE">/files/RrOzGf2Z7uYTG75RENCE</a></td><td></td><td><a href="/pages/IBrjZECucyX0wt8EGJ4r">/pages/IBrjZECucyX0wt8EGJ4r</a></td></tr><tr><td><strong>Plans and Billing</strong></td><td>Find the best subscription plan for your store</td><td><a href="/files/bz86d6dRUKNTzLP1wmb2">/files/bz86d6dRUKNTzLP1wmb2</a></td><td></td><td><a href="/pages/N47X7106NO2XbEAZucsJ">/pages/N47X7106NO2XbEAZucsJ</a></td></tr><tr><td><strong>Users and Permissions</strong></td><td>Manage account access for members of your team</td><td><a href="/files/PsnYYh4qgDnp6bUleNXJ">/files/PsnYYh4qgDnp6bUleNXJ</a></td><td></td><td><a href="/pages/X6OJ9gFC92w1wgagvNKc">/pages/X6OJ9gFC92w1wgagvNKc</a></td></tr><tr><td><strong>Privacy</strong></td><td>Learn how Shoplift collects and handles your store data</td><td><a href="/files/Lp9Rseo92t1Pr2LeHCP7">/files/Lp9Rseo92t1Pr2LeHCP7</a></td><td></td><td><a href="/pages/E5fPPtZ0ursRrpawGL6V">/pages/E5fPPtZ0ursRrpawGL6V</a></td></tr></tbody></table>


# Quickstart

Getting started with Shoplift is incredibly easy, and creating and launching your first test only takes a few minutes. Use our guides below to get up and running in no time.

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><strong>Install App</strong></td><td>Start by installing Shoplift on the Shopify App Store</td><td></td><td><a href="/pages/7Nujhp0y0aheFK02rDya">/pages/7Nujhp0y0aheFK02rDya</a></td><td><a href="/files/rYZK4ZACxjoMsFnGVYzl">/files/rYZK4ZACxjoMsFnGVYzl</a></td></tr><tr><td><strong>Create a Test</strong></td><td>Learn how to set up and launch your first test</td><td></td><td><a href="/pages/isUZDDR2F1eJ84ZPB5Nc">/pages/isUZDDR2F1eJ84ZPB5Nc</a></td><td><a href="/files/fH02cbqNQDctxcfTziGF">/files/fH02cbqNQDctxcfTziGF</a></td></tr><tr><td><strong>Edit Your Variant</strong></td><td>Customize your test using the Shopify Editor</td><td></td><td><a href="/pages/iiEsABlznFpYOwI5H5gs">/pages/iiEsABlznFpYOwI5H5gs</a></td><td><a href="/files/0g6JggqK2CdKhJtasZ5s">/files/0g6JggqK2CdKhJtasZ5s</a></td></tr><tr><td><strong>Launch Your Test</strong></td><td>Review your edits and begin testing on your site</td><td></td><td><a href="/pages/A4d1a9L0N5AVE8buyuBY">/pages/A4d1a9L0N5AVE8buyuBY</a></td><td><a href="/files/M53vESipUbvH66J2XLgv">/files/M53vESipUbvH66J2XLgv</a></td></tr><tr><td><strong>FAQs</strong></td><td>Get the answers to frequently asked questions</td><td></td><td><a href="/pages/NJeL40Njoy0BbMcKnoCq">/pages/NJeL40Njoy0BbMcKnoCq</a></td><td><a href="/files/8V5lI28BxmBeRrlDiTxW">/files/8V5lI28BxmBeRrlDiTxW</a></td></tr></tbody></table>

{% hint style="info" %}
If you need help conducting tests with Shoplift, our [support team](broken://pages/BZDv9d1utwcXtufWrzA4) is always available to assist. Reach out from within the app using the live chat widget in the bottom right of the screen, or email [help@shoplift.ai ](mailto:help@shoplift.ai)to get in touch.
{% endhint %}


# Install Shoplift

Installing Shoplift is effortless and fully automated. Follow the steps below to get set up in just a few minutes.

### 1. Install Shoplift through the Shopify App Store

Simply navigate to the [Shopify App Store listing](https://apps.shopify.com/shoplift) and install the app. If you have more than one store, select the store for which you want to install Shoplift from the dropdown list.

If you are unable to install Shoplift, make sure you are accessing the Shopify App Store from a user account that has permissions to authorize and manage apps.

{% hint style="info" %}
Shoplift is a [Shopify Plus Certified App](https://www.shoplift.ai/post/shoplift-joins-the-shopify-plus-certified-app-program).
{% endhint %}

### 2. Approve app permissions

During installation, you'll be asked to give Shoplift permission to read data about your store. Shoplift needs these permissions for testing to create variants of your theme templates and track various performance metrics, like orders and revenue. For more information on how your data is used, view our [Terms of Service](https://www.shoplift.ai/terms-of-service).

{% hint style="info" %}
**Why does Shoplift require access to customer data?**

We only collect the visitor info necessary to run A/B tests and associated analytics (location, device info, etc.). Shopify bundles personal identifiable information (PII) into the sharing rules, even though we don't collect it. A full breakdown of what data we collect can be found in our [privacy policy](https://www.shoplift.ai/privacy-policy).
{% endhint %}

### 3. Select your plan

All Shoplift plans come with a **14-day free trial**. Our plans are constructed to affordably scale with your business and are based on both provided features and your total website traffic. Once you've installed Shoplift, pick the plan that fits your business needs. For more information on the details of each subscription tier, visit our [pricing page](https://www.shoplift.ai/pricing).&#x20;

{% hint style="info" %}
**FAQ: How can I make sure I pick the right number of total monthly website visitors?**

The best way is to check your **Visitors over time** report in Shopify. Below is a 1-minute explainer on how to do this.
{% endhint %}

{% embed url="<https://www.loom.com/share/be7b484c7ad94b079e91180d9af8b25d>" %}

{% hint style="info" %}
For larger merchants, we also have custom plans available. If you would like to inquire about a custom plan, contact <sales@shoplift.ai>.
{% endhint %}

### 4. Approve your 14-day free trial

Once you've selected a plan, you'll be briefly redirected back to Shopify to approve billing charges. All plans come with a 14-day free trial, and you won't be charged until the end of your trial. If for any reason you are unsatisfied with the app, you can uninstall Shoplift at any point during your trial without being charged.&#x20;

At the end of your trial, your account will transition to the plan you selected. You can then stay on your initial plan or upgrade or downgrade at any time.

### 5. Start testing!

Shoplift is completely no-code. Once you've installed the app and approved billing charges, you're ready to test.

{% hint style="info" %}
If you need help conducting tests with Shoplift, our [support team](broken://pages/BZDv9d1utwcXtufWrzA4) is always available to assist. Reach out from within the app using the live chat widget in the bottom right of the screen, or email [help@shoplift.ai ](mailto:help@shoplift.ai)to get in touch.
{% endhint %}


# Choose the Right Test Type

Shoplift offers five test types, each built for a different kind of change on your store.

### Test types

<table><thead><tr><th width="172.91796875">Test Type</th><th width="184.88671875">Purpose</th><th width="383.5078125">Good for</th></tr></thead><tbody><tr><td>Template test</td><td>Test Shopify theme templates</td><td>Testing changes to specific pages or groups of pages. Testing your homepage, collection pages, and product pages</td></tr><tr><td>Theme test</td><td>Test Shopify themes</td><td>Testing changes to global elements. Testing your navigation menus, cart experience, or other site-wide functionality</td></tr><tr><td>URL redirect test</td><td>Test Shopify pages</td><td>Testing two pages against each other, like landing pages against other pages</td></tr><tr><td>Price test</td><td>Test product prices</td><td>Testing your product prices, including price and compare-at price</td></tr><tr><td>JavaScript API test</td><td>Test with custom code</td><td>Testing anything you can imagine, using Shoplift as the experimentation engine to allocate traffic between experiences and measure results</td></tr></tbody></table>

### Details on each type

#### Template test

A template test changes the layout of a specific page type. You edit the variant template in Shopify's Theme Editor (no code required), and Shoplift shows the variant to whatever percentage of your visitors you specified in the test who are on those pages. The rest of your store stays untouched.

<figure><img src="/files/kIwaYzz7LAU9H3xJnFOF" alt=""><figcaption></figcaption></figure>

**Best for**: product page layouts, collection page designs, homepage sections, or any change scoped to a single page type.

**Example**: You want to test whether moving customer reviews above the fold on your product page increases conversions. Create a template test, rearrange the sections in the Theme Editor, and launch.

Things to know:

* Template tests target the collections, products, and pages that are assigned to them in Shopify. This means you can target a single product, a group of products, or all products by changing which products are assigned to your templates before the test. For a detailed guide on how to do this, see [Testing Individual Pages](/learn/guides/guide-testing-individual-pages)
* You can test certain templates against other templates. For a detailed guide on how to do this, see [Testing Different Template Types](/learn/guides/guide-testing-different-template-types)
* Multiple template tests can run at the same time, as long as they target different page types.
* Template tests don't affect your header, footer, or navigation. Those are global elements and require a theme test.

#### Theme test

A theme test compares your entire live theme against a modified copy. Visitors in the variant group see a completely different theme, so every page, section, and setting can differ. This makes theme tests the right choice for large-scale, store-wide changes.

<figure><img src="/files/vHjHdqojUOV7yPcNrQS9" alt=""><figcaption></figcaption></figure>

**Best for**: full store redesigns, testing a new theme, changing the navigation or header, switching from a page cart to a drawer cart, updating global colors or fonts, or testing a [Theme App Embed](https://help.shopify.com/en/manual/online-store/themes/customizing-themes/apps).

**Example**: You're considering switching from Dawn to a premium theme. Duplicate your live theme, apply the new theme's changes, and run a theme test to compare performance before committing.

#### Price test

A price test measures how pricing affects conversions and revenue per visitor. Shoplift updates the price visitors see on product pages, collection pages, and in the cart, and ensures the correct price carries through to checkout.

<figure><img src="/files/TQzAGSC3bQ1xQkqBLKAF" alt=""><figcaption></figcaption></figure>

**Best for**: testing higher or lower price points, experimenting with compare-at (strikethrough) pricing, or measuring whether a price change improves overall revenue.

**Example**: You want to know if lowering a product from $49.99 to $39.99 drives enough extra orders to offset the lower price. Set up a price test and let the data decide.

Things to know:

* Price tests are store-wide: the test price appears everywhere the product shows up on your store.&#x20;
* You can show different prices to different customer segments by running multiple price tests and leveraging Audience targeting.
* Payment installment messaging (Shop Pay, Afterpay, Klarna) is automatically recalculated to match the test price.
* Visitors can only participate in one price test at a time, but you can run multiple price test simultaneously if you have enough traffic.

{% hint style="info" %}
Price testing has legal and ethical considerations depending on your region. Make sure you understand the regulations that apply to your market before running price tests.
{% endhint %}

#### URL redirect test

A URL redirect test sends visitors from one URL to a completely different page. Instead of modifying a page in place, you're comparing two entirely separate pages.

<figure><img src="/files/oyBWi7Scr1zEcsbNnXCx" alt=""><figcaption></figcaption></figure>

**Best for**: comparing different landing pages for the same campaign, testing whether visitors convert better on a custom page vs. a standard collection page, or A/B testing pages built with different page builders.

**Example**: You're running a Facebook ad campaign and want to test whether a curated landing page (`/pages/summer-sale`) outperforms your standard collection page (`/collections/summer`). Set up a URL redirect test pointing traffic from the collection to the landing page.

Things to know:

* The destination page must already exist in Shopify. Shoplift handles the redirect, not the page creation.
* Make sure the variant URL doesn't match the entry URL pattern, or visitors will get stuck in a redirect loop. For example, if the entry is `/collections/*`, the variant should be a `/pages/` URL, not another collection URL.
* Multiple URL redirect tests on different pages can run at the same time.

#### JavaScript API test

A JavaScript API test uses custom JavaScript (written by your developers) in your theme code to test changes that other test types can't. There are two sub-types:

* **Automatic API test**: runs automatically on every page load. Good for site-wide changes like adding a notification bar or modifying a global UI element.
* **Manual API test**: runs only when a developer triggers it via Shoplift's JavaScript API. Good for custom trigger logic or complex entry conditions (for example, firing a test only after a visitor scrolls 50% down the page).

**Best for**: custom behavior changes, third-party integration experiments, or scenarios where no other test type fits.

**Example**: You want to test whether adding a sticky add-to-cart bar on mobile increases conversions. A developer writes a short script that adds the bar, and you run it as an automatic API test.

{% hint style="info" %}
JavaScript API tests require coding knowledge. If you're not comfortable with JavaScript, template tests and theme tests can handle most changes through the Shopify Theme Editor with no code required.
{% endhint %}

### Decision table

{% hint style="info" %}
**Quick Shortcut**

If the change only affects one type of page (like product pages), it's probably a template test.&#x20;

If the change shows up on every page (like the header or footer), it's a theme test.&#x20;

Some changes blur the line. For example, changing a button color on your product page could be a template test (if you're editing the template's sections) or a theme test (if the color is controlled by a global theme setting). Check where the setting lives in Shopify's Theme Editor to decide.
{% endhint %}

| What you want to change                                                     | Where it lives in Shopify | Test type               |
| --------------------------------------------------------------------------- | ------------------------- | ----------------------- |
| Homepage layout, sections, or content                                       | Homepage template         | **Template test**       |
| Collection page layout, sections, or content                                | Collection template       | **Template test**       |
| Product page layout, sections, or content                                   | Product template          | **Template test**       |
| A specific page (About, Contact, landing page) layout, sections, or content | Page template             | **Template test**       |
| Blog or article layout, sections, or content                                | Blog/article template     | **Template test**       |
| Navigation, header, or announcement bar                                     | Theme layout (global)     | **Theme test**          |
| Footer layout or content                                                    | Theme layout (global)     | **Theme test**          |
| Global colors, fonts, or spacing                                            | Theme settings (global)   | **Theme test**          |
| Cart type (page cart vs. drawer cart)                                       | Theme settings (global)   | **Theme test**          |
| Product pricing or compare-at prices                                        | Displayed prices          | **Price test**          |
| An entirely different landing page or URL                                   | Different page/URL        | **URL redirect test**   |
| Custom behavior and content via JavaScript                                  | Custom code in your theme | **JavaScript API test** |


# Create Your First Test

Got a great idea for your site? Creating and launching your first test is incredibly easy and only takes a few minutes. We'll walk you through each step, from draft to launch, below.

{% hint style="info" %}
Not sure what test type to pick? See [Choose the Right Test Type](/get-started/quickstart/choose-the-right-test-type)
{% endhint %}

### Create a test

<figure><img src="/files/p4Ksp8YNns2UoTgpTCMr" alt=""><figcaption><p>Test draft page</p></figcaption></figure>

To get started, click "Create a test" on the Tests homepage. This brings you into the Test Draft page, where you can choose which part of your store to test and which shoppers to include in the test.&#x20;

### Select your Original (A)

Once you've decided on a type of test, you'll be prompted to select your Original (A). This is the unedited template/theme or URL that you would like to test a change against. In other words, it is the current location on your site where your test will take place.&#x20;

#### For template tests:

<figure><img src="/files/dVio7731Ui3JX2We6UGK" alt=""><figcaption><p>Select your original template</p></figcaption></figure>

Template testing allows you to test homepages, landing pages, product pages, and other template types against one another. Selecting this option opens the template drawer, containing every template in your live theme. Like in Shopify, templates from your theme are categorized by type: Homepage, Collection pages, Product pages, Landing pages, etc.

Template tests will run on every page assigned to your original template to maintain a consistent shopping experience for visitors participating in your tests. Therefore, if you launch a new product that is assigned to a template being tested, it will automatically be included in the test. If you want to test a single page with template tests, see [Guide: Testing Individual Pages](broken://pages/ElB0m2SleogPLqJowLq4).

{% hint style="info" %}
**FAQ: What are "assigned" pages?**

In Shopify, each page (or distinct URL of your store) is "assigned" to a template, giving these pages their unique design and functionality. Because the original template is the starting place for your test, it must be "assigned" to at least one live page (otherwise, website visitors wouldn't see it). For more info, see [Shopify Help Center](https://help.shopify.com/en/manual/online-store/themes/theme-structure/templates).
{% endhint %}

#### For theme tests:

<figure><img src="/files/6TChea0E84Ln26psOKuV" alt=""><figcaption><p>Select your original theme</p></figcaption></figure>

Theme testing allows you to test global elements, new flows, and entire themes by testing two themes against one another. When you select this option, a drawer will open containing your live theme and every theme in your Theme Library. Your original theme must be live at the time of test launch.

{% hint style="info" %}
**FAQ: Why are some themes "missing templates?"**

Some themes might be missing templates that are currently assigned to pages on your site by your live theme. These templates are required for your site to function normally. To resolve this issue, see [Theme Compatibility](/test/best-practices/theme-compatibility).
{% endhint %}

#### For URL tests:

<figure><img src="/files/G2oQCMlTo267CCn8MIWv" alt=""><figcaption></figcaption></figure>

For a URL test, your **Original (A)** is the starting page URL that visitors will see when allocated to the control experience. Enter the full URL (for example: `https://your-store.com/products/product-a`) or the relative path (such as `/products/product-a`) .<br>

{% hint style="info" %}
**FAQ: Why is my URL not showing up?**

When testing URLs in Shoplift both the A and B variants need to be live and accessible. If a URL is not acessible it cannot be added.&#x20;
{% endhint %}

### Select your Variant (B)

After you've selected your Original (A), you're ready to select your Variant (B). There are three ways to create a variant in Shoplift, depending on the type of test you've chosen:&#x20;

* **Duplicate:** Test a variant based on your original template (template tests only)
* **Select:** Test against an existing template or theme
* **Create with Lift Assist**™: Test a recommendation from our library (template tests only)

#### Duplicate (template tests)

<figure><img src="/files/B2oqJ8dA9w6yo4CEQU8Z" alt=""><figcaption><p>Duplicate your original</p></figcaption></figure>

If you choose to create a variant by duplication, Shoplift will create a pixel-perfect copy of your original template and add it as the test variant (creating an A/A test). Then, click "Edit in Shopify" to make changes to the variant in the [Shopify Theme Editor](https://help.shopify.com/en/manual/online-store/themes/customizing-themes/edit). For more information on the Shopify Theme Editor, see [Edit Your Variant](/get-started/quickstart/edit-your-variant).

{% hint style="info" %}
**FAQ: How can I duplicate theme tests?**

If you'd like to test a copy of your original theme, you'll need to duplicate your theme in Shopify. Then, in Shoplift, you can to select that duplicate theme and make the changes you want to test from the Shopify Theme Editor. See our [guides](broken://pages/svb7AOZwNyJeqQyuJ57K) for specific instructions on setting up common theme tests. By the way, Shopify allows up to 20 themes or 100 themes (Shopify Plus), so be sure to delete outdated themes.
{% endhint %}

{% hint style="warning" %}
Something not right? While all themes and templates are supported for duplication, the degree to which you can edit your template in the Shopify Theme Editor depends on your theme. Read more about [Theme Compatibility](https://docs.shoplift.ai/testing/theme-compatibility).
{% endhint %}

#### Select (template and theme tests)

<figure><img src="/files/aImraoATsgYGZ5B1DQT5" alt=""><figcaption><p>Select your variant</p></figcaption></figure>

If you've already created a template or theme that you want to test against your Original (A), you can select it from your library as your Variant (B).&#x20;

{% hint style="info" %}
**FAQ: How do I test third-party page builder pages?**

For template tests, a popular use case for selecting an existing template is testing pages created with third-party [page builder apps](/integrate/page-builder-apps), such as Replo, GemPages, or Pagefly.&#x20;
{% endhint %}

#### Create with Lift Assist™ (template tests)

<figure><img src="/files/bzu0k2cMPWFl77Rc7N51" alt=""><figcaption><p>Create with Lift Assist™</p></figcaption></figure>

[Lift Assist™](/test/lift-assist-tm) is Shoplift's recommendation engine, dynamically providing theme sections to extend your store's functionality. This feature pairs premade, highly-customizable theme sections with high-converting test strategies and is available on Advanced and Pro plans.

### Adjust your traffic allocation

By default, each variant is set to receive 50% of total test traffic, but you can change this to any distribution that you want if you'd like to more tightly manage the traffic exposure of specific tests.

{% hint style="info" %}
We recommend running tests with the default allocation of 50% for both the original and variant templates, but there are certain cases where you may choose to allocate more or less traffic depending on your strategy.
{% endhint %}

### Choose a test goal

Shoplift uses five key metrics to define success for tests:

* **Average order value**: The average revenue generated by each purchase.
* **Conversion rate**: The percentage of visitors who make a purchase.
* **Revenue per visitor**: The average revenue generated by each visitor (recommended).
* **Clickthrough rate**: The percentage of visitors who proceed to other pages on your site.
* **Add-to-cart rate**: The percentage of visitors who add an item to their cart.

The test goal you select will be used to determine the statistical significance of your test, but all metrics will still be tracked and included in the report. For more information on each of these metrics, view our documentation on [Test Metrics](/analyze/reports/metrics).&#x20;

### Hypothesis

The **Test Hypothesis** field gives you a place to record the idea behind your experiment. While optional, we recommend filling it out to keep track of what you’re testing and why.

You can update your hypothesis at any time, even after the test has launched.

Documenting your hypothesis helps you connect results back to your original goals, making it easier to understand which changes are driving impact.

<figure><img src="/files/rHedpVYSLXh7VcIfx6m3" alt=""><figcaption></figcaption></figure>

### Target your visitors

#### Target specific devices

You can choose to run your test on all devices, or limit your test traffic to a specific device type. To target your test to desktop or mobile traffic only, select the option for "Desktop" or "Mobile".&#x20;

For more information, see [Device Targeting](/test/targeting/device).

#### Target new or returning visitors

In addition to providing device segmentation options, Shoplift also provides segmentation capabilities based on new and returning website visitors. Segmenting your tests based on new and returning visitors can be a powerful way to optimize your store for these major cohorts of users, particularly for subscription-based businesses.&#x20;

For more information, see [New and Returning Visitor Targeting](/test/targeting/new-and-returning-visitors).

{% hint style="info" %}
**FAQ: Why do I have to wait 7 days for visitor segmentation?**

To ensure a minimum threshold of accuracy, this segmentation option is not available for tests until we've collected data for a minimum of 7 days from initial installation of the app. After 7 days, you will be able to segment your tests based on visitor type, and our segmentation and reporting will increase in accuracy the longer the app is installed.
{% endhint %}

#### Target custom audience segments

If you have more advanced use cases for your test, you can also create custom audiences in Shoplift. Audiences are created and managed on the draft page and are highly customizable by constructing rulesets based on UTM parameters, URL strings, referring domains, and geographic parameters like country.

For a comprehensive guide on creating audiences, see [Audience Targeting](/test/targeting/custom-audiences-utms-referring-domains-and-geo-targeting).

{% hint style="info" %}
If you need help conducting tests with Shoplift, our [support team](broken://pages/BZDv9d1utwcXtufWrzA4) is always available to assist. Reach out from within the app using the live chat widget in the bottom right of the screen, or email [help@shoplift.ai ](mailto:help@shoplift.ai)to get in touch.
{% endhint %}


# Edit Your Variant

Shoplift is the first A/B testing platform built specifically for Shopify, and the tight integration between the two platforms allows you to create a variant directly from the Shopify Editor.

{% hint style="info" %}
If you are new to using the Shopify Theme Editor, you can get a quick overview by reading this [official guide from Shopify](https://help.shopify.com/en/manual/online-store/themes/customizing-themes/edit#theme-editor).
{% endhint %}

### Edit in Shopify

<figure><img src="/files/BLAO99ZrsGlWplzsaPBk" alt=""><figcaption><p>Edit in Shopify</p></figcaption></figure>

After duplicating or selecting your variant, you can click **"Edit in Shopify"** to open the Shopify Theme Editor and make direct edits to your template or theme. The Theme Editor automatically opens to your variant template or theme, so you don't need to worry about accidentally editing a live page on your website.

To double-check that you're editing the correct template or theme, make sure that you have you see the variant's name in the Theme Editor. To do so, look at the template name presented in the sections sidebar (on the left) or at the theme name above it. This name will match the variant name shown on the variant card in the Test Draft page. In the above example, the variant template name is **index.sl-CDFD13AE**.

{% hint style="warning" %}
Please be aware if you are editing a live variant template (a template assigned to live pages on your store), your edits will immediately affect your live site. If you are editing an unassigned variant template, your edits will not be live until you launch your test.
{% endhint %}

### Save your edits

When you are finished editing your variant in the Shopify Editor, click 'Save.' Once your changes are saved, you can close the Shopify Editor tab in your browser and return to the Shoplift app to review your test before launching. Your variant previews on the test draft will update to reflect your latest changes.

{% hint style="warning" %}
Always make sure you have saved your latest edits in Shopify before launching a test. Launching a test without saving your edits will result in your live site not representing the changes that were intended.
{% endhint %}

{% hint style="info" %}
**FAQ: Why do my edits show up on my original and variant template previews?**

If making edits in Shopify affected your original template, you likely made theme-level edits to your variant. You should revert these edits and set up a new test by clicking "Test a theme or global element."
{% endhint %}


# Preview Before Going Live

You can preview any test directly in your browser with Shoplift's **Preview Mode**. Preview Mode can be used on draft, active, and ended tests.

### Using Preview Mode

On a given test draft or report, hover over your variant preview and select **Preview in Browser**. This opens Preview Mode in a new tab.

When using preview mode, you can experience your test as a website visitor would.

### Switching Between Variants

At the bottom of the preview window, you’ll see a toolbar that lets you switch between:

* **Original (A**) – your current experience
* **Variant (B)** – your test experience

<figure><img src="/files/uViRUPc6f61as4BbflUl" alt=""><figcaption></figcaption></figure>

You can navigate across your site while the preview is active to see how each page looks when assigned to the A or B variant.

{% hint style="info" %}
**FAQ: Why do my edits show up on my original and variant previews?**

If making edits to a template test in Shopify affected your original template, you likely made theme-level edits to your variant template. You should revert these edits and set up a new test by clicking "Test a theme or global element."
{% endhint %}

### Exiting Preview Mode

To return to your live site, simply select Exit in the toolbar.


# Launch & Monitor Your Test

Before launching your test, we recommend taking a few steps to make sure everything looks right. We'll cover these steps below.

### QA your test

* [ ] Using Preview Mode function, open your test variant in a new window.
* [ ] When previewing you will see the preview toggle at the bottom of the screen. You can switch between the A and B sides of the test using this toggle.
* [ ] If you are previewing a theme test, run through your entire website, from homepage to checkout, to ensure your pages are displaying and functioning correctly.

{% hint style="info" %}
Use our in-depth [QA checklist](/test/qa-checklist) to ensure that your tests are all set to launch, and look good once you've set them live.&#x20;
{% endhint %}

### Launch your test

If everything looks good, you're now ready to launch your test!

When your test is launched it will be published immediately and your site visitors will begin to see the new variant on your storefront according to your test parameters.

{% hint style="info" %}
**FAQ: Can I run multiple tests at the same time?**

The short answer is yes! Shoplift uses a sophisticated mutual exclusion system to prevent major interactions between active tests. See [Running Multiple Tests Simultaneously](/test/running-multiple-tests-simultaneously) for more information.
{% endhint %}

### Check your live test

Now that your test is live, we recommend opening a few incognito browsers and navigating to your tested page(s) to ensure that everything is working as expected. If you notice any mistakes, you can always pause your test to make your fixes, and resume it once the fixes are made.

Depending on your traffic allocation between your original and variant, you may need to open and close a few incognito browsers before you are sent to the test variant.

{% hint style="info" %}
If you have any concerns about launching your test, feel free to start a chat with our [Customer Support](broken://pages/BZDv9d1utwcXtufWrzA4) team or email <help@shoplift.ai> for assistance.&#x20;
{% endhint %}


# A/A testing

Before you start running A/B tests, it's worth asking: can you trust your data? An A/A test helps you answer that question.

An A/A test splits your traffic between two identical versions of your store, no changes, no variant. If your tracking is working correctly and traffic is being split fairly, both sides should perform roughly the same.

Think of it as calibrating your scales before you weigh anything important.

### What an A/A test tells you

Running an A/A test gives you three useful signals:

* **Tracking accuracy:** Confirms that Shoplift and your analytics tools are recording data correctly.
* **Traffic split quality:** Verifies that visitors are being assigned to each group evenly and without bias.
* **Natural variance:** Shows you how much your conversion rate fluctuates on its own. If one identical version "outperforms" the other by 2%, you'll know that a 2% difference in a future test might just be noise, not a real result.

### How to run an A/A test

The method depends on your Shoplift plan.

#### Advanced and Pro plans: blank API test (recommended)

The most reliable way to run an A/A test is with a blank automatic API test. Because API tests work by running code directly on your live theme, rather than swapping templates, leaving the variant empty means every visitor sees the exact same site, with no server-side differences at all.

1. In Shoplift, create a new test and select **API test**, then choose **Automatic**.
2. Leave the variant's JavaScript editor completely empty. Don't add any code.
3. Launch the test.

Shoplift will split traffic 50/50. Since the variant contains no code, both groups see an identical experience.

<figure><img src="/files/HOUM89VuA5nfBGYjpHOp" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
This method gives you the cleanest possible A/A data because it eliminates any variables that come from template rendering or third-party app behaviour.
{% endhint %}

#### Core plan: duplicate template or theme

If you're on the Core plan, you can run an A/A test by testing a template or theme against an exact duplicate of itself.

1. In your Shopify admin, duplicate the template or theme you want to test. Make no changes to the duplicate.
2. In Shoplift, create a template test or theme test. Set your live version as the original and the duplicate as the variant.
3. Launch the test and let it run for 1–2 weeks.

{% hint style="warning" %}
Some third-party apps behave differently when they detect they're running on a non-primary template. If your A/A test shows a large difference between the two sides, a specific app may not be firing correctly on the duplicate. Check your app integrations before drawing any conclusions.
{% endhint %}


# FAQ

Answers to the most common questions Shoplift merchants ask.

***

### Testing capabilities

<details>

<summary>What can I test with Shoplift?</summary>

Shoplift lets you test almost any change to your Shopify store. The main options:

* **Template tests** — Test changes to specific page types like product pages, collection pages, homepages, or landing pages. You edit your pages in Shopify's Theme Editor, so no code is required.
* **Theme tests** — Test your entire theme against a modified copy. Ideal for full redesigns, new navigation, or switching themes entirely.
* **Price tests** — Test different price points to find the optimal pricing for your products.
* **URL redirect tests** — Compare two completely different URLs or landing pages.
* **API tests** — Use custom JavaScript for advanced changes (requires coding knowledge).

If you're unsure which test type fits your situation, see [Choose the Right Test Type](/get-started/quickstart/choose-the-right-test-type) or [reach out to support](https://shoplift.ai/support).

</details>

<details>

<summary>Can I test more than two versions (A/B/n testing)?</summary>

Shoplift does not currently support A/B/n testing, but our out-of-the-box mutual exclusion allows you to run multiple tests at once.

</details>

<details>

<summary>Can I test changes to a specific product page instead of all product pages?</summary>

Yes. When creating template tests, you can choose which products or pages use your Original template by editing the assignment in Shopify. For more details, see [Testing Individual Pages](/learn/guides/guide-testing-individual-pages)

</details>

<details>

<summary>Can I test checkout pages?</summary>

Shoplift does not currently support testing Shopify's checkout pages directly. Shopify restricts third-party apps from modifying the checkout flow. However, you can test elements that influence checkout behavior — like product page layouts, pricing, add-to-cart buttons, and cart pages — to improve your overall conversion funnel.

</details>

<details>

<summary>Can I A/B test shipping thresholds or costs?</summary>

Yes, by using our JavaScript API. To do this, see [Testing Shipping Thresholds](/learn/guides/testing-shipping-thresholds)

</details>

<details>

<summary>Can I test images on product pages?</summary>

Yes, by using URL redirect tests. To do this, see [Testing Product Properties](/learn/guides/guide-testing-product-properties)

</details>

***

### Setting up and running tests

<details>

<summary>How do I install Shoplift?</summary>

Install Shoplift in a few clicks from the [Shopify App Store](https://apps.shopify.com/shoplift). No manual script installation is required — Shoplift automatically adds a small tracking script to your theme.

</details>

<details>

<summary>How do I edit my pages for a test?</summary>

All edits happen directly in Shopify's Theme Editor. This means you have full access to your theme's built-in editing capabilities.

</details>

<details>

<summary>How does Shoplift split traffic between control and variant?</summary>

Shoplift randomly assigns each new visitor to either the control or a variant on their first page load. By default, traffic is split 50/50. The assignment is permanent — the same visitor sees the same version every time they return (on the same device and browser) for as long as the test remains active.

Traffic is *not* rotated by time or alternated between visitors. It's a true random assignment, which is essential for accurate test results.

You can't adjust the split percentage while a test is running. This ensures accuracy and validity of your results by maintaining the same sample distribution throughout the duration of the test.

</details>

<details>

<summary>Can I run multiple tests at the same time?</summary>

Yes. Shoplift uses a sophisticated Mutual Exclusion system to prevent tests that might have major interaction effects from overlapping.

* **Visitors can participate in multiple template tests and URL redirect tests**, as long as they target different pages.
* **Theme tests, price tests, and most JavaScript API tests** are mutually exclusive. Visitors participating in these tests cannot participate in any other tests while they run.

</details>

<details>

<summary>My test was paused because of "missing templates" — what do I do?</summary>

This happens when your test relies on Shopify templates that are no longer available in your live theme or, if you are running a theme test, your variant theme. Shoplift pauses the test automatically to prevent visitors from seeing broken pages.

To fix it:

1. Open the test in Shoplift and look at the error details — it will list which templates are missing.
2. Use Shoplift's **Auto Restore Templates** feature to automatically copy the missing templates from your control theme to the variant.
3. Once the templates are restored, resume the test.

This commonly happens when templates are deleted or renamed in your live theme after a test was created.

</details>

<details>

<summary>How do I preview my test before launching?</summary>

Two ways:

1. **Compare view** — In the Shoplift app, use the compare view to see your control and variant side by side before launching.
2. **Preview Mode** — Click the preview link in your test settings to view the variant on your live store.

</details>

<details>

<summary>Can I schedule a test to start at a specific time?</summary>

Yes, Shoplift has a test scheduling feature. You can schedule start and end times for your tests.

</details>

<details>

<summary>What happens to my tests if I switch to a new theme?</summary>

When you publish a new theme, Shoplift automatically migrates its tracking script to the new theme. If you have an active test:

* **If the templates used in the test still exist** in the new theme, the test continues running.
* **If the tested templates are missing** from the new theme, the test will be paused. You'll need to add the missing templates to your new theme to resume your test.

</details>

<details>

<summary>How do I apply the winning variant after a test?</summary>

Once your test reaches statistical significance, Shoplift displays an **Apply Variant** button on the test results page. Click it and follow the prompts to make the winning variant your permanent, default experience.

For template tests, this assigns the winning template to the relevant products, collections, or pages. For theme tests, this publishes the winning theme as your live theme.

</details>

***

### Results and reporting

<details>

<summary>When is my test ready to end? How do I know the results are reliable?</summary>

Wait until Shoplift shows your test has reached statistical significance. As a guideline, most tests need at least **10,000 visitors per variant** and **14 days** of running time. Shoplift will clearly indicate when your test has enough data to make a confident decision — don't end it early, even if one version looks like it's winning.

</details>

<details>

<summary>I just launched my test but I don't see any data yet. Is something wrong?</summary>

Report data updates periodically each hour. If you still see zero tested visitors after 24 hours, check the following:

1. **Is the tracking script installed?** Open your store in a browser, right-click, select "View Page Source," and search for "shoplift" to confirm the script is present.
2. **Are audience targeting rules too restrictive?** If you've set audience rules, make sure they aren't excluding most of your traffic.

If none of that resolves it, [contact support](https://shoplift.ai/support).

</details>

<details>

<summary>How does Shoplift track conversions?</summary>

Shoplift tracks conversions using server-side methods to collect cart and order data directly from Shopify.

When a visitor who was assigned to a test completes a purchase — even days later on a return visit — the order is attributed to the test variant they saw.

</details>

<details>

<summary>If a visitor sees my product page test but buys a different product, does that count?</summary>

Yes. Shoplift tracks whether a visitor made any purchase after being exposed to the test, regardless of which product they bought. This gives you the most accurate picture of how your test variant affects overall store performance.

</details>

<details>

<summary>Does Shoplift track post-purchase upsells?</summary>

Yes. Shoplift supports all major post-purchase upsell apps, including AfterSell, out of the box. When post-order edits are made to an order (like additions, reductions, or cancellations) Shoplift will update test reports accordingly.

</details>

<details>

<summary>Does Shoplift track orders made with one-click checkout?</summary>

Yes. Shoplift natively supports all major one-click checkout solutions — Shop Pay, Apple Pay, Google Pay, PayPal, and more.

</details>

<details>

<summary>Can I see my test results in other reporting tools (like GA4)?</summary>

Yes. Shoplift has a native GA4 integration. You can also send test data to other analytics platforms with our API.

</details>

<details>

<summary>Can I use heatmapping tools (like Hotjar or Microsoft Clarity) to analyze test variants?</summary>

Yes. Since Shoplift appends a URL parameter to tested templates, you can filter by that parameter in your heatmapping tool to view heatmaps, recordings, and scroll data for each variant separately.

</details>

***

### Compatibility and integrations

<details>

<summary>What themes does Shoplift support?</summary>

Shoplift supports all Shopify themes — custom themes, Shopify Theme Store themes, and Online Store 2.0 themes. Some editing capabilities in the Theme Editor may be limited on legacy (Online Store 1.0) themes, but tests will still run.

</details>

<details>

<summary>Does Shoplift work with page builder apps (Replo, PageFly, GemPages)?</summary>

Yes. Shoplift fully supports Replo, PageFly, GemPages, and other major page builders. You can test pages built with these tools using template tests or URL redirect tests.

</details>

<details>

<summary>Does Shoplift integrate with subscription apps?</summary>

Yes. Shoplift has out-of-the-box integrations with all major subscription apps and reports on subscription metrics in your test results — no extra setup required.

Supported apps include: Recharge, Prive, Loop, Skio, Appstle, Subify, Yotpo, Ongoing Subscriptions, and Ordergroove. Bold Subscriptions is also supported if your account provides "first order" tags on initial subscription orders.

</details>

<details>

<summary>Does Shoplift work with headless Shopify storefronts?</summary>

Shoplift is designed for standard Shopify storefronts (Liquid-based themes). Headless storefronts using custom frontends (like Hydrogen or Next.js) are not currently supported, because Shoplift relies on Shopify's theme system to inject tests and track visitors.

</details>

<details>

<summary>Can my developers test Shoplift on a development store?</summary>

Yes. Install Shoplift from the Shopify App Store on the development store. Shoplift automatically recognizes development stores and enables a test charge for the subscription, so your developers can test without setting up a payment method.

</details>

***

### Performance, privacy, and SEO

<details>

<summary>Does Shoplift affect my store's page speed?</summary>

Shoplift has a near-zero impact on page speed — approximately a 2-point reduction when measured with [Google's PageSpeed Insights](https://pagespeed.web.dev/). Page speed is critical for ecommerce, and Shoplift is built to keep its footprint as small as possible.

</details>

<details>

<summary>Do Shoplift tests cause any "flicker" or page blinking?</summary>

No. Shoplift includes a built-in anti-flicker system that prevents visitors from briefly seeing the original page before the variant loads.

</details>

<details>

<summary>Will testing affect my SEO or search engine listings?</summary>

No. Shoplift detects and blocks all major search engine bots (including Googlebot) from seeing test variants. Search engines always see your original pages, so your rankings and listings are unaffected.

</details>

<details>

<summary>Does Shoplift exclude bot traffic from test data?</summary>

Yes. Shoplift automatically detects and blocks most bots — including crawlers from major search engines — so they don't inflate your visitor counts or distort your results. If you're still seeing unusually high traffic, [contact support](https://shoplift.ai/support) and the team can investigate.

</details>

<details>

<summary>What cookies or data does Shoplift store on visitors' browsers?</summary>

Shoplift uses browser storage and cookies to persist test assignments. No personal information is collected. If a visitor declines analytics tracking through your store's consent banner, Shoplift respects that preference and stops tracking their events — though they'll still see a consistent test experience.

</details>

<details>

<summary>Do I need to manually install any scripts on my theme?</summary>

No. When you install Shoplift, a small tracking script is automatically added to your theme — referenced just after the opening `<head>` tag in your `theme.liquid` file. You never need to touch code.

</details>

***

### Account and billing

<details>

<summary>What are the different pricing plans?</summary>

Shoplift has three plans: **Core**, **Advanced**, and **Pro**. The cost depends on your store's traffic volume and is highly flexible — you don't need to pay for more than you use. All plans include unlimited tests.

</details>

<details>

<summary>What happens if I exceed my plan's visitor limit?</summary>

If you exceed your plan's visitor allotment, your tests will be temporarily paused until you either upgrade your plan or your billing cycle resets and the visitor count returns to zero. Once you're back within your limit, you can resume your tests.

</details>

<details>

<summary>How do I add team members to my Shoplift account?</summary>

Shoplift uses Shopify's permission system. Any staff member with access to your Shopify store and the Shoplift app can access Shoplift by opening the app from the Shopify admin. No separate Shoplift account or invitation is needed.

</details>

<details>

<summary>What happens if I uninstall Shoplift?</summary>

If you uninstall Shoplift **from within the app**, Shoplift will automatically remove all scripts and files from your theme.

If you uninstall from the Shopify admin instead, you may need to manually remove the Shoplift tracking script from your theme's `theme.liquid` file.

{% hint style="warning" %}
It's recommended to always uninstall from within the Shoplift app to ensure a clean removal.
{% endhint %}

</details>

<details>

<summary>Why does my activity log show "Shoplift changed [theme]"?</summary>

When Shoplift releases a new version of its tracking script, it updates the script on your themes to ensure you have the latest version. This happens once per theme and does not change any of your store's content or design.

</details>

<details>

<summary>How can I get in touch with Shoplift support?</summary>

Reach out through the live chat widget inside the Shoplift app, or email <help@shoplift.ai>.

</details>


# What to Test

Shoplift is a comprehensive A/B testing platform that leverages the power of Shopify templates and themes. With [template testing](https://docs.shoplift.ai/test/template-testing), you can test any individual page on your Shopify store, as well as test groups of similar pages (like product pages for a grouping of products). With [theme testing](https://docs.shoplift.ai/test/theme-testing), you can test global elements (such as your header or mini-cart) and entire themes.

{% hint style="info" %}
If you're having trouble determining if you can set up your specific test with Shoplift, please reach out to [customer support](https://docs.shoplift.ai/support/get-help). We'd love to help!
{% endhint %}

## Test Ideas

What you decide to test with Shoplift depends on the overall business strategy, key objectives, and goals for your Shopify store. While the below ideas don't replace a comprehensive testing plan, they can help to identify key areas that tend to drive high impact.

{% hint style="success" %}
Shoplift provides a dynamic test recommendation engine, called [Lift Assist™](/test/lift-assist-tm), which provides test suggestions as well as the theme assets and functionality required to test them. The feature is available on Advanced and Pro plans.
{% endhint %}

### Test your homepage

Homepages often have the most traffic on e-commerce stores, and because of this, homepage tests are a great way to start small and get results quickly.

#### Headline copy

* Your headline copy should concisely explain the unique value proposition your product or service provides.&#x20;
* In general, when shoppers land on your homepage, they should not have to scroll beyond your hero section to understand what exactly it is that you sell, why it's valuable, why it's unique, and why they should care or be interested.

#### Subheadline copy

* Subheadlines are a great opportunity for expanding upon your headline to provide more detail.&#x20;
* Your subheadline copy should explain *how* or *why* the value your product or service provides is unique and worthwhile. Is it easy? Is it cheap? Is it high quality?&#x20;
* Highly-effective subheadlines also contain a verb to prime shoppers to take action. For example, if you offer subscriptions or a membership, you could say "Join now to receive high-quality goods delivered to your door."

#### Hero image

* Images are a powerful, visual way to instantly describe, without words, what it is that you sell, the type of person that it's intended for, and how it's useful.&#x20;
* Make sure that your hero image contains the actual product or category of products that you sell, so that shoppers don't need to do any mental gymnastics to interpret or assume what your actual product is.

#### Hero call-to-action copy

* Call-to-action text on your hero button(s) should be brief and specific, and give shoppers an idea of what they can expect when they click.&#x20;
* Avoid passive copy like "Learn More" or generic copy like "Shop Now". Instead, opt for active, specific copy like "Shop the Sale" or "Get Your First Box".

#### Hero call-to-action link

* The page that your call to action links to should not surprise shoppers when they click.&#x20;
* Make sure that whatever copy is described in your headline, subheadline, and call-to-action directly primes shoppers for where they can expect to end up when they click.

#### Hero concepts: copy, media, and action

* In addition to testing specific hero elements, testing complete hero concepts - combinations of copy, media, and calls-to-action - can be a powerful way to learn over time which specific offerings your shoppers care about most and what drives them to purchase most often.&#x20;
* Your headline, subheadline, image, and call-to-action should all relate to a shared concept, goal, or action you want shoppers to take.

#### Hero targeting: new or returning visitors

* Depending on the type of business or products provided, ecommerce traffic will typically have strong leanings toward either new or returning visitors that compose the majority of shoppers.
* If you run a lot of paid ads and the majority of your shoppers are new, craft your homepage around clearly describing what is offered so that shoppers unfamiliar with your product or business can understand the value you are providing at a glance.
* If much of your acquisition is organic, because shoppers are already familiar with and are searching for your brand, or if a lot of your traffic is driven by remarketing or retention (email) campaigns, your homepage can take more liberties with how you present your core offerings. For example, shoppers might be less interested in seeing a generic message about what your store provides, and more interested in specific sales, new products, new collections, or new purchase or delivery options.

### Test your collection pages

Collection pages serve as the gateway to a variety of products, making them a vital part of the user journey within the conversion funnel. These pages can significantly influence a shopper's browsing experience, discovery of products, and decision-making process. Optimizing collection pages can enhance user engagement, improve navigation, and ultimately lead to higher conversions.

#### Collection page navigation

* If you have several collection pages, and shoppers often need to jump back and forth between pages to shop the full scope of your catalogue, consider testing improved navigation, like tabs that link between related collections, at the top of your collection pages.

{% hint style="info" %}
[Lift Assist™](/test/lift-assist-tm) offers several popular navigation tests for collection pages, which have proven to drive high value tests for many merchants.&#x20;
{% endhint %}

### Test your product pages

Testing product pages is crucial because they are pivotal points in the conversion funnel where potential customers make decisions about purchasing. Optimizing these pages can lead to higher engagement, increased conversions, and improved overall user experience.

#### Call-to-action placement

* Depending on the amount of information required on your product pages, key action elements like your Add to Cart or Buy Now buttons may not always be presented above the fold (visible when shoppers first land on the page).&#x20;
* Test the placement and positioning of your call-to-action elements to ensure that they are highly visible.&#x20;
* If there is peripheral information related to your products, like expanded product details or shipping or return information, place this below the action buttons.

#### Social proof

* Experiment with displaying reviews prominently, varying the number of reviews shown, and incorporating review summaries.
* Test the impact of displaying customer testimonials, user-generated content, or trust badges on conversions.

#### Related products

* Test showing related products, cross-selling, or upselling options to encourage additional purchases.

#### Information on delivery and returns

* Experiment with different ways of presenting shipping costs, delivery times, and return policies.

### Test your landing pages

Landing pages serve as focused entry points designed to convert visitors into customers, subscribers, or leads. Landing pages are often designed for specific campaigns, promotions, or offers and play a critical role in the conversion funnel. Optimizing these pages can significantly impact conversion rates, lead generation, and overall campaign success.

#### Headlines and messaging

* Test different headlines, subheadings, and value propositions to see which resonates best with specific audiences that you are driving to each landing page.
* Test the impact of including customer testimonials, ratings, or trust badges to build credibility.
* Test different offers, discounts, or incentives to determine which resonates most with your audience.

#### Page layout

* Experiment with the arrangement of content elements, such as images, benefits, and forms.
* Experiment with different images, videos, or graphics to enhance visual appeal and reinforce your message.
* Test the design, color, placement, and wording of your call to action buttons to maximize click-through rates.
* Test long-form vs. short-form landing pages to see which provides better engagement and conversions.

### Test your theme

Theme testing, or testing two themes against one another, allows for a variety of insightful tests to be run. You might want to test changes to elements that appear across your entire website, like navigation menus and mini carts, or test entirely new themes that introduce major design or functionality overhauls to your online store's core experience.

#### Navigation Menus

* To make things easier for your users, try simplifying your menu. Fewer items and submenus mean less hassle in finding what they need. Plus, if there's a page not getting much love, consider moving it to a different spot. It could just be in the wrong place!
* Test whether a sticky navigation menu (one that remains fixed at the top of the screen as the user scrolls) improves navigation and accessibility, especially on long product pages. This can keep users motivated as they explore your site.
* Try showcasing your latest deals or fresh arrivals in your nav bar. It's a great way to get items noticed and boost your traffic and sales.&#x20;

#### Mini Carts&#x20;

* Try adding various call-to-action (CTA) buttons to prompt user behavior. Experiment with "View Cart," "Checkout," "Continue Shopping," or even go for custom options like "Add More" or "Upgrade to Premium" to see what works best for your customers.
* Experiment with how product information is displayed in the mini cart, such as showing product names, prices, quantities, and variations (like size or color) in different formats or styles.
* Test up-selling and cross-selling. Your mini cart is a great place to promote additional products or upgrades, such as displaying related items, offering bundle deals, suggesting complementary products, or showcasing items frequently bought together.

{% hint style="info" %}
If you're having trouble setting up a specific type of test with Shoplift, please reach out to [customer support](https://docs.shoplift.ai/support/get-help). We would love to help!
{% endhint %}


# Guides

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-cover data-type="image">Cover image</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Testing Individual Pages</strong></td><td><a href="/files/kVfKHqOxQYzM5sCmYgip">/files/kVfKHqOxQYzM5sCmYgip</a></td><td><a href="/pages/HLFqxVhZ4S0A3iuT4KxK">/pages/HLFqxVhZ4S0A3iuT4KxK</a></td></tr><tr><td><strong>Testing URLs</strong></td><td><a href="/files/ELJSZIm1zP0qzrXbsgw0">/files/ELJSZIm1zP0qzrXbsgw0</a></td><td><a href="/pages/t2gXQHs8dr5i9IQmfNSR">/pages/t2gXQHs8dr5i9IQmfNSR</a></td></tr><tr><td><strong>Testing Different Template Types</strong></td><td><a href="/files/Me3v5RLWroU4pAXuVM8Z">/files/Me3v5RLWroU4pAXuVM8Z</a></td><td><a href="/pages/GB6nSJNHbtfZuCC6uBG3">/pages/GB6nSJNHbtfZuCC6uBG3</a></td></tr><tr><td><strong>Testing Product Properties</strong></td><td><a href="/files/0g6JggqK2CdKhJtasZ5s">/files/0g6JggqK2CdKhJtasZ5s</a></td><td><a href="/pages/aDgUX3NDsR0Lzf146LtV">/pages/aDgUX3NDsR0Lzf146LtV</a></td></tr><tr><td><strong>Price Tests with Duplicate Products</strong></td><td><a href="/files/VfvwKwZ0hdiGl4654FcV">/files/VfvwKwZ0hdiGl4654FcV</a></td><td><a href="/pages/C9WLmZC7CXWrSanJFcsS">/pages/C9WLmZC7CXWrSanJFcsS</a></td></tr><tr><td><strong>Testing a Navigation Menu</strong></td><td><a href="/files/1cGbWGkBIRXXuYNwIIzy">/files/1cGbWGkBIRXXuYNwIIzy</a></td><td><a href="/pages/SY5dOAt2Wln15ZZ1AWzU">/pages/SY5dOAt2Wln15ZZ1AWzU</a></td></tr><tr><td><strong>Testing a Mini Cart</strong></td><td><a href="/files/C0AxPK0CxnbThxZvGQpG">/files/C0AxPK0CxnbThxZvGQpG</a></td><td><a href="/pages/p4Adlxym5IhVrMtXuZo5">/pages/p4Adlxym5IhVrMtXuZo5</a></td></tr><tr><td><strong>Testing App Blocks</strong></td><td><a href="/files/HJiQQIGhhRs2l5qNKsQT">/files/HJiQQIGhhRs2l5qNKsQT</a></td><td><a href="/pages/kDLaTzhn72YpsP8LueZi">/pages/kDLaTzhn72YpsP8LueZi</a></td></tr><tr><td><strong>Testing One-Click Payment Methods</strong></td><td><a href="/files/ydIWww9xBTfWz7SsF1kw">/files/ydIWww9xBTfWz7SsF1kw</a></td><td><a href="/pages/rCDdPdPl7edJtmbL3f7h">/pages/rCDdPdPl7edJtmbL3f7h</a></td></tr><tr><td><strong>Test with Shopify Magic</strong></td><td><a href="/files/4e7TQzu7nzowPV5mPM0o">/files/4e7TQzu7nzowPV5mPM0o</a></td><td><a href="/pages/UJZ0wWwQ6UI2l9tRtJqZ">/pages/UJZ0wWwQ6UI2l9tRtJqZ</a></td></tr><tr><td><strong>Testing Shipping Thresholds</strong></td><td><a href="/files/otxc2EEwBbWMiKSzs94m">/files/otxc2EEwBbWMiKSzs94m</a></td><td></td></tr></tbody></table>


# Testing Individual Pages

By default, Shoplift will include any assigned product, page, or collection in an associated template test. If you want to test and individual product or collection, you can duplicate your existing template and assign that specific item to the new template, as detailed below.&#x20;

{% hint style="info" %}
To learn more about the differences between OS2 and OS1 themes, see [Theme Compatibility](/test/best-practices/theme-compatibility).
{% endhint %}

### OS2 Themes (JSON Templates)

**Step 1:** From the Shopify theme editor, select list of templates (top dropdown) and click "Create template."

**Step 2:** Name the new template and select an existing template on which to base the design.

**Step 3:** Return to the Shopify Admin and select product/collection/page you wish to test and assign it to that new template.

<figure><img src="/files/RRNI1MfNW72xShZLB7YG" alt=""><figcaption></figcaption></figure>

**Step 4:** Select that same duplicate template for testing in Shoplift, it will now have only the specific product/collection/page intended to test.

<figure><img src="/files/XSr4GRCwvXH2udobpo17" alt=""><figcaption></figcaption></figure>

### OS1 Themes (Liquid Templates)

**Step 1:** From the Shopify Admin, select Online Store > Themes from your list of Sales channels.

**Step 2:** Scroll to your live theme, select "More Options" (the three dots) and "Edit Code" from the dropdown menu.

<figure><img src="/files/jGamcpnpVSBcNCjngX1S" alt=""><figcaption></figcaption></figure>

**Step 3:** This will take you to the Shopify Code editor. On the left-hand side, scroll to the Templates directory and find the template, like `product.liquid`, for example. Copy the code here to your clipboard.

**Step 4:** Then scroll to the top of the Templates directory, where you will see an option to Add a new template on the left-hand side. Click this, and a popup will appear to create a new template.

<figure><img src="/files/5scRA4y8TxjoLhnlQniI" alt=""><figcaption></figcaption></figure>

**Step 5:** Select product from the dropdown, select "liquid," and give your template a name, like `product.new.liquid`. Then click "Done" to save your changes.

**Step 6:** Your template will be created and you can navigate to the file from the list of template files. Select the file, select all the code in the file, and replace it by pasting the code you copied from your original template.

**Step 7:** From here, navigate to the product you want to test in the Shopify Admin. Select your new template as the assigned template for this product.

<figure><img src="/files/5f6sSAHECkCgQkznJrC7" alt=""><figcaption></figcaption></figure>

**Step 8:** Select that same duplicate template for testing in Shoplift, it will now have only the specific product/collection/page intended to test.

{% hint style="success" %}
You can also test individual pages using URL split tests. See [Guide: Testing URLs](https://docs.shoplift.ai/test/url-testing/guides/guide-testing-urls) for details.
{% endhint %}


# Testing URLs

### How to Create a URL Test

#### Step 1: Select Test a URL or a single page

Enter the test draft page and select the option to “Test a URL or single page.” While theme and template tests allow you to test changes across multiple pages on your site, URL tests allow you to test changes to individual pages. This test option is best for testing things like specific product pages, collection image order, site quizzes, and more. For more information, see [URL Testing](/test/url-testing/overview) or click on “Help me decide” in the app.

#### Step 2: Enter your original URL

Think of your original URL as the starting place of your test. It is the URL on which visitors will be assigned to your test. Those assigned to the original will proceed onto the original URL, while those assigned to the variant will be redirected to the variant URL. To input your original URL, you can paste or type in the full URL or the relative URL. Explore valid and invalid inputs below.

{% tabs %}
{% tab title="Valid Input" %} <mark style="color:green;">Valid</mark>: Full URLs

* `https://my-store.com`
* `https://my-store.com/products/product-a`

<mark style="color:green;">Valid</mark>: Relative URLs or Paths:&#x20;

* `/`&#x20;
* `/products/product-a`
* `/pages/pf-12345`
  {% endtab %}

{% tab title="Invalid Input" %} <mark style="color:red;">Invalid</mark>: Incomplete Paths

* `/product-a`&#x20;
* Be sure to add the page type to complete the path (i.e. `/products/product-a` is <mark style="color:green;">Valid</mark>)

<mark style="color:red;">Invalid</mark>: Specific Markets

* `https://us.my-store.com`
* To target a specific country for your test, use our [audiences feature](/test/targeting/custom-audiences-utms-referring-domains-and-geo-targeting) on the test reports page

<mark style="color:red;">Invalid</mark>: UTMs

* `https://my-store.com/?utm_source=facebook`
* To target specific UTMs for your test, use our [audiences feature](/test/targeting/custom-audiences-utms-referring-domains-and-geo-targeting) on the test reports page
* Keep in mind, visitor UTMs will still be tracked for the test
  {% endtab %}
  {% endtabs %}

#### Step 3: Enter your variant URL

In URL tests, site visitors will be redirected from the original URL to the variant URL. Following the same validation criteria outlined above, enter the variant URL when prompted.

{% hint style="success" %}
**Tip:** Click "View in Browser" next to the Original and Variant URL to make sure you've selected the right page.
{% endhint %}

#### Step 4: Review your changes&#x20;

Before you launch your test, follow these steps to make sure everything looks right:

* [ ] Preview the original and variant URLs in your browser to make sure the URLs are correct and visitors will be sent to the right pages
* [ ] Confirm you do not have [Shopify Redirects](https://help.shopify.com/en/manual/online-store/menus-and-links/url-redirect) or any 301 redirects set up on the original or variant URLs

{% hint style="info" %}
If you need help conducting tests with Shoplift, our [support team](broken://pages/BZDv9d1utwcXtufWrzA4) is always available to assist. Reach out from within the app using the live chat widget in the bottom right of the screen, or email [help@shoplift.ai ](mailto:help@shoplift.ai)to get in touch.
{% endhint %}


# Testing Different Template Types

### Can I test two different template types against each other?

Yes! In addition to two similar template types (i.e. product template vs. product template), you can run **"cross-template" tests** in Shoplift (i.e. product template vs. landing page template).&#x20;

This is most typically used for page builder workflows. For example, you might've built a template to test against a product or collection template, but the template you want to test is not a product or collection template.

{% hint style="info" %}
For a full list of which page builder apps work with Shoplift, see [Page Builder Apps](/integrate/page-builder-apps).
{% endhint %}

### How to run a cross-template test

To run a cross-template test, select your original template as you would for any other test. Then, click "Select" to open the variant template drawer and use the tabs at the top to navigate to your desired variant template.

<figure><img src="/files/FOnrXl53jSqyYO6N87S0" alt=""><figcaption></figcaption></figure>

Any template will be able to be selected as your variant template as long as it is assigned to a resource in Shopify (a page, product, collection, blog, or blog post) and has **only one resource assigned**. The variant template must have a singular, pre-specified URL to which it'll send visitors in your test.

{% hint style="info" %}
**FAQ: Why must variants of different template types be assigned to only one page?**

If you were to select a variant template assigned to multiple URLs (i.e. pages, products, collections, etc.), there would be no specific page defined to send your visitors to. For example, if a variant was assigned to multiple products, Shoplift would not have a product to send visitors to.&#x20;
{% endhint %}


# Testing Product Properties

{% hint style="info" %}
Testing product images or prices with URL testing is an advanced use case, as these elements can appear in multiple places across your site. These tests might require additional steps to be taken to set up correctly.&#x20;

If you would like a member of our support team to walk you through the process of building this type of test, consider upgrading to our [**Pro plan**](https://www.shoplift.ai/pricing) for dedicated support.
{% endhint %}

### How can I test product images and prices?

To test product images, prices, and other properties with URL tests, you can duplicate a product in Shopify, edit the properties of the duplicate product to create a variant, and launch a URL test to send some visitors to the original product and redirect other visitors to the variant product.&#x20;

**When testing duplicate products, make sure:**

* Original products and their duplicates share the same SKU (which should prevent any fulfillment issues)
* All sales channels, besides Online Store, are disabled for the duplicate product. You can utilise Shopify's inbuilt "Unlisted" product status. This will remove this duplicate from All collections, Store Search and Search Engines.&#x20;
* Reviews and other product properties are duplicated correctly

**When testing duplicate products with subscriptions, make sure:**

* You do not delete any duplicate products without understanding how your subscription platform handles subscriptions of deleted items

{% hint style="info" %}
For specific guides on setting up price tests with duplicate products, read [Guide: Price Tests with Duplicate Products](/learn/guides/price-tests-with-duplicate-products).
{% endhint %}


# Testing a Navigation Menu

Below, we'll cover some test ideas for your navigation menu and give you step-by-step instructions on how to set them up.

### Navigation menu tests

**Rearrange Structure**

* To make things easier for your users, try simplifying your menu. Fewer items and submenus mean less hassle in finding what they need.&#x20;
* Or, if there's a page not getting many views, consider moving it to a different spot.

**Sticky Navigation**

* Test whether a sticky navigation menu (one that remains fixed at the top of the screen as the user scrolls) improves navigation and accessibility, especially on long product pages.

**Highlight Promotions or New Arrivals**

* Experiment with showcasing your latest deals or fresh arrivals in your navigation. This can help users notice those items, potentially boosting your traffic and sales.&#x20;

{% hint style="info" %}
Depending on your theme's editing capabilities, certain tests might require developers or special instructions to set up. If you need more help, contact [customer support](broken://pages/BZDv9d1utwcXtufWrzA4).
{% endhint %}

### How to test your navigation menu

Navigation menus exist at a theme-level. Therefore, to test a navigation menu, you have to test two themes against each other, each theme with its own menu. Follow the below steps to test navigation menus on Shoplift. *If you or your developers have prepared the new navigation menu on a staged theme, skip ahead to Step 4.*&#x20;

**Step 1: Create and edit a navigation menu**

<figure><img src="https://codahosted.io/docs/zaYFwXnhGg/blobs/bl-VtAlG4tWad/d525d2be980acb3f0fd2cf3f9f1406e0c00d7b788167b09033debc8068d7ad6c71ffd7d45b8d7146f9d1af84f66c8aeba75fdae1a9b9a960896cea419634403d625d021127ae775dd1cef7fc801c04511ce2e25cd714fdfa3c01ee2f3e8484d477e38962" alt=""><figcaption><p>Create and edit a navigation menu</p></figcaption></figure>

In Shopify, navigate to Content > [Menus](https://admin.shopify.com/content/menus). From this page, you can click “Create Menu” to create your new navigation menu. For tips on editing your new navigation menu, visit the [Shopify Help Center](https://help.shopify.com/en/manual/online-store/menus-and-links/editing-menus). Once your happy with your new navigation menu, proceed to the next step.

**Step 2: Create a duplicate theme**

<figure><img src="https://codahosted.io/docs/zaYFwXnhGg/blobs/bl-y19ChBW4Z4/94f05c607be4d153203e8521d0eaa561b2a57ed950fcd935b253f707e8ef76fa9f156ba0bf003defe3aa83f2ac5fdb35a326cb9ca126c69c1e6c54176e2eff199a861ae971b3e06312da6be4187adbcc03a64107cb86abee7371c783dc50d0de62adfed5" alt=""><figcaption><p>Create a duplicate theme</p></figcaption></figure>

Continuing in Shopify, navigate to your [Online Store](https://admin.shopify.com/themes). Click on the ellipsis by your live theme, and select “Duplicate” to create the variant theme for your test. We recommend renaming this duplicate theme with “Shoplift Test” at the beginning, for clear communication within your team.

**Step 3: Edit your duplicate theme**

<figure><img src="https://codahosted.io/docs/zaYFwXnhGg/blobs/bl-993r7JswPj/d7d5cb0278835eb66c1f22b2ba0d82b8755f0da7e7a86dbbb6b6041fec6c0cf1cb39fe635572e4990310c4a4d6a8217a8e7a93dd443cb3a3abf141c257e90f77a98cb7b3a480b8903c25aea2aec05b88e6b6bdf24356c2f02d7355e69d55d526e9a7bdd1" alt=""><figcaption><p>Edit your duplicate theme</p></figcaption></figure>

After creating a duplicate theme in Shopify, click on the “Customize” button next to the duplicate theme to enter the Shopify Editor. Be sure to not click the “Customize” button on your *live* theme.&#x20;

{% hint style="info" %}
If the changes you want to test cannot be made through the Shopify Editor, you might need to implement custom code on your duplicate theme. If you need help, reach out to your developers or [customer support](broken://pages/BZDv9d1utwcXtufWrzA4).
{% endhint %}

In the Shopify Editor, click on your site’s header. This will open up the customization drawer for your header, where you change the site’s navigation menu. Click “Change” under the Menu section, and add the menu you just created to the duplicate theme. Remember to save your changes!

Now that you’ve staged your variant theme for testing, head over to Shoplift.&#x20;

**Step 4: Create a test**

In Shoplift, click “Create a Test” to enter the Test Draft page. In the Test Draft page, click “Test a theme or global element,” and select your live theme as your original theme.&#x20;

To select your variant theme, click “Select” and select the theme that has your changes staged on it. From here, you’re ready to specify test parameters and launch your test!


# Testing Shipping Thresholds

{% hint style="danger" %}
Setting up shipping threshold tests can be **very technical**, requiring thorough QA and monitoring to ensure tests are set up correctly. Therefore, we suggest working closely with a team of developers or upgrading to our [Pro plan](https://www.shoplift.ai/pricing) before launching a test on shipping thresholds.
{% endhint %}

Testing different free shipping thresholds requires passing test assignment data through to checkout. Here's the recommended approach:

{% stepper %}
{% step %}

#### Step 1: Create a JS API Test in Shoplift

Set up a new JS API test. This will generate two HypothesisIDs (one for each variant) that you will need to reference in your theme and checkout logic.
{% endstep %}

{% step %}

#### Step 2: Expose HypothesisIDs as Cart Attributes

Store the assigned HypothesisID as a cart attribute. This ensures the visitor's test assignment persists through to checkout, where shipping rates are determined.
{% endstep %}

{% step %}

#### Step 3: Create Shipping Methods in Shopify

Configure two separate shipping methods in Shopify, each corresponding to one of your test variants (e.g., free shipping at $50 vs. free shipping at $75).
{% endstep %}

{% step %}

#### Step 4: Implement Assignment Logic

You have two options:

**Recommended: Shopify Function** Write a Shopify Function that reads the cart attribute and returns the corresponding shipping rate at checkout. This approach is cleaner and more stable for checkout-level control.

**Alternative: Theme Logic** Implement similar logic directly in the theme (can do this with JS API or theme tests). This works but offers less reliable control at the checkout stage.
{% endstep %}
{% endstepper %}


# Testing a Mini Cart

Below, we'll cover some test ideas you could implement on your mini cart and give you step-by-step instructions on how to set them up.

### Mini cart tests

#### **CTA buttons**&#x20;

* Try adding various call-to-action (CTA) buttons to prompt user behavior.&#x20;
* Experiment with "View Cart," "Checkout," "Continue Shopping," or even go for custom options like "Add More" or "Upgrade to Premium" to see what works best for your customers.

#### **Product information**&#x20;

* Play around with how product information is displayed in the mini cart, such as showing product names, prices, quantities, and variations (like size or color) in different formats or styles.

#### **Cross-Selling and Upselling**&#x20;

* Promote additional products or upgrades, such as displaying related items, offering bundle deals, suggesting complementary products, or showcasing items frequently bought together.
* In most themes, adding a featured collection to your mini cart can be easily done through the Shopify Editor. We'll cover how to do just that in the test instructions below.

{% hint style="info" %}
Depending on your theme's editing capabilities, certain tests might require developers or special instructions to set up. If you need more help, contact [customer support](broken://pages/BZDv9d1utwcXtufWrzA4).
{% endhint %}

### How to test your mini cart

Mini carts exist at a theme-level. Therefore, to test a new mini cart, you have to test two themes against each other, each theme with its own mini cart. Follow the below steps to test mini carts on Shoplift. *If you or your developers have prepared the new mini cart on a staged theme, skip ahead to Step 3.*&#x20;

**Step 1: Create a duplicate theme**

<figure><img src="/files/1ALQgi3OgFj56ZoKqVuT" alt=""><figcaption><p>Create a duplicate theme</p></figcaption></figure>

In Shopify, navigate to your [Online Store](https://admin.shopify.com/themes). Click on the ellipsis by your live theme, and select “Duplicate” to create the variant theme for your test. We recommend renaming this duplicate theme with “Shoplift Test” at the beginning, for clear communication within your team.&#x20;

**Step 2: Edit your duplicate theme**

After creating a duplicate theme in Shopify, click on the “Customize” button next to the duplicate theme to enter the Shopify Editor. Be sure to not click the “Customize” button on your *live* theme.&#x20;

{% hint style="info" %}
If the changes you want to test cannot be made through the Shopify Editor, you might need to implement custom code on your duplicate theme. If you need help, reach out to your developers or [customer support](broken://pages/BZDv9d1utwcXtufWrzA4).
{% endhint %}

In the Shopify Editor, navigate to “Theme Settings” by clicking on the settings icon on the leftmost side of the page. Scroll to "Cart" settings, where you can view all of your customization options, and implement the changes you want to test. For example, you might want to add a featured collection.

<figure><img src="/files/nQq3EUeyTAIfKG7Oiazs" alt=""><figcaption><p>Example: Adding a featured collection</p></figcaption></figure>

When you’re done customizing your new mini cart, save your changes and head back to Shoplift.

**Step 3: Create and launch your test**

In Shoplift, click “Create a Test” to enter the Test Draft page. In the Test Draft page, click “Test a theme or global element,” and select your live theme as your original theme.&#x20;

To select your variant theme, click “Select variant theme” and select the theme that has your changes on it. From here, you’re ready to specify test parameters and launch your test!


# Testing App Blocks

Testing third-party app blocks is no different than testing other adjustments to your templates, and is supported on all JSON templates.

### How to test a third-party app block

To test an app block on a JSON template, select the template as your original when drafting your test.

Create your variant with the "duplicate" option, and then add, remove, reorder, edit, or hide the app block within the Shopify Theme Editor when editing your variant.

{% hint style="info" %}
Need some help? Please reach out to [Customer Support](https://docs.shoplift.ai/support/get-help), and we'd be happy to assist you.
{% endhint %}


# Testing One-Click Payment Methods

If you'd like to test the impact of one-click payment methods integrated with Shopify Payments (like Shop Pay, PayPal, Apple Pay, and more) on your product pages, you can easily do so by adding custom CSS to your variant product template to hide these payment methods.&#x20;

The test results will allow you to effectively measure the impact of these payment methods on your website and allow you to identify the degree of improvement, or lack thereof, that they provide.

### Step 1: Create a new product template test

<figure><img src="/files/8SB8PnZoLKQbSaqXYLkw" alt=""><figcaption></figcaption></figure>

* From the Shoplift Dashboard, click **Create Test** and select a product template as your original.&#x20;
* Then click **Duplicate** to create a variant template from your original template.

### Step 2: Hide Shopify Payments on your variant template

<figure><img src="/files/VYLhHToHnVEy8kD0l31C" alt=""><figcaption></figcaption></figure>

* Click **Edit in Shopify** to open up the Theme Editor and edit your variant template. Select your product details section or product information section from the list of sections on the left-hand sidebar.&#x20;
* Scroll through the section settings in the right-hand sidebar until you see a **Custom CSS** option.&#x20;
* Click this to reveal a field where you can write or paste custom CSS code (the CSS code will apply to this section on this template only).&#x20;
* Add the following code to this custom CSS field, and click **Save** to save your changes.

```
.shopify-payment-button {
  display: none;
}
shopify-payment-terms {
  display: none;
}
```

### Step 3: Preview your variant template and launch your test

* Return to Shoplift, and click **View in browser** to preview your variant template in a new tab. You should see that both the Shopify Payments buttons and the Shopify payment terms banner are hidden from sight.
* Launch your test and see the results roll in!&#x20;


# Identify Products Worth Price Testing

Prices get set at launch — based on cost, competition, or instinct — and then they sit. Months pass. Years pass. The market shifts, costs change, competitors reprice, and the original logic behind that $49.99 becomes increasingly hard to remember. Meanwhile, every sale is running at a margin that may have been wrong from day one.

This guide walks you through a three-step framework for figuring out which products to test, how to rank them by opportunity and risk, and how to sequence tests so each result builds on the last.&#x20;

***

### The Framework

This guide is organized around three steps, each one narrowing the field and adding a different layer of context.

* **ABC Classification:** Which products generate enough revenue to make a test worthwhile?
* **Margin Headroom Analysis:** Which products can absorb a conversion drop and still come out ahead on total profit?
* **Product Role Assessment:** Which direction should you test, and which products need extra care?

Each step feeds into the next. By the end, you have a ranked shortlist with a clear test direction for each product and a documented rationale for each decision.

{% hint style="info" %}
The steps draw from three established bodies of pricing research: **ABC/Pareto analysis** (a standard in retail inventory management), **Nagle and Müller’s break-even framework from The Strategy and Tactics of Pricing** (the academic standard in pricing strategy), and **McKinsey’s Key Value Item methodology** used in retail pricing. None of it requires a data team, it all runs in a spreadsheet.
{% endhint %}

***

{% stepper %}
{% step %}

### Tier Classification: Which Products Matter?

Before thinking about pricing at all, you need to know which products are worth the effort. This is simple: which products are selling at the highest volume. In many catalogs, a small number of SKUs generate a large majority of revenue. For example, your distribution might follow the 80/20 rule: roughly 20% of products drive roughly 80% of revenue. Alternatively, if you have a broader base of SKUs, your revenue could be more evenly distributed.

For price testing, this matters because a successful test on an A-tier product delivers far more impact than the same test on a C-tier product, for exactly the same time investment. Step 1 identifies your A-tier products so you’re not spending three weeks learning something that barely affects the business.

In Shopify, pull your **Total sales by product** report for the last 90 days: Analytics → Reports → Total sales by product. Export to a spreadsheet and sort by total revenue, descending. Then add two columns (or use our [template](https://docs.google.com/spreadsheets/d/1xo7QF7Riq_YdjbML72cTPFJXTJO9awBq1CHQ9b-aSos/edit?usp=sharing)).

#### How to Run the Analysis

* **Cumulative revenue:** A running total of revenue from the top of the list down. Row 1 equals that product's revenue. Row 2 equals Row 1 plus Row 2's revenue. And so on down the list.
* **Cumulative revenue %:** Each row's cumulative revenue divided by your total revenue across all products.

Once those columns are filled in, your tier cutoffs become visible in the **Cumulative revenue %** column:

* Everything up to roughly 80% is your A-tier.&#x20;
* The next band up to around 95% is your B-tier.&#x20;
* Everything below that is C-tier.&#x20;

In practice, you're looking for the row where the cumulative percentage crosses each threshold.&#x20;

* The products above that line are the ones you carry forward.&#x20;
* In a catalog of 45 products, this typically produces 8–10 A-tier SKUs.&#x20;
* In a catalog of 200 products, closer to 30–40.&#x20;

Either way, these are the only products you carry forward. C-tier products aren’t worth testing, because even a perfect outcome barely moves the business.

<figure><img src="/files/PbiFC6BULMrR6zf3ZRYG" alt=""><figcaption></figcaption></figure>

#### A Note on Seasonality

The 90-day window works well when it covers a typical trading period. If it includes a major peak, like a holiday, back-to-school, or summer peak, products that spike seasonally will look more important than they actually are for most of the year. If your window includes a peak, pull a second non-peak 90-day comparison. If products shift tiers significantly between the two windows, use the non-peak data. You want to test against sustainable volume, not a spike that’s already passed.

#### Don’t Ignore Traffic

While you’re in the data, pull one more report: **Sessions by landing page** (Analytics → Reports → Sessions by Landing Page, filtered to your product pages).&#x20;

Look for products with high traffic but lower-than-expected conversion rates. A product with 2,000 monthly sessions converting at 1.2% against a store average of 3% has a problem worth investigating, and price is one of the most common causes. These products may not qualify as A-tier by revenue. They’re still candidates for a price decrease test. Flag them separately — they’ll follow a different hypothesis and a different test strategy than your increase candidates.

<figure><img src="/files/SAbpiSzfjprNuwo1JZgL" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
**Output from Step 1**

Your list of A-tier products — typically 5–15 SKUs — plus any flagged high-traffic, low-conversion products. These are the candidates you carry into Step 2.
{% endhint %}
{% endstep %}

{% step %}

### Margin Headroom: Which Products Are Safest to Test?

Knowing which products matter tells you where to focus. Knowing which ones have margin room tells you how confidently you can test them. Products with higher gross margins can absorb a volume dip on a price increase without losing ground on total profit. This step ranks your A-tier candidates by that cushion.

#### The Logic: Nagle’s Break-Even Sales Change

This calculation comes from **Thomas Nagle and Georg Müller’s The Strategy and Tactics of Pricing**, the standard academic reference in pricing strategy. The formula finds the maximum volume decline that can occur before a price increase stops being profitable:

```
Break-Even Volume Change = −(Price Increase %) ÷ (Gross Margin % + Price Increase %)
```

Where Gross Margin % = (Price − COGS) ÷ Price, calculated using your current price before any change.

{% hint style="info" %}
A product with a 60% gross margin and a 10% price increase breaks even on profit even if sales volume drops by up to 14.3%. That’s the safe zone — the range within which the increase is still profitable even if some customers walk away.
{% endhint %}

#### The Counterintuitive Result for Low-Margin Products

Running the same formula on a product with a 20% gross margin and a 10% price increase gives a break-even threshold of 33.3%. That’s a larger allowable drop than the high-margin example, which seems backwards.

The reason comes down to per-unit economics. Raising the price of a low-margin product by 10% — moving contribution from $20 to $30 per unit — is a 50% improvement in profit per sale. Each remaining customer is worth dramatically more, so you can afford to lose more of them before the math turns negative.&#x20;

The same $10 increase on a high-margin product moving from $60 to $70 per unit is only a 17% improvement. The per-sale gain is smaller, so fewer lost customers tip the balance. A price increase is proportionally more powerful on a low-margin product because it changes the per-unit economics more dramatically.

That said, the percentage threshold isn’t the whole picture. The absolute dollar buffer tells a different story. A low-margin product losing 33 units × $20 contribution has $660 of room. A high-margin product losing 14 units × $60 has $858. High-margin products have a smaller percentage threshold but a larger dollar cushion.

One more thing the formula doesn’t tell you: **how much volume will actually drop**. Low-margin products tend to live in more competitive markets with more price-sensitive buyers. The actual volume loss from a price increase may exceed the break-even threshold even when the formula shows more theoretical room. Treat it as a planning tool, not a prediction.

#### How to Calculate It

For each A-tier product, you need:

* Current selling price
* COGS
* Gross Margin % = (Price − COGS) ÷ Price, using the current price before any change

Run the break-even formula at a hypothetical 10% price increase and rank your A-tier products by the size of the threshold. The larger the allowable volume drop, the more headroom the test has.

| Gross Margin | Break-Even Volume Drop at 10% Increase | Pricing Headroom                                         |
| ------------ | -------------------------------------- | -------------------------------------------------------- |
| 70%+         | \~12.5%                                | High                                                     |
| 50–69%       | \~13–17%                               | Medium                                                   |
| 30–49%       | \~17–25%                               | Lower (needs a strong hypothesis)                        |
| Below 30%    | 25%+                                   | Proceed carefully and factor in likely price sensitivity |

For reference across a wider range of scenarios:

| Gross Margin | 5% increase | 10% increase | 15% increase | 20% increase |
| ------------ | ----------- | ------------ | ------------ | ------------ |
| 20%          | 20.0%       | 33.3%        | 42.9%        | 50.0%        |
| 30%          | 14.3%       | 25.0%        | 33.3%        | 40.0%        |
| 40%          | 11.1%       | 20.0%        | 27.3%        | 33.3%        |
| 50%          | 9.1%        | 16.7%        | 23.1%        | 28.6%        |
| 60%          | 7.7%        | 14.3%        | 20.0%        | 25.0%        |
| 80%          | 5.9%        | 11.1%        | 15.8%        | 20.0%        |

#### What This Step Tells You

**High-margin products with large safe zones are your strongest increase test candidates.** They have the most room to explore, the most to gain from finding upside, and the most buffer if conversion dips temporarily during the test.

**Lower-margin products are still worth testing — they may just need a different kind of test.** If they showed up in Step 1 as high-traffic/low-conversion, a decrease test makes more sense than an increase. If you’re planning a COGS-driven price increase and need to validate it before committing store-wide, a de-risking test is the right frame.

{% hint style="success" %}
**Output from Step 2**

Your A-tier product list ranked by break-even headroom. The products at the top are your highest-confidence increase test candidates.
{% endhint %}
{% endstep %}

{% step %}

### Product Role Assessment: What Direction, and In What Order?

Revenue and margin data tell you which products to prioritize and how safely you can test them. They don’t tell you everything. A product’s role in your catalog — what it means to the customer, and what it does for your brand — affects both the direction of the test and how carefully you need to run it.

#### The Logic: Key Value Items and Product Roles

This step draws from **McKinsey’s Key Value Item (KVI) methodology** and retail category management practice.&#x20;

The underlying idea is that customers don’t treat all products the same way:

* Some products are what they notice, compare, and use to decide whether your brand is fairly priced.&#x20;
* Others are purchased without much thought about price at all.

Mis-pricing a KVI doesn’t just affect that product’s conversion rate. It shapes how customers feel about your whole store. A brand that pushes its hero product past the point customers find reasonable won’t just see that SKU underperform — shoppers will second-guess the rest of the catalog too.

Margin builders don’t carry that risk. Customers are buying without comparing heavily, and price isn’t the central factor in their decision. These are the products where testing is most forgiving and most rewarding.

#### The Four Product Roles

* **Traffic Drivers / KVIs:** products customers actively search for, compare across stores, and use to form their impression of your brand. These are typically your hero SKUs, your most-advertised products, or your entry-level gateway items. They set your price image. Getting them wrong costs you more than one conversion.
* **Margin Builders:** solid-volume products purchased without heavy comparison shopping. Customers chose your brand and are here to buy — price sensitivity is lower and testing headroom is larger. These are your best first candidates for increase tests.
* **Basket Builders:** products frequently bought alongside others: accessories, complementary items, add-ons. Their job is to complete a cart. Price them too high and they create friction at the worst possible moment.
* **Destination / Specialty Items:** lower-volume, highly differentiated products customers sought out specifically. Because shoppers came looking for these rather than stumbling across them, price sensitivity is often lower. They can be strong increase candidates when margin data supports it.

#### How to Classify Your Products

For each A-tier product, work through these questions:

* Is this product featured in paid ads, on your homepage, or in top navigation? It's likely a **KVI or Traffic Driver**.
* Is it an entry-level or introductory product that acquires new customers? It's likely a **KVI/Gateway**.
* Does it appear frequently in multi-product orders? It's likely a **Basket Builder**.
* Do customers search for it by name, or arrive at your store specifically for it? It's likely a **Destination/Specialty item**.
* None of the above: it's a **Margin Builder.**

Where to find this data:

* **Online Store:** Look at your global navigation and your homepage. What’s featured?
* **Shopify Analytics:** Reports → Sessions by Landing Page (which product pages pull the most direct and organic traffic?)
* **Your ad platforms:** Which product pages are in active campaigns?

#### What This Changes About Your Shortlist

The most important output of Step 3 is sequencing. Your highest-margin products might also be your KVIs. The break-even formula says they have the most headroom. Product role analysis says to test them second.&#x20;

A high-margin KVI is a handle-with-care candidate. Test your Margin Builders first. Learn the workflow, get comfortable reading results, and build some data before you touch anything high-stakes. Then approach your KVIs with smaller increments and closer monitoring.

One caveat: **not every brand has KVIs in the traditional sense**. If you're a premium or lifestyle brand, you're probably not competing on price at all. Your customers aren't comparison-shopping you against alternatives the way they would with a commodity product. Your edge is brand, design, and innovation, not being the known-value option. In that case, most of your catalog probably falls into Destination, Specialty, or Margin Builder territory. That's actually good news for testing, since those roles tend to have more headroom and lower risk.

{% hint style="success" %}
**Output from Step 3**

Each A-tier product labeled with a role, a test direction, and a wave assignment. Your shortlist is complete.
{% endhint %}
{% endstep %}
{% endstepper %}

***

### Pulling It Together: Your Price Testing Playlist

**Wave 1: Margin Builders in your A-tier.** High volume, strong margin headroom, and no significant role-based risk. This is where you learn the workflow, build confidence, and start generating margin improvements.

**Wave 2: KVIs and Traffic Drivers.** Bring Wave 1 learnings with you. Use a smaller initial increment, benchmark competitors first, and watch results more closely. The upside is real, but so is the downside if you miscalibrate.&#x20;

**Separate track: Decrease test candidates.** Products flagged in Step 1 for high traffic and low conversion are a different kind of opportunity. These are conversion plays with their own hypothesis and timeline.

#### Matching Products to Test Strategies

| If the product is…                                   | Recommended strategy                                                                             |
| ---------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| A-tier Margin Builder, price unchanged 12+ months    | Unlock hidden revenue: test a 5–15% increase                                                     |
| Any product facing COGS increases or tariff pressure | De-risk price increases: test the new price on a portion of traffic before committing store-wide |
| A KVI or Traffic Driver                              | Test conservatively: smaller increments, benchmark competitors first, monitor closely            |
| High-traffic but below-average conversion            | Test a decrease: price may be the primary friction                                               |

If a product fits more than one row, default to the more conservative test direction. De-risking a necessary increase before trying to find the ceiling is always the right order of operations.

***

### Three Sanity Checks Before You Finalize

Before committing your shortlist to a live test, run these three checks. Each takes under 10 minutes.

* **Check 1: Seasonality.** Did your 90-day window include a major peak? If yes, pull a non-peak comparison. Products that drop a tier in the off-peak window should be treated as B-tier candidates — you don’t want a test running at half-speed because peak season ended the week after you launched.
* **Check 2: Variant complexity.** The framework evaluates products as a whole. If any shortlisted product has significant conversion variance across variants — size, color, material — note it, but don’t let it stall you. Product-level analysis is the right starting point. Flag variants for a closer look after your initial tests.
* **Check 3: Competitor context.** For any KVI or Traffic Driver on your list, spend 10 minutes checking where your price sits relative to your top 2–3 competitors. A product already priced above the market is a riskier increase candidate than one with room to move.

***

### Write Your Hypotheses

Before launching any test, write down what you expect to happen and what you’ll do depending on the result. This takes 10 minutes and does two things: it forces you to articulate the reasoning behind the test, and it prevents you from rationalizing the outcome after the fact — especially on a null result.&#x20;

{% hint style="info" %}
**Hypothesis Format**

1. We believe \[product name] can support a \[X%] \[increase/decrease] because \[reason].
2. We expect conversion to \[remain stable / improve / decline no more than X%].&#x20;
3. If we see no statistically significant change, we will \[hold the new price and test a further increment / hold the current price and investigate other friction points].
   {% endhint %}

**Example hypothesis: Price increase**

1. We believe our Daily Cleanser can support a 12% price increase because it’s an A-tier Margin Builder with a 68% gross margin, the price hasn’t changed in two years, and our top competitors are priced higher.&#x20;
2. We expect conversion to remain within 5% of baseline.&#x20;
3. If we see no significant change, we’ll hold the increase and test a further 8% increment.

**Example hypothesis: Price decrease**

1. We believe our Starter Kit is priced above its role as a gateway product. Our new customer conversion rate on this product has declined over the past two quarters.&#x20;
2. A 10% decrease may recover conversion and improve downstream lifetime value.&#x20;
3. If we see no significant change, we’ll hold the current price and look elsewhere for the friction.”Pre-committing to what a null result means — in writing, before the test runs — keeps each test connected to the next one.

***

### What Good Test Results Looks Like

**Statistically Significant Outcomes**

When a test produces a statistically significant result, you’ve found a boundary. If conversion drops meaningfully after a 15% increase, you know where the ceiling is, or that you’ve crossed it. That’s useful information because you can price right up to the line with confidence.

**Inconclusive Outcomes**

When a test produces no statistically significant change, you have room to keep going. Customers absorbed the increase without noticing, or without caring. You can implement the new price and design the next test at a higher increment.&#x20;

Both outcomes are wins, because both tell you something actionable. The only outcome that wastes your time is drawing a conclusion before the data is ready, or stopping after a single test when there’s more to find.

Consider a brand that runs three sequential increases — +8%, +6%, +5% — and sees no conversion impact at any step. By the end, they’ve found a meaningfully better price without ever hitting a cliff. Each null result moved them forward.

{% hint style="info" %}
When a test shows no statistically significant change, take the increase and test higher. When it shows a clear result, you’ve found your boundary. Either way, you have something to work with.
{% endhint %}

***

### Common Mistakes

* **Testing C-tier products based on gut feel.** “This feels underpriced” might be right. But if the product sits in your C-tier, it won’t move the business even if you’re correct. Run the ABC classification first and let that narrow the field.
* **Testing your hero product first.** Test your Margin Builders first. Learn the workflow, get a feel for what results look like, and establish your hypothesis discipline before you put your most important SKU on the line.
* **Using peak-season data to assess volume tier.** A product that looks like a top-10 SKU in January based on November–January data may sit in the middle of the catalog for the other nine months. Check your window against your seasonal calendar before assigning tiers.&#x20;
* **Looking only at sales, ignoring traffic.** A product with 2,000 monthly sessions converting at 1.5% is more interesting than one with 400 sessions converting at 4%. The first has a problem worth diagnosing. Pull sessions by landing page data alongside your product sales data.
* **Reverting after a null result.** No statistically significant change means take the price and test higher. Reverting is the most common and most costly mistake in price testing.
* **Testing too many products at once.** Start with three to five products, or products in the same category or collection. More than that splits your focus and delays the learnings you need for Wave 2.
* **Ignoring product relationships.** A price change on a frequently bundled product affects how the whole cart feels. Check cross-sell relationships before launching and watch multi-product order rates alongside conversion during the test.

***

### Example: A Skincare Brand Works Through the Framework

A DTC skincare brand with 45 SKUs wants to identify their first price testing candidates.

{% stepper %}
{% step %}

### Step 1: ABC Classification

They export 90 days of Shopify Sales by Product data and sort by revenue. Nine products account for roughly 80% of revenue. This is their A-tier.

Before moving on, they check the window. It includes December. They pull a May–July comparison and find that two products, both gift-set SKUs, drop significantly in the off-peak data. Those are removed from the A-tier. Their final A-tier is 7 products.

They also pull sessions by landing page and flag the Starter Kit for high traffic and below-average conversion. This is a potential decrease test candidate, regardless of margin.
{% endstep %}

{% step %}

### Step 2: Margin Headroom Analysis

They cross-reference their A-tier with COGS records, flag two estimated rows, and run Nagle’s break-even formula at a hypothetical 10% increase.

| Product          | Gross Margin | Break-Even Threshold | Headroom Rank |
| ---------------- | ------------ | -------------------- | ------------- |
| Daily Cleanser   | 68%          | \~12.8% volume drop  | 1             |
| Vitamin C Serum  | 65%          | \~13.5%              | 2             |
| Hero Serum       | 71%          | \~12.4%              | 3             |
| Linen Face Towel | 72%          | \~12.2%              | 4             |
| Eye Cream        | 55%          | \~15.4%              | 5             |
| Body Oil         | 48%          | \~17.2%              | 6             |
| Starter Kit      | 41%          | \~19.6%              | 7             |

All seven have meaningful headroom, but the top four have the largest safe zones. The Starter Kit sits last, and combined with its Step 1 flag, it clearly needs a different test altogether.
{% endstep %}

{% step %}

### Step 3: Product Role Assessment

* Hero Serum: This is in all paid ads, navigation, and is brand-defining. It’s a KVI/Traffic Driver.
* Starter Kit: This is an entry-level product, and is the most common first purchase. It’s KVI/Gateway.
* Daily Cleanser, Vitamin C Serum, Linen Face Towel, Eye Cream, Body Oil: These are solid-volume products with no significant role risk. They’re Margin Builders.
  {% endstep %}

{% step %}

### The Final Price Testing Playlist

Wave 1 is four Margin Builders with strong headroom and no role-based risk. The goal here is to learn the workflow before touching anything higher-stakes.&#x20;

The Hero Serum moves to Wave 2 with a smaller increment and closer monitoring.&#x20;

The Starter Kit gets its own test and its own hypothesis, because it’s a customer acquisition play, not a margin play.

| Product          | Role           | Strategy                                  | Wave           |
| ---------------- | -------------- | ----------------------------------------- | -------------- |
| Daily Cleanser   | Margin Builder | Unlock Hidden Revenue (+10–12%)           | Wave 1         |
| Vitamin C Serum  | Margin Builder | Unlock Hidden Revenue (+10–12%)           | Wave 1         |
| Linen Face Towel | Margin Builder | Unlock Hidden Revenue (+10–12%)           | Wave 1         |
| Eye Cream        | Margin Builder | Unlock Hidden Revenue (+8–10%)            | Wave 1         |
| Hero Serum       | KVI            | Unlock Hidden Revenue (+8%, conservative) | Wave 2         |
| Starter Kit      | KVI/Gateway    | Test decrease (–10%), conversion play     | Separate track |
| {% endstep %}    |                |                                           |                |
| {% endstepper %} |                |                                           |                |

***

### Next Steps

Work through the steps in order, using our [template](https://docs.google.com/spreadsheets/d/1xo7QF7Riq_YdjbML72cTPFJXTJO9awBq1CHQ9b-aSos/edit?gid=0#gid=0).

1. Export 90 days of Shopify Sales by Product data and run the ABC classification
2. Add your margin data and calculate break-even headroom for your A-tier, using current prices for the contribution margin calculation
3. Classify each A-tier product by role
4. Run the three sanity checks: seasonality, variant complexity, competitor context
5. Write a hypothesis for each of your top three to five candidates, including your planned response to a null result
6. Launch your first Wave 1 test

Start with one product, then apply the same process to your full Wave 1 queue once you’re comfortable with how a test runs.&#x20;

Lastly, this isn’t a one-time exercise. Re-run it quarterly, or any time something meaningful changes: new supplier costs, a competitor reprice, completed test results, or new products entering your catalog. Products that were B-tier candidates today can move up quickly as conditions shift.


# Find a Winning Price Through Iterative Price Testing

A single price test tells you whether Price A or Price B performs better, but it doesn’t tell you if either is truly optimal. This guide walks you through a phased, iterative testing approach that systematically narrows in on your best price point through sequential tests. Along the way, you’ll learn how to interpret results correctly, avoid the most common mistakes, and know when you’ve found your answer.

***

### The Problem: One Test Isn’t Enough

Most merchants treat price testing as a yes/no question: “Should I raise my prices 10%?” But pricing is a spectrum, and stopping after a single test almost always means leaving money on the table.&#x20;

One test might reveal that a 15% increase maintains your conversion rate. But what about 18%? Or 22%? Without a follow-up test, you’ll never know.&#x20;

The same logic applies in the other direction: if you cut prices and volume doesn’t move meaningfully, you’ve taken a margin hit for nothing.The test-once approach to pricing fails in two directions:

* **Underpriced:** You stopped testing before finding the ceiling, so you’re still leaving margin behind on every sale
* **Overpriced:** You picked an increase without confirming the sweet spot, and conversion is silently suffering

A useful way to think about the stakes: academic research synthesizing 1,851 price elasticity estimates found a mean elasticity of −2.62, meaning a 1% price increase reduces demand by roughly 2.62% on average. But the variance across categories and brands is enormous. Some products can absorb a 30% increase without flinching. Others feel a 5% move immediately. Category-level benchmarks can’t tell you where your customers sit, which is exactly why you test.

{% hint style="info" %}
**The Real Cost of Stopping Early**

&#x20;If your product can support a 20% price increase but you only tested 10%, every future sale is running at a margin you left behind. That gap compounds, while iterative testing closes it.
{% endhint %}

***

### How Iterative Price Testing Works

Iterative price testing is a well-established methodology, practiced by companies from Amazon to smaller DTC operators, built on a simple idea: each test builds on the last, progressively narrowing the range until you converge on a price that can’t be meaningfully improved.

The underlying logic resembles a binary search. Start wide to eliminate large portions of the price spectrum quickly, then tighten around what’s working. In the first phase, you’re orienting rather than optimizing. For most products, three phases are enough:

* **Phase 1 (Wide Range):** Establish the general territory with a meaningful spread
* **Phase 2 (Narrow In):** Identify the specific boundary where customer behavior changes
* **Phase 3 (Fine-tuning):** For high-volume hero SKUs, dial in the precise optimal point

<table data-header-hidden><thead><tr><th width="88.875">Phase</th><th width="113.8671875">Scope</th><th width="187.23828125">Goal</th><th width="178.70703125">Test Range</th><th>When to Skip</th></tr></thead><tbody><tr><td>1</td><td>Wide range</td><td>Find the right territory</td><td>20–30% spread from current price</td><td>Never, always start with a wide spread</td></tr><tr><td>2</td><td>Narrow in</td><td>Identify the behavior-change boundary</td><td>10–15% spread from Phase 1 winner</td><td>Skip for low-traffic products</td></tr><tr><td>3</td><td>Fine-tuning</td><td>Precision optimization</td><td>5–8% spread from Phase 2 winner</td><td>Skip for most products, this step usually provides diminishing returns</td></tr></tbody></table>

{% hint style="info" %}
**Don't Start Too Narrow**

Opening with a small range like ±5% can mask the real opportunity. If you only test between $19.99 and $21.99, you might miss that your product sells comfortably at $26.99. Phase 1 should feel a little uncomfortable. The goal here is to identify clear boundaries in customer behavior.
{% endhint %}

***

{% stepper %}
{% step %}

### Establish Your Starting Hypothesis

Before you set up a test, define exactly what you’re trying to learn. This shapes your test design and protects you from rationalizing the results after the fact. There are three main hypotheses, and each points to a different test direction:

* **Ceilings:** “How high can I go before conversion drops?” This is the right framing when you’re facing margin pressure: tariffs, COGS increases, supplier hikes. You’re looking for how much customers will absorb.
* **Floors:** “Am I overpriced? Would lower prices drive enough volume to offset the margin loss?” This fits competitive pressure situations or when you’re entering a new market and unsure how you’re positioned.
* **Exploratory:** “I genuinely don’t know. I want to find the best price.” This applies to legacy pricing you’ve inherited, products that haven’t been touched in years, or new categories where you have no prior data.

Once you’ve identified your hypothesis type, write it as a falsifiable statement with a clear threshold. Something like: “I believe we can increase price by 15% without revenue per visitor dropping more than 5%.” Vague hypotheses lead to vague conclusions. A specific threshold forces a real decision when the data comes in.

{% hint style="info" %}
**Pro Tip**&#x20;

Document your hypothesis before launch and don’t read too far into early results. Acting on results before your sample size or significance is reached, called “peeking,” inflates false positive rates significantly. Set your criteria in advance, then let the test run.
{% endhint %}
{% endstep %}

{% step %}

### Know Your Sample Size Requirements

Many merchants plan a price test by picking a timeframe: “We’ll run this for three weeks and see what happens.” But calendar time alone doesn’t determine whether your results are trustworthy, sample size does.The benchmarks to keep in mind:

* Minimum: 50+ conversions per week to make testing practical at all
* Robust results: Target 300–400+ conversions per variant before drawing conclusions
* Statistical significance: 95% confidence and 80% statistical power (Shoplift will measure this for you)

If a single product doesn’t generate enough traffic to hit these thresholds in a reasonable timeframe, consider testing a price change across multiple similar products in the same category. Pooling observations from comparable SKUs gets you to significance faster without compromising the validity of the results.

{% hint style="info" %}
**Before launching, confirm:**

* Hypothesis written with falsifiable success criteria
* Baseline metrics recorded: CVR, AOV, RPV (last 60-90 days)
* Test period avoids known anomalies: sales, holidays, major promotions
* No other significant site changes planned during the testing window
  {% endhint %}
  {% endstep %}

{% step %}

### Design Your Phase 1 Test

Phase 1 has one job: eliminate large portions of the price spectrum as quickly as possible so you know which direction to focus on.&#x20;

How wide should your range be? If you have no prior pricing data for this product, open with a 25–30% spread. If you have some history, whether from a previous test or a comparable product, 15–20% is sufficient. Your range should be wide enough that you’d genuinely expect to see some difference in customer behavior. A spread too narrow produces weeks of inconclusive data.In dollar terms, that looks like:

* $50 product: $10–15 increment (20–30%)
* $100 product: $20–25 increment (20–25%)
* $200 product: $40–50 increment (20–25%)

A note on psychological price points: $49 → $59 can feel less alarming to a customer than $49 → $53, despite being a larger absolute jump, depending on the category you sell in. Customers process prices relative to familiar anchors: round numbers, $X9 endings, and category norms.&#x20;

When choosing your test price, land on a point your customers actually process naturally rather than an arbitrary percentage output from a calculator.

{% hint style="info" %}
Need assistance on designing your test or prioritizing which products to test? See [Identify Products Worth Price Testing](/learn/guides/identify-products-worth-price-testing)
{% endhint %}
{% endstep %}

{% step %}

### What to Measure

When your test is live, the metric that matters most is revenue per visitor (RPV). RPV captures the full picture: whether customers bought (conversion rate) and how much they paid (average order value).&#x20;

Conversion rate only captures whether they bought. For price tests specifically, that distinction is critical. If raising your price by 15% causes conversion rate to drop by 5%, that looks like a loss on conversion rate alone. But if the remaining buyers are spending 15% more each, revenue per visitor went up, and the higher price is generating more money from the same traffic — something conversion rate alone would have caused you to miss.

Think about metrics in tiers:

* Primary: Revenue per visitor (RPV), your decision metric
* Secondary: Conversion rate, AOV, units per transaction: these explain how RPV moved
* Diagnostic: Add-to-cart rate: these explain if and where customers dropped off

{% hint style="info" %}
**Pro tip**

When testing a price increase, a statistically significant result isn’t always what you’re hoping for. If you raise prices and see no significant change in RPV, customers absorbed the increase. It’s confirmation the market accepted your new price, and a signal to keep testing higher.
{% endhint %}
{% endstep %}

{% step %}

### Interpret Phase 1 Results and Plan Phase 2

Once your test has run to completion, it’s time to interpret what you learned and design Phase 2. The core question is whether the result hit a boundary or whether there’s more room to explore.

| Phase 1 Result                          | What It Tells You                                      | Phase 2 Action                       |
| --------------------------------------- | ------------------------------------------------------ | ------------------------------------ |
| Higher price, no significant RPV change | Customers absorbed the increase. This is a win         | Push higher to find the ceiling      |
| Higher price won significantly on RPV   | This indicates strong headroom exists above this price | Push higher still                    |
| Higher price lost significantly on RPV  | You’ve found or exceeded a ceiling                     | Test below this price point          |
| Lower price won significantly           | Volume gains may offset margin loss                    | Test whether going lower still helps |

Always run tests in full-week increments. A test ending mid-week may over- or under-represent high-purchase days and skew your results.

{% hint style="info" %}
**Pro Tip: Interpreting Results**

**The “absorbed with no significant change” result is where most merchants misread their data.** Seeing no statistically significant difference between your control price and a 25% increase doesn’t mean the test was inconclusive. It means 25% higher is sustainable, and you now have a mandate to find out how much further you can go.

**Don’t over-interpret small negative differences either.** If RPV dips slightly but falls short of statistical significance, treat that as a tolerance signal rather than a ceiling signal. Use margin preference as the tiebreaker. When in doubt, the higher price wins by default.
{% endhint %}
{% endstep %}

{% step %}

### Execute Phase 2

Phase 2 has a single goal: find the exact boundary where customer behavior changes.

Your increments should be 50–60% smaller than Phase 1:&#x20;

* If Phase 1 tested a ±$15 range, Phase 2 should test ±$6–8.&#x20;
* If Phase 1 tested ±25%, Phase 2 tests ±10–12%.&#x20;

You should tightening around what you found, not re-run the same test.

Compare Phase 2 results against the original baseline, not just against Phase 1:

* You want to know the total lift from where you started, not just whether Phase 2’s winner beat Phase 1’s winner.
* What you’re looking for in Phase 2: the highest price at which RPV shows no significant decline compared to the next price down.
  {% endstep %}

{% step %}

### Know When to Stop

Look for at least two of these convergence signals before stopping:

* Two consecutive phases show no significant RPV difference between adjacent prices
* The revenue difference between your two best-performing prices is smaller than your margin of error
* Price increments have narrowed below \~5% of product price and this delta doesn’t meaningfully change your margin
* You’ve completed three rounds of testing: diminishing returns almost always set in here

The time cost of an additional 3-week test phase rarely justifies the incremental precision it buys you. If you’re within 3–5% of the theoretical optimal price, stop and redirect that effort toward testing the next product.

When two prices perform equally, default to the higher one. The math is straightforward: equal conversion rate multiplied by a higher price produces higher RPV. The only reason to override this default is a documented brand positioning or competitive argument, not a hunch.

| Condition                                         | Decision                                                       |
| ------------------------------------------------- | -------------------------------------------------------------- |
| Higher price with no significant RPV change       | Push higher, you haven’t found the ceiling yet                 |
| Clear winner with room to push further            | Run another phase                                              |
| Clear winner at the edge of tested range          | Maybe: only if traffic supports a full-sample test             |
| No significant difference between adjacent prices | Choose the higher price                                        |
| Increments are now <5% of product price           | Stop, this is in diminishing returns territory                 |
| Three phases completed                            | Stop, you’ve likely found the optimal zone                     |
| Market conditions or promotions shifted mid-test  | Potentially invalid results, restart once conditions stabilize |
| {% endstep %}                                     |                                                                |

{% step %}

### Implement and Monitor

Once you’ve converged, commit to the winning price. Update your Shopify prices (Shoplift has a one-click solution for this), end the test, and let every visitor experience the optimized price. The full margin benefit only kicks in once you stop splitting traffic.&#x20;

Document the full testing journey before you close the file:

* Final winning price and implementation date
* Each phase: what you tested, what the results were, and why you made the next decision
* Original baseline metrics vs. new post-implementation baseline

Then set a calendar reminder to revisit in 6–12 months. Markets shift. A price that’s optimal today may have room to move a year from now, or may need to come down.&#x20;

Common triggers to re-test before your scheduled review:&#x20;

* a meaningful COGS change
* a new competitor entering your price range
* a major shift in your traffic mix
* a seasonal transition for a category-sensitive product.

Finally, carry the learnings forward. If Product A’s ceiling was +20%, similar products in the same category likely have comparable elasticity profiles. Use that to calibrate your Phase 1 range for Products B, C, and D. You’re building a pricing playbook for your store, and each test makes the next one faster.
{% endstep %}
{% endstepper %}

***

### Common Mistakes

* **Stopping after one test.** The most common mistake, and the most costly. A single test tells you that Price B beat Price A. It doesn’t tell you whether Price C, D, or E would have beaten Price B. Commit to at least two phases before implementing.
* **Starting Phase 1 with too-narrow a range.** Small increments feel safer, but they can waste weeks of time if you can push more aggressively. Phase 1’s job is to orient, not to optimize. If the spread doesn’t feel a little uncomfortable, it’s probably too narrow.
* **Treating “no significant change” as a null result.** When you raise a price and see no statistically significant change in RPV, it’s a confirmation that customers absorbed the increase. Read it as a green light rather than a lack of a clear outcome.
* **Measuring conversion rate instead of RPV.** Conversion rate doesn’t tell the full story. A price increase that slightly lowers conversion while meaningfully raising revenue per visitor is a win, and conversion rate alone calls it a loss. Set RPV as your primary metric before the test goes live.
* **Testing during abnormal traffic periods.** A test that runs during a sale event, a viral moment, or a major holiday is drawing from a customer pool that likely doesn’t represent your typical buyer. The winning price may fail completely under normal conditions. Check your marketing or sales calendar before you launch.
* **Peeking at results early.** Checking results before you’ve hit significance (or a clear indication it won’t reach significance) increases false positive rates significantly. It’s one of the most well-documented errors in A/B testing. Set your review date in advance and trust Shoplift’s significance evaluation rather than checking in daily.
* **Missing market shifts mid-test.** A competitor price cut or a relevant news cycle mid-test can invalidate your results entirely, because the context changed. Build a quick market check into your Phase 2 planning: has anything material shifted since Phase 1 ran?

***

### Category Benchmarks: What to Expect Before You Start

Before you design your first test, it helps to understand roughly where your category sits on the price sensitivity spectrum. This won’t tell you where your specific product lands. Only testing can do that. But it calibrates your Phase 1 range and sets realistic expectations for what you might find.

Price elasticity measures how sensitive demand is to price changes. A product with elasticity of −1.0 loses 1% of demand for every 1% price increase. A product at −0.5 is more “inelastic,” meaning customers tolerate increases better without pulling back.&#x20;

The academic benchmark for reference: a meta-analysis of 1,851 price elasticity estimates put the mean at −2.62, though the distribution is wide.

| Category                           | Typical Elasticity Range | What It Means for Testing                                |
| ---------------------------------- | ------------------------ | -------------------------------------------------------- |
| Prestige beauty / skincare         | −0.3 to −0.8             | High tolerance for increases; test wide, push upward     |
| Mass-market beauty                 | −1.5 to −2.0             | Moderate sensitivity; ±15–20% is a reasonable Phase 1    |
| Apparel (fashion / DTC)            | −1.2 to −1.8             | Moderate; brand differentiation matters significantly    |
| Apparel (commodity basics)         | −2.0 to −2.5             | Higher sensitivity; start with a tighter Phase 1 range   |
| Consumer electronics (accessories) | −2.0 to −3.5             | Highly elastic; test carefully and watch results closely |
| Home goods / lifestyle             | −1.0 to −1.8             | Wide variance; test to confirm where you sit             |

Two things worth keeping in mind when using this table:

* **Elasticity is asymmetric:** demand typically responds more strongly to price increases than to equivalent decreases, by a factor of 1.3× to 2.5× depending on the category. If you’re testing an increase, expect more sensitivity than the headline number implies.&#x20;
* **Premium and differentiated brands tend to sit at the lower end of their category range, while commoditized products sit toward the higher end.** A DTC skincare brand with a loyal following might behave more like the prestige range even if it’s priced at mass-market levels. Use these ranges to calibrate your Phase 1 spread, then let your data tell you where your product actually sits.

***

### Example Scenario: Finding the Ceiling on a Hero SKU

A DTC skincare brand has a hero serum priced at $68. The price hasn’t changed in 18 months despite a 12% COGS increase. The team suspects there’s room to move, but doesn’t want to risk their best-performing product on a guess.

**Phase 1 (Wide Range)**

* **Hypothesis:** “We believe we can increase price by at least 20% without a significant drop in RPV.”
* **Timeline:** They calculate their required sample size (approximately 400 conversions per variant) and estimate 3.5 weeks based on historical sales data. The test runs $68 (control) against $82 (+21%).
* **Results:** $82 RPV lands at $2.47/visitor vs. $68 at $2.31/visitor. The difference is not statistically significant, which is exactly what the team was looking for.
* **Learning:** Customers absorbed a 21% price increase with no meaningful impact on revenue per visitor, confirming the hypothesis and suggesting there may be headroom above $82.

**Phase 2 (Push Higher)**

* **Hypothesis:** “The ceiling may be above $82. Test $90 (+32%).”
* **Results:** after 3 weeks, the test shows a statistically significant drop in RPV: $90 RPV is $2.18/visitor vs. $68 at $2.38/visitor.
* **Learning:** The ceiling is somewhere between $82 and $90.

**Phase 3 (Find the Boundary)**

* **Hypothesis:** “The ceiling is above $82, but below $90. We’ll test $86 (+26%) against the original control price.”
* **Results:** $86 RPV is $2.41/visitor vs. $68 at $2.34/visitor, no significant difference, with $86 directionally ahead. Two consecutive phases have produced no significant difference between $82 and $86.
* **Learning:** Since and the increment between these two prices is now less than $5, the convergence criteria are met.
* **Decision:** Implement $86.
* **Outcome:** Margin increased from 54% to 62% with no statistically significant RPV impact. A calendar reminder is set for 6 months to re-evaluate.

***

### Next Steps

You now have everything you need to run a rigorous iterative price test. Here’s how to get started:

1. **Identify your first test candidate.** Look for products with high traffic, an unchanged price for 12+ months, and some margin pressure. See [Identify Products Worth Price Testing](/learn/guides/identify-products-worth-price-testing) for a full framework.
2. **Pull your baseline metrics.** Open Shopify Analytics and grab the last 90 days of sessions, conversion rate, AOV, and revenue for your target product. Save this before you change anything.
3. **Write your hypothesis.** One sentence, falsifiable, with a defined success metric and a threshold: “I believe we can increase price by X% without RPV dropping more than Y%.”
4. **Block time for Phase 2 planning before Phase 1 finishes.** The biggest risk to an iterative process is the pause between phases. Set stakeholder expectations early: pricing optimization can take 6–10 weeks, and that timeline is what makes the results trustworthy.


# How to Use Shopify Magic to Generate New Theme Blocks for Testing

Shopify’s AI-powered theme block generator is a fast and intuitive way to create new, customizable content blocks for your storefront — no coding required. Combined with Shoplift’s template testing capabilities, this becomes a powerful way to rapidly build and test new experiences before rolling them out broadly.

This guide walks you through how to use **Shopify Magic to generate new blocks**, and how to **quickly set them up in Shoplift for testing**.

{% stepper %}
{% step %}

### Set up a template test in Shoplift

1. **Log into Shoplift** and click **Create Test**.
2. On the **Test Draft** page, select **Test a template** and select the template you want to test from the drawer. This will be your Original (A).
3. Now create a variant. This will be the template that you generate a new theme block for. You can either **duplicate** your Original (A), or **select an existing template** from your theme to create your Variant (B).
4. Once you have a Variant (B) set in the draft, click **Edit in Shopify** to navigate to the theme editor and make changes to your variant template.
   {% endstep %}

{% step %}

### Generate a theme block with Sidekick

1. In the Shopify Theme Editor, confirm you are on your variant template by referencing the **template drop-down menu** in the top navigation.
2. Click the section you want to generate a new block for.
3. Click **Add Block.**
4. Click **Generate**.
5. Enter a prompt for the type of block that you want to generate. The more clear you are with your instructions, the better the result will be. For example: *"Create a product grid section with cards that display a drop shadow and slightly elevate when hovered over. Each card should contain the product image, title, price, and an add to cart button."*

{% hint style="info" %}
If you don't see the **Generate** button, click the **Sidekick** button in the Theme Editor (looks like a superhero, and is located next to the **Interact** and **Device View** buttons. When the Sidekick chat window opens, enter your prompt here.
{% endhint %}

6. **Submit** your prompt, and Shopify Magic will begin to generate your new theme block. You can follow along as it generates new liquid code for your theme in realtime.
7. When your new block is finished generating, add content and adjust the styling as you see fit. You can also continue to play with **Follow up instructions** to continue to tweak your new block.

<figure><img src="/files/cIsqxgwGiXQdesYa3RtN" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Launch your test!

1. Once your variant is ready for testing, return to Shoplift and configure the rest of your test settings, including device targeting, visitor targeting, and any custom audiences.
2. When everything looks good, click "Launch now". Or, if you want to schedule your launch for later, click the **Schedule test** button to set a schedule for an automated start and end time.
   {% endstep %}
   {% endstepper %}

## Why use Shopify Magic + Shoplift?

Using Shopify Magic to build new blocks allows for **rapid experimentation** without engineering involvement. With Shoplift, you can confidently test these new experiences and make data-backed decisions on what drives real impact.

This combo is perfect for:

* Testing promotional banners
* Creating custom product highlights
* Trying new layouts for upsells or bundles
* Adding content blocks for education or storytelling

## FAQ

**Can I edit the block code after using Shopify Magic?**

Yes. Generated blocks are added as editable Liquid sections. You can customize them like any other block.

**What if my theme doesn’t support Shopify Magic?**

Shopify Magic block generation is only available in **2.0 themes**. Consider upgrading your theme if you don’t see the options to generate blocks with Shopify Magic.

To learn more about how to generate new theme blocks with Shopify Magic, check out Shopify's guide [here](https://help.shopify.com/en/manual/online-store/themes/customizing-themes/theme-editor/shopify-magic/generate-blocks).


# 0/100 Tests

Most tests in Shoplift split traffic roughly 50/50 half of visitors see the original, half see the variant. But there are times when you want 100% of visitors to see the variant. That's what a 0/100 split is for.

A 0/100 split sends all traffic to the variant, with nobody in the original group. This turns Shoplift from an A/B testing tool into a targeted publishing tool letting you show a specific experience to all visitors, or to a specific segment, without permanently changing your live theme or templates.

Combined with scheduling and audience targeting, 0/100 splits are one of the most flexible tools in Shoplift.

### When to use a 0/100 split

#### Promotions and sale periods

Use a 0/100 split to change how your store looks and feels during a promotion, without touching your live theme. When the sale ends, you end the test and your store reverts automatically.

Some ideas:

* Add a global announcement bar counting down to a sale or product launch. Shoplift's Lift Assist™ includes countdown timers in the Urgency section that match your theme automatically.
* Display different countdown timers in different places a large widget on the homepage, a smaller bar on product and collection pages.
* Change theme colors or hero imagery to reflect a seasonal sale.
* Run a series of daily deals by stacking multiple 0/100 tests back to back, each with scheduled start and end times, one per day.

Schedule your test's start and end date to match your promotion exactly. Your store switches on and off without any manual intervention at midnight.

#### Pre-launch and product drops

Use a 0/100 split to control what visitors see before a product is publicly available.

For example: publish a new product in Shopify but use a 0/100 template test to hide the add to cart button and replace it with "coming soon" messaging. Set the test's end date to match your drop time. When the test ends, the add to cart button becomes visible again automatically.

#### Targeted personalization

Use a 0/100 split with audience targeting to show different experiences to different visitor segments, without running a traditional A/B test.

Some examples:

* Show a "welcome back" message and surface a recently viewed products carousel higher on the page for returning visitors only.
* Add a sticky add to cart button on product pages for mobile visitors only.
* Display a gift guide or curated collection to visitors arriving from a specific ad campaign.
* Hide or adjust promotions for visitors in a specific country.

You can also use 0/100 splits to roll out a winning test result to a specific segment. If a previous A/B test performed well for mobile visitors but not desktop, implement the change for mobile visitors only using a 0/100 split with device targeting.

{% hint style="warning" %}
Audience targeting is only available on the Advanced and Pro plans. On the Core plan, a 0/100 split applies to all visitors.
{% endhint %}

### How to set up a 0/100 split

#### Step 1: Create your test

Create a test in Shoplift as you normally would template test, theme test, or API test, depending on what you want to change. Set up the variant with the experience you want to show.

#### Step 2: Set the traffic split to 0/100

In the test settings, find the traffic split control and set it to **0% original / 100% variant**.

<figure><img src="/files/nMRDKjCTGgHAlxDzXBme" alt=""><figcaption></figcaption></figure>

#### Step 3: Add audience targeting (optional, Advanced and Pro plans)

If you want to limit the experience to a specific segment, open the **Audience** panel and configure your rules. You can target by:

* **Device type:** Show the variant to mobile visitors only, or desktop only. (*Available on All Plans*)
* **New vs. returning visitors:** Target first-time visitors or returning customers separately.
* **UTM parameters:** Show the variant only to visitors arriving from a specific campaign, ad set, or traffic source. Use `utm_source`, `utm_medium`, `utm_campaign`, or `utm_content` to match your campaign links.
* **GEO:** Target visitors in a specific country or exclude them from seeing the variant entirely. Useful for region-specific promotions or legal requirements around product availability.
* **Referrer:** Target visitors arriving from a specific website or domain.

{% hint style="info" %}
[More info on Audience Targeting](/test/targeting)
{% endhint %}

#### Step 4: Schedule a start and end date (optional)

If the experience should only run for a set period, set a start and end date in the scheduling settings. Shoplift will launch and end the test automatically at the times you specify.

#### Step 5: Launch the test

Review your settings and launch. 100% of eligible visitors (or 100% of the audience segment you defined) will now see the variant.

### What happens when the test ends

When a 0/100 test ends, either manually or at a scheduled end date, all visitors revert to the original experience. No changes are made to your live theme or templates. Everything returns to its default state automatically.


# Template Testing

Shoplift empowers merchants to conduct tests using Shopify templates, leveraging the full power of the Shopify Theme Editor. To learn more about template testing, explore the documentation below.

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><strong>Overview</strong></td><td>Explore how template testing works</td><td></td><td><a href="/pages/5gBKTrPLqfVjcXFEV527">/pages/5gBKTrPLqfVjcXFEV527</a></td><td><a href="/files/fH02cbqNQDctxcfTziGF">/files/fH02cbqNQDctxcfTziGF</a></td></tr><tr><td><strong>Theme Compatibility</strong></td><td>Learn which themes are compatible with template testing</td><td></td><td><a href="/pages/0tLevT37A12YTML8DFFa">/pages/0tLevT37A12YTML8DFFa</a></td><td><a href="/files/k8HNdUYNd4iREC2vNdAq">/files/k8HNdUYNd4iREC2vNdAq</a></td></tr><tr><td><strong>Switching Themes</strong></td><td>What to consider before changing your active theme</td><td></td><td><a href="/pages/7ulDUTQ8tQcn6dGHgRmX">/pages/7ulDUTQ8tQcn6dGHgRmX</a></td><td><a href="/files/zvjfZ8KoRFp1zy63Nihu">/files/zvjfZ8KoRFp1zy63Nihu</a></td></tr><tr><td><strong>Shopify Translate &#x26; Adapt</strong></td><td>Leverage Shopify Translate &#x26; Adapt</td><td></td><td><a href="/pages/aKPw89NK57tTnO6GCxey">/pages/aKPw89NK57tTnO6GCxey</a></td><td><a href="/files/vMkyAuUrBKovyZ8ooemt">/files/vMkyAuUrBKovyZ8ooemt</a></td></tr><tr><td><strong>Shopify Markets</strong></td><td>Implement tests across markets and contexts</td><td></td><td><a href="/pages/aNJlQNaTqgnEYhw2nc7v">/pages/aNJlQNaTqgnEYhw2nc7v</a></td><td><a href="/files/8DnJsDCdCMytaKIKnXxY">/files/8DnJsDCdCMytaKIKnXxY</a></td></tr><tr><td><strong>Template Management</strong></td><td>How to best manage templates over time</td><td></td><td><a href="/pages/zP84rkTQ8khkvAAzZwm4">/pages/zP84rkTQ8khkvAAzZwm4</a></td><td><a href="/files/occJ19lQX3BiIqjvYxxV">/files/occJ19lQX3BiIqjvYxxV</a></td></tr></tbody></table>


# Overview

Template testing unlocks the ability to optimize hundreds of pages with just one test. Read below to learn about Shopify templates and the capabilities of template testing.

### What is a template test?

Every Shopify theme is made up of *templates* — reusable layouts assigned to pages on your store. Your homepage uses one template, your product pages use another, and so on. A template test puts your current live template (the *original*) against a different version (the *variant*) and splits your traffic between them to measure which performs better.

Template testing is the most common test type in Shoplift. It's ideal for testing layout changes, section reordering, new content blocks, design tweaks, and anything else you can edit in Shopify's Theme Editor.

### What are Shopify templates?

<figure><img src="/files/nNkGPUwVE8dDh5jutU31" alt=""><figcaption><p>Shopify Templates</p></figcaption></figure>

**Templates** are files in your theme that give pages in your online store a consistent look and feel. Templates are constructed of **sections**, which are the distinct areas of a web page. Sections are constructed of **blocks**, which provide the content of each section, like headlines, images, and buttons. For more information on theme structure, see [Shopify Theme Structure](https://help.shopify.com/en/manual/online-store/themes/theme-structure).

Often times, a single template will power several pages on your store. For example, you might have a single product template that is "assigned" to hundreds of products. Shopify uses this framework so that editing store pages that require the same look, feel, functionality, or layout is easy and manageable at scale.&#x20;

In the Shopify Theme Editor, you can discover which templates are applied to which products, collections, and pages, and then edit them to customize the information displayed to your customers. Editing a template applies the changes to every product, collection, or page that uses that template. For example, if you add a newsletter signup form to a collection template, then all collection pages that use that collection template now display the newsletter signup form.

### Which templates can I test with Shoplift?

Shoplift allows merchants to test any template in their theme assigned to any page in your store:

* Homepage templates
* Collection page templates
* Product page templates
* Page templates
* Blog templates
* Article templates
* Cart page templates
* Search page templates

{% hint style="info" %}
Shoplift reads your live theme from Shopify, so only templates from your live theme will be available for testing. If you have multiple themes on your store, templates from other themes won't be available to test with Shoplift until you publish that theme.
{% endhint %}

### Are some templates incompatible with Shoplift?

All Shopify templates can be tested with Shoplift, but depending on how your theme was built, or if you use [page builder apps](/integrate/page-builder-apps) to build your store pages, you may have more or less flexibility when making changes for testing in the Shopify Theme Editor.

#### Liquid vs. JSON templates

Shoplift supports all Shopify themes, whether custom or from the Shopify Theme Store. However, there are a few important things to note. Templates are based on either a *liquid* or *JSON* architecture. This refers to the filetype of each template, as well as the code the template file uses. Templates constructed in liquid are based on the older template architecture, and are much more limited in their customization abilities. Templates constructed in JSON are the newest architecture provided by Shopify, and unlock significantly more editing capabilities in the Shopify Theme Editor, such as drag-and-drop sections. To determine if your template is compatible, see [theme compatibility](/test/best-practices/theme-compatibility).

#### Page builder templates

We fully support most page builder apps! However, there are a few things to know when setting up a test with [page builders](/integrate/page-builder-apps). Templates created with page builder apps (i.e. Replo, Pagefly, etc.) may create liquid templates, JSON templates, or a mix, depending on the type of template you are building (like a homepage or product page template). Most often, pagebuilder templates cannot be easily edited in the Shopify Theme Editor, and you must make changes in the app that created the template.

### How does template testing work?

To ensure a consistent shopping experience during testing, a test running on a selected template will show to visitors on every product, collection, or page assigned to that template in Shopify.

Here's an example: you have 50 products, and you want to test adding a list of benefits to your product pages. Rather than create 50 tests, where you are making this change on each page individually, Shoplift allows you to select the template assigned to those products and add the list of benefits to the variant.

Any shoppers who are placed in the variant bucket will now see that benefits list on all product pages across your entire store, as opposed to seeing it on a page-by-page basis depending on if they are served the A or the B variant.

{% hint style="info" %}
If you'd like to test products, collections, or pages individually, you can isolate it to its own template by following [these steps](broken://pages/ElB0m2SleogPLqJowLq4).
{% endhint %}


# Use Cases

## Template testing: use cases

Template tests are the right choice when you want to change what appears in the main content area of a specific type of page — the sections, layout, images, and text between your header and footer — without touching anything else about your store's design.

{% hint style="info" %}
**Not sure whether your change is template-level or theme-level?**&#x20;

Here's a quick rule of thumb: if the change would show up on every page of your store (header, footer, colors, fonts), it's a theme test. If it only affects one page type's content area, it's a template test.
{% endhint %}

### When to use a template test

Use a template test when the change you want to make lives inside a single page type's content area. That includes product pages, collection pages, your homepage, standalone pages, blog posts, and the cart page.

Template tests are a good fit when:

* You want to rearrange, add, or remove sections on a page type
* You want to change section settings like images, text, colors, or spacing
* You want to test a completely different layout for your product page or collection page
* You want to test changes across all pages of one type (all product pages, for example) or just one specific page

Template tests are **not** the right fit when you want to change your header, footer, navigation, announcement bar, global fonts, or global colors. Those elements live outside the template, so you need a theme test instead.

{% hint style="info" %}
Template tests run on **all products, collections, and pages** assigned to that template. Assignments are managed in Shopify, at the product, collection, and page level.&#x20;

If you only want to test changes on one specific product, see [Testing Individual Pages](/learn/guides/guide-testing-individual-pages).
{% endhint %}

### Product pages

This is the most popular use case for template testing. Your product page is where buying decisions happen, and small layout changes can have a meaningful impact on conversion.

**Test ideas:**

* Move customer reviews above the fold so visitors see social proof before scrolling
* Add a sticky add-to-cart bar that follows the visitor as they scroll
* Rearrange the product image gallery — try a single large image vs. a thumbnail grid vs. a carousel
* Simplify the page by removing sections that distract from the purchase decision (related products, blog posts, brand story)
* Add trust signals (shipping info, returns policy, secure checkout badges) closer to the add-to-cart button
* Test a tabbed layout for product description, shipping, and sizing info vs. stacked sections
* Add or remove an app block like size charts, product reviews, or countdown timers

{% hint style="info" %}
Start with your highest-traffic product pages. Changes there will reach statistical significance faster, and even small conversion improvements translate into meaningful revenue at scale.
{% endhint %}

### Collection pages

Collection pages are often the first page visitors land on from ads or search. The layout of your collection grid directly affects whether visitors click through to products.

**Test ideas:**

* Change the number of products per row (3 vs. 4 vs. 5 columns)
* Test a larger product image size vs. smaller images with more products visible
* Add a featured product banner at the top of the collection
* Show or hide quick-add-to-cart buttons on collection cards
* Test different filter and sort placements — sidebar filters vs. horizontal filter bar
* Add promotional content sections between product rows (lifestyle images, testimonials, brand messaging)
* Show or hide product review ratings on collection cards

### Homepage

Your homepage sets the tone for your entire brand. Template testing lets you try a new homepage design without committing to it.

**Test ideas:**

* Test a different hero section — new image, new copy, different call-to-action placement
* Rearrange the section order (featured collection first vs. brand story first vs. testimonials first)
* Add or remove sections like Instagram feeds, blog post previews, newsletter signups, or video content
* Test a shorter homepage that focuses visitors toward a single collection vs. a longer page that showcases more of your catalog
* Try a different featured collection — best sellers vs. new arrivals vs. seasonal picks
* Test a full-width hero image vs. a split layout with text alongside the image

{% hint style="info" %}
The homepage template controls only the main content area. Your header, announcement bar, footer, and navigation stay the same across both variants. If you want to test those elements too, use a theme test.
{% endhint %}

### Landing pages

If you use a Shopify page template to power one or more landing pages on your store, template testing is a natural fit. Whether you're driving paid traffic to a dedicated landing page or using pages for seasonal promotions, you can test the entire layout without affecting the rest of your site.

**Test ideas:**

* Test a short, focused landing page (single CTA above the fold) vs. a longer page with multiple sections and social proof
* Try different hero layouts for ad traffic — bold product imagery vs. lifestyle photography vs. video
* Add or remove trust signals like customer testimonials, press logos, or money-back guarantee badges
* Test the placement and style of your primary call-to-action button — top of page vs. after a benefit breakdown
* Compare a product-focused landing page against an education-first layout that leads with the problem your product solves
* Test different content for seasonal or promotional landing pages without touching your evergreen pages

### Blog and article pages

If your store has a blog, testing the article layout can increase engagement and drive more visitors from content to product pages.

**Test ideas:**

* Add product recommendation sections within or below blog articles
* Test a wider content column vs. a layout with a sidebar
* Add or remove social sharing buttons
* Test different call-to-action placements — inline CTAs within the article vs. a banner at the end
* Show related articles at the bottom vs. a featured collection

### Cart page

If your store uses a cart page (not a cart drawer), you can template test the cart layout to optimize for checkout completion.

**Test ideas:**

* Add urgency elements like "Items in your cart are not reserved" messaging
* Test a simplified cart layout that removes distractions and focuses on the checkout button
* Add cross-sell or upsell sections to the cart page
* Show or hide an order summary with estimated shipping and taxes
* Test different checkout button placements — top and bottom vs. bottom only

{% hint style="info" %}
If you have a cart drawer, this is controlled by global theme settings and require a theme test instead.
{% endhint %}

### Testing app blocks

Many Shopify apps add content to your pages through app blocks — review widgets, size charts, loyalty programs, wishlists, and more. Template tests can add, remove, or reorder these app blocks in your variant.

**Test ideas:**

* Add a reviews widget to your product page and measure its impact on conversion
* Test different placements for a size chart app block — above the add-to-cart button vs. below product details
* Remove a loyalty points display and see whether it affects average order value
* Reorder app blocks to see which arrangement drives the most engagement

{% hint style="warning" %}
Some apps may behave differently when loaded through a template test variant. Always preview your variant and check that app blocks render and function correctly before launching.&#x20;
{% endhint %}

### What template tests cannot change

Template tests only control the main content area **between** your header and footer. They **cannot** change:

* Header, navigation, or announcement bar (layout-level elements)
* Footer (layout-level)
* Global colors, fonts, or spacing (theme settings)
* Cart type — page cart vs. drawer cart (theme setting)
* Product prices (use a price test)

If your testing goal involves any of these, check [Choose the Right Test Type](/get-started/quickstart/choose-the-right-test-type)to find the right approach.


# Create a Template Test

A template test lets you compare two versions of a Shopify theme template to see which one drives more revenue. Test your homepage layout, product page design, collection page structure, or any other template in your theme.

### Set up your template test

{% stepper %}
{% step %}

### Create a new test

Open Shoplift and click **Create a test** in the top-right corner.
{% endstep %}

{% step %}

### Select your test type

Choose **Test content.**

<figure><img src="/files/520RVhXTIvYTAtCilrlD" alt=""><figcaption></figcaption></figure>

Then select **Test a template**.

<figure><img src="/files/bk9hBWbKw3vm8ztppPKF" alt=""><figcaption></figcaption></figure>

{% endstep %}

{% step %}

### Choose your original template

The template drawer opens, showing all the templates in your live theme — organized by page type (homepage, collections, products, and more).

Select the template you want to improve. This becomes your **A (Original)** — the version your visitors currently see.

<figure><img src="/files/LpNxeWell8hakgBWmimT" alt=""><figcaption></figcaption></figure>

The drawer shows how many pages are assigned to your selected template. Your test runs on all of these pages. For example, if your "Default product" template is assigned to 50 products, the test runs across all 50 product pages.

{% hint style="info" %}
Templates that aren't assigned to any pages can't be selected as your original, because they aren't live on your store. To change which template a page uses, go to the product, collection, or page editor in Shopify and update the template assignment there.
{% endhint %}
{% endstep %}

{% step %}

### Create your variant

Now choose how to create your **B (Variant)** — the version you'll test against your original. You have three options:

<figure><img src="/files/ubZdMqHHnyxVeb1ZuEIz" alt=""><figcaption></figcaption></figure>

**Duplicate your original**

Creates a pixel-perfect copy of your A template. This is the most common choice — start from an exact copy and make targeted changes in the Theme Editor. Best when you want to test specific, controlled changes (like reordering sections or swapping a hero image).

**Select an existing template**

Pick a different template that already exists in your theme to test against your original. This works well if you've already built an alternative layout you want to validate. You can select templates that aren't currently assigned to any pages — this is a great way to test a new design before assigning it to live pages.

**Create with Lift Assist™**

Browse Shoplift's library of recommended tests, featuring pre-built theme sections that are matched to your theme's style. Choose a test idea, customize it to your liking, and launch. Lift Assist™ takes the guesswork out of what to test next.

{% hint style="info" %}
Lift Assist™ is available on Advanced plans and above.
{% endhint %}
{% endstep %}

{% step %}

### Edit your variant in the Theme Editor

After creating your variant, click **Edit in Theme Editor** to open Shopify's Theme Editor. Make whatever changes you want to test — add sections, reorder content, update images, change copy, adjust styling.

<figure><img src="/files/bCazsE1YROJjYyfmJ3WL" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
Only edit the variant template. Changes to your original template will affect what all visitors currently see on your live store.
{% endhint %}

When you're done editing, save your changes in the Theme Editor and return to Shoplift.
{% endstep %}

{% step %}

### Configure your test settings

Set the following options before launching:

**Traffic allocation**

Choose what percentage of visitors see each version. Shoplift defaults to a 50/50 split, which is recommended for most tests. An even split reaches statistical significance fastest and gives you the clearest results.

**Goal**

Select the primary metric Shoplift uses to determine a winner. **Revenue per visitor (RPV)** is recommended for most tests because it captures both conversion rate and average order value in a single metric. Other options include conversion rate and add-to-cart rate.

**Hypothesis**

Write a short statement explaining what you expect to happen and why. A strong hypothesis follows this framework:

> **If** \[specific change you're making], **then** \[expected outcome], **because** \[reason you believe this].

For example: "If we add customer reviews above the fold on product pages, then RPV will increase, because social proof reduces purchase hesitation and builds trust."

A clear hypothesis helps you interpret results later. Even if your test doesn't win, a good hypothesis tells you *what you learned*.

**Device targeting**

Choose which devices your test runs on: **All devices** (recommended for most tests), **Mobile only**, or **Desktop only**. Use device targeting when your change only applies to one device type — for example, a mobile-specific sticky add-to-cart button.

**Visitor targeting**

Narrow your test to specific visitor segments:

* **All visitors**: recommended for most tests
* **New visitors only**: useful for testing first-impression elements like homepage layout
* **Returning visitors only**: useful for testing loyalty-focused features or repeat-purchase flows

{% hint style="info" %}
Visitor targeting is available on Advanced plans and above.
{% endhint %}

**Audience targeting**

For even more precise targeting, set rules based on:

* **UTM parameters**: target visitors from specific campaigns or traffic sources (for example, only test your homepage layout for visitors arriving from your Instagram ads)
* **Geographic location**: target visitors from specific countries or regions
* **Custom rules**: combine multiple conditions to target exactly the audience you want

{% hint style="info" %}
Audience targeting is available on Advanced plans and above.
{% endhint %}

<figure><img src="/files/4baeIQXab3OBoMj3EvR7" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}


# Previewing a Template Test

You can preview any test directly in your browser with Shoplift's **Preview Mode**. Preview Mode can be used on draft, active, and ended tests.

### Using Preview Mode

On a given test draft or report, hover over your variant preview and select **View in Browser**. This opens Preview Mode in a new tab.

<figure><img src="/files/QVV4aPtGcoF59W49gAN9" alt=""><figcaption></figcaption></figure>

When using preview mode, you can experience your test as a website visitor would.

### Switching Between Variants

At the bottom of the preview window, you’ll see a toolbar that lets you switch between:

* **Original (A**) – your current experience
* **Variant (B)** – your test experience

<figure><img src="/files/uViRUPc6f61as4BbflUl" alt=""><figcaption></figcaption></figure>

You can navigate across your site while the preview is active to see how each page looks when assigned to the A or B variant.

{% hint style="info" %}
**FAQ: Why do my edits show up on my original and variant previews?**

If making edits to a template test in Shopify affected your original template, you likely made theme-level edits to your variant template. You should revert these edits and set up a new test by clicking "Test a theme or global element."
{% endhint %}

### Exiting Preview Mode

To return to your live site, simply select Exit in the toolbar.

### Tips for a successful template test

* **Test one change at a time** when possible. If you change the hero image, button color, and page layout all at once, you won't know which change made the difference. Start with the change you think will have the biggest impact.
* **Let your test run long enough.** Wait until Shoplift shows statistical significance before making decisions. Ending a test early based on incomplete data can lead you to the wrong conclusion. Most tests need at least 14 days and several hundred visitors per variant.
* **Don't edit your original or variant mid-test.** Changing either template while the test is running can skew your results. If you need to make changes, pause the test first.
* **Run as many tests as you want.** Shoplift has no limit on how many tests you can run at the same time. You can run template tests, price tests, and other test types concurrently. Behind the scenes, Shoplift automatically manages which tests each visitor sees to keep your results clean and reliable.


# Ending a Template Test

When your template test reaches statistical significance, it's time to review the results and decide what to do next. This guide covers how to end a test, apply a winning variant, and clean up unused templates.

### End your test

When you're ready to stop your test, open the test in Shoplift and click **End test**. This stops traffic splitting immediately — all visitors will see your original template again until you apply a variant.

#### Pausing a test

If you need to temporarily stop a test to make quick fixes or edits, you can click **Pause** instead of ending it. Pausing reverts all traffic (including visitors who were seeing the variant) back to the original while the test is paused. Your test data stays intact so you can resume later.

{% hint style="warning" %}
Avoid pausing tests unless absolutely necessary. Extended pauses can compromise your test data. If you need to pause for more than a short period, end the test instead, duplicate it to a new draft, and relaunch when you're ready.
{% endhint %}

### Apply your winning variant

If your variant outperformed the original and you want to make it permanent, click **Apply variant**.

<figure><img src="/files/yw7riDFGLSMCx52q1ZyJ" alt=""><figcaption></figcaption></figure>

Applying a variant reassigns every page that's currently on your A (original) template to your B (variant) template. For example, if your original "Default product" template was assigned to 50 products, all 50 products will now use the winning variant template instead.

After applying, your variant becomes the new live template for those pages. Visitors will only see the winning version going forward.

{% hint style="warning" %}
Always double-check your test results and preview the variant before applying.
{% endhint %}

### What happens to your old template

Your original template isn't deleted when you apply a variant. It stays in your theme, available in case you need to revert or reference it later.

Over time, as you run more template tests, your theme may accumulate templates you no longer need. Keeping unused templates around won't affect store performance, but it can make your theme harder to navigate.

#### Delete unused templates

If you're sure you no longer need an old template, you can remove it through Shopify's Code Editor:

1. In your Shopify admin, go to **Online Store** > **Themes**.
2. Click **Edit code** on your live theme.
3. In the left sidebar, expand the **Templates** folder.
4. Find the template file you want to delete and click the trash icon.

{% hint style="danger" %}
Deleting a template in the Code Editor is permanent and cannot be undone. Before deleting, verify that the filename matches the exact template you want to remove. If you accidentally delete an active template, any pages assigned to it will fall back to Shopify's default template for that page type. This is a safety mechanism, but if your pages rely on custom layouts or content, they may not display correctly on the default template.
{% endhint %}

{% hint style="success" %}
Not sure which template is which? Open the template drawer in Shoplift or check **Online Store** > **Themes** > **Customize** in Shopify to preview each template before deciding what to delete.
{% endhint %}


# Troubleshooting Template Tests

Running into issues with a template test? This guide covers the most common problems and how to fix them.

### I accidentally edited my original template

If you make changes to your A (original) template instead of your B (variant), those changes go live immediately for all visitors, including those not in your test.

#### How this happens

The Shopify Theme Editor looks the same whether you're editing your original or your variant. It can be easy to accidentally switch to the wrong template without realizing it.

#### How to prevent it

Before making any edits, check the template name at the top of the Theme Editor. Your variant template will have a different name from your original. Confirm you're editing the variant before making changes.

<figure><img src="/files/kuSdyU84XiGbFf5d2bCG" alt=""><figcaption></figcaption></figure>

#### How to fix it

If you've already made changes to your original:

1. **Undo immediately** if you're still in the Theme Editor. Use **Ctrl+Z** (Windows) or **Cmd+Z** (Mac) to revert your changes, then click **Save**.
2. **If you've already saved and closed**, you'll need to manually revert the changes. Open your original template in the Theme Editor and undo whatever you changed.
3. **If you're not sure what changed**, check your theme's version history in Shopify. Go to **Online Store** > **Themes** > **...** (more actions) > **View version history** to see recent edits.

{% hint style="warning" %}
Edits to your original template affect your live store right away, whether or not a test is running. Always double-check which template you're editing.
{% endhint %}

### My variant looks broken or unstyled

If your variant page is missing styles, has a broken layout, or looks different from what you expected, your theme likely has code that checks the template name using an exact match. This is the most common technical issue with template tests.

#### Why this happens

When Shoplift creates a variant, it duplicates your template with a slightly different filename. For example, `product.liquid` becomes `product.sl-XXXXXXXX.liquid`.

Some themes include code that checks the template name to load styles, scripts, or sections. Code like this:

liquid

```liquid
{% if template == 'product' %}
  {{ 'product-styles.css' | asset_url | stylesheet_tag }}
{% endif %}
```

This code loads styles only when the template name is exactly `product`. Your variant's template name is `product.sl-XXXXXXXX`, so the check fails and the styles don't load. The page appears broken or unstyled as a result.

#### What to look for

Common symptoms include:

* Missing CSS (the page looks unstyled or uses default browser styling)
* JavaScript features not working (sliders, tabs, accordions, product image galleries)
* Sections that appear on your original but are missing from your variant
* Navigation highlighting not working on variant pages
* The wrong page layout being applied

#### How to fix it

This requires a small update to your theme code. If you're comfortable editing Liquid, you can make the change yourself. Otherwise, share this section with your developer.

The fix is to replace exact template name checks with `contains`, which checks whether a string appears anywhere in the template name instead of requiring an exact match:

liquid

```liquid
{% comment %} ❌ This breaks in template tests {% endcomment %}
{% if template == 'product' %}

{% comment %} ✅ This works in template tests {% endcomment %}
{% if template contains 'product' %}
```

This works because your variant's template name is `product.sl-XXXXXXXX`, which still contains the string `product`. The `contains` check passes for both your original and variant templates.

The same fix applies to any template type:

liquid

```liquid
{% if template contains 'collection' %}
{% if template contains 'index' %}
{% if template contains 'page' %}
```

#### Where to look in your theme code

The conditional checks that cause this issue are usually in your theme's global files, not in the template itself. Search your theme files for `template ==` or `if template` .

To search your theme code, go to **Online Store** > **Themes** > **Edit code**, then use the search bar to find `template ==`.

### My variant changes are showing on my original pages too

If changes you made to your variant are also appearing on your original, this is usually the same theme code issue described in My variant looks broken or unstyled, just showing up differently.

In some cases, theme code applies logic based on the page type rather than the specific template. For example, a snippet that adds a banner to "all product pages" will affect both your original and variant because they're both product templates. The fix is the same: update your theme code to distinguish between templates using `request.page_type`, `template.suffix`, or Shopify objects.

If the changes are coming from a section that's shared across templates (like a global header or footer), those sections aren't part of the template test. Changes to shared sections affect your entire store. To test changes to shared sections, use a theme test instead.

***

**Still need help?** [Contact Shoplift support](https://support.shoplift.ai/).


# Template Management

As you run template tests in Shoplift, you may notice that your theme is accruing a large number of templates that were created for the purposes of testing in the past.

As Shopify themes have a limit of 1000 templates, it's a good idea to periodically run through your theme and remove any templates that are no longer needed, are outdated, or were used in tests in the past that are no longer relevant.

### How can I clean up the templates in my theme?

To clean up templates in your theme, you can open the Shopify Code Editor for a given theme and remove them one by one.

To open up the Code Editor, navigate to [Online Store](https://admin.shopify.com/themes) > Themes from the Shopify Admin. Find the theme that you want to clean up, and click the "More" dropdown. Click "Edit Code". This will open up the Code Editor.

In the left sidebar, there will be a number of folders, one of which is titled "Templates". To remove a template from your theme that is no longer needed, simply right click on the template name and select the option to "Delete Permanently".

{% hint style="danger" %}
Deleting templates from your theme is an advanced workflow that is high-risk and can have irreparable consequences on your store if done incorrectly. Only delete templates you are absolutely certain are not required by pages on your store.&#x20;

Prior to deleting any templates on your live theme, it is recommended that you create a backup of your theme by duplicating it in Shopify, or by downloading the theme file.
{% endhint %}


# Switching Themes

### Can I change my theme during a live template test?

Yes! You can change your active theme while your tests are live, as switching themes is often a core part of the theme management workflow for Shopify stores. That being said, you need to ensure that templates are consistent across your themes.

{% hint style="info" %}
If you change your theme often, we suggest that you plan your testing strategy around this workflow as not to interrupt testing.
{% endhint %}

### Make sure your templates are consistent

In order to run template tests, both the original and variant templates must be present in your active theme.&#x20;

If you are running an active test and switch themes, the test will not be affected if the original and variant templates are included in your new theme. So, if you switch from one theme to a new theme via the Shopify Admin, or from one version of a theme to a new version via Github, make sure that your tested templates are included in the new theme.

Occasionally, tests will be drafted and templates will be created after a branch for a new theme has been created. In this case, there is potential for the new theme to exclude any templates created for the currently active test when the theme is published.

If you publish a new theme and one or more tested templates are not present in your live theme, then Shoplift will proactively pause your test to ensure that store visitors are not being redirected to a variant that does not exist. If your test is paused because a template is not present in your live theme, simply add the template from your previous theme to your new theme to resume your test.&#x20;

### Make sure you have all required files

If you often switch or deploy new versions of your live theme, ensure that any theme files created by Shoplift are present in your new theme:

* **theme.liquid tracking script:** make sure that the Shoplift tracking script is maintained in your theme.liquid file directly after the opening \<head> tag
* **shoplift.liquid tracking snippet:** make sure that in the /snippets directory in your new theme, you have the shoplift.liquid tracking snippet included
* **shoplift.css Brand Styles asset:** if you use Brand Styles and Lift Assist™ theme sections for testing, then ensure that your Brand Styles CSS file persists in your new theme
* **"sl" prefixed sections and snippets:** if you use Lift Assist™ theme sections for testing or on your live website, then ensure that your new theme includes any section and snippet files with the file prefix of "sl" (like "sl-image-hero", for example).


# Shopify Markets

Many merchants sell internationally with [Shopify Markets](https://help.shopify.com/en/manual/markets). Shoplift is fully compatible with Shopify Markets, but there are some things to consider when running tests. We'll run through each below.

### Redirecting markets and URLs

With Shopify Markets, merchants can redirect website visitors based on location to different domains, subdomains, and regional or language-based URL paths.&#x20;

For example, for a US-based store with markets-based storefront customizations for Canadian visitors:

* Domain redirects would redirect visitors from store.com to store.ca
* Subdomain redirects would redirect visitors from [www.store.com](http://www.store.com) to ca.store.com
* Region and language URL path redirects would redirect visitors from [www.store.com](http://www.store.com) to [www.store.com/en-ca](http://www.store.com/en-ca)

Since Shoplift tests are based on Shopify themes, if your various markets have the same storefront with the same theme, Shoplift tests will run on your markets redirects without any issues.

{% hint style="info" %}
**FAQ: How do I isolate my A/B test to specific markets?**

If you want to isolate your test to a specific market, you can use our geo-targeted audiences feature to ensure your test only runs on visitors from a specific country or group of countries. Our audiences feature is available to Advanced and Pro plans. To learn more about this feature, see [Custom Audiences (UTMs, Referring Domains, and Geo-Targeting)](/test/targeting/custom-audiences-utms-referring-domains-and-geo-targeting).
{% endhint %}

### Markets contexts (context templates)

In addition to markets redirects, the Shopify Theme Editor allows merchants to make contextual customizations to theme templates for each market.&#x20;

For example, a US-based store could change the copy, imagery, or layout on their homepage for Canadian visitors. Upon making these customizations, Shopify will create a context template in your theme, where the customizations are stored.

<figure><img src="/files/LgDm9lh5KwKTXqgbOPY2" alt=""><figcaption></figcaption></figure>

If your store leverages context templates, please be aware that due to Shopify limitations, Shoplift is unable to recreate the contextual customizations on variant templates that are duplicated for testing, and contextual changes will need to be recreated on the duplicated variant.

{% hint style="info" %}
**FAQ: How do Shopify Markets impact Theme tests?**

There should not be any issues with Shopify Markets on theme tests, if you're testing duplicate themes. When you duplicate a theme in Shopify, the original theme's contextual changes will carry over. Unlike template and URL tests, theme tests will maintain the URL structure. That being said, we recommend discussing your theme setup with your developers before testing.
{% endhint %}

{% hint style="warning" %}
If you use markets contexts on your templates, ensure you recreate the contextual customizations on template tests that use duplicated variants. Otherwise your test variant will not display the regional customizations that have been made on your original.
{% endhint %}

### Markets contexts (context templates)

To learn more about Shopify Markets and context templates, reference their [official documentation](https://help.shopify.com/en/manual/online-store/themes/customizing-themes/store-contextualization).


# Shopify Translate & Adapt

Similar to contextual copy, creative, or layout changes made to storefront templates for specific markets, many merchants will leverage the official Shopify [Translate & Adapt ](https://apps.shopify.com/translate-and-adapt)app to translate their storefront into different languages for each market.

At the moment, auto-translation of templates created for testing in Shoplift is unsupported. If you leverage Translate & Adapt on your store, below is a guide for how to translate templates created in Shoplift for testing.

### How to translate templates for testing

#### Step 1: Create your variant template in Shoplift

Using the template testing feature, create your test variant in Shoplift as you would for a normal test. Your variant template will be contain the suffix of "sl-templateID" in the filename. This is how you will identify your template in the Translate & Adapt app when you make your translations.

#### Step 2: Make your edits and adjustments to your variant template

Prior to translating your variant template, make the changes you want to test to untranslated variant in the Shopify Editor. This will ensure that your translations apply to the edits you are making for the purposes of the test.

#### Step 3: Locate your variant template in Translate & Adapt

Open the Translate & Adapt app in Shopify and, using the navigation sidebar populated with template names, locate the name of the template mentioned in Step 1. Once you've located the template, you can make the translations necessary for each market.

#### Step 4: Save your translations and launch your test

Once you've made your translations on the variant template, you are ready to launch your test. If you have a VPN, we recommend using it to review your translations for each market.

{% hint style="success" %}
**FAQ: How does Translate & Adapt impact Theme tests?**

There should not be any issues with translations on theme tests. We rely on Shopify previews and alternate themes for theme tests, meaning the URL structure is maintained. Template and URL testing are different, requiring a re-translation of those pages. That being said, we recommend discussing your theme setup with your developers before testing.
{% endhint %}


# Theme Testing

Shoplift offers a robust theme testing feature that empowers merchants to test two themes against one another. Theme tests allow you to test changes to elements that appear across your entire website, like navigation menus, mini carts/cart drawers, new apps, or entirely new themes that introduce major design or functionality overhauls to your online store's core experience.

To learn more about theme testing, explore the documentation below.

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Overview</strong></td><td>Explore how theme tests work</td><td><a href="/files/fH02cbqNQDctxcfTziGF">/files/fH02cbqNQDctxcfTziGF</a></td><td></td><td><a href="/pages/L5jqYhggBxBiqV8OueI9">/pages/L5jqYhggBxBiqV8OueI9</a></td></tr><tr><td><strong>Theme Management</strong></td><td>How to best manage themes over time</td><td><a href="/files/occJ19lQX3BiIqjvYxxV">/files/occJ19lQX3BiIqjvYxxV</a></td><td></td><td><a href="/pages/rjDZh7HcVe7Sn8SIBkTR">/pages/rjDZh7HcVe7Sn8SIBkTR</a></td></tr><tr><td><strong>Theme Compatibility</strong></td><td>Understand which themes work with Shoplift</td><td><a href="/files/k8HNdUYNd4iREC2vNdAq">/files/k8HNdUYNd4iREC2vNdAq</a></td><td></td><td><a href="/pages/1nuLbzE9bbsUdWbHRnVf">/pages/1nuLbzE9bbsUdWbHRnVf</a></td></tr><tr><td><strong>Theme Development</strong></td><td>Ensure you are following best practices</td><td><a href="/files/TOZlrqRqmbRzOWwYJdpp">/files/TOZlrqRqmbRzOWwYJdpp</a></td><td></td><td><a href="/pages/Ra7GUF34ez3aZAj16wkC">/pages/Ra7GUF34ez3aZAj16wkC</a></td></tr><tr><td><strong>Switching Themes</strong></td><td>What to consider before changing your theme</td><td><a href="/files/zvjfZ8KoRFp1zy63Nihu">/files/zvjfZ8KoRFp1zy63Nihu</a></td><td></td><td><a href="/pages/00j8qYE45ZoEcWMGsvXl">/pages/00j8qYE45ZoEcWMGsvXl</a></td></tr></tbody></table>


# Overview

A theme test compares your entire live Shopify theme against a different version of that theme. Unlike a template test (which tests a single template), a theme test swaps everything: the header, footer, global styles, fonts, colors, cart type, and every template in the theme.

### How theme tests work

When you run a theme test, Shoplift splits your traffic between two themes:

* **Control**: your current live (published) theme. This is what visitors normally see.
* **Variant**: a separate, unpublished theme. Shoplift redirects visitor to a preview of this theme for visitors assigned to the variant group.

{% hint style="info" %}
**FAQ: Will my website visitors see the theme preview bar?**

No. Shoplift hides the theme preview bar for all website visitors participating in a theme test, for as long as the theme test is active. When the theme test ends, Shoplift will return any visitors on the preview theme to the live theme.
{% endhint %}

Once a visitor is assigned to the variant, they see the variant theme on every page for the duration of the test. Return visitors continue seeing the same theme they were originally assigned to.

{% hint style="info" %}
Theme tests require a brief page redirect for variant visitors on their first page load. Shoplift's anti-flicker system prevents the control theme from being visible during this redirect, so the experience feels seamless.
{% endhint %}

### When to use a theme test

Use a theme test when the change you want to test affects elements that are shared across your entire store, not just a single page type. Some common examples:

* **Header and navigation design**: Test a new header layout, a sticky nav bar, or a different menu structure
* **Footer content**: Test adding trust badges, changing link layout, or adding a newsletter signup
* **Announcement bar**: Test different messaging, styling, or whether to show one at all
* **Global styling**: Test new brand colors, fonts, spacing, or a visual refresh across the whole store
* **Cart experience**: Test a drawer cart vs. a dedicated cart page
* **Sitewide layout changes**: Test a new page width, section spacing, or design system

#### Theme test vs. template test

If your change only affects one page type (like the product page or homepage), use a template test instead.

Use a theme test when:

* Your change involves the header, footer, or announcement bar (these are section groups shared across all pages)
* You're changing global theme settings like colors, fonts, or cart type
* You're testing changes across multiple page types at once
* You want to test a completely different theme design

Use a template test when:

* Your change is limited to a single page type (product pages, collection pages, homepage, etc.)
* You're testing section-level changes like reordering content or adding a new block

### What theme tests can change

Because a theme test swaps the entire theme, it can change anything that lives within the theme:

* Header and footer layout, content, and styling
* Announcement bar text, design, and visibility
* Global colors, fonts, and spacing
* Cart type (page cart vs. drawer cart)
* All template files and their configurations
* Custom Liquid, CSS, and JavaScript

### What theme tests cannot change

Theme tests swap the *theme*, not the *store*. Anything stored at the store level stays the same across both themes:

* **Product data**: titles, descriptions, images, prices, and variants
* **Collection content**: which products belong to which collections
* **Page and blog content**: the body text of pages and blog posts
* **Checkout configuration**: checkout layout and branding
* **Shipping, payments, and discounts**: these are store-level settings

{% hint style="info" %}
Want to test product prices, images, or descriptions? Those are store-level data, not theme-level, so they can't vary between themes. Use a price test for prices or a URL redirect test for other product-level changes.
{% endhint %}

#### Other notes

{% hint style="danger" %}
It is important to end your theme tests in Shoplift prior to deleting any themes. Otherwise, your website visitors may be redirected to the deleted theme, which will present them with an error on your store.
{% endhint %}

{% hint style="warning" %}
Creating and deploying page builder pages while a theme test is active will pause your active theme test, since the template is not shared by both original and variant themes. For more information, see [Theme Compatibility](/test/test-compatibility).
{% endhint %}


# Use Cases

## Theme testing: use cases

Theme tests are the right choice when you want to change something that affects your entire store — your header, footer, navigation, announcement bar, global colors, fonts, or cart behavior. These elements live outside any single page template, so only a theme test can vary them between visitors.

{% hint style="info" %}
**Not sure whether your change is template-level or theme-level?**&#x20;

Here's a quick rule of thumb: if the change would show up on every page of your store (header, footer, colors, fonts), it's a theme test. If it only affects one page type's content area, it's a template test.
{% endhint %}

### Navigation and menus

Your navigation is one of the highest-impact elements on your store. It determines how easily visitors find products, and even small changes to menu structure or layout can influence conversion.

**Test ideas:**

* Simplify your main menu by reducing the number of top-level items and see whether it improves click-through to collections
* Test a mega menu with product images and featured collections vs. a simple dropdown list
* Rearrange menu item order — put your best-selling collection first vs. organizing alphabetically
* Add a "Shop All" or "Best Sellers" link to the main navigation and measure its impact
* Test a horizontal navigation bar vs. a hamburger menu on desktop

{% hint style="warning" %}
Menu duplication doesn't exist in Shopify. You'll need to manually create a second menu in **Online Store > Navigation** with your variant structure, then point your variant theme's header section to the new menu.
{% endhint %}

### Announcement bar

The announcement bar is prime real estate at the very top of your store. It's one of the first things visitors see, and testing its content can have a surprisingly large effect on behavior.

**Test ideas:**

* Test different messaging: free shipping threshold vs. discount code vs. new collection launch
* Try removing the announcement bar entirely — does a cleaner look improve the shopping experience, or does removing the incentive hurt conversion?
* Test a multi-slide rotating announcement bar vs. a single static message
* Change the bar's color or styling to make it more (or less) prominent
* Add urgency language ("Ends tonight") vs. evergreen messaging ("Free shipping over $75")

### Header layout

Beyond the menu itself, the header's overall design affects how visitors orient themselves on your store. Testing different header configurations can influence everything from search usage to cart engagement.

**Test ideas:**

* Test a sticky header that follows visitors as they scroll vs. a static header that disappears
* Try a minimalist header (logo + menu + cart only) vs. a feature-rich header with search bar, account link, and wishlist icon
* Move the search bar from a hidden icon to a prominent, always-visible input field
* Test logo placement — centered vs. left-aligned
* Add a "quick links" row below the main header with your top collections or a seasonal promotion

### Footer

Footers are easy to overlook, but they're often where visitors go to find trust signals, policies, and secondary navigation. Testing your footer can improve both trust and discoverability.

**Test ideas:**

* Add a newsletter signup form to the footer and measure its impact on email capture
* Test a detailed multi-column footer (collections, policies, about, social links) vs. a minimal single-row footer
* Add customer service contact info (phone number, chat link, email) prominently in the footer
* Include trust badges (secure checkout, money-back guarantee, shipping partner logos) and measure whether they affect conversion
* Test adding a "recently viewed products" section above the footer

### Global colors, fonts, and styling

Your brand's visual identity — colors, typography, spacing, button styles — is controlled by global theme settings. Theme testing lets you evaluate design changes across your entire store at once.

**Test ideas:**

* Test a brand refresh with updated colors and see how visitors respond before committing
* Try a different body font (more readable, more modern) and measure time on site and conversion
* Test larger vs. smaller product card sizing across your store
* Change your primary button color — does a high-contrast button improve add-to-cart rates?
* Test increased whitespace and section padding for a more open feel vs. a denser layout that shows more content above the fold
* Try a dark mode variant of your store for evening/night traffic

{% hint style="info" %}
Global style changes affect every page. Preview your variant across multiple page types — homepage, product page, collection page, cart — to make sure everything looks right before launching.
{% endhint %}

### Cart type

Whether your store uses a cart page or a cart drawer (slide-out panel) can significantly affect checkout flow. Cart type is a global theme setting, so testing it requires a theme test.

**Test ideas:**

* Test a full cart page vs. a slide-out cart drawer and measure which drives more completed checkouts
* If you already use a cart drawer, try a drawer with upsell recommendations vs. a minimal drawer with just the cart contents
* Test adding an "Express checkout" button (Apple Pay, Shop Pay) to the cart drawer

{% hint style="warning" %}
If you use a third-party cart app (like Rebuy Smart Cart or Slide Cart), test both variants carefully. The app may need separate configuration in each theme, and conflicts between the native cart and the app's cart can cause unexpected behavior.
{% endhint %}

### Full theme redesign

With theme testing you can evaluate an entirely new theme before making it your default. Instead of launching a redesign and hoping for the best, you can run it as a test and let real visitor behavior tell you whether the new design performs better.

**Test ideas:**

* Test a new Shopify theme (from the Theme Store or a custom build) against your current live theme
* Evaluate a major redesign of your existing theme — new layout, new sections, new visual direction
* Test a seasonal or holiday-themed version of your store during peak shopping periods
* Try a simplified, conversion-focused design for paid traffic vs. your full brand experience

{% hint style="success" %}
When testing a full redesign, start by duplicating your live theme and making changes to the duplicate. This guarantees template compatibility and gives you a clean starting point. Building from a completely different theme is possible, but requires more setup to ensure all templates match.
{% endhint %}

### Multi-page changes

Sometimes a test idea touches multiple page types at once — for example, adding a promotional banner to both product pages and collection pages, or changing how product cards look everywhere they appear. Because template tests only affect one page type at a time, these cross-page changes are a natural fit for theme testing.

**Test ideas:**

* Add a site-wide promotional banner above the content area on every page type
* Change product card design (image ratio, hover effects, badge styling) everywhere they appear — collections, search results, recommendations
* Test a new "quick view" popup across all collection and search result pages
* Update your store's social proof display (review counts, trust badges) consistently across all page types

### What theme tests cannot change

Theme tests swap between two complete Shopify themes, so they can change anything that lives in the theme. But some things are managed at the store level in Shopify, outside the theme entirely. Theme tests **cannot** change:

* Product data (titles, descriptions, images, prices, variants)
* Collection membership or sort order rules
* Menu item content (the items themselves are store-level; only menu *selection* in the header is theme-level)
* Pages, blog posts, or other content resources
* Shipping rates, payment providers, or checkout configuration
* Discount codes or automatic discounts
* Installed apps or app settings

For price changes, use a price test. For sending visitors to a different page entirely, use a URL redirect test.


# Create a Theme Test

A theme test compares your entire live Shopify theme against an alternate version. Everything can differ between the two themes: header, footer, global styles, colors, fonts, cart type, and every template.

### Set up your theme test

{% stepper %}
{% step %}

### Select your original (A)

Open Shoplift and click **Create a test**.&#x20;

Then select **Test Content.**&#x20;

Select **Test a theme or global element**.

This opens the theme drawer, where you can see the themes in your Shopify theme library. Your live (published) theme is shown by default. Select it to use as your **A (Original)**.

<figure><img src="/files/2SgWVIkHPOsUwMiq4A6s" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
You can also draft a theme test on an unpublished theme if you want to prepare a test in advance and launch it once that theme goes live. Click the **Theme Library** tab in the drawer to view your unpublished themes and select one as your original.
{% endhint %}
{% endstep %}

{% step %}

### Select your variant (B)

Next, choose the theme you want to test against your original. Your **B (Variant)** can be any theme in your library. Select the theme to load it into your test draft.

<figure><img src="/files/v9eoFwPLz2oSdvopLgte" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**FAQ: How many themes can I have in my library?**

The amount of themes you can have in your library depends on your Shopify plan. Shopify Plus stores can have up to 100 themes, while other Shopify plans can have up to 20.
{% endhint %}

{% hint style="info" %}
**FAQ: Why are some themes "missing templates?"**

Some themes might be missing templates that are currently assigned to pages on your site by your live theme. These templates are required for your site to function normally. To resolve this issue, see [Theme Compatibility](/test/test-compatibility).
{% endhint %}

If your variant theme is already set up the way you want it, skip ahead to step 4.
{% endstep %}

{% step %}

### Edit your variant theme

If you need to make changes to your variant theme before testing, click **Edit in Shopify** from the test draft. This opens the Shopify Theme Editor with your variant theme loaded so you can make your changes.

<figure><img src="/files/9KsTeNylDoRjueKWt3hX" alt=""><figcaption></figcaption></figure>

From here you can edit anything in the theme: rearrange sections, swap out images, change the header layout, update your announcement bar, adjust global styles, and more.

<figure><img src="/files/G5FZngfFFUyyb0ncDIBp" alt=""><figcaption></figcaption></figure>

If your changes require custom code (like editing Liquid templates, CSS, or JavaScript), you or a developer can open the theme files in the Code Editor instead. Go to **Online Store** > **Themes**, find your variant theme, and click **Edit code**.

When you're done, save your changes and return to Shoplift.

{% hint style="warning" %}
Make sure you're editing the variant theme, not your live theme. Changes to your live theme affect your store immediately, whether or not a test is running.
{% endhint %}
{% endstep %}

{% step %}

### Configure your test settings

Set the following options before launching:

**Traffic allocation**

Choose what percentage of visitors see each version. Shoplift defaults to a 50/50 split, which is recommended for most tests. An even split reaches statistical significance fastest and gives you the clearest results.

**Goal**

Select the primary metric Shoplift uses to determine a winner. **Revenue per visitor (RPV)** is recommended for most tests because it captures both conversion rate and average order value in a single metric. Other options include conversion rate and add-to-cart rate.

**Hypothesis**

Write a short statement explaining what you expect to happen and why. A strong hypothesis follows this framework:

> **If** \[specific change you're making], **then** \[expected outcome], **because** \[reason you believe this].

For example: "If we add customer reviews above the fold on product pages, then RPV will increase, because social proof reduces purchase hesitation and builds trust."

A clear hypothesis helps you interpret results later. Even if your test doesn't win, a good hypothesis tells you *what you learned*.

**Device targeting**

Choose which devices your test runs on: **All devices** (recommended for most tests), **Mobile only**, or **Desktop only**. Use device targeting when your change only applies to one device type — for example, a mobile-specific sticky add-to-cart button.

**Visitor targeting**

Narrow your test to specific visitor segments:

* **All visitors**: recommended for most tests
* **New visitors only**: useful for testing first-impression elements like homepage layout
* **Returning visitors only**: useful for testing loyalty-focused features or repeat-purchase flows

{% hint style="info" %}
Visitor targeting is available on Advanced plans and above.
{% endhint %}

**Audience targeting**

For even more precise targeting, set rules based on:

* **UTM parameters**: target visitors from specific campaigns or traffic sources (for example, only test your homepage layout for visitors arriving from your Instagram ads)
* **Geographic location**: target visitors from specific countries or regions
* **Custom rules**: combine multiple conditions to target exactly the audience you want

{% hint style="info" %}
Audience targeting is available on Advanced plans and above.
{% endhint %}

<figure><img src="/files/4baeIQXab3OBoMj3EvR7" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}


# Previewing a Theme Test

You can preview any test directly in your browser with Shoplift's **Preview Mode**. Preview Mode can be used on draft, active, and ended tests.

### Using Preview Mode

On a given test draft or report, hover over your variant preview and select **View in Browser**. This opens Preview Mode in a new tab.

When using preview mode, you can experience your test as a website visitor would.

### Switching Between Variants

At the bottom of the preview window, you’ll see a toolbar that lets you switch between:

* **Original (A**) – your current experience
* **Variant (B)** – your test experience

<figure><img src="/files/uViRUPc6f61as4BbflUl" alt=""><figcaption></figcaption></figure>

You can navigate across your site while the preview is active to see how each page looks when assigned to the A or B variant.

### Exiting Preview Mode

To return to your live site, simply select Exit in the toolbar.


# Ending a Theme Test

When your theme test reaches statistical significance, it's time to review the results and decide what to do next. This guide covers how to end a test, apply a winning variant, and clean up old themes.

### End your test

When you're ready to stop your test, open the test in Shoplift and click **End test**. This stops traffic splitting immediately — all visitors will see your original (published) theme again until you apply a variant.

#### Pausing a test

If you need to temporarily stop a test to make quick fixes or edits, you can click **Pause** instead of ending it. Pausing reverts all traffic (including visitors who were seeing the variant theme) back to your original published theme while the test is paused. Your test data stays intact so you can resume later.

{% hint style="warning" %}
Avoid pausing tests unless absolutely necessary. Extended pauses can compromise your test data. If you need to pause for more than a short period, end the test instead, duplicate it to a new draft, and relaunch when you're ready.
{% endhint %}

### Apply your winning variant

If your variant theme outperformed the original and you want to make it permanent, click **Apply variant**.

Applying a variant **publishes your variant theme**, making it the new live theme for your store. All visitors will see the variant theme going forward.

{% hint style="warning" %}
Applying a variant publishes a new theme to your live store. Before applying, verify that all templates, app blocks, app embeds, and third-party integrations work correctly on the variant theme.
{% endhint %}

### What happens to your old theme

Your original theme isn't deleted when you apply a variant. It becomes an unpublished theme in your Shopify theme library, available in case you need to revert or reference it later.

Over time, as you run more theme tests, your library may accumulate themes you no longer need. Shopify has a limit on how many themes you can store (20 on standard plans, 100 on Shopify Plus), so it's worth cleaning up periodically.

#### Delete old themes

If you're sure you no longer need an old theme, you can remove it from your theme library:

1. In your Shopify admin, go to **Online Store** > **Themes**.
2. Scroll down to the **Theme library** section.
3. Find the theme you want to remove, click the **...** menu, and select **Delete**.

{% hint style="danger" %}
Deleting a theme is permanent and cannot be undone. Before deleting, confirm you're removing the right theme by checking the name and the last-edited date. If you have active tests using that theme, end them first.
{% endhint %}


# Troubleshooting Theme Tests

Running into issues with a theme test? This guide covers the most common problems and how to fix them.

### A third-party app isn't working on the variant theme

Some Shopify apps inject code or use app blocks that are configured per theme. When you duplicate your theme for testing, the app may need to be set up separately on the variant theme.

#### How to fix it

1. Open your variant theme in the Theme Editor (**Online Store** > **Themes** > **Customize** on the variant).
2. Check that any app embeds are toggled on in the **App embeds** section.
3. Check that app blocks are present in the same sections and templates where they appear in your live theme.
4. If the app has its own settings dashboard, verify that it recognizes and is configured for the variant theme.

{% hint style="info" %}
Some apps store their configuration at the store level and work across all themes automatically. Others are theme-specific. If you're unsure, check the app's documentation or contact their support team.
{% endhint %}

### I accidentally edited my live theme instead of the variant

If you made changes to your live (control) theme instead of the variant, those changes affect all visitors immediately, including those not in your test.

#### How to prevent it

Before editing, always confirm which theme you have open. In the Shopify Theme Editor, the theme name appears at the top of the editor. Your variant theme will have a different name from your live theme (for example, "Theme Test — New Header v2").

#### How to fix it

1. **Undo immediately** if you're still in the Theme Editor. Use **Ctrl+Z** (Windows) or **Cmd+Z** (Mac), then click **Save**.
2. **If you've already saved and closed**, manually revert the changes by editing your live theme back to its original state.
3. **If you're not sure what changed**, check your theme's version history: go to **Online Store** > **Themes** > **...** > **View version history**.

### Shoplift is redirecting me away from theme previews

Shoplift includes safeguards that redirect visitors away from unpublished theme previews under certain conditions. After a theme test ends, Shoplift redirects any visitors still on the variant theme back to the live theme. It also redirects untracked visitors who are viewing a theme preview, because they could be real shoppers who shouldn't be on an unpublished theme.

These safeguards can sometimes interfere with normal theme development workflows, like previewing an unpublished theme in your browser or sharing preview links with your team.

#### How to exclude yourself from redirects

Append `isShopliftMerchant=true` to your theme preview URL. This tells Shoplift that you're a merchant, not a visitor, and disables the redirect behavior for your browser.

Your preview URL should look like this:

```
https://your-store.myshopify.com/?preview_theme_id=1234567890&isShopliftMerchant=true
```

This also works for:

* Preview links you share with teammates
* Incognito browser windows
* Automated testing tools like Selenium or Puppeteer

#### How to re-enable redirect behavior

To reset the merchant flag and re-enable normal redirect behavior, add the parameter with a value of `false`:

```
https://your-store.myshopify.com/?isShopliftMerchant=false
```

#### How to check your current merchant flag

If you need to verify whether the merchant flag is set in your browser:

1. Open your browser's developer tools (**Cmd+Shift+C** on Mac, **Ctrl+Shift+C** on Windows).
2. Click the **Application** tab (in some browsers this is called **Storage**).
3. Expand **Session Storage** in the left sidebar and select your store's domain.
4. Look for an item called `Shoplift_Session`. The `isMerchant` attribute inside it shows your current value.

### My theme test was automatically paused

If Shoplift paused your theme test automatically, it's usually because a new page was published with a template that doesn't exist in your variant theme. Shoplift pauses the test to prevent visitors from landing on a broken page.

For example, if you create a new product template called `product.holiday` in your live theme and assign products to it, but your variant theme doesn't have a `product.holiday` template, visitors assigned to the variant would see an error on those pages. Shoplift catches this and pauses the test.

#### How to fix it

1. Add the missing template to your variant theme. The easiest way is to copy the template content from your live theme: go to **Online Store** > **Themes**, open the Code Editor on your variant theme, and create the missing template file. Then copy the code from your live theme to your variant theme.
2. Back in Shoplift, open the paused test. You'll see an error modal explaining which templates are missing.
3. Click **Recheck theme** in the modal. Shoplift will verify that the variant theme now has all the required templates.
4. Once the check passes, resume your test.

{% hint style="info" %}
To avoid this issue, add any new templates to both your live theme and your variant theme before assigning pages to them.
{% endhint %}

***

**Still need help?** [Contact Shoplift support](https://support.shoplift.ai/).


# Switching Themes

When running theme tests, you may occasionally need to make changes to your main theme while the test is active, or publish a new main theme entirely.&#x20;

For example, if your business is running a sale while a theme test is ongoing, you'll want to make sure that the sale is represented in the same way on both themes, to prevent interaction with the test data for the changes you are testing.

Depending on the types of changes being made, there are a few different methods to go about this.

## Publishing a new main theme while a theme test is active

In the case that you need to publish a new main theme while your theme test is active, Shoplift will automatically update your Original (A) theme in your test to your new main theme.

Please note that the usual guidelines around theme compatibility still apply. To learn more about theme compatibility as it pertains to theme tests, see [theme compatibility](/test/test-compatibility).

## Updating your B theme to match your new main theme

In the case that you published a new main theme with changes that might impact your test, you will want to ensure that your Variant (B) theme includes the same changes made to your main theme. There are a few options for updating your Variant (B) theme to match your main theme, and the best method will depend on the scope of changes made to your main theme versus the scope of the changes you are testing on your Variant (B) theme.

#### Make the same edits on your Variant (B ) Theme in the Shopify Theme Editor

In the case that the scope of changes made to your new main theme are smaller than the scope of changes you are testing, it is easier to make the same changes to your Variant (B) theme from the Shopify Theme Editor or Code Editor.&#x20;

To do this, open up the Theme Editor for your Variant (B) theme from Shopify or Shoplift. Make the changes you recently made to your Original (A) theme, and hit "Save". Once you save your changes, your B theme will include these changes in the test.

#### Update your Variant (B) Theme to a new theme within Shoplift

In the case that the scope of changes made to your new main theme are larger than the scope of changes you are testing, it may be easier to swap out your existing Variant (B) theme for a new theme that is based off of your new main theme, and then reimplement the changes you are testing.

If this is the case, duplicate your main theme, and reimplement the edits that you are currently testing.

Then update your Variant (B) theme in Shoplift to this new theme.

To do this, navigate to your Test Report, and click the Options menu (three dots) next to your Variant (B) theme. You will see a "Swap Variant (B) Theme" button. Click this button to open up your Theme Library.

Select the theme you recently created, and want to use to replace your existing Variant (B) theme. When selected, your Variant (B) theme in the test will automatically update to this new theme.

<figure><img src="/files/8QyrrqJCd8ONGzLPN1LX" alt=""><figcaption><p>Swapping your Variant (B) theme</p></figcaption></figure>


# Theme Management

Depending on your Shopify plan, you will have a maximum limit of 20 themes (Basic, Shopify, Advanced) or 100 themes (Shopify Plus).

As you create and run theme tests, you may reach your theme limit, and need to remove themes. Here are some best practices on how to safely manage themes for your Online Store.

### Create a backup

Before removing a theme from your Online Store, ensure you have a backup. Either duplicate the theme in Shopify, or download a ZIP file of your theme that you can reupload later. If you are at your theme limit, you will need to download the backup.

### Ensure active theme tests have ended, and are no longer live on your website

Before removing a theme from your store, it is important to ensure that any active theme tests using that theme are no longer live in Shoplift. You will also want to ensure that they are no longer live on your website. Shoplift tests usually end instantly, but occasionally there can be slight delays that will end the test on your website a few minutes after ending the test in Shoplift.

{% hint style="danger" %}
It is important to end your theme tests in Shoplift prior to deleting any themes. Otherwise, your website visitors may be redirected to the deleted theme, which will present them with an error on your store.
{% endhint %}


# Theme Development

## Overview

Shoplift works seamlessly with Shopify's theme architecture, but there are some things to know when making updates to your themes to ensure your tests and theme development workflows continue to run smoothly.

## Theme development with Git

Merchants, theme developers, and development teams will often push updates to live and unpublished themes through Git to manage versions of their themes. If your team uses Git to control and publish new versions of your themes, follow the best practices below to ensure you don't run into issues when running tests with Shoplift.

### Ensure any changes to your theme are pulled down to your repository prior to pushing updates

Many times merchants and apps will make changes to the theme or theme assets through the Theme Editor or Asset APIs.&#x20;

At Shoplift, we attempt to mitigate the frequency with which we do this. Occasionally, we will ship updates to our `shoplift.liquid` snippet, and while we make efforts to make these updates backwards compatible, there could be issues if the current version of the snippet is accidentally overwritten or restored to an outdated or previous version.

We recommend always pulling down the latest changes to your theme prior to pushing any updates from Git to ensure the latest version of the snippet is present.

In the case that the snippet is removed, overwritten, or modified, Shoplift will attempt this and correct the issue every hour. We will also perform this check any time an entirely new main theme is published.

### Ensure the Shoplift snippet exists and is referenced in the `<head>` of your `theme.liquid`

For the Shoplift script to function correctly, it must exist in the themes snippets directory (shoplift.liquid) and must be referenced in the \<head> of your theme.liquid via a render tag. Whenever making updates or changes to your theme, double check to ensure that both the snippet and the render tag are present in your theme directory.

{% hint style="danger" %}
**Possible issues if the Shoplift snippet is outdated, modified, or removed**

* All tests cease to collect visitor data until the script is restored, as there would be no way for Shoplift to track and collect essential visitor events
* If running theme tests, theme preview bars could show on the B side themes until the script is restored, as there would be no way for Shoplift to suppress it
* If running theme tests, website visitors could get stuck on the preview theme until the script is restored, as there would be no way for Shoplift to return visitors to the main theme when necessary
  {% endhint %}

## Avoiding theme development and theme preview workflow interactions due to theme tests

Shoplift has various methods of ensuring that visitors on theme tests do not remain on the preview theme after a test has concluded. Sometimes, these methods may interfere with normal theme development and theme preview workflows. Read below to learn how to minimize these interferences and keep your workflows running smoothly.

### How to use the 'isShopliftMerchant' query parameter to exclude yourself and others from script behaviors intended for website visitors

When a theme test has concluded, Shoplift will redirect any visitors to the B side of that theme test back to the main theme. This includes merchants' browsers if you were included in the test.

Secondly, if a website visitor is not tracked by Shoplift, and is on a theme preview, Shoplift will redirect them back to the main theme, because they could be a website visitor. This includes merchants' browsers if you are previewing a theme but your browser does not contain Shoplift tracking in local storage or cookies.

To circumvent this behavior when previewing themes, you can append an `isShopliftMerchant=true` parameter to your theme preview URL. This parameter will set an `isMerchant=true` value in your browser's local storage that indicates to Shoplift that you are a merchant, and our theme kickback behavior will be ignored. An example preview URL with this parameter would look like:

```
https://store.myshopify.com/?preview_theme_id=1234567890&isShopliftMerchant=true
```

This parameter will also work for preview links that you share or view in incognito browsers, as well as for automated testing tools that leverage a browser like Selenium or Puppeteer.

### How to remove the 'isMerchant' parameter

To reset the isMerchant value in your local storage from `true` to `false`, simply re-add the `isShopliftMerchant` parameter to your store URL or theme preview URL and set the value to `false`. This will reenable theme kickback script behavior intended for website visitors.

### How to check your 'isMerchant' local storage value

If you ever need to determine what your isMerchant local storage value is currently set to, you can look at your `Shoplift_Essential` local storage item in your browser's storage settings.

1. Open up the developer tools window in your browser. In Chrome, the shortcut for this is CMD + Shift + C on MacOS.
2. Within this window, click the tab titled "Application" (depending on your browser, this may also be called "Storage") and locate your local storage.&#x20;
3. In your local storage you can find an item called `Shoplift_Essential`. Click this item.
4. There will be a value for an attribute called isMerchant. If no attribute is set, then it means that it has not been set by the parameter, and the Shoplift script will recognize you under the `isMerchant=false` logic.
5. To set the value, or change it, you can either enter the attribute and value manually, or use the parameter described above to set your desired value.


# URL Redirect Testing

Shoplift provides a URL redirect testing feature that allows you to easily test single pages against each other. To learn more about this feature and the types of tests you can run, read our documentation below.

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Overview</strong></td><td>Explore how URL testing works and can be used</td><td></td><td><a href="/files/ELJSZIm1zP0qzrXbsgw0">/files/ELJSZIm1zP0qzrXbsgw0</a></td><td><a href="/pages/RysoQOsRA55RmZ94jEBm">/pages/RysoQOsRA55RmZ94jEBm</a></td></tr><tr><td><strong>Guides</strong></td><td>Learn how to implement various URL tests</td><td></td><td><a href="/files/p1IiSemX5UMNBEvyEgfK">/files/p1IiSemX5UMNBEvyEgfK</a></td><td><a href="/pages/t2gXQHs8dr5i9IQmfNSR">/pages/t2gXQHs8dr5i9IQmfNSR</a></td></tr></tbody></table>


# Overview

URL testing unlocks the potential to run countless tests on your site, which we’ll cover in more detail below.

### How it works

URL testing allows you to test two single pages from your store against each other. By specifying page URLs, you can effortlessly target a single page as your original (A) experience and a single page as your variant (B) experience. When site visitors are directed to the original URL, they will be allocated to the A or B experience, and those who were allocated to the B experience will be redirected to the variant URL.

Let’s say you launch a 50/50 URL test with the following URLs:

* (A) `https://my-store.com/product-a`
* (B) `https://my-store.com/product-b`

When site visitors reach the `/product-a` URL, they will be assigned to either the A or B experience. Site visitors assigned to the A experience will continue to the `/product-a` URL, while site visitors assigned to the B experience will be redirected to the `/product-b` URL.

### What to test

With URL testing, you can test beyond the template level by comparing two distinct pages. URL testing can be used to implement many powerful changes, such as testing:

* Collection images and product order
* Specific purchase flows
* Site quizzes
* Pagebuilder URLs
* Landing pages for paid media using a single URL
* Product images and image order\*
* Product prices and price testing\*
* And more!

{% hint style="info" %}
Testing product images or product prices with URL testing is an advanced use case, as these elements can appear in multiple places across your site. These tests might require additional steps to set up correctly. If you ever need help conducting tests with Shoplift, our [**Support Team**](broken://pages/BZDv9d1utwcXtufWrzA4) is always available to assist.&#x20;

If you would like a member of our support team to build one of these tests with you, consider upgrading to our [**Pro plan**](https://www.shoplift.ai/pricing).&#x20;
{% endhint %}

#### Examples:

**Testing Collection Product Order**: If you want to test different product orders in a collection, you can do so by duplicating your original collection, changing the product order of the duplicate collection, and running a URL test on the original and duplicate collections. Visitors who click on the collection will either be sent to URL of the original collection (with the original product order) or redirected to the URL of the duplicated collection (with the modified product order).

**Testing Subscription Purchase Flow**: If you want to test how many pages should be in your subscription flow, you can send some visitors to a flow with three steps and others to a flow with two steps (skipping the first page). Visitors will either be sent to the first page of the flow or redirected to second page of the flow, skipping the first page.

### Template tests vs. URL tests

While template tests allow you to test groups of products, collections, and pages under their assigned templates, URL tests allow you to test individual products, collections, and pages. Not only does this isolate the changes you’re most interested in testing, but it also allows you to get detailed reporting at your desired level of specificity.

**Template Testing** refers to testing variations of the same URLs by modifying the template assigned to those pages. For example, if your product is assigned to template `sl-original`, and you run a template test on `sl-original` against `sl-variant`, your site visitors would be sent to the same product URL, but would see one of two template views:

* (A) `https://my-store.com/product?view=sl-original`
* (B) `https://my-store.com/product?view=sl-variant`

**URL Testing** refers to testing entirely different URLs, without regard for the template they are assigned to. For example, if you have two products (`Product A` and `Product B`), and you run a URL test on their URLs, your site visitors would be sent to one of two URLs:

* (A) `https://my-store.com/product-a`
* (B) `https://my-store.com/product-b`

{% hint style="info" %}
If you need help conducting tests with Shoplift, our [support team](broken://pages/BZDv9d1utwcXtufWrzA4) is always available to assist. Reach out from within the app using the live chat widget in the bottom right of the screen, or email [help@shoplift.ai ](mailto:help@shoplift.ai)to get in touch.
{% endhint %}


# Use Cases

A URL redirect test sends visitors to a completely different page on your store based on their test assignment. Instead of changing how a page looks, a URL redirect test changes which page visitors see.

This guide covers the most common scenarios where a URL redirect test is the right choice, along with setup tips for each.

### When to use a URL redirect test

URL redirect tests are ideal when you want to compare two entirely different pages rather than two versions of the same page. The key question: are you testing how a page looks, or which page a visitor should land on?

* **Different pages** → URL redirect test
* **Different layouts of the same page** → template test or theme test

### Landing page tests

Test whether a custom landing page converts better than a standard Shopify page for campaign traffic.

**Example:** You're running a summer sale campaign. Your current ads link to `/collections/summer-sale`, a standard collection grid. You've built a curated landing page at `/pages/summer-sale-curated` with editorial content, lifestyle imagery, and hand-picked product recommendations. A URL redirect test lets you send half your ad traffic to each page and measure which one drives more revenue.

{% hint style="info" %}
**Setup Tip**

Pair this with audience targeting using UTM parameters so the test only runs for visitors arriving from your campaign. This keeps organic traffic on your original page while testing the new experience for paid traffic.
{% endhint %}

### Alternative product page tests

Test a completely different product page experience by sending visitors to a duplicate product page.

**Example:** You want to test whether a simplified product page with fewer options increases conversion. Create a duplicate product in Shopify with the same images and pricing but a streamlined description. Set the duplicate to **Active** status so it's live but not linked in your navigation. Then set up a URL redirect test from your original product URL to the duplicate.

This is also useful when you want to test changes that live at the product level (like different product descriptions, image order, or variant options) rather than at the template level.

{% hint style="info" %}
When duplicating products for testing, keep inventory in mind. Duplicate products have separate inventory counts. If you're selling physical goods, make sure both products have adequate stock, or use a shared inventory solution.
{% endhint %}

### Collection page vs. curated page tests

Test whether visitors convert better from a standard collection page or a hand-curated shopping experience.

**Example:** Your `/collections/bestsellers` page shows a standard product grid sorted by sales. You've built `/pages/staff-picks` as a curated page with editorial recommendations, product stories, and a more personal feel. A URL redirect test measures which approach drives more purchases.

### About page and brand storytelling tests

Test different versions of your brand story or about page to see which builds more trust and drives downstream purchases.

**Example:** Your current about page at `/pages/about` is text-heavy and tells the founder's story. You've built an alternative at `/pages/our-story` with a visual timeline, customer testimonials, and embedded video. A URL redirect test shows which version keeps visitors on your site longer and leads to more conversions.

### Page builder landing pages

If you use a page builder like PageFly, GemPages, or Replo, URL redirect tests are often the best way to test page-builder content.

Page builder apps store their content separately from your Shopify theme files, which means template tests can't directly modify page-builder layouts in the Shopify Theme Editor. Instead, build two versions of your page in the page builder (each with its own URL), then use a URL redirect test to split traffic between them.

**Example:** You have a homepage built in PageFly at your root URL. You've created an alternative version in PageFly with a different layout. Assign the alternative to a separate page URL (like `/pages/home-v2`), then set up a URL redirect test from your homepage to the alternative.

{% hint style="info" %}
Make sure both page-builder pages are published and accessible before launching your test. Shoplift handles the redirect but doesn't create or manage pages in your page builder.
{% endhint %}

### Do you need a URL redirect test?

Before setting one up, consider whether a simpler test type would work:

| What you want to test                                            | Best test type    |
| ---------------------------------------------------------------- | ----------------- |
| Different layout for your product pages                          | Template test     |
| Different hero section on your homepage                          | Template test     |
| Completely different landing page for a campaign                 | URL redirect test |
| New header or footer design                                      | Theme test        |
| Different page-builder layouts                                   | URL redirect test |
| Whether visitors convert better from collection vs. curated page | URL redirect test |
| Global color or font changes                                     | Theme test        |


# Create a URL Redirect Test

A URL redirect test sends a portion of your visitors to a completely different page on your store. Instead of changing how a page looks, you're testing which page visitors should see.

{% stepper %}
{% step %}

### Create a new test

Open Shoplift and click **Create a test** in the top-right corner.
{% endstep %}

{% step %}

### Select your test type

Choose **Test content.**

<figure><img src="/files/i24KHSivns5UaN74nYVD" alt=""><figcaption></figcaption></figure>

Then select **Test a URL**.

<figure><img src="/files/iW5kUFhEDTKksVnXfuj2" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Choose your original page (A)

The URL drawer opens with a search bar where you can search for or paste the URL of the page you want to test. This is your **A (Original)** — the page your visitors currently land on.

Search by page title or paste a full URL (like `https://your-store.myshopify.com/collections/summer-sale`) to find the page.

<figure><img src="/files/xDQQnOBJVUrWRTPa5cHX" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Choose your variant page (B)

Next, use the same search or paste bar to find the page you want to redirect visitors to. This is your **B (Variant)** — the alternative page you're testing against the original.

<figure><img src="/files/rG6ZVDfhc0cwMhiVMCdi" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Configure your test settings

Set the following options before launching:

**Traffic allocation**

Choose what percentage of visitors see each version. Shoplift defaults to a 50/50 split, which is recommended for most tests. An even split reaches statistical significance fastest and gives you the clearest results.

**Goal**

Select the primary metric Shoplift uses to determine a winner. **Revenue per visitor (RPV)** is recommended for most tests because it captures both conversion rate and average order value in a single metric. Other options include conversion rate and add-to-cart rate.

**Hypothesis**

Write a short statement explaining what you expect to happen and why. A strong hypothesis follows this framework:

> **If** \[specific change you're making], **then** \[expected outcome], **because** \[reason you believe this].

For example: "If we add customer reviews above the fold on product pages, then RPV will increase, because social proof reduces purchase hesitation and builds trust."

A clear hypothesis helps you interpret results later. Even if your test doesn't win, a good hypothesis tells you *what you learned*.

**Device targeting**

Choose which devices your test runs on: **All devices** (recommended for most tests), **Mobile only**, or **Desktop only**. Use device targeting when your change only applies to one device type — for example, a mobile-specific sticky add-to-cart button.

**Visitor targeting**

Narrow your test to specific visitor segments:

* **All visitors**: recommended for most tests
* **New visitors only**: useful for testing first-impression elements like homepage layout
* **Returning visitors only**: useful for testing loyalty-focused features or repeat-purchase flows

{% hint style="info" %}
Visitor targeting is available on Advanced plans and above.
{% endhint %}

**Audience targeting**

For even more precise targeting, set rules based on:

* **UTM parameters**: target visitors from specific campaigns or traffic sources (for example, only test your homepage layout for visitors arriving from your Instagram ads)
* **Geographic location**: target visitors from specific countries or regions
* **Custom rules**: combine multiple conditions to target exactly the audience you want

{% hint style="info" %}
Audience targeting is available on Advanced plans and above.
{% endhint %}
{% endstep %}
{% endstepper %}

### Tips for a successful URL redirect test

* **Make sure the variant page is published and accessible.** If the variant page returns a 404, visitors in the test will see an error page. Always verify the URL works in your browser before launching.
* **Don't change either page mid-test.** Changing the content of your original or variant page while the test is running can skew your results. If you need to make changes, pause the test first.


# Previewing a URL Redirect Test

You can preview any test directly in your browser with Shoplift's **Preview Mode**. Preview Mode can be used on draft, active, and ended tests.

### Using Preview Mode

On a given test draft or report, hover over your variant preview and select **View in Browser**. This opens Preview Mode in a new tab.

When using preview mode, you can experience your test as a website visitor would.

### Switching Between Variants

At the bottom of the preview window, you’ll see a toolbar that lets you switch between:

* **Original (A**) – your current experience
* **Variant (B)** – your test experience

<figure><img src="/files/uViRUPc6f61as4BbflUl" alt=""><figcaption></figcaption></figure>

You can navigate across your site while the preview is active to see how each page looks when assigned to the A or B variant.

### Exiting Preview Mode

To return to your live site, simply select Exit in the toolbar.


# Ending a URL Redirect Test

When your URL redirect test reaches statistical significance, it's time to review the results and decide what to do next. Unlike template and theme tests, there's no "Apply variant" button for URL redirect tests — you'll need to update your routing manually.

### End your test

When you're ready to stop your test, open the test in Shoplift and click **End test**. This stops the redirect immediately — all visitors will land on the original page again.

#### Pausing a test

If you need to temporarily stop a test to make quick fixes or edits, you can click **Pause** instead of ending it. Pausing stops the redirect and sends all traffic back to the original page while the test is paused. Your test data stays intact so you can resume later.

{% hint style="warning" %}
Avoid pausing tests unless absolutely necessary. Extended pauses can compromise your test data. If you need to pause for more than a short period, end the test instead, duplicate it to a new draft, and relaunch when you're ready.
{% endhint %}

### If your variant won

URL redirect tests don't have an "Apply variant" option because Shoplift doesn't control how visitors arrive at your pages. To make the winning page permanent, you need to update the routing yourself.

Depending on how visitors reach the original page, this might mean:

* **Updating ad campaigns**: Change the destination URL in your ad platform (Google Ads, Meta, TikTok, etc.) to point to the winning page
* **Updating navigation menus**: If the original page is linked in your Shopify navigation, update the menu link to point to the winning URL. Go to **Online Store** > **Navigation** in your Shopify admin.
* **Updating internal links**: Search your theme code, email templates, and any other content that links to the original URL and update those links
* **Setting up a Shopify redirect**: If the original URL receives organic or bookmarked traffic, create a URL redirect in Shopify (**Online Store** > **Navigation** > **URL redirects**) so visitors who go to the old URL are automatically sent to the new one

{% hint style="info" %}
You don't have to do all of these. Focus on the traffic sources that matter most for the pages you tested. If the test was specifically for ad campaign traffic, updating your ad destination URLs may be all you need.
{% endhint %}

### What happens to the pages

Neither page is affected when you end a URL redirect test. Both the original and variant pages remain live on your store. Shoplift only controlled the redirect between them — once the test ends, that redirect stops.

If you no longer need the losing page, you can unpublish or delete it in Shopify.


# Troubleshooting URL Redirect Tests

Running into issues with a URL redirect test? This guide covers the most common problems and how to fix them.

### Variant page shows a 404 error

If visitors assigned to the variant see a "Page not found" error, the destination page doesn't exist or isn't published on your store.

#### How to fix it

1. Pause the test.
2. In your Shopify admin, verify that the variant page exists and is published. Check the exact URL path — a typo in the URL is the most common cause.
3. Visit the variant URL directly in your browser to confirm it loads.
4. Resume the test once the page is accessible.

{% hint style="info" %}
Shoplift only handles the redirect. It doesn't create or manage pages on your store. The variant page must be published in Shopify for the duration of your test.
{% endhint %}

### My redirect isn't firing for some visitors

If the redirect works for some visitors but not others:

* **Check your targeting settings.** If you've set device targeting (mobile only or desktop only), visitor targeting (new or returning only), or audience targeting (UTM parameters, geo), visitors who don't match those criteria won't be redirected.
* **Check your traffic allocation.** If you're running a 50/50 split, only half your visitors will be redirected. The other half stay on the original page as the control group. This is expected behavior.

***

**Still need help?** [Contact Shoplift support](https://support.shoplift.ai/).


# Price Testing

Price testing allows you to experiment with different pricing strategies by showing different prices to different visitor segments for the same product. This approach lets brands gauge consumer reactions and measure the impact on conversion rates and revenue before making widespread pricing changes.&#x20;

For details on Shoplift's price testing feature, explore the documentation below.

{% hint style="warning" %}
Before launching a price test, you **must** read (1) [Overview](/test/price-testing/overview)  and (2) [Theme Setup](/test/price-testing/setup).
{% endhint %}

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-cover data-type="image">Cover image</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Overview</strong></td><td>Explore how price testing works and requirements for your store</td><td><a href="/files/VfvwKwZ0hdiGl4654FcV">/files/VfvwKwZ0hdiGl4654FcV</a></td><td><a href="/pages/dzAJw5SQzh49eyWezmRd">/pages/dzAJw5SQzh49eyWezmRd</a></td></tr><tr><td><strong>Theme Setup</strong></td><td>Learn about the 1-time setup to enable price testing on your theme</td><td><a href="/files/HJiQQIGhhRs2l5qNKsQT">/files/HJiQQIGhhRs2l5qNKsQT</a></td><td><a href="/pages/LhBOjEJEww4XlsdnfpHs">/pages/LhBOjEJEww4XlsdnfpHs</a></td></tr><tr><td><strong>Creating a Price Test</strong></td><td>Follow step-by-step instructions on creating a price test</td><td><a href="/files/aTkxxTwYjQ7pCdRdGeRS">/files/aTkxxTwYjQ7pCdRdGeRS</a></td><td><a href="/pages/L5nSqDzxLzcmwINpBKuU">/pages/L5nSqDzxLzcmwINpBKuU</a></td></tr><tr><td><strong>Preview &#x26; QA</strong></td><td>View prices across your site to ensure visitors have a seamless experience</td><td><a href="/files/ydIWww9xBTfWz7SsF1kw">/files/ydIWww9xBTfWz7SsF1kw</a></td><td><a href="/pages/ikaY3rUFSzQWQJlxPmri">/pages/ikaY3rUFSzQWQJlxPmri</a></td></tr><tr><td><strong>Launch Your Test</strong></td><td>Review best practices for post-launch validation and reports</td><td><a href="/files/6LDYnoUy6JrEGc5vLANO">/files/6LDYnoUy6JrEGc5vLANO</a></td><td><a href="/pages/Uy790IsRQpuvSdGmz5Uy">/pages/Uy790IsRQpuvSdGmz5Uy</a></td></tr><tr><td><strong>Troubleshooting Guide</strong></td><td>Get answers to price testing FAQs</td><td><a href="/files/8V5lI28BxmBeRrlDiTxW">/files/8V5lI28BxmBeRrlDiTxW</a></td><td><a href="/pages/7gxKUVhOVV1ZSxIKUfwj">/pages/7gxKUVhOVV1ZSxIKUfwj</a></td></tr></tbody></table>


# Overview

Price testing enables you to experiment with different pricing strategies to find the optimal price point that maximizes both conversions and revenue.

### Requirements for price testing

{% hint style="danger" %}
**Confirm your store meets every requirement below before you set up a price test.** If it doesn't, your test may not run correctly.
{% endhint %}

<table><thead><tr><th width="329.30859375">Requirement</th><th>Details</th></tr></thead><tbody><tr><td><strong>Active Advanced or Pro plan</strong></td><td>Legacy Advanced and Pro plans aren't supported. Learn more.</td></tr><tr><td><strong>Single-currency store</strong></td><td>Multi-currency setups (Shopify Markets, Global-E, and similar) aren't supported.</td></tr><tr><td><strong>No subscriptions on tested products</strong></td><td><mark style="background-color:$success;"><strong>Exception</strong>:</mark> subscription products can be tested through Recharge. See the note below and link <a href="/pages/SaXCiDvtGUiaf8WMIb1C">here</a>.</td></tr><tr><td><strong>No unsupported page builders on tested products</strong></td><td>These page builders aren't supported on products you test: Replo, Pagedeck, PageFly, Funnelish, WebFlow, Fermat.</td></tr><tr><td><strong>Bundles exist as distinct Shopify products</strong></td><td>Bundles created with JavaScript or apps aren't supported yet.</td></tr></tbody></table>

{% hint style="info" %}
**Testing prices on subscription products?** Shoplift supports subscription price testing through Recharge. If your store uses Recharge 2.0 with Shopify Checkout Integration, you can test the price on subscription products. When a test runs, the one-time price and the subscription price change together while the subscription discount percentage stays the same. [See Subscription price testing to set it up.](/test/price-testing/subscription-price-testing)
{% endhint %}

{% hint style="warning" %}
Please note that workarounds for the above requirements may be achievable with our [exposed test configs](https://docs.shoplift.ai/test/price-testing/setup#custom-logic-capabilities). We recommend consulting with a theme developer before deciding to price test with Shoplift.&#x20;

If your store doesn't meet the above requirements, but you're interested in price testing, please let us know which capabilities we should prioritize for our roadmap [here](https://form.typeform.com/to/HtBQjDzU?typeform-source=coda.io#store_id=xxxxx).
{% endhint %}

### How it works

Shoplift's price testing uses a sophisticated architecture designed for reliability and compatibility across your entire Shopify ecosystem.

#### 1. Theme setup

Because every Shopify theme displays prices differently across product pages, collections, search results, and quick views, you'll need to add special data attributes to mark where prices appear:

* `data-sl-attribute-p` identifies regular prices
* `data-sl-attribute-cap` identifies compare-at prices
* `data-sl-attribute-discount` identifies savings price elements (either a value or percentage)

You will also need to add a snippet to all product forms, which will send price test data to the cart.

This **one-time setup** ensures Shoplift can find and update prices everywhere they're displayed in your unique theme. For instructions on setting up price testing for your theme, read [Configure Your Theme](/test/price-testing/setup).

{% hint style="info" %}
Have BNPL or installment messaging apps like Shop Pay, Afterpay, or Klarna? Our script will automatically identify and adjust these price displays for you.
{% endhint %}

#### 2. Highest price default

When you launch a price test, if the prices you are testing are higher than the original price of your products, Shoplift will automatically update your product prices in the Shopify Admin to the higher price in your test. For example, if you are testing Original (A) = $50 vs. Variant (B) = $100, we will update the product price in Shopify to be $100.&#x20;

This approach ensures consistency with external channels while price tests are conducted. Google Shopping, Facebook, and other channels that pull from Shopify's catalog will show the highest price. so your shoppers never encounter a higher price at checkout than what was advertised.

{% hint style="info" %}
**What this means for your channels:** Your product feeds will temporarily show the higher test price during the experiment. If you have significant traffic from external channels where price sensitivity is critical, consider:

* Running tests on products with lower external channel exposure
* Testing price decreases instead of increases
* Temporarily excluding tested products from external channels while the price test is running

This methodology is an industry requirement for price testing platforms and ensures compliance with advertising standards while protecting your conversion rates.
{% endhint %}

#### 3. Dynamic price adjustment

When a visitor lands on your site, Shoplift adjusts prices in real-time depending on a visitor's test group assignment:

* Frontend JavaScript instantly updates all marked prices when pages load based on the visitor's test group, preventing any flicker.
* Cart Transform Functions ensure the correct test price is applied during checkout for accurate billing.

#### 4. Visitor assignment & persistence

Shoplift price tests only include visitors in the test who saw a tested price in their viewport. When a website visitor scrolls a tested price into view:

1. They're randomly assigned to either the control group (original price) or variant group (test price) and displayed the corresponding price for any products in the tests
2. This assignment persists throughout their entire session
3. They'll see consistent pricing across all sessions until the test ends

Multiple price tests can be run simultaneously. Price tests are mutually exclusive, which means a visitor may only participate in one price test at a time. Visitors participating in one price test will never see price adjustments from other tests.

#### 5. Minimal impact on store operations

During a price test, only pricing-related elements change. Everything else about your store operations remains unchanged—inventory tracking continues normally, order processing workflows stay the same, discount codes and promotions work as expected, tax calculations remain accurate, and customer account functionality is unaffected.&#x20;

This design ensures price testing integrates seamlessly without disrupting your existing operations.

### Next steps

Now that you understand how price testing works, you're ready to create your first test. The next guide will walk you through the test creation process step by step. [One-Time Theme Setup](/test/price-testing/setup)

{% hint style="info" %}
If you need help conducting tests with Shoplift, our [support team](broken://pages/BZDv9d1utwcXtufWrzA4) is always available to assist. Reach out from within the app using the live chat widget in the bottom right of the screen, or email [help@shoplift.ai ](mailto:help@shoplift.ai)to get in touch.
{% endhint %}


# Use Cases

A price test lets you show different prices to different visitors and measure the impact on revenue. Instead of guessing what your customers will pay, you get real data from real shopping behavior.

This guide covers the most common scenarios where price testing can help, along with practical guidance for each.

### Raise prices with confidence

Most merchants know they could probably charge more for some products, but the fear of losing conversions holds them back. Price testing removes that fear by giving you hard data.

**The problem:** You haven't changed prices in months (or longer), costs have gone up, and you suspect you're leaving margin on the table. But raising prices feels risky because you don't know how customers will react.

**How price testing helps:** Test a price increase on a portion of your traffic. If conversion holds, you know customers will absorb the increase and you can keep the higher price. If conversion drops, you've found the ceiling and can price just below it.

**Example:** Your hero product has been $39.99 since launch. Your COGS have increased 15% in the last year. Test $42.99 or $44.99 on a portion of traffic. If conversion doesn't drop significantly, you've just recovered your margin pressure without guessing.

{% hint style="success" %}
Price increases often compound. A brand that runs three consecutive tests (+8%, +6%, +5%) and sees no conversion impact at any step has found a meaningfully better price without ever hitting resistance. Each month you're underpriced is profit you'll never recover.
{% endhint %}

### Respond to cost pressures

Tariffs, supplier hikes, shipping cost increases, and raw material fluctuations can squeeze your margins overnight. Price testing turns reactive panic into a measured response.

**The problem:** Your costs just went up and you need to pass some of that increase to customers. But you don't know how much of a price increase your customers will tolerate before they stop buying.

**How price testing helps:** Instead of guessing where the breaking point is, test the new price on a portion of your traffic first. You'll see exactly how your customers respond before committing to the change storewide.

**Example:** A new tariff adds $4 to your cost per unit on a $34.99 product. You need to raise the price, but by how much? Test $37.99 and $39.99 simultaneously. The data tells you whether customers absorb the full increase or whether you need to split the hit between margin and price.

### Launch new products at the right price

The price you launch at sets customer expectations and anchors the perceived value of the product for its entire lifecycle. Getting it wrong can mean months of suboptimal margins before you have enough data to course-correct.

**The problem:** You're launching a new product and need to set a price, but you have no sales data to guide you. Competitor pricing, gut feel, and cost-plus calculations can only get you so far.

**How price testing helps:** Test two or three price points during the launch window. Within a few weeks, you'll know which price maximizes revenue per visitor, and you can lock it in before customer price expectations solidify.

**Example:** You're launching a premium version of your bestselling product. You think the right price is somewhere between $59 and $79. Test $59.99, $69.99, and $74.99 during the first few weeks of launch. The data tells you which price point captures the most revenue without suppressing demand.

### Find out if you're priced correctly

Many merchants set prices once and rarely revisit them. But your market, your costs, and your customers' willingness to pay all change over time. Price testing lets you audit your existing pricing without risk.

**The problem:** You set your prices based on competitor research, a cost-plus formula, or instinct when you launched. You've never validated whether those prices are actually optimal. You could be overpriced (losing conversions you'd otherwise capture) or underpriced (giving away margin for no reason).

**How price testing helps:** Pick your top-selling products and test small price adjustments (5-10% up or down). The results tell you whether your current prices are already optimal or whether there's room to improve.

**Example:** Your top 5 products haven't had a price change in over a year. Test each one with a modest 8% increase. If three of the five show no conversion impact, you've just found free margin on your highest-volume products.

### Test psychological price points

Small price differences can have outsized effects on conversion. The difference between $49.99 and $50.00 is one cent, but it can meaningfully change how customers perceive the price.

**The problem:** You're not sure whether your pricing is hitting the right psychological anchors. Should it end in .99? Is a round number better for your brand? Does crossing a threshold like $50 or $100 actually hurt conversion?

**How price testing helps:** Test prices on either side of a psychological threshold and measure the impact. The data shows you whether the threshold matters for your specific customers and products.

**Example:** Your product is currently $48.99. Test $50.00, $49.99, and $47.00 to understand whether crossing the $50 threshold changes behavior, or whether your customers don't care about a dollar or two.

### Test compare-at pricing strategies

Shoplift can update both the sale price and the compare-at price (the "was" price shown with a strikethrough), letting you test discount framing and perceived value.

**The problem:** You're running a promotion and want to know whether a bigger perceived discount drives more purchases, even if the actual sale price is the same.

**How price testing helps:** Test different compare-at prices to see how the perceived discount influences buying behavior.

**Example:** Your product sells at $29.99. Test two framings: one with a $39.99 compare-at price (25% off) and one with a $49.99 compare-at price (40% off). The sale price stays the same in both variants, but the perceived deal is different.


# One-Time Theme Setup

Learn about the one-time theme setup that enables price testing across your entire storefront.

{% hint style="info" %}
All documentation on price testing can be found on [this page](/test/price-testing). To give us feedback on our documentation, please use [this form](https://form.typeform.com/to/M8H02KI2).
{% endhint %}

{% embed url="<https://www.loom.com/share/616c1f2a9e7f4a109ce35209f9c3f5bc>" %}

{% hint style="warning" %}
We strongly recommend having a **theme developer** implement the following theme setup to enable price testing for your store.
{% endhint %}

{% stepper %}
{% step %}

### Step 1: Prerequisites

Before you begin, make sure you have:

* Admin access to your Shopify store
* Familiarity with your store's theme configuration
* 30-60 minutes for implementation
  {% endstep %}

{% step %}

### Step 2: Understand data attributes

Data attributes act as markers that tell Shoplift where price elements live on your site. Without these markers, Shoplift can't identify which numbers on your page are prices versus other numerical content like inventory counts or review ratings. Shoplift uses three specific data attributes to enable price testing functionality:

* `data-sl-attribute-p="{{ product.id }}"` for regular prices
* `data-sl-attribute-cap="{{ product.id }}"` for compare-at prices (strikethrough prices)
* `data-sl-attribute-discount="{{ product.id }}"` for discount or savings elements (either an amount or a percentage)

{% hint style="warning" %}
`product.id` is just an example of a price object. Depending on your theme, the object with the price element might be `product` , `target`, `selected_or_first_available_variant`, or a custom variable.
{% endhint %}

You'll need to add these attributes to all price, compare-at price, and savings elements elements in your theme's liquid files.

Price elements in cart, checkout, and order pages **should not** be tagged with data attributes. While PDPs and collection pages require elements to be tagged with data attributes to change prices on the frontend, cart, checkout, and order pages use Cart Transform Functions to change cart values on the backend.
{% endstep %}

{% step %}

### Step 3: Locate price elements

Now you'll need to identify where these price elements appear throughout your theme's liquid files. Every theme is unique, so the exact locations will vary, but there are common patterns to help guide your search.

#### Tips on finding price elements

* Look at any file with "price" in the name
* Search for price-related classes (*hint: use developer tools to find an element's class*)
* Common price variables to search for include `product.price` , `target.price` , `variant.price` , `product.selected_or_first_available_variant.price` , `current_variant.price` , `product.compare_at_price` , `product.price_min` , `product.price_max`&#x20;

#### Dos and don'ts

**✅ DO add attributes to:**

* Liquid files
* Product sections and snippets
* Collection sections and snippets
* Search results
* Product recommendations
* Quick view/quick shop modals
* Recently viewed products
* Cross-sell/upsell sections

**❌ DO NOT add attributes to:**

* Non-Liquid files (i.e. JS or CSS)
* Shopping cart prices (except individual items—see exception below)
* Checkout pages
* Order confirmation pages
* Customer account pages
* Order history
* Email templates
* Admin notifications
* Structured data/meta tags
* Cart drawer totals

{% hint style="warning" %}
Price elements in cart, checkout, and order pages **should not** be tagged with data attributes. While PDPs and collection pages require elements to be tagged with data attributes to change prices on the frontend, cart, checkout, and order pages use Cart Transform Functions to change cart values on the backend.
{% endhint %}
{% endstep %}

{% step %}

### Step 4: Add data attributes

After you've identified the location of price elements in your theme, you can add the data attributes. The key is ensuring attributes are placed on the element directly containing the price text. Keep a record of which files you modify—this helps when updating your theme or troubleshooting later.

#### Implementation

**Before:**

```liquid
<div class="product-price">
  {{ product.price | money }}
</div>
```

**After:**

```liquid
<div class="product-price" data-sl-attribute-p="{{ product.id }}">
  {{ product.price | money }}
</div>
```

{% hint style="warning" %}
The variable `product` in `product.id` is just an example. Depending on your theme, the object with the price element might be `product` , `target`, `selected_or_first_available_variant`, or a custom variable.
{% endhint %}

<details>

<summary>Example: Sale pricing</summary>

For products with compare-at prices, you'll need both attributes to ensure sale prices display correctly during tests:

**Before:**

```liquid
<div class="price-wrapper">
  {% if product.compare_at_price > product.price %}
    <span class="price-sale">{{ product.price | money }}</span>
    <span class="price-original">{{ product.compare_at_price | money }}</span>
  {% else %}
    <span class="price-regular">{{ product.price | money }}</span>
  {% endif %}
</div>
```

**After:**

```liquid
<div class="price-wrapper">
  {% if product.compare_at_price > product.price %}
    <span class="price-sale" data-sl-attribute-p="{{ product.id }}">
      {{ product.price | money }}
    </span>
    <span class="price-original" data-sl-attribute-cap="{{ product.id }}">
      {{ product.compare_at_price | money }}
    </span>
  {% else %}
    <span class="price-regular" data-sl-attribute-p="{{ product.id }}">
      {{ product.price | money }}
    </span>
  {% endif %}
</div>Example: Sale pricing
For products with compare-at prices, you'll need both attributes to ensure sale prices display correctly during tests:
Before:
<div class="price-wrapper">
  {% if product.compare_at_price > product.price %}
    <span class="price-sale">{{ product.price | money }}</span>
    <span class="price-original">{{ product.compare_at_price | money }}</span>
  {% else %}
    <span class="price-regular">{{ product.price | money }}</span>
  {% endif %}
</div>
After:
<div class="price-wrapper">
  {% if product.compare_at_price > product.price %}
    <span class="price-sale" data-sl-attribute-p="{{ product.id }}">
      {{ product.price | money }}
    </span>
    <span class="price-original" data-sl-attribute-cap="{{ product.id }}">
      {{ product.compare_at_price | money }}
    </span>
  {% else %}
    <span class="price-regular" data-sl-attribute-p="{{ product.id }}">
      {{ product.price | money }}
    </span>
  {% endif %}
</div>
```

</details>

<details>

<summary>Example: Savings components</summary>

For products with discount or savings badge UI components, you'll need to add a discount attribute to ensure savings UI components display correctly during tests:

**Before:**

```liquid
{%
  assign discount_percentage = current_variant.compare_at_price | minus: current_variant.price | times: 100.0 | divided_by: current_variant.compare_at_price | round
%}
<span> 
({{discount_percentage}}% OFF) 
</span>
```

**After:**

```liquid
{%
  assign discount_percentage = current_variant.compare_at_price | minus: current_variant.price | times: 100.0 | divided_by: current_variant.compare_at_price | round
%}
<span data-sl-attribute-discount="{{current_variant.id}}">
({{discount_percentage}}% OFF)
</span>
```

</details>
{% endstep %}

{% step %}

### Step 5: Add input code

After you've added data attributes to all price elements, you need to add a hidden input element to all product forms in your theme (i.e. "Add to cart" and "Buy now" buttons). This ensures the correct prices are loaded in the cart and checkout.

#### Locate product forms

Search your theme for product forms. They will look like this:

```liquid
{%- form 'product',
    product,
    id: product_form_id,
    class: 'form',
    novalidate: 'novalidate',
    data-type: 'add-to-cart-form'
-%}
    {% # INPUT CODE GOES HERE %}
{%- endform -%}
```

**Tips:**

* Using the search bar in Shopify's theme editor, search  `%form` or `%product_form` in your theme&#x20;
* Some themes have a `buy-buttons.liquid` file with all product forms
* Using dev tools, inspect your "Add to cart" and "Buy now" buttons, and try to find the parent form. Then, use the form's class or id to identify it in your theme code.

#### Add input code

After you've located a form, paste the following code:

```liquid
<input
    type="hidden"
    name="properties[_slpt]"
    value=""
    data-sl-pid="{{ product.id }}"
>
```

{% hint style="warning" %}
The variable `product` in `product.id` is just an example. Depending on your theme, the object with the price element might be `product` , `target`, `selected_or_first_available_variant`, or a custom variable.
{% endhint %}

#### Hide cart properties

For most themes, cart properties with a leading underscore (i.e. `_slpt`) are hidden. However, on some themes (i.e. legacy themes), these properties might not be hidden. In the case that `_slpt` is showing in your cart, wrap each input code in the following:

```liquid
{%- if property.last != blank and property_first_char != '_' -%} 
    {% # INPUT CODE GOES HERE %}
{%- endif -%}
```

#### Repeat for all forms

Make sure you add the input code to all product forms in your theme. When you're done, you're ready to verify and begin testing!
{% endstep %}

{% step %}

### Step 6: Special theme considerations

Depending on your specific theme, there might be a few more things you need to do to enable price testing.&#x20;

#### Custom logic capabilities

If your theme has custom logic for displaying price elements, you might need to use our exposed test configs to ensure the correct price is rendered.

* On your website, open dev tools and type the following in your console: `this.shopliftInstance.testConfigs`.
* This gives you a list of test configs you can use to write custom logic to render the correct price for a price test.

{% hint style="warning" %}
Keep in mind that Shoplift [updates Shopify prices and compare-at prices](https://docs.shoplift.ai/test/price-testing/overview#id-2.-highest-price-default) if you are testing price increases. Therefore, any logic that references Shopify price or compare-at prices may not execute as expected after test launch. Think through the original and variant test prices while reviewing any conditional logic.
{% endhint %}

#### Cart display exception

While cart totals shouldn't have attributes, you may want to add them to individual product prices if showing strikethrough prices to maintain visual consistency:

```liquid
<!-- In cart template - ONLY for displaying strikethrough prices -->
<div class="cart-item-price">
  <span>
    {{ item.price | money }}
  </span>
  {% if item.original_price > item.price %}
    <span class="cart-item-compare-price" data-sl-attribute-cap="{{ item.product_id }}">
      {{ item.original_price | money }}
    </span>
  {% endif %}
</div>
```

#### Mobile considerations

Many themes use separate markup for mobile devices. Add attributes to all versions to ensure consistency across devices. Check for:

* Mobile-specific templates
* Elements hidden/shown with CSS media queries
* Responsive price displays

#### Rebuy support

Tagging price elements on Rebuy is straightforward, depending on which version of Rebuy your store has.

* Legacy Rebuy: If your store has legacy Rebuy, your theme should have a file called `rebuy.extensions.liquid`. You should add price testing data attributes directly to elements in this file, as you would for any other file.&#x20;
* Current Rebuy: If your theme does not contain `rebuy.extensions.liquid` , follow these instructions:
  * Open Rebuy and go to **Cart & Merchandising > Smart Cart**. For each active smart cart, make the following edits.
  * If your cart has a custom template enabled, skip to the next step. If your cart does not have a custom template enabled, go to **Global Settings > Custom Template** and turn on E**nable Custom Template**.
  * Click **Edit** to open the **Custom Template Editor**. From here, you can directly tag price elements with data attributes.
    {% endstep %}

{% step %}

### Step 7: Verify your setup

After adding data attributes throughout your theme, it's crucial to verify everything works correctly. Remember, data attributes should be added to any elements that contain the price text.

#### Quick verification methods

* **View source:** On a product page, view source and search for `data-sl-attribute-p` to confirm attributes are present
* **Browser console:** Run this command to count tagged prices:

```javascript
document.querySelectorAll('[data-sl-attribute-p]').length
```

* **Visual inspection:** Use browser DevTools to inspect price elements and verify you see `data-sl-attribute-p="123"` (where 123 is an actual product ID)
* **Preview in Shoplift:** After publishing your theme, you can create a price test in Shoplift and preview your variant prices. If they change, then data attributes are configured correctly.
  {% endstep %}
  {% endstepper %}

### Theme updates and maintenance

The data attributes you've added will work for all future price tests without additional modifications. However, when updating your theme, these attributes may be lost. To prepare for future theme updates, maintain a record of:

* Which files you modified
* The specific changes made
* Your testing checklist

This documentation makes re-implementing attributes quick and ensures nothing is missed during theme updates.

{% hint style="info" %}
Remember: You won't need to modify your theme code again unless you change themes or add new price display locations. The data attributes you've added provide the foundation for all your future pricing experiments.
{% endhint %}

### Next steps

Congratulations! Your theme is now configured for price testing. This one-time setup unlocks the ability to run unlimited price tests on your store. You're now ready to:

1. Create your first price test using [the test creation guide](/test/price-testing/create-a-price-test)
2. Use [preview mode](/test/price-testing/qa-checklist) to verify prices update correctly
3. [Run a test purchase](/test/qa-checklist) to ensure checkout works properly

{% hint style="info" %}
If you need help conducting tests with Shoplift, our [support team](broken://pages/BZDv9d1utwcXtufWrzA4) is always available to assist. Reach out from within the app using the live chat widget in the bottom right of the screen, or email [help@shoplift.ai ](mailto:help@shoplift.ai)to get in touch.
{% endhint %}


# Create a Price Test

{% hint style="info" %}
All documentation on price testing can be found on [this page](/test/price-testing). To give us feedback on our documentation, please use [this form](https://form.typeform.com/to/M8H02KI2).
{% endhint %}

After your [theme has been configured](/test/price-testing/setup) with data attributes, you're ready to create your first price test.

{% stepper %}
{% step %}

### Step 1: Create a test

* Log into Shoplift
* Click **Create Test** to create a new test draft
* Select **Price Test** from the test type options
* Confirm you've read both [Overview](/test/price-testing/overview) and [Theme Setup](/test/price-testing/setup) documentation
  {% endstep %}

{% step %}

### Step 2: Select products

After selecting Price Test, a product drawer opens and displays your entire product catalog.

#### Finding your products

You can quickly search for the specific products by entering:

* Product names
* Product IDs
* Product handles

#### Adding products to your test

As you browse through the product drawer, click on any product to select it for testing. Selected products appear in the confirmation panel on the right side of your screen, giving you a clear view of what you've chosen.

#### Review and confirm

Once you've made your selections:

1. Review all chosen products in the right panel
2. Click **Confirm** to add these products to your test
3. The drawer will close and your selections will populate the main test configuration table

#### Managing product selections

If you need to adjust your product selection at any point:

* Click **Manage Products** to reopen the selection drawer
* Your previous selections remain intact
* Add forgotten items or remove reconsidered products

{% hint style="warning" %}
Products and their prices are only loaded upon opening the product drawer. After the drawer closes, we maintain the selected products and prices throughout test setup and launch. Therefore, if you add/delete products or change product prices, you will need to re-select products via the product drawer.
{% endhint %}
{% endstep %}

{% step %}

### Step 3: Configure test prices

With your products selected, your test draft now displays a table with all chosen products and variants. This is where you'll define the price changes for your experiment.

#### **Setting your test prices**

For each product or variant in the table, you can configure two price points:

* **Price**: The actual price your test group visitors will see and pay. This is the core of your experiment and should reflect your hypothesis about optimal pricing.
* **Compare-at Price** (optional): An optional strikethrough price indicating the "original" or "regular" price. This can create a sense of value or urgency, though it's not required for every test.

{% hint style="warning" %}

#### Testing compare-at prices

Compare-at price elements are typically implemented with conditional logic that determines whether the element renders on the page. This logic executes based on the **backend Shopify price**, not the DOM-manipulated price applied by Shoplift.

This creates two common edge cases:

* **Scenario 1: Removing a compare at price:** If your A side has a compare-at price and your B side sets it to $0 (no compare-at price), the backend will still render the compare-at element. Shoplift will then overlay $0 on top, but the element itself remains visible.
* **Scenario 2: Adding a compare-at price:** If your A side has no compare-at price and your B side adds one, the compare-at element won't render at all when the page loads, and there will be nothing for Shoplift to manipulate.

To work around these issues, consider editing the conditional logic for price tests using our [exposed test configs](https://docs.shoplift.ai/test/price-testing/setup#custom-logic-capabilities).
{% endhint %}
{% endstep %}

{% step %}

### Step 4: Configure test details

With products and prices set, it's time to define the broader parameters of your test. These settings control how your test runs and help you track its performance.

#### Test name

Choose a descriptive name that clearly identifies your test's purpose. Good test names help you quickly understand what you tested when reviewing results months later:

* "Premium Collection 15% Increase"
* "Bestsellers Price Optimization Q1"
* "Free Shipping Threshold Test - February"

#### Document your hypothesis

Recording your hypothesis serves multiple purposes:

* Aligns your team on what you're testing and why
* Provides context when analyzing results
* Builds institutional knowledge for future tests

A strong hypothesis includes your expected outcome and the reasoning behind it.

#### Traffic allocation

Decide what percentage of visitors will see each variant:

* 50/50 split: Provides the fastest path to statistical significance
* 80/20 split: More conservative, limits exposure to price changes
* Custom splits: Tailor to your specific risk tolerance

Consider your risk tolerance and the magnitude of price changes when setting these percentages.
{% endstep %}

{% step %}

### Step 5: Review and finalize

Before moving forward, conduct a final review of your test configuration. This final check ensures everything is properly configured before you proceed to testing.&#x20;

Verify that:

* All selected products have at least one price change
* Test name clearly identifies the experiment
* Hypothesis is thoroughly documented
  {% endstep %}
  {% endstepper %}

{% hint style="info" %}
**Quick tips for first-time testers**

* Start small: Test 1-3 high-traffic products to see results quickly
* Be moderate: Use 10-20% price increases for your first test to minimize risk
* Allow time: Plan to run your test for at least 2-4 weeks to account for weekly purchase patterns
* Document everything: Your future self will thank you when analyzing results
  {% endhint %}

### What's next

With your test created and configured, you're ready to [preview and QA your test](/test/price-testing/qa-checklist) to ensure everything is working perfectly before going live:

1. Preview your test to see exactly how prices will appear to visitors
2. Run comprehensive QA checks across devices and user journeys
3. Launch your test with confidence to start collecting data

{% hint style="info" %}
If you need help conducting tests with Shoplift, our [support team](broken://pages/BZDv9d1utwcXtufWrzA4) is always available to assist. Reach out from within the app using the live chat widget in the bottom right of the screen, or email [help@shoplift.ai ](mailto:help@shoplift.ai)to get in touch.
{% endhint %}


# Previewing a Price Test

{% hint style="info" %}
All documentation on price testing can be found on [this page](/test/price-testing). To give us feedback on our documentation, please use [this form](https://form.typeform.com/to/M8H02KI2).
{% endhint %}

Before launching your price test, it's important to verify that prices display and calculate correctly throughout your entire customer journey. Shoplift's preview mode lets you experience your test exactly as visitors will see it to ensure everything works perfectly before going live.

### Understanding preview mode

Preview mode creates a temporary session that mimics the real test experience without affecting your live store data. This allows you to thoroughly validate your test configuration before any real customers see it.&#x20;

**With preview mode, you can:**

* See exactly how prices will appear for test visitors
* Verify both Control (A) and Variant (B) experiences
* Test the complete purchase flow without affecting live data
* Check all areas of your site where prices appear

### Starting preview mode

Getting started with preview mode is straightforward:

1. From the test draft page, click the Preview in Browser button (eye icon), located on the right side of every product row
2. This opens a new browser tab with your store in preview mode
3. You'll see a Shoplift overlay toolbar for controlling your preview&#x20;
4. You can use the toolbar to switch between Original (A) current prices and Variant (B) test prices

### Comprehensive QA checklist

Thorough quality assurance prevents surprises after launch. Work through each section systematically to ensure complete coverage of your customer's journey. We recommend printing this checklist or copying it to a document where you can track your progress.

{% stepper %}
{% step %}

### Product pages

#### Main product display

* [ ] Base price shows correctly (matches your configured test price)
* [ ] Compare-at price displays with proper strikethrough if configured
* [ ] Price formatting is consistent with your store's style ($99.99 vs $99,99)
* [ ] Currency symbol appears in correct position

#### Variant selection

* [ ] Price updates when selecting different variants
* [ ] Each variant shows its specific test price
* [ ] Out-of-stock variants still display test prices
* [ ] Price transitions smoothly without flashing or delays

#### Mobile responsiveness

Using browser device emulation, verify:

* [ ] Prices display correctly without text overflow
* [ ] No formatting issues on smaller screens
  {% endstep %}

{% step %}

### Collection pages

#### Product grid

* [ ] All test products show updated prices
* [ ] Non-test products maintain original prices

#### Quick actions

Many themes include enhanced shopping features that need attention:

* [ ] Quick view modals show test prices
* [ ] Quick add-to-cart uses test prices
* [ ] Hover states display correctly
* [ ] AJAX-loaded products show correct prices (such as infinite scroll)

#### Filtering and sorting

Test your collection's organization features:

* [ ] Price filters reflect test prices (e.g., $60 product appears in $50-100 filter)
* [ ] Sort by price uses test values for ordering
* [ ] Filtered results maintain correct pricing
* [ ] No products disappear due to price changes
  {% endstep %}

{% step %}

### Search functionality

**Search results page**

Perform searches returning test products and verify:

* [ ] Product listings show test prices
* [ ] Search filters work with new price points
* [ ] Pagination maintains price display
* [ ] Mixed results (test and non-test) display properly

#### Instant search

Test your header search functionality:

* [ ] Dropdown results show test prices immediately
* [ ] Predictive search displays prices correctly
* [ ] Mobile search overlays function properly
* [ ] Search suggestions include accurate test prices
  {% endstep %}

{% step %}

### Shopping cart

**Adding to cart**

Test various add-to-cart methods:

* [ ] Product page add-to-cart uses test price
* [ ] Collection quick-add respects test price
* [ ] Cart notifications show test prices
* [ ] Mini cart/drawer displays test prices immediately

#### Cart page

For your main cart page, ensure:

* [ ] Line items show individual test prices
* [ ] Compare-at prices appear if configured
* [ ] Subtotal calculates using test prices
* [ ] Cart attributes don't affect pricing

#### Cart interactions

Verify all modifications work correctly:

* [ ] Quantity updates recalculate with test prices
* [ ] Removing items updates totals properly
* [ ] Cart saves test prices between sessions
* [ ] Currency display remains consistent
  {% endstep %}

{% step %}

### Checkout process

Complete a full test purchase to ensure everything calculates correctly.

#### Pre-checkout setup

Build a realistic test scenario:

1. Add multiple test products with different prices
2. Include both test and non-test items
3. Apply a discount code if applicable
4. Proceed to checkout

#### Checkout validation

Once in checkout, verify:

* [ ] Order summary shows test prices for all products
* [ ] Individual line items match cart exactly
* [ ] Taxes calculate based on test prices
* [ ] Shipping doesn't affect product prices
* [ ] Discount codes apply to test prices correctly
  {% endstep %}

{% step %}

### Advanced testing scenarios

Some configurations require additional attention beyond standard testing.

#### Multiple variants

For products with complex variant structures:

* Test each variant individually
* Verify price changes cascade through option selections
* Check multi-dimension variants (size + color)
* Ensure no edge cases show original prices

#### Bundle products

If testing bundled items, ensure:

* Each component shows its test price
* Bundle discounts calculate from test prices
* Total bundle price sums correctly

#### Dynamic pricing

For stores with additional pricing logic:

* Volume discounts apply to test prices properly
* Customer-specific pricing doesn't override tests
* Wholesale pricing works as intended
* Member discounts stack correctly
  {% endstep %}
  {% endstepper %}

### Final verification steps

Before marking QA complete, ensure you have thorough documentation and team alignment.

#### Document your testing

Create a comprehensive testing record:

* Screenshot key pages showing correct prices
* Note any unusual behaviors encountered
* List all devices/browsers tested
* Record test order details

#### Team review

Get fresh perspectives:

* Have a colleague verify prices independently
* Test from different geographic locations
* Use various devices and browsers
* Different perspectives reveal overlooked issues

### Ready to launch?

You're ready to launch when:

* All prices display correctly across devices
* Cart and checkout calculate accurately
* No visual issues or errors found
* Edge cases have been tested
* Team review is complete

After thorough QA and preview testing, you're [ready to launch your price test](/test/price-testing/launching-a-price-test).

{% hint style="info" %}
If you need help conducting tests with Shoplift, our [support team](broken://pages/BZDv9d1utwcXtufWrzA4) is always available to assist. Reach out from within the app using the live chat widget in the bottom right of the screen, or email [help@shoplift.ai ](mailto:help@shoplift.ai)to get in touch.
{% endhint %}


# Launching A Price Test

{% hint style="info" %}
All documentation on price testing can be found on [this page](/test/price-testing). To give us feedback on our documentation, please use [this form](https://form.typeform.com/to/M8H02KI2).
{% endhint %}

The launch process is straightforward but requires careful attention. Once launched, tests cannot be edited, making this final review critical.

#### 1. Final review

* Review all settings match your test plan
* Check the product list and prices for accuracy
* Verify traffic allocation aligns with your risk tolerance

#### 2. Click launch

1. Click the **Launch test** button
2. Review the confirmation dialog carefully
3. Confirm the launch to activate your test
4. Your test status immediately changes to "Active"

#### 3. What happens immediately

* Shopify catalog updates: Product prices update to the highest test price for consistency
* Visitor assignment begins: New visitors start being randomly assigned to test groups
* Price adjustments activate: Your configured prices appear through data attributes
* Data collection starts: Test reporting begins tracking visitor behavior

### Post-launch validation

The period immediately after launch is crucial for catching any issues before they affect many customers. This real-world validation ensures everything works correctly for actual visitors, not just in preview mode.

### Step 1: Incognito browser testing

Testing as a real visitor provides the most accurate validation of your live test. Incognito mode ensures you experience exactly what new customers will see.

#### Open an incognito/private window

Start fresh with private browsing to:

* Ensure no cached preview sessions interfere
* Simulate a first-time visitor experience
* Get assigned to both sides of a test

#### Visit your homepage

Resist navigating directly to test products. Instead:

* Start from your homepage like a real customer
* Browse naturally through your site
* Verify assignment happens correctly from any entry point

#### Check your assignment

As you navigate:

1. Visit a test product page
2. Note the price displayed (reveals your variant)
3. Close the current window and open another incognito window
4. Repeat until you've seen both variants
5. Confirm random assignment is working

### Step 2: Validate both experiences

Once you've accessed both variants, systematically verify each performs correctly throughout the customer journey.

#### Product browsing

Navigate as a customer would and verify:

* [ ] Product pages display correct variant prices
* [ ] Collection pages show consistent pricing
* [ ] Search results reflect assigned prices
* [ ] Quick view modals maintain price consistency

#### Add to cart flow

Test the critical conversion path:

* [ ] Add test products to cart
* [ ] Cart shows correct test prices immediately
* [ ] Mini cart/drawer displays accurate prices
* [ ] Quantity changes calculate properly

#### Checkout process

Complete the checkout journey:

* [ ] Proceed through checkout steps
* [ ] Prices remain consistent throughout
* [ ] Tax calculations use test prices
* [ ] Stop before payment completion

### Step 3: Cross-device validation

Real device testing reveals issues that browser emulation might miss. Different devices can render prices differently or have unique interaction patterns.

#### Mobile testing

Using your actual phone:

1. Clear browser data completely
2. Visit site in regular browser (not apps)
3. Navigate naturally to test products
4. Add items to cart
5. Verify responsive design maintains accuracy

#### Tablet testing

Tablets often have unique considerations:

* Test both landscape and portrait orientations
* Verify touch interactions work smoothly
* Check cart functionality with gestures
* Ensure price display adapts to screen size

### Step 4: Team validation

Multiple perspectives catch issues you might miss alone. Coordinate with team members for independent verification. Team members should confirm:

* Different people see different variants (random distribution)
* Prices display correctly for their assignment
* No error messages or warnings appear
* Site performance remains normal
* User experience feels seamless

### First hour monitoring

The first hour after launch is critical for catching immediate issues. Stay vigilant across multiple checkpoints.

#### Technical health checks

Monitor these indicators:

* Browser console for JavaScript errors
* Page load times remain normal
* Cart abandonment rates stay stable
* Checkout completion rates unchanged

#### Test distribution verification

Confirm proper traffic splitting:

* Both variants receive visitors
* Distribution matches configuration (e.g. 50/50)
* Geographic distribution remains normal
* Device types follow typical patterns

#### Customer feedback monitoring

Keep communication channels open:

* Monitor customer service for pricing questions
* Check social media for confusion mentions
* Review live chat transcripts
* Watch for support ticket increases

### Success indicators

Your test is running successfully when:

✅ Visitors consistently see assigned prices throughout their journey\
✅ Cart and checkout calculate correctly with no errors\
✅ No technical warnings in monitoring tools\
✅ Traffic splits match configured percentages\
✅ Data flows properly into reporting dashboard

### Next steps

With your test successfully launched and validated, establish a monitoring routine to ensure continued success.

#### Immediate actions

* Set daily check-in reminders for the first week
* Brief your team on expected timelines
* Prepare for the patience required

#### Looking ahead

Remember that valid insights require time:

* Most tests need 1-2 weeks minimum
* High-consideration products may need longer
* Resist making decisions on early data
* Plan your first analysis checkpoint

***

> Remember: The first 48 hours are critical for ensuring test stability. Stay vigilant for issues that could invalidate your results, but resist making any interpretation decisions based on early data. Statistical significance takes time, and premature conclusions often lead to poor decisions.


# Ending a Price Test

When your price test reaches statistical significance, it's time to review the results and decide which prices to keep. This guide covers how to end a test, apply winning prices, and what happens to your Shopify prices when a test ends.

### End your test

When you're ready to stop your test, open the test in Shoplift and click **End test**. This stops showing test prices immediately — all visitors will see your original Shopify prices again.

When a price test ends, if you tested higher prices, Shoplift reverts your product prices in Shopify back to their original values. Your store's pricing returns to exactly where it was before the test started.

#### Pausing a test

If you need to temporarily stop a test to make quick fixes, you can click **Pause** instead of ending it. Pausing reverts all visitors back to the original prices while the test is paused. Your test data stays intact so you can resume later.

{% hint style="warning" %}
Avoid pausing tests unless absolutely necessary. Extended pauses can compromise your test data. If you need to pause for more than a short period, end the test instead, duplicate it to a new draft, and relaunch when you're ready.
{% endhint %}

### Apply your winning prices

If your test prices outperformed the originals and you want to make them permanent, click **Apply variant**.

You have two options when applying prices:

* **Apply to all products**: Updates every product in the test to its winning test price at once.
* **Apply to individual products**: Choose which specific products get the new price. This is useful if some products showed a clear win while others were inconclusive — you can apply the winning prices selectively and leave the rest unchanged.

When you apply, Shoplift updates the actual product prices in Shopify. The new prices become your live store prices going forward.

{% hint style="warning" %}
Applying prices changes your live product pricing in Shopify. Double-check your test results before applying. Make sure the results have reached statistical significance and that the revenue impact is what you expected.
{% endhint %}

### Deciding which prices to apply

Not every product in a price test will show the same result. Here's how to think about it:

* **Clear winner (stat sig, RPV increased)**: Apply the new price. Your customers have shown they'll pay it.
* **No significant difference**: The price increase didn't hurt conversion. You can apply it to capture the extra margin, since the same number of customers are buying at the higher price.
* **Conversion dropped significantly**: Your customers pushed back at this price point. Keep the original price and consider testing a smaller increase.

### What happens after you apply

Once you apply prices, those become your new baseline. If you want to test further adjustments, you can create a new price test starting from the updated prices. Many merchants run sequential tests to dial in the optimal price over time.


# Troubleshooting Guide

This guide helps you diagnose and resolve common issues with price testing. Work through relevant sections based on the problems you're experiencing.

{% hint style="info" %}
All documentation on price testing can be found on [this page](/test/price-testing). To give us feedback on our documentation, please use [this form](https://form.typeform.com/to/M8H02KI2).
{% endhint %}

### Quick diagnostic steps

Before diving into specific issues, run these quick checks to rule out common problems. These simple steps often reveal the root cause without extensive troubleshooting.

#### 1. Open browser console

Access your browser's developer tools to check for errors:

* Press F12 or right-click → Inspect → Console
* Look for red error messages indicating JavaScript problems
* Check for Shoplift script loading confirmation
* Note any 404 or network errors preventing updates

#### 2. Test in incognito mode

Opening an incognito window provides a clean testing environment:

* Rules out cache and cookie issues
* Simulates new visitor experience
* Eliminates stored preferences interference

#### 3. Verify test status

In your Shoplift dashboard, confirm:

* Test shows as "Active" (not draft or paused)
* Traffic allocation isn't 0% for either variant
* Test hasn't been accidentally paused by team members

### Price display issues

When prices aren't displaying correctly, the problem usually lies in theme implementation or script loading. Let's diagnose systematically.

#### Prices not changing at all

Common symptoms:

* All visitors see original prices only
* No variation between control and test groups
* Preview mode works but live site doesn't

#### Solution 1: Verify data attributes

The most common issue is incorrect attribute implementation. Check your code against these examples:

Correct Implementation:

```liquid
<span data-sl-attribute-p="{{ product.id }}">
  {{ product.price | money }}
</span>
```

Common Mistakes:

```liquid
<!-- Missing curly braces -->
<span data-sl-attribute-p="product.id">

<!-- Using variant ID instead of product ID -->
<span data-sl-attribute-p="{{ variant.id }}">

<!-- Missing quotes around attribute -->
<span data-sl-attribute-p={{ product.id }}>
```

#### Solution 2: Check script loading

Verify Shoplift is properly initialized:

1. In browser console, type: `window.shoplift`
2. Press Enter
3. Should return an object (not `undefined`)
4. If undefined, check theme.liquid for script tag

#### Solution 3: Validate element structure

Ensure proper implementation by checking:

* Attributes are on the price-containing element directly
* No JavaScript replaces HTML after page load
* CSS isn't hiding elements with attributes

#### Solution 4: Clear all caches

Sometimes aggressive caching causes issues:

* Clear browser cache and cookies
* Purge Shopify theme cache via admin
* Clear CDN cache (Cloudflare, etc.)
* Disable performance optimization apps temporarily

#### Inconsistent price display

When some prices work while others don't, you're dealing with incomplete implementation across your theme.Common Symptoms:

* Some products show test prices, others don't
* Same product shows different prices in different locations
* Prices flash between values during load

#### Audit all price locations

Themes display prices in numerous locations. Check these commonly missed areas:

* **Quick view modals** - Often loaded via AJAX
* **Instant search results** - Dropdown search previews
* **Recently viewed sections** - Dynamic product displays
* **Product recommendations** - Automated suggestions
* **Mobile-specific templates** - Separate mobile code
* **Dynamically loaded content** - Any AJAX-loaded prices

#### Check for duplicate displays

Run this diagnostic to find all tagged prices:

```liquid
// Find all price attributes
const prices = document.querySelectorAll('[data-sl-attribute-p]');
console.log(`Found ${prices.length} tagged prices`);
prices.forEach(p => {
  console.log(p.textContent, p.getAttribute('data-sl-attribute-p'));
});
```

This reveals missed displays or incorrect duplicates.

#### Review theme updates

If prices suddenly stopped working:

1. Check if theme was recently updated
2. Compare current templates with backup
3. Re-add missing attributes to new sections

#### Prices wrong on specific devices

Device-specific issues usually stem from responsive design using different markup for different screens.

#### Check responsive templates

Look for:

* Files with "mobile" in the name
* Device-specific sections
* CSS media queries hiding/showing elements

#### Verify mobile-specific code

When different markup exists for devices, tag both:

```liquid
<!-- Both need attributes -->
<div class="desktop-only" data-sl-attribute-p="{{ product.id }}">
  {{ product.price | money }}
</div>
<div class="mobile-only" data-sl-attribute-p="{{ product.id }}">
  {{ product.price | money }}
</div>
```

### Cart and checkout Issues

Cart pricing is critical—this is where customers make final decisions. Any discrepancies here can cause abandonment or support issues.

#### Cart shows original prices

Common Symptoms:

* Product pages show test prices correctly
* Cart reverts to original prices
* Checkout totals don't match expectations

#### Verify cart transform function

For Shopify Plus stores using Cart Transforms:

* Confirm you're on Shopify Plus (required)
* Check Cart Transform is enabled in admin
* Look for conflicting cart modification apps

#### Check cart template implementation

Remember these cart-specific rules:

* Cart totals should NOT have data attributes
* Only individual product prices need marking
* Standard Shopify cart structure works best

#### Test cart isolation

To identify conflicts:

1. Temporarily disable cart-related apps
2. Check if prices display correctly
3. Look for custom JavaScript modifying cart
4. Verify AJAX updates reflect test prices

#### Checkout price mismatches

When cart and checkout differ, you're experiencing transform conflicts.

#### Validate cart transform execution

Test progressively:

1. Single product (basic functionality)
2. Multiple test products (calculations)
3. Mixed test/non-test products (partial scenarios)

#### Check for app conflicts

Common conflicting app types:

* Subscription apps - Maintain own pricing logic
* Wholesale/B2B apps - Override standard prices
* Custom checkout scripts - Modify prices
* Multi-currency apps - Perform own calculations

### Test configuration problems

Configuration issues prevent tests from being created or saved properly.

#### Can't select products

When products don't appear in the selection drawer:

#### Check product status

Products must meet these criteria:

* Status: "Active" (not draft/archived)
* Published to online store channel
* Not hidden from sales channels

#### Resolve data issues

Common selection problems:

* Recently added products need sync time
* Special characters in titles affect search
* Try searching by SKU instead
* Verify account permissions

#### Test won't save

Save failures typically indicate validation errors.

#### Validate requirements

Ensure:

* At least one price changed per product
* Test has a name
* Traffic allocation totals 100%
* No products in other active tests

#### Check browser issues

Try these solutions:

* Save from different browser
* Disable browser extensions
* Check network connectivity
* Clear browser cache

### Third-party app conflicts

Many apps can interfere with price testing by displaying their own calculated values.

#### Currency converters

These apps pull from Shopify's API, showing the highest price regardless of test variant. Solutions:

* Hide converter during tests
* Update displays via converter API if available
* Use CSS to manage visibility
* Contact app developer for integration

#### Volume pricing apps

Bulk discount apps override test prices with tier calculations. Workarounds:

* Temporarily disable for test products
* Adjust rules to respect test prices
* Limit testing to single quantities
* Document expected behavior for support

#### Review and loyalty apps

These display prices in widgets that don't update with tests. Considerations:

* They show highest price from API
* Won't affect actual purchases
* May confuse customers
* Consider hiding or adding disclaimers

### Performance issues

#### Slow page loads

If your site feels slower after launching a test, the issue likely isn't the test itself. Data attributes have zero performance impact—they're standard HTML that browsers handle efficiently.

#### Check implementation

Look for:

* JavaScript errors blocking other scripts
* Infinite loops in price update logic
* Console errors indicating problems

#### Review other changes

Performance issues often coincide with:

* Recently installed/updated apps
* Theme modifications
* Server infrastructure issues
* CDN or caching problems

### Emergency procedures

Knowing when and how to pause a test prevents customer frustration and lost sales.

#### When to pause a test

Pause immediately if:

* Checkout is broken, preventing purchases
* Customers see wrong prices at payment
* Calculations are incorrect (taxes, totals)
* Major display issues affect most users

#### How to pause

1. Navigate to active test in Shoplift
2. Click "Pause Test" button
3. Confirm the action
4. Prices revert to defaults immediately

#### Post-pause actions

After pausing:

1. Document thoroughly - Screenshots and examples
2. Test in preview - See if issue persists
3. Fix root cause - Don't just retry
4. Re-launch carefully - Monitor first hour closely

### Getting additional help

If issues persist after this guide, gather comprehensive information for efficient support.

#### Information to gather

* Screenshots showing the issue clearly
* Browser console errors (full text)
* Test ID from Shoplift dashboard
* Theme name and version
* Complete list of installed apps

#### When contacting support

Provide:

* Clear problem description and start time
* Steps to reproduce from fresh browser
* Everything tried from this guide
* Customer and business impact

#### Temporary workarounds

While awaiting resolution:

* Reduce test traffic percentage
* Exclude problematic products
* Disable conflicting apps if possible
* Add customer notices about variations

{% hint style="info" %}
If you need help conducting tests with Shoplift, our [support team](broken://pages/BZDv9d1utwcXtufWrzA4) is always available  to assist. Reach out from within the app using the live chat widget in the bottom right of the screen, or email [help@shoplift.ai ](mailto:help@shoplift.ai)to get in touch.
{% endhint %}


# Subscription Price Testing

Run price tests on your Recharge subscription products. This guide covers connecting Recharge, configuring your subscription widget, launching your first test, and troubleshooting common issues.

### Before you start

Subscription price testing is built on top of Shoplift's price testing feature. Before you set it up:

* **Price testing must already be configured for your theme.** Follow the [price testing setup guide](https://docs.shoplift.ai/test/price-testing/setup) first. If price testing isn't configured for your theme, then subscription price testing won't work.
* **You need Recharge installed** with at least one product that has active selling plans. This integration will only work for merchants using Recharge 2.0 with Shopify Checkout Integration.
* **Plan requirement:** Subscription price testing is available on Advanced and Pro plans.

***

### What you can test

Today, subscription price testing supports testing the **price** on a subscription product. When the test runs, both the one-time price and the subscription price for that product change together while the discount percentage stays the same.

For example, a $100 product at 10% subscription discount, when tested at $90, becomes a $90 one-time price with $81 subscription price (10% off).

We do not yet support testing the subscription discount percentage independently, the first-order discount, or recurring frequency.

***

{% stepper %}
{% step %}

### Step 1: Connect Recharge <img src="/files/Xdm4KigWyCdTTrlwYH0t" alt="" data-size="line">

You can connect Recharge from two places:

* **Inside a test draft:** On the Test Draft page, select the option to create a Price Test. This will open a product drawer with two tabs: All and Subscription. Select the Subscription tab, and you'll see a prompt to connect Recharge.
* **From your settings:** Go to **Settings → Integrations** and select Recharge.

Click **Connect Recharge**. Recharge will open in a new browser tab and ask you to authenticate. After you authorize the connection, you'll be returned to Shoplift and see a "Connected" indicator on the integration.

If the new browser tab doesn't open, check that pop-ups are allowed for shoplift.ai in your browser.
{% endstep %}

{% step %}

### Step 2: Configure your subscription widget

Shoplift needs to know how to find the price, discount, and subscription elements in your Recharge widget so it can swap them during a test. You will do this once with a developer, and the configuration applies to every subscription test you run going forward.

#### If you use Recharge's default widget

If your store uses Recharge's standard widget without customization, Shoplift will auto-fill the configuration with these default selectors:

| Field                            | Default selector                                                          |
| -------------------------------- | ------------------------------------------------------------------------- |
| One-time price                   | `rc-purchase-option__price`                                               |
| Subscription price               | `rc-purchase-option__discounted-price`                                    |
| Subscription discount percentage | `.rc-plans-button__discount`, `.rc-purchase-option__badge`, `rc-benefits` |

If your widget matches these defaults, you can skip ahead to **Step 3**. We recommend previewing a test (Step 5) to confirm the swap works before launching.

#### If you use a customized widget

If you've customized your Recharge widget, you'll need to configure selectors manually. This is the part where a developer is typically needed.

1. Go to **Settings → Integrations → Recharge**.
2. Select your **Widget design**: Button, Dropdown, or List. The image preview on the right updates based on your selection so you can see which type matches your storefront.
3. For each field (One-time price, Subscription price, and Subscription discount percentage), paste the CSS selector(s) that point to those elements in your widget. You can add multiple selectors per field if your widget renders the same value in more than one place.
4. Hover over any field or the preview image to see which element in the widget that field corresponds to.
5. Click **Save changes** when you're done.

**Helpful shortcuts during setup**

* **View product page** opens your store's product page so you can inspect the live widget and grab selectors.
* **Send to developer** emails the configuration instructions plus a direct link back into this setup screen, so a developer can complete the work in their own session.
* You can leave configuration partially complete and come back to it later. You won't be able to launch a subscription test until configuration is finished.

**Tips for finding the right selectors**

* Right-click the widget element on your product page and choose **Inspect** to see its class names and IDs in the browser dev tools.
* Recharge widget classes typically start with `rc-` (for example, `rc-purchase-option__price`).
* Not every widget displays a discount percentage. If yours doesn't, you can leave that field empty.
  {% endstep %}

{% step %}

### Step 3: Create a test

* On the Test Draft page, select the option to create a Price Test.&#x20;
* In the product picker, all your subscription products will appear alongside one-time products. Subscription products are tagged with a purchase type indicator so you can identify them.
* Select the products you want to include in the test. You can mix subscription products and one-time products in the same test.
  {% endstep %}

{% step %}

### Step 4: Set test prices

For each product in the test:

* Set the **product price** (the test price you want to evaluate).
* Optional: Set the **compare-at price** if you want a strikethrough price displayed.

Important behavior to know:

* The test price applies to **both** the one-time and subscription versions of the product. The subscription discount percentage on the merchant-set selling plan is preserved. For example, if your subscription is normally 10% off the one-time price, it'll still be 10% off the test price.
* **Existing subscribers are not affected.** They continue to be billed on their original selling plans.
  {% endstep %}

{% step %}

### Step 5: Preview in browser

Before launching, always preview the test on a real product page to make sure everything looks correct.

Click **Preview in browser** from the test draft page. You'll see the product page with the test prices applied.

#### What to check

* **Prices inside the Recharge widget** should reflect the test price.
* **Prices outside the Recharge widget** (PDP buybox, header, comparison sections, collection pages) should also reflect the test price.
* The discount percentage and any subscription badging should update if applicable.

{% hint style="info" %}
**Subscription prices will not display correctly when you add the product to cart or proceed to checkout in preview mode.** This is expected. We only create the real test selling plans in Recharge when the test launches. Preview mode swaps the DOM but doesn't create real plans.

To verify your cart and checkout flow is working for price tests in general:

* Add a **non-subscription product** to your cart while in preview.
* Confirm the cart and checkout reflect the test price correctly for that one-time product.

If that works, you can be confident the cart will work correctly for subscription products once the test goes live.
{% endhint %}

{% endstep %}

{% step %}

### Step 6: Launch your test

If everything looks good with your test in preview mode, you can confidently launch.&#x20;
{% endstep %}
{% endstepper %}

***

### Troubleshooting

#### Prices in the Recharge widget aren't updating in preview

Your selector configuration is incorrect or incomplete. Go back to **Settings → Integrations → Recharge** and verify:

* You've selected the correct widget design (Button, Dropdown, or List).
* The selectors for one-time price, subscription price, and discount percentage point to elements that actually exist on your live product page.
* If your widget renders prices in multiple places, you've added a selector for each location.

Use **View product page** to open the live widget and confirm the selectors match.

#### Prices outside the Recharge widget aren't updating in preview

The issue is with your price testing theme setup, not the Recharge integration. Check that you've added the data attributes and input snippet specified in the [price testing configuration docs](https://docs.shoplift.ai/test/price-testing/setup). If these are missing, price testing won't work for your store.

#### I can add a one-time product to cart in preview, but the cart price is wrong

This points to the price testing input snippet not being correctly installed in your theme. Re-check the price testing setup guide.

#### I can't add a subscription product to cart correctly in preview

Expected behavior. Subscription cart and checkout flows only work after a test launches, because real Recharge selling plans are only created at launch time. Use a non-subscription product to verify your cart flow.

#### I see two selling plans in my Recharge dashboard during a test

This is expected. When a subscription price test launches, Shoplift creates duplicate "test" selling plans in your Recharge dashboard so the B-side variant has a real plan to route traffic to. They're prefixed so you can tell them apart from your originals.

When the test ends or is paused, the test plans are automatically archived. Your original selling plans are untouched throughout.

#### Can I edit my widget configuration while a test is running?

We recommend against it. Changing selectors mid-test can cause prices to stop updating correctly for B-side visitors. Wait until the test ends, then update your configuration before launching the next test.

{% hint style="warning" %}
**Shoplift only supports Recharge 2.0 configurations.** If you are not on Recharge 2.0, this type of price test will not work for your subscription products. Instead, you can run a price test using [Price Tests with Duplicate Products](/learn/guides/price-tests-with-duplicate-products).
{% endhint %}

***

### Need help?

If you run into something this guide doesn't cover, reach out to <help@shoplift.ai> with your store URL, the test ID, and a description of what's not working.


# JavaScript API Testing

Shoplift's JavaScript API enables you to create sophisticated A/B tests directly in your theme code, giving you complete control over test logic and visitor experiences.

{% hint style="info" %}
API tests require developer involvement. Most merchants will need their developer or agency to write the JavaScript and (for manual API tests) implement the trigger logic.
{% endhint %}

To learn more about API testing, explore the documentation below.

{% hint style="info" %}
This guide covers basic usage of the JavaScript API for API testing purposes. For a full API reference, see [Reference](/api-reference/reference/window.shoplift).
{% endhint %}

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-cover data-type="image">Cover image</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>Overview</td><td><a href="/files/6NlUsmV6ngRk4XReiY76">/files/6NlUsmV6ngRk4XReiY76</a></td><td><a href="/pages/JgiYma6oeuSgzqYtmqjD">/pages/JgiYma6oeuSgzqYtmqjD</a></td></tr><tr><td>Use Cases</td><td><a href="/files/k8HNdUYNd4iREC2vNdAq">/files/k8HNdUYNd4iREC2vNdAq</a></td><td><a href="/pages/ROM4SmnivJM3yLjg9KnO">/pages/ROM4SmnivJM3yLjg9KnO</a></td></tr><tr><td>Create an API Test</td><td><a href="/files/aTkxxTwYjQ7pCdRdGeRS">/files/aTkxxTwYjQ7pCdRdGeRS</a></td><td><a href="/pages/DfoGBMtJgVsz7bUAdXVH">/pages/DfoGBMtJgVsz7bUAdXVH</a></td></tr><tr><td>Previewing an API Test</td><td><a href="/files/cOQEF3gfXXWBFsQgb6f5">/files/cOQEF3gfXXWBFsQgb6f5</a></td><td><a href="/pages/6FLLgQkFF9XEny4GvnEg">/pages/6FLLgQkFF9XEny4GvnEg</a></td></tr><tr><td>Ending an API Test</td><td><a href="/files/pjhOdY8e6F3hghSfkIyS">/files/pjhOdY8e6F3hghSfkIyS</a></td><td><a href="/pages/WpOVY84lbWeP1y0RQj3G">/pages/WpOVY84lbWeP1y0RQj3G</a></td></tr></tbody></table>


# Overview

JavaScript API tests execute custom code in your theme to change what visitors see or experience on your store. Unlike template tests and theme tests (which swap layouts or entire themes), an API test uses developer-written JavaScript to make targeted behavior changes, add dynamic elements, or integrate with third-party tools.

{% hint style="info" %}
API tests require developer involvement. Most merchants will need their developer or agency to write the JavaScript and (for manual API tests) implement the trigger logic.
{% endhint %}

### When to use an API test

Use an API test when the change you want to make can't be accomplished by editing a template or swapping a theme. API tests are ideal for:

* **Adding dynamic elements**: notification bars, banners, popups, countdown timers, or chat widgets
* **Modifying global UI with JavaScript**: changing button text, hiding or showing elements, or adding badges across multiple pages
* **Testing third-party script variations**: comparing different recommendation engine configs, chat widget setups, or review display formats
* **Custom trigger logic**: running a test only after a specific visitor action (scrolling, hovering, spending time on page)
* **Third-party system integration**: triggering test behavior based on data from another platform
* **Complex targeting scenarios**: when Shoplift's built-in audience rules don't cover the exact conditions you need

### How API tests work

{% hint style="info" %}
This article covers basic usage of the JavaScript API for API testing purposes. For a full API reference, see [Reference](/api-reference/reference/window.shoplift).
{% endhint %}

When you run an API test, Shoplift assigns each visitor to either the control group or the variant group, just like any other test type. But instead of switching a template or theme, Shoplift executes your custom JavaScript for visitors assigned to the variant by calling the `isHypothesisActive()` method in our API.

### Interfacing with the API

#### **The window\.shoplift Object**

The `window.shoplift` object is the entry point for the Shoplift JavaScript API. It's automatically set up on every page of your Shopify store and exposes the `isHypothesisActive()` method.

The object is available after Shoplift's script has loaded and initialized. It is attached to the global `window` scope.

```typescript
// The object exists on window after script initialization
typeof window.shoplift // 'object' when loaded, 'undefined' before

// Always guard access
if (window.shoplift) {
  // Safe to use
}
```

#### isHypothesisActive()

The `isHypothesisActive()` method is the core of the Shoplift JavaScript API. It determines whether the current visitor is assigned to the variant (B) or control (A) group of your A/B test.

The `hypothesisId` is found in Shoplift when creating an API test:

<figure><img src="/files/z8w8Ix5wiYZTa9gRSDxK" alt=""><figcaption></figcaption></figure>

#### Method Signature

```typescript
isHypothesisActive(hypothesisId: string): Promise<boolean>
```

#### Parameters

<table><thead><tr><th width="146.89453125">Parameter</th><th width="117.86328125">Type</th><th width="113.7734375">Required</th><th>Description</th></tr></thead><tbody><tr><td><code>hypothesisId</code></td><td><code>string</code></td><td>Yes</td><td>The unique identifier for your test variant. Found in Shoplift when creating a JavaScript API test.</td></tr></tbody></table>

#### Returns

`Promise<boolean>` — resolves to:

| Value   | Meaning                                         |
| ------- | ----------------------------------------------- |
| `true`  | Visitor is assigned to this specific hypothesis |
| `false` | Visitor is not assigned to this hypothesis      |

The promise may **reject** if an error occurs during visitor assignment (e.g., a network failure during splitting). See [Error Handling](https://docs.shoplift.ai/api-reference/reference/ishypothesisactive#error-handling) in our [API Reference](https://docs.shoplift.ai/api-reference/reference/ishypothesisactive) for the recommended pattern.

### Basic Usage

Most implementations only need `isHypothesisActive()`:

```typescript
// Basic test implementation
const isVariant = await window.shoplift.isHypothesisActive('hypothesis-id');

if (isVariant) {
  // Show variant experience
} else {
  // Show control experience
}
```

### API test triggers

There are two sub-types of API test, and they differ in *when* the code runs:

* **Automatic trigger**: your code runs automatically on every page load for assigned visitors. Shoplift handles execution during initialization, before the page becomes visible. No additional coding is needed beyond the variant script itself.
* **Manual trigger**: Shoplift reserves a test assignment for the visitor, but your code only runs when a developer explicitly triggers it using the `isHypothesisActive()` method. This gives you full control over when and where the test activates.

The trigger type is set in Shoplift when creating an API test:

<figure><img src="/files/3ZVcsDFcja0rcGptDdiO" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
For more information about API test triggers, see [JavaScript API Tests](/api-reference/guides/javascript-api-tests#test-triggers)
{% endhint %}

#### **Automatic Trigger**

With automatic triggers, visitors enter the test immediately when the page loads, before any JavaScript API calls.

How it works:

```typescript
// Visitor is ALREADY in the test before this code runs
const isActive = await window.shoplift.isHypothesisActive('hypothesis-id');
// This just checks their assignment
```

#### **Manual Trigger**

With manual triggers, visitors only enter the test when your code calls isHypothesisActive() for the first time.

How it works:

```typescript
// No test participation yet
button.addEventListener('click', async () => {
  // Test participation triggered NOW, on first call
  const isActive = await window.shoplift.isHypothesisActive('hypothesis-id');
  // Visitor is now permanently assigned to a variant
});
```

**Start with an automatic trigger** if your change should apply to every page and doesn't need special trigger conditions. **Choose a manual trigger** if you need control over exactly when and where the code executes.


# Use Cases

This guide covers the most common scenarios where an API test is the right choice, along with setup tips for each.

### When to use an API test

API tests are the right choice when you need custom JavaScript to implement the change you want to test. The key question: can this change be made in Shopify's Theme Editor, or does it require code?

* **Requires custom JavaScript** → API test
* **Can be done in the Theme Editor** → template test or theme test

### Notification bars and banners

Test whether adding a site-wide notification bar or promotional banner increases engagement or revenue.

**Example:** You want to test a sticky banner at the top of every page announcing free shipping on orders over $50. The banner needs to appear on all pages, dismiss when clicked, and not reappear for that visitor during the session. An automatic API test adds the banner via JavaScript for variant visitors while control visitors see the store without it.

**Test ideas:**

* Free shipping threshold banner vs. no banner
* Urgency messaging ("Sale ends tonight!") vs. value messaging ("Save 20% sitewide")
* Sticky banner that scrolls with the visitor vs. static banner at the top
* Banner with a countdown timer vs. static text

{% hint style="info" %}
**Setup tip:** Use an automatic API test for site-wide banners. Since the banner should appear on every page, automatic execution is the simplest approach. Make sure your script checks whether the banner element already exists before adding it, so it doesn't duplicate on AJAX page navigations.
{% endhint %}

### Popup and modal tests

Test whether a popup or modal improves email signups, reduces bounce rate, or drives more purchases.

**Example:** You want to test an exit-intent popup offering 10% off a visitor's first order in exchange for their email address. The popup should only trigger when the visitor moves their cursor toward the browser's close button. A manual API test gives you control over exactly when the popup appears, since the trigger logic depends on visitor behavior.

**Test ideas:**

* Exit-intent popup vs. no popup
* Discount popup (10% off) vs. free shipping popup
* Popup after 30 seconds on site vs. popup on exit intent
* Full-screen takeover vs. small corner popup

{% hint style="info" %}
**Setup tip:** Use a manual API test for behavior-triggered popups. Your developer writes the popup code as the variant script and implements the trigger logic (exit intent, scroll depth, time delay) in the theme code using `isHypothesisActive()`.
{% endhint %}

### Third-party script variations

Test different configurations of third-party tools to find what drives the best results.

**Example:** You use a product recommendation widget on your product pages, and you want to test whether showing "Customers also bought" recommendations performs better than "You may also like" recommendations. An automatic API test can swap the recommendation config for variant visitors.

**Test ideas:**

* "Customers also bought" vs. "You may also like" recommendation logic
* Chat widget on all pages vs. chat widget only on product pages
* Reviews displayed as a carousel vs. reviews displayed as a list
* Different social proof notification formats or frequencies

{% hint style="info" %}
**Setup tip:** Automatic API tests work well when you're changing a script configuration that should apply globally. If the third-party script only runs on specific pages, consider a manual API test so you can trigger only where needed.
{% endhint %}

### Dynamic UI modifications

Test JavaScript-driven changes to existing page elements without rebuilding templates.

**Example:** You want to test whether adding a "Bestseller" badge to your top 10 products increases their conversion rate. An automatic API test can inject badge elements onto the relevant product cards across collection and search results pages.

**Test ideas:**

* "Bestseller" or "Staff Pick" badges on top products
* Sticky add-to-cart button that follows the visitor as they scroll
* "X people are viewing this" live visitor counter on product pages
* Auto-applied discount code that shows in a banner when items are added to cart

{% hint style="info" %}
**Setup tip:** When modifying existing page elements, test your script carefully against the live theme. DOM selectors can break if your theme updates or if other apps modify the same elements. Use preview mode to verify the script works across page types and devices.
{% endhint %}

### Conditional and behavior-triggered tests

Test experiences that activate based on specific visitor actions or conditions.

**Example:** You want to test whether showing a "Still deciding?" message with a discount code after a visitor has spent 60 seconds on a product page improves conversion. A manual API test lets your developer trigger the message only after the time condition is met.

**Test ideas:**

* Discount offer after spending 60 seconds on a product page
* "You've viewed this 3 times" message on return product page visits
* Scroll-triggered content reveal (show social proof after scrolling 50% down the page)
* Upsell prompt when a visitor adds a specific product to their cart

{% hint style="info" %}
**Setup tip:** Manual API tests are built for this. Your developer uses `isHypothesisActive()` at the moment the condition is met, then runs the variant code only for assigned visitors. This keeps the test clean — visitors who never meet the trigger condition aren't counted.
{% endhint %}

### Complex integration tests

Test experiences that depend on data from external systems.

**Example:** You use a customer data platform (CDP) that segments visitors into loyalty tiers. You want to test whether showing a personalized loyalty message ("Welcome back, Gold member! Here's your exclusive offer") improves repeat purchase rate. A manual API test can check the CDP for the visitor's tier, then trigger the variant experience only for Gold-tier visitors.

**Test ideas:**

* Personalized loyalty messaging based on customer tier
* Different product recommendations based on browsing history from your CDP
* Localized promotional content based on IP-derived location data from a geolocation API
* Dynamic pricing or offer display based on data from your marketing automation platform

{% hint style="info" %}
**Setup tip:** Manual API tests are the right choice here. Your developer writes the integration logic to fetch data from the external system, then calls `isHypothesisActive()` to determine which experience to show. Make sure the external data fetch doesn't significantly slow page load.
{% endhint %}


# Create an API Test

{% hint style="info" %}
This article covers basic usage of the JavaScript API. For a full API reference, see [Reference](/api-reference/reference/window.shoplift).
{% endhint %}

### Choose your API test type

Before creating your test, decide which trigger type fits your scenario:

* **Automatic trigger**: your code runs automatically on every page for variant visitors. Best for site-wide changes like notification bars, global UI tweaks, or third-party script variations.
* **Manual trigger**: your code only runs when a developer explicitly triggers it. Best for behavior-triggered experiences, third-party integrations, or scenarios where you need control over exactly when and where the test activates.

### Set up an API test

{% stepper %}
{% step %}

### Create a new test

Open Shoplift and click **Create a test** in the top-right corner.
{% endstep %}

{% step %}

### Select your test type

Choose **Create a custom test with our API.**

<figure><img src="/files/7xsZBXYv0DfNCvrmROUr" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Select your trigger type

Scroll down to the next section and select **Automatic** or **Manual** depending on your desired behavior.

<figure><img src="/files/pfISVHM87nckqc7d0H5J" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Note your hypothesis ID

Before writing your code, note your hypothesisId for your variant. This will be needed for triggering the test.

<figure><img src="/files/eu4fT8PPFv5XkwEU8WWC" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Write your variant code

{% hint style="info" %}
For a full API reference, see [Reference](/api-reference/reference/window.shoplift)
{% endhint %}

Hover over the variant card and click Edit Code to open your theme code editor.

<figure><img src="/files/mfNLYzmjsJRrDwopUUSy" alt=""><figcaption></figcaption></figure>

Add your custom code to your Shopify theme that calls `isHypothesisActive()` at the right moment.

Here's the basic pattern:

```javascript
// Check if Shoplift is available, then trigger the test
if (window.shoplift) {
  const isActive = await window.shoplift.isHypothesisActive('YOUR_HYPOTHESIS_ID');
  if (isActive) {
    // Variant code runs here — or Shoplift executes the variant
    // script you wrote in the Shoplift editor
  }
}
```

{% endstep %}

{% step %}

### Configure your test settings

Set the following options before launching:

**Traffic allocation**

Choose what percentage of visitors see each version. A 50/50 split is recommended for most tests, as it reaches statistical significance fastest.

**Goal**

Select the primary metric Shoplift uses to determine a winner. **Revenue per visitor (RPV)** is recommended for most tests because it captures both conversion rate and average order value in a single metric. Other options include conversion rate and add-to-cart rate.

**Hypothesis**

Write a short statement explaining what you expect to happen and why:

> **If** \[specific change you're making], **then** \[expected outcome], **because** \[reason you believe this].

For example: "If we add a free shipping threshold banner to every page, then RPV will increase, because visitors will add more items to their cart to qualify for free shipping."

**Device targeting**

Choose which devices your test runs on: **All devices** (recommended for most tests), **Mobile only**, or **Desktop only**. Use device targeting when your change only applies to one device type.

**Visitor targeting**

Narrow your test to specific visitor segments:

* **All visitors**: recommended for most tests
* **New visitors only**: useful for testing first-impression elements
* **Returning visitors only**: useful for testing loyalty-focused features

{% hint style="info" %}
Visitor targeting is available on Advanced plans and above.
{% endhint %}

**Audience targeting**

For more precise targeting, set rules based on UTM parameters, geographic location, or custom conditions.

{% hint style="info" %}
Audience targeting is available on Advanced plans and above.
{% endhint %}
{% endstep %}

{% step %}

### Preview and launch

Preview your test to verify the variant code works correctly across pages and devices. When you're satisfied, click **Launch test.**
{% endstep %}
{% endstepper %}

### Tips for a successful API test

* **Test your script thoroughly before launch.** Scripts execute with full access to the page's DOM and JavaScript environment. A poorly written script can break product forms, interfere with other scripts, cause layout shifts, or create accessibility issues. Always preview across multiple browsers and devices.
* **Write defensive code.** Check that DOM elements exist before modifying them. Use `try/catch` blocks around operations that might fail. Don't assume page structure will always match what you see during development.
* **Don't modify the same elements as other apps.** If your script targets DOM elements that other Shopify apps also modify, the two can conflict in unpredictable ways. Check for conflicts during preview.
* **Let your test run long enough.** Wait until Shoplift shows statistical significance before making decisions. Most tests need at least 14 days and several thousand visitors per variant.


# Previewing an API Test

API tests run custom JavaScript on your store, so thorough QA is essential before launching. A script error can break page functionality, interfere with other apps, or cause visual glitches. This guide walks you through previewing and testing your API test to catch issues before they reach visitors.

### Enter preview mode

Open your test in Shoplift and click **Preview**. This opens your store in a new browser tab with Shoplift's preview mode enabled.

When preview mode is active:

* A preview control bar appears at the top of the page showing which variant you're viewing.
* You can switch between the control and variant using the control bar.
* No visitor record is created and no analytics events are sent. Your preview activity doesn't affect test data.
* Audience rules and traffic allocation are bypassed, so you can see any variant regardless of targeting settings.

<figure><img src="/files/uViRUPc6f61as4BbflUl" alt=""><figcaption></figcaption></figure>

### Check your variant

Switch to the variant using the preview control bar. Verify that your JavaScript changes appear as expected. Then switch back to the control to confirm the original store experience is unaffected.

For an **automatic API test**, the variant code runs automatically when you switch to the variant view. You should see your changes immediately.

For a **manual API test**, switching to the variant in preview mode simulates the trigger — you don't need to manually fire the `isHypothesisActive()` call during preview. Shoplift handles this so you can see the variant experience directly.

{% hint style="info" %}
If your manual API test uses a behavior-based trigger (like scroll depth or time on page), also test the trigger logic separately. Preview mode lets you see the variant experience, but you should verify that your trigger code fires at the right moment by testing it outside of preview mode using the URL parameter method described below.
{% endhint %}

### QA checklist

Work through each of these checks before launching:

#### Visual and functional checks

* [ ] **Variant renders correctly.** Switch to the variant and confirm the change is visible. Check that added elements (banners, badges, popups) appear in the right position with the correct styling.
* [ ] **Control is unaffected.** Switch back to the control and verify that no trace of the variant code is visible. The original experience should be completely unchanged.
* [ ] **Navigate between pages.** With the variant active, browse multiple page types (homepage, collection, product, cart). Confirm the variant experience is consistent where it should be and doesn't appear where it shouldn't.
* [ ] **Test on mobile.** Open the preview URL on your phone or use your browser's device emulation mode. Check that your variant code works at mobile viewport sizes and that elements are properly positioned.
* [ ] **Check page load.** Watch for visible flicker, layout shifts, or delayed rendering when the variant loads. If you see flicker, your script may need to execute earlier or use CSS to hide elements until they're ready.

#### Script-specific checks

* [ ] **Open the browser console.** Right-click the page, select **Inspect**, and go to the **Console** tab. Look for JavaScript errors. Errors in red may indicate your script is failing or conflicting with other code on the page.
* [ ] **Check for conflicts with other apps.** Browse your store with the variant active and interact with features powered by other apps (product reviews, wishlists, chat widgets, upsell popups). Confirm they still work normally.
* [ ] **Test interactive elements.** If your script adds interactive elements (buttons, forms, dismiss actions), click through every interaction to make sure they work.
* [ ] **Test add-to-cart and checkout.** Add a product to the cart and proceed through checkout (you can abandon before placing an order). Confirm your variant code doesn't interfere with the purchase flow.

#### For manual API tests only

* [ ] **Verify the trigger logic.** If possible, test outside of preview mode by adding the URL parameter `?slVariant=YOUR_HYPOTHESIS_ID` to your store URL. This forces the variant for your session so you can test the full trigger flow as a real visitor would experience it.
* [ ] **Test trigger conditions.** Confirm that the trigger fires at the right moment (scroll depth, time delay, specific visitor action) and that it doesn't fire when conditions aren't met.

### Testing with URL parameters

For more advanced QA, you can force a specific variant without using Shoplift's preview bar:

**Force a specific variant:**

```
https://your-store.com?slVariant=YOUR_HYPOTHESIS_ID
```

This assigns you to the specified variant, simulating a real visitor experience. This is useful for testing manual API test triggers end-to-end.


# Ending an API Test

When your API test reaches a conclusion, it's time to review the results and decide what to do next. Unlike template tests (which have an "Apply variant" button), API tests require you to implement the winning experience yourself — either by deploying the code permanently or removing it entirely.

### End your test

When you're ready to stop your test, open the test in Shoplift and click **End test**. This stops the test immediately — Shoplift will no longer execute the variant or control code for any visitors.

#### Pausing a test

If you need to temporarily stop a test to fix a bug or make adjustments, you can click **Pause** instead of ending it. Pausing stops all script execution and reverts all visitors to their normal store experience. Your test data stays intact so you can resume later.

{% hint style="info" %}
Avoid pausing tests unless absolutely necessary. Extended pauses can compromise your test data. If you need to pause for more than a short period, end the test instead, duplicate it to a new draft, and relaunch when you're ready.
{% endhint %}

### If your variant won

API tests don't have an "Apply variant" button because the winning experience is powered by custom JavaScript — there's no template or theme to reassign. To make the winning variant permanent, your developer needs to deploy the code directly into your Shopify theme. The steps differ slightly depending on whether you ran a basic or manual API test.

#### Deploy the winning code

Work with your developer to move the variant JavaScript from Shoplift into your theme permanently. This typically involves:

1. **Remove the Shoplift test dependency.** The deployed code should run on its own, without relying on Shoplift's test engine. Strip out any references to `isHypothesisActive()` or test-specific conditions. The code should now run for all visitors (or whatever audience you want).
2. **Test the deployed code.** Preview your theme to verify the code works correctly outside of Shoplift's test engine.

### If your original won

If the control outperformed the variant, you'll want to work with your developer to remove the variant code from the codebase.


# Campaigns

Campaigns let you group related tests under a shared business objective, so you can track whether a body of work is moving the metric that matters. To learn more about campaigns, explore the documentation below.

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td><strong>Overview</strong></td><td>Learn what campaigns are and how they work</td><td></td><td><a href="/pages/ScHg4pNZCHFtXYcUUNRW">/pages/ScHg4pNZCHFtXYcUUNRW</a></td><td><a href="/files/ZALUdclDNOzp8sJxKnBi">/files/ZALUdclDNOzp8sJxKnBi</a></td></tr><tr><td><strong>Create a campaign</strong></td><td>Set up a new campaign and add your first tests</td><td></td><td><a href="/pages/yLPGHbOGvRMzVnG9HMKX">/pages/yLPGHbOGvRMzVnG9HMKX</a></td><td><a href="/files/Rygjeb8A5gSxHdDNWxsS">/files/Rygjeb8A5gSxHdDNWxsS</a></td></tr><tr><td><strong>Assign tests to a campaign</strong></td><td>Add new or existing tests to a campaign</td><td></td><td><a href="/pages/l3hmVxmMwZ2ulcs2ISmK">/pages/l3hmVxmMwZ2ulcs2ISmK</a></td><td><a href="/files/aTkxxTwYjQ7pCdRdGeRS">/files/aTkxxTwYjQ7pCdRdGeRS</a></td></tr><tr><td><strong>Manage campaigns</strong></td><td>Rename, complete, reactivate, or delete a campaign</td><td></td><td><a href="/pages/vb73J7UOK3mZyY8ONG2R">/pages/vb73J7UOK3mZyY8ONG2R</a></td><td><a href="/files/ydIWww9xBTfWz7SsF1kw">/files/ydIWww9xBTfWz7SsF1kw</a></td></tr></tbody></table>


# Overview

Campaigns let you group related tests under a shared business objective. Instead of a flat list of individual experiments, you can organise your testing work into initiatives, like "Improve PDP Conversion" or "Homepage Redesign" and track whether that body of work is moving the metric that matters.

{% hint style="info" %}
Campaigns are available on the Advanced and Pro plans.
{% endhint %}

### What a campaign is

A campaign is a container. It has a name, an optional objective, and an optional goal metric. You add tests to it either by creating new drafts or pulling in tests you've already run and track progress as those tests move through the testing cycle.

### What you can do with campaigns

* Group related tests under a single initiative
* Set a goal metric - CVR, AOV, RPV, CTR, or ATC - to keep your team focused on the right number
* See all tests in a campaign at a glance, grouped by when they started
* Queue up upcoming test ideas as drafts in the Up Next sidebar
* Add tests you've already run to a campaign retroactively

### Finding campaigns

**Campaigns** is a top-level item in the left sidebar, above Tests. The Campaigns page shows all your initiatives organised into two tabs: **Active** and **Completed**, each displaying a count of campaigns in that state.

Each campaign card shows:

* Campaign name and objective
* Goal metric
* Live test activity
* Start date
* A progress bar showing how many tests have ended out of the total

<figure><img src="/files/JwplHI1t8VQM99qXlXK9" alt=""><figcaption></figcaption></figure>

### Your existing tests

All tests you ran before creating a campaign are available to add to a campaign at any time. You don't need to start from scratch, campaigns work with the testing history you already have.

### Still need help?

Visit the Troubleshoot section or contact [Shoplift support](/support/get-help) if you have questions about campaigns.


# Create a campaign

You can create a campaign from the Campaigns page at any time. Only the campaign name is required. Objective, goal metric, and tests are all optional and can be added or changed after creation.

{% hint style="info" %}
Campaigns are available on the Advanced and Pro plans.
{% endhint %}

### Steps

#### 1. Open the Campaigns page

1. Click **Campaigns** in the left sidebar.
2. Click **Create a campaign** in the top right corner.

<figure><img src="/files/nfgJaGZbaeOZuLmsk5vG" alt=""><figcaption></figcaption></figure>

#### 2. Name your campaign

Enter a campaign name. This is the only required field. Choose a name that clearly communicates the initiative, for example, "Improve PDP Conversion" or "Q3 Homepage Redesign."

Campaign names can be up to 250 characters.

#### 3. Add an objective (optional)

Use the **Objective** field to describe what this campaign is trying to achieve. A clear objective helps align your team on the purpose of the work and gives useful context when reviewing results later.

The Objective field supports up to 500 characters.

#### 4. Choose a goal metric (optional)

Select the metric this campaign is focused on. The available options are CVR, AOV, RPV, CTR, and ATC. Only one can be selected at a time.

The goal metric appears as a badge on the campaign card and throughout the campaign detail view. It's a reference point for your team not an automatically tracked score.

#### 5. Add tests (optional)

You can add tests to your campaign now or at any time after creation.

**Add new test ideas:** In the **Add new tests** section, type a test name into the input field and press Enter or click **Add**. This creates a named draft that is saved when you create the campaign. You can add as many drafts as you like before saving.

**Add existing tests:** Click **Add tests** in the **Add existing tests** section. A modal opens showing your unassigned tests, tabbed by status — Live, Paused, Draft, and Ended. Select the tests you want to include and confirm.

{% hint style="info" %}
Only tests not already assigned to another campaign appear in this modal.
{% endhint %}

#### 6. Create the campaign

The **Campaign Summary** panel on the right previews your campaign name as you fill in the form. When you're ready, click **Create campaign**.

You'll land on the campaign detail view, where you can track progress, view your tests, and continue building out the campaign.


# Assign tests to a campaign

Tests can be assigned to a campaign from several places in Shoplift. From the Tests list, during test creation, from a test report, or from within a campaign itself.

A test can only belong to one campaign at a time. A campaign can hold up to 1,000 tests.

### From the Tests list

The Tests list includes a **Campaign** column on every tab Live, Paused, Draft, and Ended. Each row shows either the name of the assigned campaign or an **Assign** dropdown if the test isn't yet part of a campaign.

To assign a test:

1. Find the test in the Tests list.
2. Click the **Assign** dropdown in the Campaign column.
3. Select the campaign you want to assign it to.

<figure><img src="/files/ZS6xO3KfoyAASuuVExGv" alt=""><figcaption></figcaption></figure>

### From within a campaign

To add unassigned tests directly from the campaign detail view:

1. Open the campaign and click the ellipsis menu (⋯) in the campaign header.
2. Select **Add existing tests**.
3. In the modal that opens, browse unassigned tests by status — Live, Paused, Draft, or Ended.
4. Select the tests you want to add and confirm.

### During campaign creation

When creating a new campaign, the **Add existing tests** section lets you attach unassigned tests before saving. See Create a campaign for full details.

### Removing a test from a campaign

To remove a test from a campaign:

1. Open the campaign detail view and find the test in the timeline.
2. Click the ellipsis menu (⋯) on the test.
3. Select **Remove from campaign**.

The test is unassigned but not deleted. It will reappear as unassigned in your Tests list and can be added to a different campaign at any time.


# Manage campaigns

### Rename a campaign

You can rename a campaign from two places:

* **From the Campaigns list:** Click the ellipsis menu (⋯) on the campaign card and select **Rename**. The campaign name becomes editable inline type the new name and press Enter to save.
* **From the campaign detail view:** Click the campaign name in the header to edit it inline.

### Complete a campaign

Completing a campaign moves it from the **Active** tab to the **Completed** tab. Campaign status is set manually, it's independent of the statuses of the tests within it.

To complete a campaign:

* **From the Campaigns list:** Click the ellipsis menu (⋯) on the campaign card and select **Complete**.
* **From the campaign detail view:** Click **Complete campaign** in the header.

{% hint style="warning" %}
If the campaign has any live or paused tests, a confirmation modal will appear. Confirming ends all active tests and marks the campaign complete in one step.
{% endhint %}

### Reactivate a completed campaign

To move a campaign back to Active:

1. Go to the **Completed** tab on the Campaigns page.
2. Click the ellipsis menu (⋯) on the campaign card.
3. Select **Start**.

{% hint style="info" %}
If you launch a draft or add a live test to a completed campaign, the campaign reactivates automatically. A confirmation message will appear to let you know the status has changed.
{% endhint %}

### Delete a campaign

{% hint style="danger" %}
Active campaigns must be completed before they can be deleted. Deleting a campaign is permanent and cannot be undone.
{% endhint %}

To delete a campaign:

* **From the Campaigns list:** Click the ellipsis menu (⋯) on the campaign card and select **Delete**.
* **From the campaign detail view:** Click the ellipsis menu (⋯) in the header and select **Delete campaign**.

A confirmation modal will explain that all tests within the campaign will be unassigned but not deleted. Confirming permanently removes the campaign. Your tests remain in the Tests list and can be assigned to a new campaign at any time


# Test Planning

### Organize, prioritize, and plan your tests from one place

Your test list is more than a record of what's running. It's where your entire experimentation program lives. Every test idea, draft, live experiment, and completed result sits in a single list that you can search, filter, group, and edit inline.

This guide covers how to find tests quickly, how to use planning fields like **Priority**, **Impact**, and **Effort** to build a structured backlog, and how to shape the list around the way your business works.

{% hint style="info" %}
Previously, tests were separated into tabs by status. All of your tests now appear in a single list. Use the **Status** filter, or group your list by **Status**, to see the same breakdown with a lot more flexibility.&#x20;
{% endhint %}

<img src="/files/TEPebqT8ARUvT2F1yidB" alt="" height="165" width="624">

### Finding tests

As your testing program grows, so does your list. Search, filters, and grouping help you get to the right tests fast.

#### Search

Use the search bar at the top of the list to find any test by name. Search works across your entire test history, so past experiments are always a few keystrokes away.

#### Filters

Filters narrow your list to exactly the tests you care about. You can filter by any test attribute, including:

* **Status**: Idea, Ready, Scheduled, Live, Paused, Ended
* **Test type**: Template, Theme, Price, API, Page
* **Priority**: Critical, High, Medium, Low
* **Goal metric**: CVR, AOV, RPV, CTR, ATC
* **Site area**: Global, Homepage, PDP, PLP, Cart, Landing page, Navigation, Other
* **Campaign**, **Tags**, and **Implemented**

<img src="/files/lgkoDLaCFW95mBteLkUg" alt="" height="217" width="624">

Shoplift remembers your view. If you apply a filter and navigate away, you'll return to the list exactly where you left off, so there's no need to rebuild your view every time.

{% hint style="info" %}
Frequently used filters are available as quick filters, so your most common views are always one click away.&#x20;
{% endhint %}

#### Grouping

Grouping reorganizes your list into sections so you can see your program from different angles. Group your tests by:

* **Status**: recreate the classic pipeline view of ideas, drafts, live tests, and results
* **Campaign**: see how work is distributed across your campaigns
* **Site area**: spot which parts of your store are getting attention, and which aren't
* **Priority**: turn your list into a ranked backlog
* **Goal metric**: see which KPIs your program is focused on
* **Test type**: separate template, theme, price, API, and page tests

{% hint style="info" %}
When your list is grouped by campaign, you can create a new campaign or rename an existing one directly from the group header, without navigating to a separate page. Learn more about [campaigns](/test/campaigns).&#x20;
{% endhint %}

<img src="/files/yAm5EbXEe9TjwFS8Q39l" alt="" height="349" width="624">

### Planning fields

These fields turn your test list from a log of experiments into a planning tool. Every field below is inline editable. Click the cell in the list view and set the value, without opening the test.

#### Priority

Rank the tests in your backlog: Critical, High, Medium, or Low. New tests start with no priority set, so it's always clear which ideas have been triaged and which haven't.

<img src="/files/uRy9fYvJ1VaTcC7oGzrG" alt="" height="235" width="624">

#### Impact

Score the potential upside of a test from 1 to 5. How much would this move the needle if the variant wins? A homepage hero test on your highest-traffic page might be a 5. A footer tweak might be a 1.

#### Effort

Score how much work a test takes to build and launch, from 1 to 5. A copy change is a 1. A redesigned product page template that needs design and development time might be a 5.

{% hint style="info" %}
**Impact** and **Effort** work best together. High-impact, low-effort tests are your quick wins, so sort or filter by these two fields to decide what to run next. This is the same logic behind common prioritization frameworks like ICE (Impact, Confidence, and Ease) and PIE (Potential, Importance, and Ease), built directly into your test list.&#x20;
{% endhint %}

#### Implemented

Track whether a winning change actually made it to your live store: Implemented or Not implemented. This closes the loop on the question every stakeholder eventually asks: "we found a winner, but did we ship it?"

If you end a test in a way that automatically launches the change to your store, Shoplift sets the test to Implemented for you.

#### Custom tags

Tags let you organize tests around the way your business works. Anyone on your team can create a tag by typing it into the **Tags** field, and each test can carry as many tags as you need.

Because tags are free-form, they can capture whatever your workflow requires:

* Link tests to external tools: `JIRA-123`
* Track internal workflow states: `Requires Approval`
* Mark themes of work: `Q4 Holiday`, `Mobile UX`, `Pricing Research`

<img src="/files/JBqHjn3JJUiNuxcyPESS" alt="" height="276" width="624">

### Every column at a glance

Alongside the planning fields above, the list includes columns covering each test's setup and performance.

| Column          | What it shows                                                                                                  |
| --------------- | -------------------------------------------------------------------------------------------------------------- |
| Name            | The test's name. Always visible.                                                                               |
| Status          | Where the test is in its lifecycle: Idea, Ready, Scheduled, Live, Paused, or Ended.                            |
| Hypothesis      | The hypothesis behind the test: what you expect to happen and why.                                             |
| Type            | The test type: Template, Theme, Price, API, or Page.                                                           |
| Goal metric     | The primary metric the test is measured against: CVR, AOV, RPV, CTR, or ATC.                                   |
| Site area       | The part of your store the test targets: Global, Homepage, PDP, PLP, Cart, Landing page, Navigation, or Other. |
| Campaign        | The campaign the test belongs to, if any.                                                                      |
| Visitors        | How many visitors have entered the test.                                                                       |
| Lift            | The variant's performance against the original on the test's goal metric.                                      |
| Progress        | How far along a live test is.                                                                                  |
| Priority        | Critical, High, Medium, or Low.                                                                                |
| Impact / Effort | Your 1 to 5 planning scores.                                                                                   |
| Tags            | Any custom tags applied to the test.                                                                           |
| Implemented     | Whether the winning change has been rolled out to your live store.                                             |

### Create tests from the list

You can capture a new test idea without leaving the list view. There are two ways to do it: the **Add test** button at the top of the page, or the **Add test** row at the end of the table. Either way, give the test a name and it's saved as an Idea you can flesh out later. This is a fast way to get ideas out of your head, or out of a brainstorm, and into your backlog.

If your list is grouped, new tests created inside a group inherit that group's attribute automatically. Add a test under the High priority group and it's created with High priority. When grouped by campaign, each campaign's group has its own create test option, and tests created there are automatically assigned to that campaign.

### Customize your columns

Shape the table to match what you care about:

* Show or hide columns to keep the view focused. The test name is always visible.
* Drag to reorder columns so your most important fields sit up front.

Your column setup is saved, so the list stays the way you arranged it.

### Manage tests from the list

Common test actions are available from the **⋮** menu on each row, so you can manage your program without opening each test:

* **View report**: jump straight to the test's results
* **Rename**: change the test's name
* **Duplicate**: a fast way to iterate on a previous idea
* **Remove from campaign**: detach the test from its campaign
* **Delete**: remove the test

You can also assign a test to a campaign directly from the **Campaign** field on the row. To schedule when a test pauses, resumes, or ends, see [scheduling tests](/test/scheduling-tests).

### Use cases

A few ways teams put these tools together.

#### Build and groom a backlog

Capture every idea in the list the moment it comes up, then triage in bulk: set **Priority**, score **Impact** and **Effort**, and tag anything that needs review. When it's time to launch, filter to your untested High and Critical priority ideas and sort by **Effort** to find the quick wins.

#### Run a weekly testing standup

Group the list by **Status** for an instant pipeline view of what's live, what's ready to launch, and what just finished. Because every field is editable inline, you can update priorities and add ideas during the meeting instead of taking notes to enter later.

#### Audit your test coverage

Group by **Site area** to see where your experimentation has been concentrated. If your PDP group is packed and your Cart group is empty, you've found your next opportunity. Grouping by **Goal metric** answers the same question for your KPIs.

#### Close the loop on winners

Filter by **Implemented**: Not implemented on ended tests to catch winning variants that never made it to production. This is one of the most common, and most costly, gaps in a testing program.

#### Mirror your team's workflow

Use custom tags to represent stages or references that live outside Shoplift, like `Requires Approval`, `Waiting on Design`, or `JIRA-123`, so your test list stays in sync with how your team already operates.

### Still need help?

Contact the Shoplift support team if you have questions about organizing or planning your tests.

### Related articles

* [Campaigns](/test/campaigns)
* [Scheduling tests](/test/scheduling-tests)
* [Choose the right test type](/get-started/quickstart/choose-the-right-test-type)
* [Understanding your results](/analyze/reports/statistical-significance)


# Test Management

## Making changes during a test

Your store doesn't stop evolving just because a test is running. New themes get deployed, content gets updated, landing pages get built. This guide covers the most common scenarios so you can make changes confidently without breaking your tests or contaminating your results.

***

### Switching themes during a template test

#### Can I switch themes while a template test is running?

Yes. Switching themes is a normal part of managing a Shopify store, and Shoplift is designed to handle it. The key requirement is that your tested templates must exist in whichever theme becomes your active theme.

Template tests run at the template level, not the theme level. When you switch to a new theme, Shoplift checks whether your test's original and variant templates exist in it. If they do, the test keeps running. If they don't, Shoplift automatically pauses the test to prevent visitors from landing on a template that doesn't exist.

#### What to do before switching themes

**Before you publish a new theme, work through this checklist:**

1. **List all active and draft tests.** In the Shoplift dashboard, check every test that is either live or in draft.&#x20;
2. **Note the exact template names used on both sides of each test.** For each test, identify the original template and the variant template. Template names must match exactly in your new theme, including capitalisation and any suffixes.
3. **Confirm those templates exist in the new theme.** Open the Shopify Code Editor on your new theme and verify that every template from your list is present. If any are missing, copy them from your current theme before publishing.

{% hint style="warning" %}
This applies to draft tests too, not just live ones. If you've created a draft test and built variant templates against your current theme, those templates will need to be in the new theme before you launch.
{% endhint %}

#### If Shoplift pauses your test after a theme switch

Copy the missing template from your previous theme into the new one, then resume the test from the Shoplift dashboard. Your existing test data is fully preserved when a test is paused visitor bucketing resumes cleanly when you restart. We will present an error message with the listed Templaets that need to be added in the Test Page as below :&#x20;

<figure><img src="/files/WJWBY0j9Jot5vnmfCaFD" alt=""><figcaption></figcaption></figure>

#### If you use Git for theme deployments

Shoplift occasionally ships updates to the `shoplift.liquid` snippet. If your team pushes theme updates via Git, always pull down the latest version of your live theme before pushing this ensures the current snippet version isn't accidentally overwritten with an older one from your repository.

If the snippet is removed or overwritten, Shoplift will attempt to restore it automatically within the hour, and will also check whenever a new theme is published. Until it's restored, all tests will stop collecting data.

{% hint style="danger" %}
If the Shoplift snippet is missing or outdated:

* All tests stop collecting visitor data
* Visitors on the variant side of a theme test may see theme preview bars
* Visitors on the variant side of a theme test may get stuck on the variant theme until the script is restored
  {% endhint %}

#### If Shoplift pauses your test after a theme switch

If you publish a new theme and Shoplift pauses a test because a template is missing, the fix is straightforward: copy the missing template from your previous theme into the new one. Once the template is present, resume the test from the Shoplift dashboard.

Your existing test data is fully preserved when a test is paused. Visitor bucketing resumes cleanly when you restart.

***

### Updating content while a test is running

#### Updating a template during a live template test

If you need to change copy, swap an image, or add a section on a page that's currently being tested, you need to update **both** templates: the original and the variant.

Changes to the original are not automatically reflected in the variant. Shoplift treats them as independent templates. If you update one but not the other, the two sides will diverge beyond your intended test change, and that divergence will skew your results.

**Best practice:** Treat content updates on tested pages as a two-step process.&#x20;

* Make your changes to the original template in Shopify.
* Open the variant template and apply the same changes.

{% hint style="info" %}
If the change is significant enough to meaningfully alter what you're testing, consider pausing the test, making both updates, then resuming. This keeps your results clean and gives you a clear record of when the change was made.
{% endhint %}

#### Creating new templates or landing pages during a live test

Creating new templates in your theme doesn't affect tests that are already running. Shoplift only tracks the specific templates assigned to each test new templates are ignored unless you explicitly add them to a test.

#### Making sitewide content changes during a live test

Changes made through the Shopify Theme Editor to sections that appear across your whole store such as header navigation, footer, or announcement bars affect both the original and variant sides of a template test simultaneously, since template tests share the same underlying theme. No action is needed in Shoplift for these changes.

For theme tests, sitewide changes need to be applied to both the original and variant theme separately, since each theme is an independent copy.

***

### Switching themes during a theme test

#### Can I switch themes while a theme test is running?

A theme test runs your original (live) theme against a variant theme so the themes themselves are what's being tested. Changing your active theme mid-test means the baseline your visitors are being compared against has changed

In most cases, the right approach is to **end the current test before switching themes**, then set up a new test against your updated theme.

#### If you need to update your theme mid-test

If you need to push bug fixes or design changes to your live theme while a theme test is running, you have two options:

**Option 1: Pause, update, resume**

1. Pause your test in Shoplift.
2. Make your changes to the live theme in Shopify.
3. Apply the same changes to the variant theme so both sides stay consistent.
4. Resume the test.

This is the safest approach. Your data is preserved, and bucketing resumes cleanly when you restart.

Video of the workflow seen below :&#x20;

{% embed url="<https://drive.google.com/file/d/1gVxPXTi99B2iXts3CVJyXtwA1dku9jN_/view?usp=sharing>" %}

**Option 2: Remake the tested changes on the new theme**

If you're deploying a significantly updated version of your theme (rather than a minor content change or bug fixes), it may be cleaner to:

1. End the current test.
2. Publish the updated theme.
3. Apply the tested changes from your variant to the new theme.
4. Start a new test.

This is the better option when the original theme has changed enough that continuing the old test would produce unreliable results anyway.

***

### Best practices summary

* **Plan theme switches around your test roadmap.** If a new theme deployment is coming, aim to either launch it before starting new tests or after ending active ones.
* **Draft tests are affected too.** Don't wait until a test is live to check template consistency — verify before you publish a new theme if drafts are in progress.
* **When in doubt, pause.** Pausing a test is always safe. Data is preserved and bucketing resumes cleanly. It's better to pause briefly than to let results be contaminated by an untracked change.
* **Keep both sides in sync.** Whenever you update content on a tested page, update both the original and the variant. Divergence beyond your intended test change will skew your results.
* **If using Git, pull before you push.** Always pull the latest live theme down to your repository before pushing updates to avoid overwriting the Shoplift snippet with an outdated version.

***

### Still need help?

Please contact the Shoplift support team if you run into issues after switching themes or making changes during a test.


# Lift Assist™

Lift Assist™ is Shoplift's recommendation engine, dynamically providing theme sections to extend your store's functionality. Explore the below documentation to learn more.

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><strong>What is Lift Assist</strong>™<strong>?</strong></td><td>Explore our powerful recommendation engine</td><td></td><td><a href="/pages/fUoHrxrGXadIDZtAPv9G">/pages/fUoHrxrGXadIDZtAPv9G</a></td><td><a href="/files/4e7TQzu7nzowPV5mPM0o">/files/4e7TQzu7nzowPV5mPM0o</a></td></tr><tr><td><strong>How to Use Lift Assist</strong>™</td><td>Learn how to set up a test with Lift Assist™</td><td></td><td><a href="/pages/b3VVfKv3IWzdKif4NY2v">/pages/b3VVfKv3IWzdKif4NY2v</a></td><td><a href="/files/fH02cbqNQDctxcfTziGF">/files/fH02cbqNQDctxcfTziGF</a></td></tr><tr><td><strong>Brand Styles</strong></td><td>Learn how to set up and customize your brand styles</td><td></td><td><a href="/pages/DWYH4jQ5ppYWWOiMuQ81">/pages/DWYH4jQ5ppYWWOiMuQ81</a></td><td><a href="/files/occJ19lQX3BiIqjvYxxV">/files/occJ19lQX3BiIqjvYxxV</a></td></tr></tbody></table>


# What is Lift Assist™?

### Lift Assist™ overview

Lift Assist™ is Shoplift's recommendation engine which dynamically provides theme sections to extend your store's functionality and give you the tools you need to run powerful tests otherwise not capable with your theme.&#x20;

When you select a Lift Assist™ recommendation and specify the template that you would like to test, Shoplift will create a variant by duplicating your template and injecting the corresponding Lift Assist™ theme section into the duplicate.

### Branding and design automations

By default, theme sections provided by Lift Assist™ use your Brand Styles (editable from the Brand Styles section within Shoplift), which help ensure that your tests remain on-brand and save you time on design, so you can focus on the core concepts or strategy of the test you are conducting. For more information on Brand Styles, see [Importing your Brand Styles](/test/lift-assist-tm/brand-styles).

### Robust and highly-customizable theme sections

Lift Assist™ theme sections have been designed to provide maximal customization options, and once you deploy the section via a recommendation, that section is available for reuse on all templates relating to the section.

{% hint style="info" %}
If you need help conducting tests with Shoplift, our [support team](broken://pages/BZDv9d1utwcXtufWrzA4) is always available to assist. Reach out from within the app using the live chat widget in the bottom right of the screen, or email [help@shoplift.ai ](mailto:help@shoplift.ai)to get in touch.
{% endhint %}


# How To Use Lift Assist™

Lift Assist™ test recommendations do all the heavy lifting for you, and are designed to save you time and money by eliminating many of the requirements for design and development when adding new functionality and customization options to your theme.&#x20;

You can implement and test Lift Assist™ recommendations by following a few easy steps.

### Import your Brand Styles

To use Lift Assist™ recommendations, you first need to import and review your Brand Styles, but this only takes a few minutes.&#x20;

When you import your Brand Styles, Shoplift will automatically scan your store for your existing colors, fonts, and more to create a set of design combinations, called Patterns, that will style theme sections deployed by Lift Assist™ recommendations.

For a detailed guide on importing your Brand Styles, see [Importing your Brand Styles](/test/lift-assist-tm/brand-styles).

{% hint style="warning" %}
If you are on a password-protected store, like a staging environment or test store, Brand Styles and Lift Assist will not work out-of-the-box. Try adding a new pattern in the brand style settings and contact [customer support](broken://pages/BZDv9d1utwcXtufWrzA4) if you need further assistance with this feature.
{% endhint %}

### Browse Lift Assist™ recommendations

Lift Assist recommendations can be viewed from the Lift Assist™ page in the app or from within a specific test draft when you are creating a variant to test.

If you are browsing from the Lift Assist™ page, recommendations for all template types will be available to browse and select. There are a host of high-impact homepage, collection page, product page, and landing page recommendations that can be implemented.

If you are browsing Lift Assist recommendations from within a test draft, then recommendations will be pre-filtered to correspond with the template that you've opted to test.

### Implement a Lift Assist™ recommendation

Once you've decided on a recommendation that you want to test, click **Test it**, and Shoplift will automatically create a variant (by duplicating your original template) and insert the corresponding test asset (theme section) into your variant.&#x20;

Once the variant is created, edit your new template by clicking the button labeled **Edit in Shopify**. In the Shopify Theme Editor, you will see that the Lift Assist™ section or block has been automatically added to your template.&#x20;

Theme sections provided by Lift Assist™ recommendations are highly customizable, but the initial section configuration and order on the page will depend on the recommendation you decided to test.&#x20;

{% hint style="info" %}
Lift Assist™ builds a new section on your template but does not automatically add content to this section. Therefore, make sure you click "Edit in Shopify" and add content to your Lift Assist™ section before launching your test.
{% endhint %}

### What themes are compatible with Lift Assist™?

All Online Store 2.0 themes are compatible with Lift Assist™, because templates in these themes are built on the newer JSON template architecture.

If you have a legacy (Online Store 1.0) Shopify theme, which contains templates built on the older liquid template architecture, then either some or all of your templates will be available to use with Lift Assist™ depending on the complexity of the liquid code powering your templates.

Legacy templates supported by Lift Assist™:

* **Homepages:** all legacy homepage templates are supported for use with Lift Assist™. When creating either a custom test or Lift Assist™ test with Shoplift, we will automatically create an upgraded JSON version of your existing liquid homepage that retains all of your content and customizations.&#x20;
* **Collection pages, product pages, and other pages:** Depending on the complexity of your theme, your collection pages, product pages, and other pages may or may not be compatible with Lift Assist™. Using Lift Assist™ requires a JSON template architecture, and Shoplift is the only app that provides a [dynamic upgrade function](/test/best-practices/theme-compatibility) to transition your legacy liquid templates to Online Store 2.0 JSON templates with a few clicks. However, if your desired template has a more complex liquid structure that is not able to easily be dynamically parsed, then Shoplift will not be able to upgrade this template to the JSON architecture and it will not be available for use with Lift Assist™.

{% hint style="info" %}
If you need help conducting tests with Shoplift, our [support team](broken://pages/BZDv9d1utwcXtufWrzA4) is always available to assist. Reach out from within the app using the live chat widget in the bottom right of the screen, or email [help@shoplift.ai ](mailto:help@shoplift.ai)to get in touch.
{% endhint %}


# Brand Styles

When you'd like to test Shoplift-created sections or blocks powered by Lift Assist™ on your site, you'll be prompted to set up your Brand Styles first. Shoplift will pull in your brand styles from your theme automatically, scanning your store for the most used patterns of colors and fonts. These patterns in your Brand Styles will be used to format these sections and blocks powered by Lift Assist™.

### Editing Brand Styles

When creating tests powered by Lift Assist™, we'll use your Brand Styles as a starting point. This saves you the headache of worrying about smaller design details so you can focus on the new copy, creative, or layouts that you want to test.

Once your brand styles are automatically imported, you'll want to review everything to make sure it looks right - you can click on "edit styles" to make any adjustments. Brand Styles focus on three key areas: fonts, colors, and patterns.&#x20;

#### Fonts

Shoplift allocates your fonts into four categories: Title, Body, Label, and Button.

Like most Shopify themes, Shoplift sections and blocks will use these fonts to create beautiful shopping experiences while keeping things simple. If any of the fonts we pulled from your theme are incorrectly categorized, you can change or update them at any time.

<figure><img src="/files/kuAZ5xSZ22sezLlm95yX" alt=""><figcaption></figcaption></figure>

#### Colors

In addition to fonts, Shoplift will also pull in the colors you use on your website that you can use to define your patterns and deploy Shoplift sections or blocks. To add a color to your Brand Styles, enter the hex code for the color you want to add and click the "+". You can have up to 10 colors.

<figure><img src="/files/7RkgOhfVLV5aCDJCG0E4" alt=""><figcaption></figcaption></figure>

#### Patterns

Like most Shopify themes, Shoplift sections organize your brand styles into preset design combinations, called patterns, to save you time when working with new templates, sections, or blocks in the Theme Editor. Shoplift patterns are organized into three types - Content, Product, and Highlight.&#x20;

When deploying Shoplift sections, each section will use a specific pattern type by default that best suits the purpose of the section:

* **Content patterns**: styles content-driven sections on your store, like hero and press sections.
* **Product patterns**: styles product & collection focused sections on your store, like product details and featured collections.
* **Highlight patterns**: styles high-contrast, action-oriented sections on your store, like announcement bars and call-to-actions.&#x20;

Patterns ensure that when a new section is deployed on your theme, it will match your brand and be automatically optimized. You can always change the styles of a specific section you are working on from within the Shopify Theme Editor if you want to depart from these optimized defaults.

{% hint style="info" %}
You can edit your Brand Styles at any time from the Settings section of the app.
{% endhint %}

{% hint style="warning" %}
**Updating Brand Styles over time**

Please note that due to the way Shopify handles section configurations on templates, you should always make at least one edit to a Lift Assist™ section and "save" within the Shopify Editor. This will ensure that if you change your Brand Styles later on, the styles on your Lift Assist™ sections will not change until you first review them and update the styles yourself.
{% endhint %}


# Audiences & Targeting

Shoplift tests can be conducted across your entire site, for all visitors, or targeted to a narrow subset of visitors depending on various attributes.

To learn more about each targeting type, how it works, and how to use it in your tests, see the links below.

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Devices</strong></td><td>Learn how to target by device type</td><td><a href="/files/vEYFFPhhxPjz2roQUvgv">/files/vEYFFPhhxPjz2roQUvgv</a></td><td></td><td><a href="/pages/8hYYKaYvds7CIdIQJb5Y">/pages/8hYYKaYvds7CIdIQJb5Y</a></td></tr><tr><td><strong>New and Returning Visitors</strong></td><td>Learn how to target by visitor type</td><td><a href="/files/PsnYYh4qgDnp6bUleNXJ">/files/PsnYYh4qgDnp6bUleNXJ</a></td><td></td><td><a href="/pages/O9RHTRDdWa2a94nwnqev">/pages/O9RHTRDdWa2a94nwnqev</a></td></tr><tr><td><strong>Custom Audiences</strong></td><td>Learn how to target by UTMs, referring domains, and country</td><td><a href="/files/AroJCURFUDX9rQtkivwV">/files/AroJCURFUDX9rQtkivwV</a></td><td></td><td><a href="/pages/uypLccNHEKs4h4HRtprZ">/pages/uypLccNHEKs4h4HRtprZ</a></td></tr></tbody></table>


# Devices

### Device targeting

All tests in Shoplift can be segmented to all devices, desktop devices, or mobile devices.

#### Mobile segments

When a test is segmented to mobile devices, only visitors coming to your website from devices of that category (including tablets) will be shown the test.

#### Desktop segments

When a test is segmented to desktop devices, only visitors coming to your website from desktop computers or laptops will be shown the test.

{% hint style="info" %}
**FAQ: How does Shoplift determine if a device is mobile or desktop?**

To determine if a device is mobile, tablet, or desktop, we look at the user agent sent by the browser.
{% endhint %}

### How to view a mobile test

#### On a mobile device

If you segment your test to mobile devices only, the easiest way you can view your test is by navigating to your tested page(s) on a mobile device in an incognito or private browser tab. If you aren't served the test variant, you can close the tab and navigate again until you are served the test variant.

As Shoplift uses local storage to track visitors, closing and reopening incognito or private tabs will clear the tracker so that you can be served both variants in the test.

#### On your computer

If you want to view a test segmented to mobile devices on your computer, you can do so by emulating a mobile device in your browser. If you don't know how to do this, don't worry - it's easy with a chromium-based browser like Google Chrome or Brave.

<figure><img src="/files/k96Z3MpkWkGmfVvyOReD" alt=""><figcaption></figcaption></figure>

1. Open an incognito tab in your browser
2. Open the Developer Tools by clicking View > Developer > Developer Tools, or using Command + Shift + C (on Mac) or Control + Shift + C (on Windows).
3. This will open the developer tools window. In the top center of the screen, you can select a mobile device from the "Dimensions" dropdown. This will change your user agent to a mobile device.
4. Navigate to your tested page(s). You will now be placed in the A or B version of your test.


# New and Returning Visitors

{% hint style="info" %}
This article discusses visitor targeting, which is available on Advanced and Pro plans only.
{% endhint %}

### Visitor targeting

All tests in Shoplift can be segmented to all visitors, new visitors, or returning devices.

#### New visitors

When a test is segmented to new visitors, only visitors who have not been to your website since Shoplift has been installed will be shown the test.

#### Returning visitors

When a test is segmented to returning visitors, only visitors who have been to your website since Shoplift has been installed will be shown the test.

### How Shoplift tracks new and returning visitors

The moment you install Shoplift, we begin identifying visitors on your store with our tracking script. Initially, all visitors are deemed "new".&#x20;

Over time, as Shoplift sees visitors return to your site, we identify them as returning visitors. This pool of returning visitors becomes more accurate and reliable over time.

### Why do I have to wait 7 days to use visitor targeting?

You may notice that when you install Shoplift for the first time, we gate new and returning visitor targeting behind a 7-day window. This is to ensure that our tracking script has a sufficient sample size of new and returning visitors prior to enabling tests to be segmented on these attributes.

As with other analytics and reporting tools, the longer that the script is on your website, the better it becomes at identifying who is a new or returning visitor long-term.


# Custom Audiences (UTMs, Referring Domains, and Geo-targeting)

{% hint style="info" %}
This article discusses our Custom Audiences feature, which enables advanced targeting and segmentation capabilities based on UTM and query parameters, referring domains, and geography. Custom audiences are available on Advanced and Pro plans only.
{% endhint %}

Audiences in Shoplift are customizable segments of website visitors that are constructed by creating rules around various parameters, like UTMs, URL strings or query strings, referring domains, and countries.

In Shoplift, you can create and use **custom audiences**, which are segments constructed from your own rules, or use **common audiences,** which are popular segments created by Shoplift that are ready-to-use.

Below is a guide on how to use both custom audiences and common audiences to more narrowly define the targeting for your tests.

### Adding audiences to your test

On the test draft page, you will see an "Audience targeting" section that allows you to add various audiences to your test to define targeting in more advanced and customizable ways than device or visitor targeting provides.

To add an audience to your test, click the  "Add audiences" button. This will open the "My audiences" window, where you can create and manage your audiences and select them to be included in your test.

The "My audiences" window is divided into two types of audiences: **custom audiences** and **common audiences**. By default, you will not have any custom audiences, because you need to create them.&#x20;

If you don't have advanced or specific use cases, you can use the provided **common audiences** to narrow the targeting of your test to common visitor segments, like visitors from paid media channels, search channels, specific referring domains like Facebook or Google, or even common countries like the United States or Canada.

To add an audience to your test, select the checkbox and click "Done."&#x20;

<figure><img src="/files/mMKlzCQnQ1ajMC7sBhWJ" alt=""><figcaption></figcaption></figure>

### Create a custom audience

To create your first custom audience, click "Create" in the **My audiences** window. A audience editor will open where you can define the rules for your new audience, name your audience, and save it for reuse.

#### Constructing audience rules

From the audience editor, you can add various rules and combinations of custom logic to define targeting for your test. Rules are created by selecting a "dimension" (like UTMs, URL strings, or referring domains), selecting an "operator" (like "contains," "equals", or "starts with") and entering a value. Below is a list of the dimensions currently provided:

* **utm\_source:** a parameter and value specified in your ad campaign links, typically constructed to provide the ad platform or website, like "facebook," "tiktok," or "google."
* **utm\_medium:** a parameter and value specified in your ad campaign links, typically constructed to provide the type of ad platform of website, like "social," "paidsocial," "search," or "cpc" (cost-per-click).
* **utm\_campaign:** a parameter and value specified in your ad campaign links, typically constructed to provide the name or title of the specific ad campaign, like "black-friday-sale."
* **utm\_content:** a parameter and value specified in your ad campaign links, typically constructed to provide the name, title, or type of a specific ad, like "black-friday-video."
* **URL string:** can be any parameter or value that is present in your URL structure for the desired test page or location. For example, if your Google Ads provide a "gclid" parameter (Google Click ID), you can target your tests based on the presence or absence of this parameter.
* **referring domain:** can be any high-level domain that your website visitors are coming from, like "facebook.com" or "google.com".&#x20;
* **country:** a list of all countries to use to refine your targeting

For example, if you wanted to restrict your test to show only to visitors coming from Facebook, then you could create a rule for "Referring domain contains facebook".

You can also chain different rules together. If you wanted to target Facebook visitors from Italy, for example, you could add a second rule to your audience that is "Country equals Italy".

<figure><img src="/files/XqqYGDX7b7bKEq4asjVL" alt=""><figcaption></figcaption></figure>

In the above example, this test would now only show to Facebook visitors in Italy.

### Add multiple audiences to a test

You can also add multiple audiences to your test, to expand the scope of your tested visitor segment. For example, if you wanted to run a test on an audience focused on specific Facebook visitors as well as an audience focused on specific TikTok users, you can add both your Facebook audience and your TikTok audience to your test.

<figure><img src="/files/qJRV1ttWJ0TAlmLR8PS4" alt=""><figcaption></figcaption></figure>

The audiences will be added with "or" logic, which means that the test will be able to show to visitors in your Facebook audience or visitors in your TikTok audience.

{% hint style="info" %}
**FAQ: If I apply my variant on a test with audiences, will it affect all visitors?**

When you apply your variant after running a test, all website visitors will be exposed to that variant experience. Audience segmentation will not continue after the test is ended and the variant is applied.&#x20;
{% endhint %}


# Preview Mode

You can preview any test directly in your browser with Shoplift's **Preview Mode**. Preview Mode can be used on draft, active, and ended tests, so long as the tested template, theme, or page are still available.

### Understanding preview mode

Preview mode creates a temporary session that mimics the real test experience without affecting your live store data. This allows you to thoroughly validate your test configuration before any real customers see it.&#x20;

**With preview mode, you can:**

* See exactly how variants will appear for test visitors
* Verify both Control (A) and Variant (B) experiences
* Test the complete purchase flow without affecting live data
* Check all areas of your site before launching

### Using Preview Mode

On a given test draft or report, hover over your variant preview and select **Preview in Browser**. This opens Preview Mode in a new tab.

When using preview mode, you can experience your test as a website visitor would.

### Switching Between Variants

At the bottom of the preview window, you’ll see a toolbar that lets you switch between:

* **Original (A**) – your current experience
* **Variant (B)** – your test experience

<figure><img src="/files/uViRUPc6f61as4BbflUl" alt=""><figcaption></figcaption></figure>

You can navigate across your site while the preview is active to see how each page looks when assigned to the A or B variant.

{% hint style="info" %}
**FAQ: Why do my edits show up on my original and variant previews?**

If making edits to a template test in Shopify affected your original template, you likely made theme-level edits to your variant template. You should revert these edits and set up a new test by clicking "Test a theme or global element."
{% endhint %}

### Exiting Preview Mode

To return to your live site, simply select Exit in the toolbar.


# QA Checklist

Want to learn how to effectively QA your test prior to and following launching? Use our in-depth QA checklist to ensure that your tests are all set to launch, and look good once you've set them live.

### Pre-launch QA

#### 1. Save your edits in Shopify

Before launching your test, you want to make sure that your edits are saved in Shopify, or else your test may not show the changes you have intended to test

#### 2. Use the "preview in browser" feature

All tests in Shoplift have a "preview in browser" feature, which allows you to easily open up your tested page(s) in a new browser tab. This allows you to ensure that critical functionality works, and that key visuals look as expected.

#### 3. View your tested template on different pages on your store

When you use the preview in browser feature on your variant, you will notice that your URL has a string at the end of it with "`?view=[template]`".&#x20;

Template tests leverage Shopify's "alternate templates" feature, which will render a specific template on a given page by appending this "`?view`" query parameter to the end of your URL.

To view your variant on different pages on your store, simply copy the string (including the question mark) and append it to the different collection, page, or product URLs included in your test.

### Post-launch QA

#### 1. Use an incognito browser to get served both test variants

Often times you may want to verify that your test is running as expected following launch. The easiest way to do this is with an incognito browser tab, since the tracking will reset each time you close and reopen your incognito window.

To use an incognito window to get served your test variant and experience the test as if you were one of your website visitors, first open a fresh incognito window in your browser and navigate to your tested page(s).

#### 2. Verify that you are placed in the test

If you are served the variant, depending on the changes you are testing, you will immediately be able to tell because you will see the tested template or theme the moment you navigate to your test page(s) or your site in general.

If you are running a template test, you will be able to see the "`?view=[template]`" parameter appended to the end of your URL. If you are running a theme test, you will be able to see the Shopify preview parameter (`?_ab=0&_fd=0&_sc=1`)

However, if you are served the original, it may not be immediately evident that the test is running or that you are placed in the test. To verify this, you will need to check your local storage in your browser to confirm.

* To check your local storage, open the Developer Tools in your browser by clicking View > Developer > Developer Tools, or using Command + Shift + C (on Mac) or Control + Shift + C (on Windows).
* In the window that opens, on the right, you will see different tabs, titled Elements, Sources, Console, and more. There will also be a "more" menu (delineated with double arrows, like ⇉) which will give you other tab options. Click the dropdown and select "Application".&#x20;
* In the Application tab, you will see a list of items marked "Storage". Click "Local Storage" and then click the name of your website in the list, like "<https://mystore.com>".
* In the menu on the right, you will see the items in local storage for your website. One of them will be marked "SHOPLIFT\_SESSION\_mystore.shopify.com".&#x20;
* Click this, and you will see a list of attributes listed out. At the bottom will be an attribute called `visitorTests`
* If you are placed in a test, then the value for this attribute will look like `[,...]`, indicating that it is  populated with a value.
* Expand the list of values by clicking the small arrow to the left of visitorTests. You will see the list expand and reveal the ID of the test you are placed in.


# Scheduling Tests

## Overview

Shoplift’s test scheduling feature allows you to plan and manage the timing of your tests to ensure they align with your business needs. You can set tests to launch and end at specific dates and times, or configure them to automatically end when they reach statistical significance.

<figure><img src="/files/bQaqDrYon4ziIuRRWvgg" alt=""><figcaption></figcaption></figure>

## Scheduling options

#### Schedule a launch time

Schedule the exact date and time when your test will start collecting data. This can be set in advance to align with marketing campaigns, sales, or other key events.

#### Schedule an end time

Set a scheduled end date and time for your test. This option is helpful if you want to run tests within a specific time frame or sync them with other business activities.

#### Schedule a test to automatically end when it reaches significance

Choose to end the test automatically when statistical significance is achieved, ensuring you only gather data as long as it’s meaningful. If you select both a scheduled end time and an automatic end at significance, the test will end based on whichever event occurs first.

## Schedule a test

The test scheduler can be accessed from various pages in Shoplift.

#### Test draft page

On the draft page, you can set a schedule by clicking the **Schedule** button in the top right, next to the launch button.

You can tell if a test is scheduled by the type of badge that shows up next to the test name:

* "Draft" badge: this test is unscheduled
* "Date and time" badge: this test is scheduled to launch at a specific time
* "Scheduled badge": this test has multiple schedule options set

#### Test list page

On the test list page, from the Live or Draft tabs, you can set a schedule by clicking the **Actions** button (the three dots) to reveal the actions dropdown list. You will see various scheduling options depending on your tests current schedule:

* **Schedule test:** opens the test scheduler so you can set a schedule
* **Edit schedule:** opens the test scheduler so you can edit a schedule
* **Remove schedule:** quickly removes a set schedule from a test

If a test has a schedule, a separate **Edit schedule** button will be displayed next to the **Actions** button so you can easily distinguish which tests are and are not scheduled.

#### Test report page

On the test report page, you can set a schedule by clicking the **Schedule** button in the top right, next to the **End** button.

Once a scheduled end time is set, it will be displayed next to the test start time as long as it remains scheduled.


# Running Multiple Tests

You can run as many tests as you want in Shoplift at the same time. There is no limit.

When you run multiple tests simultaneously, Shoplift automatically handles which tests each visitor can participate in. You don't need to set up any exclusion rules manually Shoplift takes care of it in the background.

### What is mutual exclusion?

Mutual exclusion is how Shoplift ensures each visitor only participates in one conflicting test at a time. This keeps your results clean. If a visitor saw changes from two different tests at once, you wouldn't be able to tell which one influenced their behaviour.

Shoplift applies mutual exclusion automatically based on the types of tests you're running.

### How it works

Every test type is either **global** or **conditional**:

* **Global tests** : Affect every page on your store. Visitors are enrolled as soon as they arrive. This includes theme tests, price tests, and automatic API tests.
* **Conditional tests :** Affect specific pages or actions only. Visitors are enrolled when they reach the relevant page or trigger. This includes template tests, URL redirect tests, and manual API tests.

A visitor can only be in one global test at a time. They also cannot be in a global test and a conditional test simultaneously. However, they can be in multiple conditional tests at once, as long as those tests target different pages.

| Test type     | Scope       | When the visitor is enrolled                  |
| ------------- | ----------- | --------------------------------------------- |
| Theme         | Global      | Any page load                                 |
| Price         | Global      | When a tested price scrolls into view         |
| Automatic API | Global      | Any page load                                 |
| Template      | Conditional | When the visitor reaches the target page type |
| URL redirect  | Conditional | When the visitor lands on the target URL      |
| Manual API    | Conditional | When a developer triggers it                  |

### Running two tests targeting the same page type (conditional)&#x20;

If you run two or more tests that target the same page type (A side of the test) for example, two homepage template tests or two product page template tests those tests **are mutually exclusive**. A visitor will only ever be enrolled in one of them.&#x20;

This applies any time two conditional tests share the same entry point (Same A side). Some examples:

* Two template tests both targeting the same product page template
* Two URL redirect tests both targeting the same entry URL
* A template test and a URL redirect test both triggered by the same page

### Running two+ tests targeting different page types (conditional)&#x20;

If your two or more conditional tests target different page types, **mutual exclusion is not enforced**. A visitor can be enrolled in both tests simultaneously.

For example, if you run a homepage test and a product page template test at the same time, a visitor can participate in both, they'll see your homepage test when they land on the homepage, and your product page test when they navigate to a product page. Because the two tests affect completely separate pages, there's no risk of one test interfering with the other's results.

This is intentional. Running conditional tests on different page types in parallel is one of the most efficient ways to run multiple experiments at once without splitting your traffic pool.

### How Shoplift handles conditional tests

When a visitor qualifies for both a global test and a conditional test, Shoplift assigns them to one immediately and creates a **reservation** for the other.

A reservation means the visitor is set aside for a test before they've actually triggered it. This matters because it still counts as an assignment the visitor is excluded from other conflicting tests right away, even if they haven't reached the page or action that would activate their conditional test yet.

Here's an example. You're running a theme test and a price test at the same time. A visitor arrives on your homepage:

1. Shoplift randomly assigns them to one of the two tests.
2. If assigned to the theme test, they see the variant theme immediately and are excluded from the price test.
3. If assigned to the price test, Shoplift creates a reservation. They're excluded from the theme test immediately, but won't actually enter the price test until they scroll a tested product price into view.

### Running many tests at once

Because Shoplift handles mutual exclusion automatically, you can run many tests in parallel without worrying about conflicting results. Companies like Meta run thousands of simultaneous experiments  even across the same user journey by relying on random traffic distribution and rigorous statistics to keep each test's results valid.

**The one thing to keep in mind:** when tests are mutually exclusive, your traffic is divided between them. The more mutually exclusive tests you run, the smaller each test's sample size becomes, and the longer each test will take to reach a conclusion. This isn't a reason to avoid running multiple tests  just something to factor into your timeline.

{% hint style="info" %}
Shoplift requires 95% statistical significance before declaring a winner. This high bar means small cross-test effects are filtered out as noise and won't produce a false positive result.
{% endhint %}

### Still need help?

Please contact [Shoplift support](mailto:help@shoplift.ai) if you have questions about test interactions.


# Pausing & Resuming Tests

### Pausing Tests

<figure><img src="/files/AQRlprvyQRR06OJ2R2d8" alt=""><figcaption><p>Pausing Tests</p></figcaption></figure>

For any active test, you can choose to pause your test at any time and resume it later on. This is particularly handy, for example, if you noticed that you made a mistake when editing your test variant and need to correct it, but don't want to set up a brand new test from scratch.

If you pause a test, visitors to your website will immediately stop seeing the tested experiences. Data collection will also pause, and paused periods of time will be represented in performance over time charts on the test report page with plots for when a test was paused, when it was resumed, and if it was paused and resumed in the same day.

Days plotted in the performance over time chart during which a test was paused will be represented with a "partial data" tag in the tooltip when hovering over that point on the chart.

{% hint style="info" %}
While we would always recommend starting a new test if you plan on making changes to your tested variants (because changes can invalidated your collected data), you can always determine for yourself when a test should be re-run.
{% endhint %}

### Why Shoplift Pauses Some Tests

In Shoplift, tests are paused when there are changes to your store’s templates or themes that make it impossible to run the test as designed. There are two common reasons for this:

**1. Missing Templates in a Published Theme**

* **What happens**: If you're running a test on a specific template (like a product page or collection page), and you publish a new theme that doesn't include that template, the test will be paused.
* **Why**: The test uses the template to display different versions to visitors. If the template no longer exists, visitors can't access it, making the test invalid.
* **How to fix it:** Add the missing template to your live theme, being sure to maintain the correct template name (i.e. "sl-12345"). For detailed information on adding a template to your theme, see [Theme Compatibility](/test/test-compatibility).&#x20;
* **How to avoid it**: Ensure that any new themes you publish include all templates involved in your test, or make sure templates have the same name across themes.

**2. Template Changes in Theme Tests**

* **What happens**: If you modify the original theme by creating a new template and assigning it to an asset (like a product or page), the test will be paused.
* **Why**: The new template can't be accessed from the variant theme, so visitors on the variant will see a 404 error when trying to load that page.
* **How to fix it:** Add the missing template(s) to your live theme, being sure to maintain the correct template name (i.e. "sl-12345") for each template. For detailed information on adding a template to your theme, see [Theme Compatibility](/test/test-compatibility).&#x20;
* **How to avoid it**: Avoid creating new templates for assets during an active test, or make sure they are accessible from both themes.


# Test Compatibility

## What is Test Compatibility?

Shoplift tests rely on templates and themes to deliver different experiences to your visitors. If your theme is missing templates required by your test, a few things could happen:

* Pages can display incorrect content
* Test data can be compromised
* Site visitors can get frustrated

To prevent this, Shoplift disables the selection of themes with missing templates during test creation and will automatically pause tests if it detects configuration issues. These measures ensure the data collected by your test is reliable.

### When Selecting a Theme

<figure><img src="/files/ljtTnBfbcIsFzavb2BBK" alt=""><figcaption><p>Missing Templates: Theme Selection</p></figcaption></figure>

When setting up theme tests, you might see themes in your library disabled for selection, with a tooltip that mentions: "This theme is missing templates that are currently used by your products, collections, and pages."

If you see this message, it means that some of your store's pages (i.e. products, collections, landing pages, or blogs) are "assigned" to a template in your current theme that does not exist in the theme you're previewing. Because the template can't be accessed by the theme you're previewing, visitors on that theme would **reach a faulty page** instead of the intended templated page. To prevent this, Shoplift disables the selection of themes with missing templates.&#x20;

#### Why does it matter?

For example, let's say `Product A` is assigned to `Template A`. If you were to test a theme without  `Template A`, visitors assigned to that theme would reach a **faulty page** when attempting to view `Product A`. The templates in your original and variant themes do not need to be the exact same, but they must share the same name so that Shopify can correctly reference them.

### When a Test is Paused

<figure><img src="/files/WjGhrmtvyFnjkAAuReIl" alt=""><figcaption><p>Missing Templates: Test Pausing</p></figcaption></figure>

**For Template Tests:** If you're running a test on a specific template (like a product page or collection page) and that template gets removed from your theme, the test will be paused. The test uses the template to display different versions to visitors, so if the template no longer exists, visitors can't access it and the test becomes invalid. A template can be removed from your theme if you delete that template or publish a new theme that doesn't include that template.

**For Theme Tests:** If you're running a theme test and your live theme is modified to include a new template on pages visitors can access (as opposed to unpublished templates), the test will be paused. Because the new template can't be accessed from the variant theme, visitors on the variant would reach a faulty page, which would upset customers and invalidate your test.

## How to Add Required Templates

<figure><img src="/files/nqBortKSdHiukMYrJrMC" alt=""><figcaption><p>Missing Templates List</p></figcaption></figure>

Click "**View Details"** or "**See missing templates**" to open a list of the templates that your store configuration requires. Each of these templates needs to be added to the theme indicated in the top left. In the above example, a product template "test-1" needs to be added to the theme "Copy of Timely Demo Theme."

### Adding Templates to Your Theme:

**Step 1:** Before you can add the missing template, you need to find the theme that has the missing template.

* For **theme testing,** the missing template will be in your live theme and you will need to add it to an unpublished theme.&#x20;
* For **template testing**, the missing template will be in an unpublished theme and you will need to add it to your live theme. However, if no theme version exists with this template, you will need to create a new template in your live theme with the same name (i.e. the missing template shown above is "test-1").&#x20;

**Step 2:** Once you find the theme with the missing template, click "Edit code."&#x20;

<figure><img src="/files/M73RW54zgh50EohNsTy4" alt=""><figcaption><p>Step 2: Edit Code</p></figcaption></figure>

**Step 3:** In the theme code editor, use the left navigation bar to locate the missing template. Select the missing template, highlight all of the template's code, and copy the code to your clipboard.&#x20;

<figure><img src="/files/90xidfQUrcc8LUN7kutu" alt=""><figcaption><p>Step 3: Copy Template Code</p></figcaption></figure>

**Step 4:** Find the theme that you need to add the missing template to (i.e. "Copy of Timely Demo Theme). Open the code editor and click "Add a new template." Select the type of template you are missing (i.e. a product template) and provide the name of the missing template (i.e. "test-1"). Be sure the name **exactly matches** the name of the missing template. Create the template, and replace the entirety of the generated code with the code you copied to your clipboard.

<figure><img src="/files/jf6i225gHhp9umfEntyu" alt=""><figcaption><p>Step 4: Add a New Template</p></figcaption></figure>

**Step 5:** Hit "Save", and return to Shoplift. Click "Recheck theme". If you have copied all of the required templates to your unpublished theme, you will now be able to select the theme for a theme test.

<figure><img src="/files/yKhnAnEx8UvkVs7GwAiI" alt=""><figcaption><p>Step 5: Recheck Theme</p></figcaption></figure>

{% hint style="info" %}
Need some help? Reach out to [Customer Support](https://docs.shoplift.ai/support/get-help), and we'd be happy to assist you.
{% endhint %}

## How do I prevent tests from being paused?

It’s best to wait until after your test is completed to delete templates or make theme updates. We recommend the following best practices:

* Make sure your team is aware of any tests being run
* If you’re running a template test, make sure that your live theme and any upcoming theme updates include both templates
* If you’re running a theme test, make sure that any updates to your original theme (such as adding a new template) are also made on your variant theme

{% hint style="warning" %}
Auto Restore Missing Templates (Experimental) - check out our document on this feature [HERE](/account/account-preferences/auto-restore-missing-templates)
{% endhint %}


# Implementing Winning Tests

Once you've determined a winner for your test, you can easily apply the variant as the new default experience for all shoppers.

{% hint style="info" %}
Applying your variant is available for theme and template tests only.
{% endhint %}

## Implementing a winning test template

Once a test is ended, you will have the choice to apply your test variant as your new default experience for your homepage or for the assigned collections, products, or pages. To do this, click **Apply variant** in the top right corner of your test. Your store will now use your variant template as the default experience for all products, collections, or pages originally assigned to your control.&#x20;

<figure><img src="/files/UNiDPwCRrD8HHE7lgvqU" alt=""><figcaption><p>Apply Variant</p></figcaption></figure>

{% hint style="success" %}
**FAQ: Can I apply variants for inconclusive tests?**

You can still choose to implement the test variant of an inconclusive test as the new default experience. Open the test menu in the top right corner (the ⁝ button), and you should see an option to apply the variant.
{% endhint %}

## How winning test templates are implemented

Depending on the type of template you've tested, the implementation method may vary. Most template tests can be automatically implemented with the **Apply variant** button.

#### **Homepage (Index) templates**

<mark style="background-color:green;">✓ Shoplift can automatically implement</mark>

Unlike other template types on your store, homepage templates are not "assigned" - your store will always use a suffix-less index template (i.e. index.liquid or index.json) as your default homepage template.

This means that in order to implement a suffixed homepage template as your new default experience, Shoplift must replace the JSON or liquid code from your original, suffix-less template (`index.json`) with the JSON or liquid code from your tested, suffixed template (i.e. `index.sl-AE2FB8F1.json`).&#x20;

However, we don't delete the original code found in your older, suffix-less index template. Instead, we migrate it to a new template that contains the date of implementation as the suffix (i.e. `index.05-04-2024.json`).

If you would like to revert to your original homepage template at any time, simply replace the code in your `index.json` template with the code from your previous template, now named with the date of implementation as the suffix.

**Collection, product, and page templates**

<mark style="background-color:green;">✓ Shoplift can automatically implement</mark>

When a tested collection, product, or page template is implemented via a winning test, Shoplift simply reassigns whichever collections, products, or pages are currently assigned to your original (control) template to your variant (tested) template. Your original template is unchanged, and can be reassigned at any time.

**Variant templates of a different template type**

<mark style="background-color:red;">✕ Requires manual implementation</mark>

When you test templates of different types (i.e. a homepage template vs. a page builder template), Shoplift cannot automatically apply the variant template as the new default experience. To apply the variant template manually, you can either create a new template (i.e. create a new homepage template and apply the changes there) or assign the template to site pages through your page builder tool.

## Implementing a winning test theme

Once a test is ended, you will have the choice to apply your test variant as your new theme. To do this, click **Apply variant** in the top right corner of your test. Your store will now use your variant theme as the default experience for your entire site.


# Exporting Test Data

You can export the data from any test at any point — whether it's currently running or has already ended. This is useful for sharing results with your team or doing deeper analysis in a tool like Excel or Google Sheets.

### How to export

1. Open the test you want to export from the **Tests** page.
2. On the Test Details page, click the **Export** button in the top right corner, next to the test's status badge.
3. A compressed folder will download to your device containing three CSV files.

<figure><img src="/files/iM5q70xGJ3hGWDmu0mMO" alt=""><figcaption></figcaption></figure>

## What's in the export

Each of the three CSV files gives you a different view of your test data.

#### Overall summary

A scorecard of your test from start to finish. It compares your original and variant across all primary metrics in a single view.

Columns included:

* **Visitors and conversions:** The number of unique visitors and completed purchases for each side.
* **Conversion rate:** The percentage of visitors who made a purchase.
* **Orders and revenue:** Total order count and gross sales for each side.
* **RPV and AOV:** Revenue per visitor (RPV) and average order value (AOV), useful for understanding the revenue impact beyond just conversion rate.
* **Add to cart metrics:** Both the raw count and add to cart rate (ATC rate), showing how each side influenced purchase intent before checkout.
* **Clickthroughs:** Total clicks and clickthrough rate (CTR) for any tracked elements in your test.

#### Daily breakdown

The same set of metrics as the overall summary, broken down day by day for both the original and variant. Use this file when you want to see how your test performed over time — for example, whether the variant performed differently on weekends, or whether results shifted after a promotion.

#### Orders export

The most detailed file. Every individual order attributed to the test is listed here, with full context about the customer, device, and what they purchased.

| Column                                                  | Description                                               |
| ------------------------------------------------------- | --------------------------------------------------------- |
| Date and OrderID                                        | When the order was placed and its unique Shopify order ID |
| TestVariant                                             | Whether the order came from the original or variant group |
| VisitorId                                               | The unique Shoplift visitor ID associated with the order  |
| Device                                                  | Whether the visitor was on mobile or desktop              |
| LandingSite                                             | The page the visitor first landed on                      |
| TotalPrice, Subtotal, Discounts, Tax, Shipping, Revenue | Full financial breakdown of the order                     |
| TotalUnits                                              | The number of items in the order                          |
| SKUList and SKUQuantityList                             | The specific products and quantities purchased            |
| WasCancelled                                            | Whether the order was subsequently cancelled              |
| IsFirstTimeSubscription                                 | Whether the order included a first-time subscription      |

{% hint style="info" %}
The SKUList and SKUQuantityList columns are particularly useful if you want to see whether a variant shifted which products customers bought, not just whether they bought at all. You can use this data to dig into margin impact or identify which collections benefited most from the change.
{% endhint %}

### Still need help?

Visit the Troubleshoot section or contact Shoplift support if you run into any issues with your export.


# Reports

Each test in Shoplift includes a dedicated report that summarizes key performance data collected throughout the duration of the experiment. These reports help you understand which experiences are driving meaningful results, empowering you to refine your testing strategies over time.

Test data is updated hourly, allowing you to monitor performance and outcomes in near real-time.

For details on the structure of the reporting page, the dimensions and metrics included, and how statistical significance is calculated, refer to the articles linked below.

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Overview</strong></td><td>Get a tour of the Test Reports page and all of its features</td><td><a href="/files/dEvd204vEsmp9FBl9tjz">/files/dEvd204vEsmp9FBl9tjz</a></td><td></td><td><a href="/pages/bzuZL74Vqm35bpuXxaIN">/pages/bzuZL74Vqm35bpuXxaIN</a></td></tr><tr><td>Goals</td><td>Learn about the goals that measure the outcomes of your tests</td><td><a href="/files/ZK56PyP8tFu0Q3h3jG1M">/files/ZK56PyP8tFu0Q3h3jG1M</a></td><td></td><td><a href="/pages/TGdERedDkjjm53JRTBCA">/pages/TGdERedDkjjm53JRTBCA</a></td></tr><tr><td><strong>Metrics</strong></td><td>Learn how Shoplift tracks and calculates key metrics</td><td><a href="/files/SzFUtTbjESgnchFicdfJ">/files/SzFUtTbjESgnchFicdfJ</a></td><td></td><td><a href="/pages/q5e4En5xSXqI3tHNmXTQ">/pages/q5e4En5xSXqI3tHNmXTQ</a></td></tr><tr><td><strong>Dimensions</strong></td><td>Understand the breakdown of your visitor segments</td><td><a href="/files/PsnYYh4qgDnp6bUleNXJ">/files/PsnYYh4qgDnp6bUleNXJ</a></td><td></td><td><a href="/pages/rgFMnLaLMBBwvwnFNZGG">/pages/rgFMnLaLMBBwvwnFNZGG</a></td></tr><tr><td><strong>Views</strong></td><td>Learn how to slice and dice your data in reports</td><td><a href="/files/Tropv1d9fXoeNUdbfyh1">/files/Tropv1d9fXoeNUdbfyh1</a></td><td></td><td><a href="/pages/kvrf9HEIheWkMpf9KeSj">/pages/kvrf9HEIheWkMpf9KeSj</a></td></tr><tr><td><strong>Statistical Significance</strong></td><td>Learn how Shoplift calculates significance for your tests</td><td><a href="/files/kJZfvoU8Hhos2JVzyRzW">/files/kJZfvoU8Hhos2JVzyRzW</a></td><td></td><td><a href="/pages/F0KXNvVsLU7ERWLToJkm">/pages/F0KXNvVsLU7ERWLToJkm</a></td></tr></tbody></table>


# Overview

## Reporting page overview

The Shoplift test reporting page provides a comprehensive view of how your test is performing, segmented into dedicated tabs that make it easier to explore different layers of insight.&#x20;

Test results are organized into five tabs: **Overview**, **Devices**, **Visitors**, **Channels**, and **Subscriptions**. This structure allows you to quickly access the most relevant data depending on what you're analyzing.

<figure><img src="/files/T0cd2JrfzmOhKGVwYS47" alt=""><figcaption></figcaption></figure>

#### Overview Tab

The Overview tab offers a high-level summary of your test’s performance and progress toward statistical significance.&#x20;

Here, you’ll find information on total traffic, lift in your primary goal metric, and probability to win for each variant. This tab also shows your tested variants side by side with performance highlights and a visual preview of each experience.&#x20;

If your test has reached a meaningful trend or significance, this is where you’ll see the most up-to-date progress indicators. A series of line charts also visualize how performance has changed over time, helping you spot trends, spikes, or anomalies as your test runs.

#### Devices Tab

The Devices tab breaks down performance across mobile and desktop visitors.&#x20;

This is useful for identifying whether a change performs better on one platform than the other—especially helpful for design, layout, or UX-driven tests. You'll also see how your traffic is distributed across devices, allowing you to evaluate performance in context.

#### Visitors Tab

In the Visitors tab, Shoplift segments test results by new and returning visitors.&#x20;

This view helps you understand how different types of users are responding to your test, whether you’re trying to improve first-time conversion or deepen engagement with existing customers. Visitor segmentation becomes available after Shoplift has been installed for at least 7 days, ensuring accurate classification.

{% hint style="info" %}
Visitor segmentation becomes available only after Shoplift has been installed for at least 7 days. "New" refers to visitors seen for the first time during the test; "Returning" refers to those previously seen.
{% endhint %}

#### Channels Tab

The Channels tab shows how your test is performing across different traffic sources, such as paid search, organic social, or email.&#x20;

If your experience drives stronger results from one acquisition channel but not others, this is where you’ll see it. Channel definitions follow the same rules as Google Analytics 4, providing consistent and familiar attribution logic.

{% hint style="info" %}
Shoplift uses the same channel classification logic as Google Analytics 4 (GA4). For more information, see [Dimensions](/analyze/reports/dimensions).
{% endhint %}

#### Subscriptions Tab

If you use a supported subscription app, the Subscriptions tab will show how your test impacts recurring purchases. Here, you can compare the number of one-time orders versus first-time subscriptions for each variant. This view is especially useful if your goal is to grow your subscriber base or test onboarding improvements. No extra setup is required—Shoplift integrates directly with all major subscription platforms.

{% hint style="info" %}
Shoplift automatically supports all major subscription apps—no setup required. For details, see [Subscription Apps](/integrate/subscription-apps).
{% endhint %}

#### Have Questions?

If you need help interpreting your test results or configuring your reports, reach out to [Customer Support](mailto:help@shoplift.ai). We're happy to help.


# Goals

## Goals

**Goals** are the *primary outcome metrics* merchants choose to optimize in their experiments (e.g. **Conversion Rate**, **Average Order Value**, **Revenue per Visitor**). These drive test evaluation and lift reporting.

| Metric                    | Description                                                                | Formula                        |
| ------------------------- | -------------------------------------------------------------------------- | ------------------------------ |
| Clickthrough rate (CTR)   | % of visitors who navigated to a new page after seeing a tested experience | `Clicks ÷ Visitors`            |
| Add-to-cart rate (ACR)    | % of visitors who added to cart after seeing a tested experience           | `Cart adds ÷ Visitors`         |
| Conversion rate (CVR)     | % of visitors who made a purchase after seeing a tested experience         | `Conversions ÷ Visitors`       |
| Average order value (AOV) | Average revenue per order for a given experience                           | `Total Revenue ÷ Total Orders` |
| Revenue per visitor (RPV) | Average revenue per visitor for a given experience                         | `Revenue ÷ Visitors`           |

{% hint style="info" %}
**FAQ: I have a negative lift! Should I end my test?**

Do not be alarmed if your test lift is negative, especially if the minimum time requirement (3 days) and minimum sample size requirement (30 orders per test variant) have not been met. We recommend that you keep your test running, until you can identify clear and valid trends in the test data. If you have concerns about your test's lift, reach out to [Customer Support](broken://pages/BZDv9d1utwcXtufWrzA4) for assistance.
{% endhint %}


# Metrics

Explore the documentation below to learn how Shoplift tracks and reports on test metrics.

## **Metrics**

**Metrics** include both **Goals** *and* other important contextual data points like **Visitors**, **Conversions**, **Clicks**, and **Bounce Rate**. These help merchants understand how their tests perform across the funnel, even if they aren’t directly optimizing for them.

| Metric                   | Description                                                                                     |
| ------------------------ | ----------------------------------------------------------------------------------------------- |
| Visitors                 | Number of unique visitors who saw a tested experience                                           |
| Clicks                   | Number of unique visitors who navigated to a new page after seeing the experience               |
| Bounce rate              | Percentage of visitors who saw the experience but didn’t navigate to another page               |
| Cart adds                | Number of unique visitors who added at least one item to their cart after seeing the experience |
| Conversions              | Number of unique visitors who made a purchase after seeing the tested experience                |
| Orders                   | Number of orders placed by visitors after seeing a given variant                                |
| Revenue                  | Total revenue generated from orders placed by visitors for each experience variant              |
| One-time orders          | Orders placed that **did not** include a new recurring subscription product                     |
| First-time subscriptions | Orders that **did** include a new recurring subscription product                                |


# Dimensions

**Dimensions** in Shoplift allow you to break down your test results across key visitor attributes, helping you uncover deeper insights about how different audience segments are responding to your experiments.

You can apply dimensions directly within the test report tables to cross-evaluate performance across segments like device type, visitor type, and traffic source.

### Available Dimensions

#### **Device Type**

Segment test results by the type of device used to visit your site.

* **Mobile:** mobile devices, including tablet
* **Desktop:** desktop devices

This dimension helps you understand if performance varies between mobile and desktop visitors, which is particularly useful when testing page layout, content density, or interaction elements.

***

#### **Visitor Type**

Break down results by whether a visitor is new to your site or returning.

* **New**: First-time visitors during the test period
* **Returning**: Visitors who have previously interacted with your site

Use this dimension to assess how familiar vs. unfamiliar audiences respond to specific experiences.

***

#### **Channel Group**

Segment performance based on the marketing channel that brought the visitor to your site.

**Channel groups** are rule-based definitions of the various sources driving traffic to your site. They provide a standardized way to analyze performance by acquisition source. Shoplift uses the same rulesets as Google Analytics 4 (GA4) to define channel groups.

<table><thead><tr><th width="211">Channel group</th><th>Definition</th></tr></thead><tbody><tr><td>Direct</td><td><p>Source exactly matches direct</p><p>AND</p><p>Medium is one of ("(not set)", "(none)")</p></td></tr><tr><td>Paid Shopping</td><td><p>Source matches a list of shopping sites </p><p>OR </p><p>Campaign Name matches regex  ^(.*(([^a-df-z]|^)shop|shopping).*)$</p><p>AND </p><p>Medium matches regex ^(.*<em>cp.*</em>|ppc|retargeting|paid.*)$</p></td></tr><tr><td>Paid Search</td><td><p>Source matches a list of search sites </p><p>AND </p><p>Medium matches regex ^(*.cp.*|ppc|retargeting|paid.*)$</p></td></tr><tr><td>Paid Social</td><td><p>Source matches a list of social sites</p><p>AND</p><p>Medium matches regex ^(*.cp.*|ppc|retargeting|paid.*)$</p></td></tr><tr><td>Paid Video</td><td><p>Source matches a list of video sites </p><p>AND</p><p>Medium matches regex ^(*.cp.*|ppc|retargeting|paid.*)$</p></td></tr><tr><td>Display</td><td>Medium is one of (“display”, “banner”, “expandable”, “interstitial”, “cpm”)</td></tr><tr><td>Paid Other</td><td>Medium matches regex ^(*.cp.*|ppc|retargeting|paid.*)$</td></tr><tr><td>Organic Shopping</td><td><p>Source matches a list of shopping sites </p><p>OR </p><p>Campaign name matches regex ^(.*(([^a-df-z]|^)shop|shopping).*)$</p></td></tr><tr><td>Organic Social</td><td><p>Source matches a regex list of social sites </p><p>OR </p><p>Medium is one of (“social”, “social-network”, “social-media”, “sm”, “social network”, “social media”)</p></td></tr><tr><td>Organic Video</td><td><p>Source matches a list of video sites </p><p>OR </p><p>Medium matches regex ^(.*video.*)$</p></td></tr><tr><td>Organic Search</td><td><p>Source matches a list of search sites </p><p>OR </p><p>Medium exactly matches organic</p></td></tr><tr><td>Referral</td><td>Medium is one of ("referral", "app", or "link")</td></tr><tr><td>Email</td><td><p>Source = email|e-mail|e_mail|e mail </p><p>OR</p><p> Medium = email|e-mail|e_mail|e mail</p></td></tr><tr><td>Affiliates</td><td>Medium = affiliate</td></tr><tr><td>Audio</td><td>Medium exactly matches audio</td></tr><tr><td>SMS</td><td><p>Source exactly matches sms </p><p>OR </p><p>Medium exactly matches sms</p></td></tr><tr><td>Mobile Push Notifications</td><td><p>"Medium ends with ""push"" </p><p>OR </p><p>Medium contains ""mobile"" or ""notification"" </p><p>OR </p><p>Source exactly matches ""firebase"""</p></td></tr><tr><td>Cross-network</td><td>Campaign Name contains "cross-network"</td></tr><tr><td>Unassigned</td><td>Includes any traffic not categorized into the above</td></tr></tbody></table>

### Using Dimensions in Reporting

Each test report table in Shoplift includes **dimension filters** that allow you to isolate and compare specific segments of your website visitors. Rather than grouping rows by dimension, these filters enable you to toggle between segments—such as mobile vs. desktop traffic or new vs. returning visitors—to observe how performance varies across different audiences.

You can apply one or more dimension filters to evaluate how a given experience performs for a targeted visitor cohort, helping you identify segment-specific trends and opportunities.

> Example: Use the **Device** filter to view test performance for mobile users only, then switch to desktop to compare results across devices.


# Views

## Views

Each section of the test report page includes a **"View" selector** in the top-right corner. Views are pre-defined sets of metrics that help you focus on specific types of outcomes based on your testing goals. You can switch between views to quickly surface the data most relevant to your use case.

<figure><img src="/files/Qb6MF7rIBoQLKar6O3WW" alt=""><figcaption></figcaption></figure>

## **Available Views**

**Conversion Metrics View**

* Highlights key metrics tied to revenue performance, including **Conversion Rate**, **Average Order Value (AOV)**, and **Revenue per Visitor (RPV)**.

**Engagement Metrics View**

* Focuses on upper-funnel behaviors such as **Clickthrough Rate**, **Add-to-Cart Rate**, and **Bounce Rate**, helping you understand how visitors interact with the page.

**Subscription Metrics View**

* If your store offers subscriptions, this view breaks down conversion performance by **One-Time Orders** and **First-Time Subscriptions**. This makes it easy to see how your test influences subscription acquisition.

To view subscription-related reporting, simply switch the table's View to **"Subscription Metrics"** on the test report page.

For more information on which subscription apps are supported, see [Subscription Apps](/integrate/subscription-apps).


# Understanding Test Outcomes

While a test runs, Shoplift continuously evaluates test results using Bayesian statistical methods. Throughout the life of a test, we provide clear indicators to help you understand how your test is performing and when it’s safe to make decisions based on the results.

### The question your report answers

A/B testing has traditionally been built around statistical significance — a strict bar (usually 95% confidence) borrowed from large-scale academic studies. Most real ecommerce tests never reach it in a reasonable window, so a lot of genuine signal ends up filed away as "inconclusive."

Shoplift focuses on the decision instead. Your report is built around two questions: how likely is this variant to win, and is that read stable enough to act on? Everything below supports those two questions.

### Probability to Win

**Probability to Win** is the main metric on your report. It's the chance your variant beats the original.

The number means exactly what it says. A Probability to Win of 92 means the variant comes out ahead in about 92 of every 100 likely outcomes. The higher the number, the more confident Shoplift is that the variant is the better performer. Either side can win: if your original is stronger, its Probability to Win climbs instead.

As more visitors enter the test, the number settles and becomes more reliable.

<figure><img src="/files/zOn8QPs7gWIDcqRvbn9a" alt=""><figcaption></figcaption></figure>

### Lift

**Lift** is how big the win is: the difference in performance between your original and your variant. Probability to Win tells you *which* variant is ahead. Lift tells you *how much* it's worth.

Lift is shown with a range rather than a single point. The range reflects how much uncertainty is still in the estimate. Early in a test the range is wide. As data accumulates, it narrows and the estimate gets more precise.

Read the two together. A high Probability to Win on a tiny Lift may not be worth the effort to ship. A large Lift is only worth acting on once Probability to Win is high enough to trust.

<figure><img src="/files/wZM806Hmb7B391OT8S7p" alt=""><figcaption></figcaption></figure>

### The test lifecycle: stages and what to do

Every test moves through a set of clear stages. Each one is shown as a color-coded card on your report and in your test list, so you can tell at a glance where a test stands.

#### Collecting data

<figure><img src="/files/8YPR7xPQCSZZIcdh6D2i" alt=""><figcaption></figcaption></figure>

**What you see:** Your test is live, but Probability to Win and Lift aren't shown in a headline position yet. This covers roughly the first day.

**What it means:** There isn't enough data to say anything reliable. Early numbers swing hard from hour to hour, and showing them prominently would only anchor you to noise.

**What to do:** Let it run. Ending a test at this stage tells you nothing.

#### Keep running

<figure><img src="/files/f2upRdYmt5M7tzM0nCFs" alt=""><figcaption></figcaption></figure>

**What you see:** Probability to Win and Lift now appear, but are still not shown in a headline position yet because they haven't stabilized. This starts around day 2, once Shoplift has completed its first daily read of the data.

**What it means:** You can see the direction the test is pointing, but it hasn't held long enough to trust. A test at this stage can show a high number — even 95% — on a single day. Until that level holds for multiple days, it isn't stable.

**What to do:** Keep the test running, and don't act on the number yet, however good it looks. Shoplift will tell you when a result can be acted on.

#### Leaning

<figure><img src="/files/yQY0Cd4ch0U4aRGHOjax" alt=""><figcaption></figcaption></figure>

**What you see:** A blue **Leaning** card. Probability to Win has stabilized and the data indicates a real directional lean.

**What it means:** A directional signal has stabilized. One variant is reliably ahead. This is not a final call, but the lean is consistent enough to be useful.

**What to do:** This is enough to act on when the stakes are low or you want to move quickly. For higher-stakes changes, let the test keep running toward a confident outcome.

#### Test Complete - Winner

<figure><img src="/files/0VwzVJRiBrCVLYwbJWsC" alt=""><figcaption></figcaption></figure>

**What you see:** A green **Test Complete** card showing the winning variant and its Probability to Win. There are two confidence levels:

* **High Confidence** — a confident outcome. You can ship it, or keep running for even higher confidence.
* **Clear Winner** — a clear outcome. You can act on these test results.

**What it means:** The result has held steady long enough to trust. This is a call you can act on.

**What to do:** Ship the winner. If a test reaches **High Confidence** and the decision is high-stakes, you can let it keep running toward **Clear Winner** before committing.

#### Test Complete — No Consistent Difference Detected

<figure><img src="/files/qfsgo4MUBnfWUnCCp9Y9" alt=""><figcaption></figcaption></figure>

**What you see:** A green **Test Complete** card. This appears when a test has run for two full weeks, but no meaningful signal has appeared during its duration (a consistent lean or a winner).

**What it means:** The test ran its course and neither variant made a meaningful difference. This is a real, conclusive result, not a failure. Learning that a change doesn't move the needle saves you from shipping something that wouldn't have helped, or allows you to ship something based on preference, knowing there is no significant difference in performance.

**What to do:** Move on with confidence. Roll what you learned into your next test.

#### Quick reference

| Stage                           | Color | What it means                                                               |
| ------------------------------- | ----- | --------------------------------------------------------------------------- |
| Collecting data                 | White | Too early to show a reliable read                                           |
| Keep running                    | White | Results are stabilizing, but still noisy                                    |
| Leaning                         | Blue  | A real, directional signal has emerged — act on it when stakes are low      |
| Test Complete (High Confidence) | Green | A high confidence outcome you can act on for most tests                     |
| Test Complete (Clear Winner)    | Green | The strongest outcome, indicating a significant difference between variants |
| Test Complete — No Change       | Green | Conclusive: no meaningful difference between variants                       |

### Why Shoplift waits for a stable read

Shoplift updates Probability to Win as new visitors arrive. Early on, that number can move a lot: a variant sitting at 90% today might read very differently tomorrow, simply because so few visitors have been counted.

That's why an outcome isn't called the first time a number crosses a threshold. Probability to Win has to hold at or above a level for multiple days before Shoplift assigns a stage. That stability hold is the guardrail that keeps you from acting on a lucky moment instead of a settled result.

### FAQ

**Probability to Win already looks high — why can't I act on it yet?**

If the stage still says Collecting data or Keep running, the number hasn't held long enough to trust. A single high reading early in a test often comes from a small number of visitors and can swing the next day. Once Probability to Win stays above a threshold for multiple days, the test moves into Leaning or Test Complete, and that's your signal to act.

**Is "No Change" a failed test?**

No. "No Change" is a conclusive result: your two variants performed about the same. That's a genuine learning. It saves you from shipping a change that wouldn't have moved your numbers, and it frees your traffic for the next test.

**What do the numbers around Lift mean?**

Lift is shown as a range because there's always some uncertainty in the estimate. The range is where your true lift most likely falls. A tighter range means more certainty about the size of the effect. A wider range means more uncertainty. The range narrows as your test collects more data.


# Goals & Reporting Metrics (Legacy)

{% hint style="info" %}
We've updated our definition of Conversion rate from Orders/Visitors to Conversions/Visitors. This page references the previous definition and explains the change.
{% endhint %}

## Test goals

While the primary goal of your test is used to calculate a winner, Shoplift also tracks other critical metrics to assess the performance of each template experience more broadly.&#x20;

The metrics tracked as goals are as follows:

* **Clickthrough Rate:** The ratio of total visitors who encountered a tested experience to the visitors who encountered it and clicked on an element on an associated test page.
* **Add-to-Cart Rate:** The ratio of total visitors who encountered a tested experience to those who encountered it and added at least one item to their cart.
* **Conversion Rate:** The percentage ratio of total orders to total traffic for a given variant experience.
* **Average Order Value:** The monetary ratio of total revenue to total orders for a given variant experience.
* **Revenue per Visitor:** The monetary ratio of total revenue to total traffic for a given variant experience.

For each of the metrics above, you will also see the improvement or reduction that was driven by your variant template relative to your original template, represented as a percentage. This is a quick way to assess the degree of improvement or reduction driven by any test that you run.

{% hint style="info" %}
**FAQ: I have a negative lift! Should I end my test?**

Do not be alarmed if your test lift is negative, especially if the minimum time requirement (3 days) and minimum sample size requirement (30 orders per test variant) have not been met. We recommend that you keep your test running, until you can identify clear and valid trends in the test data. If you have concerns about your test's lift, reach out to [Customer Support](broken://pages/BZDv9d1utwcXtufWrzA4) for assistance.
{% endhint %}

## **Other tracked metrics**

Shoplift tracks a number of other performance metrics across the various device and audience segments that encountered your tested experiences.

* **Visitors:** The count of unique visitors who encountered each variant and the percentage of total test traffic they contribute (your traffic allocation).
* **Clicks:** A tally of unique visitors who encountered a tested experience and clicked on an element on an associated test page.
* **Bounce Rate:** The percentage of visitors that encountered a tested experience but did not proceed on to a subsequent page.
* **Cart Adds:** The count of unique visitors who encountered a tested experience and added at least one item to their cart.
* **Orders:** The number of orders transacted by visitors for each variant experience.
* **Revenue:** The total revenue generated by each variant experience.

## **What changed with conversion rate calculations?**

In June 2025, we made a small adjustment to how conversion rates are calculated in new tests to better align with user expectations. Previously, conversion rate was calculated as **Orders ÷ Visitors**. In tests launched after the change, conversion rate is calculated as **Conversions ÷ Visitors**, counting only one order per unique visitor.

**Nothing about your old tests have changed—those results remain exactly as they were recorded.**

{% hint style="info" %}
**FAQ: Why was this change made?**

The previous calculation was completely valid, and many of our merchants found it useful. This is simply a slight tweak to ensure that conversion rate aligns with how most users expect to interpret their results.
{% endhint %}




---

[Next Page](/llms-full.txt/1)

