Sales reports
From gross to net to total, by product, variant, vendor, channel, location or time — every sales report here aggregates across all your connected stores in one currency, and the core reports are verified against Shopify's own analytics statistic by statistic.
26 built-in reports — every one opens in the report editor, runs across all connected stores in one currency, and can be saved, exported or scheduled. The query under each report is the whole report — readable, and yours to change.
Total sales over time
Gross sales, discounts, sales reversals, net sales, shipping, duties, additional fees and taxes rolled up to total sales per day.
FROM sales
SHOW orders, gross_sales, discounts, sales_reversals, net_sales, shipping_charges, duties, additional_fees, taxes, total_sales
SINCE startOfDay(-30d) UNTIL today
TIMESERIES day WITH TOTALS, PERCENT_CHANGE
COMPARE TO previous_period
ORDER BY timeseries ASC
VISUALIZE total_sales TYPE line
Gross sales over time
Gross sales per day — product value before discounts, reversals, taxes and shipping.
FROM sales
SHOW gross_sales
SINCE startOfDay(-30d) UNTIL today
TIMESERIES day WITH TOTALS
ORDER BY timeseries ASC
LIMIT 1000
VISUALIZE gross_sales TYPE line
Net sales over time
Net sales per day — gross sales minus discounts and sales reversals.
FROM sales
SHOW net_sales
SINCE startOfDay(-30d) UNTIL today
TIMESERIES day WITH TOTALS, PERCENT_CHANGE
COMPARE TO previous_period
ORDER BY timeseries ASC
LIMIT 1000
VISUALIZE net_sales TYPE line
Sales reversals over time
Money returned to customers per day — returns, refunds and order-edit reversals, shown as negative values.
FROM sales
SHOW sales_reversals
SINCE startOfDay(-30d) UNTIL today
TIMESERIES day WITH TOTALS, PERCENT_CHANGE
COMPARE TO previous_period
ORDER BY timeseries ASC
LIMIT 1000
VISUALIZE sales_reversals TYPE line
Average order quantity over time
Average number of items per order, tracked daily.
FROM sales
SHOW quantity_ordered_per_order
SINCE startOfDay(-30d) UNTIL today
TIMESERIES day WITH TOTALS, PERCENT_CHANGE
COMPARE TO previous_period
ORDER BY timeseries ASC
LIMIT 1000
VISUALIZE quantity_ordered_per_order TYPE line
Top products by units sold
Your best-selling products by units sold, rather than by revenue.
FROM sales
SHOW net_quantity, total_sales
WHERE sale_item_type = 'product'
SINCE startOfDay(-30d) UNTIL today
GROUP BY product_title WITH TOTALS
ORDER BY net_quantity DESC
LIMIT 1000
VISUALIZE net_quantity TYPE horizontal_bar
Total sales by sales channel
The full sales breakdown per sales channel — where your revenue actually comes from.
FROM sales
SHOW orders, gross_sales, discounts, sales_reversals, net_sales, shipping_charges, taxes, total_sales
WHERE sales_channel IS NOT NULL
SINCE startOfDay(-30d) UNTIL today
GROUP BY sales_channel WITH TOTALS
ORDER BY total_sales DESC
LIMIT 1000
VISUALIZE total_sales TYPE donut
Gross sales by sales channel
Gross sales per sales channel — pre-discount revenue by where it was sold.
FROM sales
SHOW gross_sales
WHERE sales_channel IS NOT NULL
SINCE startOfDay(-30d) UNTIL today
GROUP BY sales_channel WITH TOTALS
ORDER BY gross_sales DESC
LIMIT 1000
VISUALIZE gross_sales TYPE horizontal_bar
Net sales by sales channel
Net sales per sales channel — post-discount, post-reversal revenue by where it was sold.
FROM sales
SHOW net_sales
WHERE sales_channel IS NOT NULL
SINCE startOfDay(-30d) UNTIL today
GROUP BY sales_channel WITH TOTALS
ORDER BY net_sales DESC
LIMIT 1000
VISUALIZE net_sales TYPE horizontal_bar
Total sales by billing location
The full sales breakdown per billing country.
FROM sales
SHOW orders, gross_sales, discounts, sales_reversals, net_sales, shipping_charges, taxes, total_sales
SINCE startOfDay(-30d) UNTIL today
GROUP BY billing_country WITH TOTALS
ORDER BY total_sales DESC
LIMIT 1000
VISUALIZE total_sales TYPE donut
Total sales by currency
Sales split by the currency your customers actually checked out in.
FROM sales
SHOW orders, total_sales
WHERE order_checkout_currency IS NOT NULL
GROUP BY order_checkout_currency
SINCE startOfDay(-30d) UNTIL today
ORDER BY total_sales DESC
LIMIT 1000
VISUALIZE total_sales TYPE donut
Sales by customer name
Your top customers of the last week by total sales.
FROM sales
SHOW orders, gross_sales, net_sales, total_sales
WHERE customer_display_name IS NOT NULL
SINCE startOfDay(-7d) UNTIL today
GROUP BY customer_display_name, customer_email WITH TOTALS, PERCENT_CHANGE
ORDER BY total_sales DESC
LIMIT 1000
VISUALIZE total_sales TYPE horizontal_bar
New vs returning customers over time
Customer counts, orders and total sales per month, split between new and returning customers over the last year.
FROM sales
SHOW customers, orders, total_sales
WHERE new_or_returning_customer IS NOT NULL AND sale_item_type = 'product' AND order_or_sales_reversal = 'order'
SINCE startOfDay(-365d) UNTIL today
GROUP BY new_or_returning_customer, month WITH TOTALS, GROUP_TOTALS, PERCENT_CHANGE
TIMESERIES month
COMPARE TO previous_period
ORDER BY month ASC, new_or_returning_customer ASC
LIMIT 1000
VISUALIZE customers TYPE stacked_area
Top product variants by units sold
Your best-selling variants by units sold, product and SKU side by side.
FROM sales
SHOW net_quantity
WHERE sale_item_type = 'product'
SINCE startOfDay(-30d) UNTIL today
GROUP BY product_title, sku WITH TOTALS
ORDER BY net_quantity DESC
LIMIT 1000
VISUALIZE net_quantity TYPE horizontal_bar
Items sold by referrer
Units sold by the traffic source that referred the order — search, social, direct.
FROM sales
SHOW net_quantity
SINCE startOfDay(-30d) UNTIL today
GROUP BY order_referrer_source WITH TOTALS
ORDER BY net_quantity DESC
LIMIT 1000
VISUALIZE net_quantity TYPE horizontal_bar
Total sales by referrer
Sales split by the source and site that referred each order.
FROM sales
SHOW orders, total_sales, gross_sales, net_sales
SINCE startOfDay(-30d) UNTIL today
GROUP BY order_referrer_source, order_referrer_name WITH TOTALS
ORDER BY total_sales DESC
LIMIT 1000
VISUALIZE total_sales TYPE horizontal_bar
Total sales by referrer name
Sales by the site that referred each order, with subdomains and URL variants folded into one row per referrer.
FROM sales
SHOW orders, total_sales, gross_sales, net_sales
SINCE startOfDay(-30d) UNTIL today
GROUP BY order_referrer_name_normalized WITH TOTALS
ORDER BY total_sales DESC
LIMIT 1000
VISUALIZE total_sales TYPE horizontal_bar
Total sales by social referrer
Sales from social referrers, split by the site each order came from.
FROM sales
SHOW total_sales
WHERE order_referrer_source_class = 'social'
SINCE startOfDay(-30d) UNTIL today
GROUP BY order_referrer_name_normalized WITH TOTALS
ORDER BY total_sales DESC
LIMIT 1000
VISUALIZE total_sales TYPE horizontal_bar
Weekly sales patterns
Net sales by hour of day and day of week over the last 30 days — when your store actually sells.
FROM sales
SHOW net_sales
SINCE startOfDay(-30d) UNTIL yesterday
GROUP BY hour_of_day, day_of_week WITH TOTALS, GROUP_TOTALS
ORDER BY hour_of_day ASC, day_of_week ASC
VISUALIZE net_sales TYPE heatmap
Total sales by product
Your best-selling products by total sales, with quantities and the full sales breakdown.
FROM sales
SHOW net_quantity, gross_sales, discounts, sales_reversals, net_sales, taxes, total_sales
WHERE product_title IS NOT NULL AND product_id IS NOT NULL
SINCE startOfDay(-30d) UNTIL today
GROUP BY product_title, vendor, product_type WITH TOTALS
ORDER BY total_sales DESC
LIMIT 1000
VISUALIZE total_sales TYPE horizontal_bar
Total sales by product variant
Your best-selling variants by total sales — product, variant and SKU side by side with the full breakdown.
FROM sales
SHOW net_quantity, gross_sales, discounts, sales_reversals, net_sales, taxes, total_sales
WHERE sale_item_type = 'product'
SINCE startOfDay(-30d) UNTIL today
GROUP BY product_title, variant_title, sku WITH TOTALS
ORDER BY total_sales DESC
LIMIT 1000
VISUALIZE total_sales TYPE horizontal_bar
Total sales by vendor
Sales per product vendor — which brands or suppliers earn the most.
FROM sales
SHOW net_quantity, gross_sales, discounts, sales_reversals, net_sales, taxes, total_sales
WHERE vendor IS NOT NULL
SINCE startOfDay(-30d) UNTIL today
GROUP BY vendor WITH TOTALS
ORDER BY total_sales DESC
LIMIT 1000
VISUALIZE total_sales TYPE bar
Average order value over time
How much customers spend per order, tracked daily.
FROM sales
SHOW gross_sales, discounts, orders, average_order_value
WHERE reason != 'ORDER_EDIT'
SINCE startOfDay(-30d) UNTIL today
TIMESERIES day WITH TOTALS, PERCENT_CHANGE
COMPARE TO previous_period
ORDER BY timeseries ASC
LIMIT 1000
VISUALIZE average_order_value TYPE line
Total sales reversals over time
Total value reversed per day — returns, refunds and cancellations including their taxes and shipping.
FROM sales
SHOW total_sales_reversals
SINCE startOfDay(-30d) UNTIL today
TIMESERIES day WITH TOTALS, PERCENT_CHANGE
COMPARE TO previous_period
ORDER BY timeseries ASC
LIMIT 1000
VISUALIZE total_sales_reversals TYPE line
New vs returning customer sales
Sales, orders and customers per month, split between new and returning customers over the last year.
FROM sales
SHOW customers, orders, total_sales
WHERE new_or_returning_customer IS NOT NULL
SINCE startOfDay(-365d) UNTIL today
GROUP BY new_or_returning_customer, month WITH TOTALS, GROUP_TOTALS, PERCENT_CHANGE
TIMESERIES month
COMPARE TO previous_period
ORDER BY month ASC, new_or_returning_customer ASC
LIMIT 1000
VISUALIZE total_sales TYPE stacked_area
Sales by discount codes
Sales broken down by the discount applied, with what each discount took off.
FROM sales_discounts
SHOW applied_discounts, discounted_orders, gross_sales, sales_reversals, net_sales, shipping_charges, taxes, total_sales
WHERE discount_name IS NOT NULL
SINCE startOfDay(-30d) UNTIL today
GROUP BY discount_name, discount_method, discount_type, discount_class WITH TOTALS
ORDER BY total_sales DESC
LIMIT 1000
VISUALIZE total_sales TYPE horizontal_bar
FAQ
Do these sales reports cover all my Shopify stores? Yes — every report on this page aggregates across all connected stores and converts to one currency. Group by store inside any of them for the per-store split.
Can I change what a report shows? Yes — every report opens in the report editor, where metrics, groupings, filters, date ranges and the chart are all editable, and your version saves to your own library.
Can I get these reports automatically? Yes — any report can be downloaded as CSV or Excel, or scheduled to arrive by email or FTP on the cadence you choose.