xDiscount is on the Shopify App Store. Founding merchants lock in lifetime founder pricing.

Discount engine · for Shopify

You set the price. xDiscount makes sure checkout honours it.

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.

Free to start14-day trial on paid plansNative Shopify checkout
xDiscount set thisfrom one record
🧴Serum$28.00
🏷️20% offPercentage
🛒Cart over $80Rule
priced at checkout
Checkout price
$22.40$28.00
Save 20%
4 discount types
all built in, all shipped
One source of truth
storefront and checkout agree
Signed orders only
measured in your own analytics

By the numbers

4

discount types, all shipped

3

rule conditions: item quantity, cart value, and inventory

3

active discounts free on the $0 plan

50

discounted orders a month included on the $0 plan

01 / The problem

Your promotions are costing more than they earn

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 this
  • 01

    The rules you need do not exist

    Shopify'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.

  • 02

    The storefront and checkout disagree

    A card promises one price and checkout charges another, because two different pieces of code decided it. The shopper notices first.

  • 03

    Discounts quietly eat your margin

    No bounds, no preview, no priority, and a promotion meant to grow revenue hands away the profit instead.

  • 04

    Dated promotions run all year

    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.

  • 05

    Offers never reach the product page

    Fighting theme code to show a price that is already live at checkout keeps the offer away from the page where people decide.

  • 06

    You cannot prove what a promotion did

    Without a funnel and signed order data, every discount is a guess you paid for.

The four types

Four discount types. Four worked prices.

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

1 of 4, Percentage off

Percentage off

A percent off the products you target, held between 0 and 100.

Product
Stoneware mug$50.00 x 2
Rule
20% off, autumn collection

Before

$100.00

At checkout

$80.00

Save $20.00

The same percentage in the admin, on the offer card and at checkout, so the promise and the charge cannot drift apart.

02 / What it does

Every discount you need, honoured at checkout.

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.

01

Four discount types, all shipped

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.

02

A rules engine, not a coupon field

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.

03

Connect the AI you already use

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.

04

Draft first, enforced in the backend

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.

05

No AI subscription to buy

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.

06

A native storefront offer card

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.

07

Priced by Shopify, at checkout

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.

08

Analytics from signed orders

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

One record. Two readers. No drift.

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.

Written once by a validated action, read by checkout and by the product page

Select a step to trace it through the diagram

  1. 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.

  2. 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.

  3. 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.

  4. 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

Stop discounting on instinct. Price every promotion on purpose.

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.

The old way: discounting blind

  • Picking a percentage by feel, with no bounds and no preview of what it hands away
  • Rewriting the promotion you planned because the rules you need do not exist in the native editor
  • Watching a product page promise one price while checkout quietly charges another
  • Setting a start and end date that nothing actually enforces, then finding the sale still running in March
  • Fighting theme code just to show an offer that is already live at checkout
  • Closing a promotion with no idea whether it earned anything or just gave margin away

With xDiscount

  • Four discount types and a rules engine that expresses the promotion you actually planned
  • One record per discount, written by a validated action, read by both the offer card and checkout
  • Schedules evaluated in your store's timezone, with inclusive bounds and a priority that decides every line
  • A server-rendered offer card placed from the theme editor, in English and French, without touching code
  • A native Shopify Function that prices cart lines and delivery, and fails closed rather than guessing
  • Analytics from Shopify-signed orders, so what you report is what actually happened

04 / The comparison

xDiscount vs native Shopify discounts

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.

FeaturexdiscountNative Shopify DiscountsCoupon Code AppsTheme Script Hacks
Four discount types built inPercentage off, fixed amount off, buy X get Y, and free shipping, all four ready to run.PartialCodes 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.LimitedBasicHand 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.SometimesHand 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.BasicBasic
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.

ON THE ROADMAPComing soon

Next, the engine that prices the product meets the one that builds the set.

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

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.

02 / Rule

Rules today, nested groups next

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

One offer card, then one catalog story

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

Analytics today, an events explorer next

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.

Frequently asked questions

The things merchants ask us most about xDiscount and how it fits into a Shopify store.