Knowing the true profit formula is one thing; setting up your store so you can actually see it every day is another. Most Shopify stores either have no profit number at all, or they have a number they don't trust because ad spend or returns were never attributed. This guide is the practical method — what to set up, in what order, and what to actually look at day to day once it's running.
The four numbers every store must know per order
Before any setup, fix the four numbers that decide whether a sale made money or lost it. If any one is missing or wrong, your profit number is wrong:
- Revenue — what the customer paid, net of discounts and refunds.
- COGS — what the product cost you at the moment of that sale (seeCOGS). Not last quarter's price — the price that applied to this order.
- Order-attributed costs — payment fees, shipping you paid, packaging, attributed ad spend (see payment fees).
- Returns impact — refunded revenue plus the unrecovered fees, shipping and ad spend that the return cost you (see returns).
Per-order net profit = revenue − COGS − order-attributed costs − return impact. Everything else (rent, salaries, tools) is operating expense, not per-order cost, and is handled separately — see net vs gross profit.
Step 1 — Set up your cost inputs (in this order)
Don't try to track everything at once. Set up in this order so each step has a clean foundation:
1a. Product COGS — set per SKU, with a cost method
Record the unit cost for every product you sell. If your supplier changes price over the year, record each batch separately and choose a cost method (FIFO, LIFO or weighted average) so the correct cost applies to each order automatically. FIFO is the safest default; pick average cost if your costs fluctuate and you want a smoother margin.
1b. Payment fees — let the app pull them, don't estimate
Shopify Payments, Stripe and PayPal all charge slightly different rates, and fees hit thin-margin products hardest. Don't estimate. Pull them from your actual orders so they're exact per order.
1c. Shipping cost — record what you paid, not what you charged
The number that hurts profit is the shipping you paid. If you charge the customer $5 and your carrier bills you $9, the difference is a real cost. Use your actual carrier invoices, or your shipping app's per-order cost, not the price you charged.
1d. Ad spend — attribute it per order, not in aggregate
This is the line most stores skip. Without it, a product that loses money on ads looks like it makes money. Connect your ad accounts (Facebook, Google, TikTok) so spend is pulled daily and attributed to the orders it generated. If you can't connect, attribute daily spend by channel across the day's orders as a fallback — inaccurate, but better than nothing.
1e. Returns — track the full cost, not just the refund
A return costs more than the refund: you lose the outbound shipping, the payment fee is rarely refunded, the return shipping may be on you, and the ad spend that won the sale is already gone. Track the full cost per returned order, not just the dollar refunded.
Step 2 — The daily method: what to check every morning
Tracking is not a monthly exercise. Three numbers, checked daily, take 60 seconds and stop small problems becoming big ones:
- Yesterday's net profit — open the dashboard, look at net profit for yesterday, not revenue. Revenue can grow while profit shrinks; only profit tells you whether the day was good.
- Yesterday's net margin — net profit as a percentage of revenue. A 25% margin day on $1,000 is the same profit as a 50% margin day on $500; the margin tells you which is the healthier business (seehow to calculate profit margin).
- One outlier — scroll yesterday's orders, find one with a margin far from average. Was it a discount? A high shipping cost? A return? One outlier a day is the fastest way to learn where your store leaks money.
Step 3 — The weekly method: what to review every Monday
Once a week, look at the bigger picture. Four reviews, each under five minutes:
- Net profit by product, last 7 days — rank products. Your top 20% should drive most of the profit; your bottom 20% usually costs you money in ad spend and storage. Promote the winners; fix, reprice or discontinue the losers.
- Net profit by channel / campaign — Facebook vs Google vs organic vs email. A campaign with a 4x ROAS can still be unprofitable after COGS and fees — net profit per campaign tells you what to scale and what to cut.
- Return rate trend — is it moving up, down, or flat? A 2% rise costs more than most stores realise (full-cost impact, not just refunded revenue).
- Forecast vs actual — compare this week to last week's forecast. If the gap is widening, fix the inputs (cost prices, fees) before you trust any number again.
Step 4 — When unit cost changes (FIFO, LIFO, average)
If you buy the same product twice this year at different prices, every order between those two purchases has an ambiguous cost. The method you pick decides how that ambiguity resolves:
- FIFO (first in, first out) — oldest stock goes out first. Default for most physical goods. Reflects actual flow if you really sell old stock before new.
- LIFO (last in, first out) — newest stock goes out first. Useful in rising-cost environments where you want COGS to track current replacement cost.
- Weighted average — blends all batches into one running cost per SKU. Smoother margin; least distortion during price changes.
The point isn't which is "correct" — it's picking one and sticking to it so your numbers are comparable month to month. Switching methods mid-year is worse than picking the "wrong" one and holding it.
Five mistakes that hide real profit
These five are the ones we see over and over. If any apply to your store, fix them before trusting your numbers:
- COGS not set per product — the most common reason stores show "no data" or wildly inflated margins. If a product has no cost, the app assumes zero and your margin is fiction.
- Ad spend attributed in aggregate, not per order — spending $5,000 a month on ads and dividing by orders is not the same as knowing which orders the ads paid for. Pull spend from the platforms.
- Refunds counted as "minus revenue" only — a return is a refund pluslost fees, lost shipping and lost ad spend. Counting only the refund understates the damage.
- Including operating expenses in per-order cost — rent and salaries are not per-order costs. Mixing them in makes products look unprofitable when the real problem is a fixed-cost base that's too high for your volume (seebreak-even).
- Looking at revenue, not profit, when judging success — the single biggest mistake. A store can grow revenue 30% in a year and lose more money. Revenue growth without profit growth is expensive.
Quick checklist
You are tracking real profit when you can answer yes to all of these:
- Every product has a unit cost set, with a chosen method (FIFO / LIFO / average).
- Payment fees, shipping cost and ad spend are pulled automatically, not estimated.
- Returns are tracked at full cost, not just refunded revenue.
- You can see net profit and net margin for any day, week or month — not just revenue.
- You can rank products and campaigns by real net profit, not ROAS.
- You check net profit every morning, and review product/channel/return trends weekly.
Make it automatic
Doing this by hand, in a spreadsheet, on a thousand orders a month doesn't work — and is the reason most stores either give up or get the wrong answer. Profit analytics apps exist to automate exactly this setup.
ProfitVault connects to your Shopify store and computes net profit on every order automatically: COGS by method, shipping, payment fees, attributed ad spend and returns impact. Daily net profit, margin and forecast on the dashboard; per-product and per-campaign breakdowns; CSV export for the rest. The full cost chain from thecomplete profit guide, set up once and running every day. Free on the Shopify App Store.