Discounts
Discount Types
How xDiscount's four discount types work, Percentage off, Fixed amount off, Buy X get Y and Free shipping, and how to set each one up.
Choosing a Type
xDiscount has exactly four discount types. You pick one per discount, in the Discount type dropdown on the discount form, and the choice decides which value fields appear underneath it.
| Discount type | What it takes off | Best for | Example |
|---|---|---|---|
| Percentage off | A percentage of each matching line | Site-wide sales, seasonal promotions, clearing a collection | “20% off every mug” |
| Fixed amount off | A set amount off each item on the line | Round-number offers, high-ticket items | “$10 off every winter jacket” |
| Buy X get Y | A percentage off a gift the shopper adds | Gift-with-purchase, free-sample offers | “Buy a coffee maker, get a filter pack free” |
| Free shipping | 100% off the cart’s shipping | Removing the last objection at checkout, shipping promos | “Free shipping on all orders containing a bike” |
All four apply automatically at checkout, shoppers never enter a code. At checkout the discount is labelled simply xDiscount, on every type, and the amount is printed by Shopify next to it.
xDiscount applies to one-time purchases only. Subscription orders are not discounted, and no type discounts the order total. Discounts land on line items and on shipping.
What Every Discount Has in Common
Whichever type you choose, the form is the same shape. Go to Discounts and click Create discount.
- Title: a Name, which only you see. It is how you find the discount later.
- Included products: click Browse, or Choose products in the empty state, to open Shopify’s product picker. This is the set the discount attaches to. Pick a product and leave its variants alone and the discount covers every variant, now and in the future. Pick specific variants and the form tells you so, with “1 product is limited to specific variants.”
- Discount configuration: the Discount type dropdown above, its value field, Skip products that are out of stock, and Priority, which defaults to 10.
- Discount period: an optional Start date and End date. Both are inclusive, both work on their own, and a start equal to the end is a legal one-day sale. Dates follow your store’s timezone, not yours and not the shopper’s.
- Conditions: optional Item quantity, Cart value and Inventory rows. Each type can be used once per discount, so three rows is the maximum.
- Status, in the right-hand column: Draft, Active or Archived. New discounts start as Draft.
- Click Save.
Save as Draft while you build it. A draft is invisible to shoppers and never applies at checkout, so you can leave it half-finished. Only Active discounts count against your plan’s active-discount limit, which is 3 on Free, 25 on Starter and unlimited on Growth and Scale.
Scheduling is not a condition. There is exactly one place to put a discount on a calendar, and that is Discount period. The Condition dropdown offers Item quantity, Cart value and Inventory, and nothing else. A discount you saved before this changed may still carry a read-only Date range (set in Schedule) row, kept so older discounts keep running as they were. Nothing can be switched to that type and a new row can never be one, so to retire it, copy its dates into Discount period, delete the row and save. See Conditions and Rules for the full picture.
Percentage Off
Reach for it when you want the discount to scale with the price of what the shopper bought.
Field: Percentage off, entered as a number with a % suffix. The allowed range is 0 to 100 inclusive. Save anything outside it and you get “Percentage must be between 0 and 100.”
How to set one up:
Create the discount
Go to Discounts and click Create discount.
Name it
For example, “Autumn 20%”.
Choose your products
Click Browse under Included products and select your autumn collection’s products.
Set the type and the value
Set Discount type to Percentage off, then set Percentage off to 20.
Publish it
Set Status to Active and click Save.
Worked example. A $50 mug and an $80 kettle are both targeted at 20% off. A shopper buys 2 mugs and 1 kettle.
| Line | Price | Qty | Discount | Shopper pays |
|---|---|---|---|---|
| Mug | $50.00 | 2 | 20% | $80.00 |
| Kettle | $80.00 | 1 | 20% | $64.00 |
At checkout each line shows an xDiscount line. The percentage is the same number everywhere: the admin, the storefront offer card and checkout all hold it to 0 to 100, so what a shopper is shown and what they are charged cannot drift apart.
Fixed Amount Off
Reach for it when you want a headline number. “$10 off” reads stronger than “13.4% off”.
Field: Amount off, a money field in your store’s currency, entered in whole currency units, so dollars rather than cents.
The one thing to know: the amount comes off each item, not each line. A $10-off discount on a line of 3 takes off $30, not $10.
How to set one up:
Create the discount
Go to Discounts and click Create discount.
Name it
For example, “$10 off jackets”.
Choose your products
Click Browse under Included products and select your jackets.
Set the type and the value
Set Discount type to Fixed amount off, then set Amount off to 10.
Publish it
Set Status to Active and click Save.
Worked example. $10 off a $120 jacket, and the shopper buys 2:
| Line | Price | Qty | Discount | Shopper pays |
|---|---|---|---|---|
| Jacket | $120.00 | 2 | $10 off each item | $220.00 |
Selling in more than one currency? You enter the amount in your store’s currency, and xDiscount converts it to the shopper’s currency at checkout using Shopify’s own exchange rate, rounded to that currency’s decimal places, so yen and won come out as whole numbers. The storefront offer card has no exchange rate to work with, so whenever the shopper’s cart is in a different currency from your store’s, it shows your figure with your currency code appended, for example “10 USD off”, rather than dressing your number up in the shopper’s symbol. When the cart is in your own currency the card formats it normally.
No rate means no discount
If Shopify does not hand the checkout a usable exchange rate, the fixed-amount discount simply does not apply for that order, rather than applying the wrong number. Percentage discounts are unaffected by this, because a percentage needs no conversion.
Buy X Get Y
This is the type with the most moving parts, so read this section before you build one.
What it actually is: a percentage off a gift the shopper has added to the cart. A Shopify discount function cannot put a product into a cart by itself, so xDiscount does not “add a free item”. The storefront offer card gives the shopper a button that adds the gift, and the discount then takes the configured percentage off it.
Three things must all be true, or nothing happens:
| Requirement | Why | Where you set it |
|---|---|---|
| A trigger product is in the cart | The trigger line is the proof of purchase. Only products you selected under Included products can trigger the offer | Included products → Browse |
| At least one gift product is configured | Without one there is nothing for the shopper to claim | Choose gift products |
| The storefront offer card is on your product template | It is the only thing that can add the gift to the cart | Settings → Storefront offer card → Add to theme |
The form says so itself: “Buy X get Y needs the storefront offer card installed on your theme. A discount cannot add an item to the cart on its own, so the card is what puts the gift there.” The card is included on every plan, Free included, so this is a setup step rather than an upgrade.
The fields
- Percentage off the gift, from 0 to 100. Enter
100for a genuinely free gift, and50makes it half price. - Number of gift items, minimum 1. This is the cap on discounted gift units across the whole cart, and it is also the quantity the gift button adds in a single click.
- Gift products, chosen with Choose gift products. Until you do, the form warns: “No gift chosen yet, shoppers cannot claim this offer until you pick one.” Once chosen it reads “2 gift products, the shopper picks from these on the product page.”
- Which variants a gift offers is chosen in the same picker as the discount’s products. Tick a product whole and shoppers choose any of its variants in the gift window on the product page; open the product and tick specific variants to limit the choice to those. The form says what each gift offers — All 4 variants, including any added later or 2 of 4 variants — and checkout only ever discounts a gift variant you allowed, whatever a shopper’s browser claims. Products another active or draft discount covers or gives away are not offered, one discount per product in both directions, but a discount’s own products are: buy two of this, get one of this is allowed and common.
How to set one up:
Create the discount
Go to Discounts, click Create discount, and name it “Free filters with a coffee maker”.
Choose the trigger product
Click Browse under Included products and select the Coffee Maker. This is the X.
Set the type
Set Discount type to Buy X get Y.
Set the gift value
Set Percentage off the gift to 100 and Number of gift items to 1.
Choose the gift
Click Choose gift products and select the Filter Pack. This is the Y.
Publish it
Set Status to Active and click Save.
Make sure the card is on your theme
If you have not already, go to Settings, find Storefront offer card and click Add to theme.
Worked example, end to end. The shopper opens the Coffee Maker page. The offer card shows a tile with the discount’s name and Free gift on the right, and under it a Choose your free gift button. They click it, a window lists the Filter Pack with an Add button, they click Add, and one Filter Pack lands in the cart marked as a gift. At checkout:
| Line | Price | Qty | Discount | Shopper pays |
|---|---|---|---|---|
| Coffee Maker | $180.00 | 1 | none | $180.00 |
| Filter Pack (gift) | $14.00 | 1 | 100% off 1 unit | $0.00 |
Caps, and what the shopper cannot do
- Number of gift items is counted across the entire cart, not per line. Set it to
1and a shopper who raises the gift line to 5 gets one unit discounted and pays for the other four. - If the number is missing or unusable, the cap is treated as 1, never as unlimited.
- The gift is only discounted if it is one of the products you listed under Gift products for that discount. Any other line marked as a gift is ignored.
- A line marked as a gift never counts as the trigger, so a shopper cannot claim a gift without buying the trigger product.
The gift products themselves need no setup. They do not have to be selected under Included products, and they do not get an offer card of their own. The gift picker only appears on the pages of the trigger products.
Two offers, one gift
If two Buy X get Y discounts are triggered by the same cart and both list the same gift, the one with the lower Priority number decides the percentage and the cap for it. A gift only ever counts against a discount that lists it, so two offers with different gift lists do not collide.
Common ways it goes wrong
| Symptom | Cause | Fix |
|---|---|---|
| No gift picker on the product page | The offer card is not on your theme | Settings → Storefront offer card → Add to theme |
| The Storefront offer card section shows Not on your plan | The card is on every plan, so this only happens when your subscription is on a plan the app does not recognise | Click Refresh plan under Plans and billing, and tell us if the badge stays |
| Save is refused with “Choose at least one gift product…” | Status is Active with no gift chosen | Add a gift, or set the status back to Draft |
| “One of your gifts has no variant. Remove it and pick it again.” | The stored gift is missing the variant the cart needs | Click Clear beside the gift products button, then pick the gift again in the picker |
| Gift added, but charged in full | The trigger product is not in the cart, or the discount is outside its Discount period, or a condition is not met | Check Included products, Discount period and Conditions on the discount |
Free Shipping
Reach for it when shipping cost is what is stopping the sale.
Fields: none. Choosing Free shipping replaces the value field with a single line: “Shipping is free when this discount applies.”
How to set one up:
Create the discount
Go to Discounts, click Create discount, and name it “Free shipping on bikes”.
Choose your products
Click Browse under Included products and select the products that should unlock it.
Set the type
Set Discount type to Free shipping.
Add a condition if you want one
Open Conditions, click Add condition, choose Cart value and set Minimum cart value to 75.
Publish it
Set Status to Active and click Save.
How it behaves at checkout. If any line in the cart carries an eligible free-shipping discount, shipping goes to 100% off, one discount per delivery group the cart has, so a split shipment is free on every part of it. It is a shipping discount rather than a product discount, so it can sit alongside a percentage or fixed-amount discount on the same order.
Worked example. A $75 minimum-cart-value free-shipping discount on bikes: a shopper with a $90 bike sees shipping drop to $0.00, and a shopper with a $60 bike pays the normal rate.
Carts with no delivery at all, meaning digital-only orders and local pickup, have no shipping to discount, so a free-shipping discount does nothing there. That is expected, not a failure.
When Several Discounts Match
- Only one product discount applies per item. Among the discounts that match a line, the one with the lowest Priority number wins and the rest are ignored for that line. Priority defaults to 10, and a discount saved with no priority is treated as 999.
- Free shipping is judged separately, so a line can be discounted and the order can still ship free, from two different discounts.
- Order matters more than you would expect. Because only the single lowest-priority discount is considered for a line, a Free shipping or Buy X get Y discount with a lower priority number than a Percentage off discount on the same product will suppress that percentage. Give your free-shipping and gift discounts a higher priority number than your price discounts on the same products.
| Discounts on the same product | Priority | Result |
|---|---|---|
| Autumn 20% (Percentage off) | 10 | Applies, 20% off the line |
| Free shipping on bikes (Free shipping) | 20 | Also applies, shipping goes free |
| Autumn 20% (Percentage off) | 20 | Suppressed on that line |
| Free shipping on bikes (Free shipping) | 10 | Applies, and blocks the 20% |
What Happens When Something Is Off
xDiscount is deliberately cautious at checkout: anything it cannot judge with confidence results in no discount, never a guessed one. A date it cannot read, a value it cannot parse, an exchange rate it cannot trust, each of these means the discount quietly does not apply rather than applying the wrong amount. If a discount is not showing up at checkout, that caution is usually the reason, and the Sync state on the Discounts page is the first place to look. See Managing Discounts for what each sync state means.