Blog · Analytics

What Shopify Analytics Doesn't Tell You About Profit

Shopify Analytics is a great revenue dashboard. It's not a profit dashboard — and most operators learn that the hard way after a quarter of scaling against the wrong number.

What Shopify Analytics actually measures

Open the Analytics tab in your Shopify admin and you get a clean set of numbers: total sales, orders, average order value, sessions, conversion rate, returning customer rate, sales by product, sales by channel. They're accurate. They're useful. They're the right starting point for understanding what's happening on the revenue side of your store.

That phrase — the revenue side — is doing a lot of work in that sentence.

Shopify's "net sales" line is post-discount, post-return, and pre-everything-else. It's the top of your income statement, not the bottom. The platform was built to be a storefront and a checkout, and its analytics layer reflects that: it can tell you everything that happened up to and including the moment money entered your account, and very little about what happened to that money on the way out.

The two columns Shopify can't fill in

There are exactly two reasons Shopify Analytics can't show you net profit. Both are structural, not bugs.

The first is COGS. Shopify lets you enter a cost-per-item on each variant, and if you do, it'll multiply that number by units sold and surface it in the Finance reports. That gives you a gross-margin estimate. But it can't enforce per-shipment shipping math (it assumes one rate per unit, multiplied by quantity), it doesn't track supplier cost variance over time (your AliExpress price moves, the cost-per-item field doesn't), and it doesn't reverse the COGS hit when a damaged item comes back as a return.

The second is ad spend. Shopify can't see the dollars you've spent on Meta, TikTok, Google, Pinterest, or anywhere else, because those platforms don't push spend data into Shopify's pipes. The "Marketing" tab in the admin is a manual entry surface, not a server-side ingest. You can type in your spend totals, but nothing's reconciling them against actual platform spend, and nothing's attributing campaign-level spend back to the orders it generated.

Without those two columns, you have a revenue dashboard. With them, you'd have a profit dashboard. That's the gap, in one sentence.

Where Shopify's "Total cost" reports go wrong

It gets worse than just "missing two columns." Even the cost columns Shopify does populate are quietly off in three specific ways that compound over time.

Refund processing fees stay with the processor. Refund an order through Shopify Payments and the customer gets their money back, but the original 2.9% + 30¢ doesn't come back to you. Shopify's reports show the refund as a clean reversal. The fee is gone, just not labeled.

The same order, two ways

To make this concrete, here's a single order priced two ways: how Shopify Analytics will report it after a refund and a chargeback, vs what actually flowed through your bank.

Same month, two P&Ls
100 orders · 6% return rate · 1 chargeback
$80 AOV · $24 COGS/unit · $9 shipping · 2.9% + 30¢ processor
shopify analytics view
REVENUE-SIDE ONLY
Revenue
Gross sales (100 × $80)$8,000
Refunds (6 × $80)−$480
Chargeback (1 × $80)−$80
Net sales$7,440
Costs Shopify shows
COGS (100 × $24)−$2,400
Processor fees (gross)−$262
Ad spendnot tracked
Refund fees retainednot deducted
Chargeback true cost$80 only
Reported "profit" $4,778
Looks like a 64% margin. Doesn't include ads, refund fees, or true chargeback cost.
real net p&l
RECONCILED
Revenue
Net sales (post refund + dispute)$7,440
All costs
COGS (100 × $24)−$2,400
Shipping (100 × $9)−$900
Processor fees (gross)−$262
Refund fees retained (6 × $2.62)−$16
Chargeback true cost (extra)−$180
Ad spend (blended $35/order)−$3,500
Real net $182
Real margin: 2.4%. Same store, same month, same orders.
Shopify says $4,778 · Reality is $182 · 26 points of margin missing from the dashboard

Both columns are technically true. Shopify isn't lying — it's reporting on the data it has. The problem is that the data it has stops at the storefront, and the operator is making decisions about ad budgets, inventory orders, and pricing against a number that doesn't include any of the costs incurred to fulfill those decisions.

Shopify Analytics will not lie to you. It will, however, tell you a partial truth that you'll mistake for the whole one.

What real profit tracking actually requires

To close that gap and have a number you can scale against, you need five things, ranked roughly by how often they get skipped:

  • Server-side ad spend ingest from every platform you run paid traffic on, refreshed daily. Manual entry doesn't count — by the time you remember, you're a week behind.
  • Per-shipment shipping math if you sell bundles or use a supplier with shipping breaks. Per-line-item shipping is a quiet 3–4 point margin error for dropshippers.
  • True chargeback cost — not just the dispute amount, but the COGS, shipping, fulfillment, processor fee, and ad spend on the order that lost the dispute.
  • Refund fee deduction — small per-event but compounds to a real number at any volume.
  • Accurate per-SKU COGS with version history, so a supplier price change in March doesn't quietly inflate your reported margin in April.

If your store is doing under $20K/month and you sell one or two SKUs at flat costs through one ad channel, you can hold all of this in your head. Above that, you can't, and the gap between what your dashboard says and what your bank account does starts to grow.

The DIY route, honestly

You don't strictly need a profit app to do this. You need a weekly process and a willingness to do reconciliation by hand.

The minimum viable setup: Shopify Payouts CSV, ad platform CSVs from Meta/TikTok/Google, supplier invoices for the period, and a spreadsheet that subtracts everything from net sales. For a 200-order/month store with two ad channels and one supplier, a competent operator can get this done in about three hours a week after the initial template setup. The bottleneck is usually reconciling ad platform spend (which arrives late) against actual orders attributed to it (which require some judgment on attribution windows).

It's tedious but it works. Many of the operators I respect most ran this exact spreadsheet for years before adopting any profit app, and a few still prefer it because it forces them to look at the inputs once a week.

When a $30–150/mo profit app earns it

The honest math is straightforward: if (your hourly rate × the hours you spend reconciling) is greater than (the subscription cost + the time it takes to maintain the app), pay for the app. Otherwise, keep the spreadsheet.

For most operators, the breakeven happens around 500–800 orders/month — the volume at which the spreadsheet stops being three hours and starts being five or six, and the value of catching things in real-time (a campaign that's silently underperforming, a SKU that's gone unprofitable since the last supplier price change) starts to matter.

If you're in that zone and trying to figure out which app actually solves the gap for your specific store, /alternatives has the side-by-side. The short version: vs TrueProfit is the most common comparison and probably the right starting point.

The closing argument

The question isn't "is Shopify Analytics enough." For 90% of stores it's enough for what it's designed to do — show you what's happening on the revenue side. The question is: do you trust the number you're scaling against?

If yes, you don't need anything else. If no — and the gap above is the reason — fix it with a spreadsheet, an app, or whatever combination works for your store. Just stop quoting yourself a margin number that doesn't include what you spent to earn it.

Add NeoProfit if you want a P&L that does include it.

— Neo

Close the gap

A profit dashboard,
not a revenue one.

7-day free trial · all features on every plan · early adopter pricing 50% off

← All posts