> For the complete documentation index, see [llms.txt](https://docs.intelligems.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.intelligems.io/merchandising-experiences/merchandising-experiences-faqs.md).

# 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.md) 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.md) 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>


---

# 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
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.intelligems.io/merchandising-experiences/merchandising-experiences-faqs.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
