Shopify discounts report what does it show for Plus stores
Table of Contents
- Introduction
- The Two Pillars of Discount Reporting: Sales vs. Finance
- Decoding Key Terms: What the Columns Actually Mean
- How Shopify Functions Impact Discount Reporting
- Practical Scenarios: Analyzing Discount Performance
- Platform Limits and Constraints
- Choosing the Right Tool: A Nextools Decision Tree
- Advanced Reporting: Multi-Currency and Shopify Markets
- The Nextools Playbook for Discount Optimization
- Why Technical Accuracy Matters in Reporting
- Nextools Shopify App Suite (Quick Links)
- Conclusion
- FAQ
Introduction
As Shopify Plus merchants navigate the sunsetting of Shopify Scripts in favor of Shopify Functions, a critical question frequently arises during the migration process: shopify discounts report what does it show, and how can we trust the data when moving to new extensibility models? The transition from Ruby-based scripts to WebAssembly-based Functions is not just a technical shift; it is a fundamental change in how discount logic is executed and reported within the Shopify ecosystem. At Nextools, we specialize in this transition, providing the Nextools Shopify App Suite to help developers and high-volume brands implement complex checkout logic without sacrificing reporting accuracy.
This post is designed for Shopify Plus merchants, e-commerce agencies, and technical leads who need to audit their promotional performance. Whether you are troubleshooting why a specific discount code isn’t reflecting the expected net sales or you are planning a migration from Scripts to Functions using tools like SupaEasy, understanding the “what” and “how” of Shopify’s reporting is vital.
At Nextools, we approach every reporting challenge through our structured playbook: first, we clarify the specific goal and constraints (such as Shopify Markets or existing discount stacks); second, we confirm platform limits; third, we choose the simplest durable approach (often a Functions-first strategy); fourth, we implement safely in staging environments; and finally, we measure the impact on key metrics like AOV and checkout completion. This guide will walk you through the data structures of Shopify’s discount reports so you can make informed decisions about your promotional strategy.
The Two Pillars of Discount Reporting: Sales vs. Finance
When investigating what the Shopify discounts report shows, it is essential to recognize that Shopify splits this data into two distinct categories: Sales reports and Finance reports. Using the wrong report for the wrong stakeholder—such as giving a campaign-focused sales report to a bookkeeper—often leads to reconciliation headaches.
1. Sales by Discount Code Report
Located under Analytics > Reports > Sales, this report is the primary tool for marketing teams. Its purpose is to show which promotions are driving customer behavior. It groups your sales data by the name of the discount (the “title” for automatic discounts or the “code” for manual ones).
Key metrics shown in this report include:
- Discount Name & Code: The identifier for the promotion.
- Discount Type: Whether it was a percentage, fixed amount, or free shipping.
- Orders: The number of transactions where this specific code was applied.
- Gross Sales: The total price of products before any deductions.
- Discounts: The total dollar value reduction applied to the orders.
2. Discounts by Order Report
Found under Analytics > Reports > Finances, this report is transaction-centric rather than campaign-centric. It is designed to show how discounts impact the bottom line of specific orders. It distinguishes between line-item discounts (applied to a specific product) and order-level discounts (applied to the entire cart).
For developers using the Nextools Shopify App Suite, this distinction is critical. If you are using SupaEasy to create a Function that discounts a specific “companion product,” that discount will appear as a line-item adjustment, whereas a general “SUMMER20” code might show as an order-level adjustment.
Decoding Key Terms: What the Columns Actually Mean
Understanding the terminology is half the battle. Shopify recently updated several terms to improve clarity, particularly regarding returns and reversals.
Gross Sales vs. Net Sales
The formula is straightforward but often misunderstood:
Net Sales = Gross Sales - Discounts - Sales Reversals
- Gross Sales: This includes product price multiplied by quantity. Crucially, it includes pending, canceled, and unpaid orders. Only test orders and deleted orders are excluded.
- Discounts: This is the sum of line-item discounts and the order-level discount share. If a discount is applied to the entire order, Shopify proportionally applies that discount across all products for reporting purposes.
The Shift to “Sales Reversals”
In recent updates, Shopify deprecated the term “Returns” in many reports, replacing it with Sales Reversals. This change reflects a broader scope. A “Sales Reversal” includes:
- Full and partial refunds.
- Order cancellations and edits.
- Adjustments to shipping, taxes, and fees.
- “Goodwill” refunds where no physical product is returned.
When you ask “shopify discounts report what does it show,” you must account for these reversals. If a customer uses a 20% discount code but then returns the item, the “Sales by Discount Code” report will show a negative value (a reversal) on the date the return was processed, not the date the original sale was made.
How Shopify Functions Impact Discount Reporting
For Plus merchants migrating from Shopify Scripts to Shopify Functions, reporting is a major concern. Scripts often felt like a “black box” because they could modify prices in ways that sometimes made reporting inconsistent. Functions, however, are built into the Shopify core logic.
Predictable Attribution
Because Shopify Functions (and apps that generate them, like SupaEasy) interact with the API in a standardized way, the attribution to the “Sales by Discount Code” report is more reliable. When a Function-based discount is applied, Shopify recognizes it as a native discount object.
The Problem of Stacking and Overlap
A common “gotcha” in Shopify reporting occurs when discounts are combinable. Shopify allows merchants to set whether a discount can stack with others.
Caution: If an order uses three different combinable discounts, that single order will appear three times in the “Sales by Discount Code” report—once for each code. This can lead to an inflated “Order Count” if you are simply summing the rows in a CSV export without de-duplicating by Order ID.
Practical Scenarios: Analyzing Discount Performance
To truly understand what the reports show, let’s look at how a merchant might use this data in the real world.
Scenario A: The Influencer Campaign Audit
A merchant issues five different codes to five influencers. By looking at the Sales by Discount Code report, they can see not just who drove the most orders, but who drove the highest Net Sales. If one influencer has a high “Reversed Quantity” (returns), their effective ROI is lower than another influencer with fewer but more “sticky” sales.
Scenario B: Tiered Promotion Strategy
A brand uses Multiscount to offer “Buy 2 Get 10%, Buy 3 Get 20%.” These are typically implemented as automatic discounts. In the report, the “Discount Name” will show the name of the automatic discount created in the app. The merchant can see which tier (the 10% vs. the 20%) is being triggered most frequently.
Scenario C: Protecting Margins with Validation
If a merchant notices a specific discount code is being abused (e.g., used on products that are already heavily marked down), they might use Cart Block to validate the checkout. While Cart Block doesn’t “show” in the discount report as a line item, its impact is seen in the reduction of “Discounts” as a total percentage of “Gross Sales,” effectively protecting the margin.
Platform Limits and Constraints
Before diving into reporting, you must understand where the platform hits its boundaries.
- Shopify Plan Requirements: Detailed “Sales by Discount” reports are typically available on the Shopify plan or higher. Basic/Starter plans have limited access to these specific analytics.
- Timing Delays: Data in these reports is generally up-to-date within one minute, but during high-traffic events like Black Friday, there can be slight processing lags.
- Deleted Orders: If you delete an order, its data is purged from the sales reports. This is different from “Canceled” orders, which remain in the reports.
- Tax and Shipping: Discounts are applied before taxes. If a discount is a “Free Shipping” type, it will reflect in the “Shipping” column of the finance reports, not necessarily the “Discounts” column of the sales report.
Choosing the Right Tool: A Nextools Decision Tree
If your native Shopify reports show that your discount strategy is messy or unprofitable, you may need better logic. Here is how to choose the right app from our Shopify App Suite:
- Need to migrate complex Ruby Scripts to Functions? Use SupaEasy. It includes a script migrator and AI-assisted function generation.
- Need tiered or stackable “Volume” discounts? Use Multiscount to create clean, reported-friendly tiers.
- Need to auto-add a gift based on a discount trigger? Use AutoCart.
- Need to block certain discounts for specific customers or regions? Use Cart Block.
- Need to hide payment methods when a specific discount is used? Use HidePay.
Advanced Reporting: Multi-Currency and Shopify Markets
For global brands, “shopify discounts report what does it show” becomes even more complex. In a multi-currency setup, Shopify reports convert all values into the “Store Currency” based on the exchange rate at the time of the transaction.
Currency Conversion Logic
If a customer in the UK uses a £10 discount, and your store currency is USD, the report will show the USD equivalent of that £10. This is important for financial reconciliation. However, the “Discount Code” field remains the same, allowing you to track the performance of a global campaign across all regions.
Duties and International Taxes
Duties do not currently display on the “Sales by Discount Code” report. They appear in the “United States Sales Tax Report” or general “Taxes” finance reports. When analyzing the success of an international discount campaign, ensure you are looking at Net Sales, as this accounts for the deductions without being obscured by tax/duty pass-throughs.
The Nextools Playbook for Discount Optimization
We believe that data is only useful if it leads to action. Here is our engineering-minded workflow for managing discounts:
- Clarify the Goal: Are you trying to clear inventory or acquire new customers? This dictates whether you look at “Quantity Sold” or “New vs. Returning Customer” filters in your reports.
- Confirm Platform Limits: Check if your current plan supports the “Sales by Discount Code” report. If not, consider a third-party reporting tool or upgrading your plan.
- Choose the Simplest Durable Approach: Don’t use a custom app if a native Shopify Function can do it. Use SupaEasy to build your logic on Shopify’s infrastructure for maximum stability.
- Implement Safely: Always test new discount logic in a development or sandbox store. Verify that the “Sales by Discount Code” report populates correctly with test data before going live.
- Measure and Iterate: After 30 days, review the “Discounts by Order” report. Are customers stacking codes in a way that makes the order unprofitable? If so, adjust your logic using Cart Block to prevent specific combinations.
Why Technical Accuracy Matters in Reporting
A common mistake for agencies is overlooking how “Compare-at prices” interact with reports.
Note: Discounts are created using discount codes or automatic discounts, not the compare-at price. If you reduce a product price from $100 to $80 using the “Compare-at” field, Shopify considers the $80 as the “Gross Sale” price. No “Discount” will show in your reports. To track the effectiveness of a sale, you should use a proper discount code or an automatic discount.
This distinction is why technical writers and developers prefer tools that leverage Shopify Functions. By using the Nextools App Suite, you ensure that every price adjustment is treated as a first-class “Discount” object, making your analytics far more actionable.
Nextools Shopify App Suite (Quick Links)
Our tools are built to enhance the standard Shopify experience, offering the flexibility of custom code with the stability of a managed app.
- SupaEasy — Shopify Functions generator, Script migration, and AI-assisted checkout logic.
- SupaElements — Advanced Checkout, Thank You, and Order Status page customization.
- HidePay — Rules-based hiding, sorting, and renaming of payment methods.
- HideShip — Conditional shipping rates and visibility management.
- Multiscount — Robust stackable and tiered discount engine.
- Cart Block — Checkout validation and fraud prevention tool.
- AutoCart — Gift with purchase and automatic cart item management.
- ShipKit — Dynamic, rule-based shipping rate creator.
- Hook2Flow — Seamlessly connect external webhooks to Shopify Flow.
- AttributePro — Advanced cart attributes and conditional line-item properties.
- Formify — Drag-and-drop custom checkout forms for Shopify Plus.
- CartLingo — AI-powered checkout translation for global stores.
- NoWaste — Discount and promote expiring or refurbished items.
- Hurry Cart — Urgency-driven countdown timers for the cart.
- Fatturify — Automated invoicing for the Italian “Fatture in Cloud” system.
- PosteTrack — Tracking and logistics integration for Poste Italiane.
Conclusion
The answer to shopify discounts report what does it show is nuanced: it shows a comprehensive view of campaign performance (Sales reports) and financial health (Finance reports), provided you understand the underlying logic of sales reversals and proportional attribution. For Shopify Plus merchants, the move toward Checkout Extensibility and Shopify Functions represents an opportunity to clean up reporting by moving away from “brittle” theme hacks and custom Ruby scripts.
As you optimize your store, remember our checklist:
- Use Sales by Discount Code for marketing ROI.
- Use Discounts by Order for accounting and reversal audits.
- Account for “Proportional Distribution” on order-level discounts.
- Leverage SupaEasy to ensure your custom discounts are reported accurately within the native Shopify framework.
- Monitor “Sales Reversals” to understand the true cost of your promotions over time.
By following the Nextools Playbook—clarifying constraints, choosing durable Functions-first solutions, and measuring impact—you can turn your discount strategy into a predictable engine for growth. Explore the Nextools Shopify App Suite today to see how we can help you customize your checkout while maintaining pristine data.
FAQ
Does the Shopify discount report include “Compare-at” prices?
No. Shopify reports only track “Discounts” created through discount codes or automatic discounts. If you lower a price via the “Compare-at price” field in the product admin, the reduced price is simply treated as the new gross price, and the $0 discount value will be reflected in the reports.
Why does my discount report show more orders than my actual total?
This usually happens because of combinable discounts. If an order uses two stackable codes (e.g., “FREESHIP” and “SUMMER10”), Shopify lists that order ID under both codes in the “Sales by Discount Code” report. To find your unique order count, you must de-duplicate the data by Order ID in a spreadsheet tool.
Can I see which products were discounted in the “Sales by Discount Code” report?
The default view groups data by the discount code itself. To see specific product performance relative to a discount, you typically need to use the “Sales by Product” report and apply a filter for the discount code, or use an advanced reporting app that allows for cross-dimensional filtering.
How do Shopify Functions (like those in SupaEasy) affect my reports?
Discounts created via Shopify Functions are treated as native discount objects. This means they are fully integrated into Shopify’s standard reporting suite, showing up accurately in both Sales and Finance reports. This is a significant advantage over “draft order” hacks or custom checkout workarounds, which often fail to attribute sales correctly. At Nextools, we always recommend a Functions-first approach for this reason.