How to give a free gift over a spend threshold on Shopify
Shopify triggers native free-product discounts on quantity, not on how much is spent. A free gift offer takes a spend threshold directly, adds the gift at no charge, and falls back to a backup variant if the first one sells out.
- Free gift
- $22.00
Restore Repair Shampoo
250ml / Qty 1
- $22.00
Restore Repair Conditioner
250ml / Qty 1
- $28.00
Deep Repair Hair Mask
Qty 1
Once the cart passes $50 the gift appears as its own line at no charge, labelled as a gift rather than as a discounted product. Below the threshold the cart shows how much more is needed.
How to set this up
- 1
Campaign > Offer type
Pick Free gift.
type = free_gift
- 2
Tiers
One tier with a $50 spend threshold and a free item reward. Thresholds are in minor units, so $50 is 5000.
tiers[0].minSpend = 5000
- 3
Gift
Pick the gift variant, then add one or two backups in priority order. The storefront gives the first candidate that is in stock.
freeGift.giftVariantIds = [primary, backup1, backup2]
- 4
Limits
Leave the cap at one gift per order for a standard promotion.
freeGift.maxGiftsPerOrder = 1
- 5
Stacking
Turn on combining with order and shipping discounts so the gift survives alongside any sale you are already running.
stacking.combinesWithOrderDiscounts = true
- 6
Preview
Simulate at $49.99 and $50.00 and confirm the gift appears exactly at the threshold, then publish.
Every setting, spelled out
These are the real configuration keys the offer is saved with, so you can check your own setup against this table field by field.
| Setting | Value | Config key |
|---|---|---|
| Offer type | free_gift | type |
| Threshold | $50.00 (5000 minor units) | tiers[0].minSpend |
| Reward type | free_item | tiers[0].rewardType |
| Gift candidates | up to 20, first in stock wins | freeGift.giftVariantIds |
| Gift cap | 1 per order | freeGift.maxGiftsPerOrder |
| Discount class | product | discountClasses |
| Method | automatic | discountMethod |
See it built end to end
The episode is not up yet
We are recording this one. The written recipe above is complete, so you can build it today.
What Shopify does natively
Shopify native Buy X Get Y can give a free product when the shopper buys a certain quantity of something else, so a quantity-triggered gift needs no app.
A native free-product discount cannot be triggered by cart spend, and it has no fallback when the gift variant runs out. The offer just stops rewarding anyone and nothing tells you it happened.
Watch out for
- The gift is discounted to zero, not created from nothing. Inventory still has to exist, which is why backups matter.
- The gift line is at zero, so it does not count toward the threshold that awarded it.
- Thresholds are in minor units, so $50 is 5000.
- If the shopper removes items and drops below the threshold, the gift is removed too. That is correct behaviour but it surprises shoppers, so the cart copy should say so.
Common questions
- Can the gift be triggered by spend rather than quantity?
- Yes, that is the point of this offer type. The tier carries a spend threshold directly.
- What happens when the gift sells out?
- The storefront gives the next in-stock candidate from the gift list, so add at least one backup.
- Can the shopper take several gifts?
- Only if you raise the per-order cap above one.
- Does the gift show as a discounted product or as a gift?
- It renders as its own cart line labelled as a gift, at no charge.
Related examples
A different gift at each spend threshold, with the highest qualifying gift awarded.
An order discount and a free gift on the same threshold, both applying to one cart.
Free shipping once the cart passes a threshold, with a progress nudge in the cart.
Build this in your own store
Every recipe in this library runs on the same server-side engine, so the cart total and the checkout total agree.