Comparison

NetNet vs Shopify Analytics

Shopify's built-in reporting, included with your plan

Shopify's profit reports calculate gross profit as net sales minus the cost per item you entered, and stop there. They do not see ad spend, carrier invoices, payment fees or overheads, and the cost field is static, so historical reports reflect today's cost rather than the cost at the time of sale. NetNet continues past gross profit to contribution margin and net profit.

Atul Tirkey, Co-founder, NetNet

Written by Atul Tirkey · Co-founder, NetNet

Updated September 6, 2026 · 3 min read

Shopify does report profit, which surprises people who have been told it does not. What it reports is gross profit, and the distinction between that and profit is the entire subject of this page.

What Shopify’s profit reports actually give you

Shopify provides several profit reports: gross profit by product, by variant, by point-of-sale location, average profit margin by market, and profit margin by order.

All of them run on one input — the cost per item you enter against each product variant — and one formula: net sales minus cost, divided by net sales.

That is a real and useful number. It tells you whether your pricing and sourcing work together, and it is the first thing anyone should look at. If gross margin is thin, nothing further down the ladder can rescue the business, and Shopify will show you that for free.

Two properties of the report are worth knowing before relying on it.

It only covers products that had a cost recorded at the time of sale. A variant with no cost entered does not appear as a warning — it is simply missing from the calculation. A catalogue with gaps produces a confident number computed on a subset.

The cost field is static. Shopify holds one current cost per variant rather than a history, and its own documentation notes that profit report data is therefore relevant to a specific point in time. Update a supplier price today and last quarter’s margin changes to match.

Where it stops

The reports know what you paid for the item because you typed it in. They do not know what it cost to sell or deliver it.

Absent from any figure Shopify produces: advertising, which lives in Meta and Google; the shipping label you actually paid, because Shopify records shipping charged rather than the carrier invoice; payment processing fees, which are deducted inside payouts; packaging and fulfilment; chargebacks; and overheads.

This is not a shortcoming so much as an accurate statement of what a commerce platform can see from where it stands. It only becomes a problem when gross profit gets read as profit — which is the ordinary failure mode, because the report is titled “profit” and nothing on the screen says how much is still to come out.

When the gap actually matters

The question is not whether Shopify’s reporting is incomplete. It is whether the missing costs are big enough to change what you would do.

For a store with little advertising, predictable domestic shipping and a stable catalogue, the gap between gross profit and net profit is fairly constant. You can hold it in your head as a rough percentage and be right most of the time, and a separate tool buys precision you were not going to act on.

For a store buying traffic, the gap is not constant. It moves with acquisition cost, discount depth, product mix, parcel weight and refund rate — all of which change monthly and none of which appear in a gross margin figure. That is the situation where reading gross profit as profit leads to spending decisions that look fine for a quarter and are not.

The practical test: write down what you believe your net margin is, then calculate it once by hand from carrier invoices, payout statements and ad billing. If the two agree closely, the built-in reports are serving you. If they do not, the difference is what you are currently deciding without.

What NetNet adds, specifically

Three things, and it is worth being precise rather than expansive about them.

The layers below gross profit. Contribution margin, after shipping, fees and packaging. Net profit, after advertising and fixed costs. These are the numbers that set an acquisition ceiling and tell you whether the business works.

Costs Shopify cannot see, joined back to orders: carrier invoices, gateway fees including the tax charged on them, ad spend from Meta and Google, and your own custom cost heads.

Cost history. Supplier prices carry effective dates, so a change today does not silently recost last quarter.

What it does not add is a better gross margin figure. On that specific number, Shopify’s report and ours should agree — and if they do not, one of us has a data problem worth finding.

What Shopify Analytics does better

It is already there, it costs nothing extra, and for gross margin by product or variant it is genuinely sufficient. No integration, no setup, no second login, and the numbers reconcile with the admin because they come from the same place. A store that buys little traffic and ships predictably may never need more than this, and should get everything it can out of it before paying for anything.

What NetNet does better

Everything below gross profit, which is where the decisions actually are. Contribution margin after shipping, fees and packaging; net profit after advertising and fixed costs. The costs Shopify structurally cannot see, joined back to orders: carrier invoices rather than shipping charged, gateway fees including the tax on them, ad spend from Meta and Google. And cost history — supplier prices carry effective dates, so today's price change does not silently recost last quarter.

Capability comparison

NetNet compared with Shopify Analytics, capability by capability
Capability NetNet Shopify Analytics
Profit layers Gross profit, contribution margin, marketing profit, net profit Gross profit only
Gross profit calculation Shopify's formula is (net sales − cost) ÷ net sales Net sales less landed cost of goods Net sales less cost per item
Historical cost accuracy Shopify notes profit reports reflect a point in time Costs carry effective dates Cost per item is static
Ad spend Synced from Meta and Google Not included
Shipping cost paid to carriers Shopify records shipping charged, not shipping paid Rules plus carrier integrations Not included
Payment and gateway fees Per order, with rate and fee tax Not in profit reports
Refund cost attribution Attributed to the original order Adjusts margin in reports
Per-order profit drill-down Full cost waterfall per order Profit margin by order report
Product and variant margin Yes, with fulfilment costs allocated Yes, at gross margin
Custom and overhead costs Configurable cost heads Not included
Reporting availability All paid plans Varies by Shopify plan
Cost From $15/month Included with Shopify

Pricing

Published pricing for NetNet and Shopify Analytics
Tier NetNet Shopify Analytics
Entry $15/month, up to $5K monthly revenue ($49 at $25K) Included with your Shopify plan
Mid $99/month, up to $100K monthly revenue Included
Upper $199/month, up to $250K monthly revenue Included
Trial 14 days, full access Not applicable

Shopify's reports cost nothing beyond your existing plan, though report availability differs across Shopify tiers. The honest comparison is not price against price — it is whether the gap between gross profit and net profit is costing you more than the subscription.

Which one fits

Choose Shopify Analytics if

  • You want to know gross margin by product and nothing further down the ladder
  • Your advertising spend is small enough that it does not change the answer
  • You are early enough that another subscription is harder to justify than a spreadsheet

Choose NetNet if

  • Advertising is a material cost and you need to know profit after it
  • Shipping costs vary enough per order that averages mislead you
  • You need contribution margin to set an acquisition ceiling
  • Supplier costs change and historical reports need to reflect what you actually paid

Frequently asked questions

Does Shopify show net profit?

No. Shopify's profit reports calculate gross profit from the cost per item you enter against each variant. They have no visibility into advertising, carrier invoices, payment processing or overheads, so they cannot produce a net profit figure.

How does Shopify calculate profit?

As net sales minus cost, expressed as a margin percentage. It only reports on products that had a cost recorded at the time they were sold, so any variant missing a cost is simply absent from the calculation rather than flagged.

Why do my Shopify profit reports change for past periods?

Because the cost per item field holds a single current value rather than a history. Update a supplier cost today and reports covering earlier periods recalculate using the new figure, which is why Shopify describes the data as relevant to a point in time.

Do I need a profit app if I already have Shopify reports?

Only if the costs Shopify cannot see are large enough to change your decisions. For a store spending little on advertising with predictable shipping, the built-in reports may genuinely be enough. For one buying traffic, the gap is usually the entire margin.

Keep reading

Scale profitably.

Know what every order made you.

Install Free on Shopify