01 / Price
Four discount types with real bounds
Percentage off clamped 0 to 100, fixed amount off taken off each item in your store currency, buy X get Y on the gift the offer card's picker adds, and free shipping on delivery.
Discount engine · for Shopify
xDiscount is the product discount engine for Shopify. Run percentage off, fixed amount off, buy X get Y, and free shipping, gate each one on item quantity, cart value and variant inventory, put it on a calendar with a start date, an end date, or both, in your store's timezone, then place the offer card on your product page and let a native Shopify Function price the cart at checkout.
By the numbers
discount types, all shipped
rule conditions: item quantity, cart value, and inventory
active discounts free on the $0 plan
discounted orders a month included on the $0 plan
01 / The problem
You run promotions because they work, but the rules you need do not exist, the storefront and checkout disagree about the price, and nothing tells you what any of it actually did. Here is what that quietly costs.
See how xDiscount solves thisShopify's native discounts cannot express minimum two items and a cart over $80, this week only, on these products. So the promotion you planned is not the promotion you run.
A card promises one price and checkout charges another, because two different pieces of code decided it. The shopper notices first.
No bounds, no preview, no priority, and a promotion meant to grow revenue hands away the profit instead.
A start and end date that nothing actually enforces is not a schedule, and a Black Friday price that never turns off is a real bill.
Fighting theme code to show a price that is already live at checkout keeps the offer away from the page where people decide.
Without a funnel and signed order data, every discount is a guess you paid for.
The four types
Every xDiscount discount is one of four types. Here is what each one takes off, and what the shopper is charged when the Shopify Function prices the cart.
Type 01 / 04
A percent off the products you target, held between 0 and 100.
Before
$100.00
At checkout
$80.00
The same percentage in the admin, on the offer card and at checkout, so the promise and the charge cannot drift apart.
Four discount types, a rules engine with real conditions, a storefront offer card, a native Shopify Function at checkout, the AI assistant you already use, and analytics built on signed orders. All of it in one app. The offer card, Connect AI and analytics are on every plan, Free included. Priority support is the one plan-bound extra, on Scale.
Percentage off, clamped between 0 and 100. Fixed amount off, in your store's currency, taken off each item on the line. Buy X get Y, which discounts a gift line already in the cart. And free shipping, evaluated as a delivery target rather than a cart line. Reach for the one that fits the promotion, or run all four at once.
Gate any discount on a minimum and maximum item count, a minimum and maximum cart subtotal in your store currency, and a minimum and maximum stock level per variant. Conditions combine with AND and OR that folds strictly top to bottom, so there is no hidden precedence to discover later, and dates live in the discount's own Discount period rather than in a condition. Priority decides the rest: when several discounts match the same item, the lowest priority number wins and only that one applies. New discounts start at 10, and free shipping is judged separately, so a line can be discounted and still ship free.
Connect Claude, ChatGPT, or any tool that speaks MCP, through a key you generate in Settings and paste into your client as a bearer token, pointed at the /mcp endpoint on your app's URL. It can read your discounts and your performance figures, create and update discounts, set their rules, and publish, unpublish, archive or delete them. You still choose the products a discount applies to yourself. Included on every plan, Free included.
Anything an assistant creates is forced to draft at the model layer, not in the interface, so no tool can route around it. A live discount has to be unpublished before it can be edited, and publish, unpublish, archive and delete are flagged destructive, so clients that support prompts ask you first.
xDiscount sells no AI subscription and stores no provider keys. Whatever you pay your AI provider stays between you and them. The assistant never writes a metafield directly either: every write goes through the same validated action the admin interface uses. Connect AI is included on every plan, Free included.
A theme app extension you place from the theme editor, no code. Server-rendered Liquid, so it ships no client-side price logic, and it renders the offer, its conditions in plain words, an Ends today countdown on a discount's final day, and the gift picker for buy X get Y. It speaks English and French, and it reads the same record checkout reads.
A Shopify Function applies your discounts inside Shopify's own pipeline, on cart lines and on delivery. No scripts injected into your theme, no cart rewriting, no checkout hacks. It fails closed on purpose: an unknown rule, a malformed record, or a condition it cannot evaluate produces no discount, because a wrong discount costs money on every order.
Four tiles, revenue, discounted orders, average order value and conversion rate, with a chart of any one metric, a discount type filter and a By day table underneath, over today, the last 7, 30 or 90 days, or a custom range, with history reaching back 250 days. Product views, added to cart, checkouts started, checkouts seen and revenue come from a consent-aware storefront pixel that carries zero shopper identifiers, so they are labelled approximate. Discounted orders comes from Shopify's own signed order webhook, so it is exact, and it is the same number your plan meters. For money questions, xDiscount stamps every order it discounted with the campaign name, so you group your own Shopify sales reports by order.metafields.xdiscount.campaign.
One source of truth
Every discount lives in a single product metafield, written only by xDiscount's own validated action. The Shopify Function that prices the cart at checkout and the offer card on your product page read that same record, so the price the card promises is the price checkout charges.
Flow diagram. The xDiscount admin sets a rule. xDiscount's own validated action is the only writer, and it writes one product metafield per product. Two readers read that same record: the Shopify Function, which prices the cart at checkout and fails closed, so an unknown rule produces no discount and the shopper is charged full price; and the storefront offer card, which shows the deal on the product page and fails open, so it stays visible rather than vanishing. Nothing is written by the browser.
Select a step to trace it through the diagram
Every discount for a product lives in a single product metafield. There is no second copy of the price to fall out of step with the first.
Only xDiscount's own validated action writes that record, whether the change comes from the admin or from a connected assistant. Nothing is written by the browser.
A Shopify Function prices cart lines and delivery inside Shopify's own pipeline. It fails closed: an unknown rule or a malformed record produces no discount, because a wrong discount costs money on every order.
The storefront offer card is server-rendered Liquid with no client-side price logic. It fails open: it would rather show than vanish, because a card that shows too often is visible and fixable, while a hidden one just looks broken.
On the product page
was $60.00$48.0020% off
The offer card renders the deal and its conditions in plain words from the record.
The record
One product metafield, written only by a validated action.
At checkout
$48.00
The Shopify Function prices the cart from that same record.
Because both sides read the same record, what a shopper is shown and what a shopper is charged cannot drift apart. Nothing is written by the browser, so a shopper's device can never influence the price they pay.
03 / The approach
Discounts set by feel, rules that do not exist in Shopify's editor, a storefront that disagrees with checkout, and no way to say what a promotion actually earned. xDiscount ships the rules, makes both sides read the same record, and gives you the numbers afterwards.
04 / The comparison
Shopify's native discounts cannot express the promotion you planned, coupon apps hand out codes instead of pricing products, and theme scripts put a second pricing engine in the browser. xDiscount writes one record, prices it with a Shopify Function, and shows the shopper the same thing.
| Feature | xdiscount | Native Shopify Discounts | Coupon Code Apps | Theme Script Hacks |
|---|---|---|---|---|
| Four discount types built inPercentage off, fixed amount off, buy X get Y, and free shipping, all four ready to run. | Partial | Codes only | ||
| A real rules engineMinimum and maximum item count, minimum and maximum cart subtotal, minimum and maximum stock per variant, and AND or OR logic that folds strictly top to bottom. | Limited | Basic | Hand coded | |
| Schedules in your store's timezoneA start date, an end date, or both, with inclusive bounds and the admin naming the calendar you are picking on. | Partial | |||
| One source of truthEvery discount lives in one product metafield, written only by a validated action. Nothing is written by the browser. | ||||
| Priced by a native Shopify FunctionApplied inside Shopify's own discount pipeline, on cart lines and delivery. No scripts, no cart rewriting. | Native | |||
| A storefront offer cardServer-rendered Liquid placed from the theme editor, showing the offer, its conditions in plain words, an Ends today countdown, and the gift picker. | Sometimes | Hand coded | ||
| Fails closed at checkoutAn unknown rule or a malformed record produces no discount, because a wrong discount costs money on every order. | ||||
| Analytics from signed ordersOnly Shopify's signed order webhook can move the discounted-order count or a billable counter. | Basic | Basic | ||
| Connect your own AIWorks with the assistant you already use, Claude, ChatGPT, and similar. No AI subscription to buy, no keys stored. Included on every plan, Free included. | ||||
| Usage-based pricing, no coupon codesEvery plan runs all four discount types and the full rules engine. Plans scale with active discounts and discounted orders, and paid overage stops at a cap you approve. |
Comparison based on publicly available information as of September 2026.
Today, xDiscount already ships four discount types, a rules engine with item quantity, cart value and inventory conditions, one source of truth behind the storefront and checkout, a native offer card, Connect AI, and analytics from signed orders. Next come real nested rule groups, a deeper analytics screen, and a connection to xBundle, the sibling product from the same team. One engine prices the product, the other assembles the set.
01 / Price
Percentage off clamped 0 to 100, fixed amount off taken off each item in your store currency, buy X get Y on the gift the offer card's picker adds, and free shipping on delivery.
02 / Rule
Item quantity, cart value and inventory fold strictly top to bottom today, and an inventory row always joins with AND because it can only narrow the discount. Shopify's Function input still exposes no stock, so inventory is resolved on the server before checkout, per variant, on save and once a day. Real nested rule groups with a recursive evaluator are on the roadmap.
03 / Show
The offer card renders your deal on the product page today, server rendered and with no client side price logic. On the roadmap, a connection to xBundle so the set a shopper builds and the price it carries come from the same team.
04 / Prove
Shopify's own order webhook counts every discounted order exactly today, with a consent aware pixel on product views, added to cart, checkouts started and checkouts seen. A deeper analytics screen with a full events explorer is on the roadmap.
Nested rule groups, the deeper analytics screen, and the xBundle connection are on the xDiscount roadmap. Today, xDiscount already runs the complete loop, four discount types, a rules engine with item quantity, cart value and inventory conditions, one source of truth, a native offer card, Connect AI, and analytics from signed orders, ready to install from the Shopify App Store.
The things merchants ask us most about xDiscount and how it fits into a Shopify store.