This symptom has two completely different explanations depending on how the offer was built. If you used Shopify's native discounts, nothing is broken — they never add items. If you used an app, the cause is usually stock, the threshold unit, or your theme's cart. Work through both paths below.
Native Shopify discount? Then this is expected behaviour, not a fault. Shopify's Buy X Get Y discounts a gift that is already in the cart; it never inserts one. Skip to the first section below.
An app, and the gift never appears? Check stock, then the threshold unit, then whether the app's cart block is actually installed in your current theme.
An app, and the gift appears then vanishes? The cart has stopped qualifying — usually a discount lowering the subtotal below the threshold, or an item removal.
Appears in the cart but not at checkout? A discount combination conflict. The gift's $0 price is being overridden by another discount's rules at checkout.
Shopify's automatic Buy X Get Y discount can set a product's price to 100% off. What it cannot do is put that product in the cart. The shopper has to add the gift themselves, and then the discount zeroes it.
So a cart that qualifies but contains no gift is working exactly as designed, and no amount of reconfiguring will change it. Your options are to instruct the shopper clearly in the cart and on the product page, or to use something that owns the cart surface and can insert the line. This is the single most common reason gifting campaigns underperform on Shopify, and it is almost always discovered after launch.
The related trap: if the shopper adds the gift before the cart qualifies, they will see it at full price, which reads as a broken offer. Native discounts have no way to explain themselves in the cart, which is why the explanation message matters as much as the rule.
This is correct behaviour being experienced as a bug. If the cart stops qualifying, the gift should be removed — otherwise shoppers reach checkout with a freebie they no longer earned. Three things commonly trigger it:
A discount code applied after the gift. The code lowers the subtotal below the threshold, so the gift leaves. This is the most confusing version for shoppers, because the action that felt like a saving removed a reward. Decide deliberately whether your threshold counts pre- or post-discount subtotal, and keep it consistent.
An item removed or a quantity reduced. Expected, and worth announcing rather than doing silently — "free serum removed, add $12 to get it back" recovers a share of those carts.
Currency conversion. If your threshold is set in your store currency and the shopper is buying in another, the converted subtotal can sit either side of the line as rates move.
If the gift's $0 price survives the cart and then reverts at checkout, the problem is discount combination. Shopify evaluates discounts at checkout under its own product, order, and shipping combination rules, and a $0 gift created by a discount can lose to another discount that is not marked combinable.
Check the combination settings on every active discount, not just the gift's. Then test the exact cart in a fresh incognito session all the way to the checkout page. A gift that fails only at checkout is the most expensive version of this bug — the shopper has already decided to buy, and the thing that changes under them is a reward.
If you are running several overlapping promotions, this is also the symptom that tells you to simplify. See discount stacking for what Shopify will and will not honour.
If you built the offer with Shopify's native Buy X Get Y discount, it never adds the item — it only discounts a gift the shopper has already added. If you used an app, the most common causes are the gift being out of stock and the threshold being measured on a different total than you expect.
Not natively. Shopify's discounts change prices; they do not insert line items. Automatic insertion requires an app that owns the cart surface.
The cart stopped qualifying. Usually a discount code lowered the subtotal below the threshold, or an item was removed. That removal is correct behaviour, but it should be announced with the amount needed to get the gift back.
It can. Whether the threshold reads pre-discount or post-discount subtotal changes the answer on the same cart. Decide which it is deliberately and keep it consistent across campaigns so your reporting stays comparable.
A discount combination conflict. Shopify re-evaluates discounts at checkout under its product, order, and shipping combination rules, and a non-combinable discount can override the gift. Check the combination settings on every active discount.
Yes, if it is a real catalog product — which it should be, so stock, weight, and fulfilment behave normally. That also means an out-of-stock gift cannot be added, which is the most common mid-promotion failure.
Theme app blocks are per-theme. Re-add the app's cart block in the newly published theme — the configuration in the old theme does not carry over.