Glossary
How to Calculate True Shopify Profit (COGS + Ad Spend + Returns + Shipping)
True Shopify profit is what's left after subtracting every real cost from revenue: product cost (COGS), payment processing, shipping and fulfillment, returns, and ad spend — not just Shopify's order total. Most dashboards stop at gross margin (revenue minus COGS only) and quietly skip the rest, which makes a store look far more profitable than it actually is.
The formula
True profit = Revenue − COGS − Payment processing − Shipping/fulfillment − Returns − Ad spend
The first four terms — COGS, payment processing, shipping, and returns — scale with each order and can be computed the moment an order comes in; that's the same math as contribution margin. Ad spend is deliberately kept out of that per-order number, because acquisition cost varies enormously by channel and by customer — blending it into one per-order figure hides more than it shows. A full profit picture nets ad spend against contribution margin at the cohort or channel level instead of the single-order level.
That's a real distinction, not a technicality: a store can have a healthy per-order contribution margin and still be unprofitable overall if ad spend is outrunning what those margins bring back. True profit needs both layers, computed separately, then combined.
Worked example
One month, 500 orders, $100 average order value:
- Revenue
- $50,000
- Cost of goods (30%)
- −$15,000
- Payment processing (2.9% + $0.30 × 500 orders)
- −$1,600
- Shipping (500 orders × $6.50)
- −$3,250
- Returns (25 orders × $80 avg. refund)
- −$2,000
- Contribution margin (before ad spend)
- $28,150 (56.3%)
- Ad spend
- −$9,000
- True profit
- $19,150 (38.3%)
Gross margin on this same month — revenue minus COGS only — shows $35,000 (70%). That's the number a top-line dashboard would report. True profit, after every real cost including ad spend, is $19,150: nearly half of what the gross-margin figure implies.
How Upstream computes this for your store automatically
Upstream computes the order-scaling layer of this automatically — real per-SKU product cost, real per-order payment fees and shipping, and real refunds from Shopify's own refund data, not estimates — and nets ad spend against it separately at the cohort level through LTGP:CAC, since forcing acquisition cost into a single blended per-order number would hide which channels are actually working.
No credit card required · Installs in 60 seconds
A Fox & Otter Data product