Shopify apps · October 2026 · 3 min read

    Shopify's 25-product discount cap, and one rule that covers every free gift

    A testing programme ran out of discount room as free-gift combinations multiplied. This is how one discount rule replaced the pile, with a dashboard the team runs themselves.

    The free-gift discount engine's gift map: rules, trigger products and the free gifts they unlock, all under one discount

    By Cristian Daron

    Every free-gift test on the store needed room in a discount, and Shopify caps a discount at 25 products. As gift combinations multiplied across tests, the store hit that ceiling. A new experiment meant finding a discount slot that did not exist.

    One rule instead of many

    I proposed and built an app that collapses the whole free-gift programme into a single discount rule. The backend maps each gift to its trigger product and marks the assigned items free. Because the mapping lives in the app rather than in the discount's product list, one rule covers every combination, the gift code stays the same across offers, and a new test no longer uses up a discount slot.

    A dashboard the team can run

    The mapping is managed in a custom dashboard, so the team can add or change a gift without a developer. Its gift map follows the layout of the auto-add-to-cart app they already used to add gifts, so deciding which gifts are free feels familiar rather than like a new tool to learn.

    The safeguards that matter

    A single rule that makes things free needs guard rails, because a mistake costs money on every order. Each rule is checked so that a gift never counts as its own trigger, a gift named by two rules is only made free once, and extra units above what the triggers allow stay at full price. The editor shows those checks, and a preview of the cart, before a rule is saved.

    Why build it rather than work around it

    The usual workaround is more discounts and more codes, which multiplies the places an offer can break and makes the reporting harder to read. Moving the logic into one rule made the programme simpler to run and easier to test, which was the point of a testing programme in the first place.

    The screenshots on this site come from a rebuild on a test store, because the production app belongs to the client.

    Sources

    1. This site: the free-gift discount engine case study