Checkout-safe AOV systems for Shopify — free store audit available →
Get free audit
Guide

BOGO vs percentage discount on Shopify: which converts better?

July 24, 2026

BOGO vs percentage discount on Shopify: how each affects perceived value, units per order, margin and inventory — and when to run buy-one-get-one instead of straight % off.

Two of the most common Shopify promotions look interchangeable on the surface and behave nothing alike underneath. BOGO — buy one get one, or its 3-for-2 cousin — and a straight percentage discount pull different levers: one moves units, the other lowers price. Picking the wrong one is how a “successful” sale ends up flat on profit. Here’s how to decide, on the axes that actually matter.

Perceived value: “free” beats “20% off”

A free unit reads as a bigger win than the equivalent percentage off, even when the math is identical. “Buy one get one free” is a 50% discount when both items are the same price — but “free” is concrete and the shopper keeps a whole extra product. “20% off” is an abstraction applied to a total. Buyers reliably respond harder to the free framing, which is why BOGO is a stronger headline for conversion. A percentage discount is quieter and more rational — useful when you don’t want the promotion to overshadow the product.

Units per order and AOV

This is the sharpest difference. BOGO structurally pushes quantity: to unlock the reward the shopper has to add more units, so orders get bigger. A 3-for-2 nudges a one-unit shopper to three. That’s a direct lift to units per order and to average order value.

A percentage discount does nothing to quantity. It applies to whatever is already in the cart, so it lowers the price of the order the shopper was already going to place. If your goal is a larger basket, BOGO is the mechanic; a flat percentage off is the wrong tool. (More AOV levers: how to increase average order value on Shopify.)

Margin implications

Here the two diverge again. A percentage discount costs you the discount depth on every unit sold — 20% off means 20% off the whole cart, whether or not the shopper would have bought anyway. It’s a predictable, controllable cost, which is exactly why it suits clearance.

BOGO’s cost is the free unit’s COGS and fulfillment, not its retail price — you never had that retail money. On a high-margin product the free unit costs a fraction of what a paid unit earns, so a larger order can still grow total contribution. On a thin-margin product the free unit can cost more than a normal sale earns, and the offer sells at a loss. The full breakdown is in why buy 2 get 1 free isn’t always a 33% discount.

Inventory movement

BOGO is the better tool to shift volume of a specific SKU — it clears depth by pushing units out the door in multiples. A percentage discount clears value across a catalog: mark down a collection and everything moves a little. So for overstock on one product, BOGO; for a broad end-of-season sweep, percentage off.

When each wins

They also stack conceptually: BOGO to grow the order, percentage off to clear the tail.

The checkout-safe catch (whichever you pick)

Both mechanics share one failure mode: an offer that displays correctly on the product page but is enforced only in theme JavaScript. The cart is a separate, dynamic object — if a shopper edits it after the reward is added (removes the qualifying item, changes quantity), a JS-only offer can leave the free unit in the cart at zero cost or apply a discount that no longer qualifies. What they see and what they’re charged drift apart, and the gap is your margin.

The reliable fix is to enforce the offer with a Shopify Discount Function at checkout. The Function re-validates the cart server-side, so the free unit or the discount is granted only when the qualifying items are actually present — it can’t be faked in JS or gamed by editing the cart. That’s how Profit Flow AOV Bundle runs both BOGO and percentage offers: checkout-safe by construction. See the mechanic in buy X get Y free.

Checkout-safe vs JavaScript-only discounts on Shopify A JavaScript-only discount looks right on the product page but drops at checkout; a Shopify Function enforces the same price all the way through. What the shopper sees → what checkout charges PROFIT FLOW · SHOPIFY FUNCTION Product page Buy 2 · $86.40 Cart Checkout $86.40 JS-ONLY APP · STOREFRONT JAVASCRIPT Product page Buy 2 · $86.40 Cart edited (re-check fails) Checkout $96.00 Same offer, same shopper — only the enforcement differs. JS-only leaks margin or surprise-charges the buyer.
Checkout-safe: the discount and free gift are enforced by a Shopify Function, so what the shopper sees is exactly what they’re charged.

Profit Flow AOV Bundle runs BOGO (plus quantity breaks, bundles, gifts and mix & match) on any Online Store 2.0 theme, free. Add it to your store →

Share:

FAQ

Is BOGO better than a percentage discount on Shopify?
It depends on the goal. BOGO (buy one get one, or 3-for-2) tends to lift units per order and average order value because a free unit feels higher-value than an equivalent percentage off. A straight percentage discount is simpler and better for clearance or when you want to protect a headline price point. Match the mechanic to the outcome.
Does BOGO increase average order value more than a percentage off?
Usually, yes. BOGO forces the shopper to add more units to unlock the reward, so orders get larger. A flat percentage off applies to whatever is already in the cart and does nothing to push quantity, so it rarely moves AOV on its own.
When should I use a percentage discount instead of BOGO?
Use a percentage discount for clearance, sitewide sales, or single-unit products where adding quantity makes no sense. It is predictable, easy to communicate, and lets you set the exact discount depth you can afford. BOGO shines when you want to move units and lift order size on stock you have depth in.

Start making more on every order

Launch a checkout-safe offer yourself, or have our team set it up and dial in your store.

Lifts average order value · No checkout edits · Works on any theme

Related reading