> 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/offer-modifications/how-to-set-up-a-free-gift-experience.md).

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

### **8. Preview and activate**

Preview your changes on the live site, then activate. The [Merchandising Experience QA Checklist](/merchandising-experiences/offer-test-qa-checklist.md) 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/7d7d979598894bcfa20a9de8773eec44>" %}


---

# 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/offer-modifications/how-to-set-up-a-free-gift-experience.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.
