Why doesn't my order confirmation email show how much the customer saved on a sale item?
Compare-at "you saved" amounts don't automatically appear in Shopify's order confirmation email, because compare_at_price isn't part of the order record Shopify's email Liquid can see.
What's going on
A merchant runs a sale by setting a compare-at price on a product (so the storefront shows a strikethrough "was $40, now $28"), then discovers the order confirmation email the customer receives just shows the $28 charged — no strikethrough, no "you saved $12" messaging anywhere. The customer-facing excitement of the sale disappears the moment the transactional email fires.
This surprises a lot of merchants because compare-at pricing feels like it should be a single, connected feature: set it once, and it shows everywhere the price shows. In reality, Shopify treats compare-at price purely as a storefront presentation value attached to a variant. It is never written onto the order as a discount amount, and Shopify's out-of-the-box order confirmation, shipping confirmation, and refund email templates simply don't have a Liquid variable for it on individual line items.
This is different from an actual Shopify discount (a discount code or an automatic discount), which does get recorded against the order and does flow into the same emails via existing Liquid objects — original_line_price, line_price, total_discounts, and discount_applications. So the fix path depends on which mechanism was used to create the "sale" in the first place.
Why it happens
Shopify's notification templates (Settings > Notifications in admin) are Liquid templates rendered against an order/checkout object, and the line_item Liquid object they expose includes fields like price, line_price, original_line_price, discount_allocations, and properties — but not the variant's compare_at_price. That field lives on the product/variant record for storefront display only; it was never wired into the transactional email objects.
Because of that gap, any "savings" shown in an email has to come from data Shopify actually attached to the order: real discounts. A compare-at markdown, by contrast, leaves no trace on the order itself — Shopify just charges the current variant price. If a merchant wants the discrepancy reflected in email, someone has to either capture the compare-at difference at add-to-cart time (as a line item property, which the order and its emails do retain) or make the promotion an actual discount instead of a price change.
5 ways to fix it
Add the "you saved" line item property when the sale item is added to cart
Since compare_at_price isn't exposed to line items in notification Liquid, the reliable fix is to capture the saving at the moment the item enters the cart. Add a small snippet to your product template (or a cart/AJAX API line item property) that writes a hidden property such as _compare_at_price or _you_saved whenever variant.compare_at_price is greater than variant.price, calculated as compare_at_price minus price. Line item properties ARE available in notification Liquid as line.properties, so your order confirmation template can then read {{ line.properties['_you_saved'] }} and print it next to that line item. This is the only approach that reflects the actual markdown the customer saw on the storefront, and it survives price changes made after the order (since it's a snapshot).
Edit the order confirmation template to show discount-based savings you already have
Go to Settings > Notifications in admin, open the "Order confirmation" template, and use the standard order Liquid objects: {{ line.original_line_price }} minus {{ line.line_price }} gives the amount knocked off by discount codes or automatic discounts on that line, and order.total_discounts / order.discount_applications give order-level totals. This is fully supported, native, and free, but it only reflects Shopify discounts, not a variant's compare_at_price markdown, so it won't fix the exact symptom being reported unless the "sale" is actually run as a discount rather than a compare-at price change.
Consider running sales as automatic discounts instead of only compare-at pricing
If showing savings in email matters to the business, switch the promotion mechanism: an automatic discount (Discounts > Create discount > Automatic) reduces original_line_price to line_price on the order and shows up natively in confirmation, shipping, and refund emails without any template edits. Compare-at price remains a purely visual/storefront signal in Shopify and was never designed to flow into transactional emails, so this sidesteps the gap entirely for future sales.
Always test with a real order placed through checkout, not just template Preview
The Notifications editor's Preview button renders the template against a synthetic sample order and can silently omit or fake data that doesn't exist on that sample, including custom line item properties, giving false confidence that a fix works. After editing the Liquid, place an actual test order (or use a very small real transaction) with an item that has both a compare-at markdown and, if applicable, a discount, then check the email that actually lands in an inbox before trusting the change.
If you don't want to maintain custom Liquid long-term
Recognize this is genuinely template-customization work, not a settings toggle, so budget for a one-time theme/notification edit rather than searching for a hidden setting. If ongoing upkeep across many product/collection sales is a burden, a narrowly-scoped email customization app or a developer doing the line-item-property snippet once is usually less maintenance than repeatedly hand-editing Liquid for each new promotion.
Bottom line
There's no admin toggle that adds compare-at savings to order emails, and that's by design: compare_at_price is a storefront display field, not part of the transaction record, so Shopify's notification Liquid never exposed it on line items. The durable fix is capturing the saving as a line item property when the item is added to cart (or switching that sale to an automatic discount) and then referencing it in a customized order confirmation template — tested against a real order, not just the template preview. No app is required to solve this; only reach for one if the ongoing template maintenance across many sales becomes more than you want to own yourself.
Browse the rest of the problem library, run a free storefront scan to catch issues like this automatically, or email us and we'll work out a custom solution for it.