Skip to content
Examples

How to run a tiered shipping discount on Shopify

Rather than one all-or-nothing free shipping threshold, give something at a lower spend. Half-price shipping at $40 and free shipping at $80 gives a shopper two reasons to add one more item instead of one.

  • Free shipping

Shipping half price. $36.00 more for free shipping

Free shipping unlocks at $80.00

  • Spend $4050% off shippingTier 1
  • Spend $80Free shippingTier 2
The cart at $44 has already earned half-price shipping and can see the next rung.
What the shopper sees

The shipping line drops to half at $40 and to zero at $80. Between the two rungs the cart shows what has already been earned and what the next rung costs, which is a stronger nudge than a single distant threshold.

Build it

How to set this up

  1. 1

    Campaign > Offer type

    Pick Free shipping. Despite the name, the reward can be partial.

    type = free_shipping

  2. 2

    Tier 1

    Threshold $40 with a 50% reward. This discounts the shipping rate rather than removing it.

    tiers[0] = minSpend 4000, percentage 50

  3. 3

    Tier 2

    Threshold $80 with a 100% reward, which is free shipping.

    tiers[1] = minSpend 8000, percentage 100

  4. 4

    Stacking

    Opt into combining with product and order discounts so the shipping reward survives alongside a sale.

    stacking.combinesWithProductDiscounts = true

  5. 5

    Widgets

    Turn on the cart progress bar so both rungs are visible.

  6. 6

    Preview

    Simulate at $39, $40, $79, and $80 and confirm the shipping line changes at each rung, then publish.

The exact settings

Every setting, spelled out

These are the real configuration keys the offer is saved with, so you can check your own setup against this table field by field.

SettingValueConfig key
Offer typefree_shippingtype
Tier 1minSpend 4000 -> 50%tiers[0].minSpend
Tier 2minSpend 8000 -> 100%tiers[1].minSpend
Discount classshippingdiscountClasses
Award rulehighest satisfied tier onlytiers
Combine with product discountstruestacking.combinesWithProductDiscounts
Watch it

See it built end to end

The episode is not up yet

We are recording this one. The written recipe above is complete, so you can build it today.

Without an app

What Shopify does natively

What you can do

A native free shipping discount can carry one minimum purchase amount, so a single threshold works without an app.

Where you need an app

Native free shipping is all or nothing at one threshold. Two rungs means two discounts competing for the same cart, and neither shows the shopper the ladder.

Before you publish

Watch out for

  • Two shipping discounts never combine, so the rungs must live in one offer as tiers rather than as two offers.
  • Check your shipping profile for an existing free-shipping rate that would fight with this offer.
  • A product discount that lowers the subtotal can push a borderline cart back under a rung. Verify in the preview if both are running.
  • Thresholds are minor units, so $80 is 8000.

Common questions

Can a shipping discount be partial rather than free?
Yes. A percentage reward under 100 discounts the shipping rate rather than removing it.
Do the rungs stack?
No, the cart gets the highest rung it qualifies for.
Should the rungs be one offer or two?
One offer with two tiers. Two shipping offers would not combine and one would lose.
Does this work with express shipping?
It applies to the rates within the offer scope. Check the preview to confirm which rates are covered.

Related examples

Conditional free shipping

Free shipping once the cart passes a threshold, with a progress nudge in the cart.

Free shipping by customer tag

Free shipping restricted to customers carrying a specific tag.

Spend more, save more

Three spend thresholds, each unlocking a bigger percentage off the order.

Build this in your own store

Every recipe in this library runs on the same server-side engine, so the cart total and the checkout total agree.

We use essential cookies to run this site, and, only with your permission, analytics cookies to understand traffic. Read our Cookie Policy.