Shipping discounts: methods, conditions & combinations
A deep reference for shipping-method targeting, percentage vs fixed shipping discounts, trigger conditions, scheduling, markets, and combinations.
This is the deep reference for shipping discounts. If you just want a free-shipping threshold up and running, start with Shipping discounts. This page documents every option in detail — how to target individual delivery methods, how to take a percentage off a rate (not only a flat amount), how trigger conditions are built, and exactly how a shipping discount combines with your other discounts.
A shipping discount runs as a Shopify discount on the delivery options at checkout. It watches the cart, and when your conditions are met it reduces the price of the delivery options you've targeted — without the customer entering anything.
Fixed vs percentage shipping discounts
Every shipping discount has a value type that decides how much comes off the shipping rate. There are two: a fixed amount off, or a percentage off. There is no separate "free shipping" type — free shipping is simply a Percentage set to 100.
A shipping discount supports both a fixed amount off and a percentage off the rate. Use this page when you need a percentage-based shipping discount such as "50% off shipping."
You choose the value type in one field:
| Field | Options | What it does |
|---|---|---|
| Discount value | Percentage / Fixed | Percentage takes a percent off the rate (set it to 100 for free shipping). Fixed takes a currency amount off the rate. |
The reductions you can build:
- Percentage off — takes a percent off the rate. Example: 50% off shipping. A $10.00 rate becomes $5.00; a $7.00 rate becomes $3.50. Set the percentage to 100 for free shipping — the rate drops to $0.00.
- Fixed amount off — takes a set currency amount off the rate. Example: $5 off shipping. A $7.00 rate becomes $2.00; a $4.00 rate becomes $0.00 (a discount never pushes a rate below zero).
Fixed-amount shipping discounts respect the shopper's currency. On multi-currency stores the app applies the correct per-currency amount at checkout, so "$5 off" converts appropriately. A percentage off needs no conversion — it scales with whatever the rate is.
Targeting specific shipping methods
By default a shipping discount applies to every delivery option the cart is offered. The shipping method control lets you narrow that down to specific methods — for example, discount standard delivery but leave express at full price.
Targeting has two parts: an operator and a methods list. The operator decides how the methods list is compared against each delivery option's name at checkout.
| Operator | Behavior | Methods list |
|---|---|---|
| All methods | Applies to every delivery option. | Ignored — no list needed. |
| Equals | Applies only to methods whose name exactly matches an entry. | One or more exact names. |
| Contains | Applies to methods whose name contains an entry as a substring. | One or more text fragments. |
| Does not equal | Applies to every method except those that exactly match an entry. | One or more exact names. |
| Does not contain | Applies to every method except those whose name contains an entry. | One or more text fragments. |
The match is evaluated against the rate title — the delivery option name shown to the shopper at checkout (for example Standard, Express, Free Shipping). This is the name you configured in Shopify admin → Settings → Shipping and delivery, on the rate inside your delivery profile.
Worked examples
- Only standard delivery — operator Equals, methods list
Standard. The discount applies to theStandardrate and nothing else. - Everything except express — operator Does not equal with
Express(or Does not contain withExpressto also catchExpress Overnight,Express AM, and similar). Every method is discounted except the express ones. - Any "Free"-branded method — operator Contains, methods list
Free. MatchesFree Shipping,Free Standard, and anything else containing that word.
Matching is on the rate name exactly as it appears in your Shopify shipping settings. If you later rename a rate — say Standard becomes Standard Ground — an Equals rule for Standard stops matching and the discount silently stops applying. After any change to delivery option names in Shopify, revisit your shipping discounts and update the methods list. Prefer Contains over Equals when you expect rate names to vary or evolve.
Conditions that trigger it
A shipping discount uses the same condition engine as campaigns: rule groups combined with AND / OR connectors. The discount only fires when the cart satisfies those rules. If you leave the conditions empty, it applies to every qualifying cart (subject to your method, market, and schedule targeting).
The classic "free shipping over $50" is a single rule: Subtotal is greater than or equal to 50. Set the value type to Percentage at 100, add that one condition, and you're done.
Other common condition recipes:
- Free shipping for a collection — a Product collection rule that matches items in the chosen collection.
- Free shipping for a customer tag — a Customer tag rule (for example
VIP), so only tagged, logged-in customers get the benefit. - Free shipping when a cart attribute is set — a Cart attribute rule matching a key/value your theme or checkout writes onto the cart.
Because it's the full condition engine, you can combine these with AND/OR. For example, Subtotal ≥ 50 AND Customer tag is VIP gives free shipping only to VIPs who also cross the threshold.
Every selector, matcher, and value type you can use in a shipping-discount condition is documented in the Condition selectors reference. For how rule groups and AND/OR connectors evaluate, see How conditions work.
Automatic vs code
A shipping discount can apply in one of two ways:
- Automatic — applies on its own at checkout the moment the cart qualifies. This is the function-backed automatic discount most stores want; the customer never types anything.
- Code — the shopper must enter a discount code at checkout for the shipping benefit to apply, even when their cart otherwise qualifies.
Switching an existing shipping discount between Automatic and Code recreates the underlying Shopify discount — the same caveat as tier discounts. The old discount is replaced with a new one. Any usage history or reporting tied to the previous discount does not carry over, and there can be a brief moment during the switch where the discount is being rebuilt. Avoid flipping the type on a live, high-traffic discount mid-promotion.
Scheduling & markets
Two more targeting controls decide when and where a shipping discount is allowed to run.
| Setting | Default | Effect |
|---|---|---|
| Start date/time | Now | The discount becomes active at this moment. If you don't set one, it starts immediately on save. |
| End date/time | None | The discount stays active indefinitely until you set an end, then it stops automatically. |
| Markets | All markets | Limits the discount to the Shopify markets you select. Leaving this empty (all markets) lets it run everywhere. |
Use the schedule to bound a promotion — for example, free shipping only during a sale weekend — and markets to localize an offer, such as free shipping only in the US.
Market targeting on the discount and the market a delivery option belongs to are two different things. The discount's market setting decides whether the discount is eligible for a shopper in that market. But the shopper only sees the benefit on the delivery options actually offered in their market. If a market has no matching delivery option (for example, the rate you targeted by name doesn't exist in that region's delivery profile), there is nothing for the discount to reduce — even though the discount is "active" for that market. When a market-scoped shipping discount doesn't appear, check that the targeted rate name actually exists in that market's shipping profile.
Combinations
Whether a shipping discount can stack with your other discounts is controlled by two combines with toggles:
| Toggle | Default | When on |
|---|---|---|
| Combine with order discounts | Off | The shipping discount can apply at the same time as an order-level discount. |
| Combine with product discounts | Off | The shipping discount can apply at the same time as a product-level discount. |
There is intentionally no shipping + shipping toggle — two shipping discounts never stack on the same delivery option (see Edge cases).
These toggles map directly to Shopify's own discount-combination model, so the behavior also depends on the combination settings on the other discount. The app does not override Shopify's combination logic.
For the full picture of which discount types can layer together and what wins when they conflict, see the Discounts overview and How features interact.
Recipe — free shipping that should not stack with an order coupon. You're running free shipping over $50, and you also have an order-level coupon SAVE20. You don't want shoppers to claim both at once. Leave Combine with order discounts off on the shipping discount. Now a cart can get free shipping or the SAVE20 order discount, but not both — Shopify won't combine them because the shipping discount declines the combination.
Edge cases
Recipes
Free shipping on standard delivery once the cart hits $50.
Set the value type
Choose Percentage and enter 100 (free shipping).
Add the condition
Add one rule: Subtotal is greater than or equal to 50.
Target the method
Set the shipping method operator to Equals (or Contains if your rate name might vary) and add Standard to the methods list.
Save
Leave it Automatic, all markets, no end date, and save. Standard delivery goes free for any cart over $50.
50% off express delivery for tagged VIP customers.
Set the benefit
Choose discount value Percentage, amount 50.
Add the condition
Add a Customer tag rule matching VIP.
Target the method
Operator Contains, methods list Express — so it catches Express, Express AM, and similar.
Save
A $10 express rate shows as $5 for VIPs; everyone else pays full price.
Free shipping in the US market, only across a sale window.
Set the value type
Choose Percentage and enter 100 (free shipping).
Target the market
Under markets, select United States only.
Set the schedule
Add a Start date/time at the sale's open and an End date/time at its close.
Save
Confirm the US delivery profile actually has the rate you want to discount, then save. Free shipping runs for US shoppers and stops automatically when the window closes.
Troubleshooting
- The discount isn't appearing at checkout. Confirm the cart meets your conditions, the schedule window is open, the shopper's market is selected (or markets is left as all), and the targeted method name matches a real delivery option for that market. See Discount not applying.
- It stopped working after a shipping change. A renamed rate breaks Equals matches — update the methods list or switch to Contains.
- Two shipping discounts and only one applies. Expected — the highest-benefit one wins per rate; they never stack.
- A percentage discount does nothing. The targeted rate is likely already $0.00; a percentage of zero is zero.
Where to go next
Shipping discounts (intro)
The quick-start version, including plan limits.
Condition selectors reference
Every rule you can use to trigger a shipping discount.
Discounts overview
How the discount types combine and what wins when they overlap.
How features interact
What overrides what when discounts and other features overlap.
Shipping discounts
Offer free or reduced-cost shipping that applies automatically at checkout when the cart meets your conditions.
Discount stacking, limits & conflicts
The definitive reference for how Llama Upsells discounts combine, the exact ceilings that exist, and why a new discount may silently fail.
