> This is part 1 of 4 of the full documentation (pages 1–100 of 322).
> The content is paginated: fetch every part to see all of it.
> Next part: https://docs.intelligems.io/llms-full.txt/1
> Page index: https://docs.intelligems.io/llms.txt

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
This site has an agentic ask interface you may use to query the documentation dynamically by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.intelligems.io/index.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

---

# Welcome to Intelligems

### **What is Intelligems?**

Intelligems is the ultimate profit optimization platform for Shopify. You can A/B test and personalize your [content](/content-experiences/content-experiences-overview), [prices](/pricing-experiences/pricing-experiences-overview), [discounts](/merchandising-experiences/offer-modifications), and [shipping rates](/shipping-experiences/shipping-testing-getting-started), along with your [checkout](/checkout-experiences/getting-started-with-checkout) and [post-purchase upsells](/post-purchase-experiences/getting-started-with-post-purchase-upsells/post-purchase-experience-use-cases), and measure every experience on conversion rate, AOV, revenue per visitor, and gross profit per visitor.

Our mission is simple: we want to help e-commerce entrepreneurs improve their businesses and make more money, by helping you use data to manage your websites and profitability more effectively. We aim to provide independent e-commerce stores access to the same revenue optimization tools that power the growth and profitability of companies like Amazon and Uber.

{% hint style="info" %}
Looking for developer docs? You're in the right place, you can [get started here](/developer-resources/javascript-api)!
{% endhint %}

### **What can you build with Intelligems?**

[What You Can Test](/what-you-can-test)

Everything you build in Intelligems is an **experience**: a change to your store that you show to a portion of your visitors or all of them.

You build the change once, then choose how it runs. Run it as a **test** to split your traffic and let the data tell you which version wins. Run it as a **personalization** to show it to a specific audience, always on.

[Tests Vs Personalizations](/getting-started/tests-vs.-personalizations)

### The six experience modules

Experiences are grouped into six modules, matching the sections in your Intelligems left nav.

| Module                                                                                 | What it's for                                                                                                                                  |
| -------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| [Content](/content-experiences/content-experiences-overview)                           | Test imagery, copy, landing pages, themes, and templates to find the version that converts.                                                    |
| [Merchandising](/merchandising-experiences/offer-modifications)                        | Use discounts, volume pricing, and free gifts to lift AOV without giving away margin.                                                          |
| [Pricing](/pricing-experiences/pricing-experiences-overview)                           | Take the guesswork out of your product prices and find the ones that drive profit, revenue, and conversion.                                    |
| [Shipping](/shipping-experiences/shipping-testing-getting-started)                     | Find rates and thresholds that work for you and your customers, so you can boost profits or maximize conversion without sacrificing on margin. |
| [Checkout](/checkout-experiences/getting-started-with-checkout)                        | Add upsells, trust badges, and progress bars to convert more of the shoppers who reach checkout.                                               |
| [Post-purchase](/post-purchase-experiences/getting-started-with-post-purchase-upsells) | Offer one-click upsells after checkout to add revenue to orders you've already won.                                                            |

[Which experience should I build?](/getting-started/tests-vs.-personalizations/which-experience-should-i-build)

### **Plans and requirements**

Every paid plan includes Content, and you add the modules you want from there. Unlimited includes all of them.

* Checkout experiences require Shopify Plus. Post-purchase experiences run on every Shopify plan.
* Checkout and Post-purchase are two sections in the nav and one module on your plan.
* Pricing covers product prices, discounts, and subscription prices.
* [Sitewide Analytics](/analytics/overview/sitewide-analytics) is included on every paid plan.
* Every module except Pricing can be trialed for 14 days.

[Getting Started](/getting-started/getting-started)

### **Targeting and measurement**

Any experience can be limited to an audience, using device, new or returning visitors, traffic source, country, UTM parameters, landing page, referring domain, cookies, or a Klaviyo segment.

Results come back as conversion rate, AOV, revenue per visitor, and gross profit per visitor. Add your COGS, shipping cost, and transaction fee assumptions and profit shows up on every experience, including tests you already ran.

* [Targeting](/general-features/targeting)
* [How to Add Profit to Intelligems Analytics](/analytics/overview/how-to-add-profit-to-intelligems-analytics)

### **Why Intelligems?**

Our founders and several team members met at Via Transportation, a ridesharing company based in NYC. Over the course of five years, we gradually built out the tools, data, algorithms, and systems to compete with the rapidly evolving rideshare market.

The most powerful tool we built was a dynamic pricing engine underpinned by robust A/B testing. Any question or hypothesis we had, we could simply run a test to get the (statistically significant) answer.

Now, as Intelligems, we are bringing our learning, mindset, and toolkit to e-commerce operators, especially Shopify store owners.

{% hint style="info" %}
If you don't see what you're looking for, or aren't sure of the best way to set up a specific experience you have in mind, reach out to our support team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request).
{% endhint %}


# What You Can Test

Intelligems is a profit optimization platform for Shopify. You can A/B test and personalize site content, discounts, prices, shipping rates, checkout, and post-purchase upsells, then measure each one on conversion rate, AOV, revenue per visitor, and gross profit per visitor.

Everything on this page is an experience. You build the change once, then run it as a **test** to split your traffic and find out which version wins, or as a **personalization** to show it to a specific audience, always on.

Every row links to the setup guide for that experience.

[Tests vs. Personalizations](/getting-started/tests-vs.-personalizations)

#### Content

| If you want to                               | How you build it                   | Requirements  | Source                                                                                                                                                           |
| -------------------------------------------- | ---------------------------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Test PDP copy and headlines                  | Content Edits                      | Smart Content | [How to Set Up a Content Edit](/content-experiences/content-experiences-overview/how-to-set-up-a-content-edit-experience)                                        |
| Test product imagery                         | Content Edits                      | Smart Content | [Testing Different Imagery](/content-experiences/content-experiences-overview/content-test-common-use-cases/testing-different-imagery)                           |
| Test announcement bar text                   | Content Edits                      | Smart Content | [Testing Announcement Bar Text](/content-experiences/content-experiences-overview/content-test-common-use-cases/testing-announcement-bar-text)                   |
| Test the navigation menu                     | Content Edits                      | Smart Content | [Navigation Menu](/content-experiences/content-experiences-overview/content-test-common-use-cases/navigation-menu)                                               |
| Test cart elements                           | Content Edits                      | Smart Content | [Testing Cart Elements](/content-experiences/content-experiences-overview/content-test-common-use-cases/testing-cart-elements)                                   |
| Test express payment options                 | Content Edits                      | Smart Content | [Testing Express Payment Options](/content-experiences/content-experiences-overview/content-test-common-use-cases/testing-express-payment-options)               |
| Move best sellers higher on the homepage     | Content Edits                      | Smart Content | [Show Best Sellers Higher up on Your Homepage](/general-features/common-use-cases/ready-to-run-tests/show-best-sellers-higher-up-on-your-homepage)               |
| Show content based on quiz answers           | Content Edits plus Custom Audience | Quiz tool     | [Use Your Quiz Data to Show Personalized Content](/general-features/common-use-cases/15-minute-personalizations/use-your-quiz-data-to-show-personalized-content) |
| A/B test two landing pages on different URLs | Redirects                          | Smart Content | [How to Set Up a Redirect](/content-experiences/content-experiences-overview/how-to-set-up-a-redirect-experience)                                                |
| Split-test a landing page campaign           | Redirects                          | Smart Content | [Landing Page Testing](/content-experiences/content-experiences-overview/content-test-common-use-cases/landing-page-testing)                                     |
| Test an alternate page layout                | Template Change                    | Smart Content | [How to Set Up a Template Change](/content-experiences/content-experiences-overview/how-to-set-up-a-template-change)                                             |
| Test blog templates                          | Template Change                    | Smart Content | [Testing Blog Templates](/content-experiences/content-experiences-overview/content-test-common-use-cases/testing-blog-templates)                                 |
| Test a brand new theme before you switch     | Theme Change                       | Smart Content | [Testing a Brand New Theme](/content-experiences/content-experiences-overview/content-test-common-use-cases/testing-a-brand-new-theme)                           |
| Swap the live theme for a variant            | Theme Change                       | Smart Content | [How to Set Up a Theme Change](/content-experiences/content-experiences-overview/how-to-set-up-a-theme-change-experience)                                        |
| Inject your own CSS and JavaScript           | Styles & Javascript                | Smart Content | [How to Set Up a Styles & JavaScript Experience](/content-experiences/content-experiences-overview/how-to-set-up-a-styles-and-javascript-experience)             |
| Build the change without a developer         | Visual Experience Builder          | Smart Content | [Visual Experience Builder](/general-features/editors/visual-builder)                                                                                            |
| Have AI build the change                     | AI Visual Builder                  | Smart Content | [Visual Experience Builder](/general-features/editors/visual-builder)                                                                                            |

#### Merchandising

| If you want to                                                     | How you build it                         | Requirements                                        | Source                                                                                                                                                                |
| ------------------------------------------------------------------ | ---------------------------------------- | --------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Discount specific products by percent or amount                    | Amount off Products                      | Smart Merchandising or Smart Pricing                | [Amount off Products](/merchandising-experiences/offer-modifications/how-to-set-up-an-amount-off-products-experience)                                                 |
| Apply an automatic cart-wide discount                              | Amount off Order                         | Fixed amounts don't convert through Shopify Markets | [Amount off Order](/merchandising-experiences/offer-modifications/how-to-set-up-an-amount-off-order-experience)                                                       |
| Run buy more save more by spend                                    | Volume Discount                          | Up to 7 tiers, highest qualifying tier applies      | [Buy More, Save More Volume Discount](/merchandising-experiences/offer-modifications/offers-library/how-to-set-up-a-buy-more-save-more-volume-discount)               |
| Run quantity breaks by units                                       | Volume Discount                          | Up to 7 tiers                                       | [Buy More, Save More Quantity Discount](/merchandising-experiences/offer-modifications/offers-library/how-to-set-up-a-buy-more-save-more-quantity-discount)           |
| Run buy 2 get 1 free, BOGO, or BXGY                                | Buy X Get Y (BXGY)                       | Smart Merchandising                                 | [Buy More, Save More Quantity Discount](/merchandising-experiences/offer-modifications/offers-library/how-to-set-up-a-buy-more-save-more-quantity-discount)           |
| Give a free gift once the cart hits a threshold                    | Free Gift                                | Smart Merchandising                                 | [Free Gift With Purchase Threshold](/merchandising-experiences/offer-modifications/offers-library/how-to-set-up-a-free-gift-with-purchase-threshold-offer)            |
| Let shoppers choose their free gift                                | Free Gift plus Cart GWP Picker           | Variant picker shipped Jun 15                       | [Cart GWP Picker](/merchandising-experiences/offers-integrating-widgets/cart-gwp-picker)                                                                              |
| Give a free gift for new subscriptions                             | Free Gift                                | Subscription app required                           | [Free Gift for New Subscriptions](/merchandising-experiences/offer-modifications/offers-library/how-to-set-up-a-free-gift-for-new-subscriptions)                      |
| Add an extra discount for new subscriptions                        | Amount off Products                      | Discount lives in your subscription app             | [Additional Discount for New Subscriptions](/merchandising-experiences/offer-modifications/offers-library/how-to-set-up-an-additional-discount-for-new-subscriptions) |
| Run a holiday sale                                                 | Amount off Products or Order             | Smart Merchandising                                 | [Holiday Sale](/merchandising-experiences/offer-modifications/offers-library/how-to-set-up-a-holiday-sale)                                                            |
| Run an early access sale for subscribers                           | Amount off Order plus Audience Targeting | Smart Merchandising                                 | [Early Access Sale](/merchandising-experiences/offer-modifications/offers-library/how-to-set-up-an-early-access-sale)                                                 |
| Run a seasonal clearance extra percent off                         | Amount off Products                      | Smart Merchandising                                 | [Seasonal Clearance Discount](/merchandising-experiences/offer-modifications/offers-library/how-to-set-up-seasonal-clearance-discount)                                |
| Give an influencer, ambassador, or affiliate an exclusive discount | Amount off Order plus Custom Audience    | Smart Merchandising                                 | [Partner Offer](/merchandising-experiences/offer-modifications/offers-library/how-to-set-up-a-partner-offer-influencer-ambassador-affiliate-etc.)                     |
| Show upsells on the product page and in the cart                   | Onsite Upsells                           | Smart Merchandising                                 | [How to Set Up Onsite Upsells](broken://pages/V378B9WW2iseGpjDqb9I)                                                                                                   |
| Win back cart abandoners with an offer                             | Content Edits plus Custom Audience       | Smart Content                                       | [Get Cart Abandoners to Buy](/general-features/common-use-cases/15-minute-personalizations/get-cart-abandoners-to-buy)                                                |
| Trade a discount for an email address                              | Content Edits plus Klaviyo               | Klaviyo integration                                 | [Get More Email Subscribers](/general-features/common-use-cases/15-minute-personalizations/get-more-email-subscribers)                                                |
| Show a progress bar toward the offer in the cart                   | Offer Progress Bar component             | Doesn't work out of the box on headless             | [Progress Bar](/merchandising-experiences/offers-integrating-widgets/progress-bars)                                                                                   |
| Add quantity buttons to the product page                           | Quantity Buttons component               | Installed via the Intelligems script                | [Quantity Buttons](/merchandising-experiences/offers-integrating-widgets/quantity-buttons)                                                                            |
| Announce the offer with a pop-up or slide-out                      | Offer Message component                  | Homepage only, cannot be moved                      | [Offer Message](/merchandising-experiences/offers-integrating-widgets/slide-outs)                                                                                     |

#### Pricing

| If you want to                                             | How you build it                    | Requirements                                                                                | Source                                                                                                                                                |
| ---------------------------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| Find the price that makes you the most profit              | Price Change                        | Smart Pricing                                                                               | [How to Set Up a Price Change](/pricing-experiences/pricing-experiences-overview/how-to-set-up-a-price-test)                                          |
| Test a higher and a lower price at the same time           | Price Change                        | Smart Pricing                                                                               | [The Straddle](/pricing-experiences/pricing-experiences-overview/price-test-common-use-cases/the-straddle)                                            |
| Push price in one direction and confirm it                 | Price Change                        | Smart Pricing                                                                               | [The Double Down](/pricing-experiences/pricing-experiences-overview/price-test-common-use-cases/the-double-down)                                      |
| Test strikethrough or compare-at pricing                   | Price Change                        | Smart Pricing                                                                               | [The Strikethrough](/pricing-experiences/pricing-experiences-overview/price-test-common-use-cases/the-strikethrough)                                  |
| Test compare-at price as a field                           | Content Edits                       | Smart Content                                                                               | [Testing Compare-At Prices](/content-experiences/content-experiences-overview/content-test-common-use-cases/testing-compare-at-prices)                |
| Test subscription prices                                   | Price Change via duplicate products | Recharge, [Stay.ai](http://Stay.ai), Skio. Duplicate products is the only path since Jun 30 | [Testing Prices with Subscriptions](/pricing-experiences/pricing-experiences-overview/testing-prices-with-subscriptions)                              |
| Test prices in more than one currency                      | Price Change                        | Smart Pricing, unlimited option                                                             | [Multi-Currency Testing](/pricing-experiences/pricing-experiences-overview/multi-currency-testing)                                                    |
| Work out whether a price cut or a discount converts better | Price Change vs Amount off Products | Pricing and Smart Merchandising                                                             | [The Great Discount Debate](/pricing-experiences/pricing-experiences-overview/price-test-common-use-cases/the-great-discount-debate)                  |
| Work out whether a volume discount beats a price discount  | Volume Discount vs Price Change     | Pricing and Smart Merchandising                                                             | [Savings Showdown](/pricing-experiences/pricing-experiences-overview/price-test-common-use-cases/savings-showdown-volume-discount-vs.-price-discount) |
| Test a tariff surcharge on or off                          | Content Edits                       | Smart Content                                                                               | [Tariff Testing: On vs Off](/content-experiences/content-experiences-overview/content-test-common-use-cases/tariff-testing-on-vs-off)                 |
| Test price alongside quantity buttons on the PDP           | Price Change plus Quantity Buttons  | Tier config is shared across all groups                                                     | [Price Test with Quantity Buttons](/pricing-experiences/pricing-experiences-overview/how-to-set-up-a-price-test-with-quantity-buttons)                |

#### Shipping

| If you want to                                         | How you build it                       | Requirements                                                                                            | Source                                                                                                                                               |
| ------------------------------------------------------ | -------------------------------------- | ------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| Find your optimal free shipping threshold              | Free Shipping, or Shipping Rates       | Smart Shipping. Free Shipping works on any Shopify plan. Shipping Rates needs Shopify Advanced or Plus  | [Find Your Optimal Free Shipping Threshold](/general-features/common-use-cases/ready-to-run-tests/find-your-optimal-free-shipping-threshold)         |
| Test two thresholds against each other                 | Free Shipping                          | Smart Shipping. Thresholds read your store's default currency                                           | [The Threshold Trials](/shipping-experiences/shipping-testing-getting-started/shipping-test-common-use-cases/the-threshold-trials)                   |
| Test flat versus tiered shipping rates                 | Shipping Rates                         | Smart Shipping and Shopify Advanced or Plus. Only one Shipping Rates experience can exist at a time     | [The Flat Fee Face Off](/shipping-experiences/shipping-testing-getting-started/shipping-test-common-use-cases/the-flat-fee-face-off)                 |
| Change what shipping costs by zone or weight           | Shipping Rates                         | Smart Shipping and Shopify Advanced or Plus, because rate changes use Shopify's third-party carrier API | [How to Set Up a Shipping Rates Experience](/shipping-experiences/shipping-testing-getting-started/how-to-set-up-a-shipping-test)                    |
| Show returning visitors lower shipping                 | Shipping Rates plus Audience Targeting | Smart Shipping and Shopify Advanced or Plus                                                             | [Show Returning Visitors Lower Shipping Prices](/general-features/common-use-cases/ready-to-run-tests/show-returning-visitors-lower-shipping-prices) |
| Show a shipping progress bar in the cart               | Global Styles component                | Smart Shipping. Headless storefronts need their own implementation                                      | [Shipping Progress Bar Integration](/shipping-experiences/shipping-progress-bar-integration)                                                         |
| Show the same threshold at checkout                    | Shipping progress bar block            | Smart Shipping and Shopify Plus                                                                         | [Shipping Experiences Overview](/shipping-experiences/shipping-testing-getting-started)                                                              |
| Change shipping copy per group in the announcement bar | Content Edits                          | Smart Content                                                                                           | [Shipping Experiences Overview](/shipping-experiences/shipping-testing-getting-started)                                                              |

#### Checkout

Every row needs Shopify Plus.

<table><thead><tr><th>If you want to</th><th width="249">How you build it</th><th>Requirements</th><th>Source</th></tr></thead><tbody><tr><td>Add a product upsell at checkout</td><td>Upsell</td><td>Smart Checkout &#x26; Post-Purchase, Shopify Plus</td><td><a href="/general-features/common-use-cases/15-minute-personalizations/add-a-single-product-upsell-at-checkout">Single Product Upsell at Checkout</a></td></tr><tr><td>Test showing one upsell versus three</td><td>Upsell</td><td>Smart Checkout &#x26; Post-Purchase, Shopify Plus</td><td><a href="/checkout-experiences/getting-started-with-checkout/checkout-experiences-library/how-to-set-up-a-product-upsell-checkout-test">Product Upsell Test at Checkout</a></td></tr><tr><td>Show trust badges and brand promises at checkout</td><td>Trust Badge</td><td>Smart Checkout &#x26; Post-Purchase, Shopify Plus</td><td><a href="/checkout-experiences/getting-started-with-checkout/checkout-experiences-library/how-to-set-up-brand-promise-badge-icons-at-checkout">Brand Promise Badge Icons</a></td></tr><tr><td>Show social proof at checkout</td><td>Static Image</td><td>Smart Checkout &#x26; Post-Purchase, Shopify Plus</td><td><a href="/checkout-experiences/getting-started-with-checkout/checkout-experiences-library/how-to-set-up-a-single-image-social-proof-at-checkout">Single Image Social Proof</a></td></tr><tr><td>Show an influencer endorsement at checkout</td><td>Static Image</td><td>Smart Checkout &#x26; Post-Purchase, Shopify Plus</td><td><a href="/checkout-experiences/getting-started-with-checkout/checkout-experiences-library/how-to-set-up-a-single-image-influencer-endorsement-at-checkout">Single Image Influencer Endorsement</a></td></tr><tr><td>Show a shipping cutoff message at checkout</td><td>Call Out</td><td>Smart Checkout &#x26; Post-Purchase, Shopify Plus</td><td><a href="/checkout-experiences/getting-started-with-checkout/checkout-experiences-library/how-to-set-up-a-shipping-cutoff-message-at-checkout">Shipping Cutoff Message</a></td></tr><tr><td>Add urgency with a countdown at checkout</td><td>Countdown Timer</td><td>Smart Checkout &#x26; Post-Purchase, Shopify Plus</td><td><a href="/checkout-experiences/getting-started-with-checkout">Checkout Experiences Overview</a></td></tr><tr><td>Show your logo at checkout</td><td>Brand Logo</td><td>Smart Checkout &#x26; Post-Purchase, Shopify Plus</td><td><a href="/checkout-experiences/getting-started-with-checkout">Checkout Experiences Overview</a></td></tr><tr><td>Add a plain text block at checkout</td><td>Text Only</td><td>Smart Checkout &#x26; Post-Purchase, Shopify Plus</td><td><a href="/checkout-experiences/getting-started-with-checkout">Checkout Experiences Overview</a></td></tr><tr><td>Measure a Shopify Rollouts checkout test</td><td>Analytics</td><td>Smart Checkout &#x26; Post-Purchase, Shopify Plus</td><td><a href="/checkout-experiences/getting-started-with-checkout/checkout-experiences-library/measuring-a-shopify-rollouts-checkout-test-with-intelligems">Measuring a Shopify Rollouts Checkout Test</a></td></tr></tbody></table>

#### Post-purchase

| If you want to                          | How you build it     | Requirements                            | Source                                                                                                                                                                     |
| --------------------------------------- | -------------------- | --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Offer a one-click upsell after checkout | Post-purchase Upsell | Every Shopify plan, no Plus needed      | [How to Set Up a Post-purchase Upsell](/post-purchase-experiences/getting-started-with-post-purchase-upsells/how-to-set-up-a-post-purchase-upsell-personalization-or-test) |
| Chain several offers after the order    | Post-purchase Funnel | Coming soon, one-step offers only today | [Post-purchase Experiences Overview](/post-purchase-experiences/getting-started-with-post-purchase-upsells)                                                                |

***

### Targeting, measurement, and integrations

These work across every module, so they aren't tied to any one section above.

#### Targeting

| If you want to                                            | How                                        | Source                                                                                       |
| --------------------------------------------------------- | ------------------------------------------ | -------------------------------------------------------------------------------------------- |
| Personalize by country                                    | Common Audience                            | [Audience Targeting](/general-features/targeting/audience-targeting)                         |
| Personalize by device                                     | Common Audience, tablet counts as mobile   | [Audience Targeting](/general-features/targeting/audience-targeting)                         |
| Personalize new versus returning visitors                 | Common Audience, visitor not customer      | [Audience Targeting](/general-features/targeting/audience-targeting)                         |
| Personalize by traffic source                             | Common Audience, GA-standard channel rules | [Audience Targeting](/general-features/targeting/audience-targeting)                         |
| Personalize by UTM parameter                              | Custom Audience                            | [Audience Targeting](/general-features/targeting/audience-targeting)                         |
| Personalize by landing page                               | Custom Audience                            | [Audience Targeting](/general-features/targeting/audience-targeting)                         |
| Personalize by referring domain                           | Custom Audience                            | [Audience Targeting](/general-features/targeting/audience-targeting)                         |
| Personalize by city or state                              | Cookie condition on `ig-location`          | [Audience Targeting](/general-features/targeting/audience-targeting)                         |
| Personalize by Klaviyo segment, including past purchasers | Klaviyo Segment condition                  | [Klaviyo Integration](/integrations/analytics-and-data-platforms/klaviyo-integration)        |
| Personalize with arbitrary JavaScript                     | JavaScript Expression condition            | [Audience Targeting](/general-features/targeting/audience-targeting)                         |
| Assign specific audiences to specific groups              | Advanced Targeting                         | [Audience Targeting](/general-features/targeting/audience-targeting)                         |
| Personalize by currency                                   | Currency Targeting                         | [Currency Targeting](/general-features/targeting/currency-targeting)                         |
| Limit an experience to certain pages                      | Page Targeting                             | [Page Targeting](/general-features/targeting/page-targeting)                                 |
| Stop two experiences overlapping                          | Mutually Exclusive Experiments             | [Mutually Exclusive Experiments](/general-features/targeting/mutually-exclusive-experiments) |

#### Measurement

| If you want to                        | How                                      | Source                                                                                                           |
| ------------------------------------- | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| Measure profit instead of conversion  | Add COGS, shipping cost, transaction fee | [How to Add Profit](/analytics/overview/how-to-add-profit-to-intelligems-analytics)                              |
| See gross profit per visitor          | Profit tab in Results                    | [Profit](/analytics/overview/experiment-analytics/metric-definitions/profit)                                     |
| Measure subscription impact           | Subscriptions metrics                    | [Subscriptions](/analytics/overview/experiment-analytics/metric-definitions/subscriptions)                       |
| Calculate 90-day shopper LTV by group | Export plus recipe                       | [90-Day Shopper LTV](/analytics/overview/how-to-calculate-90-day-shopper-ltv-by-intelligems-test-group)          |
| Track a custom action as a metric     | Custom Events                            | [Testing Custom Events](/analytics/overview/custom-events/testing-custom-events)                                 |
| Know when a result is real            | Statistical Significance                 | [Statistical Significance](/analytics/overview/experiment-analytics/statistical-significance)                    |
| See store performance outside a test  | Sitewide Analytics                       | [Sitewide Analytics](/analytics/overview/sitewide-analytics)                                                     |
| See a P\&L view of performance        | Performance P\&L                         | [Performance P\&L](/analytics/overview/sitewide-analytics/performance-p-and-l)                                   |
| Compare audiences across the store    | Audience Dive                            | [Audience Dive](/analytics/overview/sitewide-analytics/audience-dive)                                            |
| Tag Shopify orders by test group      | Order tagging                            | [Tagging Orders by Test Group](/analytics/overview/experiment-analytics/tagging-orders-by-test-group-in-shopify) |
| Export order-level results            | CSV export                               | [Exporting Experiment Data](/analytics/overview/experiment-analytics/exporting-data)                             |

#### Running experiences

| If you want to                           | How                                                            | Source                                                                    |
| ---------------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------- |
| Schedule an experience to start and stop | Set a start and end date on any experience                     | [Scheduling an Experience](/general-features/scheduling-personalizations) |
| Roll out the winner to everyone          | Roll the winning group out to all or a segment of your traffic | [Rolling Out Tests](/general-features/rolling-out-tests)                  |

#### Integrations and developer surfaces

| If you want to                                                                        | How                                                      | Source                                                                                       |
| ------------------------------------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| Send results to GA4, Amplitude, Heap, Segment, or Klaviyo                             | Integrations                                             | [Integrations](/integrations/analytics-and-data-platforms)                                   |
| See heatmaps by test group with Clarity, Hotjar, or [Heatmap.com](http://Heatmap.com) | Heatmap Integrations                                     | [Integrations](/integrations/analytics-and-data-platforms)                                   |
| Test shipping protection with Navidium, Corso, or SavedBy                             | Integrations                                             | [Integrations](/integrations/analytics-and-data-platforms)                                   |
| Get alerts in Slack                                                                   | Slack Integration                                        | [Integrations](/integrations/analytics-and-data-platforms)                                   |
| Run on a headless storefront                                                          | Headless Storefronts. Components need your own front end | [Headless Storefronts](/developer-resources/theme-and-storefront-setup/headless-storefronts) |
| Read experience state in the browser                                                  | JavaScript API                                           | [Javascript API](/developer-resources/javascript-api)                                        |
| Pull results programmatically                                                         | External API                                             | [External API](/developer-resources/external-api)                                            |
| Query Intelligems from an LLM                                                         | MCP Server                                               | [MCP Server](/developer-resources/mcp-server)                                                |

### **Where to go next**

If you're already in the app with something you want to try, [Which experience should I build](/getting-started/tests-vs.-personalizations/which-experience-should-i-build)? maps the same ground by experience type.

If you don't have a hypothesis yet, [Quick Start Experiences](/general-features/common-use-cases) has tests and personalizations you can launch in about 15 minutes.

If you don't see what you're looking for, reach out to our support team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request).


# Getting Started

### **Install Intelligems on your Shopify store**

If you haven't already, install Intelligems from the [**Shopify App Store**](https://apps.shopify.com/intelligems?utm_source=docs)**.**

Everything you build in Intelligems is an **experience**: a change to your store that you show to some of your visitors or all of them. You build the change once, then decide how it runs.&#x20;

* Run it as a **test** to split your traffic and see which version wins.&#x20;
* Run it as a **personalization** to show it to one audience, always on.

Want ideas before you build anything? Browse [What You Can Test](/what-you-can-test).

### **Five steps to your first experience**

1. **Install Intelligems** from the [**Shopify App Store**](https://apps.shopify.com/intelligems?utm_source=docs)**.**
2. **Choose your modules.** Every plan includes Content. Add Merchandising, Pricing, Shipping, or Checkout & Post-purchase as you need them, or take Unlimited to get all of them. Most modules come with a **14-day free trial**. Our [pricing page](https://intelligems.io/pricing) shows what each one costs at your order volume.
3. [**Add the Intelligems script to your theme**](/getting-started/adding-intelligems-script-to-your-theme)**.** Every experience in every module needs it. It's very easy and shouldn't require a developer.
4. [**Set up your price integration, if you're on Pricing**](/pricing-experiences/price-testing-integration-guides)**.** Price experiences need a one-time integration on top of the script. It's included with the Smart Pricing module, and our team sets it up with you.
5. **Build your first experience.** Click **New experience**, pick a module, build your change, then choose whether it runs as a test or a personalization. Start it, and you're collecting data.

{% hint style="info" %}
**Why isn't Pricing part of the trial?** Price testing takes some setup on your store first, and we do that part with you. Because it's hands-on from the start, Pricing comes with a paid plan. Everything else you can try free for 14 days, and we're happy to get you going on Pricing whenever you're ready.
{% endhint %}

### **Price integrations**

Price is the biggest lever most stores have on profit, because it changes the economics of every order. The [integration](https://docs.intelligems.io/price-testing/price-testing-integration-guides) handles the mechanics: your shoppers see their test price everywhere it appears on your store, and checkout charges that same price.

{% hint style="success" %}
The integration is included with the **Smart Pricing** module, and our team does it with you as part of onboarding. Questions before you buy? Reach out to <sales@intelligems.io>.
{% endhint %}

If you'd rather integrate yourself, or you want to understand how it works, there are two mechanisms. Which one fits depends on your store. Not sure which you're on? [Contact our support team](https://intelligems.portal.usepylon.com/forms/intelligems-support-request) and we'll check for you.


# Adding Intelligems Script to your Theme

### **Introduction**

Adding the Intelligems script to your site is the most important step to getting started with Intelligems. It's the only integration step you need for Content, Merchandising and Shipping experiences, and it's the first step for Pricing, Checkout and Post-purchase. There are two options below for adding the Intelligems script to your site.

{% hint style="warning" %}
**The script is per theme.** Whichever option you use, Intelligems has to be live on every theme you want to run an experience on. A brand-new theme starts with the app embed switched off, so a theme change experience needs it enabled on the new theme as well as your current one, and a preview on a draft theme won't load until it's on.
{% endhint %}

### **Option 1: Use the App Embed Block**

{% hint style="success" %}
This is the easiest installation method that works for most stores!
{% endhint %}

The fastest way to add Intelligems JavaScript to your theme is to enable it in the "Customize" section of your theme editor. You can do so by logging into your Shopify Admin, and navigating to Sales Channels > Online Store > Live theme - "Edit Theme" > App Embeds. Search "Intelligems", make sure it is toggled on, and click "Save" in the top right.

This will load Intelligems in a fashion that works optimally for performance and A/B testing on most stores. If for any reason you encounter performance concerns, see our docs on [performance optimization](https://docs.intelligems.io/performance-optimization/optimizing-your-price-test-integration).

Here's a video walking through those steps as well:

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

{% hint style="warning" %}
For any **password protected store**, we will not be able to automatically detect the script, so you will continue to get an error message in the app regarding the script not being in your theme.
{% endhint %}

### **Option 2: Add to Your Theme Code**

{% hint style="danger" %}
This will need to be manually removed if you uninstall Intelligems.
{% endhint %}

In Intelligems, go to **Admin Settings** and find the **Theme script** card. Click **Copy** and your unique Intelligems script is on your clipboard. The **Install method** line above the button tells you which method we're currently detecting on your store.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FzrS7xXebFph2rvN9F0kY%2FScreenshot%202026-03-10%20at%202.54.31%E2%80%AFPM.png?alt=media&amp;token=4b65a17a-5109-4256-87c4-7ca3504575aa" alt=""><figcaption></figcaption></figure>

Now head over to your Shopify account, and paste the Intelligems Script as a source into the `<head>` of each of these files:

* theme.liquid
* any other theme.\*.liquid files (e.g., theme.gempages.liquid if you have this file)

Here's a video walking through those steps as well:

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

{% hint style="info" %}
**Pick one method.** If you hardcoded the script during an earlier install and have since turned on the app embed, remove the hardcoded copy so Intelligems only loads once.
{% endhint %}

The script format changed in December 2024. If you're still on the older one, the app flags it, and you'll want to [Update the Intelligems Script](/getting-started/adding-intelligems-script-to-your-theme/updating-the-intelligems-script).

{% hint style="info" %}
**Theme changes and the preview bar.** On Checkout Extensibility there's nothing extra to do. Checkout isn't part of your theme, so the theme preview bar can't appear there. If your store still has `checkout.liquid`, [reach out to support](https://intelligems.portal.usepylon.com/forms/intelligems-support-request) and we'll sort the preview bar out with you.
{% endhint %}


# Updating the Intelligems Script

{% hint style="success" %}
The **CommonJS script will remain supported for current features.** However, **new features will** **only be available with the ESM script**, so we recommend updating your Script code as soon as you are able to. Additionally, the ESM script improves plugin performance, making it faster!
{% endhint %}

## Context

Historically, Intelligems utilized a version of its script known as the CommonJS script. In December 2024, an update was released, transitioning to a new and improved version called the ESM script.

Here’s how the scripts differ:

#### Pre-December 9, 2024 (CommonJS Script)

The final line of the script looks like this (with `abcdefghijk` replaced by your unique customer ID):

```html
<script src="https://cdn.intelligems.io/abcdefghijk.js"></script>
```

#### Post-December 9, 2024 (ESM Script)

The updated script uses the following format (with `abcdefghijk` replaced by your unique customer ID):

```html
<script type="module" src="https://cdn.intelligems.io/esm/abcdefghijk/bundle.js"></script>
```

Key differences include:

1. **`type="module"`** – the script is now a JavaScript module.
2. **`esm`** – the directory structure reflects the new ESM format.
3. **`bundle`** – the updated structure for improved performance.

{% hint style="warning" %}
**Copy the whole block from Settings rather than swapping this line.** The lines above the tag have changed since December 2024 too, and a script that's missing them leaves your product and collection pages without the data we need to price them.&#x20;
{% endhint %}

## Required Changes

You can check your installation on the top right of settings page.&#x20;

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2F7P20AcGh5X3gYkCuJvpb%2FScreenshot%202026-08-07%20at%209.58.24%E2%80%AFAM.png?alt=media&amp;token=50945ea1-1e41-4a08-b321-90b7d5bf5b67" alt=""><figcaption></figcaption></figure>

If you're script is out of date you can update starting from right here:

1. Click the button in that block that says "Copy". This will copy your unique Intelligems script to your clipboard.
2. Now head over to your Shopify account, and replace your current Intelligems Script with your new one. The script should be included as a source in the `<head>` of each of these files:
   1. theme.liquid
   2. any other theme.\*.liquid files (e.g., theme.gempages.liquid if you have this file)
   3. checkout.liquid (if you have this file; most themes do not)

Here is a video walking through those steps:

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

{% hint style="info" %}
**The app embed means you don't do this again.** Shopify injects the current script for you, so script updates land without a theme deploy and you stay on the latest version. Our newer performance work needs the embed too.
{% endhint %}

If your theme uses `importmap`, the ESM script has to sit below it. This [page](https://docs.intelligems.io/getting-started/moving-intelligems-script-location-below-importmap) has the fix.

#### **Post-Purchase Page for Theme Change Experiences (Legacy Checkout Only)**

**Note:** *This step only applies if your store still has access to the legacy Shopify checkout (`checkout.liquid`). Most stores have been migrated to Checkout Extensibility and will not see this section in their Shopify admin. If you don't see a "Post-purchase page" section under Settings → Checkout, you can skip this step—the preview bar will be hidden automatically.*

If you are planning to run a theme change experience and still have access to the Additional Scripts section for the Post-purchase page, you should update your script there as well. This will hide the theme preview bar from showing up on your thank you page. You can get to the Additional Scripts section pictured below by going to Settings -> Checkout -> Scroll about halfway down to "Post-purchase page".

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-0e043169cb168eea43b0239be9661bf1a7a840b0%2FScreenshot%202024-07-31%20at%2012.22.21%20PM.png?alt=media" alt=""><figcaption></figcaption></figure>


# Moving Intelligems Script Location Below importmap

If you are seeing the below error in your Intelligems app:

This means the we have detected that your Shopify theme utilizes a feature called `importmap`. In the case that a Shopify theme is using `importmap`, the Intelligems script must be placed after the `importmap` script in your theme.liquid file.

Here are the steps to make this change:

1. Locate where the Intelligems script is currently located in your theme.liquid file by doing Command + f and searching for Intelligems. It should look something like the below, but "123456789" will be your account ID.

```html
<script>
    window.Shopify = window.Shopify || {theme: {id: {{ theme.id }}, role: '{{ theme.role }}' } };
    window._template = {
        directory: "{{ template.directory }}",
        name: "{{ template.name }}",
        suffix: "{{ template.suffix }}"
    };
 </script>
<script type="module" fetchpriority="high" src="https://cdn.intelligems.io/esm/123456789/bundle.js"></script>
```

2. Select the full script - copy it to your clipboard and delete it from that location in your `theme.liquid` file.
3. Locate where the `importmap` script is currently located in your theme.liquid file by doing Command + f and searching for `importmap`. It should look something like the below:

```html
<script type="importmap">{
        "imports": {
          "vendor": "",
          "theme": "",
          "photoswipe": ""
        }
      } 
</script>
```

4. Paste the full Intelligems script below the importmap script.
5. Save your changes.

If you have any questions, please reach out to our support team for assistance [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request)!


# Tests vs. Personalizations

Every change you make in Intelligems, whether it's a new price, a checkout badge, a shipping threshold, or a homepage banner, starts the same way: you build it once. From there, you decide how it goes live.

Ship it as a **Personalization** and it runs always-on for the audience you choose. Everyone who matches your [targeting](/general-features/targeting) sees the change, all the time.

Run it as a **Test** and your traffic splits between a control group and one or more variants, so you can measure what the change is worth before you give it to everyone.

Nothing about the setup changes between the two.

### **Which one to pick**

You don't need to know in advance whether something "should" be a test or a personalization. A good rule of thumb:

* Not sure it'll work? Test it. Add a control group and run it long enough to get a [statistically significant](/analytics/overview/experiment-analytics/statistical-significance) result.
* Already confident, or making a small, low-risk change? Skip straight to a Personalization and ship it live.

{% hint style="info" %}
**On the fence? Test it.** You can always roll a winning test group out as a Personalization. You can't go the other way and turn a Personalization into a Test.
{% endhint %}

### **How they differ**

This works the same way in every module: [Content](/content-experiences/content-experiences-overview), [Merchandising](/merchandising-experiences/offer-modifications), [Pricing](/pricing-experiences/pricing-experiences-overview), [Shipping](/shipping-experiences/shipping-testing-getting-started), [Checkout](/checkout-experiences/getting-started-with-checkout), and [Post-purchase](/post-purchase-experiences/getting-started-with-post-purchase-upsells).

|                 | Personalization                         | Test                                                                                                     |
| --------------- | --------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| Audience        | Everyone who matches your targeting     | Split between a control group and one or more variants                                                   |
| Multiple Groups | None                                    | This can be a control group or alternate change to test against.                                         |
| Goal            | Ship a change you're confident in       | Find out what the change is worth in revenue or profit before you commit                                 |
| Running it      | Enable and disable it whenever you want | Start it, pause it, and end it once you have your answer                                                 |
| Reporting       | Visitors, orders, and revenue it drove  | Full [experiment analytics](/analytics/overview/experiment-analytics), with significance for every group |

### **Rolling out a winning test group**

When a group wins, you don't have to rebuild it. [Roll it out](#rolling-out-a-winning-test-group) and Intelligems ends the test and creates a Personalization carrying the same modifications, ready for you to target and activate. You can roll out more than once from the same test, so if one group won with a particular audience and another won everywhere else, each can go live to the audience it won with.

{% hint style="info" %}
**Three types roll out differently.** Price experiences apply the winning prices straight to Shopify, for all visitors, once, at the moment you end them. A [theme change](/content-experiences/content-experiences-overview/how-to-set-up-a-theme-change-experience/ending-a-theme-test) rolled out to all visitors should be done directly to Shopify. [Shipping experiences](/shipping-experiences/shipping-testing-getting-started/ending-a-shipping-test) can't be rolled out, so you'll need to make the winning rates live in Shopify yourself.
{% endhint %}

### **Where to find yours**

Your **Dashboard** lists every experience in your store, and each module in the left nav lists its own. On both, the **All Experiences**, **Tests**, and **Personalizations** tabs filter the list, and every row is tagged with the mode it's running in.

[Experiment Analytics](/analytics/overview/experiment-analytics)

[Sitewide Analytics](/analytics/overview/sitewide-analytics)


# Which experience should I build?

Every experience starts with a change you want to make to your store. You pick the type of change first, build it, and then decide whether it runs as a test or a personalization.

{% hint style="info" %}
The create flow changed in July 2026. You now choose the experience type first and test or personalization second. [Here's a short walkthrough](https://www.loom.com/share/9aa70f1286da429f94a4d9ba0d1b483f).
{% endhint %}

### **Start from what you want to move**

| I want to                                          | Build in      |
| -------------------------------------------------- | ------------- |
| Find the price that makes me the most profit       | Pricing       |
| Get bigger orders out of a discount                | Merchandising |
| Cover my shipping costs without losing conversions | Shipping      |
| Change what a shopper sees on the page             | Content       |
| Convert more of the shoppers who reach checkout    | Checkout      |
| Add revenue to an order after it's placed          | Post-purchase |

Which modules you can build in depends on your plan. Every paid plan includes Content.

### **The 22 experience types**

Click **New experience** and these show up as cards, grouped by module. The **All** tab lists every one of them together.

| Module        | Type                  | What it changes                                                  |
| ------------- | --------------------- | ---------------------------------------------------------------- |
| Content       | Content Edits         | Headlines, copy, and on-page elements.                           |
| Content       | Redirects             | Sends traffic to a different URL.                                |
| Content       | Styles & Javascript   | Injects your own CSS and JavaScript.                             |
| Content       | Theme Change          | Swaps the live theme for another one.                            |
| Content       | Template Changes      | Serves a different page template.                                |
| Merchandising | Amount off Products   | Discounts specific products by percentage or amount.             |
| Merchandising | Amount off Order      | Applies an automatic cart-wide discount.                         |
| Merchandising | Volume Discount       | Tiered pricing that rewards larger quantities.                   |
| Merchandising | Free Gift             | Adds a free gift when the cart hits a threshold.                 |
| Pricing       | Price Change          | The product price itself, everywhere it appears and at checkout. |
| Pricing       | Amount off Products   | The same type that appears under Merchandising.                  |
| Shipping      | Shipping Rates        | Your rates, flat or tiered by price or weight.                   |
| Shipping      | Free Shipping         | The cart value at which shipping becomes free.                   |
| Checkout      | Upsell                | Recommends add-ons during the checkout flow.                     |
| Checkout      | Trust Badge           | Shows trust signals to reduce hesitation.                        |
| Checkout      | Shipping progress bar | Shows how close the cart is to the threshold you set.            |
| Checkout      | Call Out              | A promo or message banner.                                       |
| Checkout      | Static Image          | A custom image block.                                            |
| Checkout      | Brand Logo            | Your logo, for added assurance.                                  |
| Checkout      | Countdown Timer       | A live countdown.                                                |
| Checkout      | Text Only             | A plain text block.                                              |
| Post-purchase | Post-purchase Upsell  | One-click add-ons after checkout.                                |
| Post-purchase | Post-purchase Funnel  | Chains several offers after the order. Coming soon.              |

{% hint style="info" %}
**Amount off Products sits in two modules.** It's one type. Build it from Merchandising or from Pricing, whichever you're already in.
{% endhint %}

Checkout types need Shopify Plus. Post-purchase works on every Shopify plan.

### **If you don't have a hypothesis yet**

Start from something that worked for another store and adapt it. [**Quick Start Experiences**](/general-features/common-use-cases) in your left nav has some great ideas.

Still stuck, or not sure which type fits the change you have in mind? [Open a ticket](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) and we'll point you at the right one.


# General FAQs

## Plan, Capabilities & Access FAQs

<details>

<summary>How much does Intelligems cost?</summary>

Intelligems offers monthly and annual pricing options to meet your organization's needs. Prices vary depending on your store's order volume, what type of tests you'd like to run, and how long you are planning to test with us. Please see our [pricing page](https://intelligems.io/pricing) for more information.

</details>

<details>

<summary>What eCommerce platforms does Intelligems integrate with?</summary>

Currently, Intelligems only supports Shopify stores. However, if you are on another platform and interested in using Intelligems, please [reach out to our support team](https://portal.usepylon.com/intelligems/forms/intelligems-support-request)! We'd love to keep you updated if this changes in the future.

</details>

<details>

<summary>How long does Intelligems take to set up?</summary>

This depends on a few factors, including:

* What test type or types you are planning to run
* Whether you choose to integrate Intelligems on your own, or have the Intelligems team complete it on your behalf
* What version of Shopify you are on and how many other apps and customizations your store has

That said, if you choose to have Intelligems do the integration, our team typically completes it within 3-5 business days, depending on backlog. If you are starting with something simple like content testing, you can get up and running within about 30 minutes!

</details>

<details>

<summary>What can I test and personalize with Intelligems?</summary>

Intelligems enables organizations to test just about anything on their Shopify store: prices, discounts and gifts, shipping rates and thresholds, themes and templates, the content of any page, checkout, and what a shopper sees right after they order.

[What You Can Test](/what-you-can-test)

The experience types you can build depends on the modules on your plan, so we recommend checking out our [pricing page](https://intelligems.io/pricing) for a full look at what each module includes. If you're not sure which modules fit what you want to test, Please don't hesitate to [reach out to our support team](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) if you have any questions!

</details>

<details>

<summary>What kind of experience should I start with?</summary>

The answer to this depends on your goals! If you are starting with price testing, most of our customers start off by testing the prices across their store or on their most popular product or collection as that will generate the fastest results and the most impact. When running a price test, we usually recommend testing both a lower and a higher price vs. the current price.

If you are more interested in testing around shipping, another popular strategy is to test various free shipping thresholds to see what finds the “sweet spot” of AOV and conversion rate.

You can see more test suggestions [here](/general-features/common-use-cases)!

</details>

<details>

<summary>Can I run multiple experiences at once?</summary>

Technically, there is no limit to the number of parallel experiences you can have running on Intelligems. Strategically, you run the risk of creating *interference* between your experiences if they are running on similar things at similar times.

* For example, maybe you are testing pricing on a particular product while also testing the layout of the PDP. You may see these as two separate tests, but in reality customers are being exposed to both. So you end up with a combination of experiences that you don’t have full visibility into since visitors are being randomly assigned within each test.

To control for interference, you can:

1. Set this up as one large experience. Make a group for each combination of variables so that you can properly measure and compare (a multivariate experiences). You **can** have multiple products in the same experiences, which would keep users in the same group across all products being tested.
2. Run experiences sequentially, one after another
3. Use our [Mutually Exclusive Experiments](/general-features/targeting/mutually-exclusive-experiments) feature (beta). If you don't see this as an option in your test setup, please [contact us](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) and we'll enable it.

Exceptions: You can run experiences in parallel if there is *not meaningful overlap in their impact to the customer experience.*

* For example, if you wanted to test a PDP layout for one product, and separately have an experience running on a landing page for a completely different product and funnel - that should have minimal interference, as the customers won’t likely interact with both.
* Or if you ran a pricing test on women’s underwear at the same time you were testing men’s overcoats - those are likely to be pretty distinct sets of customers who won’t be exposed to both tests.

Note: We do only allow *one shipping test at a time* for technical reasons.

</details>

<details>

<summary>Will Intelligems continue to function if I update to Shopify's One-page checkout?</summary>

Overall, yes. Intelligems will continue to function if you update to Shopify's One-page checkout! That said, the full answer depends on the type of test you are looking at:

**Price Test:** this will continue to work seamlessly! If you are on Shopify Plus, please ensure that your Line Item script still includes our Checkout Script. Note that hiding the added discount on the One-page checkout won't be possible, but we can customize the discount's name to your preference.

**Shipping Test:** Intelligems will continue to operate without issues.

**Content Test:** Running content tests on the One-page checkout isn't possible as it doesn't utilize the checkout.liquid file and doesn't allow third-party alterations. However, you can continue to run content tests on the rest of your site without any issues.

</details>

<details>

<summary>Why does Intelligems need collaborator access to your store?</summary>

Intelligems may ask for Shopify collaborator access for a few reasons:

1. To complete the integration on your behalf. The integration requires a few theme changes or other Shopify configurations to be made, so we need access to your Shopify account to complete those.
2. To help troubleshoot. If something is not working as expected, it is helpful for our team to have access to your Shopify account to solve the issue quickly.
3. To take a look at your analytics. This helps us understand if there are an discrepancies with the data we have captured.

**Permissions Intelligems requires:**

* **Orders:** Necessary to track test impact data such as AOV, product mix, etc.
* **Products:** Necessary to find detail on products and variants that will be part of a test.
* **Apps:** Necessary to configure the Shopify Functions that produce test prices and discounts, and to reach apps that manage your cart, collections pages, or reviews, which may need updating as part of an experience.
* **Online Store Themes:** Necessary to duplicate a theme and update the code to integrate a test.
* **Settings & Locations:** Necessary to run shipping tests and install Intelligems as a third party rate carrier.

**Permissions Intelligems prefers to have:**

* **Discounts:** In general, we want to be aware of what discounts may be impacting products that are in the test. Note that this is required if we are duplicating products.
* **Customers/Reports/Dashboards:** Helpful to (a) check our data vs. historical data, and (b) confirm there are no discrepancies between the data we are presenting vs. what you see in Shopify.

**Permissions Intelligems does not request access to:**

* Apps developed for you
* Marketing / gift cards
* Edit Orders / Draft Orders

</details>

<details>

<summary>How can I add or remove users from my Intelligems account?</summary>

The easiest way to access Intelligems is directly through Shopify - you can find us by clicking on Apps in the left hand navigation menu -> searching for Intelligems and selecting our app. Anyone who has the permissions to access apps in Shopify should be able to log in that way - you can add users via the Shopify admin by going to Settings -> Users and Permissions -> Add staff. Be sure to give the user permission to manage Intelligems in the App permissions section. If you need to remove users from Intelligems, you can do so by removing that permission. Please see [Shopify's documentation](https://help.shopify.com/en/manual/your-account/staff-accounts/staff-permissions/staff-permissions-descriptions#apps-and-channels-permissions) for additional details.

In the rare case that you would like to provide a user access to Intelligems, but will not be providing them access to Shopify, please reach out to our support team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) and we can help get that set up.

</details>

<details>

<summary>I'm upgrading to Checkout Extensibility, is there anything I need to do to ensure Intelligems continues to operate correctly? And will current test results be impacted at all?</summary>

There are no additional steps you need to take to ensure Intelligems continues to operate as expected when upgrading to Checkout Extensibility.\
\
There'll be no impact to any test results, or any Content, Shipping, or Offers tests when updating.\
\
While there is no impact on price tests or their results, there *will* be a visible discount on the checkout page if using our Checkout Script to manipulate prices.\
\
To remove the discount, you'll need to upgrade to Shopify Functions.\
\
Please reach out to support for help with updating to Shopify Functions at <support@intelligems.io>

</details>

<details>

<summary>I'm changing my site's primary URL domain – what do I need to do in Intelligems?</summary>

As long as your Shopify Shop ID remains the same, the only change in Intelligems that you need to make will be updating your domain name in the settings page of the app. If additional changes are being made to the store that affect the Shop ID, please reach out to our Support team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request). Please note that after a domain change all visitors to tests will be considered 'new' for targeting purposes, so we would recommend ending any ongoing tests and restarting them after the domain migration.

</details>

## Running Experiences FAQs

<details>

<summary>Can I schedule tests to experience, pause or end at a specific time?</summary>

Yes! Intelligems allows you to schedule start times for all types of experience, including Price, Shipping, Content and Campaigns. Intelligems also allows you to schedule pause and end times for Content and Campaigns tests, but does not currently support scheduling pause or end times for Price or Shipping tests due to rollout requirements for ending those types of tests.

To schedule a start, pause or end time, follow these steps:

1. Click on the More Options menu (the three dots) next to the test you'd like to set up a schedule for.
2. Click "Schedule Test". If you do not see this option, please reach out to our support team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) to request this feature be turned on for your account!<img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FagbtMWXmiMNeFKLy0T1z%2FScreenshot%202026-08-07%20at%2010.46.53%E2%80%AFAM.png?alt=media&amp;token=b09a282c-851d-4338-87bb-36c379372673" alt="" data-size="original">
3. If you are setting up a schedule for a test that has not yet been started, this will open a modal that will ask you to confirm that you have completed the integration & QA'd your test. If you have not already done so, please be sure to complete both of these items before proceeding. ![](https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fnrmr9xg0Wheee5rUpa0y%2FScreenshot%202026-08-07%20at%2010.47.00%E2%80%AFAM.png?alt=media\&token=47427841-9cd0-4a30-9ffc-6b577ddc54da)
4. Once you have confirmed those items are complete, you'll be taken to a modal where you can set up a scheduled start, pause, and/or end time.

<p align="center"><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fbjqpzpr9M2c9nLHrovuf%2FScreenshot%202026-08-07%20at%2010.47.07%E2%80%AFAM.png?alt=media&amp;token=6bd685c8-c42f-43d7-bbe8-66d57283724b" alt=""></p>

A few things to keep in mind as you set these up:

1. Times have to be in the future, and land on 5 minute increments.&#x20;
2. Times use your device's time zone, which is shown at the top of the modal.
3. Once a schedule is set you'll see a clock next to the status. Hover over it for the scheduled times.
4. Scheduled experiences have their own **Scheduled** status, so you can filter the dashboard down to what's queued up.

<figure><img src="https://docs.intelligems.io/~gitbook/image?url=https%3A%2F%2F2052204893-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F2SvefuMLsJyJPAcVXeWc%252Fuploads%252FKWt85JpzNEkCCzgg1y2X%252FScreenshot%25202024-04-05%2520at%25202.01.38%2520PM.png%3Falt%3Dmedia%26token%3Dc8b909a9-0938-4e8d-8fe3-bcfa395608b6&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=f53e04bac5dbbd62ffeb94278f86eb116eb99a28cb541bf4ebba36c72416bd79" alt="" width="188"><figcaption></figcaption></figure>

</details>

<details>

<summary>Can I restart a experience that I accidentally ended?</summary>

The Intelligems Support Team can help set your ended Content, Price or Offer experience back to a paused status, which will allow you to resume the experience. We are not able to restart shipping tests due to technical reasons. Please reach out to our support team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) for help with this!

</details>

<details>

<summary>How long does it take to run a test? When should I end my test?</summary>

Determining how long to run a test relies on 3 major things:

1. How big is the effect of this change? The smaller the effect, the harder it is to detect and be certain that the result is not just noise.
2. How many people visit your website every day, and more specifically, how many orders are being placed in a day?
3. How confident do you want to be? The more confident you want to be, the more data you need.

***Our rule of thumb is that if you want to detect a 10% change in conversion with 90% confidence, you need about 300 orders per group.***

* Smaller changes will likely require more data to pick out the signal from the noise
* Larger changes will likely require less data to see a significant pattern

Here are the steps we recommend you take when your test goes live to monitor results and determine when to end the test:

1. Always check in on your test after \~4 hours to make sure your data is flowing - this can be a helpful time to catch any errors in the test configuration (don't launch a test end of day on a Friday, when you won't be able to monitor it)
2. Try not to end any tests before a full week. This allows you to observe a mix of weekdays and weekends, and early results often change.
3. Take a look at the "Time Series" in the Key Metrics dashboard. Have those charts shown consistent results, or are they still varying from day to day? If there is still a lot of variability, it may make sense to run the test for a few more days.
4. Once a week has passed, you can check the “statistical significance” tab to get a read on the “probability to be best” for each group. Check out our [article on statistical significance](/analytics/overview/experiment-analytics/statistical-significance) to understand what you are looking for here!
5. You should have a risk tolerance in your head.

* You can wait for everything to hit 95 or 99% confidence, but for smaller brands, that means a lot of time waiting around for results. Waiting around presents a big *opportunity cost* since you are not running other tests - which could be delivering more value! - during that time
* We wouldn’t recommend making decisions with less than 75% confidence
* Many of our customers look for confidence somewhere around 90%

Some tests will not ever hit confidence - they’ll waffle around in the 40-60% range - that means there is *no real difference between the versions*. At that point, pick one to move forward with based on intuition or other strategic considerations, and move on

***Pro tip***: you’re able to change traffic allocation in the middle of a test. So if you have one group that is a clear loser, you can “shut it off” in the middle of your test and send more traffic to the more viable options.

</details>

<details>

<summary>How do I edit something in a live experience?</summary>

There are a few steps to safely edit your live experience:

**Step 1: Pause your experience.**

The pause button can be found next to the status column within your `Dashboard` overview tab.

*If you are pausing a shipping test,* we will automatically restore your shipping profiles while the test is paused.

*If you are pausing a price test,* we will ask you to select which prices you would like to roll out while the test is paused.

**Step 2: Make your edits.**

The edit button can be found under the three dots to the right of your experience. Select this and make any changes you need, such as adding a new product, removing a test group (you can do this by allocating 0% of traffic to that group), changing a price, or changing a shipping rate. Make sure you click through the entire edit flow and select the save button at the end to save your changes!

**Step 3: Resume your experience.**

Now that you've made your edits, you can resume your experience and keep getting results! The button to do so is right next to the experience status.

Keep your edits in mind when looking at the analytics dashboard if the change may have affected the results. Once a test has started, test group names cannot be changed and you can no longer add/remove test groups, but you can set traffic to 0% for a group to effectively remove that group from the test. We do this so that analytics are maintained for that old group that now has no traffic going to it. You can filter your results by date to see the results before and/or after edits were made.

</details>

<details>

<summary>How does the experience status work in the test dashboard?</summary>

There are several different statuses that a experience can have:

1. Pending: You've built it, but have not yet started it.
2. Gathering Data: You've started this experience within the last 21 days.
3. Ready For Analysis: A test has been running for at least 21 days. While this is a good baseline, there is ultimately no general rule on time. That said, we often start seeing significant results after about 300 orders *per group*.
4. Paused: You've paused this experience; it is not active on the site, but you can resume it.
5. Ended: You've ended this test.

</details>

<details>

<summary>What will my orders look like in Shopify?</summary>

Customers on your site will not see anything to indicate that an Intelligems test is running, but there are a few ways that Intelligems will show up on orders within your Shopify admin portal:

1. Each visitor gets tagged with a unique id that sorts them into a group. This id is passed to the order via [cart.attribute](https://shopify.dev/api/liquid/objects/cart) for tracking purposes and will show under “Additional Details” on the order page. This is hidden from the customer. If this causes any issues for your order forms, please reach out to our support team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) and we are able to remove this.
2. We also add each user's test group IDs to the order via [cart.attribute](https://shopify.dev/api/liquid/objects/cart) for tracking purposes and will show under “Additional Details” on the order page. This is hidden from the customer.
3. For Price Testing, we add a line\_item.property to each item equal to the price of that item for that customer. In most cases, this Line Item Property will be titled "\_igp". This is hidden from the customer.
4. For Shipping Testing, we add a line\_item.property to each item equal to the test group ID so that we are able to provide the correct shipping rate for their test group. This is hidden from the customer.
5. If you are using our Checkout Script integration for Price Testing, the Checkout Script applies a “[line-item discount](https://help.shopify.com/en/manual/sell-in-person/shopify-pos/discount-management/line-item-discount)” in order to generate the correct price for a customer’s product. While this shows as a discount in the admin view, this is always hidden from the customer (i.e. in this case they would just see “$13.99” for the product price).

Here is an example of what an order would look like in Shopify:

<img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-0c1cbb373b27d102650d9a530c8c30835c763e8a%2FScreenshot%202025-02-14%20at%2010.16.21%20AM.png?alt=media" alt="" data-size="original">

</details>

<details>

<summary>Why does the "Additional Details" section on my Shopify orders contain a random string of numbers &#x26; letters that starts with "ig_"?</summary>

That is the Intelligems ID that we have assigned to that user as this is what allows us to track the visitor and their activity. We add it as a cart attribute (if you look at an order's JSON on Shopify, its the field ​`note­_attributes`​) - this is something that many apps do when they need to add extra information to an order.

In most cases, this additional note should be harmless. However, if it is impacting another software that you use (such as a fulfillment software), Intelligems only needs the Intelligems ID to be there on order creation - we do not need it to *remain* on the order. Because of this, you can set up a [Shopify Flow](https://help.shopify.com/en/manual/shopify-flow) to remove it, and that would fix the problem while retaining the data for Intelligems.

</details>

<details>

<summary>What happens while a experience is paused?</summary>

Visitors who were already part of a test group won't see the content of that test while its paused, but they will remain in the same test group. When the experience is unpaused, they will resume seeing the experience content. This is true for all experience types.\
\
Conversions that take place during a paused period never count even if the experience is later unpaused.

</details>

<details>

<summary>Will testing through Intelligems affect my SEO?</summary>

No, Intelligems' tests do not impact your store's SEO. Our platform is designed to run tests without affecting search engine rankings or visibility.

We detect all major bots and will block execution when one is detected - this ensures that the bot will see the page *without* intelligems running, which avoids SEO impact. For Price Tests, it also means the bots will see the price of the item as listed in Shopify and not a particular test group.

</details>

<details>

<summary>Can I test across domains or stores?</summary>

Yes! Intelligems supports registering multiple domains for brands operating several domains under one Shopify account (e.g., yourbrand.com and yourbrand.co.uk).

**To add multiple domains:**

1. Navigate to the Settings page in the Intelligems app
2. In the Domain Settings section, click "Add Domain" to register additional domains
3. All registered domains will appear in a list where you can manage them

**What this enables:**

* Run Split URL tests on any of your registered domains
* Set up subdomain redirects for each domain (e.g., yourbrand.com → try.yourbrand.com AND yourbrand.co.uk → try.yourbrand.co.uk)

**Current limitations:**

* Cross-domain redirects are not supported. Visitors cannot be redirected from one top-level domain to another (e.g., yourbrand.com → yourbrand.co.uk will not work)
* Visitor assignments and tracking do not persist across different domains
* Each domain's tests operate independently

**Alternative approaches:**

* Use subdomains instead of separate domains when possible (e.g., shop.yourbrand.com vs yourbrand.com)
* Focus on single-domain user journeys within each registered domain to get meaningful test results

</details>

<details>

<summary>How do I Identify what Test Group / Variant I'm in for a Live Test</summary>

Use the Intelligems JavaScript API to check which test group a user is assigned to in a live test. This is also the most reliable way to confirm what variation of a live test you're in.

**Key Steps:**

1. Get your experiment ID from the test dashboard (Show Info → Test ID)
2. Open JavaScript Console (`Cmd+Option+J` Mac / `Ctrl+Shift+J` Windows)
3. Use: `window.igData?.user.getTestGroup("your-test-id-here")`
4. Review the returned group assignment

**What to verify:** Function returns the correct test group name or `null` if no assignment.

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

</details>

## Integration FAQs

<details>

<summary>What analytics platforms does Intelligems integrate with?</summary>

While Intelligems' analytics dashboards are quite robust, we also currently have an [integration with GA4](https://docs.intelligems.io/analytics/google-analytics-4-integration) if you prefer to take a look at your testing data there. Additionally, we have [integrations with several heatmapping tools](https://docs.intelligems.io/developer-resources/heatmap-integrations), including Microsoft Clarify, Heatmap.com and Hotjar. You can enable these integrations in the [integrations tab](https://app.intelligems.io/integrations) in the Intelligems app!

</details>

<details>

<summary>What page builders does Intelligems integrate with?</summary>

Intelligems has experience integrating with various page builders for different types of testing. Below are some specific page builders our brands have tested with, along with details on the integration requirements for each. If you are using a page builder that is not listed below, please reach out to our team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) if you have any questions on integrating with those pages!

1. **Replo:** Typically works out of the box for Content Testing once the [Intelligems JavaScript](https://docs.intelligems.io/getting-started/adding-intelligems-script-to-your-theme) has been added to your theme.liquid file. If there are any files in the layout for Replo, our script should be added there as well. If you will be Price Testing, please follow [this guide](https://docs.intelligems.io/getting-started/pricing-integration-guides/replo-page-builder) to integrate your Replo pages - this step is not necessary if you will only be content testing.
2. **Gempages:** Typically works out of the box for Content Testing once the [Intelligems JavaScript](https://docs.intelligems.io/getting-started/adding-intelligems-script-to-your-theme) has been added to your theme.liquid file & to the Gempage layout files. These pages are also compatible with Price Testing, and should be integrated by following [these steps](https://docs.intelligems.io/price-testing/price-testing-integration-guides/integration-guide-using-shopify-functions/step-2-tag-product-prices) - please reach out to our team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) if you need help completing this.
3. **Shogun:** Typically works out of the box for Content Testing once the [Intelligems JavaScript](https://docs.intelligems.io/getting-started/adding-intelligems-script-to-your-theme) has been added to your theme.liquid file & to the Shogun layout files. These pages are also compatible with Price Testing, and should be integrated by following [these steps](https://docs.intelligems.io/price-testing/price-testing-integration-guides/integration-guide-using-shopify-functions/step-2-tag-product-prices) - please reach out to our team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) if you need help completing this.
4. **Pagedeck:** Typically works out of the box for Content Testing once the [Intelligems JavaScript](https://docs.intelligems.io/getting-started/adding-intelligems-script-to-your-theme) has been added to your theme.liquid file & to the Head Scripts section in the Pagedeck app. These pages may not be compatible with Price Testing - please reach out to our team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) if you are interested in testing prices on a Pagedeck page so we can help scope this out!
5. **PageFly:** Typically works out of the box for Content Testing once the [Intelligems JavaScript](https://docs.intelligems.io/getting-started/adding-intelligems-script-to-your-theme) has been added to your theme.liquid file & to the PageFly layout files. These pages may not be compatible with Price Testing - please reach out to our team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) if you are interested in testing prices on a PageFly page so we can help scope this out!
6. **Funnelish:** Typically works out of the box for Content Testing once the [Intelligems JavaScript](https://docs.intelligems.io/getting-started/adding-intelligems-script-to-your-theme) has been added to your theme.liquid file & to the Custom CSS / JS > Head HTML section in the Funnelish app. These pages may not be compatible with Price Testing - please reach out to our team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) if you are interested in testing prices on a Funnelish page so we can help scope this out!
7. **Webflow:** Typically works out of the box for Content Testing once the [Intelligems JavaScript](https://docs.intelligems.io/getting-started/adding-intelligems-script-to-your-theme) has been added to your theme.liquid file & to the Webflow layout files. These pages may not be compatible with Price Testing - please reach out to our team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) if you are interested in testing prices on a Webflow page so we can help scope this out!
8. **Builder.io:** Builder.io pages are often headless, meaning they're hosted outside of your Shopify theme, so the Intelligems script in your theme.liquid file won't run on them and they'll need additional setup for Content or Price Testing. For Redirect (Split URL) tests, you can redirect *to* a Builder.io page from a Shopify page as usual, but using a Builder.io page as the Origin URL will likely cause visitors to see a noticeable flash of that page before they're redirected. If you're using Builder.io, please reach out to our team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) to discuss what will be possible.

</details>

<details>

<summary>What cart apps does Intelligems integrate with for Price Testing?</summary>

Intelligems has experience integrating with various cart apps for different types of testing. Below are some specific cart apps our brands have tested with, along with details on the integration requirements for each. If you are using a cart app that is not listed below, please reach out to our team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) if you have any questions on integrating with that app!

1. **Rebuy:** Rebuy works with Price Testing out of the box. Prices of products that have been added to cart will be updated via a Checkout Script, Shopify Function or Duplicate Product, depending on which integration you are using. If you are using Rebuy upsells in your cart, those prices will need to be [tagged](https://docs.intelligems.io/price-testing/price-testing-integration-guides/integration-guide-using-shopify-functions/step-2-tag-product-prices) in order to be updated correctly. If you have any questions on this, please reach out to our team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request)!
2. **Monster Cart Upsell:** Monster Cart Upsell is not compatible with Checkout Scripts - because of this, if you are using this cart app, you are only eligible for our Duplicate Product integration. If you have any questions on this, please reach out to our team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request)!
3. **UpCart:** UpCart works with Price Testing out of the box. Prices of products that have been added to cart will be updated via a Checkout Script, Shopify Function or Duplicate Product, depending on which integration you are using. That said, there are two limitations when using UpCart:
   1. Compare prices, discount tags, discount percentages & line item properties must either be hidden or shown incorrectly as UpCart does not allow Intelligems to manipulate these items
   2. You will not be eligible for our Checkout Script integration
4. **Slide Cart by AMP:** Slide Cart by AMP does require a few extra integration steps to hide the strikethrough prices & discounts - our guide on these steps can be found [here](https://intelligems.notion.site/Integrations-Slide-Cart-by-AMP-854ccb8e6b024c9d9770d41be78727a2?pvs=4). If you have any questions on this, please reach out to our team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request)!

</details>

<details>

<summary>I see an error associated with Intelligems under "Checkout Rules" — what does this mean?</summary>

You may see an error under Intelligems' checkout extension that says, "There were errors during checkout. Some customers have abandoned checkout."

This indicates there was at least one recent error in processing that may have caused an issue in completing checkout. While this of course sounds concerning, almost always, there were no issues encountered by real customers.

Many Shopify stores are visited by automated bots that scrape various data, including product inventory. One of the ways they record inventory data is to add very large numbers of each product to cart and attempt to checkout until they get out of stock errors. These large carts, often containing nearly the entire product catalog, can cause timeouts from the Intelligems function that show up here.

If you'd like Intelligems to investigate the errors, please [share error reports](https://shopify.dev/docs/apps/build/functions/monitoring-and-errors#sharing-an-error-report) with Intelligems through the Shopify admin, then [reach out to our support team](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) and we'll review the logs.

</details>

## Preview FAQs

<details>

<summary>Can I preview a Shopify theme and Intelligems test at the same time?</summary>

Yes, you can! This is a very common practice we use here at Intelligems. You can do this by entering preview mode for your theme and then entering preview mode for your test. The theme should be cached when you open your test preview.

</details>

<details>

<summary>How to Block Intelligems from Running Locally</summary>

Temporarily disable Intelligems on your browser to troubleshoot issues or test baseline functionality.

**Key Steps:**

1. Open Chrome Developer Tools → Network tab (`F12` or `Cmd+Option+I` Mac / `Ctrl+Shift+I` Windows)
2. Filter for "intelligems" and refresh the page
3. Right-click `bundle.js` and select "Block Request URL"
4. Refresh page to test without Intelligems running
5. **Important:** Unblock when finished testing

**What to verify:** Intelligems widget disappears when blocked, reappears when unblocked.

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

</details>

## Traffic FAQs

<details>

<summary>How does Intelligems split the traffic and keep users in the same test group for the entirety of the test?</summary>

All of our tests are run as true split tests where we segment your traffic in real time between test variants. Intelligems randomly assigns users to a test group when they visit your site for the first time during a test.

Intelligems then saves a unique string of numbers and letters know as the Intelligems ID in a first-party cookie, which we then use to remember your site visitors and keep them in the same test group(s) for the entirety of your test(s). Because of this, every time they come back to the site on the same browser on the same device, the user will have a consistent experience.

Cookies do expire - when they expire depends somewhat on the browser, since different browsers have different max allowed cookie ages. For example, on Chrome, our cookie life is about 1 year. On Safari (including all iOS browsers), cookies are deleted if the user does not visit the site for 7 days.

</details>

<details>

<summary>How does Intelligems handle customers who switch devices?</summary>

Intelligems randomly assigns users to a test group when they visit your site for the first time during an experience. We then use a cookie to ensure they remain in the same test group every time they come back to the site on the same browser and device.

When a user visits your site on a new device, we cannot rely on that cookie to place them in the same group, so there is a chance they will end up in a different group. That said, in our testing, we have found that less than 1% of typical site traffic may be impacted by switching devices during a test.

We recommend making your customer support team aware of any tests you may be running, and in the rare case that a customer does switch devices and notices a differing price, having a plan of action (such as a discount code) to create a positive customer experience.

</details>

<details>

<summary>What happens to existing visitors if I change the traffic split mid-test?</summary>

Existing visitors are **not** re-bucketed. Intelligems uses sticky bucketing — each visitor is randomly assigned to a test group on their first visit, and that assignment is persisted in a first-party cookie and `localStorage`. Changing the traffic split only affects **new** visitors going forward.

\
Here's what to expect:

* **Previously bucketed visitors stay put** — a visitor already assigned to Group A will continue seeing Group A's experience, regardless of any split changes.
* **New visitors use the new split** — only first-time visitors after the change are distributed according to the updated percentages.
* **Setting a group to 0% stops new visitors from entering that group**, but existing visitors in that group remain there and continue to be counted in analytics.

</details>

## Targeting FAQs

<details>

<summary>Can I filter out blog traffic from my experience(s)?</summary>

Yes! Some brands use their blog pages for SEO. This generates a lot of traffic for their site, but does not result in many conversions or revenue. Because of this, blog traffic can create a lot of noise in analytics, therefore it might be better to filter blog traffic out of your tests to keep your results clean and actionable. If you do not have any UTMs set up for your blog pages, this article will walk you through how you can exclude that traffic from your experience.

**Step 1: Add snippet to theme.liquid file.**

Add the below code to your theme.liquid file directly above your Intelligems JavaScript snippet. An example Intelligems JavaScript snippet is included at the bottom of the snippet below to illustrate where the new snippet should be placed.

```liquid
<script>
if (window.history.pushState && window.location.pathname.includes('blog')) {
                    const newURL = new URL(window.location.href);
                    newURL.search = '?blog=1';
                    window.history.pushState({ path: newURL.href }, '', newURL.href);
}
</script>
<script src="https://cdn.intelligems.io/<your_customer_id>.js"></script>
```

**Step 2: Set up UTM filter.**

Set up the below Audience Targeting on your experience. Note that this will need to be added to **each test that you want to exclude blog traffic**, and **will only exclude that traffic moving forward.**

![](https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-5613a70143eca9f422ec29f647d7bfa8967b59cd%2Fimage.png?alt=media)

</details>

<details>

<summary>How can I force myself into a specific test group?</summary>

You can force yourself into a specific test group by adding the below to the end of your site's URL:

`/?igTg=TEST-GROUP-ID`

where `TEST-GROUP-ID` is the ID for the test group you would like to be forced into. You can find the test group ID by heading to the A/B Tests tab in the Intelligems app, clicking on the three dots / more options menu next to the test you are working on, and selecting "Show Info". This will bring up the experiment ID, as well as the test group ID for each test group. Click on the long ID for the group you'd like to be forced into to copy it to your clipboard.

The final results should look something like this:

`www.mywebsite.com/?igTg=44bae2e6-dbc3-4fc1-a68d-4218ac04f99c`

</details>

<details>

<summary>Will Intelligems remove UTM parameters when a visitor lands on my site and is part of a test?</summary>

No, UTM parameters won't be removed from your URLs by Intelligems! While there are a few test types that involve redirects, such as Theme, Template and Split URL Tests, URL parameters are persisted, and therefore traffic attribution is preserved.

</details>

<details>

<summary>How do I target or exclude new vs. returning customers?</summary>

Targeting new vs. returning customers is a bit tricky because Shopify does not share whether a customer is new or returning with Intelligems until they've placed an order. However, you can analyze your test results by customer type after the fact using the **Customer Type** filter in experiment analytics, which segments results into first-time vs. repeat purchasers. Learn more about experiment filters [here](https://docs.intelligems.io/analytics/experiment-analytics/filters).

If you want to approximate targeting by new vs. returning *visitors* (not customers), there are two options:

The first is to use UTM parameters. Apply the test to users visiting through specific campaigns you use for new customer acquisition. There is a small chance that returning customers could come in through these campaigns.

The second is to use our New / Returning Visitor targeting. This is determined based on whether the user has an Intelligems ID assigned to them. We assign all visitors an Intelligems ID via cookie when they first visit your site. If they already have an ID on a subsequent visit, they're considered returning; if we're assigning them one for the first time, they're considered new. We can only track visits since you installed Intelligems, so if you've recently installed, most visitors will appear as new until the data normalizes (typically \~2 weeks).

Both targeting options can be set up in the Targeting step of test setup, which you can read more about [here](https://docs.intelligems.io/content-testing/targeting#what-is-intelligems-audience-targeting).

</details>

## Uninstalling FAQs

<details>

<summary>Can I remove the Intelligems script once my test is complete?</summary>

While there are technically no issues with removing the Intelligems script from your site once your test is complete, we only recommend doing so in the rare case that the site is experiencing performance issues. Otherwise, we recommend leaving the lightweight script installed in your theme as testing shouldn't be one-and-done. We find that stores that approach testing with a roadmap and plan are the stores that unlock the most value. If you are stuck on coming up with an idea on what to test next, check out [this article!](/general-features/common-use-cases)

Additionally, keeping the Intelligems script installed on your store allows Intelligems to continue assigning users an Intelligems ID - this will make New vs. Returning Visitor targeting much more powerful.

If you do need to remove the Intelligems script from your site, delete or comment it out in your theme.liquid file. For Shopify Plus customers, this may also be located in your checkout.liquid file. The JavaScript to remove or comment out will look something like this:

```
<script src="https://cdn.intelligems.io/<your_customer_id>.js"></script>
```

</details>

<details>

<summary>How do I uninstall Intelligems?</summary>

✨ We'd hate to see you go! If you plan on testing again any time in the future, we recommend moving to a Pause Plan instead of uninstalling. This will allow you to keep the integration live so it's easy to start a new test down the road, as well as maintain access to the analytics from any tests you've already run. If this sounds like a better option, you can do this from the Settings page of the Intelligems app. If you don't see the option there, please reach out to <billing@intelligems.io> to get set up with a Pause Plan.

{% hint style="info" %}
Note: We do *not* recommend uninstalling and reinstalling the app as a technical troubleshooting step, as this will cause you to be charged again for the new installation. If you're experiencing an issue with the app or with a test, please reach out to <support@intelligems.io> for assistance.
{% endhint %}

**Step 1: Stop any tests.**

Confirm that you've stopped any tests or campaigns from within the app! You'll want to make sure you also rolled out the winners while doing this - see more details on how to end a [Price Test](https://help.intelligems.io/how-to-end-price-tests) and a [Shipping Test](https://help.intelligems.io/ending-a-shipping-test) at each of those links.

**Step 2: Uninstall the app via Shopify.**

Follow Shopify's steps [here](https://help.shopify.com/en/manual/apps/uninstalling-apps#uninstall-app) to uninstall the Intelligems app - this will cancel billing.

**Step 3: Remove Intelligems JavaScript.**

During the integration, you or the Intelligems team added JavaScript as a source into your theme.liquid file - you can now remove the Intelligems script from your site. To do so, delete or comment it out in your theme.liquid file. For Shopify Plus customers, this may also be located in your checkout.liquid file. The JavaScript to remove or comment out will look like this:

<img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-56b581da7daa58252fa1d1c8f05b4455592a9d1f%2FScreenshot%202024-02-06%20at%203.50.14%20PM.png?alt=media" alt="" data-size="original">

❗Note that if you do not complete this step, we will continue to append an igId onto your orders in the 'Additional Details' section in Shopify. Customers will not see this, and it will not cause any issues, but may cause confusion for your team if they do not know where it is coming from!

**Step 4: Remove Checkout Script&#x20;*****or*****&#x20;manage Duplicate Products, if applicable.**

❗This step is only applicable if you have run Price Tests!

***If you are on Shopify Plus and ran your test using a Checkout Script,*** you can now stop that script by either unpublishing the entire Checkout Script (if nothing else is in it), or by removing the Intelligems script if you use the Checkout Script for anything else.

***If you are not on Shopify Plus and ran your test using Duplicate Products,*** confirm those products are archived. See more details on managing Duplicate Products from previous tests [here](https://help.intelligems.io/can-i-delete-duplicate-products-once-a-pricing-test-is-over).

**Step 5: Remove Intelligems as a shipping rate provider, if applicable.**

❗This step is only applicable if you have run Shipping Tests!

Confirm that Intelligems is removed as a shipping rate provider. You can check this by going to your Settings in Shopify → Shipping and delivery → Manage by General Shipping Rates. Once you're there, confirm that 'Intelligems Shipping (Rates provided by app)' is not listed anywhere. If it is, please delete it using the three dots to the right and add your own rate to replace it if needed.

**Step 6: Send us your feedback!**

We are always looking to make improvements to our platform and processes! If there is something we could have done better, you have feature requests, or you just want to chat all things ecomm, please don't hesitate to reach out to <support@intelligems.io>.

</details>


# Billing FAQs

## **General Billing FAQs**

<details>

<summary>When will I be charged for my subscription?</summary>

When will I be charged for my subscription? You can find your current billing period under Settings > Billing > Manage Plans > Current Period. Keep in mind that Shopify may charge you on a day other than the first or last day of the billing period to align with the rest of your Shopify bills. This charge date is controlled by Shopify; see their documentation [here](https://help.shopify.com/en/manual/your-account/manage-billing/billing-charges/types-of-charges/third-party-charges/app-charges?utm_source=chatgpt.com) for more info.

</details>

<details>

<summary>Why is the pricing I see in the app different from Shopify’s listing?</summary>

Pricing is based on your plan tier and your store's monthly order volume. Shopify limits how we can display our pricing on the app store listing, so it always shows the lowest tier (0 to 1,000 monthly orders), but we've done our best to make it clear that pricing is variable based on store volume on our [Pricing Page](https://www.intelligems.io/pricing/monthly#annual). Order volume includes one-time purchases and first time subscription orders. If your store’s order volume does not align with your billed amount, please reach out to <billing@intelligems.io> for assistance.

</details>

<details>

<summary>Why was I charged if I just installed the app?</summary>

We offer one trial per store upon first install. If you were charged immediately without receiving a trial, this likely means the app has been installed on your store previously. If you encounter setup issues after your first install, please reach out to <support@intelligems.io> for assistance and avoid uninstalling the app, as this will forfeit your trial eligibility. If this is genuinely your first installation and you didn't receive a trial, please contact <billing@intelligems.io> and we’ll make sure to give you one!

</details>

<details>

<summary>What happens if my payment fails?</summary>

Your plan will display as Past Due and you’ll lose access to your features until payment is received. We’ll automatically retry the charge a few times, but after multiple failed attempts, your plan will be cancelled.

</details>

<details>

<summary>I reinstalled the app but I can’t approve my plan - what can I do?</summary>

Reach out to <billing@intelligems.io> immediately for assistance. Please avoid uninstalling the app as a way to fix perceived bugs or errors; contact <support@intelligems.io> instead. In most cases, it's either not actually a bug or it's something we can easily resolve. Uninstalling the app automatically cancels your plan, so if you uninstall and reinstall while on an active plan, you won't be able to activate or approve a new plan.

</details>

<details>

<summary>Can I create or edit tests before selecting a plan?</summary>

Yes. You can create and edit tests before selecting a plan or during your 14 day free trial — no plan selection is required for those actions. However, you cannot *activate* (run) a test until a plan has been selected. You will not be charged until after your trial period ends.

</details>

## Upgrades, Downgrades & Cancellations

<details>

<summary>What does the Pause Plan include?</summary>

We offer a Pause Plan at $9/month, which gives you continued access to all of your data and previous tests while your plan is on hold. Customers on a Pause Plan are not able to run any tests, personalizations or access Sitewide Analytics.

</details>

<details>

<summary>How do I pause or cancel my subscription?</summary>

You can pause or cancel directly in the app by navigating to Settings > Billing > Manage Plans and selecting either Pause Plan or Cancel Plan button. The pause or cancellation will take effect at the end of your current billing cycle.

</details>

<details>

<summary>How do I reactivate after pausing?</summary>

You can reactivate your plan by navigating to Settings > Billing > Manage Plans and selecting the Upgrade button. If you don't see this button in your settings, please reach out to <billing@intelligems.io> and we'll reactivate your plan for you!

</details>

<details>

<summary>I can’t cancel within the app - what can I do?</summary>

If you don’t see the Pause Plan or Cancel Plan buttons in the app, please email <billing@intelligems.io> and we’ll be happy to process your request.

</details>

<details>

<summary>Can I downgrade to a lower plan mid-cycle?</summary>

No, downgrades take effect at the end of your billing cycle. You can downgrade by clicking the Downgrade Plan button under your desired plan in the Billing settings, or by emailing <billing@intelligems.io>.

</details>

<details>

<summary>Can I upgrade to a higher plan mid-cycle?</summary>

Yes, upgrades take effect immediately since you may need access to higher-tier features right away. Our system will charge you only the prorated amount for the remainder of your billing cycle. You can upgrade by clicking the Upgrade Plan button under your desired plan in the Billing settings, or by emailing <billing@intelligems.io>.

</details>

## Refunds & Credits

<details>

<summary>What is your credit &#x26; refund policy?</summary>

We strive to provide an excellent experience across both our platform and support. In cases where our service does not perform as intended, we may issue a credit or refund at our discretion. Refunds are available for accidental charges, including unintended upgrades or reactivations. Please note that Shopify transaction fees and third-party processing fees are non-refundable, as those fees are collected directly by the providers.

Like other subscription services, Intelligems plans are cycle-based rather than usage-based. Refunds for unused time are not provided. To avoid unwanted charges, please pause or cancel your plan before your next renewal date. Refund requests must be submitted within 3 days of the relevant charge- we're unable to process requests for prior billing cycles.

</details>

<details>

<summary>How can I request a credit or refund?</summary>

You can request a credit or a refund by emailing <billing@intelligems.io>. We kindly ask that you submit your request within 3 days of the relevant charge.

</details>

<details>

<summary>Do you offer prorated refunds when downgrading plans?</summary>

Downgrades take effect at the end of your billing cycle, similar to cancellations. You’ll continue to have access to your current plan for the remainder of your cycle, and the downgrade will take effect on your next billing date.

</details>

<details>

<summary>What happens if I cancel mid-billing cycle?</summary>

Cancellations take effect at the end of your current billing cycle. When you cancel, you’ll retain access to your plan for the remainder of the cycle, after which your plan will be cancelled and you will not be charged again, unless you decide to reactivate in the future.

</details>

## Agency Managed Billing

<details>

<summary>How can I access the brand management page?</summary>

The Brand Management page gives agency administrators control over which brands are active on your Intelligems subscription. It is available for any agency users on agency managed billing, and from this page, you can add brands to a plan, switch a brand between plans, and remove brands from your subscription.

To access brand management, go to Settings > Brand management.

The Brand Management page has two main sections:

* Subscription plan cards (top): Shows the plans included in your agency subscription, with usage details for your current plan and the option to open a ticket to add new plans. Also includes the date that your billing and usage resets, and a link to access your full billing history and invoices by clicking Manage billing in Stripe above the cards.
* All Brands table (bottom): Lists every brand currently on your subscription, along with its order volume, current plan, status, and management options.

</details>

<details>

<summary>How can I upgrade or downgrade a brand?</summary>

Use this flow to move a brand from one plan to another within your subscription:

1. Go to Settings > Brand management.
2. Find the brand you want to change in the All Brands table.
3. Click Manage Plan next to that brand.
4. Select the plan you want to move the brand to. Only plans already included in your subscription will be shown.
5. Confirm the change. The brand's Current Plan column will update immediately for upgrades, and at the end of the billing period for downgrades.

</details>

<details>

<summary>How can I remove a brand from my agency subscription?</summary>

Use this flow to remove a brand from your agency subscription entirely:

1. Go to Settings > Brand management.
2. Find the brand you want to remove in the All Brands table.
3. Click Manage Plan next to that brand.
4. Select Remove brand.
5. Confirm the removal. The brand will be removed from your plan at the end of the billing period.
6. If you'd like to also remove access from this brand, you can do so via the Manage Plan menu after you've removed them from your plan.

</details>

<details>

<summary>How can I add a brand to my agency subscription?</summary>

Use this flow to add a brand that you manage to one of the plans in your subscription:

1. Go to Settings > Brand management in an account that is already part of your agency subscription.
2. Click the + Add Brand button in the top-right corner of the All Brands table.
3. A list of brands will appear — these are brands you have already logged into via Shopify. Select the brand you want to add. *If the brand you want to add is not showing in the list, you need to log into that brand's Intelligems account via Shopify first, then return to this page and try again.*
4. Choose which plan to add the brand to. Only plans that are already part of your subscription will be available.
5. Confirm the selection. The brand will appear in the All Brands table with an Active status.

</details>

<details>

<summary>How can I add or remove a plan to my agency subscription?</summary>

If you want to add a plan type that is not currently part of your subscription (for example, adding Plus or Blue to a Core-only subscription), you cannot do this directly from the Brand Management page. Instead:

1. Go to Settings > Brand management.
2. Find the plan card you want to add at the top of the page (for example, Plus or Blue).
3. Click Add this plan inside that card.
4. Fill out the request form that appears.
5. The Intelligems team will reach out to get you set up on the new plan.

*Note: Adding a new plan type is handled by the Intelligems team and may take 1–2 business days.*

</details>


# Content Experiences Overview

A Content Experience changes what visitors see on your site: copy, images, layout, even your entire theme. Every experience starts the same way: you build the change once. From there, you decide whether to run it as a Test (measured against a control group) or a Personalization (always-on for a targeted audience). New to that distinction? See how [Tests and Personalizations](/getting-started/tests-vs.-personalizations) work.

### The 5 experience types

| Type                      | What it's for                                |
| ------------------------- | -------------------------------------------- |
| **Content Edits**         | Change headlines, copy, and on-page elements |
| **Redirects**             | Send traffic to a different URL by audience  |
| **Styles and Javascript** | Inject custom CSS and JS safely              |
| **Theme Change**          | Swap the live theme for a variant            |
| **Template Change**       | Test alternate page templates                |

They can also be used in conjunction with one another. One experience can carry a Content Edit and a Styles & Javascript change together.

{% hint style="info" %}
Content is included in every Intelligems plan, so all five types are available to you no matter which other modules you have.
{% endhint %}

Each type has its own setup guide below, covering both the Test and Personalization path in one place:

* [How to Set Up a Content Edit](/content-experiences/content-experiences-overview/how-to-set-up-a-content-edit-experience)
* [How to Set Up a Redirect ](/content-experiences/content-experiences-overview/how-to-set-up-a-redirect-experience)
* [How to Set Up a Styles & JavaScript ](/content-experiences/content-experiences-overview/how-to-set-up-a-styles-and-javascript-experience)
* [How to Set Up a Theme Change Experience](/content-experiences/content-experiences-overview/how-to-set-up-a-theme-change-experience)
* [How to Set Up a Template Change Experience](/content-experiences/content-experiences-overview/how-to-set-up-a-template-change)

Once you've built one, the [QA Checklist](/content-experiences/content-test-qa-checklist) covers what to check before you start, and the [Content Experiences FAQs](/content-experiences/content-testing-faqs) answer the questions that come up most. For test ideas, see [Content Test Common Use Cases](/content-experiences/content-experiences-overview/content-test-common-use-cases) or the full [capability list](/what-you-can-test).


# How to Set Up a Content Edit Experience

A Content Edit changes copy, images, colors, or other on-page elements using Intelligems' Visual Builder. It's the best fit for smaller, targeted changes (a headline, a button color, a section swap) rather than a full theme or template overhaul.

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

{% hint style="warning" %}
Doesn't work on headless storefronts. The visual editor needs a live theme to attach to.

On Hydrogen, Remix, or another headless setup? Use the [`@intelligems/headless`](https://headless.intelligems.io/) SDK instead (see Developer Resources > Headless Storefronts).
{% endhint %}

### 1. Create the experience

From the Intelligems app, click **Create New Experience**, and select **Content Edit**.

### 2. Choose: Test or Personalization

* **Running it as a Test?**
  * Fill in a Test Name and Description — internal only, but tests can stay live for weeks, so the more detail here, the more your future self will thank you.
  * Click the **+** button to create a group for each variation (2–5 groups) and name them.
  * Use the slider to set the traffic split for each group.
  * Click **Next Step** when you're done.
  * Note: the more groups you add, the longer it'll take to reach statistical significance.
* **Running it as a Personalization?** Skip groups entirely. You're building one always-on version for your targeted audience.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2F4JAF6NMcZTzsCAjb3LPz%2FPersonalizations%20or%20Tests%20for%20helpcenter.gif?alt=media&amp;token=d7aa9322-6bdd-4566-96ae-d6380eed371b" alt=""><figcaption></figcaption></figure>

### 3. Make your content edits

In the Modifications tab, select **Content Edits**, then [**Visual Builder**](https://docs.intelligems.io/general-features/visual-builder/ai-visual-builder#editing-ai-generated-changes). This opens your live site where you can edit using our AI-powered Visual Builder. Describe the changes you want, and they'll be applied to your site.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FmvGQWxpRc4d1nwE0t0Lh%2FVisual%20Builder%20content%20edits.gif?alt=media&amp;token=f0f0d338-75ba-4976-b0e3-81d43040fc2f" alt=""><figcaption></figcaption></figure>

You can also make changes manually:

* Click **Select** in the top right of your screen.
* Hover over the page and click any element to select it (it highlights in blue).
* Edit its text, image, or style in the panel that appears.
* Click **Apply** to save each edit, and repeat for any additional elements.
* For more precise targeting, paste a CSS selector directly instead of clicking.

{% hint style="warning" %}
Onsite Edits apply at the selector level, and the same selector can appear on multiple pages. Double-check that your edit doesn't unintentionally show up elsewhere on the site.
{% endhint %}

To move to a different page on your site, click **Navigate** in the top right of your screen.

&#x20;Click **Save** in the top right once you've finished adding all your edits.

### 4. Set targeting (optional)

For a **Test**, a visitor's group is assigned on their first visit and stored via a first-party cookie, so they'll see the same variant on repeat visits during the test.&#x20;

For a **Personalization**, everyone who matches your targeting sees it every time.

Either way, you can narrow who's included in several ways, all under the Audience option unless noted:

* Currency and country targeting, to limit to a single currency and/or list of countries
* UTM parameters
* JavaScript expressions
* Device type (mobile or desktop)
* New vs. returning visitors
* [**Mutually Exclusive Tests**](/general-features/targeting/mutually-exclusive-experiments) prevent visitors from being targeted by related experiments at the same time, to avoid interaction effects

You can learn more about targeting [here](https://docs.intelligems.io/content-testing/targeting)!

### 5. Configure analytics

What you configure here depends on which path you chose in step 2:

* **Personalization?** Add any [**Custom Metrics**](https://docs.intelligems.io/analytics/custom-events/using-custom-events-in-experiment-analytics) you want to track, beyond the built-in ones.
* **Test?** Choose your **Key Metrics** and **Primary Metric** to measure against your control group, plus any [**Custom Metrics**](https://docs.intelligems.io/analytics/custom-events/using-custom-events-in-experiment-analytics).

### 6. Preview and activate

Preview your changes on the live site, then activate.


# How to set up a Redirect Experience

A Page Redirect (or split URL) sends visitors to a completely different URL instead of changing content on the existing page. It's the best fit for bigger structural changes, comparing two fundamentally different page designs, layouts, or templates, rather than something achievable with targeted edits alone.

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

### 1. Create the experience

From the Intelligems app, click **Create New Experience** and select **Redirects**.

### 2. Choose: Test or Personalization

* **Running it as a Test?**
  * Rename the Test and add a Description. This is optional and internal only, but tests can stay live for weeks, so the more detail here, the more your future self will thank you.
  * Click the **+** button to create a group for each variation (2–5 groups) and name them.
  * Use the slider to set the traffic split for each group.
  * Click **Next Step** when you're done.
  * Note: the more groups you add, the longer it'll take to reach [statistical significance](/analytics/overview/experiment-analytics/statistical-significance).
* **Running it as a Personalization?** Skip groups entirely. You're building one always-on version for your targeted audience.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2F4JAF6NMcZTzsCAjb3LPz%2FPersonalizations%20or%20Tests%20for%20helpcenter.gif?alt=media&amp;token=d7aa9322-6bdd-4566-96ae-d6380eed371b" alt=""><figcaption></figcaption></figure>

### 3. Set up your Redirect

Choose between two redirect types, depending on how many URLs you're targeting:

* **Simple Redirect** is best for a small number of specific URLs. Enter your **Origin URL**, then enter a destination URL for each test group. Create a separate Simple Redirect for each origin URL you want to redirect from.
* **Advanced Redirect** is best for many URLs that share a pattern. Choose a matching option (matches exactly, contains, ends with, matches regex) and enter a value to match against. All matching conditions are case-insensitive.
  * For most product redirects, use ends with rather than contains, so you don't accidentally catch similar product URLs (like matching both `/products/product-abc` and `/products/product-abc-plus`).
  * Then choose a redirect type: **Replace Full URL** (enter a full destination URL for each group) or **Replace Matching Text** (enter find and replace values).

<details>

<summary><strong>Advanced Redirect Matching Option Examples</strong></summary>

* **matches exactly**: `https://yourstore.com/en-us/collections/product-a`
* **contains**: `sofa`
* **ends with**: `/products/product-a` (evaluates the URL path only, ignoring query parameters, so `https://yourstore.com/products/product-a?utm_source=abc` still matches)
* **matches regex**: `^.*\/[a-zA-Z]{2}-[a-zA-Z]{2}\/pages\/abc$` (matches a pattern like `yourstore.com/en-US/pages/abc`)

</details>

Then, decide how often the Redirect should fire:

* **Redirect One Time** (default) sends a visitor to the destination once, then leaves them on the origin URL for future visits.
* **Redirect Every Time** sends a visitor to the destination on every visit to the origin URL.

Use the Redirect Checker to test how a URL will resolve for each test group before you go live.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2F4YEeAhSggZqjTvdCKYFX%2Fredirect%20gif.gif?alt=media&amp;token=70716abb-0160-4c13-af00-db3cfe570611" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Note: Redirect tests only work within the same domain (e.g., [`brand.com`](http://brand.com) → [`brand.com/new-page`](http://brand.com/new-page)). Redirecting between different domains (e.g., [`brand.com`](http://brand.com) → [`otherbrand.com`](http://otherbrand.com)) isn’t currently supported. If you run several domains, you can add each one under Settings → Domain Settings and run redirect tests within each domain. Subdomains are detected automatically and don’t need to be added.
{% endhint %}

{% hint style="warning" %}
Note: If your Origin URL is a page hosted outside of Shopify (for example, a headless page or one built with a tool like Builder.io), visitors will likely see that page flash on screen, sometimes for a few seconds, before being redirected. This happens because Intelligems can only fire the redirect after those pages have already started loading, instead of before they're displayed. For the smoothest experience, use a Shopify-hosted page as your Origin URL. This only affects the Origin URL: redirecting *to* a page hosted outside of Shopify works as expected.
{% endhint %}

### **4. Set targeting (optional)**

For a Test, a visitor's group is assigned on their first visit and stored via a first-party cookie, so they'll see the same variant on repeat visits during the test.

For a Personalization, everyone who matches your targeting sees it every time.

Either way, you can narrow who's included in several ways, all under the [Audience](/general-features/targeting/audience-targeting) option unless noted:

* UTM parameters
* JavaScript expressions
* Device type (mobile or desktop)
* New vs. returning visitors
* [Mutually Exclusive Tests](/general-features/targeting/mutually-exclusive-experiments) prevent visitors from being targeted by related experiments at the same time, to avoid interaction effects

### **5. Configure analytics**

Choose whether analytics should default to only orders containing specific products (helpful if your redirect targets a particular PDP), or orders containing any products in your shop. You can always change this later in your Analytics filters.

What you configure next depends on which path you chose in step 2:

* Personalization? Add any [Custom Metrics](/analytics/overview/custom-events) you want to track, beyond the built-in ones.
* Test? Choose your Key Metrics and Primary Metric to measure against your control group, plus any [Custom Metrics](/analytics/overview/custom-events).

### **6. Preview and activate**

Preview your changes on the live site, then activate. Run through the [QA Checklist](/content-experiences/content-test-qa-checklist) first if this is your first redirect.

If visitor counts come in lower than you expected once it's running, see [Troubleshooting Low Visitor Counts in a Redirect Test](/content-experiences/content-experiences-overview/how-to-set-up-a-redirect-experience/troubleshooting-low-visitor-counts-in-a-split-url-test).


# Troubleshooting Low Visitor Counts in a Redirect Test

You launched a Redirect test and the visitor count looks lower than you expected. This guide walks through the most common causes and what to check for each, in the order we recommend investigating.

Before you start, it's worth setting expectations on what your visitor count should and shouldn't be compared against.

**Ad platform clicks are not a useful comparison.** Ad platforms count all clicks, including bots, repeat impressions, and clicks where the page never fully loaded. Intelligems only counts unique visitors who actually landed on the Origin URL and were bucketed into a test group. These numbers will never line up and the gap can be very large, even on a perfectly healthy test.

**Outside analytics tools (Shopify Analytics, GA4, etc.) are also not a reliable comparison for Split URL tests.** Because the redirect on a Split URL test fires client-side, these tools often attribute page views inconsistently between the origin and variant pages, and many of them undercount or miscount visitors who bounce quickly. We strongly recommend relying on Intelligems' own reporting to analyze Split URL tests rather than trying to reconcile against an outside tool. More on why in our [Analytics FAQ](https://docs.intelligems.io/analytics/analytics-faqs#why-doesnt-the-data-align-with-shopify-or-google-analytics).

If after setting that expectation your visitor count still looks off, work through the checks below.

## 1. Confirm the Intelligems script is loading on the Origin URL

If the Intelligems JavaScript isn't firing on your Origin URL, no visitors can be bucketed into the test. This is the most common cause of zero or very low visitor counts.

**How to check:** Open your Origin URL in an incognito window, open the browser console (right click → Inspect → Console), and type:

```
window.igData
```

If you see a populated object with `user`, `campaigns`, `personalizations`, and other fields, the script is loading correctly. If you see `undefined`, the script isn't on the page.

> `window.igData` console output (the expanded object in the browser console)

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FKNUcJf75sAsernMBMNN6%2Fimage.png?alt=media&amp;token=1bd508a4-af6a-4955-aa77-58d301f67006" alt=""><figcaption></figcaption></figure>

**Most common cause:** the Origin URL is a custom landing page built with a page builder app (PageFly, Replo, GemPages, Shogun, etc.). Page builders render pages through their own layout file rather than `theme.liquid`. If the Intelligems script is only installed in `theme.liquid`, it won't load on pages rendered by the page builder.

To fix this, copy your Intelligems script from the Intelligems app (Settings → Theme Script → Copy Script) and paste it into the `<head>` of your page builder's layout file in Shopify.

> Settings → Theme Script in the Intelligems app (showing the Copy Script button)

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2F68wRfvgsf0ZspFd03WOe%2Fimage.png?alt=media&amp;token=ebadf75d-71a3-4252-8be7-dcd5c7a962bb" alt=""><figcaption></figcaption></figure>

See [Page Builder](https://docs.intelligems.io/getting-started/general-faqs#what-page-builders-does-intelligems-integrate-with) for page-builder-specific notes (Replo, GemPages, Shogun, PageFly, Pagedeck, Funnelish, Webflow, [Builder.io](http://builder.io)).

## 2. Confirm the test is bucketing visitors

Even if the script is loading, the test itself may not be assigning visitors to a group. In the same browser console on your Origin URL, type:

```
window.igData.user.getTestGroup('YOUR-EXPERIMENT-ID')
```

You can find this information by clicking on the three dots in the top right of your test > Show Info > clicking on the 12 digit ID next to the line that says "Express Payment Off For Google Analytics:".

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FZu6u91GPwTzyLQibhyt4%2Fimage.png?alt=media&amp;token=2a21665f-20b9-414e-9a93-d90e0d8ed767" alt=""><figcaption></figcaption></figure>

If this returns a group object with a name (like `Control Group` or your variant name), the test is bucketing correctly.

> `getTestGroup` console output showing a Control Group object

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2F5Ovcv6Fs0YbCkYoUX9Ag%2Fimage.png?alt=media&amp;token=49386c2d-ed6e-40a8-a842-08049cb803d8" alt=""><figcaption></figcaption></figure>

If it returns `null` or `undefined`, the visitor isn't being enrolled in the test, even though the script is loading. The most likely reasons are covered in the next two sections.

## 3. Check for other live tests using the same Origin URL

If you have more than one live Split URL test using the same Origin URL, each visitor's experience on that page is being split between the tests. This will reduce the effective visitor count in each test and muddy the data for both.

**How to check:** In the Intelligems app, look at your list of active A/B tests and confirm no other Split URL test is using the same Origin URL.

**How to fix:** You have two options:

1. End one of the overlapping tests so only one test uses that Origin URL at a time. This is the cleaner option and gives you the most accurate data.
2. Use competing targeting to split traffic between the tests so each visitor only enters one of them. This works best with non-overlapping audience filters, for example:
   * **Basic:** run one test on mobile only and the other on desktop only
   * **More complex:** scope by UTM, such as Test A targeting `utm_source IS example1` and Test B targeting `utm_source IS NOT example1`

**One more thing to check if you're using a page builder (Webflow, GemPages, PageFly, Replo, Shogun, etc.):** even when everything above looks fine, a third-party app or the page builder's own configuration can sometimes block the tracking event from being sent back to Intelligems. The visitor gets bucketed correctly but is never counted. If you suspect this, open your Origin URL in an incognito window, open DevTools → Network tab, filter for `track`, and reload. The request should fire and return a 200. If it's stuck pending, missing, or erroring, reach out to your page builder's support to investigate.

## 4. Check your audience and targeting filters

Audience filters reduce the pool of eligible visitors. If you've added targeting that's narrower than you intended, your visitor count will look low.

In your test's setup under the Targeting tab, review each of the following. If any are set, only visitors matching those conditions will enroll in the test:

* **Country** — limits the test to specific countries
* **Device Type** — limits to mobile or desktop only (tablet traffic is grouped with mobile)
* **New or Returning Visitors** — limits to first-time or repeat visitors only
* **Source Sites** — limits to specific traffic sources (Email, Paid Social, Organic Search, etc.)
* **URL Parameters / UTMs** — limits to visitors arriving with specific UTM values
* **Landing Page URL** — limits to visitors who entered the site through a specific page
* **Referring Domain** — limits to visitors arriving from a specific domain
* **Klaviyo Segment** — limits to visitors in a specific Klaviyo segment
* **JavaScript Expression** — a custom expression that must evaluate to `true` for the visitor to be included
* **Cookie** — limits to visitors with a specific cookie set

If a filter is in place that doesn't match the audience your ad campaign is actually driving (for example, your test is targeting `utm_source=meta` but the live ad is using `utm_source=facebook`), enrollment will look low even though traffic is hitting the page. Full details on each option in our [Audience Targeting guide](https://docs.intelligems.io/general-features/targeting/audience-targeting).

## 5. Verify the destination URL loads correctly

If the Origin URL works but the Destination URL returns a 404, visitors in the test group will land on a broken page. The visitor is still enrolled in the test, but the experience itself is broken, which will hurt both your data quality and the customer experience.

**How to check:** Visit the Destination URL directly in an incognito window and confirm it loads.

**Also worth checking on the Origin URL:** if something else on the page is redirecting visitors before Intelligems can enroll them (a redirect set up in Shopify, your theme, or a third-party app), those visitors are being pulled out of the test before they can be bucketed. To rule this out, you can temporarily block the Intelligems script and load the Origin URL to see what happens:

1. Open your Origin URL in an incognito window
2. Right click anywhere on the page and choose **Inspect** to open DevTools
3. Click the **Network** tab at the top of DevTools
4. In the filter box, type `intelligems`
5. Right-click on the network request with the name of `bundle.js` and choose **Block request domain**
6. Reload the page

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FRdvJJnK5o1Lhx9eipJHC%2Fimage.png?alt=media&amp;token=db67d971-944c-42f5-9124-b89b5ff446f9" alt=""><figcaption></figcaption></figure>

If the page still redirects you somewhere on its own after Intelligems is blocked, that confirms another redirect is firing first. You'll need to find and remove it (check your Shopify URL redirects, your theme code, and any installed apps) before the test can work correctly.

If the page stays on the Origin URL after you block Intelligems, this isn't the issue and you can move on.

## 6. Compare against the right baseline

If everything above checks out and visitor counts still look low, the issue may not be with the test at all. The most common version of this is comparing Intelligems visitor counts against the wrong number.

To rule this out, gather the following before drawing any conclusions:

**Your analytics tool (Shopify Analytics, GA4, etc.):**

filter to your Origin URL for the same date range as the test, and check the number of sessions and users. This gives you a sense of how much traffic is actually reaching your landing page. The numbers won't match Intelligems exactly, but they'll give you a much closer baseline than your ad platform's click count.

* As a rough sanity check: if your analytics tool shows around 1,000 sessions on the Origin URL and Intelligems is showing 50 visitors in the test, that's a gap worth investigating. A smaller gap (say, 1,000 sessions vs. 700 to 900 test visitors) is normal and expected.
* Keep in mind that any audience filters you've set on the test (see Section 4) will narrow the eligible pool further, so factor those in before comparing the numbers.
* **Your ad platform (Meta, Google Ads, TikTok, etc.):** confirm that the destination URL set in the live ad creative exactly matches your test's Origin URL. UTM parameters are fine, but the path (`/pages/your-landing-page`) must match. Click-tracking domains, link shorteners, or redirect services in the middle can sometimes change the final landing path. Open the ad in a clean browser and confirm the URL in the address bar after the page loads is your Origin URL.

If the analytics tool baseline shows traffic landing on the Origin URL in line with what you expected, but Intelligems is recording far fewer visitors, that's a real discrepancy worth escalating.

## Still seeing low visitor counts after these checks?

If all of the above check out and your visitor count still looks off, reach out to our support team through the in-app chat in the bottom-right corner of the Intelligems app, or by emailing <support@intelligems.io>. Please include:

* Your experiment ID
* Screenshots from your analytics tool (Shopify Analytics, GA4, etc.) showing sessions and users for the Origin and Destination URLs, matching the date range of the test
* Screenshots from your ad platform showing the live ad creative with the destination URL set to your Origin URL
* Approximate expected vs. actual visitor counts


# How to set up a Styles and Javascript Experience

A Styles & JavaScript experience injects your own CSS and JavaScript for a chosen group of visitors, so you can find out whether a change lifts conversion before you commit it to your theme.

CSS lets you hide buttons or text, change layouts and spacing, swap backgrounds, or change your color palette and fonts. JavaScript lets you pop up messages, change button behavior, send information elsewhere, and a good deal more. Nothing you do here touches your live theme, and nothing needs a developer to deploy it.

You build the change once, then choose how it runs.

{% hint style="info" %}
**You don't always need a Styles & JavaScript experience to write CSS.** Every experience carries the same Styles & JavaScript editor, whichever type you picked. Restyling the price block during a Pricing experience, or the shipping row during a Shipping experience, belongs inside that experience rather than in a second one running alongside it. Build a Styles & JavaScript experience when the code *is* the change you're testing.
{% endhint %}

### **1. Pick the experience type**

On the **Content** page, click **New Content Experience** and choose **Styles & JavaScript**.

### **2. Choose how it runs**

Intelligems asks how you want to run the experience.

| Choice                       | What happens                                                                                                                             |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| **Run a Test**               | Visitors are split between groups, each group gets its own code, and results show which version lifts conversion and profit per visitor. |
| **Create a Personalization** | Your code shows to everyone who matches your targeting, with no group held back for comparison.                                          |

If you're not sure, start with a test. You can roll the winner out later.

### **3. Name it, if you want to**

Intelligems names the experience for you from the type and the date, like `Styles & JavaScript Test · Aug 6`. You don't have to change it.

It's worth changing anyway. The name is internal, and tests can stay live for weeks, so a name that says what the code does saves your future self the guesswork.

1. Hover the experience name at the top of the page.
2. Click the pencil.
3. Enter a **Name**, and a **Description** if it helps.
4. Click **Confirm**.

### **4. Set up your test groups**

Running a Personalization? Skip groups entirely. You're writing one set of code for your targeted audience.

For a test, the **Test Groups** tab starts you with a Control Group and one variant, split 50/50. The Control Group gets no injected code, so it sees your site as it is today.

* Click **+** to add another group, one per version of the code you want to compare.
* Click the pencil next to a group name to rename it.
* Drag the slider to change how traffic divides.

The more groups you add, the longer the test takes to reach statistical significance.

### **5. Write your CSS and JavaScript**

Open the **Modifications** tab.

**In a test,** the **Styles & JavaScript** section is at the bottom. Use the dropdown at the top to pick which test group you're editing. Each group gets its own code.

**In a personalization,** click **+ Add modification**, choose **Styles & JavaScript**, then **Add modification** again. There's no group dropdown, because everyone who matches your targeting gets the same code.

#### **CSS Styles**

Start on the **CSS Styles** tab. To style an element you need its classname, which you can find with your browser's inspector.

{% hint style="success" %}
Not comfortable writing CSS? Click **Generate with AI**, describe the change you want in plain English, and Intelligems writes it for you. You can edit whatever it produces.
{% endhint %}

For larger changes across a page, the [Visual Builder](/general-features/editors/visual-builder) lets you click an element instead of hunting for its selector, and it can edit CSS, JavaScript, and HTML in the same session.

#### **JavaScript**

Switch to the **JavaScript** tab and enter the code you want injected for the selected group.

**JavaScript Injection Timing** controls when your code runs. New experiences default to **Immediately**.

* **Immediately**: injected as soon as possible, loading at the same time as the rest of your content. Ideal for critical code that needs to run without delay.
* **After Page Load**: injects once the page's content has fully loaded and is ready to use, after the DOM is loaded. Great for scripts that rely on the page's structure.
* **Delay**: holds injection for a set time. A delay of 1 to 2 seconds is worth choosing for non-essential scripts, because it keeps them from competing with the rest of the page for load time.

### **6. Add targeting, if you need it**

By default your code runs for every visitor in the group, on every page where the selectors match. The [**Targeting**](/general-features/targeting) tab narrows that by device, new or returning visitor, traffic source, country, currency, page, or product.

[Page Targeting](/general-features/targeting/page-targeting) is the one to reach for most often here. Scoping a PDP-only style change to product pages keeps it from firing on your collection and cart pages, where the same classname may appear on something you didn't mean to touch.

### **7. Configure analytics**

On the **Configure Analytics** tab, choose up to seven Key Metrics for the front page of your results and mark one as **Primary**. Revenue per Visitor is the default. Profit per Visitor is the better primary metric if you've uploaded COGS, since it accounts for margin rather than top-line revenue.

{% hint style="warning" %}
[Custom metrics](/analytics/overview/custom-events) have to be added before you start, and they can't be backfilled once traffic is running. This matters more here than on other types: if your JavaScript adds a button or a module, a click event on it is often the only way to tell whether anyone used the thing you built.
{% endhint %}

At the bottom of the tab, choose how orders count toward your results: all orders, or only orders containing certain products. You can change this later.

### **8. Preview, then start**

Use the **Preview** tab to check each group on your live site before a visitor sees the code. Injected CSS and JavaScript is the one modification type where a small mistake can break a page for a whole group, so check the pages your selectors reach and not only the one you were editing.

When it looks right, click **Start** for a test, or **Enable** for a personalization. The [Content Experience QA Checklist](/content-experiences/content-test-qa-checklist) covers what else to check.

For more on writing effective CSS and JavaScript for Intelligems, including further examples:

[CSS Styles and JavaScript Injection](broken://pages/QYXhf9x3SCDsVasKvLdT)


# How to set up a Theme Change Experience

A Theme Change Experience serves visitors an entirely different theme instead of changing content on the existing one. It's the best fit for the biggest structural changes, comparing two fundamentally different site designs or builds, rather than something achievable with targeted edits or a single page swap.

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

### **1. Create the** Experience

From the Intelligems app, click **Create New Experience**, give it a name and description, and select **Theme change**.

### **2. Choose: Test or Personalization**

* Running it as a Test?
  * Rename the Test and add a Description. This is optional and internal only, but tests can stay live for weeks, so the more detail here, the more your future self will thank you.
  * Click the **+** button to create a group for each variation (2–5 groups) and name them.
  * Use the slider to set the traffic split for each group.
  * Click **Next Step** when you're done.
  * Note: the more groups you add, the longer it'll take to reach statistical significance.
* Running it as a Personalization? Skip groups entirely. You're building one always-on theme for your targeted audience.

### **3. Select your themes**

Select the theme you'd like to use for each group.

* Make sure the Intelligems script is installed in every theme you're testing; this is what hides the preview bar at the bottom of the theme. If you use checkout.liquid, install the script there too so the preview bar is hidden at checkout (if you don't use checkout.liquid, this happens automatically).
* Product page templates are set at the product level, and the template name must exist in the live theme. If you're testing two different themes, make sure the template names match across both, so the templates you've chosen for each product exist in both themes. Preview your test theme(s) to confirm product pages look right before launching.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FNlMRrMiLMVQxl9U7UtA0%2Ftheme%20test.gif?alt=media&amp;token=d9534d94-bbb8-4d96-a126-c60a27a34db6" alt=""><figcaption></figcaption></figure>

### **4. Set targeting (optional)**

For a Test, a visitor's group is assigned on their first visit and stored via a first-party cookie, so they'll see the same theme on repeat visits during the test.

For a Personalization, everyone who matches your targeting sees it every time.

Either way, you can narrow who's included in several ways, all under the [Audience](/general-features/targeting/audience-targeting) option unless noted:

* UTM parameters
* JavaScript expressions
* Device type (mobile or desktop)
* New vs. returning visitors
* [Mutually Exclusive Experiments](/general-features/targeting/mutually-exclusive-experiments) prevent visitors from being targeted by related experiments at the same time, to avoid interaction effects

### **5. Configure analytics**

What you configure here depends on which path you chose in step 2:

* Personalization? Add any [Custom Metrics](/analytics/overview/custom-events) you want to track, beyond the built-in ones.
* Test? Choose your Key Metrics and Primary Metric to measure against your control group, plus any [Custom Metrics](/analytics/overview/custom-events).

### **6. Preview and activate**

Preview your changes on the live site, then activate. The [Content Experience QA Checklist](/content-experiences/content-test-qa-checklist) has a Theme Change section worth walking before you start.

When you're ready to end it, [Ending a Theme Experience](/content-experiences/content-experiences-overview/how-to-set-up-a-theme-change-experience/ending-a-theme-test) covers what to do with the draft themes, and [Rolling Out Tests](/general-features/rolling-out-tests) covers making a winner permanent.

{% hint style="warning" %}
**Note:** Once your test ends, don't delete any theme that was included in it for at least two months.&#x20;

Visitors who were in a test group have a session cookie that tells their browser which theme to load. If they return while that cookie is still active, Shopify will load the draft theme first, then Intelligems resets them back to the live theme, but only if that draft theme still exists. If it's been deleted, Intelligems never gets the chance to reset them, and the visitor sees a Shopify error instead.&#x20;

Leaving tested themes in draft mode for a while after the test avoids this.
{% endhint %}

***

### FAQs

<details>

<summary><strong>Why am I redirected to a different theme when I preview in Shopify Admin?</strong></summary>

If you preview a theme in Shopify Admin that's part of a live theme test, you may be redirected to a different theme.&#x20;

For example, if the control group is Theme 1 and the test group is Theme 2, previewing Theme 2 without an existing group assignment will randomly assign you to a group. If you land in the test group, you'll stay on Theme 2; if you land in the control group, you'll be redirected to Theme 1. From there, previewing Theme 1 will redirect you back to whichever theme matches your assigned group.&#x20;

To preview a specific theme regardless of your assignment, use the Intelligems preview widget to switch groups.

</details>

<details>

<summary><strong>Why am I still being redirected after my theme test ends?</strong></summary>

This happens once per theme to make sure anyone who was assigned a preview theme during the test doesn't stay stuck there after it ends. After that first redirect, you'll be able to preview the theme normally through Shopify Admin.

</details>

<details>

<summary><strong>Can I run a theme test and a price test at the same time?</strong></summary>

We don't recommend run ing a Theme Change experience and a Price Change experience over the same traffic at the same time.

Two reasons. You lose the ability to read either result, because when conversion or profit per visitor moves, nothing in the data tells you whether the theme or the price moved it. And it doubles what you have to maintain. Price testing needs its [integration](/pricing-experiences/price-testing-integration-guides) present in every theme the experience can serve, so a variant theme missing it shows shoppers the wrong prices and corrupts both sets of results.

If you want both answers, run them one after the other.

{% hint style="warning" %}
Already running both? Confirm the price-testing integration is live in every\
theme in the Theme Change experience, including the drafts. It covers theme-level\
changes such as price tags on your product templates and cart update handling,\
and the base script alone doesn't provide it.
{% endhint %}

</details>


# Ending a Theme Experience

{% hint style="danger" %}
After ending a theme test, we recommend you not delete any theme that was in the test for at least two months
{% endhint %}

During the experience, visitors are sent to draft themes, and their browser will "remember" which theme to open the next time they visit your store via a session cookie. Once the experience is over, if a visitor who was in one of the test groups re-visits your store and the cookie is still active, Shopify will load the draft theme, and Intelligems will then immediately reset them back to the live theme.

However, if the draft theme that was in the experience has since been deleted, Intelligems won't be loaded and won't have the opportunity to reset the visitor's theme. Instead, the visitor see an error from Shopify, since they're trying to load a theme that does not exist.\
\
So, it's important to leave any themes that were tested in draft mode (rather than deleting them) for a while after the experiment, to ensure any returning visitors are reset back to the live theme.

[Rolling Out Tests](/general-features/rolling-out-tests)

[How to set up a Theme Change Experience](/content-experiences/content-experiences-overview/how-to-set-up-a-theme-change-experience)


# How to set up a Template Change

A Template Change swaps one page template for another, letting you overhaul the layout and appearance of a specific page or page type. It's the best fit for structural changes scoped to a single template, like a product or collection page layout, rather than changes to a specific element (Content Edit) or an entire theme (Theme Change).

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

### **1. Create the experience**

From the Intelligems app, click **Create New Experience**, give it a name and description, and select **Template Change**.

* All templates included must be in a live theme.

### **2. Choose: Test or Personalization**

* Running it as a Test?
  * Rename the Test and add a Description. This is optional and internal only, but tests can stay live for weeks, so the more detail here, the more your future self will thank you.
  * Click the **+** button to create a group for each variation (2–5 groups) and name them.
  * Use the slider to set the traffic split for each group.
  * Click **Next Step** when you're done.
  * Note: the more groups you add, the longer it'll take to reach [statistical significance](/analytics/overview/experiment-analytics/statistical-significance).
* Running it as a Personalization? Skip groups entirely. You're building one always-on template for your targeted audience.

### **3. Assign your templates**

Select a template for each group, either an existing one or a duplicate of the control group's template using **Duplicate Control**.

* The control group must use the template currently live on your site. Only pages assigned to that template by default will be included, so a visitor is only included if they land on a page that's currently assigned to the control template.
* Only the templates you've chosen for your groups are affected; other templates on your site are untouched.
* Hover over a test group's screenshot for more options: **Edit in Shopify** (opens the template in Shopify admin), **Quick View** (desktop and mobile preview), **View in Browser** (live preview in a new tab), or click the template name to enter edit mode. If you've made changes to a template in Shopify, use the refresh button next to the group name to update its screenshot.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FnCDFAJpSDQbbEBmRq5Rh%2FTemplate%20Test.gif?alt=media&amp;token=48c78dde-f391-4cb7-bfbd-922dbee216b6" alt=""><figcaption></figcaption></figure>

### **4. Set targeting (optional)**

For a Test, a visitor's group is assigned on their first visit and stored via a first-party cookie, so they'll see the same template on repeat visits during the test.

For a Personalization, everyone who matches your targeting sees it every time.

Either way, you can narrow who's included in several ways, all under the [Audience](/general-features/targeting/audience-targeting) option unless noted:

* UTM parameters
* JavaScript expressions
* Device type (mobile or desktop)
* New vs. returning visitors
* [Mutually Exclusive Tests](/general-features/targeting/mutually-exclusive-experiments) prevent visitors from being targeted by related experiments at the same time, to avoid interaction effects

### **5. Configure analytics**

What you configure here depends on which path you chose in step 2:

* Personalization? Add any [Custom Metrics](/analytics/overview/custom-events) you want to track, beyond the built-in ones.
* Test? Choose your Key Metrics and Primary Metric to measure against your control group, plus any [Custom Metrics](/analytics/overview/custom-events).

### **6. Preview and activate**

Preview your changes on the live site, then activate. The [Content Experience QA Checklist](/content-experiences/content-test-qa-checklist) has a Template Change section worth walking first.


# How to Set Up a Test using our JavaScript API

Intelligems allows you to set up powerful custom tests using its window object API.

## **Step 1: Create a new test**

Navigate to the "A/B Tests" tab in the menu on the left-hand side of the Intelligems app. Once you're there, click "Create New Test" above the experiments table.

Fill in the Name and Description for the experiment you are creating. This information is all internal - the more detail you include here the better! Tests can be live for several weeks, and your future self will thank you for including the details here. Select 'Content Test", then "Onsite Edits", and then "Create Test".

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-f7de4f4d4a5fb1fd5c99bd00db1ae83abcfdb443%2FAPI-%20Create%20New%20Test.gif?alt=media" alt=""><figcaption></figcaption></figure>

## **Step 2: Create your test groups**

Create between two and five groups to include in the test by clicking on the ‘+’ button. Name the groups for the experiment and use the slider to allocate what percentage of traffic will go to each group. When you are done adding groups, click "Next step" in the top right.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-b37b8dbcd56e53048fbd0b39abb406ff684a5acb%2FCreate%20Test%20Groups.gif?alt=media" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
The more groups you have, the longer it will take to get statistically significant results. You’ll need about 300 orders for each group in the test to detect a 10% change in conversion with 90% confidence.
{% endhint %}

## Step 3: Skip "Modifications"

No need to set up any Content Edits, Styles or JavaScript in this step of the set up if you are planning to use our JavaScript API. Go ahead and move on to step 4.

## **Step 4: Set up targeting if needed**

Targeting is an optional step. This tool allows you to apply specific conditions to certain site visitors.

There are a few different ways you can do this:

* You can set up currency and country targeting that allows you to limit your test to a single currency and/or a list of specific countries. This feature is defaulted to your store currency for price test.
* You can use UTM parameters to customize your user experience under the Audience option.
* You can filter traffic based on JavaScript Expressions under the Audience option.
* You can filter traffic based on device type (i.e. mobile or desktop) under the Audience option.
* You can filter traffic based off of whether a visitor is new or returning under the Audience option.
* You can prevent users from being targeted by related experiments to reduce undesired interactions under the Mutually Exclusive Tests option.

You can learn more about targeting [here](https://docs.intelligems.io/content-testing/targeting)!

## Step 5: Choose how you'd like to measure your results and save your test

Finally, select whether analytics should by default consider only orders containing certain products you want to test (for example something related to a particular PDP), or orders containing any products in your shop. You can change this later after the test has started by changing the option in your Analytics filters. Go ahead and save the test, and move on to step 6.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-916f96ab2473a85ca5179def3563b28c0ee4a1af%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

## Step 6: Get relevant IDs

Custom content tests require you to know the experiment ID and test group IDs so that you can branch your design or logic accordingly. You can get this information by clicking the "Show Info" button in the more menu:

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-bf71e1d6c19fb211f6f3860be91973d1fa4f45b2%2FGet%20Relevant%20IDs.gif?alt=media" alt=""><figcaption></figcaption></figure>

## Step 7: Use the Intelligems window object API to set up your custom test

Now that you have your test group IDs, you can use Intelligems' [window object Javascript API](/developer-resources/javascript-api) to get the current user's test group for the given experiment. Once you know the user's test group, you can branch logic and styling with it. For example, you might set a class or show/hide an element to affect styling, or conditional logic in your own Javascript code to provide a different experience.


# Content Test Common Use Cases

Content testing is a powerful tool for businesses because it enables them to determine what types of messages, formats, and visuals resonate best with their target audience. By experimenting with different content variations—whether it's headlines, images, or calls-to-action—companies can gather insights on what drives engagement, conversions, and brand loyalty. This data-driven approach helps optimize marketing strategies, ensuring content is not only relevant but also effective in achieving specific goals. Content testing reduces guesswork, improves ROI, and ensures that businesses connect with their audience in meaningful ways.

Check out the below common test designs for inspiration on how to get started:

{% content-ref url="/pages/Yw1hre6HC2avQAUt6Lt4" %}
[Landing Page Testing](/content-experiences/content-experiences-overview/content-test-common-use-cases/landing-page-testing)
{% endcontent-ref %}

{% content-ref url="/pages/nhyBoG3r3cviMmmW8bb0" %}
[Testing a Brand New Theme](/content-experiences/content-experiences-overview/content-test-common-use-cases/testing-a-brand-new-theme)
{% endcontent-ref %}

{% content-ref url="/pages/9P2t8LthGJtVGp7TkRSO" %}
[Testing Different Imagery](/content-experiences/content-experiences-overview/content-test-common-use-cases/testing-different-imagery)
{% endcontent-ref %}

{% content-ref url="/pages/ijXgNHrtXOE0z8RGIaMT" %}
[Testing Cart Elements](/content-experiences/content-experiences-overview/content-test-common-use-cases/testing-cart-elements)
{% endcontent-ref %}

{% content-ref url="/pages/rQ5l3GwOmxxC2PlsbjBN" %}
[Testing Announcement Bar Text](/content-experiences/content-experiences-overview/content-test-common-use-cases/testing-announcement-bar-text)
{% endcontent-ref %}

{% content-ref url="/pages/eXbbkhLmmEWCWmHEIJ1K" %}
[Navigation Menu](/content-experiences/content-experiences-overview/content-test-common-use-cases/navigation-menu)
{% endcontent-ref %}

{% content-ref url="/pages/liYHDw84KZZiOQr3ml8P" %}
[Testing Shopify Checkout Blocks](/content-experiences/content-experiences-overview/content-test-common-use-cases/testing-checkout-blocks)
{% endcontent-ref %}

{% content-ref url="/pages/5E2QPcVzDc2xsMXhZkB1" %}
[Tariff Testing: On vs Off](/content-experiences/content-experiences-overview/content-test-common-use-cases/tariff-testing-on-vs-off)
{% endcontent-ref %}

{% content-ref url="/pages/4Vo0w1OX2HQrRDZqcv3B" %}
[Testing Express Payment Options](/content-experiences/content-experiences-overview/content-test-common-use-cases/testing-express-payment-options)
{% endcontent-ref %}

{% content-ref url="/pages/KtPcbjzqZOvvPBKAx8G0" %}
[Testing Blog Templates](/content-experiences/content-experiences-overview/content-test-common-use-cases/testing-blog-templates)
{% endcontent-ref %}


# Landing Page Testing

## Introduction

Testing landing pages for an eCommerce site is crucial for maximizing conversion rates & ROAS, as well as enhancing user experience. A few examples may include:

* Testing different layouts or calls to action for your landing pages from Google ads
* Sending your Facebook traffic to a landing page versus directly to a collection page or your homepage
* Experimenting with different offers for ad traffic, such as 10% vs 20% off their first order

You can use Intelligems to test landing pages in a few different ways. Here, we'll explore testing landing pages using [Split URL](broken://pages/AiqKmWzqHLXItIJruAVH) tests and [Onsite Edit](broken://pages/OAD2Mj1IOLiHMdnDkm3b) tests. Before getting started, make sure you've [added the Intelligems script](/getting-started/adding-intelligems-script-to-your-theme) to your Shopify theme.

## Setting the Test Up

### Option 1: Split URL Test

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-9c7d6e184c69910c4671a8cf43321ddb3f72d4e4%2Fimage.png?alt=media" alt=""><figcaption><p>Two example landing pages that we'd like to test against each other</p></figcaption></figure>

Split URL tests let you test pages against each other using redirects. When a visitor lands on the control page, they are randomized into a test group, and, if they're not in the control group, they'll be redirected to the corresponding page for their group.

This test type is a great option if you want to get your test up and running quickly, especially if you're using a page builder or making large changes to the page you're testing.

To set up a Split URL landing page test:

1. **Create the versions of the page you want to test.** Create the pages you want to test, for example, with a page builder or with the Shopify theme editor, and make sure they're accessible on your store through a URL. Note down the URLs of the pages you're testing.
2. **Create a new Intelligems Split URL test** by clicking "Create New Test" on the [Intelligems homepage](https://app.intelligems.io/), choosing "Content Test," and then "Split URL Test"
3. **Create a test group for each variation you'd like to test**. In my example, I'll be testing the existing control page against one variant, so I'll have two test groups total: Control and Test.\
   \\

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-cf6da5e7a16936838e08c16e1be0f35e33aac358%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

4. **Enter the URLs of the two landing pages** in the test setup. A "Simple" redirect should work for our purposes, since we just want to split between two known URLs. "Advanced" redirects are for when you'd like to match or replace wildcard text.\
   \
   Choose "Redirect Every Time" if a visitor who's assigned to test page should be redirected sent to it any time they reach the Control. Choose "Redirect One Time" if they should be redirected only the first time. In our case, since we're testing fully replacing the control page with the test page, we'll choose "Redirect Every Time."

   <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-ba6982237bb435ab137730d1e43639ff4fc43342%2Fimage.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

   **Multi-domain brands:** If you operate multiple domains (e.g., yourbrand.com and yourbrand.co.uk), make sure all domains are registered in **Settings → Domain Settings**. You can then set up separate Split URL tests for landing pages on each domain.
5. **Save and preview your experiment**. You can refer to our [QA guide](broken://pages/CfZMbtRTuqFtfyTURGva#page-redirect-tests) for tips on what to look for when testing.
6. **Launch!**

{% hint style="warning" %}
If you use a page builder like PageFly, Replo or GemPages, be sure to add Intelligems JavaScript to their theme files as outlined [here](https://docs.intelligems.io/getting-started/adding-intelligems-script-to-your-theme)! If this step is missed, Intelligems will not be able to track the data for those pages.
{% endhint %}

### Option 2: Onsite Edit Test

Another option is an Onsite Edit test. In an Onsite Edit test, you can use Intelligems' visual editor, injected Javascript, or CSS to insert, hide, and re-arrange elements on a page.

This test type is a good fit if you're making a smaller adjustment to a page (e.g., adding or removing a section, etc.), or if you'd like to avoid redirecting any users for performance or other reasons, and you're comfortable with basic HTML and CSS.

To set up an Onsite Edit landing page test:

1. **Decide on a strategy for switching content**. For example, if you're testing a new section, it's often easiest to add this section to the page, hidden by default with CSS, and then use CSS injection to unhide it for the test group. Another option would be to use Intelligems' visual editor to *add* the section for the test group. We'll go through both techniques below.
2. **Create a new Intelligems Onsite Edit test** by clicking "Create a Test" on the [Intelligems homepage](https://app.intelligems.io/), choosing "Content Test," and then "Onsite Edit"
3. **Create a test group for each variation you'd like to test**. Here, we're testing the existing control page against one variant with an added section, so we'll have two test groups total: Control and Test
4. **Use Page Targeting to target the test on the landing page**. We want the onsite edits to execute only on the landing page, and we want to make sure only visitors to the landing page enter the test and factor into analytics. We can do this by targeting the test on the landing page by URL. For example:\\

   <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fdj2a6XQN7XVD7bYWj7pm%2FScreenshot%202026-08-17%20at%201.28.55%E2%80%AFPM.png?alt=media&amp;token=17d0e865-3c98-4474-9795-059874e8a624" alt=""><figcaption></figcaption></figure>
5. **Set up the onsite edit.**
   1. Injected CSS: one way to test a new section of a page is to put the section in the page, but hidden by default, and then inject CSS to unhide it for the test group. For example, you could add a CSS class to your theme:\
      \
      `.hidden-section { display: none; }`\
      \
      And add this class to new page section in the theme editor or page builder (if you're unable to edit the section's classes you could also write a different selector rather than adding a new class, and add this CSS to your theme's code or with injection for the control group).\
      \
      Then, for the test group, inject some CSS to override this and unhide the section:\
      \
      `.hidden-section { display: block !important; }`

      <div data-full-width="true"><figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-9c0c7f7c730d141cdf60e57d916014c601b376cd%2Fcss-styles.png?alt=media" alt=""><figcaption><p>CSS injection in an Onsite Edits Test</p></figcaption></figure></div>
   2. Insert the section: another way to test a new section is to insert it using Intelligems' onsite editor. For example, to insert a testimonials section above the featured collection on this page, first open the Intelligems onsite editor, then choose the featured collection section and choose "Edit HTML / CSS":

      <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-6d8814e4acc1e926c796668981f8acd76867abc4%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

      In the dialog, choose "Prepend Outside" in the dropdown in the bottom left. This tells Intelligems to inject the HTML you enter before the section you selected, instead of replacing it.

      <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-3f895396929f7008eb328ba9b05b023be790334e%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

      Next, enter the HTML for the new section in the text editor, and click "Apply." You'll now see the new section appear above the one we selected:

      <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-4d68cf4f5ff3bcbc688118cd10d95f54e368a689%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>
6. **Save and preview your experiment**. You can refer to our [QA guide](broken://pages/CfZMbtRTuqFtfyTURGva#page-redirect-tests) for tips on what to look for when testing.
7. **Launch!**


# Testing a Brand New Theme

## Introduction

Your team has spent the last month perfecting a new theme for your store. They’ve spent hours QAing it and are confident that it is ready to launch. Testing this new theme compared to your live theme can be a great way to confirm whether the new theme is better than your old theme, and that no issues were overlooked. The goal of this test is to see either no difference, or some uplift, for the new theme. If there is a negative impact, this may be a sign that there are still bugs to work out.

You can use Intelligems to test your brand new theme by setting up a [Theme Test](broken://pages/PEZ1kgLIgsC5jnRs8Ga6). Before getting started, make sure you've [added the Intelligems Script](https://docs.intelligems.io/getting-started/adding-intelligems-script-to-your-theme) to all themes that will be included in the test. This allows Intelligems to hide the theme preview bar and track all data correctly.

## Setting the Test Up

Theme tests allow you to test entire themes against each other using redirects. When a visitor lands on your website, they are randomized into a test group, and, if they're not in the control group, they'll be redirected to the test theme where they'll stay for the remainder of the test. This test type is the **only way to test two or more entirely different themes against each other**, so it is the best option when you are looking to launch a brand new theme.

To set up a Theme Test for your new theme:

1. Create your new theme in Shopify. Make sure you've [added the Intelligems Script](https://docs.intelligems.io/getting-started/adding-intelligems-script-to-your-theme) to all themes that will be included in the test!
2. Create a new Theme Test by clicking "Create New Test" on the [Intelligems homepage](https://app.intelligems.io/), then choose "Content Test" and then "Theme Test"
3. Rename "New Group 1" to match the name of your new theme.
4. Select your live theme for the control group, and your new theme for the test group.

   <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-db3afa5028716b81b2a67677611c1406677b0dd4%2FScreenshot%202024-10-14%20at%2010.53.28%20AM.png?alt=media" alt=""><figcaption></figcaption></figure>
5. Save and preview your experiment. You can refer to our [QA guide](broken://pages/CfZMbtRTuqFtfyTURGva#page-redirect-tests) for tips on what to look for when testing.
6. Launch!

A few things to keep in mind while testing your new theme:

* If the new theme is performing well, you can gradually increase the percent of traffic being sent to that theme by editing your test in the Test Groups tab:

<div data-full-width="false"><figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-aa063070633b2b95e64d2340e7c85c4ed6bd00cc%2Ftheme-traffic-split.png?alt=media" alt=""><figcaption></figcaption></figure></div>

* Running a theme test means that you need to keep all themes that are part of the test up to date! Any changes that you make to your live theme while a Theme Test is running must also be made to any themes included in your test.
* When you end a Theme Test, do not delete any themes that were part of the test. You can read more on why [here](https://docs.intelligems.io/content-testing/ending-a-theme-test)!


# Testing Different Imagery

Testing homepage banners or product page images is essential for brands aiming to optimize their online presence and drive conversions. The images used on these pages play a significant role in capturing users' attention, conveying brand messaging, and influencing purchasing decisions. By conducting tests, brands can assess various elements such as image composition, color schemes, product placement, and messaging to identify which resonates most effectively with their target audience.

### **How to set it up**

Image swaps are built as a [Content Edits experience](https://docs.intelligems.io/content-experiences/content-experiences-overview/how-to-set-up-a-content-edit-experience). Build the change once in the Visual Builder, then run it as a Test to see which image drives more revenue and conversion, or as a Personalization to show the new image to a specific audience. Not sure which? See [Tests vs. Personalizations](https://docs.intelligems.io/getting-started/tests-vs.-personalizations).

1. From **Content**, click **New Content Experience** and choose **Content Edits**.
2. In the **Modifications** tab, open the **Visual Builder**. Use **Navigate** to get to the page with the image, then switch to **Select**. Running a Test? Make sure you're editing the right group before you swap.
3. Click the image. In the sidebar, click **Browse library** to pick a replacement from your media library, or **add an image URL**.
4. Under **Apply image replacement to**, choose **This image only** or **All instances of this image**. Use the second when the same image appears more than once on the page and you want every copy swapped.
5. Click **Apply**, then **Save**.

{% hint style="info" %}
Some themes load a separate hero image on mobile. Check the page in both the mobile and desktop views in the Visual Builder and swap each one if needed, or mobile shoppers may still see the original.
{% endhint %}

You can also describe the swap to the AI Assistant inside the Visual Builder and it'll make the edit for you.


# Testing Pop-Ups

Testing pop-ups lets you measure what your on-site messaging, promotions and lead capture are actually worth, without making permanent code changes. Run a test or a personalization on a pop-up and read the result on conversion rate, email capture, or profit per visitor.

Pop-ups are usually powered by a third-party app (Klaviyo, Justuno, Alia, Privy, Postscript) or built into your Shopify theme. Intelligems works with either, by toggling visibility, editing content, or injecting custom logic for who sees the pop-up.

{% hint style="info" %}
Looking for the **Pop Up / Slide Out** offer message that comes with a Merchandising experience? That's a different feature, built into Intelligems and shown on your homepage. See Offer Message.
{% endhint %}

### **Which setup to use**

| Setup                                              | Best for                                                                                                                                            |
| -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Content Edits** with CSS or JavaScript injection | Showing or hiding a third-party app's pop-up, swapping the content or offer inside an existing pop-up, or changing when it fires                    |
| **Redirects**                                      | Comparing two entirely different pop-up designs built in Shopify or a page builder like Replo or Shogun, or testing two pop-up apps without overlap |

#### **Content Edits with CSS or JavaScript injection**

Use Intelligems' editor to show, hide, or modify a pop-up on the page.

**Example to show the Pop Up:**

```css
#my-popup {
    display: block;
}
```

***

**Example to hide the Pop Up:**

```css
#my-popup {
    display: none !important;
}
```

{% hint style="warning" %}
Keep the pop-up in your theme and use Intelligems to show or hide it, rather than injecting the pop-up itself. An injected pop-up has to fight your theme for control of the page and the cart drawer, and that fight is what breaks it.
{% endhint %}

To change which pop-up displays, either keep several in your theme with all but one hidden by default and use CSS to swap which one is hidden, or use JavaScript to tell your pop-up provider which version to render.

#### **Redirects**

Control and each variant point to different Shopify pages or landing pages, each with its own pop-up configuration. Every page has to be self-contained, with its own tracking and its own pop-up triggers.

[How to set up a Redirect Experience](/content-experiences/content-experiences-overview/how-to-set-up-a-redirect-experience)

### **Setting up the test**

1. Follow the steps to set up a Content Edit experience. Put no pop-up (or your original pop-up) in the control, and your new design, offer, or timing in the variant.
2. Swap the pop-up content in your new group using one of the methods above. This is where you test offers, like 10% off against free shipping.
3. Adjust targeting and triggering. Combine Intelligems audience targeting with your pop-up, for example first-time visitors against returning customers, and change when or how the pop-up fires, on scroll, after a set number of seconds, or on exit intent.

[How to Set Up a Content Edit Experience](/content-experiences/content-experiences-overview/how-to-set-up-a-content-edit-experience)

### **Use custom events to filter your results**

Custom events let you track whether a visitor actually engaged with the pop-up, so you can segment your reporting by people who saw or clicked it against people who didn't.

This matters because it separates the pop-up's effect from the variant group's overall performance. Without it you know the group did better. With it you know the pop-up is why.

[Custom Events](/content-experiences/content-experiences-overview/how-to-set-up-a-content-edit-experience)

### **Running a pop-up test alongside another experience**

If you already have a pop-up test running on a page, a second experience on that same page will muddy both reads. Finish one before starting the other, or scope them to different pages. If they have to run at the same time, make them mutually exclusive so no visitor lands in both. That keeps the reads clean but splits your traffic, so each one takes longer to reach significance.

[Mutually Exclusive Experiments](/general-features/targeting/mutually-exclusive-experiments)

### **Best practices**

* **Isolate one variable at a time.** Test the offer, the design, or the timing, not all three, or you won't know which one moved the number.
* **Connect to downstream KPIs.** Go past email sign-ups. Add your COGS in Intelligems and read profit per visitor, so you know the pop-up improved the business and not just the list.
* **Check both devices.** Pop-ups behave differently on mobile and desktop. QA on both.

### **Limitations**

* **Third-party app restrictions.** Some pop-up apps don't expose their timing and triggering logic to external scripts. Intelligems can usually control visibility or injection in those cases, but not the app's internal scheduling.
* **Theme-level against app-level.** A pop-up baked into theme code has to be edited as a content experience. One powered by an app may need its own settings coordinated with your Intelligems targeting.

If you'd like us to look at your setup, reach out to our support team.


# Testing Cart Elements

The cart is a pivotal point in the customer journey. A/B testing components of your cart ensures that the user experience is seamless, intuitive, and efficient. By understanding how customers interact with the cart, stores can identify pain points, such as confusing navigation or lack of features, and optimize accordingly.

When it comes to your site’s cart, there are endless elements you could test. Below are just a few of the things that brands often test:

* Displaying the option for a customer to enter a discount code in the cart
* Testing a third-party cart app vs. your Shopify cart
* A different call to action on your checkout button
* Displaying a [free shipping progress bar](/shipping-experiences/shipping-progress-bar-integration) to incentivize users to spend more

The best way to set these tests up in Intelligems depends on a few factors, including what exactly you are looking to test, how your cart is set up on your site, and your team’s technical aptitude. See below for a few examples:

* If you are looking to test a relatively small and non-complicated portion of your cart, you may be able to set your test up using Intelligems’ [Visual Builder](/general-features/editors/visual-builder)!
  * Test the call-to-action text in the checkout button
  * Show vs. hide components like a progress bar or discount code input field
  * Show vs. hide upsells in the cart
* If you are planning to test something more complicated, if the cart can be controlled using JavaScript, you can use Intelligems’ [JavaScript injection tool](https://docs.intelligems.io/content-testing/css-and-javascript-injection) to test this. If the cart cannot be controlled using JavaScript, or writing JavaScript is not in you team’s capabilities, you could also run it as a [Theme Test](https://docs.intelligems.io/content-testing/content-testing-getting-started/how-to-set-up-a-theme-test).


# Testing Announcement Bar Text

## Introduction

By A/B testing your announcement bar, you can identify the most effective design and content for driving conversions and profit. Even simple changes to your announcements can sway customers toward conversion.

Here are a few ideas for A/B testing your Shopify announcement bar using Intelligems:

* **Test different text.** Try using different wording or calls to action in your announcement bar to see what gets the best results.
* **Test different colors.** Experiment with different color schemes to see what is most visually appealing and effective at grabbing attention.
* **Test different positions.** You can also test different positions for your announcement bar on the page.

## Setting the Test Up

Here are the steps to follow to use an Intelligems Onsite Edits test to A/B test your Shopify announcement bar:

* **Check if your theme has a built-in announcement bar feature.** You can do this by going to **Online Store > Themes** and then clicking **Customize**. If your theme has an announcement bar, **Announcement bar** will be displayed in the list of sections or within the "Header" settings.
* **If your theme has a built-in announcement bar feature, follow your theme’s documentation to add it to your online store.** If you’re using a Shopify-supported theme, you can refer to *Free themes from Shopify*.

If your theme does not have a built-in announcement bar feature, you'll need to download a banner app from the Shopify app store.

Once you have an announcement bar set up, you can use Intelligems to A/B test different versions of it. Here are the steps on how to set up an onsite edits test in Intelligems:

1. **Create a new test.** From the A/B tests page, create a new onsite edits test.
2. **Create your test groups.** You will need to create a test group for each variation of your announcement bar that you want to test. Fill in the Test Name and Test Description. You can add new groups by clicking on the ‘+’ button. Use the slider to allocate what percentage of traffic will go to each group.
3. **Make your content edits.** In the Modifications tab, this can be done one of two ways:
   1. **Select Content Edits, then Add & Edit Changes in Visual Editor.** This will take you to your website with Intelligems' edit mode enabled.
   2. Alternatively, you could enter a CSS injection in the Styles & Javascript section.
4. **Set up targeting (optional).** Targeting allows you to apply specific conditions to certain site visitors. You can learn more about targeting [here](/general-features/targeting).
5. **Save your changes and start your test.** Intelligems will start tracking the performance of each variation of your announcement bar. You can then use the Intelligems analytics dashboard to see which variation is performing best.

{% hint style="info" %}
Note that onsite edits are based on [query selectors](https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector). Some themes and announcement bar apps have a different query selector for the announcement bar depending on the specific page. Confirm in preview mode that the updates you've made to the announcement bar are working on all of the pages you intend to change.
{% endhint %}


# Navigation Menu

## Introduction

Testing your navigation menu is a great strategy that can significantly enhance the user experience and drive sales. As one of the primary ways customers interact with your site, the navigation menu plays a crucial role in how they discover products and navigate your offerings. Given its presence on every page, any adjustments can lead to substantial changes in customer behavior and satisfaction. Here are a few aspects you can explore through A/B testing your menu:

* **Layout**: Experiment with different structures to see which is more intuitive for users.
* **Organization**: Test how grouping products affects discoverability and ease of use.
* **Presentation**: Vary the visual design to identify what draws attention and enhances usability.
* **Styles**: Try different color schemes and fonts to see what resonates best with your audience.
* **Wording**: Analyze the effects of different labels and calls to action on customer engagement.

By fine-tuning these elements, you can optimize your navigation menu for better performance and improved customer experience. There are a few different ways you can test your navigation menu. The examples below show how to do this with a [Theme Test](#option-1-theme-test), or through our [Onsite Edits](#option-2-onsite-edits) capabilities.

{% hint style="info" %}
Once you have finished setting up your test, we recommend going through our suggested [Content Test QA Checklist](broken://pages/CfZMbtRTuqFtfyTURGva) before you turn it on.
{% endhint %}

***

## Setting the Test Up

### Option 1: Theme Test

A Theme Test allows you to test a completely new design for your site, as you can make use of a new Shopify theme you're already working on, making it the easiest way to test bigger modifications. Your new theme may contain all sorts of changes, including a new navigation menu, and when a visitor comes to your site, Intelligems will automatically randomize them into one of the themes you've picked for your test.

You can test any of the aspects listed above, as you'll be setting up a new theme with your alternative navigation menu, so the sky is the limit!

To test a new navigation menu through a Theme Test:

1. **Create the new version of the menu you want to test**. Set it up as you normally would on Shopify, creating a new Shopify theme (it may be a copy of your existing theme) in which the new menu will be used.
2. **Follow the steps on** [**How to Set Up a Theme Test**](broken://pages/PEZ1kgLIgsC5jnRs8Ga6) to create a new Theme Test. When selecting the themes that will be part of the test, choose your current theme for the control , and the theme containing your new navigation menu as the test.
3. You should be all set to launch your test!

***

### Option 2: Onsite Edits

Intelligems' Onsite Editor is a dynamic and versatile tool that enables you to creatively interact with and test various elements of your Shopify theme. When experimenting with a new navigation menu, you have numerous options depending on the specific aspects you wish to explore. Here, we’ll delve into ideas for enhancing your menu through a fresh [Layout and Organization](#layout-and-organization), reimagining its [Presentation and Styles](#presentation-and-styles), or experimenting with innovative [Wording](#wording).

#### Layout and Organization

If you're looking to test two different menus — one that directs visitors to all your collections through a single link and another that lists each collection individually — a great approach is to set up all the options you want to test on Shopify. Then, you can use our Onsite Editor to hide or show each option based on the menu you are evaluating.

Here's how you can achieve this:

1. On Shopify, go to **Online Store > Navigation**, and create a new menu through the **Add menu** option.
2. Create a menu containing all the sections that will be presented to both groups A and B:

   <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-3eaf81f4184ca485f9a7794b9fd01099657318c5%2Fimage.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>
3. Go to **Online Store > Themes**, and duplicate your current theme. We don't want to set up your live theme with the new menu quite yet, as all those options would be visible, so we will set everything up using a duplicate theme, which you can then publish when you turn on your test.
4. Next to the newly created theme, click on **Customize** to access the Theme Editor. Click on your theme's header, and change the current menu by the one you just created:

   <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-c60fc2cf6cc327285ebfcc500aaf7dfbdd591382%2Fimg2.gif?alt=media" alt=""><figcaption></figcaption></figure>
5. On Intelligems, create a new Content Test, selecting the type Onsite Edits (see [How to Set Up a Content Edit Experience](/content-experiences/content-experiences-overview/how-to-set-up-a-content-edit-experience)). When you get to the final step, click on **Edit** next to **Content Edits**, then **Add & Edit Changes in Visual Editor**, and select the duplicate theme you created:

   <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-df2bb3d334a21d06a7bcb2fd9af1c32e2c219152%2Fimg3.gif?alt=media" alt=""><figcaption></figcaption></figure>
6. With Group A selected, enable the element selecting tool, then select each menu element that needs to be hidden for Group A, creating a replacement for each one. When selecting each menu element, make sure you're selecting the most outer portion of it, as this will ensure that we are targeting the correct portion of the menu that needs to be hidden. You'll hide each of these elements for Group A, while leaving them as originally set for Group B:

   <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-ae35deeb102686fe0782599913630e344e074db0%2Fimg4.gif?alt=media" alt=""><figcaption></figcaption></figure>
7. Repeat this for the elements that won't be visible to Group B, this time leaving them as originally set for Group A, and hiding them only for Group B. Make sure to **Save** your changes before closing the editor:

   <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-bc9bd9bee1d041ffb266fec19ecbe1f6facb57d8%2Fimg5.gif?alt=media" alt=""><figcaption></figcaption></figure>
8. As you switch between groups A and B in preview mode, you'll notice that the right menu elements are displayed for each test group.
9. Once you are ready to start your test, simply publish the duplicate theme that has the test menu in it, or set your live theme with that menu, then start the test on Intelligems. You'll want to make sure to keep the interval between these two actions as minimal as possible, so your visitors don't see all the menu options once the test menu is set on your live theme.

{% hint style="info" %}
If you are using [Audience Targeting](/general-features/targeting/audience-targeting) to run this test only for a subset of visitors, make sure you use **Advanced Targeting**, setting up a condition so, if the visitor doesn't meet the audience's criteria, they get assigned to your control group, and select the option to exclude them from Analytics. This will ensure that they see your default menu instead of all the menu items. For example, if you wanted to target Desktop visitors only, this is how you would set this up:

<img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-7dbd6c40925730bbd2260eea249d029a354e88f9%2Fimage.png?alt=media" alt="" data-size="original">
{% endhint %}

#### Presentation and Styles

Perhaps you are happy with the options presented on your menu, but you want to test the ways your visitors perceive it. You can easily inject custom styles into your test, having an alternative presentation for your test group, without needing to make any theme modifications, as outlined below:

1. On Intelligems, create a new Content Test, selecting the type Onsite Edits (see [How to Set Up an Onsite Edits Test](broken://pages/OAD2Mj1IOLiHMdnDkm3b)).
2. Load your test's preview, access the Onsite Editor, and go into editing mode.
3. Click on the "\</>" icon to open the Global CSS / JS editor:

   <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-ca1d8dde20e4e1253882b337488b228d007719d5%2Fimg6.png?alt=media" alt=""><figcaption></figcaption></figure>
4. In the Group selector, switch to your test group, then add in your custom CSS that targets and modifies the elements on your navigation menu. This will be CSS that you've written yourself, with the help of a theme developer, or an AI generating tool, for example:

   <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-fce57191c17e8410ac36e2397bea5e28e33e5748%2Fimg7.png?alt=media" alt=""><figcaption></figcaption></figure>
5. Make sure you click **Apply** on the editor, and then **Save** on our widget.

#### Wording

Changing labels can often enhance the understanding of the underlying content and boost client engagement with specific sections of your menu. Here's how you can test simple text adjustments to your existing menu items:

1. On Intelligems, create a new Content Test, selecting the type Onsite Edits (see [How to Set Up an Onsite Edits Test](broken://pages/OAD2Mj1IOLiHMdnDkm3b)).
2. Load your test's preview, access the Onsite Editor, and go into editing mode.
3. Click the button on the bottom-left to **enable element selecting**:

   <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-9bc2af2a8b7ba94a743d366446d2ad08ecef9538%2Fimg8.png?alt=media" alt=""><figcaption></figcaption></figure>
4. Click on the menu item you wish to test, then **Edit Text**:

   <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-f215f64838d2b574cae527962af9c3d27a76344b%2Fimg9.png?alt=media" alt=""><figcaption></figcaption></figure>
5. Make no changes for Group A (Leave as is). For Group B, add in the text that should replace the original text:

   <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-419a708652b2abd012d160e324795320044ae699%2Fimg10.png?alt=media" alt=""><figcaption></figcaption></figure>
6. Make sure you click **Done** on the editor, and then **Save** on our widget.

***

## Additional Suggestions

The methods for testing a navigation menu aren't limited to those mentioned above. With the various resources available through Intelligems, there are several other ways you can set up your test, depending on the specific changes you want to evaluate:

* If you want to redirect visitors to certain pages when they click on a given menu link, you can create a [Split URL Test](broken://pages/AiqKmWzqHLXItIJruAVH) rather than make changes directly to your menu.
* If you want to modify your menu without creating new menu items on Shopify, and you have a developer to assist you with front-end coding, you can use our [JavaScript injection capabilities](broken://pages/QYXhf9x3SCDsVasKvLdT), adding custom JavaScript to the test group to programmatically modify your menu.


# Testing Shopify Checkout Blocks

Test components on Checkout created through the Shopify Checkout Blocks app

{% hint style="info" %}
You can now use Intelligems to power and test Checkout Experiences like trust badges, guarantees, and custom content in your checkout. Learn more about [How to Structure a Checkout Test](/checkout-experiences/getting-started-with-checkout/testing-checkout-experiences)
{% endhint %}

### Introduction

Testing elements on the Checkout page is a functionality that many stores have been longing for. While Shopify still doesn't allow changes to their native components by 3rd party apps, stores on the Shopify Plus plan have access to the [Shopify Checkout Blocks app](https://apps.shopify.com/checkout-blocks), through which you can add custom blocks to checkout that can be controlled through an A/B Test in Intelligems.

### How It Works

The concept is straightforward: create blocks conditioned by a **cart attribute**, then use Intelligems' [JavaScript injection](https://docs.intelligems.io/general-features/css-and-javascript-injection) capability to set up a Content Test that controls the display of the checkout block for each test group.

See the example below for how you can test a block that **allows your customers to edit their items on Checkout**.

### Setup Instructions

#### Step 1: Create a Checkout Block

In the [Checkout Blocks app](https://apps.shopify.com/checkout-blocks), click on 'Blocks', then 'Create block'. In this example, we'll be selecting the 'Line item edit' block:

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-746bbb95770f0113ec86758f4cc9f7d03e928bce%2F01%20-%20create%20block.gif?alt=media" alt=""><figcaption></figcaption></figure>

#### Step 2: Set up a Display Rule

The block will be conditioned to a cart attribute set through the test on Intelligems. Under 'Display Rules' click on 'Add display rule' and select 'Cart attributes'. Next, set 'Key' as '\_igShowBlock' and 'Value' as 'true':

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-b79ba31f299d827e2dfb887eda43853a829f0b50%2F02%20-%20set%20attribute.gif?alt=media" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
The key/value pair configured at this step is arbitrary. You can set a different attribute key and value if you like, as long as that matches the key and value you'll be setting up through your test.
{% endhint %}

#### Step 3: Activate your block and add it to Checkout

Follow the instructions on the Shopify Checkout Blocks app to activate your newly created block and add it to Checkout. Once the block is active, you'll open the Checkout editor, click the '+' icon next to 'Line item edit', and add it to the 'Information' section. Make sure to 'Save' your changes:

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-52ff1fd2c8e664e7d0ad99c8a90a698780a8bee2%2F03%20-%20add%20to%20checkout.gif?alt=media" alt=""><figcaption></figcaption></figure>

When viewing your Checkout sections, you'll locate the block under 'Order summary > Items in cart'.

{% hint style="info" %}
In the editor, if you click on your newly added block, you'll see a few customization options, such as the button's styles and label.
{% endhint %}

You may now close the editor and go back to the Checkout Blocks app, where you'll close the popup where the editor steps are listed, and mark that step as done. Your block is now active, and you can proceed with the next steps on Intelligems:

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-847c8e8281b34b2af82d379af4983a7c5821805a%2F04%20-%20mark%20as%20done.gif?alt=media" alt=""><figcaption></figcaption></figure>

#### Step 4: Create an Onsite Edits Test with a Javascript injection

On Intelligems, create a Content Test of the type 'Onsite Edits Test' (you may refer to the steps [here](broken://pages/OAD2Mj1IOLiHMdnDkm3b)), with two test groups - in this example, we will call the groups 'Block OFF' and 'Block ON':

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-dd1be8674d666d94a7358eb8c8c596661a3dfdd4%2Fimage.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

Move on to the 'Modifications' tab, and expand the section 'Styles & Javascript'. Within it, switch to the 'Javascript' tab, and paste the following code for the group 'Block OFF':

```
const res = fetch("/cart/update.js", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    attributes: {
      '_igShowBlock': "false"
    },
  }),
})
```

Additionally, switch the setting 'Javascript Injection Timing' to 'Delay', with a value of '2500 ms'. This will ensure that the Javascript runs correctly across different devices and browsers, as we noticed some devices and browsers require this extra delay.

Here's a quick video on the steps you'll be taking:

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-b4b1b3a877c511f28a65d470c3329d2a95569e69%2Fcb-update-01.gif?alt=media" alt=""><figcaption></figcaption></figure>

Next, switch over to the group 'Block ON', and add the same code, but this time change the attribute's value from 'false' to 'true'. Also remember to set the 'Delay' to '2500 ms'. You may now 'Save' the test:

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-ba02f19b7b4a25aee4286ae0eed99004bbf5ed0a%2Fcb-update-02.gif?alt=media" alt=""><figcaption></figcaption></figure>

The code above will run for each test group, and add the '\_igShowBlock' attribute to the cart. In the group 'Block OFF', having the attribute's value set to 'false' will ensure that it is not displayed for visitors in that group. For the group 'Block ON', the attribute's value will be set to 'true', ensuring its display rule is met, so visitors in that group see the 'edit' option on Checkout.

#### Step 5: Preview your test

You can now preview your test the same way you preview any other Content Tests. Simply open the test's preview, add a product to the cart, and proceed to the Checkout page. As you switch test groups in the preview widget, the Javascript injected for the group will run, updating the value of the '\_igShowBlock' attribute in the cart and determining whether or not the block on Checkout will be displayed:

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

***

### Other Block types

The Shopify Checkout Blocks app offers various block types you can test:

* **Product Upsells**: Test additional product recommendations
* **Dynamic Content**: Test personalized checkout messaging
* **Custom Fields**: Test additional information collection
* **Promotional Blocks**: Test discount or shipping messaging
* As long as you set a **Display Rule** on your block, as done in Step 2 in this guide, you can test any checkout block type using the same methodology described above!

### Best Practices

* **Test one block at a time** to isolate the impact of each element
* **Monitor key metrics** like conversion rate and cart abandonment
* **Use sufficient sample sizes** for statistically significant results
* **Consider mobile experience** when testing checkout blocks
* **Set appropriate test duration** based on your traffic volume

### Measuring Success

Track these key performance indicators:

* Checkout conversion rate
* Cart abandonment rate
* Average order value
* Time spent on checkout page
* Customer satisfaction scores


# Tariff Testing: On vs Off

### About Intelligems Tariff App

Intelligems has created a dedicated [Tariff Support app](https://apps.shopify.com/tariff-support-by-intelligems) to help merchants navigate the complexities of tariff implementation. We recognize that tariffs can be incredibly painful and completely change the viability of brands. We believe in transparent pricing - you can seamlessly break out tariff charges on your products. These are transparent to your customers so they know exactly how much they're paying and why.

#### **Key Features:**

* Choose which products to show a broken out tariff charge
* Configure the percentage of your tariffs
* Use advanced targeting and conditions to manage who sees it

### Introduction

Testing tariffs on versus off allows you to measure the impact of tariff fees on customer behavior and conversion rates. By comparing user experiences with and without tariffs enabled, you can understand how tariff costs affect purchasing decisions, cart abandonment rates, and overall revenue. This A/B testing approach helps you make data-driven decisions about tariff implementation and pricing strategies.

### Setup Instructions

#### Step 1: Install and Configure Tariff App

1. Install the Tariff App [here](https://apps.shopify.com/tariff-support-by-intelligems)
2. Configure tariff settings for your products

#### Step 2: Create an Onsite Edits Test with a Javascript injection

In Intelligems, create a Content Test using the 'Onsite Edits' test type with two test groups. For this example, we'll name the groups 'Tariffs Off' and 'Tariffs On':

**Disabled Group (Control)**

Add this JavaScript snippet as a JS injection to disable tariffs for the control group:

```javascript
void fetch("/cart/update.js", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    attributes: {
      enableTariffs: false,
    },
  }),
});
```

**Enabled Group (Variant)**

Add this JavaScript snippet as a JS injection to enable tariffs for the test group:

```javascript
void fetch("/cart/update.js", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    attributes: {
      enableTariffs: true,
    },
  }),
});
```

{% hint style="success" %}
The only difference between the two code snippets is the `enableTariffs` attribute value:

* **Disabled Group**: `enableTariffs: false`
* **Enabled Group**: `enableTariffs: true`
  {% endhint %}

### Best Practices

* **Run the test for sufficient duration** to gather statistically significant data
* **Monitor key metrics** like conversion rate, average order value, and cart abandonment
* **Consider seasonal factors** that might affect tariff sensitivity
* **Test with different product categories** to understand varying customer responses
* **Document your findings** to inform future pricing and tariff decisions

### Measuring Success

Track these key performance indicators:

* Conversion rate comparison between groups
* Cart abandonment rates
* Average order value
* Revenue per visitor
* Customer feedback and satisfaction scores

Use these insights to optimize your tariff strategy and improve the overall customer experience.


# Testing Express Payment Options

### Introduction

Testing whether to offer express payment options (like PayPal, Klarna, Afterpay, etc.) on your checkout page can be done using Intelligems with [Shopify Checkout Blocks](https://apps.shopify.com/checkout-blocks). Because the Shopify Checkout Block app is only available for brands on the Shopify Plus plan, this type of test is only possible for brands on Shopify Plus.

### Setup Instructions

#### Step 1: Create an Onsite Edits Test

In Intelligems, create a Content Test using the 'Onsite Edits' test type with two test groups (or more if you are hoping to test multiple variations). For this example, we'll stick with two groups and name the groups "Express Payment On" and 'Express Payment Off". You'll save the test without creating any onsite edits - this test essentially gives you the ability to split your traffic into two test groups and track the results.

#### Step 2: Copy your Test Group's Test ID

You can find this information by clicking on the three dots in the top right of your test > Show Info > clicking on the 12 digit ID next to the line that says "Express Payment Off For Google Analytics:".

#### Step 3: Configure your Checkout Block

1. Head to the Checkout Block app in Shopify and select the "Functions" option from the left hand nav
2. Click "Create Function" in the top right, followed by "Hide" under "Payment"
3. Choose "Create from blank template"
4. Give your Function a title, and choose "Cart rules" under "Type"
5. Click "Add method", select which payment method(s) you'd like to hide from the dropdown, and click "Add rule"
6. Select "Cart attributes", set the "Key" as "igTestGroups" and paste the ID you copied from the Intelligems app in the Value field
7. Save your new Function and set the status to "Active" - it will only hide the payment method(s) when it finds the test group ID associated with your test group in the cart, which will not happen until you preview or start your test

{% embed url="<https://www.loom.com/share/f765433e1b2447f7b671b5f38d54d00d?sid=84698a8c-cf66-4312-b5b6-e11f5590d274>" %}

#### Step 4: Preview your Test

Preview your test like any other Content Test. Open the test preview, add a product to cart, and go to checkout. When switching test groups in the preview widget, empty your cart to ensure the correct Cart Attribute controls express payment display.

### Best Practices

* **Test one item on the checkout page at a time** to isolate the impact of each element
* **Monitor key metrics** like conversion rate and cart abandonment
* **Use sufficient sample sizes** for statistically significant results
* **Set appropriate test duration** based on your traffic volume

### Measuring Success

Track these key performance indicators:

* Checkout conversion rate
* Express payment usage
* Cart abandonment rate
* Average order value


# Testing Blog Templates

### Introduction

Your blog is a key part of your content strategy, and testing different blog template designs can help you understand which layouts drive more engagement, time on site, and conversions. Whether you're testing a new blog index layout or individual article templates, A/B testing allows you to make data-driven decisions about your blog's design.

While blog templates aren't directly supported in Intelligems Template Tests, you can test them using a Split URL test combined with Shopify's `?view=` query parameter. This approach lets you split traffic between your current blog template and a new design without needing a full theme test.

### How It Works

Shopify allows you to display alternate templates by appending a `?view=` parameter to any URL. For example, if you have a blog template named `blog.new-design.json`, you can preview it by visiting:

```
https://your-store.myshopify.com/blogs/news?view=new-design
```

The suffix after `blog.` in your template filename becomes the value for the `view` parameter.

### Setting the Test Up

Before getting started, make sure you've added the [Intelligems script](https://docs.intelligems.io/getting-started/adding-intelligems-script-to-your-theme) to your Shopify theme and created the alternate blog template you want to test.

1. **Confirm your template suffix** — Find your new blog template in your theme files. If it's named `blog.new-design.json`, your suffix is `new-design`. Test it by visiting your blog URL with `?view=new-design` appended.
2. **Create a Split URL test** — In the Intelligems app, navigate to A/B Tests → Create New Test → Content Test → Split URL Test. Give it a name and description.
3. **Set up your redirect:**
   * **Origin URL (Control Group):** Enter your blog URL (e.g., `https://your-store.myshopify.com/blogs/news`)
   * **Variant destination URL:** Enter the same URL as the origin
   * **Query Parameters:** Click the + button to add a parameter. Enter `view` as the key and your template suffix (e.g., `new-design`) as the value
4. **Select "Redirect Every Time"** — This ensures visitors consistently see the same template throughout their session, rather than potentially switching between templates on subsequent visits.
5. **Set your test goals** — Choose the metrics you want to track (conversion rate, revenue per session, etc.) and launch your test!

> **Tip:** This same approach works for any template type that isn't directly supported in Template Tests, including article templates (`article.new-design.json`), search templates, and more.


# Testing Compare-At Prices

### Introduction

Many Shopify merchants display compare-at (strikethrough) prices alongside sale prices to signal a discount. But does showing that crossed-out price actually increase conversions, or does it create skepticism? A/B testing compare-at prices on vs. off helps you answer that question with real data.

{% hint style="info" %}
This is typically a **Content Test (Onsite Edits)**, not an Offer or Price test. If you're only testing whether the compare-at price is *visible* — and the actual cart/checkout price isn't changing — an Onsite Edits test is the right approach. Some merchants initially look for this in the Offer or Price test flows, since compare-at pricing can feel like an "offer." But if the price your customer pays at checkout stays the same, Onsite Edits is the way to go.
{% endhint %}

### Which Approach Should I Use?

The right setup depends on whether you want to show/hide compare-at prices across your **entire store** or only on **specific products**.

#### Option 1: All Products (Recommended)

**Best for:** Hiding or showing compare-at prices sitewide.

This is the most common version of this test. You'll use an [Onsite Edits test](https://docs.intelligems.io/content-testing/content-testing-getting-started/how-to-set-up-an-onsite-edits-test) to hide the compare-at price elements wherever they appear on your site.

1. Create a new **Content Test → Onsite Edits** with two test groups.
2. Leave the **Control** group unchanged (compare-at prices visible as-is).
3. For the **Variant** group, use a [CSS injection](https://docs.intelligems.io/general-features/css-and-javascript-injection) to hide the compare-at price elements.

For example, your CSS injection for the Variant group might look like:

```css
.compare-at-price {
  display: none !important;
}
```

Replace `.compare-at-price` with the actual CSS selector for compare-at prices on your store. See the section below on [finding the right selector](https://claude.ai/chat/93ed4368-5564-4838-93f8-c3cc426c10e8#finding-the-right-selector).

{% hint style="info" %}
Compare-at prices can appear in multiple places: product pages, collection pages, the homepage, search results, the cart drawer, and quick-view modals. Make sure your selector covers all of them, or add additional edits for each location. If the selector is the same everywhere, a single CSS injection may be all you need.
{% endhint %}

#### Option 2: Specific Products Only

If you only want to test compare-at prices on a subset of products, there are two paths:

**Onsite Edits with targeted selectors:** If the compare-at price elements on your site have product- or variant-specific attributes (like a `data-product-id`), you can build selectors that target only those products. However, this can get tricky — you'll likely also need to handle compare-at prices on collection pages where those products appear, and [Page Targeting](https://docs.intelligems.io/general-features/targeting/page-targeting) alone won't fully solve this since products show up across multiple page types.

**Price Test:** Alternatively, you can set up a [Price Test](https://docs.intelligems.io/price-testing) where the test group has the same sale price but no compare-at price value. This changes the actual Shopify data rather than just hiding the visual element. Depending on your theme, this may require additional theme adjustments or custom JavaScript to handle styling correctly — for example, ensuring the price doesn't still render in a "sale" style when there's no compare-at value.

For most merchants, **Option 1 (sitewide Onsite Edits)** is the simplest and most effective starting point.

### Finding the Right Selector

Getting the right CSS selector is the most important part of this setup. A bad selector means your test either won't work, will only work on one page, or will accidentally hide elements you didn't intend to touch.

#### The Common Pitfall

When you use the [Onsite Editor's](https://docs.intelligems.io/general-features/onsite-editor) point-and-click tool, it generates a CSS selector based on the specific element you clicked. This selector is often **too specific** — it targets the compare-at price for one product on one page, not all of them.

For example, the tool might generate:

```
#product-template-12345 .price__compare-at
```

This would only match one product. What you likely need is something broader:

```
.price__compare-at
```

#### How to Find a Universal Selector

You can identify the right selector using your browser's Developer Tools (Command+Option+C on Mac, Ctrl+Shift+I on PC):

1. Inspect a compare-at price element and note which CSS classes it uses.
2. Check multiple page types (PDP, collection page, homepage) to confirm the same class appears everywhere.
3. Test your selector in the browser console: `document.querySelectorAll('.your-selector')` — this should return all compare-at price elements on the page.

For more details, see our full guide on [Selecting the Right Element](https://docs.intelligems.io/general-features/onsite-editor/selecting-the-right-element).

#### Using Claude in Chrome to Build Selectors

If you're having trouble finding a selector that works across your entire site, the [Claude in Chrome Extension](https://chromewebstore.google.com/publisher/anthropic/u308d63ea0533efcf7ba778ad42da7390) can be a big help here. Unlike a standard AI chat, Claude in Chrome can actually read the page you're on and use the developer tools itself to inspect your site's DOM — so it can find the exact selector for your specific theme rather than guessing.

If a selector you have isn't working on all pages, try navigating to your store and prompting something like:

> *"This selector is only working on one page. Can you inspect this store and build me a selector to target all the compare-at prices across the entire store? I want to use the selector in an* [*Intelligems Onsite Edits test*](https://docs.intelligems.io/general-features/onsite-editor)*."*

Including the link to our Onsite Editor documentation gives Claude context on how the selector will be used, which helps it build something compatible with our test setup.

### QA Checklist

Before launching, confirm the following across both desktop and mobile:

* \[ ] Preview both test groups and check all page types: PDPs, collection pages, homepage, search results, and cart
* \[ ] Compare-at price is fully hidden in the Variant group (not just shifted off-screen)
* \[ ] Hiding the compare-at price doesn't break the regular price styling — some themes change the price color or add a "Sale" badge when a compare-at value exists, and hiding the compare-at element alone may leave those visual artifacts
* \[ ] Cart page and cart drawer line items don't still show compare-at prices
* \[ ] Your selector isn't accidentally hiding other elements — run `document.querySelectorAll('.your-selector')` and verify only compare-at prices are returned

For a full walkthrough, see the [Content Test QA Checklist](https://docs.intelligems.io/content-testing/content-test-qa-checklist).


# Content Experience QA Checklist

{% hint style="info" %}
This QA list is specific to a content test. If you are QAing a [shipping test](/shipping-experiences/shipping-test-qa-checklist) or a [pricing test](/pricing-experiences/price-test-qa-checklist), please check out QA checklists for those types of tests!
{% endhint %}

{% hint style="success" %}
**Let Atlas QA take the first pass.** Our quality assurance agent reviews your test configuration and your live storefront and returns a report telling you what's broken, why it matters, and how to fix it — with screenshots. Run it from the **QA & Preview** tab of any test. [Learn more](/general-features/atlas-ai/atlas-qa).
{% endhint %}

Once your content experience is setup, you'll need to QA your site to make sure everything is working as it should be. Before heading to your site, there are a few things you should check first to make sure your integration is functional:

* [ ] Is Intelligems JavaScript in your live theme? Check out [this article](/getting-started/adding-intelligems-script-to-your-theme) for more information on where to find this.
* [ ] Are you running a [Theme test](/content-experiences/content-experiences-overview/how-to-set-up-a-theme-change-experience)? If you are, is Intelligems JavaScript in the each of themes you are testing as well?

Once you have confirmed all of the above, you can preview the test on your live site. Enter Preview mode by clicking the `...` next to your test and select `Preview`

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FqsCZUV3rmL6DmGOxjlbp%2FScreenshot%202026-08-07%20at%202.02.03%E2%80%AFPM.png?alt=media&amp;token=d916be46-4481-40d8-a31d-8caa0e9354f9" alt=""><figcaption></figcaption></figure>

This will open your site up in a new window with the Intelligems preview widget enabled. In the preview widget, you'll see:

1. The name of the test you are previewing in the top left
2. A dropdown to switch between different test groups in the bottom left
3. A toggle to highlight any replacements in the top right
4. An edit button in the bottom right; this enables integration mode, where you can edit any replacements

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FjmJCggaCTiMmLimuG2VF%2FScreenshot%202026-08-07%20at%202.03.53%E2%80%AFPM.png?alt=media&amp;token=5af5c652-2f78-4a88-8b11-d0621459a1c1" alt=""><figcaption></figcaption></figure>

Now that you are on your site, use the preview widget to toggle between your test groups to make sure the correct content is showing on your site for each test group. What you should check depends on what type of content test you are previewing. For a few areas you should check for each test type, see below.

#### Theme Change Experiences

* [ ] When you switch test groups in the dropdown, does the theme update to display the correct theme? You can check this based on differences that you know of in the test theme, or by searching the source code for the current theme name. You should also see a message similar to the below at the bottom of the preview widget for any themes that are not currently live.

  <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-db71becacc192f075f3615a2501c2a3a7d2c2b68%2FScreenshot%202023-10-20%20at%203.38.01%20PM.png?alt=media" alt=""><figcaption></figcaption></figure>
* [ ] Does a Shopify preview bar show at the bottom of your window when you are in a test theme? This shouldn't happen; confirm that the Intelligems JavaScript is in all themes included in the test in both the theme.liquid and the checkout.liquid files.
* [ ] **Key Steps:**

  1. Enter preview mode in the control group
  2. Open JavaScript Console (`Cmd+Option+J` Mac / `Ctrl+Shift+J` Windows)
  3. Type `Shopify.theme` to see current theme details
  4. Switch groups and check that theme changes

  **What to verify:** Control shows your live theme name and version, variant shows the different test theme name and version.

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

#### Template Change Experiences

* [ ] When you switch test groups in the dropdown, are the correct templates used where they are being tested? You can check this based on differences that you know of in the templates.
* [ ] **Key Steps:**

  1. Start in preview mode on the control group
  2. Open Chrome Developer Tools → JavaScript Console (`Cmd+Option+J` Mac / `Ctrl+Shift+J` Windows)
  3. Type `_template` to see the current template name
  4. Switch groups and verify the template name changes

  **What to verify:** Control shows base template (e.g., `product`), variant shows template with suffix (e.g., `product.123456`)

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

#### Redirect Experience

* [ ] Go to a page that is included in a redirect while in a non-control group in the preview widget. Are you redirected to the correct link?
* [ ] Check the above for each experience group and page being tested. You'll need to navigate away from the test page and go back once you have changed groups to be redirected.
* [ ] Do you have the Redirect Once checkbox selected for any of your redirects? Read more about how that functions [here](/content-experiences/content-experiences-overview/how-to-set-up-a-redirect-experience) and confirm you have the correct setting on for your experience.

#### Content Edit Experiences

* [ ] Navigate to a location on your website where you have set up a text, image, or CSS / JS replacement. Switch groups in the widget and confirm that the content is updating as expected.
* [ ] Continue the above until you have checked all locations where a replacement has been set up.
* [ ] Do a sweep of the site to make sure content is not being updated somewhere that it shouldn't be. Our replacements are based on selectors. If there is a selector that is the exact same somewhere else on the site, the content there could be updated inadvertently. To avoid this happening, try setting up [Page Targeting](https://docs.intelligems.io/content-testing/targeting#what-is-intelligems-page-targeting) or including a "Find" in your Find & Replace.

#### A few other things to keep in mind:

* [ ] Do you have Page Targeting set up on your experience? If so, if you are on a URL that does not match your targeting, you'll see a message like the below in the preview widget. This will confirm that your page targeting is working as expected since you are not meeting any of the conditions.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-9f4330b499b6e779677e9ccd56f5150857add2f3%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

* [ ] You can further confirm that Page Targeting is working by going to one of the URLs that does match your targeting. Once you do so, you'll see the widget will no longer show a message on the bottom about being excluded.


# Content Experiences FAQs

Common Questions about Content Testing

## General

<details>

<summary>Why should I run a template or content replacement test instead of a theme test?</summary>

Theme tests are a great way to test large changes to your store, or experiments that would otherwise require a developer to implement. There are a few drawbacks to keep in mind, however, so you may choose to run a template test or content replacement test instead:

1. A theme test means you have multiple live themes. Your customers are accessing your store via multiple themes, so you need to ensure any changes unrelated to the test (e.g., adding a landing page, editing copy or imagery) are made in all themes in the test.
2. Every visitor goes through a redirect. As mentioned above, theme tests are relatively high performing, but every visitor placed into a non-control group will still go through a one-time redirect to bring them to the correct theme for their group. While the UX impact of this one-time redirect is generally low, you may be able to avoid it altogether by using a content replacement test to dynamically edit content or inject HTML/CSS/JS.
3. You won't be able to delete any themes in the test for a while. During the experiment, visitors are sent to draft themes, and their browser will "remember" which theme to open the next time they visit your store via a session cookie. Once the test is over, if a visitor who was in one of the test groups re-visits your store and the cookie is still active, Shopify will first load the draft theme, and Intelligems will then immediately reset them back to the live theme. However, if the draft theme that was in the test has since been deleted, Intelligems won't be loaded and won't have the opportunity to reset the visitor's theme. Instead, the visitor see an error from Shopify, since they're trying to load a theme that does not exist.\
   \
   So, it's important to leave any themes that were tested in draft mode (rather than deleting them) for a while after the experiment (we recommend at least 1 month), to ensure any returning visitors are reset back to the live theme.

</details>

<details>

<summary>I'm running a content test and noticed the control content (i.e. URL, theme, language, etc.) flashes for a second before I see the test group content. How can I fix this?</summary>

Intelligems has two options for installing our JavaScript in your theme:

1. By using our app embed
2. By manually installing it into the theme code

The app embed works really well in most cases, but it can cause some flashing for certain tests and sites. If you notice this happening on your site, we recommend following these steps:

1. Turn the app embed off in all theme included in the test. You can do this by going to Shopify and in the online store section, click "Customize" next to each theme. In the left side menu, click the bottom option, which is "App Embeds". Turn the toggle off next to Intelligems and hit save.
2. Follow [these steps](/developer-resources/theme-and-storefront-setup/intelligems-theme-snippets#option-2-add-script-tag-in-theme-head) to manually add the Intelligems script tag to your theme's head in the theme.liquid and all theme.\*.liquid files.

If you still notice any flashing after making that change, please reach out to our support team [here](broken://spaces/q32N3K9wK9X5CCWMhuVe) - there are a few settings we can turn on that allows us to load more information more quickly to avoid any flashing.

</details>

<details>

<summary>Can I test the One Page vs Three Page checkout, or test specific components on the checkout page, such as whether to include upsells?</summary>

Unfortunately we cannot A/B test the One Page vs Three Page checkout currently - this option has to be either on or off, so there isn't a way for us to turn it on for some visitors and not others. This is a Shopify limitation.

We can test other components on the checkout page if you are on Shopify Plus. You can test components on that page using our Checkout Experiences feature, which you can read more about [here](/checkout-experiences/getting-started-with-checkout/testing-checkout-experiences). This feature is limited to Shopify Plus because it uses Shopify's Checkout Blocks feature, which is only available for brands on Shopify Plus.

</details>

## Onsite Edits Tests

<details>

<summary>Can we test an image vs. a video (MP4)?</summary>

Yes! This can be done using an [Visual Experience Builder](/general-features/editors/visual-builder).

</details>

<details>

<summary>What is a query selector and why does Intelligems use them?</summary>

A query selector is a way to select an element on a webpage using CSS-style syntax in JavaScript. In this case, we created a query selector based on the element you clicked on, which means it automatically targets that specific part of the page. However, this selector is just a starting point—you can edit it to be more general, more specific, or to target a different element altogether, depending on what you need your code to do.

</details>

<details>

<summary>Can we test our Pop-Ups with Intelligems?</summary>

Yes!

Yes, whether your pop-up comes from a third-party app or is built into your theme. Both setup routes, the code you'll need, and how to track engagement are covered here:

[Testing Pop-Ups](/content-experiences/content-experiences-overview/content-test-common-use-cases/testing-pop-ups)

</details>

## Redirect (Split URL)

<details>

<summary>Why must visitors visit the Origin URL to be included in the test?</summary>

Visitors must visit the Origin URL because this is the only page where Intelligems can detect their arrival and assign them to a test group. When a visitor lands on the Origin URL, our system:

1. Identifies that they've entered the experience
2. Assigns them to either the Control Group or a test variation
3. Redirects test group visitors to their designated destination URL

Without visiting the Origin URL first, there's no trigger point for test group assignment, so visitors remain outside the test entirely. This also keeps the test's denominator limited to people who have been exposed to the test, keeping your data as actionable as possible.

Another thing to note is that URL redirect tests work in **one direction only**: from the Origin URL to the test destination URLs. Therefore, if a visitor lands directly on a destination URL (bypassing the Origin URL), they won't be included in the test. This is because:

* They never triggered the test assignment process
* Intelligems doesn't know they should be part of the test
* They won't be tracked in test results or analytics

To ensure accurate test results, visitors must enter through the Origin URL to be properly allocated and tracked.

</details>

<details>

<summary>I got an error that said I am on the wrong destination URL for my test group while previewing my test - what does this mean?</summary>

In a split URL test, Intelligems monitors site visitors who visit your Origin URL, then either keeps them there or redirects them based on their assigned test group. Our preview widget detected that you're on a destination URL for a test group that you're not currently previewing. Please note, Intelligems will not redirect you away from a destination URL, as our redirects only function in one direction: from the origin to the destination.

To continue testing your split URL test, please navigate to the Origin URL again.

</details>

<details>

<summary>I got an error that said I have enabled the setting for "Redirect One Time" for this test, and I have already been redirected while previewing my test - what does this mean?</summary>

Intelligems has two options for how a visitor can be redirect in a split URL test -

1. Redirect One Time: A visitor will only be redirected the first time they land on the origin URL
2. Redirect Every Time: A visitor will be redirected every time they land on the origin URL

Because you have enabled "Redirect One Time" for your test, and you have already been redirected one time, Intelligems will not redirect you again, unless you clear your redirect history by clicking the button to do so in the preview widget.

If you'd prefer to change this setting, please see our help guide [here](/content-experiences/content-experiences-overview/how-to-set-up-a-redirect-experience) on where you can do so.

</details>

<details>

<summary>Can I run Redirect tests on multiple domains?</summary>

Yes! If your brand operates multiple domains under one Shopify account, you can register all of them in **Settings → Domain Settings**. This allows you to:

* Set up Split URL tests for any registered domain
* Use subdomain redirects for each domain (e.g., shop.yourbrand.com → landing.yourbrand.com)

**Important limitation:** Cross-domain redirects are not supported. You cannot redirect visitors from one top-level domain to another (e.g., yourbrand.com → yourbrand.co.uk). Redirects must stay within the same domain or its subdomains.

</details>

## Template Tests

<details>

<summary>Why must visitors visit a page assigned to the Control Group's template in Shopify to be included in a Template test?</summary>

Visitors must visit a page that uses the Control Group's template because this is the only way Intelligems can detect their arrival and assign them to a test group. When a visitor lands on a page using the control template, our system:

1. Identifies that they've entered the test
2. Assigns them to either the Control Group or a test variation
3. Dynamically serves the appropriate template based on their test group

Without visiting a page that uses the control template, there's no trigger point for test group assignment, so visitors remain outside the test entirely.

You can check which pages are assigned to a template in Shopify by following [these steps](https://www.loom.com/share/5f4cd7c9e008488287d4086d370a50f3?sid=b4028c6b-b07d-4b6b-8690-ff1507766205), or in your Shopify admin.

If your control template isn't assigned to any pages in Shopify, no visitors will be included in your test. To fix this:

1. Assign your control template to relevant pages in Shopify
2. Or choose a different template to use as your Control that's already assigned to pages you want to test

</details>

<details>

<summary>How can I roll out a winning homepage template?</summary>

Shopify doesn't allow you to switch homepage templates. The winning template will have to be recreated in the original template.

An easy way to do this is within the theme editor. Find the test template and copy its contents into the default template (usually `index.json`).

![](https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-0d56f6bf7fdff603a65918567a58a7342ff236bd%2Fimage%20\(13\).png?alt=media)

</details>

<details>

<summary>Is it safe to delete variant template files from Shopify after a Template Test ends?</summary>

Yes — once a template test is fully **Ended** in the Intelligems dashboard, it is safe to delete the variant template files from your Shopify theme. If a returning visitor with a stale assignment cookie visits a page that was previously served by the deleted variant template, Intelligems will redirect them to the control template instead. They will not see an error or experience an infinite redirect loop.

This is different from **theme tests**, where deleting a variant (draft) theme while visitors still have active cookies can cause those visitors to see a Shopify error page, since Shopify tries to load the now-deleted theme before Intelligems can intervene. Template tests do not carry this same risk.

**Note:** This safe fallback behavior applies to **ended** tests. If you delete a variant template while a test is still **live or paused**, Intelligems may not be able to properly serve the variant, which can cause unexpected behavior for visitors in that test group. Always end the test before deleting variant templates.

</details>

## Theme Tests

<details>

<summary>Why do I see the Shopify theme preview bar during my theme test?</summary>

During a properly functioning Intelligems theme test, visitors will never see the Shopify theme preview bar. If you're seeing the preview bar, it's likely because the Intelligems JavaScript is not installed in all themes being tested. The Intelligems script needs to be in the live theme, plus all themes in the test.

If the script is in only the live theme, for example, visitors will be put into test groups and will be redirected to a draft theme, but since the Intelligems script is not in the draft theme, the preview bar will not be hidden once they're there, and Intelligems' analytics tracking will not function properly.

To fix this issue, install the Intelligems script in the live theme and all themes that you're testing. Since theme tests require a redirect, we recommend installing the Intelligems script synchronously by adding the script tag to your theme's head in the theme.liquid and all theme.\*.liquid files (learn more [here](/developer-resources/theme-and-storefront-setup/intelligems-theme-snippets#option-2-add-script-tag-in-theme-head)).

</details>

<details>

<summary>How does a theme test impact page load speeds?</summary>

Theme tests are relatively high performing, however, there may be a performance impact on a visitor's first page view. If Intelligems detects that a visitor is in the wrong theme, it will immediately reload the page in the correct theme. From then on, that visitor will be in the correct theme for their test group, which may be an unpublished theme. Our benchmarking shows that there is no performance impact on these subsequent page views, even for unpublished themes. If you're concerned abotu the potential performance impact of a reload on the first page view, you might consider using an onsite edit test instead.

</details>

<details>

<summary>After my theme test ended, some of my team still sees an old theme from time to time. Are real visitors affected too?</summary>

In almost every case, this is an internal-only thing and your real visitors are fine.

When a visitor is placed in a theme test, their group is stored in a first-party session cookie that tells their browser which draft theme to load. Once the test ends, if a returning visitor still has that cookie, Shopify loads the draft theme first and Intelligems immediately resets them back to your live theme. So actual shoppers land on your live theme, not the old one (as long as the draft theme still exists, see [Ending a Theme Experience](/content-experiences/content-experiences-overview/how-to-set-up-a-theme-change-experience/ending-a-theme-test) for more details).

What your team is usually running into is different, and it comes from previewing themes in Shopify Admin rather than from the visitor cookie:

1. Previewing a theme that was part of a test can reassign you to that test's group, so you land on the theme for your group.[ More on this in the preview FAQs on the theme experience setup page.](/content-experiences/content-experiences-overview/how-to-set-up-a-theme-change-experience)
2. After a test ends, there's a one-time redirect **per theme** so nobody stays stuck on a preview theme. The first time you open each of those themes after the test, you may get bounced once, and then it previews normally.

Because your team is in the admin previewing themes regularly, this can show up "from time to time" for them while never affecting customers. Anyone who wants it to stop immediately can clear their cookies and cache, or open the store in an incognito window.

A couple of things worth knowing:

* **This is not caused by caching on our end.** Intelligems doesn't run an edge or CDN layer that stores or serves theme pages. Theme selection is a client-side redirect driven by the cookie and our script running inside the theme, so there's no cached variant page for us to clear.
* **Don't delete the old draft themes.** While a tested theme still exists as a draft, the reset-to-live works cleanly. If you delete one, a returning visitor who still has its cookie can hit a Shopify error page instead, since there's no theme left for us to load and redirect from. We recommend leaving tested themes in draft for at least a couple of months after the test ends.

</details>


# Merchandising Experiences Overview

Merchandising modifications allow you to serve discounts and promotions to your visitors without code leakage, test them against each other, and track their success.

A Merchandising Experience changes the offer in the cart. Shoppers get the discount or the gift automatically when they qualify, with no code to enter.

Run it as a **Test** and Intelligems holds back a control group and reports what the offer did to AOV and profit per visitor. Run it as a **Personalization** and the offer stays on for the audience you target.

### **The 4 experience types**

Click **New Merchandising Experience** on the Merchandising page and these show up as cards.

| Type                                                                                                                      | What it's for                                        |
| ------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- |
| [**Amount off Products**](/merchandising-experiences/offer-modifications/how-to-set-up-an-amount-off-products-experience) | Discount specific products by percentage or amount   |
| [**Amount off Order**](/merchandising-experiences/offer-modifications/how-to-set-up-an-amount-off-order-experience)       | Apply an automatic cart-wide discount                |
| [**Volume Discount**](/merchandising-experiences/offer-modifications/how-to-set-up-a-volume-discount-experience)          | Reward larger quantities with tiered pricing         |
| [**Free Gift**](/merchandising-experiences/offer-modifications/how-to-set-up-a-free-gift-experience)                      | Add a free gift when the cart hits a threshold       |
| [**Buy X Get Y**](/merchandising-experiences/offer-modifications/how-to-set-up-a-buy-x-get-y-bxgy-experience)             | Buy X, get Y free or discounted                      |
| [**Onsite Upsell**](/merchandising-experiences/offer-modifications/how-to-set-up-onsite-upsells)                          | Recommend add-ons on the product page or in the cart |

Volume Discount supports up to seven tiers, so you can go well past buy-two-save-ten and find where the extra unit stops paying for itself.

Onsite Upsell is in beta. You can request access from its setup guide.

## Setting up Merchandising Components

You can optionally show various [components](/merchandising-experiences/offers-integrating-widgets) that communicate your offer to users. The components vary depending on what type of merchandising offer modification you are using, but the full options include:

* **Pop Up / Slide Out:** This pop up location can be configured during setup. The language and colors are fully customizable so you can use this feature to highlight what you want.

{% hint style="warning" %}
**Pop Up / Slide Out Messages** are only shown on the homepage and cannot be configured to be shown on any other pages at this time.
{% endhint %}

* **Quantity Buttons:** These buttons will appear on your product pages for customers to quickly add multiple units to cart. They are automatically installed via the Intelligems script. If you have any trouble with these showing up inside an Offer Personalization, [please use this form to contact our support team](https://portal.usepylon.com/intelligems/forms/intelligems-support-request). Let us know which experience and specific URLs we can help you with.
* **Shipping Progress Bar & Offer Progress Bar:** This bar will appear in the cart view to show your customers how much more they need to purchase to achieve specific discounts or free shipping, prompting them to buy more to get the best deal without ever leaving their cart. More info [here](/merchandising-experiences/offers-integrating-widgets).

{% hint style="danger" %}
**Headless Stores:** Components do not work out-of-the-box and customers must build their own front-end implementation.
{% endhint %}

## How do offers Work?

Intelligems uses [Shopify Discount Functions ](https://shopify.dev/docs/api/functions/reference/product-discounts)to provide the offers you set up in the Intelligems app. The necessary Function will be created automatically when you create a new offer Experience or offer test in the Intelligems app, but will not be available to customers until you start your offer test or activate your the Experience containing your offer.

Offers have a cap and can be combined with each other and with Shopify discounts. See [Merchandising Experience Limits](/merchandising-experiences/offer-modifications/offers-limits) and [Merchandising Combinations](/merchandising-experiences/offer-modifications/offer-combinations).

Before you start one, walk the [Merchandising Experience QA Checklist](/merchandising-experiences/offer-test-qa-checklist). The [Merchandising Experiences FAQs](/merchandising-experiences/merchandising-experiences-faqs) cover discount stacking, minimums, and gift behavior.


# How to Set Up an Amount off Products Experience

An Amount off Products Experience takes a percentage or a dollar amount off the specific products you choose. The discount applies automatically in the cart, so shoppers get it without entering a code and there's nothing for a coupon site to pick up.

Run it as a **Test** and Intelligems holds back a control group and reports what the discount did to AOV and profit per visitor. Run it as a **Personalization** and the discount stays on for the audience you target.

{% hint style="warning" %}
This offer changes the totals in the cart and at checkout. It does not change the prices shown on your product or collection pages, and it won't add a strikethrough. If you need the discounted price to appear on the PDP, use a Price Change Experience instead.
{% endhint %}

### **Where to start**

### 1. Create the experience

**Amount off Products** appears under both **Merchandising** and **Pricing** in the **Choose an Experience to create** modal. It's the same experience type either way, so start from whichever module you're already in:

* On the left navigation, click **Merchandising**, then **New Merchandising Experience**
* Or click **Pricing**, then **New Pricing Experience**

Pick the **Amount off Products** card.

{% hint style="info" %}
Merchandising is a module you subscribe to, and the Test and Personalization paths aren't always enabled together. Check your plan before you build.
{% endhint %}

### 2. Choose: Test or Personalization

* **Running it as a Test?**
  * Rename the Test and add a Description. This is optional and internal only, but tests can stay live for weeks, so the more detail here, the more your future self will thank you.
  * Click the **+** button to create a group for each variation (2–5 groups) and name them.
  * Use the slider to set the traffic split for each group.
  * Click **Next Step** when you're done.
  * Note: the more groups you add, the longer it'll take to reach [statistical significance](/analytics/overview/experiment-analytics/statistical-significance).
* **Running it as a Personalization?** Skip groups entirely. You're building one always-on version for your targeted audience.

### **3. Set up the offer**

These fields are the same in both modes.

* **Discount name:** the name shoppers see in their cart and at checkout. It's the line that tells them why they're paying less, so name it after the offer rather than after your internal campaign.
* **Discount value:** choose **Percentage off item** or **Fixed amount off per item**, then enter the amount. A fixed amount tends to land better on higher-AOV products, where a flat dollar figure feels more meaningful than a percentage.
* **Minimum purchase requirements:** off by default, so the discount applies with no threshold. Check the box to require a **Quantity of items** or a **Subtotal of items** first. A threshold gives shoppers a reason to add one more unit, which lifts AOV.
* **Applies to:** select which products the discount covers. If you don't select any, all products are eligible. You can select by Product Type, Vendor, Status, or Collection, or search for individual products.
* **Combinations:** **Shopify discounts** and **Intelligems discounts** are both checked by default, so the offer stacks. Clear a box to stop it stacking with that kind of discount. Combining with a Shopify discount also depends on the Shopify side, so that discount has to be set to combine in your Shopify admin or it won't stack no matter what you check here.
* **Maximum Discount Amount:** check **Limit total amount discounted** to cap what one customer can take off. Worth setting on a percentage discount, where a large cart can give away more margin than you planned for.
* **Purchase type:** one-time purchases only by default. You can switch to subscription purchases only, or to both.

{% hint style="info" %}
If you choose a subscription option, the discount will only apply to the first order. It will not apply to any refills.
{% endhint %}

### **4. Add components**

Components tell shoppers the offer exists. Amount off Products supports two:

* **Progress Bar** shows how close the cart is to your threshold, which nudges shoppers to add another unit.
* **Offer message** carries the promotion on your homepage, so shoppers know about the discount before they reach the cart.

{% hint style="warning" %}
The Progress Bar counts your whole cart toward the threshold, not just the products you selected under **Applies to**. If you've scoped the discount to one collection, the bar will still fill on items that won't be discounted. Scoping the offer to all products keeps the bar and the discount aligned.
{% endhint %}

You add components here in the builder and style them in Global Styles.

### **5. Set targeting (optional)**

For a Test, a visitor's group is assigned on their first visit and stored via a first-party cookie, so they'll see the same variant on repeat visits during the test.

For a Personalization, everyone who matches your targeting sees it every time.

Either way, you can narrow who's included in several ways, all under the Audience option unless noted:

* UTM parameters
* JavaScript expressions
* Device type (mobile or desktop)
* New vs. returning visitors
* [Mutually Exclusive Tests](/general-features/targeting/mutually-exclusive-experiments) prevent visitors from being targeted by related experiments at the same time, to avoid interaction effects

{% hint style="warning" %}
If you built your test groups by duplicating existing Personalizations, any targeting set on those Personalizations is ignored. The test's own audience, currency, and page targeting is used in its place.
{% endhint %}

### **6. Configure analytics**

Choose whether analytics should default to only orders containing specific products (helpful if your offer targets a particular PDP), or orders containing any products in your shop. You can always change this later in your Analytics filters.

What you configure next depends on which path you chose in step 2:

* Personalization? Add any [Custom Metrics](/analytics/overview/custom-events) you want to track, beyond the built-in ones.
* Test? Choose your Key Metrics and Primary Metric to measure against your control group, plus any [Custom Metrics](/analytics/overview/custom-events).

### **7. Preview and activate**

Preview your changes on the live site, then activate. The [Merchandising Experience QA Checklist](/merchandising-experiences/offer-test-qa-checklist) covers what to check in the cart and at checkout before a shopper sees it.

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


# How to Set Up a Buy X Get Y (BXGY) Experience

A Buy X Get Y (BXGY) Experience runs "buy 2, get 1 free" style promotions natively — no separate app, no manual Shopify discount setup. You set a Buy quantity and a Get quantity, choose what happens to the Get items (free, a percentage off, or a fixed amount off per item), and pick which products qualify on each side. Shoppers get the reward automatically once their cart qualifies, making it seamless without a code to enter.

You build the offer once, then decide how it runs. Run it as a Test and Intelligems holds back a control group and reports what BXGY did to conversion rate, AOV, and revenue lift. Alternatively, you can run it against another offer, such as a flat percent off sitewide, to see what works best with your customer base. Finally, if you already feel confident in your offer, run it as a Personalization and the offer stays on for the audience you target.

The discount is applied by the same Intelligems discount function that powers every other offer, so the price the shopper sees in the cart and at checkout match.

## Where to start

### 1. Create the experience

On the left navigation, click **Merchandising**, then **New Merchandising Experience**. Pick the **Buy X Get Y** card, then choose whether to run a Test or create a Personalization.

### 2. Set up the offer

* **Discount name:** the line the shopper reads as the reason they're paying less.
* **Combinations:** only Shopify discounts appears here. There's no Intelligems discounts checkbox — a BXGY can't be prevented from combining with the brand's other Intelligems offers, so that control is left off the page rather than shown as a checkbox that does nothing. If a shopper qualifies for a BXGY and another Intelligems discount at the same time, they get both. Free Gift behaves the same way today. The Shopify discounts checkbox works normally, same as every other offer type.
* **Buy and Get Products:** choose Same products or Different products.
  * Same products — the buy side and the get side pull from one set. This is the classic buy 2 get 1 free. Below it, Customer buys & gets shows a single Select products field (all products by default) — these are the products that both trigger the offer and receive the discount.
  * Different products — separate pickers for what the shopper has to buy vs. what gets the discount. This is how you build cross-product BXGY: buy from Collection A, get an item from Collection B free or discounted.
* Mix and match: on by default, so customers can mix eligible products to reach the required quantity, including on the get side. Turn it off to require the same product for every unit.
* **Buy quantity, Get quantity, Discount type:** three fields in a row. Buy quantity and Get quantity are numbers; Discount type is Free, Percentage off, or Fixed amount off, applied per item. Below the row, a live preview line spells out what you've configured — e.g. "Customer adds 3 eligible items to cart → cheapest item is free."
* **Purchase type:** one-time purchases only by default. You can switch to subscription purchases only, or to both. On a subscription option the discount applies to the first order and not to refills. This setting applies to both the Buys & the Gets.

### 3. Add merchandising

Any onsite merchandising for your BXGY offer — a progress bar, an announcement bar, PDP callouts, or anything else visual — will get built in the visual builder, the same tool used for custom onsite content elsewhere in Intelligems.

To build it:

1. In the Modifications tab, click Add Modification in the top right.
2. Click Content Edits.
3. Scroll down and click Visual Builder.
4. Prompt the chat on the right to make the visual changes you want.
5. Check the in-app preview to confirm they're working as expected, and tweak as needed.
6. Once you're happy with it, hit save and exit the visual builder to finish setting up your test or personalization.

### 4. Set targeting (optional)

For a Test, a visitor's group is assigned on their first visit and stored via a first-party cookie, so they'll see the same variant on repeat visits during the test.

For a Personalization, everyone who matches your targeting sees it every time.

Either way, you can narrow who's included in several ways, all under the Audience option unless noted:

* UTM parameters
* JavaScript expressions
* Device type (mobile or desktop)
* New vs. returning visitors
* [Mutually Exclusive Tests](/general-features/targeting/mutually-exclusive-experiments) prevent visitors from being targeted by related experiments at the same time, to avoid interaction effects

### 5. Configure analytics

Choose whether analytics should default to only orders containing specific products (helpful if you’ve limited your offer to specific products), or orders containing any products in your shop. You can always change this later in your Analytics filters.

What you configure next depends on which path you chose in step 2:

* Personalization? Add any [Custom Metrics](/analytics/overview/custom-events) you want to track, beyond the built-in ones.
* Test? Choose your Key Metrics and Primary Metric to measure against your control group, plus any [Custom Metrics](/analytics/overview/custom-events).

### 6. Preview and activate

Preview your changes on the live site, then activate. The [Merchandising Experience QA Checklist](/merchandising-experiences/offer-test-qa-checklist) covers what to check in the cart and at checkout before a shopper sees it.


# How to Set Up an Amount off Order Experience

An Amount off Order Experience takes a percentage or a flat dollar amount off the whole cart. The discount applies automatically, so shoppers get it without entering a code and there's nothing for a coupon site to pick up.

Run it as a **Test** and Intelligems holds back a control group and reports what the discount did to AOV and profit per visitor. Run it as a **Personalization** and the discount stays on for the audience you target.

{% hint style="warning" %}
This offer changes the totals in the cart and at checkout. It does not change the prices shown on your product or collection pages. If you need the discounted price to appear on the PDP, use a Price Change Experience instead.
{% endhint %}

### **Where to start**

### 1. Create the experience

On the left navigation, click **Merchandising**, then **New Merchandising Experience**. Pick the **Amount off Order** card.

{% hint style="info" %}
Merchandising is a module you subscribe to, and the Test and Personalization paths aren't always enabled together. Check your plan before you build.
{% endhint %}

### 2. Choose: Test or Personalization

* **Running it as a Test?**
  * Rename the Test and add a Description. This is optional and internal only, but tests can stay live for weeks, so the more detail here, the more your future self will thank you.
  * Click the **+** button to create a group for each variation (2–5 groups) and name them.
  * Use the slider to set the traffic split for each group.
  * Click **Next Step** when you're done.
  * Note: the more groups you add, the longer it'll take to reach [statistical significance](/analytics/overview/experiment-analytics/statistical-significance).
* **Running it as a Personalization?** Skip groups entirely. You're building one always-on version for your targeted audience.

### **3. Set up the offer**

These fields are the same in both modes.

* **Discount name:** the name shoppers see in their cart and at checkout. It's the line that tells them why they're paying less, so name it after the offer rather than after your internal campaign.
* **Discount value:** choose **Percentage off order** or **Fixed amount off per order**, then enter the amount.
* **Minimum purchase requirements:** off by default, so the discount applies to any cart. Check the box to require a **Quantity of items** or a **Subtotal of items** first. A threshold gives shoppers a reason to add one more item, which lifts AOV.
* **Applies to:** all products by default. Narrow it if the sale is only meant to cover part of your catalog, and only carts containing those products get the discount. You can select by Product Type, Vendor, Status, or Collection, or search for individual products.
* **Combinations:** **Shopify discounts** and **Intelligems discounts** are both checked by default, so the offer stacks. Clear a box to stop it stacking with that kind of discount. Combining with a Shopify discount also depends on the Shopify side, so that discount has to be set to combine in your Shopify admin or it won't stack no matter what you check here.
* **Maximum Discount Amount:** check **Limit total amount discounted** to cap what one customer can take off. Worth setting on a percentage discount, where a large cart can give away more margin than you planned for.
* **Purchase type:** one-time purchases only by default. You can switch to subscription purchases only, or to both.

{% hint style="warning" %}
**Selling in more than one currency?** Use **Percentage off order**. A fixed amount is applied as a raw number and won't convert through Shopify Markets, so a $15 discount reaches a shopper browsing in another currency as 15 of their currency. A percentage scales correctly whatever the shopper is seeing.
{% endhint %}

{% hint style="info" %}
If you choose a subscription option, the discount will only apply to the first order. It will not apply to any refills.
{% endhint %}

### **4. Add components**

Components tell shoppers the offer exists. Amount off Order supports two:

* **Progress Bar** shows how close the cart is to your threshold, which nudges shoppers to add another item.
* **Offer message** carries the promotion on your homepage, so shoppers know about the discount before they reach the cart.

You add components here in the builder and style them in Global Styles.

### **5. Set targeting (optional)**

For a Test, a visitor's group is assigned on their first visit and stored via a first-party cookie, so they'll see the same variant on repeat visits during the test.

For a Personalization, everyone who matches your targeting sees it every time.

Either way, you can narrow who's included in several ways, all under the Audience option unless noted:

* UTM parameters
* JavaScript expressions
* Device type (mobile or desktop)
* New vs. returning visitors
* [Mutually Exclusive Tests](/general-features/targeting/mutually-exclusive-experiments) prevent visitors from being targeted by related experiments at the same time, to avoid interaction effects

{% hint style="warning" %}
If you built your test groups by duplicating existing Personalizations, any targeting set on those Personalizations is ignored. The test's own audience, currency, and page targeting is used in its place.
{% endhint %}

### **6. Configure analytics**

Choose whether analytics should default to only orders containing specific products (helpful if your offer targets a particular PDP), or orders containing any products in your shop. You can always change this later in your Analytics filters.

What you configure next depends on which path you chose in step 2:

* Personalization? Add any [Custom Metrics](/analytics/overview/custom-events) you want to track, beyond the built-in ones.
* Test? Choose your Key Metrics and Primary Metric to measure against your control group, plus any [Custom Metrics](/analytics/overview/custom-events).

### **7. Preview and activate**

Preview your changes on the live site, then activate. The [Merchandising Experience QA Checklist](/merchandising-experiences/offer-test-qa-checklist) covers what to check in the cart and at checkout before a shopper sees it.

### **Before you start**

Your discount won't apply to real carts until you start the test or activate the Personalization. Intelligems creates the Shopify Discount Function when you build the offer, and it stays dormant until then, so an unstarted offer showing no discount in cart is expected.

Run the QA checklist, and check the FAQs if the discount doesn't behave the way you expect.

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


# How to Set Up a Volume Discount Experience

A Volume Discount Experience rewards a bigger cart with a bigger discount. You set tiers, and each tier can carry a percentage off, a fixed amount off, free shipping, a free gift, or a discount and a perk together. Shoppers get the reward automatically when their cart qualifies, so a tier is worth chasing without a code to enter.

You build the offer once, then decide how it runs. Run it as a **Test** and Intelligems holds back a control group and reports what the tiers did to units per order and profit per visitor. Run it as a **Personalization** and the tiers stay on for the audience you target.

{% hint style="warning" %}
This offer changes the totals in the cart and at checkout. It does not change the prices shown on your product or collection pages. To show tier pricing before the cart, add the Quantity Buttons component.
{% endhint %}

### **Where to start**

### 1. Create the experience

On the left navigation, click **Merchandising**, then **New Merchandising Experience**. Pick the **Volume Discount** card, then choose whether to run a Test or create a Personalization.

{% hint style="info" %}
The builder is labelled **Quantity Discount** once you're inside it. Same offer type.
{% endhint %}

### **2. Set up the offer**

These fields are the same in both modes, and they apply to every tier.

* **Discount trigger:** **Quantity of items** counts units in the cart, **Subtotal of items** counts dollars. Quantity is the one that moves units per order. Subtotal is the one that moves AOV on a mixed catalog.
* **Discount value:** **Percentage off**, **Fixed amount off per order**, or **Fixed amount off per item**. Your choice applies to every tier, so you enter one number per tier rather than mixing discount types.
* **Applies to:** all products by default. Narrow it if the discount should only cover part of your catalog, and only the products you select count toward the tier thresholds.
* **Item mix:** off by default, so shoppers can mix and match eligible products to reach a tier. Check **Require same-item purchases for discount to apply** if they have to buy multiples of the *same* product. That's how you build a product-specific volume discount.
* **Combinations:** **Shopify discounts** and **Intelligems discounts** are both checked by default, so the offer stacks. Clear a box to stop it stacking with that kind of discount. Combining with a Shopify discount also depends on the Shopify side, so that discount has to be set to combine in your Shopify admin or it won't stack no matter what you check here.
* **Purchase type:** one-time purchases only by default. You can switch to subscription purchases only, or to both. On a subscription option the discount applies to the first order and not to refills.

{% hint style="warning" %}
**Selling in more than one currency?** Use **Percentage off**. A fixed amount is applied as a raw number and won't convert through Shopify Markets, so a $15 tier reward reaches a shopper browsing in another currency as 15 of their currency. A percentage scales correctly whatever the shopper is seeing.
{% endhint %}

### **3. Build your tiers**

The builder opens with two tiers and you can add up to seven with **Add tier**. Each tier takes:

* **Item quantity** or **Subtotal**, depending on your trigger. This is the threshold the cart has to reach.
* The percentage or amount off at that tier.
* **Discount name (shown in cart/checkout)**. This is the line the shopper reads as the reason they're paying less, so name it after the tier, like `Buy 4, save 20%`.
* **Free shipping** and **Free gift**, either or both, on top of the discount.

{% hint style="warning" %}
**Only the highest tier a shopper qualifies for applies.** Tiers don't stack. If tier 1 is 20% off at $100 and tier 2 is a free gift at $500, a shopper spending $600 gets the gift and not the 20%. To give them both, put both rewards on tier 2.
{% endhint %}

{% hint style="warning" %}
**Tier thresholds read the subtotal before discounts are applied.** A $598 product with a 20% off discount running alongside it will trip a $500 tier, even though the shopper pays $478.40. If a tier has to trigger on what the shopper actually pays, raise the threshold to cover the discount: $500 ÷ (1 − 0.20) = $625. That only holds for one known discount rate, so a cart carrying several discounts can still reach the tier early.
{% endhint %}

#### **Free shipping on a tier**

Check **Free shipping** on a tier and it applies to that tier and every tier above it. You configure it once, on the lowest tier that includes it, and the tiers above inherit that configuration. Free shipping on a middle tier alone isn't possible.

Once you check the box you'll set:

* **Powered by Intelligems** or **Powered by Shopify**. Intelligems discounts the shipping itself. Choose Shopify if free shipping is already configured there and you only want Intelligems to power the messaging and the progress bar.
* **Limit ship-to countries**, if free shipping shouldn't reach everywhere. Shoppers choose their country at checkout, so they'll see the progress bar and the cart messaging until then, and the discount may drop off once they pick an excluded country.
* **Choose eligible rates**. **All rates** discounts every rate that qualifies. **Limit to rates under amount** keeps you from giving away shipping on large, expensive items. **Limit to rates by name** excludes specific rates, and you can stack conditions with **Add condition**.

{% hint style="info" %}
**Choose eligible rates** opens on **Limit to rates by name** with an empty field, and **Next** stays disabled until you fill it in or switch to **All rates**.
{% endhint %}

#### **Free gift on a tier**

**Free gift** works per tier. Checking it on one tier leaves the others alone, so you can put a gift on your top tier only.

Pick one product with **Browse**, and one variant if the product has several. **Auto add GWP to cart** drops the gift into the cart the moment the tier is reached, which is worth turning on because a gift the shopper has to add themselves often doesn't get added. It becomes available once you've chosen a single variant.

{% hint style="info" %}
One gift per tier. To let shoppers choose which variant of the gift they get, add the **Cart GWP picker** component.
{% endhint %}

### **4. Add components**

Components are how shoppers find out the tiers exist, which on this offer type is most of the work. Volume Discount supports four:

* **Quantity Buttons** put the tiers on the product page, so shoppers see the 5-pack saving before they reach the cart.
* **Progress Bar** shows how close the cart is to the next tier, which is what turns a threshold into one more item added.
* **Offer message** carries the promotion on your homepage.
* **Cart GWP picker** lets shoppers choose their gift variant on a tier that includes one.

You add components here in the builder and style them in Global Styles. Quantity Buttons and the Progress Bar need a snippet in your theme the first time you use them.

{% hint style="info" %}
There's no component that shows tier pricing on collection cards, and none that adds tiers to a subscription widget you already have. If either is central to your test, plan on building that front end yourself.
{% endhint %}

### **5. Free shipping as its own offer**

A free shipping threshold can also run on its own, without a discount attached, and that version lives under **Shipping** rather than Merchandising. Use a Volume Discount tier when free shipping is a perk layered on a discount. Use a Free Shipping Experience when the threshold is the whole offer.

### **6. Set targeting (optional)**

For a Test, a visitor's group is assigned on their first visit and stored via a first-party cookie, so they'll see the same variant on repeat visits during the test.

For a Personalization, everyone who matches your targeting sees it every time.

Either way, you can narrow who's included in several ways, all under the Audience option unless noted:

* UTM parameters
* JavaScript expressions
* Device type (mobile or desktop)
* New vs. returning visitors
* [Mutually Exclusive Tests](/general-features/targeting/mutually-exclusive-experiments) prevent visitors from being targeted by related experiments at the same time, to avoid interaction effects

{% hint style="warning" %}
If you built your test groups by duplicating existing Personalizations, any targeting set on those Personalizations is ignored. The test's own audience, currency, and page targeting is used in its place.
{% endhint %}

### **7. Configure analytics**

Choose whether analytics should default to only orders containing specific products (helpful if your offer targets a particular PDP), or orders containing any products in your shop. You can always change this later in your Analytics filters.

What you configure next depends on which path you chose in step 2:

* Personalization? Add any [Custom Metrics](/analytics/overview/custom-events) you want to track, beyond the built-in ones.
* Test? Choose your Key Metrics and Primary Metric to measure against your control group, plus any [Custom Metrics](/analytics/overview/custom-events).

### **8. Preview and activate**

Preview your changes on the live site, then activate. The [Merchandising Experience QA Checklist](/merchandising-experiences/offer-test-qa-checklist) covers what to check in the cart and at checkout before a shopper sees it.

{% hint style="info" %}
Testing tier structures against each other is what this type is for. Keep the trigger and the discount value the same across groups and vary the thresholds, so the result tells you where the threshold belongs. The more groups you have, the longer it will take to get statistically significant results. You'll need about 300 orders for each group in the test to detect a 10% change in conversion with 90% confidence.
{% endhint %}

### **Before you start**

Your tiers won't apply to real carts until you start the test or activate the Personalization. Intelligems creates the Shopify Discount Function when you build the offer and it stays dormant until then, so an unstarted offer showing no discount in cart is expected.

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


# How to Set Up a Free Gift Experience

A Free Gift Experience adds a product to the cart at no cost once a shopper qualifies. A gift that costs you $8 and reads as $30 to the shopper lifts AOV without cutting your prices, which is what makes it the offer to reach for when a discount would just teach customers to wait for the next sale.

You build the offer once, then decide how it runs. Run it as a **Test** and Intelligems holds back a control group and reports what the gift did to AOV and profit per visitor. Run it as a **Personalization** and the gift stays on for the audience you target.

{% hint style="warning" %}
This offer changes the contents and the totals of the cart and checkout. It does not change the prices shown on your product or collection pages.
{% endhint %}

### **Where to start**

### 1. Create the experience

On the left navigation, click **Merchandising**, then **New Merchandising Experience**. Pick the **Free Gift** card.

### 2. Choose: Test or Personalization

* **Running it as a Test?**
  * Rename the Test and add a Description. This is optional and internal only, but tests can stay live for weeks, so the more detail here, the more your future self will thank you.
  * Click the **+** button to create a group for each variation (2–5 groups) and name them.
  * Use the slider to set the traffic split for each group.
  * Click **Next Step** when you're done.
  * Note: the more groups you add, the longer it'll take to reach [statistical significance](/analytics/overview/experiment-analytics/statistical-significance).
* **Running it as a Personalization?** Skip groups entirely. You're building one always-on version for your targeted audience.

### **3. Set up the offer**

* **Discount name (shown in cart/checkout):** the line a shopper reads as the reason a product costs nothing, like `Free gift!`. The app will let you continue without it. Fill it in anyway, because it's the only text the gift carries at checkout.
* **Minimum purchase requirements:** off by default, which gives the gift to everyone the experience reaches. Check the box to require a **Quantity of items** or a **Subtotal of items**. Quantity is the default, so switch it if you're setting a dollar threshold.
* **Applies to:** all products by default. Narrowing it changes what counts toward the minimum, not what gets discounted. If the gift needs 3 items and only products A and B are eligible, a shopper has to buy 3 of A and/or B to earn it.
* **Combinations:** **Shopify discounts** and **Intelligems discounts** are both checked by default, so the offer stacks. Clear a box to stop it stacking with that kind of discount. A Shopify discount also has to be set to combine in your Shopify admin, or it won't stack whatever you check here.
* **Purchase type:** one-time purchases only by default. You can switch to subscription purchases only, or to both. On a subscription option the gift applies to the first order and not to refills.

### **4. Choose the gift**

Click **Browse** and pick one product. The list uses checkboxes but takes a single product, so ticking a second one replaces the first.

What you select inside that product decides how the gift reaches the shopper.

* **One variant** and the gift is fixed. **Auto add GWP to cart** comes on for you, and the gift drops into the cart the moment the shopper qualifies. Leave it on, because a gift the shopper has to add themselves often doesn't get added.
* **More than one variant** and the shopper chooses. Auto-add goes away, since the app can't know which size or color they want, and the **Cart GWP picker** component is added to the offer for you. Set that component up before you launch or the gift has nowhere to appear.

{% hint style="info" %}
Your gift has to be a real product in your Shopify catalog. Active or Unlisted both work, and it should either have stock or be set to continue selling when out of stock.
{% endhint %}

{% hint style="warning" %}
Shoppers can choose between variants of one product, not between two different products. To offer a gold bracelet or a silver one, they have to be two variants of a single Shopify product. Setting up two Free Gift offers instead won't produce an either/or choice.
{% endhint %}

### **5. Add components**

Components are how shoppers find out the gift exists, which on this offer type is most of the work. Free Gift supports three:

* **Progress Bar** shows how close the cart is to earning the gift, which is what turns a threshold into one more item added.
* **Offer message** carries the promotion on your homepage.
* **Cart GWP picker** lets shoppers choose which variant of the gift they get, and is required once you've made more than one variant available.

You add components here in the builder and style them in Global Styles. The Progress Bar and the Cart GWP picker each need a snippet in your theme the first time you use them, and the picker's goes in the file that renders your cart. There are integration guides for Rebuy and Upcart carts.

{% hint style="info" %}
No component puts the gift on a product page or a collection card, and there's no rule that shows one gift only to carts already holding a particular product. If shoppers need to know about the gift before they reach the cart, pair this offer with a Content Edit on your announcement bar or your PDPs.
{% endhint %}

### **6. Set targeting (optional)**

For a Test, a visitor's group is assigned on their first visit and stored via a first-party cookie, so they'll see the same variant on repeat visits during the test.

For a Personalization, everyone who matches your targeting sees it every time.

Either way, you can narrow who's included in several ways, all under the Audience option unless noted:

* UTM parameters
* JavaScript expressions
* Device type (mobile or desktop)
* New vs. returning visitors
* [Mutually Exclusive Tests](/general-features/targeting/mutually-exclusive-experiments) prevent visitors from being targeted by related experiments at the same time, to avoid interaction effects

{% hint style="warning" %}
If you built your test groups by duplicating existing Personalizations, any targeting set on those Personalizations is ignored. The test's own audience, currency, and page targeting is used in its place.
{% endhint %}

### **7. Configure analytics**

Choose whether analytics should default to only orders containing specific products or orders containing any products in your shop. You can always change this later in your Analytics filters.

What you configure next depends on which path you chose in step 2:

* Personalization? Add any [Custom Metrics](/analytics/overview/custom-events) you want to track, beyond the built-in ones.
* Test? Choose your Key Metrics and Primary Metric to measure against your control group, plus any [Custom Metrics](/analytics/overview/custom-events).

### **8. Preview and activate**

Preview your changes on the live site, then activate. The [Merchandising Experience QA Checklist](/merchandising-experiences/offer-test-qa-checklist) covers what to check in the cart and at checkout before a shopper sees it.

{% hint style="info" %}
What this type is really for is finding out whether the gift pays for itself, so a control group carrying no offer is worth the traffic it costs you. Varying the minimum across groups tells you where the threshold belongs. The more groups you have, the longer it will take to get statistically significant results. You'll need about 300 orders for each group in the test to detect a 10% change in conversion with 90% confidence.
{% endhint %}

{% hint style="warning" %}
If you built your test groups by duplicating existing Personalizations, any targeting set on those Personalizations is ignored. The test's own audience, currency, and page targeting is used in its place.
{% endhint %}

### **Before you start**

**The gift won't be free until you start the test or activate the Personalization.** Intelligems creates a Shopify Cart Transform Function when you build the offer, and it stays dormant until then. Until it runs, adding the gift in preview puts it in the cart at full price. That's expected, and it means the one thing you can't confirm in preview is the discount itself. Preview the messaging, the progress bar and the picker, and confirm the $0 line once you're live.

Shopify allows five active automatic app discounts per store, and each test group carrying an offer uses one. Go over the limit and the offer picks up a Discount Synchronization Error, and the gift won't zero out until you're back under it.

Run the QA checklist, and check the FAQs if the gift doesn't behave the way you expect. If you need the gift limited to one per customer, start with the FAQs, because there's no setting for it and the workarounds have trade-offs.

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


# How to Set Up Onsite Upsells

Onsite Upsells let you add personalized product merchandising to your product pages and cart drawer. Instead of manually configuring every layout and rule, you build your upsell using our visual builder: describe what you want in plain language, and the builder creates and refines it for you.

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

#### Step 1: Create your upsell <a href="#step-1-create-your-upsell" id="step-1-create-your-upsell"></a>

1. Go to the **Merchandising tab** in your Intelligems dashboard.
2. Click **+ New Merchandising Experience**.
3. Select **Onsite Upsell** as the type.
4. Choose whether you want to create a **Test** or a **Personalization**.
5. Go to the **Modifications** tab and open the [**visual builder**](/general-features/editors/ai-visual-builder).

#### Step 2: Build with the visual builder <a href="#step-2-build-with-the-visual-builder" id="step-2-build-with-the-visual-builder"></a>

Once you're in Modifications, you'll enter the **visual builder** — this is where you design your upsell.

You have two ways to get started:

**Use a default prompt** Choose from a set of pre-built starting points designed for common upsell use cases. The builder generates a working upsell based on the template, which you can then customize further. These are available to choose from when you first open the Visual Builder chat.

**Write your own prompt** Describe exactly what you want in your own words — for example, *"Add a 3-product upsell carousel below the add-to-cart button on product pages, showing items from the same collection."* The builder generates an upsell experience based on your description.

**Refine with feedback**

After the builder generates a first version, keep iterating by giving it feedback in plain language — swap out products, change the layout, adjust the copy, add a discount, resize elements, and so on. Rather than digging through menus and settings panels, you're describing what you want changed and the builder implements it.

If you would prefer to refine manually, you can access the available settings by clicking on your Onsite Upsell in the left-hand nav.

#### Step 3: Preview your upsell <a href="#step-3-preview-your-upsell" id="step-3-preview-your-upsell"></a>

As you build and refine your upsell, the preview pane in the center updates in real time so you can see:

* Overall layout and placement
* How the upsell looks against your site's design
* Which products are being recommended depending on your current scenario (i.e. what product you are viewing or what product(s) you have in cart
* Copy and styling
* Discounting

#### Step 4: Save and finish set up <a href="#step-4-save-and-finish-set-up" id="step-4-save-and-finish-set-up"></a>

Click **Save** when you're happy with your upsell. This saves your work in the visual builder and now you can exit to the experience setup — it doesn't publish anything yet. From here, you can finish setting up any other details, like targeting, before saving the full experience.

#### Step 5: Set up targeting (optional) <a href="#step-5-set-up-targeting-optional" id="step-5-set-up-targeting-optional"></a>

By default, a visitor will be immediately assigned to your Onsite Upsell (or one of your test groups), but you can control who sees it using targeting rules:

* Currency and country targeting to limit your experience to a single currency and/or a list of specific countries
* UTM parameters to customize the experience under the Audience option
* JavaScript expressions to filter traffic under the Audience option
* Device type (mobile or desktop) filtering under the Audience option
* New vs. returning visitor filtering under the Audience option
* Mutually exclusive tests, to prevent visitors from being targeted by related experiments

**When to use targeting:**

* Test upsells with specific customer segments first
* Display region-specific offers
* Limit to specific marketing campaigns
* Show different upsells on different devices

You can learn more about targeting [here](/general-features/targeting)!

#### What happens next? <a href="#what-happens-next" id="what-happens-next"></a>

Now that you've created your Onsite Upsell, you can QA it using [this checklist](/merchandising-experiences/offer-test-qa-checklist).

<br>


# How to Set Up Bundle Onsite Upsells

Bundle Onsite Upsells let you offer product bundles directly on your product pages and in your cart drawer. Shoppers can add the product they're viewing plus complementary items to their cart in one click, usually at a bundle discount. You don't have to configure every bundle, layout, and rule by hand. Instead, you describe the bundle you want in plain language, and the visual builder creates and refines it for you.

{% hint style="warning" icon="bullhorn" %}
Please note that our Bundle Onsite Upsells feature is currently in beta! If you'd like to get early access, please submit a request [here](https://intelligems.portal.usepylon.com/forms/onsiteupsells).
{% endhint %}

#### Step 1: Create your upsell <a href="#step-1-create-your-upsell" id="step-1-create-your-upsell"></a>

1. Go to the **Merchandising tab** in your Intelligems dashboard.
2. Click **+ New Merchandising Experience**.
3. Select **Bundle Onsite Upsell** as the type.
4. Choose whether you want to create a **Test** or a **Personalization**.
5. Go to the **Modifications** tab and open the [**visual builder**](/general-features/editors/ai-visual-builder).

#### Step 2: Build with the visual builder <a href="#step-2-build-with-the-visual-builder" id="step-2-build-with-the-visual-builder"></a>

Once you're in Modifications, you'll enter the **visual builder** — this is where you design your upsell.

You have two ways to get started:

**Use a default prompt** Choose from a set of pre-built starting points designed for common bundle upsell use cases. The builder generates a working upsell based on the template, which you can then customize further. These are available to choose from when you first open the Visual Builder chat.

**Write your own prompt** Describe exactly what you want in your own words — for example, *"Add a 'Frequently bought together' bundle below the add-to-cart button on product pages, showing the current product plus two items from the same collection, with 15% off when all three are added.*" The builder generates an upsell experience based on your description.

**Refine with feedback**

After the builder generates a first version, keep iterating by giving it feedback in plain language — swap out products, change the layout, adjust the copy, add a discount, resize elements, and so on. Rather than digging through menus and settings panels, you're describing what you want changed and the builder implements it.

If you would prefer to refine manually, you can access the available settings by clicking on your Onsite Upsell in the left-hand nav.

#### Step 3: Preview your upsell <a href="#step-3-preview-your-upsell" id="step-3-preview-your-upsell"></a>

As you build and refine your upsell, the preview pane in the center updates in real time so you can see:

* Overall layout and placement
* How the upsell looks against your site's design
* Which products are being recommended depending on your current scenario (i.e. what product you are viewing or what product(s) you have in cart
* Copy and styling
* Discounting

#### Step 4: Save and finish set up <a href="#step-4-save-and-finish-set-up" id="step-4-save-and-finish-set-up"></a>

Click **Save** when you're happy with your upsell. This saves your work in the visual builder and now you can exit to the experience setup — it doesn't publish anything yet. From here, you can finish setting up any other details, like targeting, before saving the full experience.

#### Step 5: Set up targeting (optional) <a href="#step-5-set-up-targeting-optional" id="step-5-set-up-targeting-optional"></a>

By default, a visitor will be immediately assigned to your Bundle Onsite Upsell (or one of your test groups), but you can control who sees it using targeting rules:

* Currency and country targeting to limit your experience to a single currency and/or a list of specific countries
* UTM parameters to customize the experience under the Audience option
* JavaScript expressions to filter traffic under the Audience option
* Device type (mobile or desktop) filtering under the Audience option
* New vs. returning visitor filtering under the Audience option
* Mutually exclusive tests, to prevent visitors from being targeted by related experiments

**When to use targeting:**

* Test bundle upsells with specific customer segments first
* Display region-specific offers
* Limit to specific marketing campaigns
* Show different bundle upsells on different devices

You can learn more about targeting [here](/general-features/targeting)!

#### What happens next? <a href="#what-happens-next" id="what-happens-next"></a>

Now that you've created your Bundle Onsite Upsell, you can QA it using [this checklist](/merchandising-experiences/offer-test-qa-checklist).


# Merchandising Experience Limits

Learn how to manage the Merchandising Experiences limit for offer Tests & Personalization, with options to archive, delete, or increase your limit.

## Understanding the Limit for offer Tests & Personalizations

To ensure smooth performance and prevent conflicts with other third-party discount apps (such as those integrated via Shopify), our platform enforces an **Merchandising Experiences limit** on the number of *active* Merchandising Experiences you can run at any given time. This includes Offers related to both **Tests** and **Personalizations**.

### What is the Merchandising Experiences?

The **default Merchandising** **limit** **is** **15 Experiences**. However, depending on your specific setup, the limit has the potential to be increased. This limit is configurable and can be adjusted based on the needs of your organization.

### What Counts Towards the Merchandising Experiences Limit?

Merchandising Experiences that count towards this limit include those in the following states:

* **Pending**: Created but not live.
* **Started**: Currently live and running.
* **Paused**: Temporarily stopped but still available for preview.

### Archiving Merchandising Experiences

Once you reach the offer limit, you won’t be able to create or enable new offers until space is made. This is where archiving comes into play:

1. **Archiving an** Merchandising Experiences allows you to free up space without having to delete an offer entirely.
2. **Archived Offerss**:
   * Are labeled as archived in the Offers Personalizations page.
   * Can be **un-archived** as long as you’re within your offer limit.

**Note**: You **cannot archive** an active (live) Offer (either in a Test or a Personalization) without first confirming that you want to end it.

### How Do I Archive an Offer?

To archive an Offer, navigate to the Offers Personalizations page. Locate the card for the Offer you'd like to archive, then click the three dots on the right-hand side of the row to access more options and select the archive option.

Alternatively, you can also archive an Offer from its detail page. Once inside an Offer, the archive option can be found by clicking the three dots in the same spot on the top header.

### What Should I Do if I Hit the Limit?

If you receive the “Offer Limit Reached” message, you have the following options:

* **Archive or delete** one of your existing Offers to free up space.
* If your **Offer Test** contains multiple offers, you can end or delete Offers within the test to reduce the total count.

### Need More Help?

For more information or to request an increase to your offer limit, please [contact our support team.](https://portal.usepylon.com/intelligems/forms/intelligems-support-request?utm_source=intelligems_app)


# Merchandising Combinations

## Introduction

You'll have full control over whether your Intelligems Merchandising experiences combine with other discounts or stand alone.

**When you want offers to stack:** For example, you might create a Quantity Discount (10% off when buying 3+ items) that you want to combine with a $10 welcome discount code. This gives customers both benefits and creates a compelling reason to purchase more items.

**When you want offers to be exclusive:** For example, you might create a VIP Save 25% Offer that should never combine with other promotions—ensuring your most valuable discount remains exclusive and preventing over-discounting.

This guide explains how to configure stacking behavior for each Offer and what each configuration means for your customers.

## Shopify Combinations

You can read all about how [Shopify combines discounts](https://help.shopify.com/en/manual/discounts/combining-discounts/discount-combinations), but it's quite complicated and nuanced. The gist is that you largely control when you want discounts to combine or not and that's controlled in Shopify.

When you create a discount in Shopify, you'll see these options. If you have a discount you don't want to combine with others, don't check these boxes!

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-de0ec98c7fedd9a0a69e140230952c7ddb584940%2Fimage.png?alt=media" alt=""><figcaption><p>Shopify combination options</p></figcaption></figure>

{% hint style="info" %}
When Intelligems creates discounts in Shopify they are created as "Product Discounts"
{% endhint %}

In order for 2 discounts to combine, they must **both** be set to combine with other discounts. So, for your Intelligems discount to combine with a Shopify discount, both must be set to combine. If either are not, they won't stack and the most favorable for the customer will be chosen by Shopify.

## Intelligems Combinations

### Options

When you create a discount in Intelligems, you can set these combination options as well and we will let Shopify know how to combine the discount.

1. **Combines with Shopify Discounts** – When this is selected, you're essentially setting the above Shopify Combinations to true. *Note: This must be enabled for it to combine with other Intelligems discounts, too*.
2. **Combines with Intelligems Discounts –** When this is selected, this discount may also combine with other Intelligems Offers you've configured.

### Intelligems Combination Logic

When you have enabled the combination logic within Intelligems, we choose the most beneficial discount for the customer.

Imagine an example:

* Discount A: $5 off, combines
* Discount B: 10% off, combines
* Discount C: $25 off, does not combine

Since Discounts A and B combine, we'll sum those together, and then compare that total discount versus all the other non-combining discounts.

* Cart 1: $100 subtotal = $$Max(5 + 10, 25)=25$$
* Cart 2: $300 subtotal = $$Max(5+30, 25)=35$$


# Merchandising Experiences Library

Learn how to build 8 Merchandising offer Personalizations in your store

We built Personalizations to be a robust tool to power any almost any offer you can imagine, right inside of Intelligems.

## How to Think About Merchandising offers

Every great promotion/offer comes down to three simple questions: **When**, **Who**, and **What**. Together, these three pieces form the backbone of your offer strategy:

* **When** is the offer available? (Timing Strategy)
  * Evergreen / always-on like free shipping threshold, bundles, quantity discounts etc.
  * Event-based like welcome offer, winback, post-purchase upsell
  * Calendar-based like holiday sales, early access, seasonal clearance, product release
* **Who** gets to see or redeem it? (Audience)
  * Public / all visitors
  * Earned audience like VIP, email or SMS subscribers, loyalty members
  * Partner / affiliate
* **What** is the actual benefit? (Mechanism)
  * Monetary discounts like $ or % off
  * Volume incentives like BXGY, quantity discounts, tiered offers
  * Value additions like GWP, free shipping, extended returns, lifetime warranty

When you combine these, you’ve got the full picture of your offer. And the final piece to keep in mind is the **Why** — the goal you’re trying to achieve, whether that’s boosting conversion, increasing order value, rewarding loyalty, or driving urgency.

Put simply: *a strong offer connects the right incentive, to the right people, at the right time — all in service of your bigger growth goals.*

## 8 Merchandising Offers To Build Right Now with Intelligems

1. [Holiday Sale](/merchandising-experiences/offer-modifications/offers-library/how-to-set-up-a-holiday-sale)
2. [Early Access Sale](/merchandising-experiences/offer-modifications/offers-library/how-to-set-up-an-early-access-sale)
3. [Buy More, Save More Volume ($) Discount](/merchandising-experiences/offer-modifications/offers-library/how-to-set-up-a-buy-more-save-more-volume-discount)
4. [Buy More, Save More Quantity (units) Discount](/merchandising-experiences/offer-modifications/offers-library/how-to-set-up-a-buy-more-save-more-quantity-discount)
5. [Partner Exclusive Discount (Influencer, Ambassador, Affiliate)](/merchandising-experiences/offer-modifications/offers-library/how-to-set-up-a-partner-offer-influencer-ambassador-affiliate-etc.)
6. [Free Gift with Purchase Threshold](/merchandising-experiences/offer-modifications/offers-library/how-to-set-up-a-free-gift-with-purchase-threshold-offer)
7. [Seasonal Clearance Extra % Off Discount](/merchandising-experiences/offer-modifications/offers-library/how-to-set-up-seasonal-clearance-discount)
8. [Free Shipping Threshold](/merchandising-experiences/offer-modifications/offers-library/how-to-set-up-a-free-shipping-threshold-offer)


# How to Set Up a Holiday Sale

Steps to launch a Holiday Sale using a Personalization

## Holiday Sale

You can use Personalizations to power your holiday sales. Whether you're running the offer to 100% of traffic, or a segment in Klaviyo, Intelligems makes it easy to create, schedule, and automate your offer. Our customers user Offers to power their holiday sales like Valentine's Day, Mother's Day, 4th of July, Black Friday, etc.

{% hint style="info" %}
Personalizations & testing amount off order is available on the Smart Merchandising and Unlimited plans.
{% endhint %}

**Goal:** Increase revenue, move through inventory, make money!

**Who:** All visitors

**What:** 30% off your order

**When:** Fall Sale Event (example)

**Offer Type:** Percentage off your order; most common use case

**Amount:** 30%

* This amount might be set based on the goal of the sale, competitive landscape, or MAP policy with retailers

**Offer Experience:**

* Timing: Time-limited, typically 3-5 days
* Where:
  * Website
    * Homepage
    * PDP banners
    * Cart
    * Checkout
  * Email & SMS
  * Paid ads
  * Influencer posts
  * Other marketing channels
* Activation: Automatic, no code, with a scheduled start time and scheduled end time

**Why it works:** Customers expect deals during holidays, especially when competitors are running sales, and it's a natural urgency moment since it's time-bound.

### How to Set Up This Offer in Intelligems

{% embed url="<https://www.loom.com/share/0b78f3282d864f6281da6ae9766c36bc?sid=805939c9-cf3d-46a2-a425-e1501d8df3b9>" %}

1. Go to Personalizations > **Offers**
2. Select **Amount off Order**
3. Add an Offer name (internal name)
4. Add a Discount name that matches the sale. This will be shown to shoppers in their cart and at checkout.
   1. e.g. Fall 30% off Sale
5. Select discount value
   1. Choose **percentage off order** to offer a discount amount on their order
   2. Choose **dollar off per order** to offer a flat dollar amount discount on their order
6. Choose if you want minimum purchase requirements
   1. Select quantity of items if you want a customer to purchase a minimum X units to qualify for the discount
   2. Select subtotal of items if you want a customer to purchase a minimum $ amount to qualify for the discount
7. Leave the box unchecked if there are no minimum requirements for the discount to be applied
8. Select which products you want this discount to be applied to. It will apply to all products by default if no products are selected.
   1. You can select products based on Product Type, Vendor, Status, Collections, and also search for individual products

{% hint style="info" %}
We recommend setting up a Sale collection in Shopify and then select that collection.
{% endhint %}

9. Choose if you want this discount to combine with other Shopify discounts
   1. Examples: a Welcome Offer, loyalty, affiliate, influencer, or any other discount you have live in your Shopify backend that is set up to be combined with other discounts
10. Add components like **Progress Bar** or **Offer message** to support the discount messaging
11. Configure your components
    1. Make sure you've previously installed these components in your theme via Global Styles tab
12. Click **Complete offer setup**
13. At this point, you can make additional modifications by clicking **+ Add modification**
    1. You can update the content, launch a different Theme or Template, and update styles or javascript
14. Add **Targeting** to choose which shoppers you want to see this 30% off discount Offer. It will be set to all visitors by default.
    1. If you're running a specific offer to a smaller group of your shoppers, you can select your audience in the Targeting tab
15. **Save** your Offer
16. **Preview** your Offer on desktop and mobile
17. When everything looks good, **Schedule Your Personalization** or **Activate** to go live
    1. You can select a Start time and Stop time when Scheduling
18. Double-check everything else on your list to make sure you're supporting this sale like email, sms, and other marketing channels.


# How to Set Up an Early Access Sale

Steps to launch an Early Access sale using a Personalization

## Early Access Sale

You can use Personalizations to power your Early Access Sales. If you'd like to create a rich experience for VIP customers that you offer Early Access to, use build an offer that updates the content, powers the discount automatically, and makes the customer feel special.

{% hint style="info" %}
Personalizations & testing amount off order is available on the Smart Merchandising and Unlimited plans.
{% endhint %}

**Goal:** Create VIP early access moment; replicate the public sale experience

**Who:** VIP customers

**What:** 25% off your order

**When:** 2-5 days before the public sale launches

**Offer Type:** Percentage off your order; most common use case

**Amount:** 25%

* This amount might be set based on the goal of the sale, competitive landscape, or MAP policy with retailers

**Offer Experience:**

* Timing: Time-limited, typically 2-5 days
* Where:
  * Website
    * Homepage
    * PDP banners
    * Cart
    * Checkout
  * Email & SMS to VIP customers
  * VIP Facebook or WhatsApp group
* Activation: Automatic, no code, with a scheduled start time and scheduled end time

**Why it works:** Customers love feeling like VIPs and getting early access to sales, plus it's a natural urgency moment since it's time-bound.

### How to Set Up This Offer in Intelligems

{% embed url="<https://www.loom.com/share/d57f558e19a743d396d0c692bc485f35?sid=40bbddb4-f8a2-4144-8bec-57aa65fa306c>" %}

1. Go to Personalizations > **Offers**
2. Select **Amount off Order**
3. Add an Offer name (internal name) like Early Access 25% off
4. Add a Discount name that matches the sale. This will be shown to shoppers in their cart and at checkout.
   1. e.g. Exclusive Early Access 25% off
5. Select discount value
   1. Choose **percentage off order** to offer a discount amount on their order
   2. Choose **dollar off per order** to offer a flat dollar amount discount on their order
6. Choose if you want minimum purchase requirements
   1. Select quantity of items if you want a customer to purchase a minimum X units to qualify for the discount
   2. Select subtotal of items if you want a customer to purchase a minimum $ amount to qualify for the discount
7. Leave the box unchecked if there are no minimum requirements for the discount to be applied
8. Select which products you want this discount to be applied to. It will apply to all products by default if no products are selected.
   1. You can select products based on Product Type, Vendor, Status, Collections, and also search for individual products

{% hint style="info" %}
We recommend setting up a Sale collection in Shopify and then select that collection
{% endhint %}

9. Choose if you want this discount to combine with other Shopify discounts
   1. Examples: a Welcome Offer, loyalty, affiliate, influencer, or any other discount you have live in your Shopify backend that is set up to be combined with other discounts
10. Add components like **Progress Bar** or **Offer message** to support the discount messaging
11. Configure your components
    1. Make sure you've previously installed these components in your theme via Global Styles tab
12. Click **Complete offer setup**
13. At this point, you can make additional modifications by clicking **+ Add modification**
    1. You can update the content, launch a different Theme or Template, and update styles or javascript
    2. We recommend launching your public Sale theme to this audience with some additional content edits using the words Early Access across the site to make it feel special
14. Add **Targeting** to choose which shoppers you want to see this 25% off discount Offer. In this case, select **Link** and choose homepage or drive to the sale collection page
15. Copy that link
16. **Save** your Offer
17. **Preview** your Offer on desktop and mobile
18. When everything looks good, **Schedule Your Personalization** or **Activate** to go live
    1. You can select a Start time and Stop time when scheduling
19. Share the link with your VIP Early Access customers via SMS, email etc.

{% hint style="info" %}
Shoppers will only be able to access that Offer via that link. All other visitors will see your current site with no Offer.
{% endhint %}

20. Double-check everything else on your list to make sure you're supporting this Early Access sale as intended.


# How to Set Up a Buy More, Save More Volume Discount

Steps to launch a Buy More, Save More Volume Discount using a Personalization

## Buy More, Save More Volume Discount

You can use Personalizations to power your spend more, save more tiered volume discount. Use tiered thresholds to nudge bigger baskets (e.g. spend $100, get 10% off, spend $200, get 20% off). Intelligems makes creating and powering these offers, including a progress bar, super simple.

{% hint style="info" %}
Personalizations & testing amount off order is available on the Unlimited Plan and the Smart Merchandising plan.&#x20;
{% endhint %}

**Goal:** Increase AOV

**Who:** All shoppers

**What:** Tiered %/$ off thresholds

**When:** Evergreen or during sale period

**Offer Type:** Volume Discount

**Amount:** Spend $100, get 10% off; Spend $200, get 20% off; Spend $300, get 30% off

* This amount might be set based on the goal of the sale, competitive landscape, or MAP policy with retailers

**Offer Experience:**

* Timing: Always on
* Where:
  * Website
    * Homepage
    * PDP messaging
    * Cart Progress Bar
* Activation: Automatic based on subtotal threshold

**Why it works:** Gamifies shoppers to spend more to get to the next tier with even bigger savings, increasing AOV

### How to Set Up This Offer in Intelligems

{% embed url="<https://www.loom.com/share/f4882cc1e3984048a93597c9afe09352?sid=89efbb40-9d7d-44aa-8ee6-258b3bd73fab>" %}

1. Go to Personalizations > **Offers**
2. Select **Volume Discount**
3. Add an Offer name (internal name) like Spend $100, Get 10% Scaling
4. Create three offer tiers
5. Add a discount name to match each offer tier. This will be shown to shoppers in their cart and at checkout.
   1. e.g. Spend $100, Save 10%; Spend $200, Save 20%
6. Select discount value
   1. Choose **Percentage off** and **Subtotal of items** to offer a discount amount on their order
   2. You can also select Dollar off per order or Dollar off per item as options. More on that setup here.
7. Select which products you want this discount to be applied to. It will apply to all products by default if no products are selected.
   1. You can select products based on Product Type, Vendor, Status, Collections, and also search for individual products

{% hint style="info" %}
We recommend setting up a Sale collection in Shopify and then select that collection
{% endhint %}

9. Set up each of your tiers
   1. Spend $100, get 10% off
   2. Spend $200, get 20% off
   3. Spend $300, get 30% off
      1. You have the ability to also make a tier **Free shipping** or **Free gift** in combination with a % off discount
10. Choose if you want this discount to combine with other Shopify discounts
11. Add components like **Progress Bar** or **Offer message** to support the discount messaging
12. Configure your components
    1. Make sure you've previously installed these components in your theme via Global Styles tab
13. Click **Complete offer setup**
14. At this point, you can make additional modifications by clicking **+ Add modification**
    1. You can update the content, launch a different Theme or Template, and update styles or javascript
15. Add **Targeting** to choose which shoppers you want to see this Buy More, Save More Offer
16. **Save** your Offer
17. **Preview** your Offer on desktop and mobile
18. When everything looks good, **Schedule Your Offer Personalization** or **Activate** to go live
    1. You can select a Start time and Stop time when scheduling
19. Boost your AOV!


# How to Set Up a Buy More, Save More Quantity Discount

Steps to launch a Buy More, Save More Quantity Discount using a Personalization

## Buy More, Save More Quantity Discount

You can use Personalizations to power your spend more, save more tiered quantity discount. Use quantity thresholds to nudge bigger baskets (e.g. buy 2 units, get 10% off, buy 4 units get 15% off). Intelligems makes creating and powering these offers, including a progress bar, super simple.

{% hint style="info" %}
Personalizations & testing amount off order is available on the Unlimited Plan and the Smart Merchandising plan.&#x20;
{% endhint %}

**Goal:** Increase AOV and units per transaction

**Who:** All shoppers

**What:** Tiered quantity % off thresholds

**When:** Evergreen or during sale period

**Offer Type:** Volume Discount

**Amount:** Buy 2 units, get 10% off; Buy 4 units, get 15% off; Buy 6 units, get 20% off

* This amount might be set based on the goal of the sale, competitive landscape, or MAP policy with retailers

**Offer Experience:**

* Timing: Always on or during a sale period
* Where:
  * Website
    * Homepage
    * PDP messaging
    * Cart Progress Bar
* Activation: Automatic based on cart item quantity threshold

**Why it works:** Gamifies shoppers to add more items to get to the next tier with even bigger savings, increasing AOV and units per transaction

### How to Set Up This Offer in Intelligems

{% embed url="<https://www.loom.com/share/591efd0e8ab048d8a06735edffda7f74?sid=f79dbc2a-632c-4872-abd5-13607eaaf3b6>" %}

1. Go to Personalizations > **Offers**
2. Select **Volume Discount**
3. Add an Offer name (internal name) like Buy 2,4,6 Units, Get 10,15,20% Off
4. Create three offer tiers
5. Add a discount name to match each offer tier. This will be shown to shoppers in their cart and at checkout.
   1. e.g. Buy 2 units, get 10% off; Buy 4 units, get 15% off; Buy 6 units, get 20% off
6. Select discount value
   1. Choose **Percentage off** to offer a discount amount on their order
   2. You can also select Dollar off per order or Dollar off per item as options
7. Select which products you want this discount to be applied to. It will apply to all products by default if no products are selected.
   1. You can select products based on Product Type, Vendor, Status, Collections, and also search for individual products

{% hint style="info" %}
We recommend setting up a Sale collection in Shopify and then select that collection
{% endhint %}

9. Set up each of your tiers
   1. Buy 2 units, get 10% off
   2. Buy 4 units, get 15% off
   3. Buy 6 units, get 20% off
      1. You have the ability to also make a tier **Free shipping** or **Free gift** in combination with a % off discount
10. Choose if you want this discount to combine with other Shopify discounts
11. Add components like **Progress Bar** or **Offer message** to support the discount messaging
12. Configure your components
    1. Make sure you've previously installed these components in your theme via Global Styles tab
13. Click **Complete offer setup**
14. At this point, you can make additional modifications by clicking **+ Add modification**
    1. You can update the content, launch a different Theme or Template, and update styles or javascript
15. Add **Targeting** to choose which shoppers you want to see this Buy More, Save More Offer
16. **Save** your Offer
17. **Preview** your Offer on desktop and mobile
18. When everything looks good, **Schedule Your Offer Personalization** or **Activate** to go live
    1. You can select a Start time and Stop time when scheduling
19. Boost your AOV and units per transaction!


# How to Set Up a Partner Offer (Influencer, Ambassador, Affiliate etc.)

Steps to launch a Partner offer using a Personalization

## Influencer / Ambassador / Affiliate Offer

You can use **Personalizations** to power your influencer and partner programs by creating discounts for each partner **combined with a unique onsite experience**. This ensures consistency from exposure to landing on your site to conversion.

{% hint style="info" %}
Personalizations & testing amount off order is available on the Unlimited Plan and the Smart Merchandising plan.&#x20;
{% endhint %}

**Examples:** Influencer discount codes, affiliate discount codes, evergreen partnership discounts

**Goal:** Channel/partner acquisition and trackable ROI with a personalized experience

**Who:** Partner/Affiliate audiences

**What:** Exclusive discount via partner link or partner UTMs

**When:** Campaign-specific window or evergreen

**Offer Type:** Amount off order (most common)

**Amount:** 10–20% off your order is typically

**Experience:**

* Timing: Campaign-specific window or evergreen
* Where: Partner social campaigns, landing pages, UTM-tracked traffic
* Display: Partner-branded landing experiences or homepage experiences, Offer message component
* Activation: Link or UTM based

**Why it works:** Instead of relying on a generic `PARTNER15` code, Intelligems lets you create **personalized content-rich experiences** for each partner. This builds authenticity, reduces code leakage to discount aggregators, and drives higher conversion.

### How to Set Up This Offer in Intelligems

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

1. Go to Experiences > **Offers**
2. Select **Amount off order**
   1. This is the most common use case for influencer partnerships
3. Add an Offer name (internal name) like Influencer \[Name] 15% Off
4. Add the **Discount name** which will be shown to shoppers in their cart and out checkout
5. Select discount value
   1. Choose **Percentage off** **order** to offer a discount amount on their order
6. Select which products you want this discount to be applied to. It will apply to all products by default if no products are selected.
   1. You can select products based on Product Type, Vendor, Status, Collections, and also search for individual products

{% hint style="info" %}
We recommend setting up an Influencer collection in Shopify and then select that collection
{% endhint %}

9. Choose if you want this discount to combine with other Shopify discounts
10. Add components like **Offer message** to support the discount messaging
11. Configure your component
12. Click **Complete offer setup**
13. At this point, you can make additional modifications by clicking **+ Add modification**
    1. Light-touch: swap a hero image and one line of copy using the Onsite Editor
    2. Heavy: launch a dedicated homepage or PDP template with partner imagery, messaging, and supporting creative
    3. Goal: create a consistent branded experience that aligns with the partner and improves conversion
14. Add **Targeting** to choose which shoppers you want to see this influencer Offer
    1. We recommend using the **Custom** tab and setting URL parameters if you're running a large influencer program with multiple campaigns
    2. You can also use the **Link** tab to create a custom link that the partner can share with their audience
15. **Save** your Offer
16. **Preview** your Offer on desktop and mobile
17. When everything looks good, **Schedule Your Offer Personalization** or **Activate** to go live
    1. You can select a Start time and Stop time when scheduling
18. Repeat for each influencer or partner campaign
19. Track the impact in the **Results tab** to measure ROI and performance


# How to Set Up a Free Gift With Purchase Threshold Offer

Steps to launch a free gift with purchase threshold offer using a Personalization

## Free Gift with Purchase Offer

You can use Personalizations to reward shoppers with a free gift once they cross a certain spend threshold. This is a powerful way to increase average order value (AOV), move inventory, and delight customers—without relying on deep discounting.

{% hint style="info" %}
Personalizations & testing amount off order is available on the Unlimited Plan and the Smart Merchandising plan.&#x20;
{% endhint %}

**Example:** Free gift on orders over $150, Free gift for an influencer audience, Free gift to VIPs\
\
**Goal:** Increase AOV with margin protection\
\
**Who:** All shoppers or targeted audience\
\
**What:** Free gift with purchase (low-cost, high-perceived value)

**When:** Evergreen or seasonal

**Offer Type:** Threshold-based free gift\
\
**Amount:** Gift with \~$8 COGS has a perceived value of $30–40

#### Experience

* Timing: Evergreen or seasonal
* Where:
  * PDP
  * Cart
  * Checkout
  * Emails
* Display: Progress bar or unlock message
* Activation: Automatic when the threshold is hit

**Why it works:** Free gifts feel like a bonus to shoppers. Even if the cost is low for you (and often less than a discount), the perceived value is high. This motivates customers to add more to their cart while protecting your margins.

### How to Set Up This Offer in Intelligems

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

1. Go to Personalizations > **Offers**
2. Select **Free Gift** as the offer type
3. Add an **Offer name** (internal) example: *Free Gift on Orders over $150*
4. Add a **Discount name** shoppers will see in cart and checkout, example: *Free Gift!*
5. Set your **minimum purchase requirement**
   * Choose **Subtotal of items** (example: $150)
6. Select which **products are eligible**
   * Defaults to all products
   * Narrow by Product Type, Vendor, Status, Collections, or individual SKUs
7. Decide if the free gift can **combine with other Shopify discounts**
8. Choose the **gift item**
   * Select down to the variant level (e.g., size, color)
   * Note: Customer variant selection is coming
9. Choose whether the gift should **auto-add to cart** or require manual add
10. Add a **Progress Bar** to show shoppers how close they are to unlocking the gift
    * Configure text, breakpoints, icons, and bar style to match your brand
11. Configure your component
12. Click **Complete offer setup**
13. Review your Offer on the **Modifications page**
    * Confirm the gift item, messaging, and progress bar are all set up correctly
14. *(Optional)* Click **+ Add modification** to personalize the experience further
    * Swap banner images or PDP copy
    * Launch a dedicated homepage or PDP template with gift messaging throughout
15. Add **Targeting** to choose which shoppers you want to see this gift with purchase
16. **Save** your Offer
17. **Preview** your Offer on desktop and mobile
18. When everything looks good, **Schedule Your Offer Personalization** or **Activate** to go live
19. Promote through **email, SMS, and paid campaigns** to maximize visibility


# How to Set Up Seasonal Clearance Discount

Steps to launch a free gift with purchase threshold offer using a Personalization

## Seasonal Clearance Extra 20% off Sale Collection

You can use **Personalizations** to power your end-of-season clearance sales. This is ideal when you need to move through remaining inventory quickly, whether that’s last sizes, discontinued SKUs, or seasonal products. With Intelligems, you can easily set up an **extra discount** on your Sale Collection, layer on tiered discounts, and pair it with urgency messaging to drive faster sell-through.

{% hint style="info" %}
Personalizations & testing amount off order is available on the Unlimited Plan and the Smart Merchandising plan.&#x20;
{% endhint %}

**Examples:** End-of-season extra 20% off, last-size markdowns

**Goal:** Inventory management

**Who:** Universal shoppers

**What:** Extra % off or tiered discount, applied to clearance items

**When:** Seasonal end dates, time-limited windows

**Offer Type:** Percentage off order (most common), or tiered volume discounts

**Amount:** 20–40% depending on stock urgency

***

#### Offer Experience:

* **Timing:** Time-limited, tied to seasonal end dates
* **Where:**
  * Clearance pages
  * Homepage banners
  * Cart and checkout
  * Email and SMS
* **Display:** Urgency-driven messaging (countdowns, low-stock alerts)
* **Activation:** Automatic, SKU-specific

**Why it works:** Customers expect deeper discounts during clearance sales. By making it time-bound and urgency-driven, you can quickly move through excess inventory and free up cash for new arrivals.

### How to Set Up This Offer in Intelligems

{% embed url="<https://www.loom.com/share/6b5e23efee78449b90d5901dccbfc89d?sid=c96ca0df-0bb7-4218-897e-1082c676fdbe>" %}

1. Go to Personalizations **→ Offers**
2. Select **Amount Off Order**
3. Add an **Offer name** (internal), e.g., *Extra 20% Off Sale Collection*
4. Add a **Discount name** that customers will see in cart/checkout, e.g., *Extra 20% Off*
5. Select the **discount value,** example: *Percentage off order*, set to 20%
6. Leave **minimum purchase requirements** blank unless adding spend thresholds
7. Select the **products/collections** to apply the discount to
   1. Choose your **Sale Collection** or **End-of-Season Collection** in Shopify
   2. You can also tag specific clearance SKUs
8. Decide if this discount should **combine with other Shopify discounts**
9. Add components like **Offer Messages** or **countdown timers** to drive urgency
10. Review the setup in the **Modifications page** to confirm the collection and content changes
11. *(Optional)* Use **+ Add modification** to personalize the clearance campaign
    1. Swap in seasonal clearance imagery
    2. Update PDP or homepage copy
    3. Launch a dedicated clearance template
12. Add **Targeting** to choose which shoppers you want to see this extra 20% off discount
13. **Save** your Offer
14. **Preview** on desktop and mobile
15. **Schedule** start and stop times to align with your seasonal calendar, or activate immediately
16. Promote the clearance across **emails, SMS, and paid campaigns** to maximize awareness


# How to Set Up a Free Shipping Threshold Offer

Steps to launch a free shipping threshold offer using a Personalization

## Free Shipping Threshold Offer

You can use **Offers** to power Free Shipping promotions. This type of offer reduces friction for customers, increases conversion, and incentivizes higher spend when paired with a threshold.

{% hint style="info" %}
Personalizations & testing free shipping thresholds is available on the Unlimited Plan and the Smart Shipping plan.&#x20;
{% endhint %}

{% hint style="warning" %}
With Offer Testing we can discount rates regardless of where they are provided from, including third party rate providers. We *cannot* increase the threshold already set in a third party to be higher, only lower.\
\
To configure with a third party app, you will need to take one of two actions:

1. The highest threshold needs to be set in the third party app. The Offer will discount it at various thresholds.
2. Remove the threshold rule from their third party shipping app entirely.

\
Customers using native Shopify shipping won't need to make any adjustments.
{% endhint %}

**Examples:** Free standard shipping at $75+, Free expedited shipping at $150+

**Goal:** Conversion optimization + AOV increase

**Who:** Universal shoppers

**What:** Free shipping when spend threshold is met

**When:** Evergreen or seasonal

**Offer Type:** Free Shipping Threshold

**Amount:** $75 spend (adjustable to your margins and shipping costs)

***

**Offer Experience**

* Timing: Evergreen or time-limited campaign
* Where:
  * Cart and checkout
  * Homepage banners
  * PDP shipping callouts
  * Emails
* Display: Progress bar or unlock message, shipping banners
* Activation: Automatic when spend threshold is met

**Why it works:** Free shipping reduces cart abandonment, meets customer expectations, and encourages larger baskets to unlock the perk.

### How to Set Up This Offer in Intelligems

{% embed url="<https://www.loom.com/share/83022b093b9d40678e3ae62a15f27b9b?sid=23152c95-d144-4c2e-a3ac-55f13012cd3c>" %}

1. Go to Personalizations **→ Offers**
2. Select **Free Shipping**
3. Add an **Offer name** (internal), e.g., *Free Shipping on orders over $75*
4. Add a **Discount name** that customers will see in cart/checkout, e.g., *Free shipping!*
5. Set your **minimum purchase requirements**
   1. Choose **Subtotal of items**, and enter $75
6. Select how you want the free shipping to be powered
   1. By default, it's powered by **Intelligems** (recommended)
7. Select which ship-to countries you want this offer to apply to
8. Choose which **shipping rates** qualify
   1. We recommend matching the free shipping rate you have set up in Shopify *example:* Free Standard Shipping
9. Add components like **Progress Bar** to nudge customers toward the threshold
10. Click **Continue to Component**
11. Configure text, dynamic variables, colors, and style to match your brand
12. Click **Next** and then **Complete Offer Setup**
13. Review the setup in the **Modifications page** to confirm the collection and content changes
14. *(Optional)* Use **+ Add modification** to personalize the clearance campaign
    1. Swap in seasonal clearance imagery
    2. Update PDP or homepage copy
    3. Launch a dedicated clearance template
15. Add **Targeting** to choose which shoppers you want to see this free shipping offer
16. **Save** your Offer
17. **Preview** on desktop and mobile
18. **Schedule** start and stop times to align with your seasonal calendar, or activate immediately
19. Promote the clearance across **emails, SMS, and paid campaigns** to maximize awareness


# How to Set Up a Free Gift for New Subscriptions

Rewarding new subscribers with a free gift is a great way to increase subscription conversion and make customers feel valued from the start. Use Personalizations to automatically apply the gift and create a compelling moment that sets the tone for the subscriber relationship.

***

#### **At a Glance**

|                |                                                         |
| -------------- | ------------------------------------------------------- |
| **Goal**       | Increase new subscription conversion                    |
| **Who**        | Shoppers who haven't subscribed yet                     |
| **What**       | A free gift added automatically on subscription sign-up |
| **When**       | Always-on, or tied to a campaign window                 |
| **Offer Type** | Free gift                                               |

***

#### **Why It Works**

A free gift removes hesitation at the subscription decision point. It's tangible, immediate, and feels more premium than a percentage discount — which can train customers to expect price cuts rather than value.

***

#### **How to Set Up This Offer in Intelligems**

1. Go to **Personalizations > Offers**
2. Select **Free Gift**
3. Define the **discount name** — this will be shown to customers in cart and at checkout
4. Choose **minimum purchase requirements** if applicable
   * Subtotal minimum — e.g. require $X in cart before the gift applies
   * No minimum — gift applies as soon as targeting conditions are met
5. Select which **products** this offer is scoped to (optional)
   * Useful if you only want the gift to trigger on specific products
6. Choose whether to **combine with other discounts**
7. Choose the **purchase type** — for this offer, you'll want to select **"Subscription purchases only"** to limit the free gift to orders where a subscription item is being purchased
8. Search for and select the **free gift** you want to add to the cart
   * This should be a real product or variant in your Shopify catalog — the status can be Active or Unlisted, and should either have inventory in stock or be set to continue selling when out of stock
   * Choose something with a perceived value that complements the subscription item
9. Add **components** like an Offer message or Progress Bar to surface the gift offer to shoppers
   * Make sure components are installed in your theme via the **Global Styles** tab first
10. Click **Complete offer setup**
11. Add any **modifications**
    1. **Tip:** Pair this offer with a banner or callout on your PDPs & in your announcement banner so shoppers know the gift is coming before they even add to cart. This can be done using the Intelligems visual builder.
12. **Save your Offer**
13. **Preview** on desktop and mobile
14. **Schedule or Activate** — set a start and optional stop time if this is campaign-based


# How to Set Up an Additional Discount for New Subscriptions

A new subscription discount gives hesitant shoppers the extra nudge to commit to a subscription. Unlike a blanket sitewide discount, this offer is targeted and purposeful — it rewards the subscription action specifically, which protects your margins on one-time purchasers.

***

#### **At a Glance**

|                |                                                                               |
| -------------- | ----------------------------------------------------------------------------- |
| **Goal**       | Increase subscription conversion                                              |
| **Who**        | Shoppers who haven't subscribed yet                                           |
| **What**       | An additional percentage or dollar discount on their first subscription order |
| **When**       | Always-on or during a campaign push                                           |
| **Offer Type** | Amount off products                                                           |

***

#### **Why It Works**

Subscriptions have a higher perceived commitment than a one-time purchase. An incremental discount lowers that barrier without requiring you to discount your whole catalog — and because it's subscription-specific, it reinforces the value of subscribing rather than just buying once.

***

#### **How to Set Up This Offer in Intelligems**

1. Go to **Personalizations > Offers**
2. Select **Amount off products**
3. Define the **discount name** — this will be shown to customers in cart and at checkout
   * e.g. *10% Extra Off Your First Order*
4. Select your **discount value and amount**
   * **Percentage off item** — most common for subscription incentives (e.g. 10–20%)
   * **Dollar off per item** — useful for higher AOV products where a flat amount feels more meaningful
5. Set **minimum purchase requirements** if applicable
   * Quantity of items — require X items in cart
   * Subtotal of items — require $X before the discount applies
   * No minimum — discount applies automatically
6. Scope the discount to **specific products** if needed
7. Choose whether to **combine with other discounts**
8. Choose the **purchase type** — for this offer, you'll want to select **"Subscription purchases only"** to limit the discount to orders where a subscription item is being purchased
9. Add **components** like an Offer message or Progress Bar to surface the discount to shoppers
10. Click **Complete offer setup**
11. Add any **modifications** — e.g. update PDP content or a banner to highlight the first-time subscriber offer
12. Under **Targeting**, set the audience to first-time subscribers / non-subscribers
    * You can use URL-based targeting to limit visibility to shoppers who arrive via a specific link or campaign
13. **Save your Offer**
14. **Preview** on desktop and mobile
15. **Schedule or Activate** — set a start and optional stop time if running as a limited-time push

> **Tip:** Consider A/B testing the discount amount using Offer Testing to find the discount amount that maximizes subscription conversion without over-discounting. Even a 5% difference in the offer amount can meaningfully impact your margin per subscriber.


# The Volume Discount Duel

[Experiences](https://github.com/intelligems-io/docs/tree/main/public-docs/getting-started/common-use-cases/offer-test-common-use-cases/broken-reference/README.md) allow you to serve specific discounts and offers to your site visitors. One of these types of Offers is a Volume Discount. While you can have such an Experience on all the time, Intelligems can also help you test which thresholds and discounts drive the most value.

You can do this by setting up an [Merchandising Experience](/merchandising-experiences/offer-modifications).

*What this test design might look like:*

<table data-header-hidden><thead><tr><th width="203"></th><th></th><th width="215"></th><th></th></tr></thead><tbody><tr><td></td><td><strong>Control Discount</strong></td><td><strong>Higher Discount</strong></td><td><strong>Lower Discount</strong></td></tr><tr><td><strong>Product A</strong></td><td><p>15% off $100 or more</p><p>20% off $150 or more</p><p>25% off $200 or more</p></td><td><p>20% off $100 or more</p><p>25% off $150 or more</p><p>30% off $200 or more</p></td><td><p>10% off $100 or more</p><p>15% off $150 or more</p><p>20% off $200 or more</p></td></tr></tbody></table>

{% hint style="info" %}
We recommend taking a look at a histogram of your order values for the last month (or more) when deciding what Volume Discounts to test, especially if Volume Discounts will be a new addition to the site. For example, if a majority of your orders come in around $100, you may not want to provide a discount for orders over $100, but rather start around $150.
{% endhint %}


# Gifting Games

Offers allow you to serve specific discounts and offers to your site visitors using. One of these types of Offers is a Gift With Purchase. While you can have such an Experience on all the time, Intelligems can also help you test which thresholds and gifts drive the most value.

You can do this by setting up an [Offer Test](/merchandising-experiences/testing-offer-personalizations).

*What these test designs might look like:*

<table data-header-hidden><thead><tr><th width="197"></th><th width="281"></th><th width="331"></th></tr></thead><tbody><tr><td></td><td><strong>Control Group</strong></td><td><strong>New Group</strong></td></tr><tr><td><strong>First Test - On vs. Off</strong></td><td>No Gift With Purchase</td><td>Gift Provided at $100 Threshold</td></tr><tr><td><strong>Second Test - $100 Threshold vs. $150 Threshold</strong></td><td>Gift Provided at $100 Threshold</td><td>Gift Provided at $150 Threshold</td></tr><tr><td><strong>Third Test - Gift A vs. Gift B</strong></td><td>Gift A Provided at $100 Threshold</td><td>Gift B Provided at $100 Threshold</td></tr></tbody></table>

{% hint style="info" %}
We recommend taking a look at a histogram of your order values for the last month (or more) when deciding what threshold to provide a Gift With Purchase at, especially if this will be a new addition to the site. For example, if a majority of your orders come in around $100, you may not want to provide a gift for orders over $100, but rather start around $150.
{% endhint %}


# Integrating Components

Learn how to add the Intelligems Components to your site.

When setting up a test or personalization, you can add onsite components to merchandise your offers directly on your site to ensure your customers are aware of the offers they are eligible for, improving conversion and driving additional AOV. Components are listed on the right side of the experience editor and include:

* **Quantity buttons** — Add to product pages so customers can select multiple units and unlock tiered discounts
* **Progress bar** — Show customers how close they are to a discount or free shipping threshold
* **Offer message** — Add a promotional message to your storefront to surface active offers

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FICPrWfynXnj7t2SwBq2s%2FScreenshot%202026-04-06%20at%2011.01.46%E2%80%AFAM.png?alt=media&amp;token=819dbd13-6b7e-4485-b780-b9ed26749646" alt=""><figcaption></figcaption></figure>

{% hint style="warning" icon="traffic-light-go" %}
**Before you start:** You'll need the Intelligems JavaScript snippet installed in your theme to use offer components. If you haven't added it yet, see our [integration guide](/getting-started/adding-intelligems-script-to-your-theme). Quantity buttons and progress bars also require a short additional code snippet — details are in each component's article below.
{% endhint %}

See installation instructions and examples for each component at the links below. Please reach out to our support team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) if you would like help installing any of these components!

<table data-view="cards"><thead><tr><th data-type="content-ref"></th><th data-hidden data-card-cover data-type="image">Cover image</th></tr></thead><tbody><tr><td><a href="/merchandising-experiences/offers-integrating-widgets/quantity-buttons">Quantity Buttons</a></td><td><a href="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FDQOkgxSc2WbYz4Cwfsqs%2FScreenshot%202026-04-06%20at%2011.07.10%E2%80%AFAM.png?alt=media&amp;token=5873cc42-ac93-4820-9ab5-363c9883b162">Screenshot 2026-04-06 at 11.07.10 AM.png</a></td></tr><tr><td><a href="/merchandising-experiences/offers-integrating-widgets/progress-bars">Progress Bar</a></td><td><a href="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fniuye4iz5eXtg1yBEuF6%2FScreenshot%202026-04-06%20at%2011.07.49%E2%80%AFAM.png?alt=media&amp;token=d4d65087-9399-4c63-9054-02f7ac8a8e39">Screenshot 2026-04-06 at 11.07.49 AM.png</a></td></tr><tr><td><a href="/merchandising-experiences/offers-integrating-widgets/slide-outs">Offer Message</a></td><td><a href="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FemYPoraEou00r9JbddyS%2FScreenshot%202026-04-06%20at%2011.30.18%E2%80%AFAM.png?alt=media&amp;token=b3d2c839-d001-4106-8d16-1a8718377c12">Screenshot 2026-04-06 at 11.30.18 AM.png</a></td></tr><tr><td><a href="/merchandising-experiences/offers-integrating-widgets/cart-gwp-picker">Cart GWP Picker</a></td><td><a href="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FRR8Xr2P4xoFRBEDuLX4U%2FScreenshot%202026-08-07%20at%203.26.31%E2%80%AFPM.png?alt=media&amp;token=fcfa67cc-fe0a-4856-b60b-906c5d0f6a63">Screenshot 2026-08-07 at 3.26.31 PM.png</a></td></tr></tbody></table>


# Quantity Buttons

Add a fully customizable Quantity Buttons component to a Personalization or Test.

## Overview

Add quantity buttons to your product pages so customers can select multiple units and unlock tiered discounts without extra friction. The buttons highlight savings to encourage larger purchases and drive higher average order values.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2F8jOnBZaYRi5VglCrLRwy%2Fimage.png?alt=media&amp;token=130a3f6d-1db7-4760-8e4f-d8bc671793e2" alt=""><figcaption></figcaption></figure>

{% hint style="warning" icon="traffic-light-go" %}
**Before you start:**

* Quantity Buttons are automatically installed via the Intelligems script in most cases. If you are not seeing them when you preview your Offer on an eligible product, please see [below](#integrating-the-quantity-buttons) for help.
* Quantity Buttons are only available on Quantity & Threshold Discounts that have at least one product selected.
* To set up a Price Test that is compatible with Quantity Buttons, [follow these steps](https://docs.intelligems.io/offer-experiences/how-to-set-up-a-price-test-with-quantity-buttons).
  {% endhint %}

## Configuration

### Basic Setup

* **Section title**: Header text (e.g., "END OF THE YEAR SALE").
* **Base button**: Enable single-item option.
* **Button title:** The main text displayed on each quantity button — typically used to highlight unit count.
* **Subtitle:** Secondary text displayed below the title on each button.
* **Label**: A small tag displayed on a button to call out custom text.
* **Badge:** An overlay badge on the button, typically used to highlight a recommended or popular tier.
* **Default tier selection:** The tier pre-selected when a customer lands on the page.
* **Compare at price:** Enable this option to display compare price. This field will display the compare-at price that is in Shopify for the product being viewed adjusted for the selected quantity.
* **Show prices per item:** Displays the per-unit price within each button to make tiered pricing easy to compare.
* **Free gift display**: Include free gift information on qualifying tiers.
* **Free shipping badge**: Includ free shipping information on qualifying tiers.
* **Variant mix:** Let customers mix & match variants per tier.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-21edf96134456a2cc03b1c219bee7850a3385430%2FQuantity%20button%20config5.png?alt=media" alt=""><figcaption></figcaption></figure>

### Dynamic Variables

Use dynamic variables to populate button text automatically — like the product title or saved amount. Type two brackets or use the field menu on the right to insert them.

**Example Usage:** "Save {Saved percentage} on {Product title}" to display as "Save 15% on Cast Iron Round Casserole Dish"

#### Discount Variables

* `{Saved percentage}`: Display discount percentage
* `{Saved $ total}`: Total dollar savings
* `{Saved $ per item}`: Per-unit savings amount

#### Product Variables

* `{Product title}`: Specific product names
* `{New total price}`: Discounted total price
* `{New price per item}`: Discounted per-unit price
* `{Original total price}`: Original total pricing
* `{Original price per item}`: Original per-unit cost

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-8124e78e321d8dbd24e2ddf035fa3083286eb333%2FQuantity%20button%20configvariables.png?alt=media" alt=""><figcaption></figcaption></figure>

### Color & Style

Styling options available include:

* **Button Style:** Choose from three button style options.

  * **Classic List:** Clean, vertical layout with quantity tiers. Best for traditional presentations with detailed pricing.

  <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-1dac7546f816f31ee90cbf20a9e0eabb8d39de41%2FScreenshot%202025-10-13%20at%203.22.14%E2%80%AFPM.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

  * **Image Cards:** Includes product images for each option. Ideal for bundles, gift sets, and visual product storytelling.

  <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-d57ccbe2fade75f543c214b38198f7a3b09e05fb%2FAccordionA.png?alt=media" alt=""><figcaption></figcaption></figure>

  * **Compact:** Space-saving layout for quick comparison. Perfect for limited space and mobile experiences.

  <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-61de82a3ebcba25266132a15dd5f02dd202c18ef%2FAccordionC.png?alt=media" alt=""><figcaption></figcaption></figure>
* **Layout Options:** Choose between a side-by-side or stacked layout.
* **Colors:** Control the colors for all fields.
* **Typography:** Control the font sizes and styles for each text field.

{% hint style="success" %}
You can also customize the look of your quantity buttons in [**Global Styles**](/general-features/editors/global-styles) (left menu) to keep them consistent across all your offers. You can adjust button styles, primary/secondary/border colors, and set separate styles for desktop and mobile.
{% endhint %}

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-17694df854247cb6ed85e3b56f06f81c0e1e7564%2FGlobal%20Styles.png?alt=media" alt=""><figcaption></figcaption></figure>

## Integrating the Quantity Buttons

No separate setup is needed in most cases — the buttons are automatically installed once the Intelligems script is added to your theme & you have set up an offer that includes the quantity buttons component.

{% hint style="warning" %}
Note that you will need to preview or start your offer in order to see the quantity buttons on your site.
{% endhint %}

If you don't see the buttons while previewing or once you're started your offer, or they are in the wrong location, your theme may use a custom quantity selector that differs from the standard format.

To resolve this, you'll need to manually place the below snippet in your theme code.

```liquid
<ig-volume-quantity-widget></ig-volume-quantity-widget>
```

Follow these steps to do so:

1. Access your theme code in Shopify.
2. Locate your product page file.
   1. The file is typically called `sections/main-product.liquid` for OS 2.0 themes, or `templates/product.liquid` for older themes. If you're unsure, reach out to our support team.
3. Find your current qunatity selector.
   1. To orient yourself, search your file for `type="number"` or `name="quantity"` to see your product page structure.
   2. If your theme uses `{%- when 'xyz' -%}` blocks (OS 2.0 themes), you'll see sections like `variant_picker`, `quantity_selector`, and `buy_buttons`.
4. Insert the snippet where you want the buttons to appear — common placements are:
   1. Right before your add to cart button code
   2. Between variant selection and purchase buttons
   3. Near your existing quantity selector
5. Test and adjust.
   1. Save your changes in Shopify — nothing will appear for customers until you publish your Intelligems offer.
   2. Preview your offer in Intelligems.
   3. Check if the buttons appear where you want them.
   4. If they're not in the right spot, move the snippet to a different location and test again.

{% hint style="info" icon="file-magnifying-glass" %}
Here's an example placement for reference:

```liquid
{%- when 'variant_picker' -%}
  {% render 'product-variant-picker'... %}

<ig-volume-quantity-widget></ig-volume-quantity-widget>

{%- when 'buy_buttons' -%}
  <button type="submit">Add to cart</button>
```

{% endhint %}

## FAQs

<details>

<summary>How do I update the default quantity in my quantity buttons?</summary>

To change the default quantity selected in an offer, you'll need to change the default quantity within Shopify.

</details>

<details>

<summary>Will the quantity buttons work with multiple currencies?</summary>

By default, quantity buttons will **only reflect your store's default currency**. To solve for this, you can either set up audience targeting for your default currency, or follow the steps below to use the buttons with multiple currencies:

1. Add the script below to the `<head>` section of your **theme.liquid** file.

```
<script type="text/javascript">
    window.igCurrencyFn = (cents, el) => {
      // Use Shopify's active currency (set by currency switcher)
      const currencyCode = window.Shopify?.currency?.active || 'USD';
      const formatter = new Intl.NumberFormat('en', {
        style: 'currency',
        currency: currencyCode,
        currencyDisplay: 'symbol'
      });
      
      return formatter.format(cents / 100);
    };
    </script>

```

2. Inside Intelligems, go to Settings and scroll down to **Currency Function.**

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-fa858a14b1c28bb7c35e014c61a8e8cda86d6efe%2FScreenshot%202025-11-04%20at%202.06.59%E2%80%AFPM.png?alt=media" alt=""><figcaption></figcaption></figure>

3. Add `window.igCurrencyFn` into the **Currency Function** field and click **Save Configurations.**

</details>


# Progress Bar

Add a fully customizable Progress Bar component to an Offer Personalization or Test, or a Shipping Test.

## Overview

Progress bars visually show customers their progress toward rewards like discounts or free shipping in an Offer Personalization or Offer Test. They can also be used in a Shipping Test. They motivate customers by showing "how close am I to unlocking this discount?" and help drive larger cart values.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FubE9EJRhh3fw2GU0KSXY%2FScreenshot%202026-04-06%20at%2012.18.07%E2%80%AFPM.png?alt=media&amp;token=2ff3c023-dc15-4dbb-9ef5-2662da483429" alt=""><figcaption></figcaption></figure>

{% hint style="warning" icon="traffic-light-go" %}
**Before you start:**

* Progress Bars require a minimum purchase requirement (dollar amount or quantity) to function.

  * This must be manually set for Amount off products, Amount off order, and Free gift offers.

  <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-588fb252e20f2079078e8d72ef614363cd97d6d3%2FAmount%20off%20products%20-%20Offer%20settings%20-%20expanded.png?alt=media" alt=""><figcaption></figcaption></figure>

  * On Quantity discount, Threshold discount and Free shipping Offers, Progress bars are automatically available to use.
    {% endhint %}

## Configuration

### **Basic Setup**

* **Dynamic progress text (unlock prompt):** The sentence that will be rendered when there are discount tiers to unlock. It will render the next tier that the customer is eligible for. Ex. "Buy 2 additional packs to get 10% off" or "Spend $10 more to get free shipping".
* **Dynamic progress text (reward text):** The sentence that will render in place of the "Unlock Prompt" message when a user has unlocked all tiers. This will also render below the progress bar along with the "Unlock Prompt" message for each individual tier accomplishment. Ex. "Congrats! You've got 10% off!" or "You have unlocked free shipping!".
* **Breakpoint text:** The sentences that will show on hover of each tier breakpoint in the progress bar. Ex. "Buy 3 to get 10% off" or "Spend $50 to get free shipping."
* **Icons:** The icons shown at the breakpoint before and after it has been achieved.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-9f4901ee56d4567b553acb11efb6ef40a75a6247%2FQuantity%20button%20config.png?alt=media" alt=""><figcaption></figcaption></figure>

### **Dynamic Variables**

Use dynamic variables to populate progress bar text automatically — like the amount remaining or discount amount. Type two brackets or use the field menu on the right to insert them.

**Example Usage:** "Spend {Amount remaining} more to unlock {Discount amount} off!"

#### Discount Variables

* `{Amount remaining}`: Show remaining amount needed
* `{Discount amount}`: Display discount value

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FseN8wbj18mk38bSQMhwk%2FScreenshot%202026-04-06%20at%201.34.13%E2%80%AFPM.png?alt=media&amp;token=afb39320-cfd6-4b6a-aebf-0a1d9e292f58" alt=""><figcaption></figcaption></figure>

### **Color & Style**

Styling options available include:

* **Bar style:** Choose from three bar style options.

  * **Checkpoint classic:** Best for multi-tier setups.

  <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FXMnq7PsDGqfTiRvWAaWQ%2FScreenshot%202026-04-06%20at%201.40.06%E2%80%AFPM.png?alt=media&amp;token=7b8105e4-9808-4514-97f1-50415cba0732" alt=""><figcaption></figcaption></figure>

  * **Floating milestones:** Compact layouts with 2-3 tiers.

    <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2F2bzesdH2xSe6znfWlCHF%2FScreenshot%202026-04-06%20at%201.38.27%E2%80%AFPM.png?alt=media&amp;token=f81c9f7c-9d3b-4f7c-a137-6224b3b61874" alt=""><figcaption></figcaption></figure>
  * **Minimal:** For single-tier setups like free shipping.

    <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FgQtOwGc5rmxF8uXrqD6A%2FScreenshot%202026-04-06%20at%201.40.28%E2%80%AFPM.png?alt=media&amp;token=66b33bdf-3a89-4afc-9e4c-475d2028c42e" alt=""><figcaption></figcaption></figure>
* **Bar & Breakpoint appearance:** Control the thickness, corner radius and size of bar elements.
* **Colors:** Control the colors for all fields.
* **Typography:** Control the font sizes and styles for each text field.

{% hint style="success" %}
You can also customize the look of your progress bars in [**Global Styles**](/general-features/editors/global-styles) (left menu) to keep them consistent across all your offers. You can adjust bar styles, bar colors, text options, and set separate styles for desktop and mobile.
{% endhint %}

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FjQxzLz7QzydwI5DoFaen%2FScreenshot%202026-04-06%20at%2011.22.09%E2%80%AFAM.png?alt=media&amp;token=e0b595b9-efeb-44de-87d7-c262775e4add" alt=""><figcaption></figcaption></figure>

## Integrating the Progress Bar

Paste the following code snippet into your Shopify theme code, in the theme file that renders your cart in order to add a Progress Bar to a Test or Personalization. This file may be called something like `cart.liquid`, `slideout-cart.liquid`, etc. We recommend adding this code snippet at the top of the section that relates to your cart:

```html
<ig-progress-bar></ig-progress-bar>
```

<details>

<summary>Not sure where to add the above snippet? Use our Claude prompt here!</summary>

Instead of guessing which file to edit in your Shopify theme, you can give Claude AI access to your live store. Claude then inspects the actual cart HTML structure in real time, identifies your theme and version, and tells you the exact file and location to paste the Intelligems snippet.

This works for any Shopify theme — Horizon, Dawn, Debut, Prestige, Impulse, Empire, custom themes, etc.

**Prerequisites**

1. A [Claude.ai](http://claude.ai) account (Pro plan recommended — needed for browser extension access)
2. The Claude browser extension installed in Chrome
3. Access to your Shopify store (you need to be able to open the storefront in a browser tab)

**Step-by-Step: How to Use Claude to Find Your Snippet Location**

1. Open the **Claude extension** in your Chrome browser by clicking the Claude icon in your browser toolbar.
2. Copy the prompt in 2b (including i-v) below and paste it into Claude.
   1. Use the prompt below verbatim. Do not modify it. It is engineered to give Claude all the context it needs to inspect your store and return a precise, actionable answer.
   2. **Prompt:** You are a senior Shopify developer and Intelligems integration specialist. I have my Shopify storefront open in this browser tab. Please do the following:
      1. Inspect the current page using developer tools. Run JavaScript to detect: the Shopify theme name and version (from window\.Shopify.theme), the cart drawer structure (look for cart-drawer-component, cart-drawer, or equivalent custom elements), and the full parent-child DOM hierarchy of the cart — specifically the container that holds the cart header/title at the top, the scrollable items list in the middle, and the totals/checkout area at the bottom.
      2. Based on what you find, identify the exact Shopify Liquid file that renders the cart (e.g. sections/header.liquid, sections/cart-drawer.liquid, snippets/cart.liquid, etc.).
      3. Tell me exactly where inside that file I should paste this snippet: \<ig-progress-bar>\</ig-progress-bar>
      4. CRITICAL placement requirement: The snippet must appear at the TOP of the cart drawer — directly below the cart title/header and ABOVE the list of cart items. Do NOT place it near the totals, subtotal, or checkout button area at the bottom. The goal is for the progress bar to be the first thing a shopper sees when the cart opens.
      5. Be specific: name the file, describe what CSS class or HTML element to search for in that file, and whether to paste the snippet before or after it. Also explain why that location is optimal. If you see anything that might cause issues (e.g. existing progress bars, conflicting elements), flag it.
3. Hit Enter and wait. Claude will inspect your live store DOM, detect your theme name and version, identify the cart structure, and output the exact file name and placement.
4. Go to Shopify Admin → Online Store → Themes → ··· → Edit code. Open the file Claude named, find the exact line it mentioned, and paste the snippet there.
5. Save the file and reload your store. While previewing a test or personalization that has a progress bar, add a product to the cart and verify the progress bar appears in the cart drawer.

</details>

If you already have a progress bar in your cart, remember to comment the existing progress bar out to avoid showing two!

{% hint style="warning" icon="triangle-exclamation" %}
**Heads up:** If your theme uses `<ig-volume-progress-bar-widget></ig-volume-progress-bar-widget>` or `<ig-shipping-progress-container></ig-shipping-progress-container>`, those snippets still work — no changes needed. We've since updated to a single unified snippet to streamline installation.
{% endhint %}

#### Integrating with Rebuy Carts

If you use Rebuy for your slide out cart, you'll need to follow these steps to add the Offer progress bar.

1. Create a Rebuy custom smart cart template. Follow [this](https://help.rebuyengine.com/en/articles/6120362-how-to-use-a-custom-template-with-smart-cart) article for instructions.
2. Edit the template to replace the Rebuy progress bar with the Intelligems progress bar snippet. See above.


# Offer Message

Add a fully customizable Offer Message component to an Offer Personalization or Test.

## Overview

Offer Messages are promotional call-outs that appear as overlays to highlight special offers and drive engagement. They capture customer attention at key moments in the shopping journey. They can be added to an Offer Personalization or Offer Test.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FwUdUXf6yzZvwOWDe3PYU%2Fimage.png?alt=media&amp;token=773311ad-5a32-4429-893f-d1e7bf31c4d8" alt=""><figcaption></figcaption></figure>

## Configuration

### Basic Setup

* **Title:** The main text displayed in your offer message.
* **Description:** Secondary text displayed below the title.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-86a6792d3b307b7f48b3f0fa9f61505b64cbb3a4%2FOffer%20message%20-%20pop%20up%20message.png?alt=media" alt=""><figcaption></figcaption></figure>

### Color & Style

* **Offer message style:** Choose from two offer message style options.

  * **Pop Up:** Standard promotional call-out for high-priority announcements and urgent offers.

  <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-1342260b85413233856df6832578d6bc8f4cc6dc%2FFrame%202147226290.png?alt=media" alt=""><figcaption></figcaption></figure>

  * **Slide Out:** Promotional call-out with slide animation for subtle entrancewithout disrupting site flow.

    <figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-63f451bd1e71bbab96f3f41e81184bd4a99397ba%2FFrame%202910.png?alt=media" alt=""><figcaption></figcaption></figure>
* **Appearance**: Control the corner radius of the offer message.
* **Placement**: Top-left or top-right positioning on your site.
* **Colors:** Control the colors for all fields.
* **Typography:** Control the font sizes and styles for each text field.

## Integrating the Offer Message

No setup required — this component is available automatically once Intelligems is installed in your theme & you have set up an offer that includes the offer message component.

{% hint style="warning" %}
Note that you will need to preview or start your offer in order to see the offer message on your site.
{% endhint %}


# Cart GWP Picker

## Overview

The Cart GWP Picker lets shoppers choose their own gift with purchase directly from the cart rather than receiving a pre-selected item. When a shopper's cart meets your spend threshold, a picker component appears showing the available gift options. They select the one they want, and it's added to cart at $0.

Giving shoppers agency over their gift meaningfully increases the perceived value of the offer. Instead of receiving a sample they may not want, they get something they actually chose, which drives higher conversion on the GWP threshold, reduces gift-related abandonment, and makes the promotion feel more premium.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FjlDUJInzvpAPERbcZzd4%2FScreenshot%202026-06-09%20at%2010.03.39%E2%80%AFAM.png?alt=media&amp;token=8369343e-7878-4a1d-b69a-e497f6c177ae" alt=""><figcaption></figcaption></figure>

## Configuration

* **Heading text:** The header displayed in your GWP picker.
* **Product settings:**
  * **Image width:** Define how wide the image is.
  * **Image cropping:** Define whether the image is cropped to it's original dimensions or square.
  * **Strikethrough price:** Define whether the regular or compare at price is used as the strikethrough price.
  * **Custom price text:** Define the custom price text — this defaults to "FREE".
  * **Default variant:** Define which variant is selected by default.
  * **Dropdown style:** Define which style dropdown is used in the picker.
* **Button text:** Define the copy in the add to cart button — this defaults to "Add to cart".
* Color & style:
  * **Appearance:** Control the corner radius, border thickness and text alignment.
  * **Colors:** Control the colors for all fields.
  * **Typography:** Control the font sizes and styles for each text field.

## Integrating the GWP Picker

Paste the following code snippet into your Shopify theme code, in the theme file that renders your cart in order to add a GWP Picker to a Test or Personalization. This file may be called something like `cart.liquid`, `slideout-cart.liquid`, etc. We recommend adding this code snippet above the subtotal in your cart:

```html
<ig-gwp-variant-picker></ig-gwp-variant-picker>
```

<details>

<summary>Integrating with Rebuy</summary>

To integrate this component with your Rebuy cart, follow these steps:

1. Go to [rebuyengine.com/dashboard](https://rebuyengine.com/dashboard)
2. Click **Smart Cart** in the side navigation
3. Select the cart you want to edit
4. Click **Add Component** in the editor
5. Choose **Custom Code Block** from the component list
6. Paste the HTML component for our GWP picker: \<ig-gwp-variant-picker>\</ig-gwp-variant-picker>
7. Drag and drop the block to position it where you want it in the cart - we recommend placing it at the bottom of the body section
8. Click **Save**, then confirm

Please see the video below of these steps:

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

</details>

<details>

<summary>Integrating with Upcart</summary>

To integrate this component with your Upcart cart, follow these steps:

1. Go to your **Upcart dashboard**
2. Click **Carts** in the side navigation
3. Select the cart you want to edit
4. Got to **Settings** at the bottom of the left navigation for this cart
5. Choose **Custom HTML**
6. Choose the **location** for the custom HTML in the dropdown - we recommend "Below cart items" or "Above footer/add-ons"
7. Paste the HTML component for our GWP picker: \<ig-gwp-variant-picker>\</ig-gwp-variant-picker>
8. Drag and drop the block to position it where you want it in the cart - we recommend placing it at the bottom of the body section
9. Click **Save**
10. Go back to **Cart settings**, and open **Advanced Settings** - if **"Render cart in shadow DOM"** is enabled, disable it and hit Save - this is **required** for our GWP picker to display

Please see the video below of these steps:

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

</details>


# Upgrade Components

Update your existing offers to use the latest component versions for improved performance and styling options.

## Steps to upgrade

#### 1. Locate your offer

Navigate to the offer containing the component you want to upgrade.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-ee61b6f4b675b4b16f3ca188718da6a433b3e05d%2FScreenshot%202025-08-05%20at%202.27.14%E2%80%AFPM.png?alt=media" alt=""><figcaption></figcaption></figure>

#### 2. Access component settings

In the Mods section, click the three-dot menu next to the component you want to upgrade, then select "Edit component."

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-bcdaa9279dfe3c014613d686cb54b9f5fe719295%2FFrame%202147226308.png?alt=media" alt=""><figcaption></figcaption></figure>

#### 3. Open styling options

The Color & Style section is collapsed by default. Click to expand it.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-428577dced920ff35fafa2ce0aaeac1fccff74e8%2FFrame%202147226306.png?alt=media" alt=""><figcaption></figcaption></figure>

#### 4. Change component style

Click the "Change \[button] \[bar] \[message] style" link to view available component options.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-18c08531d8b7d908e3e62c5e13dbb262fe2f86c3%2FFrame%202147226309.png?alt=media" alt=""><figcaption></figcaption></figure>

#### 5. Select new component

Choose your preferred component from the available options.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-29e0ad37bd83e2393f0684839af47cab3cef3fe6%2FScreenshot%202025-08-05%20at%202.28.31%E2%80%AFPM.png?alt=media" alt=""><figcaption></figcaption></figure>

#### 6. Configure your component

Adjust color & styling as needed for your offer.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-99d1ac41e73ca96ca86d054f044273cb82a2e0e4%2FScreenshot%202025-08-05%20at%202.30.24%E2%80%AFPM.png?alt=media" alt=""><figcaption></figcaption></figure>

#### 7. Save changes

Click "Save" to apply your component upgrade.

{% hint style="info" %}
**Note:** If your offer uses multiple components, the system will prompt you to review each one. You can skip components that don't need updates, but you'll need to confirm changes on each screen before finalizing.
{% endhint %}

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-c0a3260f7e13edd1adbb0276cc0e217da52f4054%2FFrame%202147226307.png?alt=media" alt=""><figcaption></figcaption></figure>


# Merchandising Experience QA Checklist

{% hint style="success" %}
**Let Atlas QA take the first pass.** Our quality assurance agent reviews your experience configuration and your live storefront and returns a report telling you what's broken, why it matters, and how to fix it — with screenshots. Run it from the **QA & Preview** tab of any test. [Learn more](/general-features/atlas-ai/atlas-qa).
{% endhint %}

This checklist applies to any Merchandising experience — Amount off Products, Amount off Order, Volume Discount, Free Gift, BXGY and Onsite Upsells — whether it's set up as a **Test** or a **Personalization**.

## How it works

**Offers:** When you create and save your Offer, Intelligems automatically creates the necessary Discount Function in your Shopify account. Once your experience is live, Intelligems provides the correct discounts to your shoppers — based on their test group for a Test, or automatically for a Personalization (subject to any targeting rules you've set).

**Onsite Upsells:** Once your experience is live, Intelligems displays your upsell to shoppers based on the placement and targeting rules you've configured. If your Onsite Upsell includes a discount, Intelligems creates the necessary Discount Function the same way it does for Offers. If it doesn't include a discount, no Discount Function is created — the upsell is just serving merchandising content.

## What to check first

Before heading to your site to preview your experience, there are a few things you should check to make sure your integration is functional:

* **Is Intelligems JavaScript in your live theme?** Check out this article for more information on where to find this.
* **Have you added the necessary snippets for any relevant merchandising components?** Check out [this article](/merchandising-experiences/offers-integrating-widgets) for more information on how to do this.

## Previewing your experience

Once you've confirmed both of those items are true, you can preview your experience on your live site. Enter Preview mode by going to the Preview tab in your pending experience > Open preview.

This will open your site in a new window with the Intelligems preview widget enabled. In the preview widget, you'll see:

* The name of the experience you are previewing in the top left
* For Tests: a dropdown to switch between different test groups in the bottom left
* A toggle to highlight any replacements in the top right
* An edit button in the bottom right: this enables integration mode, where you can edit onsite content

Did you set up any [Onsite Edits](broken://pages/UOITZLqj2u2ZgWJLVY8n) for your experience? If so, view any locations where you used the Visual Builder to change language on your store to merchandise the offer, such as a banner or content on the PDP. Confirm copy or images are correctly updating when switching the test group in the Intelligems Preview Widget (Tests), or that they display correctly for your audience (Personalizations). Note that you may need to hard refresh when switching groups in the widget!

### Step 2: Confirm that any Components or Onsite Upsells are visible and working correctly

**For Offers:** Did you add an [Offer Message](/merchandising-experiences/offers-integrating-widgets/slide-outs), [Quantity Buttons](/merchandising-experiences/offers-integrating-widgets/quantity-buttons) or [Progress Bar](/merchandising-experiences/offers-integrating-widgets/progress-bars) to your experience? If so, confirm that each Component is visible on your site, in the correct location, and working correctly — when switching test groups (Tests) or as configured (Personalizations).

**For Onsite Upsells:** Did you create an Onsite Upsell? If so, confirm:

* It appears in the correct location — product page or cart drawer
* The correct products are being recommended for different scenarios
* Copy, images, and styling match what you built in the visual builder
* It updates correctly when switching test groups (Tests) or displays as expected for your audience (Personalizations)
* Clicking into a recommended product or adding it to cart works as expected
* **If your upsell includes a discount**, continue to Step 3 to confirm the discount is applying correctly

Choose one of the test groups (or, for a Personalization, your live experience), and empty your cart if it is not already. Add the appropriate product, or products, to your cart to trigger the offer.

* [ ] If you are testing a **Discount Offer** (Amount Off Product, Amount Off Order or Volume Discount), you should see the discount show up in both the cart and at checkout for any products it is applicable to.
* [ ] If you are testing a **Free Gift Offer**:
  * [ ] If the gift is set up to be automatically added to cart, you should see the defined product get auto-added and discounted to free once you have met the minimum requirement for it.
  * [ ] If the gift is not set up to auto-add, you will need to manually add the defined product to cart and will then see it discounted to free as long as you have met the minimum requirement for it.
  * [ ] You should see the gift get removed from cart if you drop below the minimum requirement.
* [ ] If you are testing an **Onsite Upsell** that is discounted, you should also see the discount show up in both the cart and at checkout for any products it is applicable to.

Be sure to test multiple scenarios to ensure your Offers and Onsite Upsells are always being provided correctly. This list is not exhaustive, and these may not all be applicable to your site, but a few scenarios we recommend testing include:

* Below the defined minimum
* Above the defined minimum
* When using a discount code that should stack
* When using a discount code that shouldn't stack
* Adding to cart from different locations on the site
* Adding products from different shipping profiles and zones for shipping offers
* Viewing your Onsite Upsell on both product pages and the cart drawer
* Test on multiple devices and browsers (such as desktop Chrome and mobile Safari) to confirm there are no discrepancies.

**For Tests:** complete these steps in each test group, being sure to empty your cart when you switch to a new test group. **For Personalizations:** complete these steps once against your live experience.&#x20;

If you notice any issues, or have any questions, please feel free to [reach out to Intelligems support!](https://portal.usepylon.com/intelligems/forms/intelligems-support-request)

Now that you've completed the QA checklist for your Offer Test, you can start your Merchandising experience, you can start your Test or go live with your Personalization!

{% hint style="info" %}
This checklist covers Merchandising experiences. Each module has its own: Content, Pricing, Shipping, Checkout, and Post-purchase.
{% endhint %}

When you save a Merchandising experience, Intelligems registers the discount in your Shopify account. When you start it, that discount begins applying to shoppers based on their group and whatever else you've targeted. Everything below applies whether you built a Test or a Personalization.

QA happens in two passes. Preview shows you the on-site changes. The discount itself only applies once the experience is running, so the cart and checkout pass comes second, on a started experience with the audience locked down.

### **Check your integration first**

* [ ] Is the Intelligems script in your live theme? [Here's](/getting-started/adding-intelligems-script-to-your-theme) where to find it.
* [ ] Using Quantity Buttons or a Progress Bar? Both need a short snippet in your theme on top of the script. [Component setup](/merchandising-experiences/offers-integrating-widgets).
* [ ] Count the automatic discounts already active in your Shopify admin, including other apps'. Shopify allows five. Past that, Intelligems can't register yours and shows a Discount Synchronization Error, and the offer won't apply to anyone.
* [ ] Free Gift? Check that the gift has stock at a location Shopify ships inventory from. Stock held only at other locations reads as out of stock, and the gift gets pulled at checkout.

{% hint style="info" %}
A Merchandising offer applies in the cart and at checkout. It doesn't change the price on your product or collection pages. If you want a lower price on the PDP, that's a Price Change experience.
{% endhint %}

### **Pass one: preview the on-site changes**

Open your experience and go to the **Preview** tab.

* [ ] **Open preview** loads your site in a new tab with the Intelligems preview widget enabled. Pick the theme you want to preview first.

Then check whatever you built alongside the offer. A Merchandising experience can carry Content Edits, Redirects, Styles & Javascript, a Theme Change or Template Changes as well:

* [ ] Go to each place you set up a content change, switch groups in the widget, and confirm the content updates. You may need a hard refresh after switching.
* [ ] Sweep the rest of the site to make sure nothing changed where it shouldn't have.

{% hint style="warning" %}
The discount and the components won't show up in preview while the experience is still pending. Your cart will show full prices, and a free gift will add at its normal price. That's the discount not running yet, not your offer being misconfigured. Pass two is how you check it.
{% endhint %}

### **Pass two: QA the offer in cart and at checkout**

To see the discount you need the experience running, so run it for yourself only:

1. In **Targeting**, add a URL parameter audience, for example `utm_source=testqa`, and exclude everyone else.
2. Start the experience.
3. Visit your site with `?utm_source=testqa` on the URL.

Real shoppers won't enter, and the discount will apply for you. Empty your cart, then add the products that trigger the offer for the group you're checking.

#### **Amount off Products, Amount off Order and Volume Discount**

* [ ] The discount shows in the cart and again at checkout, on every product it should apply to.
* [ ] The discount name you set is the one shown to the shopper in both places.
* [ ] Products the offer excludes are still at full price.

#### **Free Gift**

* [ ] Set to auto-add? The gift appears on its own once the cart meets the minimum, discounted to free.
* [ ] Not set to auto-add? Add the gift yourself and confirm it discounts to free once the minimum is met.
* [ ] Drop back below the minimum. The gift comes out of the cart.
* [ ] Raise the quantity across the threshold a few times and count the gift lines. You should have one.

#### **Scenarios worth running**

Run these in each group, emptying the cart when you switch. Not all of them will apply to your store.

* Just below the minimum, and just above it
* Every tier of a Volume Discount, not only the first and last
* Adding to cart from the PDP, the collection page and the quick-add, if you have all three
* Products from more than one shipping profile or zone

{% hint style="info" %}
Minimums on a Free Gift or a Volume Discount tier are measured against the cart subtotal **before** any discount, including Shopify discount codes. So a $200 cart with a code taking it to $140 still clears a $150 minimum. Free shipping thresholds work the other way and use the subtotal after discounts.
{% endhint %}

### **Before you open it up**

* [ ] Replace the QA audience with the targeting you actually want, or remove it to run to everyone.
* [ ] Confirm the experience is still running after the targeting change.

If anything looks wrong, or you have questions, [reach out to Intelligems support](https://portal.usepylon.com/intelligems/forms/intelligems-support-request).


# Merchandising Experiences FAQs

### **Getting an offer live**

<details>

<summary>Why isn't my discount applying when I preview?</summary>

Because the discount isn't running yet. Intelligems registers it in your Shopify account when you save the experience, and starts applying it when you start the experience. Until then your cart shows full prices, and a free gift adds at its normal price. That's the discount waiting, not your offer being misconfigured.

To check the discount before you open it up, start the experience with the audience locked to you. The QA checklist walks through it.

</details>

<details>

<summary>Where does the discount show up for the shopper?</summary>

In the cart and again at checkout, under the discount name you set in Offer settings. There's no code to enter.

{% hint style="info" %}
A Merchandising offer doesn't change the price on your product or collection pages. If you want a lower price on the PDP, that's a Price Change experience.
{% endhint %}

</details>

<details>

<summary>Can I change an offer while it's running?</summary>

Yes. Open the experience, go to **Modifications**, and click **Edit** on the offer. You don't have to stop it first.

If you're running a Test, think about the data before you do. The group you edit stops being the group you've been collecting results on, and what you read afterward mixes the two. Ending the test and starting a new one keeps the read clean.

</details>

<details>

<summary>What does Discount Synchronization Error mean?</summary>

Shopify allows five active automatic discounts per store, counting every app's, and Intelligems couldn't register yours inside that limit. While the error is showing, the offer isn't applying to anyone.

To see what's using the slots, go to Shopify admin > **Discounts** and filter for Status: Active and Method: Automatic. Then either archive Intelligems offers you're no longer using, or turn off automatic discounts coming from elsewhere.

If neither frees a slot, [reach out to support](https://portal.usepylon.com/intelligems/forms/intelligems-support-request).

</details>

<details>

<summary>How many offers can I have at once?</summary>

Fifteen by default, and the limit can be raised. Pending, started and paused offers all count toward it. See [Merchandising Experience Limits](/merchandising-experiences/offer-modifications/offers-limits) for what counts and how to archive.

</details>

### **Discounts and stacking**

<details>

<summary>Can I run more than one Merchandising Experience at the same time?</summary>

Yes, and whether they stack is up to you. It's set per offer under **Combinations** in Offer settings, and [Merchandising Combinations](/merchandising-experiences/offer-modifications/offer-combinations) covers the logic in full:

* **Shopify discounts** lets the offer combine with discounts you created in Shopify, including codes.
* **Intelligems discounts** lets it combine with your other Intelligems offers. Shopify discounts has to be on for this one to work.

For two discounts to combine, both sides have to allow it, so if a Shopify discount isn't set to combine, Shopify picks whichever is better for the shopper instead of adding them together.

{% hint style="warning" %}
Free Gift doesn't follow the **Intelligems discounts** setting yet. Two Free Gift offers that clear the same minimum will both apply to the cart even with the box cleared. Target them to separate audiences if you only want one to land.
{% endhint %}

</details>

<details>

<summary>A shopper got the discount when their cart was below my minimum. Why?</summary>

Minimums on a Free Gift or a Volume Discount tier are measured against the cart subtotal **before** any discount, including Shopify discount codes. A $200 cart with a code bringing it down to $140 still clears a $150 minimum.

Free shipping thresholds work the other way and use the subtotal after discounts.

</details>

<details>

<summary>Do minimums convert for shoppers in other currencies?</summary>

No. A minimum of 75 means 75 in whatever currency the shopper is checking out in, with no conversion. If you sell in more than one currency, either set a minimum that works across all of them or run a separate experience per currency using currency targeting.

</details>

<details>

<summary>Can I compare two offers against each other?</summary>

Yes. That's a Test: build the offers as separate groups and Intelligems reports what each one did to AOV and profit per visitor against a control.

</details>

<details>

<summary>Running a Large Number of Offer Personalizations with Shopify Functions</summary>

Intelligems uses the Shopify [Discount Function API](https://shopify.dev/docs/api/functions/latest/discount) to power our Offers feature, ensuring seamless, native integration with your Shopify store. Discount Functions are Shopify's modern approach to customizing discounts and promotions. Unlike legacy discount code systems, Discount Functions run server-side and integrate directly into Shopify's checkout flow, providing:

* **Native checkout integration**: Discounts appear automatically at checkout without requiring customers to enter codes
* **Real-time calculation**: Offers are evaluated and applied instantly as customers shop
* **Stackability control**: Precisely manage how offers combine with other discounts
* **Performance**: Fast, reliable discount application with no impact on page speed
* **Security**: Server-side validation prevents discount abuse or manipulation

When you create an Offer in Intelligems (quantity discounts, flat discounts, free gifts, free shipping discount), we automatically configure the appropriate Discount Function in your Shopify store. This means your offers work exactly like native Shopify discounts—they just have the added power of Intelligems' A/B testing and analytics behind them.

For merchants, this means a seamless experience: your offers appear naturally in the cart and checkout, your customers don't need to remember codes, and everything works with Shopify's native discount stacking rules.

### Multiple Functions

Shopify Discount Functions have storage limits on how much configuration data they can hold. When your store has more than \~20 Offers (whether active or inactive), Intelligems automatically distributes them across multiple Discount Functions to ensure everything works properly.

This means that you'll have several Discount Functions operating independently. Each function will return its own result, and will apply stacking logic *only* to the Offers stored within that Discount Function. When the Discount Functions run on your store, Shopify will choose the single result with the maximum benefit, and apply that discount to the order.

#### **Example:**

1. Function A holds Offer 1 (10% discount) and Offer 2 (15% discount). Both are set to stack.
2. Function B holds Offer 3 (30% discount), also set to stack

If a user is eligible for *all* the above Offer Personalizations, Function A will return a stacked discount (10% + 15%) and Function B will return a single discount (30%)

Because the result from Function B has a greater benefit (30% > 10% + 15%) only the result from Function B will apply to the order.

### How many functions can I use?

If you are using `checkout.liquid` you can only have 1 active discount function with an 'automatic' application method (this is the type of Discount Function our Offers use). Otherwise, Shopify allows for a maximum of 25.

However, this number isn't scoped to just the Intelligems app - every automatic discount, whether it's created by another app or Shopify, counts against this total.

If there are any Offer(s) that we couldn't find Discount Function space for, we'll highlight them in red. These Offers will not run on your store. To make room so they will run, you can remove any non-Intelligems automatic discounts, or archive Intelligems Offers that you are not currently using.

</details>

### **Free Gift**

<details>

<summary>Can shoppers choose which free gift they get?</summary>

Across variants of one product, yes. Add the variants as gift options and put the Cart GWP picker in your cart, and shoppers pick the one they want.

Across two separate products, no. If your gift options are separate products in Shopify, the way to offer a choice today is to combine them into one product with a variant option for whatever differs, like colour.

Setting up a second Free Gift offer doesn't get you a choice either. Two offers over the same minimum both apply, and the Combinations setting won't make them exclusive.

</details>

<details>

<summary>Can I limit a gift to one per customer?</summary>

There's no per-customer redemption limit in Intelligems. Three partial options, strongest last:

* **New Customers targeting** keeps returning shoppers out of the experience. It reads a browser cookie rather than purchase history, so a different device or a cleared browser still qualifies.
* **A Shopify discount code** set to "Limit to one use per customer" enforces the limit at checkout. This only helps if your gift runs through a code rather than applying automatically.
* **A Klaviyo segment** of customers who've already redeemed, excluded from your targeting. This one uses purchase history, so it's the most reliable, and it only covers the customers Klaviyo can identify.

</details>

<details>

<summary>The gift only shows up after the shopper refreshes the cart. How do I fix that?</summary>

Your theme's cart drawer is managing its own render state and doesn't know Intelligems changed the cart. Intelligems fires an `ig:CartUpdated` event when it adds or removes the gift, so your theme needs to listen for that event and trigger its own cart refresh. The same fix covers the reverse case, where the cart drops below the minimum and the gift should come out.

The event your theme uses to redraw the cart varies, so a developer will need to check your cart drawer code to wire it up.

</details>

<details>

<summary>The gift was in the cart and then disappeared at checkout.</summary>

Intelligems reads gift inventory at the locations Shopify ships inventory from, rather than summing stock across all of them. A gift held only at other locations reads as out of stock and gets pulled at checkout. Check the gift variant has stock at a shipping location before you start.

</details>

### **Components and messaging**

<details>

<summary>Do I need a developer to set up an offer?</summary>

Not for the offer itself. Components are where a developer helps: Quantity Buttons, the Progress Bar and the Cart GWP picker each need a short snippet in your theme on top of the Intelligems script. Once they're in, you style them in Global styles and nothing else needs code.

</details>


# Testing Merchandising

Intelligems enables your org to run real-time split tests on different offers. This article will walk you through how to run a Merchandising Test with Intelligems and some best practices.\
\
Watch the Looms or follow the steps below.

## Setting Up a Merchandising Test from Test Creation Flow

{% embed url="<https://www.loom.com/share/402158d0b8c845c39e07477e3b401e84?sid=73395dbc-8880-48dd-ba0d-dd94abcddadc>" %}

If you'd rather follow written steps, read below.

## Step 1: Create a new experience

Navigate to the "A/B Tests" tab in the menu on the left-hand side of the Intelligems app. Once you're there, click Merchandising. Select your type and then "Create".

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FRxzboZQswWzF5caR0i13%2FScreenshot%202026-03-04%20at%2010.05.21%E2%80%AFAM.png?alt=media&amp;token=87540fe8-da22-426d-9bf7-9e2e90ae0bcb" alt="" width="256"><figcaption></figcaption></figure>

## Step 2: Create your test groups

Create between two and five groups to include in the test by clicking on the ‘+’ button. Name the groups for the test and use the slider at the bottom of the page to allocate what percentage of traffic will go to each group.

{% hint style="info" %}
The more groups you have, the longer it will take to get statistically significant results. You’ll need about 300 orders for each group in the test to detect a 10% change in conversion with 90% confidence.
{% endhint %}

## Step 3: Select which Offer each group will be exposed to

Once you've created your groups, go to the Modifications step. Here, you will choose what kind of Offers you're testing for each group. You can:

* Leave a group untouched, as a no-offer group
* Build an offer by choosing an offer type and other optional modifications
* Or start by copying the contents of a Personalization that contains an Offer. See more [here](broken://pages/Znsf2kv04nnaGxPWW6U1) on how to set up a new Personalization.

These details can be modified anytime during test setup and while the test is live.

## Step 4: Set up targeting if needed

Targeting is an optional step. By default, a visitor will be immediately assigned to one of the test groups using its random split-test mechanism. This assignment is determined at the first visit and is stored via a first‐party cookie, ensuring that the visitor remains in the same group on subsequent visits during the offers test period.

The targeting tool allows you to apply specific conditions to certain site visitors. There are a few different ways you can do this:

* **Audience Targeting:** limit your users based on their device, country, UTM parameters, landing page URL, new/returning, cookies, and much more.
* **Currency Targeting:** Limit your test to a single currency and/or a list of specific countries.
* **Mutual Exclusion:** Prevent users from being targeted by related experiments to reduce undesired interactions under the [Mutually Exclusive Tests](/general-features/targeting/mutually-exclusive-experiments) option.

You can learn more about targeting [here](/general-features/targeting).

{% hint style="warning" %}
**A note on targeting: If you had any targeting options set on the Offer Personalizations you used to define your test groups, these will be ignored in lieu of test-level targeting.**

* Personalization-level audience targeting is ignored. The audience targeting used on the test (or lack thereof) is used in its place.
* Personalization-level currency targeting is ignored. The currency targeting used on the test (or lack thereof) is used in its place.
* Personalization-level page targeting is ignored. The page targeting used on the test (or lack thereof) is used in its place.
  {% endhint %}

## Step 5: Save your test and start it

Once you have completed all the steps, you'll be able to save your test with the button in the top right. You can then start it whenever you're ready.

{% hint style="success" %}
Don’t worry, this won’t set the test live yet and you can come back and edit if you need to make changes!
{% endhint %}


# Pricing Experiences Overview

### **What is a Pricing Experience?**

Intelligems takes the guesswork out of setting your product prices by allowing you to test prices in real time in order to find the “right” product prices to drive profit, revenue, and conversion.

Pricing experiences are easy to build and customize: add multiple test groups with configurable traffic distribution rules, select which products to include, and set the price each group sees.

{% hint style="info" %}
Pricing is available on Smart Pricing and Unlimited plans. Smart Pricing works differently from our other modules. Price testing needs an integration our team sets up with your store, so it isn't self-serve and doesn't come with a free trial.
{% endhint %}

You build a Pricing experience the same way either way: choose your products, set your prices. Then choose a mode.

* **Test** splits your visitors between groups, and the results tell you which price performs better.
* **Personalization** shows the price you've picked to everyone, or to a specific audience, with nothing being tested.

{% hint style="warning" %}
Three things work differently when you run a Price Change as a Personalization:

* You can only reduce prices.
* Duplicate products and subscription products aren't supported.
* Prices change in your store's default currency only. We switch currency targeting on automatically and set it to that currency, so shoppers browsing in another currency won't see the Personalization.
  {% endhint %}

### **The 2 experience types**

| Type                                                                                                                      | What it's for                                       |
| ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
| [**Price Change**](/pricing-experiences/pricing-experiences-overview/how-to-set-up-a-price-test)                          | Run true price tests on selected products.          |
| [**Amount off Products**](/merchandising-experiences/offer-modifications/how-to-set-up-an-amount-off-products-experience) | Discount specific products by percentage or amount. |

Price Change updates the price and the compare-at price shown on your PDPs and across your site. Amount off Products leaves your site prices alone and takes the discount off in the cart and at checkout, the way a discount code does. If you want shoppers to see a different number on the product page, use Price Change.

### **How does it work?**

For all Shopify brands, Intelligems displays the correct price on the frontend by manipulating the DOM to show the correct price for each test group. This is possible once the Intelligems team has integrated your site and [prices have been tagged](/pricing-experiences/price-testing-integration-guides/integration-guide-using-shopify-functions/step-2-tag-product-prices). Intelligems displays the correct price in the cart and charges the correct amount at checkout using one of these two methods:

1. **Using Shopify Cart Transform Functions.** Intelligems will automatically set your prices to the highest prices in the experience in Shopify when you start it, and we will use a Shopify Cart Transform Function to dynamically adjust the price for any users in a group lower than the highest price. This ensures that the shopper sees the same price in the cart and at checkout that they saw everywhere else on the site. This method is available for brands on any Shopify plan and is our primary method for price testing.
2. **Using Duplicate Products.** In certain cases, such as testing something more complex or if you offer subscriptions, Intelligems will swap in a duplicate product when a user adds to cart.

{% hint style="info" %}
**Deprecated: Checkout Scripts**

As of August 2025, Shopify has deprecated the Script Editor app. Previously, some Shopify Plus stores used the checkout script as an integration method for price testing. If your store is still on that method, see the [Pricing Experiences Integration Guides](/pricing-experiences/price-testing-integration-guides) for the two current options.
{% endhint %}

### **How can I get started?**

There is a short integration required before you can begin a Pricing experience. Please book a demo with our team [here](https://meetings.hubspot.com/igsam/igdemo?uuid=09e10934-25f6-4485-9f0e-4ceb6e80f099) so we can learn more about your store and get it integrated with Intelligems.

Though we would only recommend it for teams with developers, you can do the integration yourself. Please see the appropriate guide [here](/pricing-experiences/price-testing-integration-guides). If you are not sure which integration guide you should be following, please use the link above to book a time with our team.

Once the integration has been completed, see the guides below.

### **Setup guides**

{% content-ref url="/pages/6dhAsfodjrU9SkboqRfZ" %}
[Pricing Experiences Integration Guides](/pricing-experiences/price-testing-integration-guides)
{% endcontent-ref %}

{% content-ref url="/pages/q7bWf69GPoBtQxs7BjEH" %}
[How to Set Up a Price Change Experience](/pricing-experiences/pricing-experiences-overview/how-to-set-up-a-price-test)
{% endcontent-ref %}

{% content-ref url="/pages/CFL1IQzqOiD4VcwKzJku" %}
[How to Set Up an Amount off Products Experience](/merchandising-experiences/offer-modifications/how-to-set-up-an-amount-off-products-experience)
{% endcontent-ref %}

{% content-ref url="/pages/Mxqds1HPncgO6aB7lqiX" %}
[Starting a Price Change Experience](/pricing-experiences/pricing-experiences-overview/starting-a-price-test)
{% endcontent-ref %}

{% content-ref url="/pages/vyhYSGWixUfN1AKjg46W" %}
[Ending a Price Change Experience](/pricing-experiences/pricing-experiences-overview/ending-a-price-test)
{% endcontent-ref %}

{% content-ref url="/pages/HNazT5LkmVS4A269R25s" %}
[Multi-Currency Testing](/pricing-experiences/pricing-experiences-overview/multi-currency-testing)
{% endcontent-ref %}

{% content-ref url="/pages/qx4cL2GitLQQ6RJWlgj4" %}
[Testing Prices with Subscriptions](/pricing-experiences/pricing-experiences-overview/testing-prices-with-subscriptions)
{% endcontent-ref %}

{% content-ref url="/pages/DzL0OEpccIccqMa1SlnC" %}
[How to Set Up a Price Test with Quantity Buttons](/pricing-experiences/pricing-experiences-overview/how-to-set-up-a-price-test-with-quantity-buttons)
{% endcontent-ref %}

Once your experience is built, walk the [Pricing Experience QA Checklist](/pricing-experiences/price-test-qa-checklist) before you start it. The [Pricing Experiences FAQs](/pricing-experiences/price-testing-faqs) cover currency behavior, subscriptions, and what happens to duplicate products. For test ideas, see [Pricing Experience Use Cases](/pricing-experiences/pricing-experiences-overview/price-test-common-use-cases).


# How to Set Up a Price Change Experience

Check out the steps below to learn how to set up a price test!

A Price Change updates the price and compare-at price shown on your PDPs and across your site for the products you select. You can run it as a Test to see which price performs better, or as a Personalization to show a chosen price to everyone or to a specific audience.&#x20;

{% hint style="warning" %}
Before you build, make sure the integration is complete. Pricing needs the Intelligems team to tag your product prices before it can change them on the frontend. See Price Testing Integration Guides.
{% endhint %}

## Step 1: Create the experience and pick a mode

In the left nav, go to **Pricing** and click **New Pricing Experience**.

On the type modal, select **Price Change**. Then on **How do you want to run this experience?**, choose:

* **Run a Test** — visitors are split between groups and the results tell you which price performs better.
* **Create a Personalization** — the price you pick is shown to everyone, or to a specific audience, with nothing being tested.

{% hint style="info" %}
Not sure? Start with a Test. You can roll the winner out to everyone or to a specific audience once you have results. See Rolling Out a Winner.
{% endhint %}

{% hint style="warning" %}
Three things work differently when you run a Price Change as a Personalization:

* You can only reduce prices.
* Duplicate products and subscription products aren't supported.
* Prices change in your store's default currency only. We switch currency targeting on automatically and set it to that currency, so shoppers browsing in another currency won't see the Personalization.
  {% endhint %}

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FupJjTgVMfDEhLTPWv6Ff%2FCreate%20a%20price%20expereince%20.gif?alt=media&amp;token=b1a90fdd-46d0-434f-88bd-aa2e0ab3540c" alt=""><figcaption></figcaption></figure>

## Step 2: Set up your groups

**If you're running a Test**, open the **Test Groups** tab. Create 2–5 groups by clicking **+**. Name each group and use the slider to allocate traffic percentage. Click **Next step** when ready.

{% hint style="info" %}
The more groups you have, the longer it will take to reach statistically significant results. You'll need about 300 orders in each group to detect a 10% change in conversion with 90% confidence.
{% endhint %}

**If you're running a Personalization**, skip this step. A Personalization has one group and needs no traffic split.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-e60ceeed21b77b8fccffbfc784190adbec485cd9%2Ftest%20groups.gif?alt=media" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
The more groups you have, the longer it will take to get statistically significant results. You’ll need about 300 orders for each group in the test to detect a 10% change in conversion with 90% confidence.
{% endhint %}

## Step 3: Choose your products

On the **Modifications** tab, click **+ Add / Remove Products** in the Price card and select which products to include by checking the boxes on the left.

A few tips and tricks:

* You can select every product in your store, or every product matching the filters you have set, by clicking the checkbox at the top left of the table.
* Use the search bar at the top of the table to find a specific product.
* Use the filter dropdowns on the left to narrow by Product Type, Vendor, Tags, Status, or Collections.

{% hint style="info" %}
If you have 250+ Product Types, Vendors, or Tags in Shopify, Shopify won't let us load them all. Use the Intelligems search bar with the same syntax Shopify uses: `tag:Test`, `product_type:Test`, `vendor:Test`. Reach out to Intelligems support if you get stuck.
{% endhint %}

When your selection is complete, click **Add** at the bottom right of the modal.

## Step 4: Set the test prices

There are three different options for filling in your prices:

<details>

<summary>Uploading a Spreadsheet</summary>

This is best suited for cases where you have already set up your prices in a CSV or Excel file.

Click **Quick Fill**, then **Fill By Upload**, then **Download Template**. The template contains your selected products and the columns Intelligems needs.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FkNgOvOniUUfV5tg0ndzB%2FFill%20by%20upload.gif?alt=media&amp;token=fb91f8b5-c3d5-49a6-b4b9-da986f3f0b27" alt=""><figcaption></figcaption></figure>

Using Microsoft Excel, Google Sheets, Numbers, or another spreadsheet editing tool, manually input the prices for the test groups and save the file with a .csv, .xls or .xlsx extension.

The following fields (columns) are **required** in the uploaded file.

* product\_title
* product\_id
* variant\_title
* variant\_id
* handle
* Price - \[Test Group Name] (*for each test group*)
* Compare Price - \[Test Group Name] (*for each test group*)

The rest of the fields in the template are provided for reference and are not required.

\
Back in the Intelligems app, click the 'Upload Prices' button and select the saved .csv, .xls or .xlsx file. Once it has uploaded, save the test to see the price changes.

</details>

<details>

<summary>Quick Fill</summary>

Use this to apply a uniform change to every selected product — for example, +10% or -$5 across the board. Quick Fill works off the control-group prices pulled in from Shopify.

Click **Quick Fill**, then **Fill By Formula**. For each group, set:

* Increase or Decrease
* The amount
* % or $
* Rounding *(Don't Round by default)*
* Decimals

Click **Apply All** when done.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FYcxrHBsUDnQ1pgiCxO0f%2FQuick%20Fill.gif?alt=media&amp;token=8e2b456e-8703-493d-bb8a-6494444cd7cc" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Manually Set Prices</summary>

Use this when prices vary per product — for example, $10 off Product A and $5 off Product B.

Type the price and, optionally, the compare-at price for each product and group. You can drag a value from one cell to the next to copy it.

Use **Expand All** and **Collapse All** at the top left of the table to control the view.

Input the prices and 'compare at' prices (if desired) for each product and test group in the table. You can drag prices from one cell to the next if the prices are the same.

You can expand all rows or collapse all rows by pressing 'Expand All' or 'Collapse All' at the top left of the table.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FmjfkXUiPdn5YJk7f7BVJ%2FPrice%20Test.gif?alt=media&amp;token=8f72cc14-5cc0-4991-842b-2f538ed56fc2" alt=""><figcaption></figcaption></figure>

</details>

{% hint style="info" %}
There are two relevant fields for each entry:

* Price: The price of the product; this is the price the user will actually be charged when they purchase the product in the given test group, before any discounts.
* Compare Price: Also known as the 'compare at price', this price will be shown as a strikethrough. This field is optional and there is no need to populate the 'Compare Price Field' if you do not wish to show a strikethrough. Your theme must be configured to show strikethroughs in order for Intelligems to display one.
  {% endhint %}

{% hint style="warning" %}
You can't save the experience until every group has a price for every selected variant. If you try, you'll see "Price is not properly configured." Fill in the missing rows and save again.
{% endhint %}

Click 'Next step' when you are done setting up your prices.

## Step 5: Set up targeting if needed

Targeting is optional. By default, a visitor is assigned to a group on first visit and stays in that group via a first-party cookie for the duration of the experience.

The **Common** tab covers:

* **Device Type** — All Devices, Desktop, or Mobile.
* **Visitor Type** — All Visitors, New, or Returning.
* **Source Sites** — Direct, Email, Referral, Affiliate, Organic Social, Paid Social, Organic Search, Paid Search, Paid Shopping, SMS, Google, Facebook, Instagram, TikTok, Twitter, YouTube.
* **Countries** — one or more.

The targeting tool allows you to apply specific conditions to certain site visitors. There are a few different ways you can do this:

* You can use UTM parameters to customize your user experience under the Audience option.
* You can filter traffic based on JavaScript Expressions under the Audience option.
* You can prevent users from being targeted by related experiments to reduce undesired interactions under the [Mutually Exclusive Tests](/general-features/targeting/mutually-exclusive-experiments) option.

A **Currency** section sits below Audience. Price Changes are limited to a single currency and default to your store's currency. Filtering by currency needs Shopify Markets or a supported localization app.

You can learn more about targeting [here](/general-features/targeting)! When you're done, click **Next step**.

## **Step 6: Configure Analytics**

On the **Configure Analytics** tab, choose your Key Metrics and Primary Metric. Intelligems records 20+ metrics on every experience — pick up to seven Key Metrics to show on the front page of your results.

**Revenue per Visitor** is the default Primary Metric. You can change it by clicking **Primary** on any Key Metric. Visitors, Orders, and Revenue are shown on every experience by default.

You can add more Key Metrics later, and you can still access every recorded metric even if it isn't in your Key Metrics list.

Click **Next step** when you're done.

## **Step 7: Save and Preview**

Once you have completed all the steps, you'll be able to save your test with the green **Save** button in the top right.

In the **Preview** tab, you'll find a few options to load the test's preview:

* **Open Full Screen Preview:** this will open your website with the Intelligems widget loaded, so you can easily alternate between test groups to preview each group's experience, as well as do onsite edits if necessary (see [step 8](#step-8-edit-content-on-your-site-if-needed) for more details). You can also choose which theme you'd like to preview in if you need to be somewhere other than your live theme!
* **Open Mobile Preview:** you'll see a QR code for each test group, so you can load the preview directly on your mobile device.
* **Copy Preview URL:** this will copy the preview URL to your clipboard automatically.

{% hint style="danger" %}
Don’t worry, this won’t set the test live yet and you can come back and edit if you need to make changes!
{% endhint %}

## Step 8 (optional): Edit content on your site if needed

This step is also optional. This tool allows you to dynamically update content on your site based on a visitor's test group. Check out [this article](/general-features/editors/visual-builder) for more details on configuring this option.

Please note this is not how you should update price components on your site for a Price Test - that should be completed by [tagging your prices](/pricing-experiences/price-testing-integration-guides/integration-guide-using-shopify-functions/step-2-tag-product-prices)!

## What happens next?

Now that you've created your pricing test, you can QA your test using [this checklist](/pricing-experiences/price-test-qa-checklist)! If you have not completed the integration yet, please see our integration guides [here](/pricing-experiences/price-testing-integration-guides).


# Starting a Price Change Experience

Learn how to launch a Price Test in the Intelligems app.

Now that the test is live, we recommend going through the add to cart and checkout process in a few incognito browsers so you can get added to different test groups and ensure everything is working as expected. If you have not already QA'ed your test before launching it, run [Atlas QA](/general-features/atlas-ai/atlas-qa) from the QA & Preview tab, then work through [this checklist](/pricing-experiences/price-test-qa-checklist). Please [reach out to our support team](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) with any issues!

Starting a Price Change puts your prices in front of shoppers and begins collecting the conversion and revenue data you'll read in your results. On most integrations it also raises your Shopify prices to the highest price in the experience, so read Step 4 before you click Start.

{% hint style="info" %}
Starting a Personalization works the same way through Step 3. A Price Change Personalization can only reduce prices, so your Shopify prices aren't updated and you won't see the pop-up in Step 4.
{% endhint %}

### **Step 1: Confirm the Intelligems script is in your live theme**

In addition to Intelligems Javascript, confirm any other theme changes completed during the integration are in your live theme as well. If not, publish the script and any changes before proceeding.

### **Step 2: Click Start**

In the left nav, go to **Pricing**, find your experience in the list, and click **Start**. You can also open the experience and click **Start** in the top right.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2F41YQ7PyHOLaEbPoFD8SR%2FScreenshot%202026-08-10%20at%201.09.22%E2%80%AFPM.png?alt=media&amp;token=b5b0e280-3c6d-4743-903c-f01d7efabca2" alt=""><figcaption></figcaption></figure>

**Start** is a split button. **Start Test** takes the experience live now. **Schedule Test** sets a start and end date so it goes live on its own.

{% hint style="warning" %}
**If Start doesn't go through,** one of these is usually why:

* **Your plan doesn't include Pricing.** You can build a Price Change on any plan, but launching one needs the Pricing module, and Pricing isn't available on a trial. The app will offer you plan options.
* **A Shipping Test is running.** If your Price Change integration uses Shopify Functions with the Expand operation, we block you from starting one while the other is live. See Can I run a shipping test and a price test at the same time?
* **Your pricing integration isn't finished.** [Reach out to our support team](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) and we'll check the configuration on our side.
  {% endhint %}

### **Step 3: Confirm the integration and your QA**

**Confirm QA** opens with two checkboxes: one confirming the [Price Integration](/pricing-experiences/price-testing-integration-guides) is complete for your store, and one confirming you've [QA'd the experience](/pricing-experiences/price-test-qa-checklist). **Confirm** stays greyed out until both are ticked.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FF85Yw79RjsyS3qQntXCE%2FScreenshot%202026-08-10%20at%201.13.49%E2%80%AFPM.png?alt=media&amp;token=25be677e-e617-4597-9f09-5bbc12ba8d52" alt=""><figcaption></figcaption></figure>

### **Step 4: Choose whether to update your Shopify prices**

**If your integration uses Shopify Functions,** a pop-up asks whether Intelligems should update your Shopify prices. Select **Yes, Update My Prices and Start Test**.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2F3ZNlzJ6U1nCuKtD7bgYt%2FScreenshot%202026-08-10%20at%201.15.32%E2%80%AFPM.png?alt=media&amp;token=659505cc-b292-44ab-aeff-e2253800f1f5" alt=""><figcaption></figcaption></figure>

We raise every product in the experience to the highest price you've set, then discount it back down for the lower groups. Raising it first keeps a shopper from seeing a lower price in Google Shopping or a Facebook shop and then landing on a higher price on your site.

{% hint style="info" %}
If every price in the experience is at or below your control price, your Shopify prices aren't altered when you start. Read more on why we update your Shopify prices.
{% endhint %}

{% hint style="info" %}
Some accounts see a second option, **No, I'll Update My Prices**. It shows up only once Intelligems has turned on Skip Catalog Price Update for your store, which we do on request for Functions integrations. If you need your Shopify prices left alone, [reach out to our support team](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) rather than looking for the option in the pop-up.
{% endhint %}

**If your integration uses duplicate products,** this pop-up doesn't appear. You'll see a modal listing the duplicate products created for each price group. As long as you followed [these steps](/pricing-experiences/price-testing-integration-guides/integration-guide-using-duplicate-products/step-4-configure-duplicate-products) to configure them, click **Start Test**.

{% hint style="warning" %}
**Testing a currency other than your store's default?** Set your prices in Shopify Markets for that market before you start. Functions can't change market-specific prices, and any market set to auto-convert takes its price from your default-currency base price, so a live default-currency test raises those markets too. See Multi-Currency Testing.
{% endhint %}

### **Step 5: Check your site**

Run through add to cart and checkout for each group and confirm the prices match what you set.

To land in a specific group, add the `?igTg=` parameter with that group's ID to your store URL. Sticky bucketing keeps you in the first group you're assigned to, so opening more incognito windows won't reliably move you. General FAQs has the steps for finding a group ID.

Your Shopify base price is now the highest price in the experience for everyone, including visitors your targeting excludes. That's the price update from Step 4. Your preview link shows group prices only, so the two won't match.

If you haven't QA'd yet, work through the [Pricing Experience QA Checklist](/pricing-experiences/price-test-qa-checklist). [Reach out to our support team](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) with any issues.

### **What happens next?**

When you're ready to wrap up, see Ending a Price Change Experience.


# Ending a Price Change Experience

Follow these steps to end your Price Test.

Ending a Price Change writes one group's prices into Shopify and stops serving the rest. Decide which prices you're keeping before you stop it.

{% hint style="danger" %}
**A Price Change can only be rolled out once, at the moment you end it.** Other experience types can be rolled out later from an experience that has already ended. This one can't. If you end without choosing a group, your control prices stay in place, and getting a test group's prices live means building the experience again.
{% endhint %}

{% hint style="info" %}
**Not ready to end it?** Pausing stops serving test prices and keeps the experience and its results. Choose the option to revert your prices when you pause, otherwise your Shopify prices stay at the highest price in the experience. If you ended an experience you meant to pause, reach out to our support team and we can set it back to paused.
{% endhint %}

{% hint style="info" %}
Ending a Price Change Personalization works differently. Click **Disable** on the row and it stops applying. A Personalization can only price below your Shopify price, so there are no prices to roll back and no duplicates to archive.
{% endhint %}

### **Step 1: Stop the experience**

In the left nav, go to **Pricing**, find the experience in the list, and click **Stop**. The same button sits at the top of the experience's **Results** tab.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fg3sypxgoROtN2pMkn0WD%2FScreenshot%202026-08-10%20at%203.35.10%E2%80%AFPM.png?alt=media&amp;token=c9b9a81b-8fca-4af3-a869-bde4c52b8e03" alt=""><figcaption></figcaption></figure>

### **Step 2: Roll out prices**

A modal opens with the key metrics for each test group. Choose which group's prices to implement in Shopify, then click **Apply Prices and End Test**.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-d968ff2240a5917b19be6063e7ba91058d2fa123%2FScreenshot%202025-09-25%20at%205.14.09%E2%80%AFPM.png?alt=media" alt=""><figcaption></figcaption></figure>

* If ***Shopify Functions*** were used to run the experience, prices for the products in Shopify will be updated and the Intelligems Function will no longer be applied.
* If ***duplicate products*** were used to run the experience, prices for the original products in Shopify will be updated, if needed, and traffic will no longer be directed to the duplicate products.

Choosing your control group leaves your original prices exactly as they are.

{% hint style="warning" %}
**Any other modifications in the experience are not rolled out.** If you added Content Edits or Styles & Javascript alongside your prices, those changes end with the experience. Apply them in Shopify yourself, or build a Content Experience with the same changes and start it once your prices are live.
{% endhint %}

{% hint style="danger" %}
If ***duplicate products*** were used to create the experience, the next modal gives you three choices:

1\. Archive the duplicate products immediately.

2\. Archive the duplicate products after 48 hours. They stay `Active` in Shopify for the **following 48 hours** while we stop sending them traffic. We recommend this option so that a customer with a duplicate product already in their cart can still check out.

3\. Leave the duplicate products `Active` until you archive them yourself in Shopify. Click outside the pop-up to take this option. Choose this one if you have subscriptions to migrate and want more than 48 hours to do it.

You can find every duplicate we created by searching Shopify for the `price_test` tag. More on cleaning them up in [Pricing Experiences FAQs](/pricing-experiences/price-testing-faqs).
{% endhint %}

{% hint style="warning" %}
**Testing a currency other than your store's default?** Ending the experience doesn't roll that market back on its own. You'll be prompted to download a CSV of the prices you're keeping and upload it to Shopify Markets or send it to your Global-e account manager. Your default-currency prices revert without a CSV. See [Multi-Currency Testing](/pricing-experiences/pricing-experiences-overview/multi-currency-testing).
{% endhint %}

### **Step 3: Update Marketing As Needed**

Did you roll out new prices based on the results of the test? If so, you'll want to do a thorough sweep of anywhere you may include prices – think emails, social media, advertisements, etc. If you used our [Visual Builder](/general-features/editors/visual-builder) to change the text in these locations during the test, you'll want to update it again to match the new prices going forward.

If you manage your Google Shopping feed manually or through an app, trigger a feed update once the new prices are in Shopify.

### **Step 4: Update Subscriptions As Needed**

If ***duplicate products*** were used to run the experience and you offered subscriptions on them, you'll need to merge the duplicate products with the original products within your subscription provider. Anyone who subscribed during the experience is tied to a duplicate product, and once that duplicate archives their renewals will fail. Do this before the archive window you chose in Step 2 closes.

If you use Recharge, [this article](https://support.rechargepayments.com/hc/en-us/articles/360008829533#h_01GK355HXA27ESB482GZM33HF9) will walk you through the process to do so. If you work with another subscription provider, we recommend reaching out to their support team for information on how to bulk update products.

{% hint style="info" %}
Ending an experience doesn't change your selling plans. If a test group won and you want its discount for new subscribers, set that up in your subscription app.
{% endhint %}

{% hint style="info" %}
When reaching out to your subscription provider's support team, we recommend saying something along the following, as well as including a spreadsheet similar to the below with a row for each product that has subscriptions and was duplicated for the test:
{% endhint %}

*Hello Support,*

*We're looking to do a bulk swap of products/variants tied to subscriptions for **Store Name**. I'm attaching a spreadsheet which maps the current product / variant IDs to what they should be updated to in **Subscription Provider's** backend. We're doing this because the current products are going to be deleted. Please let me know if you have any questions, or if this is something I can do on our end.*

| **Product Title**   | **Current Product ID** | **Desired Product ID** | **Current Variant ID** | **Desired Variant ID** |
| ------------------- | ---------------------- | ---------------------- | ---------------------- | ---------------------- |
| Duplicate Product A | 7926607872639          | 7066606823681          | 43624551698273         | 41124551612498         |
| Duplicate Product B | 7926606823762          | 7082606823681          | 43624538571743         | 43629768571009         |

### **Step 5: Check your prices onsite**

Price updates run through your catalog in a batch, so give them time to finish before you judge what you see. Once they've landed, check a product from each group on your PDPs, collection pages and cart.

If anything is still showing a price from the experience after the batch completes, [reach out to our support team](https://portal.usepylon.com/intelligems/forms/intelligems-support-request).


# Multi-Currency Testing

Run price tests in different currencies

### Introduction

Intelligems price tests run in your store's default currency by default. However, Intelligems supports price testing in any Shopify-supported currency, so you can find the price that earns you the most profit in each market instead of taking whatever your exchange rate hands you. Each currency you want to test will require its own separate test configuration in the Intelligems app.

{% hint style="info" %}
**Multi-currency runs as a Test.** A Price Change run as a Personalization applies in your store's default currency only, so anything priced in another currency is set up as a Test.
{% endhint %}

{% hint style="info" %}
Multi-currency testing is included with the **Smart Pricing Unlimited** module and on the **Unlimited** plan. It also has to be switched on for your account by Intelligems before the currency selector appears in the app. [Reach out to support](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) if you're not sure whether it's on yet.
{% endhint %}

### Requirements

* [ ] Make sure Multi-currency testing is enabled on your account. Reach out to support [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) if you are not sure if this feature has been enabled for you yet
* [ ] Your store handles currency conversion through [Shopify Markets](https://www.shopify.com/markets), [Global-E](https://www.global-e.com/), Shopify localization, or the Coin Currency App. These are the localization sources we can read a shopper's currency from. [Reach out to support](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) if you use something else.
* [ ] Your [price testing integration](/pricing-experiences/price-testing-integration-guides) is complete. Multi-currency works on both our Shopify Functions and duplicate products integrations. If the Modifications tab shows a **No price tags detected** badge, [talk to us](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) before you build anything, because prices won't swap on your storefront.
* [ ] Every variant you plan to test has a **fixed price** set in the currency you're testing, rather than an automatic conversion from your default currency. Automatic conversions move with the exchange rate while the test is live, which shifts your prices underneath your own results.
* [ ] You are ready to upload prices to your desired market when you [start](#step-4-start-the-test), [pause](#step-5-pause-or-end-the-test) or [end](#step-5-pause-or-end-the-test) your price test

### **Which currency setting am I looking at?**

Two settings in a Pricing experience are called currency, and they do different jobs.

<table data-full-width="true"><thead><tr><th>Setting</th><th>What it does</th></tr></thead><tbody><tr><td><strong>Currency</strong>, on the Modifications tab</td><td>Sets the currency the test is priced in. The prices you type are real prices in that currency, and shoppers in that currency see them. This is multi-currency testing.</td></tr><tr><td><strong>Currency</strong>, on the Targeting tab</td><td>Filters which currencies a test applies to. On a Pricing experience it locks to your test's currency and can't be edited.</td></tr></tbody></table>

You can confirm which currency a test is priced in at any time from the pill under its name, which reads **Shown only to visitors in:** followed by the currency code.

### **Step 1: Set up your test**

Creating a multi-currency test is generally similar to any other Price Test, with a few key changes to note. If you are not familiar with setting up a Price Test, please see our article [here](/pricing-experiences/pricing-experiences-overview/how-to-set-up-a-price-test).

The main differences in setting up a Price Test that is not in your default currency are:

1. Once you've added your test product(s) in the Modifications tab, you will need to update the currency to match your desired test currency as shown in the screenshot below:

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fi9vH3Lpled0nhbjiBUnG%2FScreenshot%202026-08-11%20at%2010.20.12%E2%80%AFAM.png?alt=media&amp;token=5e1f0761-59cc-4402-af80-4f6381467767" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
This option will not be available until an Intelligems team member has enabled the multi-currency setting for you.
{% endhint %}

2. You will need to update control prices to match your test currency prices. Prices aren't automatically converted, so verify each cell displays the correct amount. The price on the far left of each row is the product's price in your store's default currency, shown for reference, so don't read it as a conversion of what's in your test groups.

{% hint style="warning" %}
Quick filling test groups based on control prices is not available for multi-currency tests. While you'll see the Quick Fill option in the app, clicking on it opens the **Fill By Upload** tab rather than **Fill By Formula**.
{% endhint %}

3. Currency targeting is set to your selected test currency by default, and will not be editable directly in the targeting section.

### **Step 2: QA your test**

This will be generally the same as [QAing any other Price Test](/pricing-experiences/price-test-qa-checklist), with two additions.

* **Switch your own store currency to the test's currency first.** Your selected currency has to match the test's currency or you won't see the test at all.
* **Read the price CSV before you upload it.** Open the file, check the prices against the test group you downloaded, and check the compare-at prices match what you intended. You’re about to change catalog prices in a live market with it.

### **Step 3: Get your price file ready**

You don’t have to wait for the start prompt to get your prices. Open the `...` menu on the experience, choose **Get price CSV**, and pick the test group whose prices you want. You can prepare and check the upload before anything goes live.

Doing this in advance is worth the few minutes. Once you press Start, your test prices are being served, and the market prices in Shopify need to be right by then.

### **Step 4: Start the test**

On our Shopify Functions integration, your market prices need to be set to your highest-priced test group in order for the test to run properly. Every shopper sees the same product, and Intelligems discounts the lower-priced groups down from that price. The rest of the start sequence is the same as any Price Change, covered in [Starting a Price Change Experience](/pricing-experiences/pricing-experiences-overview/starting-a-price-test). When you hit the play button for your test, Intelligems will prompt you to download a price CSV. Choose your highest-priced group.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FSupXi0wtmRe3ewXNB2B1%2FScreenshot%202026-10-09%20at%2012.21.00%E2%80%AFPM.png?alt=media&amp;token=c1584b30-f9ff-452b-a25e-a751c64b2950" alt=""><figcaption></figcaption></figure>

Once you have this CSV, follow the upload steps for your setup [below](#uploading-your-prices).

{% hint style="info" %}
You cannot have a product in more than one experiment *if* the experiments are set to the same currency. If so, the test will not start.
{% endhint %}

{% hint style="info" %}
On our duplicate products integration, the prices work differently. Each test group gets its own copy of the product, so your original products stay at your control prices and each duplicate carries its own group’s price. The Shopify Markets file format below doesn’t include duplicate products yet, so talk to us before you start and we’ll help you get the right prices into your market.
{% endhint %}

### **Step 5: Pause or end the test**

When pausing or ending a test, you'll be prompted to download a CSV with the prices that you want to roll out either while the test is paused, or permanently. Choose the test group whose prices you’re keeping, then upload it the same way you did at the start, using the steps below.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fafvzj2FboyWEOJAYFZSS%2FScreenshot%202026-10-09%20at%2012.25.48%E2%80%AFPM.png?alt=media&amp;token=cfb7d169-d742-40f1-92ec-ea7ae7780be2" alt=""><figcaption></figcaption></figure>

### **Uploading your prices**

#### **If you are using Global-e**

Reach out to your account manager at Global-e with this CSV. They will help you upload this information. They will also need to revert this at the end of the test so the prices can sync with the current exchange rate.

#### **If you are using Shopify Markets**

1. Download your price CSV in the **Shopify Markets** format, and pick the Markets catalog you’re updating. The list only shows catalogs that aren’t archived and have prices set in your test’s currency.
2. From your Shopify admin, go to **Markets** > **Catalogs** and import the file into that catalog. Shopify covers the import in Export and import catalogs using CSV files. *\[link to the Shopify URL above]*
3. Check Shopify’s preview before you confirm. Your test prices go in the **Fixed Price** and **Compare At** columns, in your catalog’s currency.

{% hint style="warning" %}
The two files don't share a column layout, so this is a manual merge rather than a straight upload. Build it If the catalog you need isn’t in the list, check in Shopify that it isn’t archived and has fixed prices in your test’s currency. Talk to us if it still doesn’t appear.
{% endhint %}

### **Testing more than one currency**

Each currency runs as its own test with its own analytics, and you can have several running at the same time as long as they're in different currencies. Your price testing integration only has to be done once for the store, no matter how many currencies you go on to test.

A few things worth deciding before you build them:

* **Pick your markets by volume, not by coverage.** Testing every market you sell into isn't practical for most catalogs. Sort your last 90 days by country in Sitewide Analytics, test your largest few, and take the direction of those results into the rest.
* **Decide up front whether prices have to match across markets.** Separate tests can produce different winners, so you can either roll out the most profitable price in each market or hold one price everywhere for consistency. Your results will tell you what's most profitable per market; whether that's the right call for your brand is a judgement about your customers, particularly if they switch markets between visits.


# Testing Prices with Subscriptions

Read this article to understand how to run price tests if your store offers subscriptions.

## Introduction

If you offer subscriptions as an option on your product(s), testing prices is a bit more complex. Intelligems supports testing both one-time and subscription prices for your store's products, and this article will walk through the basics on what is possible, and how to get started.

{% hint style="warning" %}
Subscription price changes are available as a **Test** only. You can't run one as a Personalization. See [Pricing Experiences FAQs](/pricing-experiences/price-testing-faqs) for the full list of price limits by mode.
{% endhint %}

### **What you can test**

Intelligems supports a wide variety of tests on subscription products. Some examples include:

* Testing different one-time prices while keeping subscription discount percentages consistent
* Testing different one-time prices while keeping subscription prices consistent
* Testing different subscription discounts

## How does Intelligems implement subscription tests?

Generally, Intelligems implements subscription tests by creating duplicate products (one duplicate per test group for each product). Duplicate products are often required because subscription providers display one-time and subscription prices on PDPs directly based on the product URL. Therefore, a separate product needs to be created to show different prices. To learn more about how these products will be configured, check out our article [here](/pricing-experiences/pricing-experiences-overview/testing-prices-with-subscriptions/managing-duplicate-products-when-redirecting-to-duplicate-pdps).

## Which subscription apps is Intelligems compatible with?

Intelligems is generally compatible with all major subscription providers. Most require us to create duplicates of the products you want to test. See below for a list of subscription providers and implementation methods available for each.

| **Provider**                    | **Duplicate Products** |
| ------------------------------- | ---------------------- |
| Recharge 2.0 (Unified Checkout) | ✓                      |
| Stay.Ai                         | ✓                      |
| Skio                            | ✓                      |
| Prive                           | ✓                      |
| Smartrr                         | ✓                      |
| Loop                            | ✓                      |
| Ordergroove                     | ✓                      |

## Which Intelligems plans qualify for subscription testing?

Pricing has to be on your plan before you can start a subscription test. You can build the test without it, but the app will stop you at launch and ask you to choose a plan. See plan details.

## Can I perform the integration with Intelligems on my own if I offer subscriptions?

Testing subscriptions often requires a more involved integration & setup than typical price tests. As a result, we recommend having Intelligems perform the integration if this applies to your store. [Reach out to our support team to learn more](https://portal.usepylon.com/intelligems/forms/intelligems-support-request)!

## I've read all of the above and am ready to set up my test. How do I do this?

Check out the guides below to learn more about setting up a price test where subscription products are involved:

{% content-ref url="/pages/byiDCNzCplnxPBuQ5uJj" %}
[Testing Prices with Recharge 2.0 or Stay.Ai](/pricing-experiences/pricing-experiences-overview/testing-prices-with-subscriptions/testing-prices-with-recharge-2.0-or-stay.ai)
{% endcontent-ref %}

{% content-ref url="/pages/1MbXYqPqIFpjvjavfU8p" %}
[How to Set Up a Price Test using Duplicate Products and Recharge Subscriptions](/pricing-experiences/pricing-experiences-overview/testing-prices-with-subscriptions/how-to-set-up-a-price-test-using-duplicate-products-and-recharge-subscriptions)
{% endcontent-ref %}

{% content-ref url="/pages/fDG3n0QVwjf6fHuZdURr" %}
[How to Set Up a Price Test using Duplicate Products and Skio Subscriptions](/pricing-experiences/pricing-experiences-overview/testing-prices-with-subscriptions/how-to-set-up-a-price-test-using-duplicate-products-and-skio-subscriptions)
{% endcontent-ref %}

{% content-ref url="/pages/rnd20RLEnJYN8uqwmMd4" %}
[Managing Duplicate Products when Redirecting to Duplicate PDPs](/pricing-experiences/pricing-experiences-overview/testing-prices-with-subscriptions/managing-duplicate-products-when-redirecting-to-duplicate-pdps)
{% endcontent-ref %}


# Testing Prices with Recharge 2.0 or Stay.Ai

This document shows how to set up Intelligems if you want to test prices and you're using Recharge 2.0 or Stay.ai.

{% hint style="danger" %}
This article only applies if you use Stay.AI, you are using Shopify Plus, and have access to the Script Editor app. If you are using Stay.AI, you must also only offer one delivery option (i.e. Every 30 Days). If any of these are not true, please see our following guides on using duplicate products, or reach out to support [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request).
{% endhint %}

### Step 1: Authorize the integration

In the Intelligems App, navigate to "Integrations" on the bottom left.

You need to create an API key from your Stay.AI dashboard. Log into Stay, under Settings > API keys, create a new key.

* Name: **Intelligems**
* Description: **Used for Intelligems <> Stay Integration**
* Email: **Your email**
* Scopes: **All**

![](https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-280d834c01d4d0e880125efe6b330225e8c5387f%2Fimage.png?alt=media)

Then Copy the API key into the Intelligems dashboard into the Stay.ai API key

![](https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-80bead7632ad5d80d9de6cb25d325efecca28f52%2Fimage.png?alt=media)

### Step 2: Set up test in the Intelligems app

See our detailed guide [here](/pricing-experiences/pricing-experiences-overview/how-to-set-up-a-price-test) on setting up your Price Test. Make sure to do this ***after*** you have authorized the integration with your subscription provider. If you have not, you should delete your old test and create a new test from scratch.

### Step 3: QA your test

Assuming you've already completed the [integration](/pricing-experiences/price-testing-integration-guides/integration-guide-using-checkout-scripts) that is required for Price Testing, the next step is to QA your test! Because tests that involve subscriptions have more moving pieces, we recommend spending some extra time on QA - follow [this checklist](https://docs.intelligems.io/price-testing/price-test-qa-checklist) to make sure you don't miss anything!

### Handling custom widgets and UI

If you're not using a standard widget from your subscription provider on your PDP, our onboarding team would be happy to help integrate your own custom UI with Intelligems. It's relatively straightforward, we just need to identify the PDP elements identified in this example screenshot.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-70aa7d844f9e05c9ffb91e112576588c1249aaa5%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

If you have questions, please reach out to support [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request)!


# How to Set Up a Price Test using Duplicate Products and Recharge Subscriptions

Learn how to set up a Pricing Test using duplicate products and Recharge Subscriptions.

{% hint style="danger" %}
Testing subscriptions often requires a more involved integration and setup than typical price tests. As a result, we recommend having Intelligems perform the integration if this is something you would like to test. Reach out to support [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) for help!
{% endhint %}

{% hint style="info" %}
**Prerequisites:** Prior to setting up your test, please reach out to support [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) to confirm your account is set up with duplicate products and redirection, both of which are required for you to price test. Duplicate products are only required in the case that you do not have access to the Script Editor app, or use Recharge 1.0.
{% endhint %}

## Step 1: Set up test in the Intelligems app

Once you have confirmed the above with support, you can set up your test in the Intelligems app as you normally would! See our detailed guide [here](/pricing-experiences/pricing-experiences-overview/how-to-set-up-a-price-test).

## Step 2: Configure your duplicate products in Shopify

If you have not already, follow [these steps](/pricing-experiences/pricing-experiences-overview/testing-prices-with-subscriptions/managing-duplicate-products-when-redirecting-to-duplicate-pdps) to configure your duplicate products in Shopify.

## Step 3: Add your duplicate products to your subscriptions in Recharge

In Recharge, follow these steps:

1. Go to `Products` on the left hand side.
2. Click `Add Product` in the top right.
3. Select all of your duplicate products and click `Add Products`.
4. Once you have added them, they will show up in the list with all of your other subscription products, but they will have no `Collections` or `Subscription type`.
5. You can now either click into each duplicate product and update the subscription settings individually, or select all of the duplicate products using the checkboxes on the left and click `Update subscription settings` at the top.
6. Confirm that you have set up the subscription type, order schedule and discount for each new duplicate product.

## Step 4: Confirm subscription duplicate products are set up correctly

Once you complete step 3, Recharge will automatically create another duplicate product for each test product in Shopify. The Recharge duplicates will have the subscription discount in the product title, making them easy to find.

These products should be set up correctly, but we recommend confirming the prices match what you expect and that the products are set to active. The prices on the subscription duplicate products should be equal to the price after the subscription discount.

We also recommend adding a tag, such as 'Price\_Test\_Subscription\_Duplicate', to make these products easy to find in the future.

## Step 5: Consider any Recharge apps that may be impacted

Many brands use Recharge apps, such as Workflows, to accomplish various things. If you use any apps, make sure these are set up to work with your new duplicate subscription products. A few things to keep in mind here are any apps that rely on product IDs or names as these may not match!

## Step 6: QA your test

Because tests that involve subscriptions have more moving pieces, we recommend spending some extra time on QA - follow [this checklist](https://docs.intelligems.io/price-testing/price-test-qa-checklist) to make sure you don't miss anything!


# How to Set Up a Price Test using Duplicate Products and Skio Subscriptions

Learn how to set up a Pricing Test using duplicate products and Skio Subscriptions.

{% hint style="danger" %}
Testing subscriptions often requires a more involved integration and setup than typical price tests. As a result, we recommend having Intelligems perform the integration if this is something you would like to test. Reach out to support [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) for help!
{% endhint %}

{% hint style="info" %}
**Prerequisites:** Prior to setting up your test, please reach out to support [here ](https://portal.usepylon.com/intelligems/forms/intelligems-support-request)to confirm your account is set up with duplicate products and redirection, both of which are required for you to price test.
{% endhint %}

## Step 1: Set up test in the Intelligems app

Once you have confirmed the above with support, you can set up your test in the Intelligems app as you normally would! See our detailed guide [here](/pricing-experiences/pricing-experiences-overview/how-to-set-up-a-price-test).

## Step 2: Configure your duplicate products in Shopify

If you have not already, follow [these steps](/pricing-experiences/pricing-experiences-overview/testing-prices-with-subscriptions/managing-duplicate-products-when-redirecting-to-duplicate-pdps) to configure your duplicate products in Shopify.

## Step 3: Add your duplicate products to your subscriptions in Skio

In Skio, follow these steps:

1\. Go to `Products` on the left hand side.

2\. Click `Add product` in the top right if you would like to add products one at a time, or `Bulk operations` if you'd like to add multiple products at the same time.

3\. If you have opted to add products one at a time, find the product you want to add in the list and select it. Enter all of the required subscription information, and click `Save` in the top right. If you have opted to add your products in bulk, you have the option between uploading a CSV or bulk creating subscription plans.

## Step 4: Confirm subscriptions are set up correctly

Once you complete step 3, subscription options should be available on your duplicate products. Confirm that they are working as expected by going to the Preview of your duplicate products from the Shopify admin.

## Step 5: Consider any Skio workflows that may be impacted

Many brands use Skio workflows, such as Rules or Quick Actions, to accomplish various things. If you use any of these, make sure they are set up to work with your new duplicate subscription products.

## Step 6: QA your test

Because tests that involve subscriptions have more moving pieces, we recommend spending some extra time on QA - follow [this checklist](/pricing-experiences/price-test-qa-checklist) to make sure you don't miss anything!


# Managing Duplicate Products when Redirecting to Duplicate PDPs

For more complex sites, Intelligems can duplicate products for Price Tests. Here we'll walk you through the steps to configure and activate these duplicate products.

### Overview

In specific, more complex cases, we may use duplicate products to run your price test. In most instances, we recommend using the original PDPs and only introducing the duplicate products upon add-to-cart. However, there are certain instances where using the PDP for the duplicate product may be necessary, including:

1. Testing subscription products with most subscription providers
2. Testing significant PDP changes
3. Testing prices when you offer a bundle discount on the PDP through Kaching or Shrine

{% hint style="info" %}
We have built-in PDP Quanity Buttons you can implement and use for price tests via our **Global Styles** components
{% endhint %}

In order to use the duplicate PDPs, you'll need to confirm that both **Should Duplicate Products** and **Should Redirect** are enabled in the Advanced Settings menu in the Intelligems app. If you do not see this option, you may need to request access to this menu by contacting our support team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request).

To make sure that products are hidden from third-party channels and collections, inventory is being properly tracked, shipping profiles are set up correctly, and discount codes still work, you'll need to follow these steps to make a few changes to how the duplicate products are set up in Shopify.

{% hint style="info" %}
You'll need to follow these steps for *every* Price Test you set up.
{% endhint %}

<details>

<summary>Step 1: Finding duplicate products in Shopify</summary>

The tag `price_test` will be added to all duplicates created by Intelligems, as well as a few additional tags specific to each test and test group.

However, the easiest place to access and check the status of your duplicate products is from directly within the Intelligems app! Next to any price test in the app, click the three dots on the far right to see more options, then select "View Duplicates". This will bring you to the duplicates status page.

![](https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-d346bf7e1f492ed7a7ce1c744be6465e8cbc000b%2F13%20-%20View%20Duplicates.gif?alt=media)

From here, you can:

* See the status of duplicate products: you'll be warned about any issues in the top left, as well as in the `Shopify Status` and `Sync Status` columns.
* View duplicate products in Shopify: you can view all duplicates for this test by clicking the `View Duplicates in Shopify` button at the top, or individual duplicates by clicking on the icon in the `View in Shopify` column.

Navigating to your duplicate products through the Intelligems app will automatically filter your Shopify products by a tag that we have added for the experiment ID, meaning you will only see duplicate products for that specific test. There should be one product for each non-control group. So, if your test has three groups total, you should see two duplicate products.

If you would like to see duplicate products that have been created for *any* test, you can navigate to the Products menu and filter for products with the `price_test` tag.

</details>

<details>

<summary>Step 2: Remove duplicate products from third-party channels</summary>

Follow these steps to remove the duplicate products from all channels other than `Online Store` and any that you use for reporting. This prevents any channels from showing multiple versions of the product with different prices.

**1.** Select all the products using the checkbox in the top left.

**2.** Select the three dots in the menu that pops up, followed by `Exclude from sales channel`.

**3.** De-select `Online Store` and any channels you use for reporting.

**4.** Select `Make products unavailable`.

</details>

<details>

<summary>Step 3: Configure inventory tracking</summary>

The following steps will allow you to keep an accurate count of duplicate products sold during the test and reconcile inventory after the test. However, stores manage inventory differently, some through Shopify, some through an app, and some though other methods. Please consider how selling duplicate products will affect your inventory tracking before following these steps and launching a test.

If you have inventory that turns over or sells out quickly, it may make sense to use this [Duplicate SKU Sync App](https://apps.shopify.com/duplicate-sku-sync) so that the inventory syncs between your products.

If your store uses a third-party application to manage inventory, please skip these steps. Please also note that third party apps that track inventory by SKU should not be affected by duplicating products as SKUs are copied to the duplicates. However, any app that uses product IDs or variant IDs to track inventory may need to be configured with the duplicate products.

**1.** Set the inventory quantities for all duplicate products to zero, either through Shopify’s bulk editor or by clicking into the Shopify product page for each duplicate product.

**2.** Turn on `Continue selling when out of stock` for all variants.

If you use Shopify to track inventory, you'll need to reset this option to **Stop selling when out of stock** if an item in your store goes out of stock.

</details>

<details>

<summary>Step 4: Add duplicate products to custom shipping profiles, if necessary</summary>

*This step is only necessary if you have custom shipping profiles configured through Shopify. If only the General Shipping profile is used, you can skip this step.*

If any of the products you are testing are in a custom shipping profile, you'll need to add the duplicate products to the same profile following these steps:

**1.** From the Shopify admin console, navigate to `Settings` → `Shipping and Delivery`.

**2.** Click `Manage rates` for the relevant custom shipping profiles.

**3.** Within the shipping profile, click `Manage Products`.

**4.** Add the relevant duplicate products and variants to each custom shipping profile. You can search for `price_test` to show only the duplicate products. Click `Done` when you have selected all of the relevant products.

**5.** Back on the shipping profile page, click **Save**.

</details>

<details>

<summary>Step 5: Add duplicate products to discount codes as needed</summary>

*This step is only necessary if you have discount codes configured for specific products or collections. If you do not have discount codes or all your discount codes are configured to apply store-wide, then you can skip these steps.*

**1.** Navigate to the `Discounts` tab on the left hand side of the Shopify admin page.

**2.** Filter for the discount code(s) you would like to add the duplicate products to. To quickly filter to discounts that may need to be edited, add a filter for `Active` status, and `Amount off products` and `Buy X Get Y` for type.

**3.** Select any codes that apply to `Specific products` where the products they apply to are part of the test. Use the search bar or browse feature to add all duplicate products that the discount should apply to. Keep in mind there should be one version of each product for each group in the test.

If you have any discount codes that apply to `Specific collections`, you'll need to create a collection with the duplicate product(s) first, then add that collection to the discount.

</details>

<details>

<summary>Step 6: Configure search apps, if necessary</summary>

If you use a search app, such as Searchanise, you may need to hide duplicate products in the search app. You can do this by adding `price_test` to "Hide products with these tags" in your search app settings.

</details>

<details>

<summary>Step 7: Configure duplicate products in third-party apps</summary>

The following steps will help you configure duplicate products within third-party apps, if necessary.

Note that if you **don't see your duplicate products** in a third-party app, you may need to set your duplicate products to 'Active' status in Shopify in order to access them. Don't worry - as long as you've completed the above steps, users won’t be able to navigate to these pages until the test is live, unless they are given the URL directly, as long as you completed all the steps above.

**Configuring subscription management apps**

There are many subscription management apps, but the documentation for configuring duplicate products on some of the apps we’ve come across can be found at the following links:

* [Skio](https://help.intelligems.io/pricing-test-using-duplicate-products-and-skio)
* Don't see yours here yet? [Contact us here.](https://portal.usepylon.com/intelligems/forms/intelligems-support-request)

**Configuring ratings and reviews apps**

Most applications for ratings and reviews offer a solution for grouping products so that multiple products display the same ratings and reviews. We recommend utilizing these features to ensure that duplicate products display the same content as the original products.

There are many different ratings and reviews apps, but the documentation for creating groups on some of the apps we’ve come across can be found at the following links:

* [Stamped](https://support.stamped.io/article/1097-groups-group-reviews-by-product)
* [Loox](https://help.loox.io/article/79-how-do-i-group-product-reviews-together)
* [Okendo](https://support.okendo.io/en/articles/3086164-creating-groups)
* [Judge.me](https://support.judge.me/support/solutions/articles/44001260470-share-reviews-across-product-groups)
* [Junip](https://help.junip.co/en/articles/4607273-product-groups-bundle-family)

**Configuring bundle or volume discount apps**

There are several bundle or volume discount apps available, such as Kaching or Shrine, where you may find it easier to redirect to a new PDP so that Kaching or Shrine can reflect the correct prices. Once your duplicate products have been created, head over to your volume discount app and set the same options up for your new product.

</details>


# How to Set Up a Price Test with Quantity Buttons

Quantity Buttons let you test different prices for your quantity breaks deals. Instead of relying on third-party apps, you can use our built-in components in a Price Test.

Quantity Buttons put your pack pricing on the product page. A Price Change Experience changes what those packs cost. Testing them together takes two experiences: an always-on **Merchandising Personalization** that delivers the buttons, and a **Price Change Test** that varies the base price underneath them. The buttons read whichever price the visitor's test group is seeing, so each group's pack prices calculate off its own base price and you never enter a price twice.<br>

### 1. Install Quantity Buttons into Your Theme

Quantity Buttons component replace your standard quantity selector (or another app powering quantity buttons) directly in your theme and are automatically installed via the Intelligems script.

### 2. Attach Quantity Buttons to a Product via a Personalization

To display Quantity Buttons on a product page, you’ll need to set up a **Personalization**. If you are setting up a Price Test with multiple products using Quantity Buttons, make sure to preview each products to validate the settings are correct and applicable to each product in the test.

{% hint style="info" %}
Note: Quantity Buttons only show when the Personalization is in **Preview** or **Live** mode. Two pending Tests or Personalizations cannot be previewed at the same time.
{% endhint %}

{% hint style="info" %}
Price Tests with Quanity Buttons are available on the Unlimited Plan and the Smart Pricing + Smart Merchandising plan.&#x20;
{% endhint %}

#### **Steps**

1. On the left navigation, click **Merchandising**, then **New Merchandising Experience**.
2. Click the **Volume Discount** scratch card
3. Start building your quantity price break volume discount
4. Select your **Discount trigger**
   1. In most cases for Product volume discounts, you will select **Quantity of items**
5. Choose the **Discount value**
   1. Decide if you want to do a **Percentage off** or **Dollar off per item**
      1. Set this up exactly as your current volume discount on your product is set up
   2. If you don’t run quantity discounts and don’t want to start, select **Percentage off** and enter `0` in each discount field.
6. Click **Select products** and choose a single product
   1. Reminder: If testing multiple products, create a new Offer Experience for each product
7. Review the **Combinations** checkboxes to ensure they align with your goals
8. Create each Offer tier (ignore single unit for now)
9. *Optional:* Create a **Discount name** for each Offer tier
   1. *Example:* Buy 2, Save 10%; Buy 3, Save 15%
   2. Optionally add perks: Free Shipping or Free Gift
      1. *Example:* Buy 2, Save 10%; Buy 3, Save 15% + Free GWP
10. On the right side, under **Add components**, select [**Quantity Buttons**](/merchandising-experiences/offers-integrating-widgets/quantity-buttons)
11. Click **Continue to Component**
12. Configure the component styling, messaging, and inputs.
    1. Use dynamic variables `{ }` for discounts so they display properly.
    2. Preview changes live in the right-hand panel.
13. When everything looks good, click **Next**
14. Because this setup is for a **Price Test**, you’re not testing the discounts themselves. Click **Complete Offer Setup**.
    1. If you’d like to test discounts, tiers, or messaging in the future, create an **Offer Test**. [Learn more here](/merchandising-experiences/offer-modifications/how-to-set-up-an-amount-off-products-experience).
15. Review the **Modifications** tab of the Offer Experience
    1. Double check the **Offer settings** and preview the **Quantity Buttons** component
16. Click **Save**
17. Use the **Preview** tab to confirm the Quantity Buttons look correct on both Desktop and Mobile
18. Your Product is now set up with the Quantity Buttons and ready to be launched with the **Price Test**

{% hint style="warning" %}
If you are using Kaching, FBP, or another app to power quantity discounts on your PDP, you will have to turn that product campaign off within the app in order for Intelligems to override.
{% endhint %}

### Launch the Price Test

1. Create your **Price Test**
2. Turn the **Offer Personalizatio**n with Quantity Buttons live by clicking **Activate**
3. **Preview** your **Price Test** to confirm:
   1. Each test group displays the correct Quantity Buttons
   2. Each variant shows the correct price
   3. Any discount showing matches what you configured
4. If everything looks good, click **Start** to launch your Price Test!

### Pre-Launch Checklist

* [ ] Offer Personalization is Live
* [ ] Quantity Buttons preview correctly on Desktop and Mobile
* [ ] Conflicting third-party apps are disabled
* [ ] Price Test groups show the correct setup

### FAQs

<details>

<summary><strong>Can I run a Price Test with my existing quantity discount app instead of Quantity Buttons</strong>?</summary>

No. For accurate testing, Intelligems requires its own Quantity Button components. Third-party apps can interfere with results.

</details>

<details>

<summary><strong>Will Quantity Buttons work with my theme or page builder?</strong></summary>

Quantity Buttons work on most Shopify themes. If you use a page builder (Replo, Shogun, GemPages, etc.), they will work as long as the product form remains intact. If your builder strips out the product form, you may need developer help.

</details>


# Price Test Common Use Cases

Price testing is a powerful tool because it allows businesses to determine the optimal price point for their products or services. By experimenting with different prices, companies can gather data on consumer behavior, demand elasticity, and profitability. This helps them understand what customers are willing to pay, which in turn maximizes revenue, enhances market positioning, and minimizes the risk of underpricing or overpricing. Effective price testing leads to better decision-making, ensuring businesses stay competitive while meeting customer expectations and financial goals.

Check out the below common test designs for inspiration on how to get started:

{% content-ref url="/pages/xKyjCMax389kcrBtR2sY" %}
[The Straddle](/pricing-experiences/pricing-experiences-overview/price-test-common-use-cases/the-straddle)
{% endcontent-ref %}

{% content-ref url="/pages/zY1HxulvDll1VsjRXiXI" %}
[The Double Down](/pricing-experiences/pricing-experiences-overview/price-test-common-use-cases/the-double-down)
{% endcontent-ref %}

{% content-ref url="/pages/kJF75GdB5Bx1SmGoN46g" %}
[The Strikethrough](/pricing-experiences/pricing-experiences-overview/price-test-common-use-cases/the-strikethrough)
{% endcontent-ref %}

{% content-ref url="/pages/0BVmjcCCklOXHSxz9Qig" %}
[The Great Discount Debate](/pricing-experiences/pricing-experiences-overview/price-test-common-use-cases/the-great-discount-debate)
{% endcontent-ref %}

{% content-ref url="/pages/aufpI3MvfnkMsVP57qto" %}
[Savings Showdown: Volume Discount vs. Price Discount](/pricing-experiences/pricing-experiences-overview/price-test-common-use-cases/savings-showdown-volume-discount-vs.-price-discount)
{% endcontent-ref %}


# The Straddle

Increase and decrease the price of every product by 10%. This is a great place to start as it will give you a look at elasticity across the board. If you don't want to start with your entire store, pick a few products or a collection to test first and iterate from there. Check out this [case study](https://blog.intelligems.io/intelli-blog/drive-conversions-revenue-through-price-decreases) on a brand who recently ran this type of test on their main collection and found that the lower price group generated nearly a 40% lift in conversion rate which yielded a 15% increase in revenue.

*What this test design might look like:*

|               | **Control Price** | **+10%** | **-10%** |
| ------------- | ----------------- | -------- | -------- |
| **Product A** | $10               | $11      | $9       |
| **Product B** | $20               | $22      | $18      |

{% hint style="info" %}
The Control Group should almost always be equal to what is currently live on the site - keeping one group consistent will keep your baseline consistent, giving you the most actionable results.
{% endhint %}


# The Double Down

Iterate based on the results from the test above. Let's say you run the test outlined above, and find that you see higher conversion and higher revenue per visitor on Product A at the $9 price point and on Product B you don't see a change in conversion across the three price points, but you see an increase in revenue per visitor on the $22 price point. Because [price elasticity is a curve](https://blog.intelligems.io/intelli-blog/price-elasticity), it may make sense to run another test drilling in further on the price for these products.

*What this test design might look like based on the above scenario:*

<table data-header-hidden><thead><tr><th width="242"></th><th></th><th></th><th></th></tr></thead><tbody><tr><td></td><td><strong>Control Price</strong></td><td><strong>Lower/Higher</strong></td><td><strong>Even Lower/Higher</strong></td></tr><tr><td><strong>Product A</strong></td><td>$9</td><td>$8</td><td>$7</td></tr><tr><td><strong>Product B</strong></td><td>$22</td><td>$24</td><td>$26</td></tr></tbody></table>

{% hint style="info" %}
Note that this is one scenario where your Control Group is not what has been live on the site, but rather the 'winner' from the previous test.
{% endhint %}


# The Strikethrough

Try out different Compare-At prices while keeping the actual price consistent. Price psychology can have major impacts on conversion - how might a larger perceived discount impact your consumer's behavior?

*What this test design might look like:*

<table data-header-hidden><thead><tr><th></th><th width="133"></th><th width="158"></th><th width="122"></th><th></th></tr></thead><tbody><tr><td></td><td><strong>Control Price</strong></td><td><strong>Control Compare-At Price</strong></td><td><strong>Group A Price</strong></td><td><strong>Group A Compare-At Price</strong></td></tr><tr><td><strong>Product A</strong></td><td>$20</td><td>$25</td><td>$20</td><td>$30</td></tr></tbody></table>


# The Great Discount Debate

Similar to how the discount *value* impacts price psychology in the above, the discount *type* can also impact consumer behavior - would a 10% or $5 discount that ultimately have the same value be more likely to get you across the line? Check out pricing strategy #3 in [this blog](https://blog.intelligems.io/intelli-blog/discounting-playbook) for more details on the psychology behind this.

*What this test design might look like:*

<table data-header-hidden><thead><tr><th width="162"></th><th></th><th width="102"></th><th></th><th></th></tr></thead><tbody><tr><td></td><td><strong>% Group Price</strong></td><td><strong>% Group Discount</strong></td><td><strong>$ Group Price</strong></td><td><strong>$ Group Discount</strong></td></tr><tr><td><strong>Product A</strong></td><td>$50</td><td>10% Off</td><td>$50</td><td>$5 Off</td></tr></tbody></table>


# Savings Showdown: Volume Discount vs. Price Discount

Test Volume Discounts in comparison to reduced product prices. Check out this [case study](https://blog.intelligems.io/intelli-blog/discounts_vs_price) on a brand that recently ran a test just like this, and found that reduced product prices perform better than discounts on their site.

*What this test design might look like:*\\

<table data-header-hidden><thead><tr><th></th><th></th><th width="209"></th><th></th><th></th></tr></thead><tbody><tr><td></td><td><strong>Control Price</strong></td><td><strong>Volume Discount</strong></td><td><strong>Lower Price</strong></td><td><strong>Volume Discount</strong></td></tr><tr><td><strong>Product A</strong></td><td>$49.99</td><td><p>10% off 2+ Units</p><p>15% off 3+ Units</p><p>20% off 4+ Units</p></td><td>$39.99</td><td>None</td></tr></tbody></table>


# Pricing Experiences Integration Guides

Intelligems can integrate with your Shopify store for Price Testing using one of two mechanisms.

Which mechanism is best for your store depends on a few different factors. If you are not sure which integration type is best for you, or which integration type your store is currently using, please open a ticket with our support team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request)!

Running a theme test? Every theme in the test needs this integration. Build\
variant themes by duplicating your live theme so it carries over, and QA\
prices in each theme with a preview link before launch.

{% content-ref url="/pages/foubtHF01yRRqe11LtR7" %}
[Integration Guide using Shopify Functions](/pricing-experiences/price-testing-integration-guides/integration-guide-using-shopify-functions)
{% endcontent-ref %}

{% content-ref url="/pages/pGJakj7oOPmIOvI1UehB" %}
[Integration Guide using Duplicate Products](/pricing-experiences/price-testing-integration-guides/integration-guide-using-duplicate-products)
{% endcontent-ref %}

{% content-ref url="/pages/BaYyf04ymjSQSboX4FWP" %}
[Troubleshooting](/pricing-experiences/price-testing-integration-guides/troubleshooting)
{% endcontent-ref %}

{% content-ref url="/pages/2htinV25to06CAXY7Nno" %}
[Replo Page Builder](/pricing-experiences/price-testing-integration-guides/replo-page-builder)
{% endcontent-ref %}


# Integration Guide using Shopify Functions

Historically, Intelligems has used either Checkout Scripts or duplicate products to run Price Tests. Shopify will be sunsetting Checkout Scripts in August 2026, and with that transition, Intelligems will be using Shopify Cart Transform Functions instead. This is the integration we mostly use currently, and it is enabled by default on new installs.

{% hint style="warning" %}
A few caveats when using Functions:

* If your store is on Shopify Plus, and you are using any Line Item Checkout Scripts, there may be conflicts between those and the Function we run.
* Please note that only one Shopify Cart Transform Function can run on a single line item.

If you use Cart Transform Functions for other capabilities, or you are in doubt about conflicts with existing Checkout Scripts, please reach out to our support team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request) to discuss options for your integration.
{% endhint %}

Before you can run a Price Test on your Shopify store, there is a small integration that needs to be done. There are four steps in the integration:

1. Add Intelligems JavaScript
2. Tag product prices
3. Update your cart
4. QA your integration, and publish your changes

{% hint style="success" %}
The Intelligems team is happy to complete the integration for you - please reach out [here](https://portal.usepylon.com/intelligems/forms/price-test-integration-request) to get this process started.
{% endhint %}


# Step 1: Add Intelligems JavaScript

## Introduction

If you have not already done so, you will need to add the Intelligems script to your site. There are two options below for doing this.

## Option 1: Use the App Embed Block

{% hint style="success" %}
This is the easiest installation method that works for most stores!
{% endhint %}

The fastest way to add Intelligems JavaScript to your theme is to enable it in the "Customize" section of your theme editor. You can do so by logging into your Shopify Admin, and navigating to Sales Channels > Online Store > Live theme - Customize > App Embeds. Search "Intelligems", make sure it is toggled on, and click "Save" in the top right.\
\
This will load Intelligems in a fashion that works optimally for performance and A/B testing on most stores. If for any reason you encounter performance concerns, see our docs on [performance optimization](/performance-optimization/optimizing-your-price-test-integration).

Here's a video walking through those steps as well:

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

{% hint style="warning" %}
For any **password protected store**, we will not be able to automatically detect the script, so you will continue to get an error message in the app regarding the script not being in your theme.
{% endhint %}

## Option 2: Add to Your Theme Code

{% hint style="info" %}
If you are on Shopify Plus and are still using checkout.liquid, you will still need to manually add Intelligems JavaScript to your checkout.liquid file in order to hide the discount or preview bar at checkout. Your individual script tag is located on the settings page in the Intelligems App.
{% endhint %}

{% hint style="danger" %}
This will need to be manually removed if you uninstall Intelligems.
{% endhint %}

To complete this, go to the settings page in the Intelligems app. Once there, you'll see a section called "Theme Script". Click the blue button in that block that says "Copy Script". This will copy your unique Intelligems script to your clipboard.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FzrS7xXebFph2rvN9F0kY%2FScreenshot%202026-03-10%20at%202.54.31%E2%80%AFPM.png?alt=media&amp;token=4b65a17a-5109-4256-87c4-7ca3504575aa" alt=""><figcaption></figcaption></figure>

Now head over to your Shopify account, and paste the Intelligems Script as a source into the `<head>` of each of these files:

* theme.liquid
* any other theme.\*.liquid files (e.g., theme.gempages.liquid if you have this file)

Here's a video walking through those steps as well:

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


# Step 2: Tag product prices

### Introduction

To enable Intelligems to dynamically modify price elements for each test group during testing, it is essential to "tag" those elements everywhere they appear on your site. This entails adding the querySelector for all price elements so the Intelligems plugin knows where those prices live. This guide will walk you through the process to do so.

{% hint style="warning" %}
Before you can use the Intelligems Widget, please confirm that you've added Intelligems JavaScript as a source into your theme.liquid file! See more on how to add our JavaScript to your site [here](https://docs.intelligems.io/getting-started/adding-intelligems-script-to-your-theme).
{% endhint %}

### Step 1: Accessing the Widget <a href="#accessing-the-widget" id="accessing-the-widget"></a>

Create a price test in the Intelligems app, open the **Modifications** tab, choose the products you want to test, and enter their prices in the table.

Then open the **QA & Preview** tab, choose the theme you want to tag from the **Theme** dropdown, and click **Open preview**. Your store opens in a new tab with the Intelligems widget in the top-left corner. Click **Edit** in the widget to switch it into Edit mode.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fj14eFzHTZ5gOZRicDv0i%2Fscreenshot-1790191971366-1.jpg?alt=media&amp;token=78866b9b-8870-46aa-ab3f-f5afebb55c0d" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
If the preview tab doesn't open, check that your browser isn't blocking pop-ups and that the Intelligems script is installed on the theme you picked. The widget has full support in **Google Chrome**. If it doesn't appear in another browser, try Chrome.
{% endhint %}

### Step 2: Adding Price Selectors <a href="#adding-price-selectors" id="adding-price-selectors"></a>

Now that you are in Edit mode, it is time to tag price elements everywhere on your site. Follow the steps below:

1. **Enable price tagging mode:** Click the `$` icon in the widget. The **Edit Price Query Selectors** panel opens, with a section for each selector type.
2. **Enable price selector mode:** Click the selector icon on the right of the section you're tagging (Price, Compare At Price, and so on).
3. **Tag price elements:** Move your cursor to see the page elements highlighted. Click a price element to add it to that section's selector list. Click Save to highlight the element:
   * <mark style="color:$success;">Green</mark> = product is in the test you are currently previewing
   * <mark style="color:blue;">Blue</mark> = product is **not** in the test you are currently previewing
   * If the price for a product in your test is highlighted in blue, Intelligems can't identify the product or variant ID. See [this guide](https://docs.intelligems.io/pricing-experiences/price-testing-integration-guides/troubleshooting/how-to-add-the-data-product-id-and-or-data-variant-id-attribute-to-an-element) for the required theme change.
4. **Tag all prices:** Add query selectors to the correct section (Compare At Price for strikethrough prices, Price for actual prices, etc.) for all price elements on your site. Each section also has an **Auto add** button that looks for that section's price elements for you. Check what it adds before you save.
5. **Save your work:** Click Save periodically to avoid losing progress

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FBbpG2tmycyarr6FhJc0H%2Fscreenshot-1790191971364-0.jpg?alt=media&amp;token=d077c5b6-6b96-4e0a-a935-c5a53d9956a9" alt=""><figcaption></figcaption></figure>

<details>

<summary>A few places to keep in mind as you tag all of the prices elements in your store include:</summary>

* Homepage
* Collection Pages
* Product Detail Pages (PDPs) - make sure you don't miss tagging any related or recommended products listed on your PDPs!
* Search Results Page or Bar, depending on where results show price
* Product Quiz
* Upsells in the cart or at checkout

</details>

<details>

<summary>Here are all of the different selector types:</summary>

**Price:** Use this section to select product prices on your store's site.

**Compare At Price:** Use this section to select compare prices on your store's site.

**Installment:** Use this section to select installments on your store's site. The default number of payments is 4. To change the payment amount, add the below to the element containing your installment in your theme.

</details>

<details>

<summary>A few tips &#x26; tricks:</summary>

**Per Unit Prices.** If you have per-unit prices listed for a product, you can follow these steps to update those prices accordingly during a price test:

1. Tag the per unit prices with a normal Price selector.
2. In your theme code, add `data-price-multiplier=".X"` to the per unit element, where X is what you want to multiple the price by. For example, if you wanted to show the per unit price when there are three units included, you would add `data-price-multiplier=".33"` to the element.

**Discounted Prices.** Many brands use the compare-at price field in Shopify to show a perceived discount. These are easy to tag using our various selector types. However, some stores will use a different method to show discounted prices by manipulating the frontend prices, using something like a Checkout Script to achieve a perceived discount. If this is the case for your store, follow these steps to accurately tag those prices:

1. Tag the per-unit prices with a normal Price selector.
2. In your theme code, add `data-price-multiplier=".X"` to the discounted price element, where X is the inverse of the discount you are applying. For example, if you were running a 20% discount, you would add `data-price-multiplier=".8"` to the element.

</details>

You'll know you're done when all price, compare-at, installment, and savings elements are highlighted in blue or green on all pages in your store.

{% hint style="danger" %}
Note that you **should not tag prices in the cart or cart drawer.** Intelligems will update those amounts using Cart Transform Functions.
{% endhint %}

{% hint style="info" %}
Having issues? Checkout our troubleshooting guide [here](/pricing-experiences/price-testing-integration-guides/troubleshooting) or submit a ticket to our support team [here](https://portal.usepylon.com/intelligems/forms/price-test-integration-request)!
{% endhint %}


# Step 3: Update your cart

Once you have tagged your prices, while still in preview mode, you should add a tested product to the cart.

In certain cases, you may notice an issue in the cart when you do this, for example:

* There may be a few visible line item properties in the cart
* The compare-at price shows as the control group's price instead of the correct compare-at amount

Follow the steps below to troubleshoot:

### Remove Hidden Line Item Properties[​](https://docs.intelligems.io/docs/pricing-integration/shopify-plus/update-cart#remove-hidden-line-item-properties)

Most Shopify stores use a convention that states that any line item property with a leading underscore should not be displayed in the cart. Intelligems uses the line item property `_igp`, so as long as this convention is set up for your store, the Intelligems line item property will be automatically hidden.

If this convention is not already set up for your store, You may see something like this in the cart when you test it in preview mode:

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-1786d3af7f6635547f08b1b40e4bb3705aadf525%2FScreenshot%202024-03-08%20at%201.17.37%20PM.png?alt=media" alt=""><figcaption></figcaption></figure>

Here is an example of how you can fix this by implementing the below in a liquid cart (e.g. **cart-line-items.liquid** or a similar file). The key lines are as follows:

```liquid
{% assign first_character_in_key = p.first | truncate: 1, '' %}
{% unless p.last == blank or first_character_in_key == '_' %}

```

This code should be implemented in a loop over each item property. In context, the code block may look something like the below:

```liquid
{% assign property_size = item.properties | size %}
{% if property_size > 0 %}
  {% for p in item.properties %}
    {% assign first_character_in_key = p.first | truncate: 1, '' %}
    {% unless p.last == blank or first_character_in_key == '_' %}
      {{ p.first }}:
      {% if p.last contains '/uploads/' %}
        <a href="{{ p.last }}">{{ p.last | split: '/' | last }}</a>
      {% else %}
        {{ p.last }}
      {% endif %}
    {% endunless %}
  {% endfor %}
{% endif %}
```

You can learn more about this [here](https://community.shopify.com/c/shopify-design/product-pages-get-customization-information-for-products/m-p/616525#toc-hId-287417639) under 'Hide line item properties (optional)'.

### Displaying the Correct Strikethrough Price in the Cart

Typically, you should not tag any **prices** within your cart. However, if you do display a strikethrough price in the cart, you'll want to tag it to ensure the correct compare-at price shows up for each group.


# Step 4: QA your integration, and publish your changes

After you have completed all previous integration steps, preview the test and make sure prices are correct for each test group, anywhere prices appear on the site. Follow our QA checklist [here](/pricing-experiences/price-test-qa-checklist).

Once you have verified Intelligems is fully integrated, you can publish your theme changes (if you haven't already) and start your test from the Intelligems App! Check out our step-by-step guide on doing this [here](/pricing-experiences/pricing-experiences-overview/starting-a-price-test).

#### What happens next?

Now that you've started your first test, here are some things to do next:

* Check the Results tab in your test to see how the test is doing frequently.
* Start thinking about your [testing roadmap](/general-features/best-practices/test-design-best-practices).
* Review some [test suggestions](/general-features/common-use-cases).


# Integration Guide using Checkout Scripts

Learn how to integrate your Shopify Plus store with Intelligems for a Price Test using Checkout Scripts.

Before you can run a Price Test on your Shopify store, there is a small integration that needs to be done. There are five components to the integration:

1. Add Intelligems JavaScript
2. Tag product prices
3. Add the Checkout Script
4. Update your cart
5. QA your integration, and publish your changes

{% hint style="danger" %}
If you have chosen to have Intelligems complete the integration, many of these steps will be done on your behalf.
{% endhint %}


# Step 1: Add Intelligems JavaScript

## Introduction

If you have not already done so, you will need to add the Intelligems script to your site. There are two options below for doing this.

## Option 1: Use the App Embed Block

{% hint style="success" %}
This is the easiest installation method that works for most stores!
{% endhint %}

The fastest way to add Intelligems JavaScript to your theme is to enable it in the "Customize" section of your theme editor. You can do so by logging into your Shopify Admin, and navigating to Sales Channels > Online Store > Live theme - Customize > App Embeds. Search "Intelligems", make sure it is toggled on, and click "Save" in the top right.\
\
This will load Intelligems in a fashion that works optimally for performance and A/B testing on most stores. If for any reason you encounter performance concerns, see our docs on [performance optimization](/performance-optimization/optimizing-your-price-test-integration).

Here's a video walking through those steps as well:

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

{% hint style="warning" %}
For any **password protected store**, we will not be able to automatically detect the script, so you will continue to get an error message in the app regarding the script not being in your theme.
{% endhint %}

## Option 2: Add to Your Theme Code

{% hint style="info" %}
If you are on Shopify Plus and are still using checkout.liquid, you will still need to manually add Intelligems JavaScript to your checkout.liquid file in order to hide the discount or preview bar at checkout. Your individual script tag is located on the settings page in the Intelligems App.
{% endhint %}

{% hint style="danger" %}
This will need to be manually removed if you uninstall Intelligems.
{% endhint %}

To complete this, go to the settings page in the Intelligems app. Once there, you'll see a section called "Theme Script". Click the blue button in that block that says "Copy Script". This will copy your unique Intelligems script to your clipboard.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FzrS7xXebFph2rvN9F0kY%2FScreenshot%202026-03-10%20at%202.54.31%E2%80%AFPM.png?alt=media&amp;token=4b65a17a-5109-4256-87c4-7ca3504575aa" alt=""><figcaption></figcaption></figure>

Now head over to your Shopify account, and paste the Intelligems Script as a source into the `<head>` of each of these files:

* theme.liquid
* any other theme.\*.liquid files (e.g., theme.gempages.liquid if you have this file)

Here's a video walking through those steps as well:

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


# Step 2: Tag product prices

## Introduction

To enable Intelligems to dynamically modify price elements for each test group during testing, it is essential to tag their locations on your website. This entails adding the query selector for price elements into the Intelligems configuration so the Intelligems plugin knows where those prices live. This guide will walk you through the process to do so.

{% hint style="warning" %}
Before you can use the Intelligems Widget, please confirm that you've added Intelligems JavaScript as a source into your theme.liquid file! See more on how to add our JavaScript to your site [here](https://docs.intelligems.io/getting-started/adding-intelligems-script-to-your-theme).
{% endhint %}

## Step 1: Accessing the Widget <a href="#accessing-the-widget" id="accessing-the-widget"></a>

To get started, you'll need to create a price test in the Intelligems app, and open the Intelligems preview widget for that test. There are two ways to access the Intelligems Preview Widget:

1. Navigate to the "Tests" tab in the Intelligems app. Click on the eyeball icon to the right of the Price Test you have created. This will open a new browser window up with your website with the widget enabled.
2. You can also enter this mode by adding /?ig-preview=true to the end of your website's URL (e.g. <https://mystore.com/?ig-preview=true>). This will open a modal where you can choose which experiment you would like to see in the onsite widget. To tag prices, be sure to select a price test from this dropdown.

Once you are in Preview mode, select the "Edit" button followed by the dollar sign. The video below will walk you through this process:

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-9f356697b5849898d37325f1ad158f6886e831b9%2F12%20-%20preview%20selectors.gif?alt=media" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
The Intelligems Widget offers full support for **Google Chrome**. Support for any other browsers is limited. If you are having an issue with the Widget in another browser, we suggest trying to run it in Google Chrome. For more support, please open a ticket with our support team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request)!
{% endhint %}

## Step 2: Adding Price Selectors <a href="#adding-price-selectors" id="adding-price-selectors"></a>

Now that you are in Edit mode, it is time to tag price elements everywhere on your site. Follow the steps below:

1. **Enable price tagging mode** - Click the $ icon in the edit widget
2. **Enable price selector mode** - Click the box labeled 2 in the image below
3. **Tag price elements** - Move your cursor to see blue dotted lines around page elements. Click a price element to add it to the query selector list. Click Save to highlight the element:
   * Green = product is in the test you are currently previewing
   * <mark style="color:blue;">Blue</mark> = product is **not** in the test you are currently previewing
   * If the price for a product in your test is highlighted in blue, Intelligems can't identify the product or variant ID - see [this guide](/pricing-experiences/price-testing-integration-guides/troubleshooting/how-to-add-the-data-product-id-and-or-data-variant-id-attribute-to-an-element) for the required theme change
4. **Tag all prices** - Add query selectors to the correct section (compare at price for strikethrough prices, price for regular prices, etc.) for all prices on your site, except for products added to your cart or your checkout page
5. **Save your work** - Click Save periodically to avoid losing progress

<div data-with-frame="true"><figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-65658f56dd772da04b1b57df9c3a28c86eb56b6b%2FScreenshot%202025-10-06%20at%2010.59.01%E2%80%AFAM.png?alt=media" alt=""><figcaption><p>1. The type of selector - see more below for what each type is for.<br>2. Enable selector mode - clicking this button will allow you click on your prices on your site and automatically add a new selector.<br>3. Query selectors that have been added.<br>4. Delete a query selector.<br>5. Simplify a selector - use this function if the selector added was too specific.<br>6. Add a query selector manually.<br>7. Auto add all price selectors on your site using AI.</p></figcaption></figure></div>

<details>

<summary>A few places to keep in mind as you tag all of the prices elements in your store include:</summary>

* Homepage
* Collection Pages
* Product Detail Pages (PDPs) - make sure you don't miss tagging any related or recommended products listed on your PDPs!
* Search Results Page or Bar, depending on where results show price
* Product Quiz
* Upsells in the cart or at checkout

</details>

<details>

<summary>Here are all of the different selector types:</summary>

**Price:** Use this section to select product prices on your store's site.

**Compare At Price:** Use this section to select compare prices on your store's site.

**Installment:** Use this section to select installments on your store's site. The default number of payments is 4. To change the payment amount, add the below to the element containing your installment in your theme.

```
data-payment-count="{{payment_amount}}" 
```

The Installment selector is compatible with installments that are:

1. Directly in your liquid
2. Not in the liquid, but is wrapped in its own \<span>

This selector is **not** compatible with installments that are:

1. Wrapped in a Shadow DOM
2. Not wrapped in its own span

**Savings (Price):** Use this option to select the dollar savings amount. This is normally located on your product pages.

**Savings (Percentage):** Use this option to select the percentage savings amount. This is normally located on your product pages.

**Cart Discount Message:** Use this option to hide a discount message (i.e. DISCOUNT or INTELLIGEMS) in your cart.

</details>

<details>

<summary>A few tips &#x26; tricks:</summary>

**Per Unit Prices.** If you have per unit prices listed for a product, you can follow these steps to update those prices accordingly during a price test:

1. Tag the per unit prices with a normal Price selector.
2. In your theme code, add `data-price-multiplier=".X"` to the per unit element, where X is what you want to multiple the price by. For example, if you wanted to show the per unit price when there are three units included, you would add `data-price-multiplier=".33"` to the element.

**Discounted Prices.** Many brands use the compare price field in Shopify to show a perceived discount - these are easy to tag using our various selector types. However, some brands will use a different method to show discounted prices by manipulating the frontend prices & using something like a Checkout Script to achieve a perceived discount. If this is the case for your store, follow these steps to accurately tag those prices:

1. Tag the per unit prices with a normal Price selector.
2. In your theme code, add `data-price-multiplier=".X"` to the discounted price element, where X is the inverse of the discount you are applying. For example, if you were running a 20% discount, you would add `data-price-multiplier=".8"` to the element.

</details>

You'll know you're done when all price, compare at price, installment and savings elements are highlighted in blue or green on all pages in your store!

{% hint style="warning" %}
Note that you **should not tag prices in the cart or cart drawer** as we will manage updating those using Checkout Scripts.
{% endhint %}

{% hint style="info" %}
Having issues? Checkout our troubleshooting guide [here](/pricing-experiences/price-testing-integration-guides/troubleshooting) or submit a ticket to our support team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request)!
{% endhint %}


# Step 3: Add the Checkout Script

{% hint style="danger" %}
You must be using Shopify Plus to integrate with Intelligems using the Checkout Script. Please see our [Functions Integration guide](/pricing-experiences/price-testing-integration-guides/integration-guide-using-shopify-functions) if this does not apply to you.
{% endhint %}

{% hint style="info" %}
The Intelligems checkout script will not apply any discounts or make other changes to orders until a price test is live. If you already use a Checkout Script, you can add ours to the same one to keep that functionality.
{% endhint %}

Adding our Checkout Script enables us to dynamically discount the price in the cart so that your customers pay exactly the price they see in other spots on the website. Follow the below steps to add the Intelligems Line Items Checkout Script to your Scripts Editor.

1. Install the Shopify Script editor [here](https://apps.shopify.com/script-editor).
2. If you already have a Line Items script, you can create a copy and edit it. Make sure our script runs first so that discounts get applied in the correct order. If you do not already have a Line Items script, create a new one.
3. Paste the loop below into the script. Save and publish the script.

```ruby
class Intelligems
  def initialize(discount_property = '_igp', allow_free = false)
    @volume_discount_property = '_igvd'
    @volume_discount_message_property = '_igvd_message'
    @deprecated_property = '_igLineItemDiscount'
    @discount_property = discount_property
    @allow_free = allow_free
  end

  def discount_product(line_item)
    ig_price = Money.new(cents: line_item.properties[@discount_property])

    discount = line_item.line_price - (ig_price * line_item.quantity)
    if discount > Money.zero
      if @allow_free or discount < line_item.line_price
        line_item.change_line_price(line_item.line_price - discount, message: 'Discount')
      end
   end
  end

def deprecated_discount_product(line_item)
  discount = Money.new(cents: line_item.properties[@deprecated_property])
    discount *= line_item.quantity

    if @allow_free or discount < line_item.line_price
      line_item.change_line_price(line_item.line_price - discount, message: 'Intelligems')
    end
  end

  def volume_discount(line_item)
    discount = Money.new(cents: line_item.properties[@volume_discount_property])
    discount *= line_item.quantity

    if discount < line_item.line_price
      message = line_item.properties[@volume_discount_message_property]
      line_item.change_line_price(line_item.line_price - discount, message: message)
    end
  end

  def run(cart)
    cart.line_items.each do |line_item|
      if !line_item.properties[@discount_property].nil? && !line_item.properties[@discount_property].empty?
        discount_product(line_item)
    elsif !line_item.properties[@volume_discount_property].nil? && !line_item.properties[@volume_discount_property].empty?
        volume_discount(line_item)
    elsif !line_item.properties[@deprecated_property].nil? && !line_item.properties[@deprecated_property].empty?
            deprecated_discount_product(line_item)
      end
    end
  end
end

intelligems = Intelligems.new()
intelligems.run(Input.cart)

Output.cart = Input.cart
```


# Step 4: Update your cart

Remove hidden line item properties, or calculate and hide discount messages

Once you have published the checkout script, you should add a product to cart while previewing the lowest priced group. In certain cases, you may notice an issue in the cart when you do this. A few examples of things that may happen include:

* There may be a few visible line item properties in the cart
* The Intelligems discount message will occasionally show in the cart
* The compare-at price will not display correctly in the cart. For example, the compare-at price may show as the control group price, rather than the compare-at price for the test group you are in
* The cart will only show the control group prices in preview mode while the test is pending. This is expected; read more in the FAQ [here](https://docs.intelligems.io/price-testing/price-testing-faqs). Starting the test will show the correct prices.

Should any of these happen, follow the below corresponding guidance to correct the issue and complete the integration.

### Remove Hidden Line Item Properties[​](https://docs.intelligems.io/docs/pricing-integration/shopify-plus/update-cart#remove-hidden-line-item-properties)

Most Shopify stores use a convention that any line item with a leading underscore `_` should not be displayed in the cart. The Intelligems line item property (e.g. `_igLineItemDiscount`) in the Checkout Script you've just added begins with an underscore, so we will piggyback on this convention to make sure the Intelligems discount line item property is hidden.

Here is a common example of how this is implemented in a liquid cart (e.g. cart-line-items.liquid or a similar file). Many themes already contain this code, but it may be necessary to add if it is not already present. We recommend searching your theme file with a tool like [EZFY](https://chrome.google.com/webstore/detail/shopify-theme-file-search/mhchmhfecfdpaifljcfebnlaiaphfkmb) first to see if similar code already exists.

The key lines are as follows:

```liquid
{% assign first_character_in_key = p.first | truncate: 1, '' %}
{% unless p.last == blank or first_character_in_key == '_' %}

```

This code should be implemented in a loop over each item property. In context, the code block may look something like the below:

```liquid
{% assign property_size = item.properties | size %}
{% if property_size > 0 %}
  {% for p in item.properties %}
    {% assign first_character_in_key = p.first | truncate: 1, '' %}
    {% unless p.last == blank or first_character_in_key == '_' %}
      {{ p.first }}:
      {% if p.last contains '/uploads/' %}
        <a href="{{ p.last }}">{{ p.last | split: '/' | last }}</a>
      {% else %}
        {{ p.last }}
      {% endif %}
    {% endunless %}
  {% endfor %}
{% endif %}

```

You can learn more about this [here](https://community.shopify.com/c/shopify-design/product-pages-get-customization-information-for-products/m-p/616525#toc-hId-287417639) under 'Hide line item properties (optional)'.

### Calculate the Intelligems Discount (per line item and cumulative)

If we're using the Checkout Scripts to apply a "hidden" discount on a product, we don't want to show the user that they're receiving an Intelligems discount. Locate the liquid file that renders each cart item, often called cart-line-items.liquid or something similar. Within that file, locate the beginning of the loop over each item. It will look something like the below:

```liquid
{% for item in cart.items %}

   ...
```

For each cart item, we'll want to check to see if an Intelligems discount was applied, and we'll want to keep track of the running total of Intelligems discounts. The snippet below under 'New', placed inside an existing code block which iterates over each cart item, will create a variable intelligems\_discount per line item which is either 0 or a non-zero number in cents which represents the Intelligems price change. This can also be used to adjust compare-at prices if desired.

***Old***

```liquid
{% for item in cart.items %}
   ...
{% endfor %}

```

***New***

```liquid
{% assign intelligems_total = 0 %}
{% for item in cart.items %}
    {% case item.properties._igp %}
      {% when "0" or nil or blank %}
        {% assign intelligems_discount = 0 %}
      {% else %}
        {% assign intelligems_discount = item.properties._igp | plus: 0 %}
        {% assign intelligems_total = intelligems_total | plus: item.properties._igp | times: item.quantity %}
    {% endcase %} 
   ....
{% endfor %}

```

Note that you'll only need one 'for' loop here (i.e. only one instance of the line\
\&#xNAN;*"for item in cart.items"*)

### Hide the Strikethrough Price in the Cart

Now that we have each item's Intelligems discount, we can prevent certain item properties (i.e. a strikethrough) from being rendered in the cart.

Within the 'for' loop described above, locate the code that renders the strikethrough price. It may look something like the below:

```liquid
{% if item.original_line_price and item.original_line_price != item.line_price %}
<span style="text-decoration:line-through;">{{ item.original_line_price | money }}</span><br>
{% endif %}

```

We might add the condition below to the code rendering the strikethrough:

```liquid
{% if ... and intelligems_discount == 0 %}
...
{% endif %}

```

In context, this will look like something like the below:

```liquid
{% if item.original_line_price and item.original_line_price != item.line_price and intelligems_discount == 0 %}
    <span style="text-decoration:line-through;">{{ item.original_line_price | money  }}</span><br>
{% endif %}

```

### Hide the Discount Message[​](https://docs.intelligems.io/docs/pricing-integration/shopify-plus/update-cart#hide-the-discount-message)

Sometimes discount messages appear to communicate bundle discounts, etc. In this case, we'll want to hide our message. We know from the checkout script in Step 4 that the Intelligems discount has the name "Discount" in most cases, so we'll hide any discount message with this name. Locate the code that renders the discount message, again in the 'for' loop over the cart's items. It will likely look something like the below:

```liquid
{% if item.message and item.message != "" %}
    <br><span>({{ item.message }})</span>
{% endif %}

```

We'll want to add the following condition to prevent "Intelligems" from being rendered as a discount name:

```liquid
{% if ... and item.message != "Discount" %}
    ...
{% endif %}

```

In context, this will look something like the below:

```liquid
{% if item.message and item.message != "" and item.message != "Discount" %}
    <br><span>({{ item.message }})</span>
{% endif %}
```

Note: there may be additional adjustments you want to make (e.g. adjusting a strikethrough on the subtotal). We recommend using the line item and running total discount variables you created above and similar conditional logic to implement these additional adjustment.

### Integrating Using HandleBars[​](https://docs.intelligems.io/docs/pricing-integration/shopify-plus/update-cart#integrating-using-handlebars)

Follow the example below if you use HandleBars in your theme. Add the HandleBar functions to the rest of your HandleBar functions.

<pre class="language-javascript"><code class="lang-javascript"><strong>Handlebars.registerHelper('noIgDiscount', function(arg1, options) {
</strong>    return (arg1.find(discount => discount.discount_application.title === 'intelligems' )) ? options.inverse(this) : options.fn(this) ;
});
Handlebars.registerHelper('hasExtraDiscounts', function(arg1, options) {
    return arg1.some(discount => discount.discount_application.title !== 'intelligems' ) ;
});
</code></pre>

```liquid
{{#if discountsApplied}}
   {{#if (hasExtraDiscounts discounts)}}
      <small class="cart__price--strikethrough">{{{price}}}</small>
      <span class="ajaxcart__price">
          {{{discountedPrice}}}
      </span>
  {{else}}
      <small class="cart__price">{{{price}}}</small>
  {{/if}}
            
  {{else}}
     {{#if shouldShowComparePrice}}                                           
       <small class="cart__price--strikethrough">{{{comparePrice}}}</small>                                                                                    
     {{/if}}     
      <span class="ajaxcart__price {{#if shouldShowComparePrice}}tw-text-red{{/if}} ">
          {{{price}}}
      </span>
{{/if}}

{{#if discountsApplied}}
  <div class="text-right grid__item">
      {{#noIgDiscount discounts}}
          {{#each discounts}}
              <small class="ajaxcart__discount cart__discount">
                  {{this.discount_application.title}}
                  (-{{{this.formattedAmount}}})
              </small>
          {{/each}}
          {{else}}
      {{/noIgDiscount}}
  </div>
{{/if}}
```


# Step 5: QA your integration, and publish your changes

After you have completed all previous integration steps, go through your store using Preview Mode in (you can access preview mode by clicking on the Eye icon next to your test, or by adding /?ig-preview=true to the end of your website's URL) and make sure everything looks correct. Follow our QA checklist [here](/pricing-experiences/price-test-qa-checklist)!

Once you have verified Intelligems is fully integrated, you can publish your theme changes (if you haven't already) and start your test from the Intelligems App! Check out our step-by-step guide on doing this [here](/pricing-experiences/pricing-experiences-overview/starting-a-price-test).

#### What happens next?

Now that you've started your first test, here are some things to do next:

* Check the Analytics Dashboard in the Intelligems app to see how the test is doing frequently. Note that it may take one to two hours for data to flow in!
* Start thinking about your [testing roadmap](/general-features/best-practices/test-design-best-practices).
* Review some [test suggestions](/general-features/common-use-cases).


# Integration Guide using Duplicate Products

Learn how to integrate your Shopify store with Intelligems for a Pricing Test using duplicate products.

Before you can run a Price Test on your Shopify store, there is a small integration that needs to be done. There are five components to the integration:

1. Add Intelligems JavaScript
2. Tag product prices
3. Hide duplicate products from collections pages
4. Configure duplicate products
5. QA your integration, and publish your changes

{% hint style="danger" %}
If you have chosen to have Intelligems complete the integration, many of these steps will be done on your behalf.
{% endhint %}


# Step 1: Add Intelligems JavaScript

## Introduction

If you have not already done so, you will need to add the Intelligems script to your site. There are two options below for doing this.

## Option 1: Use the App Embed Block

{% hint style="success" %}
This is the easiest installation method that works for most stores!
{% endhint %}

The fastest way to add Intelligems JavaScript to your theme is to enable it in the "Customize" section of your theme editor. You can do so by logging into your Shopify Admin, and navigating to Sales Channels > Online Store > Live theme - Customize > App Embeds. Search "Intelligems", make sure it is toggled on, and click "Save" in the top right.\
\
This will load Intelligems in a fashion that works optimally for performance and A/B testing on most stores. If for any reason you encounter performance concerns, see our docs on [performance optimization](/performance-optimization/optimizing-your-price-test-integration).

Here's a video walking through those steps as well:

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

{% hint style="warning" %}
For any **password protected store**, we will not be able to automatically detect the script, so you will continue to get an error message in the app regarding the script not being in your theme.
{% endhint %}

## Option 2: Add to Your Theme Code

{% hint style="info" %}
If you are on Shopify Plus and are still using checkout.liquid, you will still need to manually add Intelligems JavaScript to your checkout.liquid file in order to hide the discount or preview bar at checkout. Your individual script tag is located on the settings page in the Intelligems App.
{% endhint %}

{% hint style="danger" %}
This will need to be manually removed if you uninstall Intelligems.
{% endhint %}

To complete this, go to the settings page in the Intelligems app. Once there, you'll see a section called "Theme Script". Click the blue button in that block that says "Copy Script". This will copy your unique Intelligems script to your clipboard.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FzrS7xXebFph2rvN9F0kY%2FScreenshot%202026-03-10%20at%202.54.31%E2%80%AFPM.png?alt=media&amp;token=4b65a17a-5109-4256-87c4-7ca3504575aa" alt=""><figcaption></figcaption></figure>

Now head over to your Shopify account, and paste the Intelligems Script as a source into the `<head>` of each of these files:

* theme.liquid
* any other theme.\*.liquid files (e.g., theme.gempages.liquid if you have this file)

Here's a video walking through those steps as well:

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


# Step 2: Tag product prices

## Introduction

To enable Intelligems to dynamically modify price elements for each test group during testing, it is essential to "tag" those elements everywhere they appear on your site. This entails adding the querySelector for all price elements so the Intelligems plugin knows where those prices live. This guide will walk you through the process to do so.

{% hint style="warning" %}
Before you can use the Intelligems Widget, please confirm that you've added Intelligems JavaScript as a source into your theme.liquid file! See more on how to add our JavaScript to your site [here](https://docs.intelligems.io/getting-started/adding-intelligems-script-to-your-theme).
{% endhint %}

## Step 1: Accessing the Widget <a href="#accessing-the-widget" id="accessing-the-widget"></a>

Create a price test in the Intelligems app, open the Modifications tab, choose the products you want to test, and enter their prices in the table. Click the **Legacy onsite editor** button top open the onsite editor.

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2FDjwFkAHwGL6Lyc2kym32%2FLegacy_Onsite_Editor.png?alt=media&amp;token=baf7e72d-2b21-4701-afb7-8e411f749ff8" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
The Legacy onsite editor offers full support for **Google Chrome**. Support for any other browsers is limited. If the editor doesn't appear in another browser, we suggest trying Chrome.
{% endhint %}

## Step 2: Adding Price Selectors <a href="#adding-price-selectors" id="adding-price-selectors"></a>

Now that you are in Edit mode, it is time to tag price elements everywhere on your site. Follow the steps below:

1. **Enable price tagging mode:** Click the `$` icon in the widget
2. **Enable price selector mode:** Click the box labeled `2` in the image below
3. **Tag price elements:** Move your cursor to see the page elements highlighted. Click a price element to add it to the selector list. Click Save to highlight the element:
   * <mark style="color:$success;">Green</mark> = product is in the test you are currently previewing
   * <mark style="color:blue;">Blue</mark> = product is **not** in the test you are currently previewing
   * If the price for a product in your test is highlighted in blue, Intelligems can't identify the product or variant ID. See [this guide](/pricing-experiences/price-testing-integration-guides/troubleshooting/how-to-add-the-data-product-id-and-or-data-variant-id-attribute-to-an-element) for the required theme change.
4. **Tag all prices:** Add query selectors to the correct section (compare-at price for strikethrough prices, Price for actual prices, etc.) for all price elements on your site.
5. **Save your work:** Click Save periodically to avoid losing progress

<div data-with-frame="true"><figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-65658f56dd772da04b1b57df9c3a28c86eb56b6b%2FScreenshot%202025-10-06%20at%2010.59.01%E2%80%AFAM.png?alt=media" alt=""><figcaption><p>1. This label shows the category of selector, e.g. price, compare-at, etc.<br>2. Enable selector mode: clicking this button will allow you click on your prices on your site and automatically add a new selector.<br>3. Query selectors that have been added<br>4. Delete a query selector<br>5. Simplify a selector: use this function if the selector added was too specific<br>6. Add a selector manually<br>7. Auto-add all price selectors on your site using AI</p></figcaption></figure></div>

<details>

<summary>A few places to keep in mind as you tag all of the prices elements in your store include:</summary>

* Homepage
* Collection Pages
* Product Detail Pages (PDPs) - make sure you don't miss tagging any related or recommended products listed on your PDPs!
* Search Results Page or Bar, depending on where results show price
* Product Quiz
* Upsells in the cart or at checkout

</details>

<details>

<summary>Here are all of the different selector types:</summary>

**Price:** Use this section to select product prices on your store's site.

**Compare At Price:** Use this section to select compare prices on your store's site.

**Installment:** Use this section to select installments on your store's site. The default number of payments is 4. To change the payment amount, add the below to the element containing your installment in your theme.

```
data-payment-count="{{payment_amount}}" 
```

The Installment selector is compatible with installments that are:

1. Directly in your liquid
2. Not in the liquid, but is wrapped in its own `<span>`

This selector is **not** compatible with installments that are:

1. Wrapped in a Shadow DOM
2. Not wrapped in its own `<span>`

**Savings (Price):** Use this option to select the dollar savings amount. This is normally located on your product pages.

**Savings (Percentage):** Use this option to select the percentage savings amount. This is normally located on your product pages.

**Cart Discount Message:** Use this option to hide a discount message (i.e. DISCOUNT or INTELLIGEMS) in your cart.

</details>

<details>

<summary>A few tips &#x26; tricks:</summary>

**Per Unit Prices.** If you have per-unit prices listed for a product, you can follow these steps to update those prices accordingly during a price test:

1. Tag the per unit prices with a normal Price selector.
2. In your theme code, add `data-price-multiplier=".X"` to the per unit element, where X is what you want to multiple the price by. For example, if you wanted to show the per unit price when there are three units included, you would add `data-price-multiplier=".33"` to the element.

**Discounted Prices.** Many brands use the compare-at price field in Shopify to show a perceived discount. These are easy to tag using our various selector types. However, some stores will use a different method to show discounted prices by manipulating the frontend prices, using something like a Checkout Script to achieve a perceived discount. If this is the case for your store, follow these steps to accurately tag those prices:

1. Tag the per-unit prices with a normal Price selector.
2. In your theme code, add `data-price-multiplier=".X"` to the discounted price element, where X is the inverse of the discount you are applying. For example, if you were running a 20% discount, you would add `data-price-multiplier=".8"` to the element.

</details>

You'll know you're done when all price, compare-at, installment, and savings elements are highlighted in blue or green on all pages in your store.

{% hint style="danger" %}
Note that you **should not tag prices in the cart or cart drawer.** Intelligems will update those amounts using Cart Transform Functions.
{% endhint %}

{% hint style="info" %}
Having issues? Checkout our troubleshooting guide [here](/pricing-experiences/price-testing-integration-guides/troubleshooting) or submit a ticket to our support team [here](https://portal.usepylon.com/intelligems/forms/price-test-integration-request)!
{% endhint %}


# Step 2: Tag product prices

## Introduction

To enable Intelligems to dynamically modify price elements for each test group during testing, it is essential to tag their locations on your website. This entails adding the query selector for price elements into the Intelligems configuration so the Intelligems plugin knows where those prices live. This guide will walk you through the process to do so.

{% hint style="warning" %}
Before you can use the Intelligems Widget, please confirm that you've added Intelligems JavaScript as a source into your theme.liquid file! See more on how to add our JavaScript to your site [here](https://docs.intelligems.io/getting-started/adding-intelligems-script-to-your-theme).
{% endhint %}

## Step 1: Accessing the Widget <a href="#accessing-the-widget" id="accessing-the-widget"></a>

To get started, you'll need to create a price test in the Intelligems app, and open the Intelligems preview widget for that test. There are two ways to access the Intelligems Preview Widget:

1. Navigate to the "Tests" tab in the Intelligems app. Click on the eyeball icon to the right of the Price Test you have created. This will open a new browser window up with your website with the widget enabled.
2. You can also enter this mode by adding /?ig-preview=true to the end of your website's URL (e.g. <https://mystore.com/?ig-preview=true>). This will open a modal where you can choose which experiment you would like to see in the onsite widget. To tag prices, be sure to select a price test from this dropdown.

Once you are in Preview mode, select the "Edit" button followed by the dollar sign. The video below will walk you through this process:

<figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-9f356697b5849898d37325f1ad158f6886e831b9%2F12%20-%20preview%20selectors.gif?alt=media" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
The Intelligems Widget offers full support for **Google Chrome**. Support for any other browsers is limited. If you are having an issue with the Widget in another browser, we suggest trying to run it in Google Chrome. For more support, please open a ticket with our support team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request)!
{% endhint %}

## Step 2: Adding Price Selectors <a href="#adding-price-selectors" id="adding-price-selectors"></a>

Now that you are in Edit mode, it is time to tag price elements everywhere on your site. Follow the steps below:

1. **Enable price tagging mode** - Click the $ icon in the edit widget
2. **Enable price selector mode** - Click the box labeled 2 in the image below
3. **Tag price elements** - Move your cursor to see blue dotted lines around page elements. Click a price element to add it to the query selector list. Click Save to highlight the element:
   * Green = product is in the test you are currently previewing
   * <mark style="color:blue;">Blue</mark> = product is **not** in the test you are currently previewing
   * If the price for a product in your test is highlighted in blue, Intelligems can't identify the product or variant ID - see [this guide](/pricing-experiences/price-testing-integration-guides/troubleshooting/how-to-add-the-data-product-id-and-or-data-variant-id-attribute-to-an-element) for the required theme change
4. **Tag all prices** - Add query selectors to the correct section (compare at price for strikethrough prices, price for regular prices, etc.) for all prices on your site, except for products added to your cart or your checkout page
5. **Save your work** - Click Save periodically to avoid losing progress

<div data-with-frame="true"><figure><img src="https://2052204893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2SvefuMLsJyJPAcVXeWc%2Fuploads%2Fgit-blob-65658f56dd772da04b1b57df9c3a28c86eb56b6b%2FScreenshot%202025-10-06%20at%2010.59.01%E2%80%AFAM.png?alt=media" alt=""><figcaption><p>1. The type of selector - see more below for what each type is for.<br>2. Enable selector mode - clicking this button will allow you click on your prices on your site and automatically add a new selector.<br>3. Query selectors that have been added.<br>4. Delete a query selector.<br>5. Simplify a selector - use this function if the selector added was too specific.<br>6. Add a query selector manually.<br>7. Auto add all price selectors on your site using AI.</p></figcaption></figure></div>

<details>

<summary>A few places to keep in mind as you tag all of the prices elements in your store include:</summary>

* Homepage
* Collection Pages
* Product Detail Pages (PDPs) - make sure you don't miss tagging any related or recommended products listed on your PDPs!
* Search Results Page or Bar, depending on where results show price
* Product Quiz
* Upsells in the cart or at checkout

</details>

<details>

<summary>Here are all of the different selector types:</summary>

**Price:** Use this section to select product prices on your store's site.

**Compare At Price:** Use this section to select compare prices on your store's site.

**Installment:** Use this section to select installments on your store's site. The default number of payments is 4. To change the payment amount, add the below to the element containing your installment in your theme.

```
data-payment-count="{{payment_amount}}" 
```

The Installment selector is compatible with installments that are:

1. Directly in your liquid
2. Not in the liquid, but is wrapped in its own \<span>

This selector is **not** compatible with installments that are:

1. Wrapped in a Shadow DOM
2. Not wrapped in its own span

**Savings (Price):** Use this option to select the dollar savings amount. This is normally located on your product pages.

**Savings (Percentage):** Use this option to select the percentage savings amount. This is normally located on your product pages.

**Cart Discount Message:** Use this option to hide a discount message (i.e. DISCOUNT or INTELLIGEMS) in your cart.

</details>

<details>

<summary>A few tips &#x26; tricks:</summary>

**Per Unit Prices.** If you have per unit prices listed for a product, you can follow these steps to update those prices accordingly during a price test:

1. Tag the per unit prices with a normal Price selector.
2. In your theme code, add `data-price-multiplier=".X"` to the per unit element, where X is what you want to multiple the price by. For example, if you wanted to show the per unit price when there are three units included, you would add `data-price-multiplier=".33"` to the element.

**Discounted Prices.** Many brands use the compare price field in Shopify to show a perceived discount - these are easy to tag using our various selector types. However, some brands will use a different method to show discounted prices by manipulating the frontend prices & using something like a Checkout Script to achieve a perceived discount. If this is the case for your store, follow these steps to accurately tag those prices:

1. Tag the per unit prices with a normal Price selector.
2. In your theme code, add `data-price-multiplier=".X"` to the discounted price element, where X is the inverse of the discount you are applying. For example, if you were running a 20% discount, you would add `data-price-multiplier=".8"` to the element.

</details>

You'll know you're done when all price, compare at price, installment and savings elements are highlighted in blue or green on all pages in your store!

{% hint style="warning" %}
Note that you **should not tag prices in the cart or cart drawer** as we will manage updating those using duplicate products.
{% endhint %}

{% hint style="info" %}
Having issues? Checkout our troubleshooting guide [here](/pricing-experiences/price-testing-integration-guides/troubleshooting) or submit a ticket to our support team [here](https://portal.usepylon.com/intelligems/forms/intelligems-support-request)!
{% endhint %}


# Step 3: Hide duplicate products from collections pages

Find the liquid file that renders your collections pages. It may be called something like collection-page.liquid. Find the code block that renders each product in the collection and wrap it in the the following `unless` statement:

```liquid
{% unless product.tags contains "price_test" %}
 ...
{% endunless %}
```

In context, the code should look something like this:

```liquid
{% for product in collection.products %}
   {% unless product.tags contains "price_test" %}
      {%  
         render 'product-thumbnail',
         product: product
       %}
    {% endunless %}
{% endfor %}
```




---

[Next Page](https://docs.intelligems.io/llms-full.txt/1)

