Finance & Operations9 min readJune 1, 2026

Shopify Cost Price Tracking: How to Calculate COGS and Know Your True Margins

Shopify shows you revenue. It does not show you profit — not reliably. Without accurate cost prices per SKU, you can't calculate gross margin, can't tell if a supplier price increase has flipped a product from profitable to loss-making, and can't make data-driven decisions about what to reorder and what to discontinue. Cost price tracking is the foundation of every other financial decision in a product business.

Shopify cost price tracking dashboard showing COGS, gross margin, and product profitability per SKU

What COGS Is and Why Shopify Merchants Undertrack It

Cost of Goods Sold (COGS) is the direct cost of the products you sold in a given period. For a product business, COGS is primarily the cost you paid your supplier for the inventory. The formula:

COGS Formula
COGS = Beginning Inventory + Purchases − Ending Inventory
Beginning Inventory = inventory value at period start  |  Purchases = cost of all stock bought during period  |  Ending Inventory = inventory value at period end

COGS flows directly into gross profit: Revenue − COGS = Gross Profit. And gross margin = Gross Profit ÷ Revenue × 100. A product selling at $50 with a cost of $20 has a 60% gross margin. If your supplier raises the cost to $28, that margin drops to 44% — and if you haven't updated your cost price data, your Shopify reports will still show the old 60% while the actual margin has quietly eroded.

40–60%
typical gross margin range for Shopify product businesses
10%
supplier price increase that can halve gross margin on a low-margin product
0
historical cost records kept by Shopify's native Cost per item field

Shopify's Cost Per Item Field — What It Does and Doesn't Do

Shopify has a Cost per item field on each product variant (Products → select a product → Pricing section). Enter a cost here and Shopify uses it to calculate gross profit in the Finances report. This is useful — but it has four significant limitations that matter for any serious product business:

⚠ Limitations of Shopify's Cost per item

1. One static number per variant. No history. If you update it, the old value is gone. You can't see what a product cost 6 months ago.

2. Not connected to purchase orders. Shopify has no PO system, so there's no way to tie the cost in the product field to the actual price on a specific order.

3. No multi-supplier cost tracking. If you buy the same SKU from Supplier A at $12 and Supplier B at $15, Shopify can only store one cost. The weighted average cost is on you to calculate.

4. Manual update required on price changes. When a supplier raises their price, you must manually update every affected variant. There's no notification, no history of the change, and no link to the PO that first showed the new price.

The Gross Margin Formula Per Product

With cost prices set, you can calculate gross margin per product:

Gross Margin Formula
Gross Margin % = (Selling Price − Cost Price) ÷ Selling Price × 100
Example: Selling price $45 / Cost price $18 → Gross margin = ($45 − $18) ÷ $45 × 100 = 60%

Shopify's Finances → Products report shows gross profit per product if you have costs entered. But remember — that report is only as accurate as your cost data. A supplier that raised prices 3 months ago but whose costs you haven't updated in Shopify will make margins look healthier than they are.

Contribution margin vs gross margin

Gross margin as Shopify calculates it covers only the cost of the product itself. It does not include: transaction fees (typically 1.5–3% for Shopify Payments), outbound shipping if you offer free shipping, return processing costs, or any portion of your fulfillment labor cost. Your true per-unit margin is lower than the gross margin Shopify shows. For products with thin gross margins (under 30%), factor in these additional costs before deciding whether to continue selling a product.

Why Cost Prices Change — and How to Track Changes

Cost prices are not fixed. They change for predictable reasons that you need to track:

How EZstock Tracks Cost Prices

EZstock stores a cost price per supplier-product relationship. When you assign a product variant to a supplier in EZstock, you record the cost price for that specific supplier. When you create a purchase order in EZstock, the cost price auto-populates from the supplier-product record, and you can update it on the PO if the supplier has changed their price.

This means your purchase order reflects the real cost you're paying — not a static value that was entered months ago. And when you receive the PO, EZstock has the actual per-unit cost for that batch of inventory, which is the correct COGS input for that shipment.

For multi-supplier scenarios: EZstock tracks the cost price per supplier independently. If Supplier A charges $12 and Supplier B charges $15 for the same SKU, EZstock knows which cost applies to each purchase order — and therefore to each batch of inventory you receive from each supplier.

Using cost data to make better buying decisions

With per-product cost prices tracked accurately, you can make quantitative buying decisions that intuition alone can't support:

Track Cost Prices Alongside Your Purchase Orders

EZstock stores per-supplier cost prices, pre-fills POs with the correct cost, and keeps your margin data current as prices change — all inside Shopify.

Start Free 14-Day TrialNo credit card required · Installs in 60 seconds · Cancel anytime

Frequently Asked Questions

Does Shopify track cost of goods sold?
Shopify has a Cost per item field per product variant and uses it to calculate gross profit in the Finances report. However, it stores only one static cost value per variant with no history, no connection to purchase orders, and no automatic update when supplier prices change. For accurate COGS tracking tied to real purchase order costs, you need a dedicated tool like EZstock.
How do I add cost prices in Shopify?
Go to Shopify Admin → Products → select a product → scroll to the Pricing section for each variant → enter the cost in the 'Cost per item' field. For bulk updates: export the product CSV (Products → Export), update the 'Variant Cost' column, and re-import. Shopify will use these costs in the Finances → Products gross profit report.
What is the difference between cost price and selling price in Shopify?
Selling price is what customers pay (your Shopify product price). Cost price is what you paid your supplier. Gross margin = (Selling price − Cost price) ÷ Selling price × 100. Shopify revenue reports show selling prices. Gross profit reports only appear if you've entered cost prices. Without accurate costs, revenue looks healthy even when supplier price increases have eroded your actual margin.
How do I calculate gross margin per product in Shopify?
Gross Margin % = (Selling Price − Cost Per Item) ÷ Selling Price × 100. In Shopify Analytics, go to Finances → Products to see gross profit per product. Note that this only reflects the product cost — it doesn't include transaction fees, outbound shipping, or fulfillment labor. Your true contribution margin is lower, especially on free-shipping or high-return products.
How do I update cost prices when my supplier raises prices?
In Shopify: manually edit the Cost per item field on each affected variant, or update via CSV export/import. Shopify stores no history of the change. In EZstock: update the cost price on the supplier-product record when you create the new PO at the raised price. EZstock pre-fills future POs with the updated cost, and the PO document reflects the actual price being paid for that order.
EZStock

EZStock ‑ Inventory & Purchase Orders

Shopify inventory management with real purchase orders

Check it out on Product Hunt →
Share