shopify free gift with purchase
How to set up a free gift with purchase on Shopify (and make it land in the cart)
Set up a Shopify free gift over a cart minimum with Buy X get Y, fix the gift that never reaches the cart, and pick a threshold your margin can pay for.
Key takeaways
- Shopify's Buy X get Y discount can make a gift free, but it never adds the gift to the cart. The shopper has to add it, or a script or app has to.
- Use an automatic discount with a minimum purchase amount, set the gift to Free, and cap uses per order at 1, or a cart with two gifts gets both free.
- If the cart drops below the minimum, the gift stays in the cart at full price. Your cart has to remove it or say so.
- Set the threshold 15–30% above your current average order value, then check that the extra product margin covers the gift's landed cost.
What Shopify does on its own, and what it doesn't
Shopify can make a gift free, but it can't put the gift in the cart. The built-in Buy X get Y discount, set to a minimum purchase amount and a 100% discount on one product, gives you "free gift over $75" in about five minutes. Shopify's own help page then adds the catch: "The free or discounted 'get' item is never automatically added to the cart."
So the native setup only works if the shopper knows about the gift, finds the gift product, and adds it themselves. Most don't. It's one of the most repeated questions in the Shopify Community, and the usual story is the same: orders ship without the gift the customer was promised. This is how the discount is designed, not a bug waiting for a fix.
The rest of this guide covers three things: the native setup done properly, the edge cases that cost you money, and the two ways to get the gift into the cart automatically.
Set up the native free gift, step by step
Start with the gift product, because the discount has to point at it.
- Create the gift product. Give it a real price, not $0. If it slips into a cart that doesn't qualify, the shopper pays for it instead of getting it free by mistake, and a real price also shows the gift's value in the cart ("$18 value, free"). Turn on inventory tracking. Shopify notes that when a free product hits zero stock, it shows as sold out.
- Keep it findable by the cart, not by shoppers. Leave it published to the Online Store sales channel, because the cart can't add a product that isn't. Leave it out of collections, menus and search filters.
- Create the discount. Go to Discounts → Create discount → Buy X get Y and choose Automatic discount, so nobody has to type a code.
- Customer buys: choose Minimum purchase amount, enter the threshold (say 75.00), and choose which products count: usually all collections except the gift itself.
- Customer gets: quantity 1, the gift product, discounted value Free.
- Tick "Set a maximum number of uses per order" and enter 1. Without it, a shopper over $150 with two gifts in the cart gets both free.
- Combinations: decide whether the gift stacks with product, order and shipping discounts. If your free shipping is also a discount, allow it to combine with shipping discounts, or the gift will quietly cancel free shipping.
- Set start and end dates. They follow the time zone in your admin settings, not the shopper's.
Shopify allows up to 25 active automatic discounts, and app-created ones count toward that limit, so a gift campaign won't usually crowd out anything else.
Five ways a native gift goes wrong
Run through each of these on a test order before you announce the offer.
1. The shopper never adds the gift
The discount sits there doing nothing until the gift product is in the cart. Your announcement bar says "free tote over $75". The shopper reaches $80, checks out, and finds no tote, because nothing told them to add it. Expect a support ticket for every order like this.
2. The cart drops below the threshold and the gift stays
The shopper reaches $80, adds the gift, then removes a $15 item. They're now at $65 with the gift still in the cart, and it's no longer free. Some will notice at checkout and leave. Others won't notice until the receipt, which is worse.
3. The minimum counts less than you think
Only product prices count toward the minimum. Shipping and tax don't, and neither do products outside the "Customer buys" selection. Shopify also excludes items already reduced by another combinable discount. A shopper with $80 in the cart, $20 of it already marked down by a sale discount, has $60 of qualifying spend. Your bar has to measure the same number, or it will show "you've unlocked a gift" while checkout charges for it.
4. Buy it now skips the cart
Dynamic checkout buttons (Shop Pay, Apple Pay, "Buy it now") send a single item straight to checkout. Any gift logic that lives in the cart never runs. On gift campaigns, either turn off dynamic checkout buttons in the theme editor's product template or accept that those orders won't get a gift.
5. Markets show the wrong number
If you sell in several currencies, test the threshold in each one. Theme progress bars often hard-code one amount in the store's currency, a gap merchants keep reporting in community threads on per-country bars. Open the store with a VPN or the market preview in each country and add products until the gift unlocks. The bar and the discount should flip at the same moment.
Getting the gift into the cart automatically
There are two practical routes. Both keep the Buy X get Y discount, or an equivalent discount, for the pricing and add the gift with cart logic.
Route 1: theme code
A developer can add a script to the cart drawer and cart page that reads the cart after every change through the /cart.js endpoint:
- If the qualifying subtotal is at or above the threshold and the gift isn't in the cart, call
/cart/add.jswith the gift's variant ID and quantity 1. - If the subtotal falls below the threshold and the gift is in the cart, set its quantity to 0 with
/cart/change.js. - Re-render the drawer so the shopper sees the gift appear with a "Free" label.
It's maybe a day of work. The ongoing cost is maintenance: it breaks when you change themes, when the drawer markup changes, and when someone adds a second offer. It also has to compute "qualifying subtotal" exactly the way the discount does (gotcha 3 above), which is where most hand-rolled versions drift.
Route 2: an app built for gift goals
If you don't want to own that code, a gift-goal app handles the add and the messaging for you. Goalify is a good fit for this exact job. It adds the free gift automatically when the cart meets the goal, and shows a progress bar that counts down to it ("$12 away from your free tote"). As with any app, test what happens when a shopper drops back below the goal before you launch. The rules can be based on cart value, item count, or specific products in the cart, and gift, discount and free-shipping goals can stack on one bar. It carries the Built for Shopify badge and, as of October 2026, has a free plan up to 10 orders a month, with paid plans from $3.99.
Whichever route you pick, the rule for the shopper is the same: the gift appears when it's earned and disappears when it isn't, and the bar says which is about to happen.
Pick a threshold your margin can pay for
A gift is only worth it if it pulls orders up past a point where the extra product pays for it. Here's a worked example for a hypothetical skincare store, not a real store's results:
| Input | Value |
|---|---|
| Current average order value | $58 |
| Gross margin on products | 62% |
| Gift landed cost (product + packaging) | $4.50 |
| Proposed threshold | $75 |
A shopper who would have spent $58 and stretches to $75 adds $17 of product. At 62% margin that's $10.54 of extra gross profit, minus the $4.50 gift, which leaves $6.04 more per stretched order. A shopper who was already spending $90 gets the gift for nothing extra, and that order costs you $4.50.
So the threshold has to sit where a real share of orders stretch to reach it, without so many orders already above it that you're mostly giving gifts away. A practical starting point is 15–30% above current AOV. Below that, too many orders clear it by default. Above it, few shoppers bother. The progress bar calculator turns your AOV into gift and shipping goals and previews how the bar reads at each step. Run the stretched order through the profit margin calculator with the gift's cost included before you commit.
Two more checks:
- Order the goals. If free shipping is already at $60, put the gift above it ($75), not below. Each goal should give the shopper a new reason to add something.
- Choose a gift people want at full price. A gift that's useful with the main product (a travel size of a bestseller, a refill, an accessory) lifts conversion more than a branded sticker, and it introduces a product they may reorder.
For the wider picture on thresholds, bundles and the cart, see the average order value lesson.
Launch checklist
- Gift product: real price, inventory tracked, published to Online Store, out of collections and search.
- Buy X get Y: automatic, minimum purchase amount, gift set to Free, max 1 use per order, combinations decided.
- Gift is added automatically by theme code or an app, and removed below the threshold.
- The bar measures the same qualifying subtotal as the discount, in every market's currency.
- Dynamic checkout buttons handled on the products you promote.
- Test orders: just under the threshold, just over, over then back under, two gifts in the cart, and one from each market.
- Announcement bar and product page say exactly what's free and at what amount.
- After two weeks, compare AOV and conversion against the two weeks before. Run the CRO Audit on a product page to check the offer is visible before add to cart.
Shopify questions
Can Shopify add a free gift to the cart automatically without an app?
Not with the built-in discounts. Shopify's help center states that the free or discounted 'get' item is never automatically added to the cart. You need theme code that calls the cart API, or an app that does it for you.
Does the minimum purchase amount include shipping and tax?
No. Only product prices count, and only items covered by the 'Customer buys' part of the discount. Items already reduced by another combinable discount don't count toward the minimum.
Will the free gift work with Shop Pay and Buy it now buttons?
Dynamic checkout buttons on the product page send the shopper straight to checkout with one item, so the cart never gets a chance to add the gift. Either hide those buttons on gift campaigns or make sure the cart drawer is the default add-to-cart path.
How do I stop people buying the gift product on its own?
Keep it out of collections, menus and search, and leave it published to the Online Store so the cart can still add it. Give it a real price, so a gift that ends up in a non-qualifying cart is not free by accident.
Goalify is made by Ninety9, the team behind Checkout Club101.