VALOTRIX Cart Rewards
How it works Pricing Blog Docs
Install on Shopify

Free Gift Not Showing in Cart on Shopify? 8 Fixes

By Valentin Lako · Published September 4, 2026 · 8 min read

You set up the offer, the test cart crosses the threshold, and nothing happens. No gift, no error, no clue.

One fact about the platform narrows the search: Shopify's own discounts never add an item to a cart, they only price something already in there. Whatever puts a gift in the cart is an app running on your storefront. So a missing gift is one of three things and never a fourth: the app is not running on that page, the rule does not match this cart, or the theme is not rendering the line the app already added.

Eight causes, in check order. The first four take about a minute each.

Check these in order

1. The campaign is off, scheduled, or expired

Symptom: nothing fires on any cart, including your own tests.

Why: the most common cause is the least interesting one. A campaign saved with the toggle off does not fire even when every condition matches, and one starting next Monday or ending last month behaves exactly like a broken one.

Fix: open the campaign list and read the status, not just the toggle. Most gift apps show a status pill (enabled, paused, scheduled, expired). Fix the dates or flip the toggle.

Confirm: the campaign reads as live today, not as scheduled.

2. The app embed is off in your live theme

Symptom: the campaign is enabled, the rule looks right, and the storefront behaves as though the app were not installed.

Why: a gift app's storefront script normally ships as a Shopify theme app embed, switched on per theme. Two things turn it off quietly: setting it up in a preview theme and then publishing a different one, and installing a new theme version, which starts with its own embed settings.

Fix: go to Online Store -> Themes -> Customize on the live theme, open App embeds at the bottom of the left sidebar, switch the app's embed on, save. Enable the theme app embed has the walkthrough.

Confirm: in Valotrix Cart Rewards, ?vltrx_debug=true on any storefront URL prints a trace in the browser console on every cart change; an empty console means the script never loaded.

3. The threshold is not actually met

Symptom: it fires on your cart and not the customer's, or at $52 but not $50.

Why: "subtotal" is slipperier than it looks. Discounts may or may not be subtracted before the comparison depending on the app's setting, so a $10 code on a $55 cart can land either side of a $50 threshold. The gift's own line should never count toward the threshold that earns it. And a shopper in a currency with no threshold set does not qualify at all, because a sensible app will not invent an exchange rate.

Fix: decide explicitly whether discounts count (in Valotrix Cart Rewards, Factor in discounts when checking cart totals in Settings, off by default) and set a threshold for every currency you sell in. Per-currency thresholds explains the order of resolution.

Confirm: rebuild the failing cart to the cent, in the same currency.

4. The gift is out of stock

Symptom: it worked for weeks, then stopped, on one campaign only.

Why: an app cannot add a variant Shopify will not sell. When every gift variant on a rule is out of stock, inventory-tracked and set to stop selling at zero, a well-behaved app disables the rule rather than failing silently on every cart.

Fix: restock, then re-enable the rule; auto-disable is usually not undone for you. If you offer several gifts and want the rest to keep flowing when one sells out, turn on the per-rule "continue if a gift is out of stock" behaviour. Out-of-stock gifts covers both.

Confirm: the gift variant shows inventory and the rule is enabled again.

5. Your targeting excludes this shopper

Symptom: it works for you and not for the customer who complained.

Why: targeting is invisible from the storefront. A logged-in-only rule fails for guests. A customer-tag rule fails for anyone missing the tag, including someone you tagged after their session started. A country condition fails for shoppers outside it. A per-customer cap fails for someone who already claimed the gift, which is correct behaviour that looks identical to a bug.

Fix: check the rule's targeting against that specific customer. If you cap redemptions, remember guests have no stable identity, so guest orders neither count toward the cap nor hit it. Per-customer limits explains the count.

Confirm: replay that customer's identity in your app's simulator, if it has one.

6. The cart drawer never re-rendered

Symptom: the gift is on /cart but missing from the slide-out drawer, or only appears after a refresh.

Why: the gift is in the cart. The drawer does not know. Slide-cart apps and older hand-rolled cart JavaScript rebuild the cart HTML from their own template, and if it ignores line properties, or never re-fetches after the app's update, the new line stays invisible.

Fix: open https://yourshop.com/cart.js with the failing cart. If the gift line is in that JSON, the problem is rendering rather than adding: switch off the competing drawer app's storefront output, or make sure each cart row carries the key attribute your gift app uses to locate lines. When a theme breaks the gift line names the usual offenders.

Confirm: the same cart with that drawer disabled shows the gift.

7. The shopper never opened the cart

Symptom: orders arrive without gifts even though the carts clearly qualified.

Why: Buy Now and Shop Pay build a checkout directly from the product page. No cart page, no cart drawer, nothing for a gift app to react to. That is how Shopify's express checkout works, so every gift app deals with the same constraint.

Fix: turn on your app's express-checkout handling (in Valotrix Cart Rewards, Settings -> Gift delivery -> Include express checkout, on by default, catching the majority of express orders rather than all). If express is a big share of your volume, hide Shopify's dynamic checkout buttons on trigger products. Express checkout and gifts covers the trade-offs.

Confirm: compare an order placed via Buy Now with one placed through the cart.

8. Two gift apps are fighting over the same cart

Symptom: the gift flickers in and out, or is gone by checkout.

Why: you are mid-migration and both apps still run on the storefront. Gift apps generally clean up free lines they did not create, so customers cannot smuggle freebies through, and to each app the other app's gift looks exactly like that.

Fix: keep both installed if you want the old admin for history, but switch the old app's storefront output off before you switch the new one on, run a short overlap, then uninstall. Migrating from another gift app has the order and the 24-hour overlap.

Confirm: with one app rendering to the storefront, the gift survives a full checkout.

How to tell which one it is, fast

Three tools, cheapest first:

  1. A simulator, if your app has one. Rebuild the customer's cart in the admin, including logged-in state, tags, market and currency, and read which rule matched or which condition failed. That separates "the rule does not match" from everything else in a minute. Valotrix Cart Rewards has one in the sidebar with a per-condition breakdown behind its Developer mode: see the simulator deep-dive.
  2. A storefront debug flag, if your app has one. ?vltrx_debug=true prints what Valotrix Cart Rewards evaluated on each cart change, catching theme-specific problems a simulator cannot see.
  3. A private window. Rules out stale carts, a logged-in state you forgot about, and a page cached before you turned the campaign on.

If you are still stuck

Whatever app you run, send support these in one message:

  • The storefront URL and the exact cart that should have qualified.
  • Your theme name, and whether a cart-drawer app is installed.
  • A screenshot of the campaign's conditions and its status.
  • The https://yourshop.com/cart.js output for the failing cart.
  • Whether it fails for everyone or one customer, and whether express checkout was involved.

Where Valotrix Cart Rewards fits

Most of the time lost to this problem goes on guessing which of the eight it is. Valotrix Cart Rewards (listed on the App Store as VLTRX Gift with Purchase BOGO) is built to shorten that: a simulator that replays a customer's exact cart and shows which condition failed, a one-click preview that runs a draft campaign against your live theme for 24 hours before customers see it, a storefront debug trace, and an automatic stand-down when every gift variant on a rule sells out. You can try it on the Free plan alongside whatever you run today.

Keep reading

  • Free gift charged at checkout on Shopify - the sibling problem, when the gift appears but is not free.
  • Free gift over a spend threshold on Shopify - picking a threshold shoppers actually reach.
  • A gift is not being added: diagnostic flow - the same checks, step by step.

Install Valotrix Cart Rewards - the Free plan runs one campaign with a progress bar, paid plans have a 7-day trial: apps.shopify.com/valotrix-cart-rewards.

Valotrix
Cart rewards, done right. Built on Shopify Functions by a Shopify engineer who runs stores every day.

Product

  • How it works
  • Pricing
  • Blog
  • Docs
  • Shopify App Store

Legal

  • Privacy Policy
  • Terms of Service
  • valentin@valotrix.com
© 2026 Valotrix Studio · Built by a Shopify engineer who uses Shopify daily Romania