Skip to content

E-commerce / Case 08

Real scenario · client identity private

Free gifts and BOGO messaging that follow Shopify's actual discounts

A storefront needed automatic gifts and clear BOGO messages while Shopify remained responsible for the final price. The theme reconciled gift eligibility with cart results and used promotion-specific discount allocations to explain savings accurately.

ShopifyLiquidJavaScriptNative discountsCart UX

What this solved for the business or user

Shoppers see an offer that matches what they can receive at checkout. A qualifying gift appears in the cart, promotion messages update as items change, and savings are presented consistently across the cart page, drawer, and add-to-cart popup.

What was happening

The store combined a spend-threshold gift with a buy-one-get-one offer. The theme needed to add the gift and explain qualification before checkout, but a paused discount, an ineligible customer, or a cart change could leave the offer unavailable. Other discounts could also make a line appear discounted without the BOGO promotion having applied.

Why the obvious solution was not enough

The gift was a real product with a normal selling price. Adding it did not establish that it was free. Eligibility also could not depend solely on collections visible to the storefront, and savings calculations had to distinguish the relevant promotion from unrelated order-level discounts.

How the solution works

  1. Keep native Shopify discounts responsible for pricing and use the theme to manage the offer's presentation and gift line.
  2. Re-evaluate eligible merchandise when the cart changes, excluding the gift itself from qualifying spend.
  3. After adding a gift, read the updated cart and verify that the native discount made it free. Remove the gift when that condition is not met.
  4. Use product tags as the primary eligibility signal, with collection membership as a fallback where it is available.
  5. Render BOGO eligibility, applied notices, and savings in Liquid using the allocations associated with that promotion.
  6. Show the next-pair prompt only when the configured discount supports repeating pairs, so an odd quantity does not imply an unavailable benefit.
  7. Make thresholds, gift selection, eligibility, customer conditions, and message copy editable through the theme editor, then refresh the affected cart views together.

What should be verified before shipping

  • Test carts below, at, and above the threshold, including a cart that stops qualifying after an item is removed.
  • Check paused or unavailable discounts, customer eligibility changes, and gifts that remain at a paid price.
  • Repeat cart updates and confirm gifts do not duplicate or enter repeated add-and-remove cycles.
  • Test hidden collections and tag-based eligibility with the same products.
  • Compare promotion savings with and without an unrelated order-level discount.
  • Check odd and even BOGO quantities, repeating and single-pair offers, and agreement across the cart page, drawer, popup, and checkout.

What changed

Both offers became configurable in the theme editor while native Shopify discounts continued to determine their prices. The storefront could explain eligibility and savings from the actual cart state rather than treating its own promotional labels as proof that an offer applied.

Reusable lesson

A promotion has two jobs: apply the price and explain the benefit. Keep the platform responsible for the first, then make the storefront's messages follow the same result.