Article Summary
✅ Shopify COGS gets hard because the real cost is scattered across QuickBooks, supplier invoices, duties, tariffs, storage, 3PL handling, shipping software, and ad spend.
✅ Shopify’s cost field is useful, but it is still one compressed number. If you do not know what went into it, updating it later becomes guesswork.
✅ You do not need COGS to the penny for every decision. You need to know whether a SKU is safely profitable, barely profitable, or one refund away from losing money.
I Dropped the Price. Then Refunds and PPC ate the Cushion.
This is the part nobody likes to admit.
A product was not moving, so I dropped the price.
Sales picked up, which felt good for about five minutes. Then the margin got thin. A few refunds came in. A bad PPC campaign ran. Suddenly the SKU that looked “fine” was not fine anymore.
It was negative.
The product did not become bad overnight. My cost number was not wildly wrong either. It was just wrong enough that once two things went sideways at the same time, there was no cushion.
That is why slim margins are deadly.
If you have a fat margin, a rough COGS number can survive some abuse. If your margin is thin, a few missing costs can turn a product from profitable to meh fast.
The Cost Is Scattered Before You Ever Open Shopify
When I tried to figure out true margin per SKU, Shopify was not enough.
I had to check QuickBooks for supplier purchase price. Then landed cost had to account for tariffs, duties, and freight. Storage and 3PL handling lived somewhere else. Shipping cost per order came from ShippingEasy. A lot of sellers would be doing the same thing in ShipStation.
So this is where the COGS work gets annoying.
You are not solving one formula. You are gathering one number from several places.
And after all that, you still have to decide what number goes into the sheet.
That is why sellers skip it.
Not because they are lazy. Because the work is scattered.
Shopify’s Cost Field Is Useful, but It Is Still One Number
Shopify does have product cost data.
Shopify’s InventoryItem object includes unitCost, which Shopify describes as the unit cost associated with the inventory item. Shopify also notes that access can depend on product cost permissions.
That is useful.
BUT
That one number does not tell you what was included.
Was it just supplier cost?
Did you add freight?
Did you include tariffs, duties, packaging, prep, storage, or 3PL handling?
Did someone update it after inflation changed your supplier quote?
If you see a cost of $8.40 six months later and nobody remembers what went into it, the number is hard to audit. You are no longer running COGS. You are running a guess with decimals.
That is worse than a rough estimate because it looks precise.
Close Enough Is Fine Until the Margin Gets Thin
You don't need cost down to the penny every day.
If your landed cost is somewhere around $15 and the product sells with plenty of room, you can make a good business decision from that range. You do not need four decimal places to decide whether the product is healthy.
But a thin-margin product is different.
If supplier cost is $12, duties add around $1.50, freight adds around $1, and 3PL handling adds $0.75, you are already in the $15 to $16 range before ad spend, refunds, discounts, or payment fees touch the order.
- Now drop the selling price to move inventory.
- Now run PPC.
- Now get refunds.
That is how a product that looked barely profitable goes negative.
The question is not, “Do I know my exact COGS?”
The better question is: Do I know whether this SKU has enough cushion to survive normal ecommerce mess?
The Sheet Needs One Place for Cost
You do not need a perfect accounting system to make better product decisions.
You need one place where your cost lives by SKU.
At minimum, I want SKU, cost per unit, effective date, and notes. The notes matter because the next person needs to know what the cost includes.
If your cost changes, add a new row.
Do not overwrite history if you care about comparing old sales to new sales. If you update one cost number and it changes every past order in the sheet, your old numbers can start lying.
This does not need to be fancy.
It needs to be clear enough that you can come back later and know what the heck you meant.
Sales Rows Need SKU-Level Detail
COGS becomes useful when it connects to the exact product that sold.
Order totals are too broad.
One order can include three products. One product can be discounted. Another item can be refunded. A third product can have a totally different cost structure.
Shopify’s LineItem object represents a product or service purchased in an order, and it includes quantity, SKU, discount allocations, pricing fields, refundable quantity, duties, tax lines, product title, variant title, and fulfillment-related fields.
That is why I care about line items.
You need the row to tell you:
- Which SKU sold
- How many units sold
- What price it sold for
- Whether a discount touched it
- Whether a refund changed it
- Which cost should be applied
That is the point where COGS starts helping.
Before that, you are just looking at revenue and hoping the cost number is close enough. If you sell across Shopify, Amazon, and Walmart, use an internal SKU and map the platform SKUs to it.
Using Gorilla ROI for COGS
Gorilla ROI does not magically know your supplier cost, tariff cost, freight cost, packaging cost, or 3PL handling cost.
You still have to decide what belongs in your cost number which you can then upload to your account. You can export it from your Quickbooks acount and upload it using our template.
This way, you can centralize COGS by SKU so the cost can be maintained in one place and pulled into the reports that need it.
The Gorilla ROI COGS feature can be automatically loaded using the point and click sidebar query along with our native Google Sheet fucntions.
Instead of updating COGS in one Shopify field, one P&L sheet, one sales report, and one separate SKU file, you keep the cost source in one place.
Then your Shopify sales data can use it when you run the numbers.
For the broader data setup, start with Shopify to Google Sheets. If the sales side is the first problem, use Shopify sales report. If SKU mapping is messy, use Shopify SKU management.
This Is Not Full Profit Accounting
A Shopify COGS sheet helps you estimate gross profit by SKU.
It does not replace accounting.
Net profit still needs shipping treatment, ad spend, payment fees, software, labor, overhead, returns handling, and accounting adjustments.
So do not make the sheet pretend to be your accountant.
Use it to answer the practical questions:
- Is this SKU safely profitable?
- Is this SKU barely profitable?
- Did refunds wipe out the cushion?
- Did PPC turn this SKU negative?
- Did the cost number get old?
- Can this product handle a price drop?
That is enough.
When You Can Skip This
Skip the full COGS setup if your store is small, your cost barely changes, and one person can keep the range in their head without slowing the business down.
Also skip it if you need formal accounting, tax inventory valuation, or a finished profit app that makes every cost decision for you.
Use accounting software for accounting.
Use a COGS sheet when you need to run the numbers by SKU and know whether the product has enough cushion.
Shopify COGS Checklist
- Use SKU, not product title.
- Write down what is included in cost.
- Separate supplier cost from landed cost when needed.
- Add packaging or prep if it changes the decision.
- Use an effective date when costs change.
- Keep COGS in one place.
- Pull sales at the line-item level.
- Run the numbers by SKU.
- Treat the result as gross profit, not final net profit.
- Give thin-margin products a wider safety buffer.
The formula is rarely the hard part.
The hard part is keeping the cost number honest.
Some Common Questions
What is Shopify COGS?
Shopify COGS is the product cost assigned to items sold through Shopify. In Google Sheets, it usually means matching Shopify line-item sales to SKU-level cost data so you can estimate gross profit by product.
Does Shopify store product cost?
Yes. Shopify’s InventoryItem object includes unitCost, which Shopify describes as the unit cost associated with the inventory item. Access can depend on product cost permissions.
Why is Shopify’s cost per item hard to maintain?
It is one compressed number. If you do not know whether it includes supplier cost, freight, tariffs, duties, packaging, 3PL handling, or storage, updating it later becomes guesswork.
Do I need exact COGS to the penny?
No. For daily product decisions, a reliable range is usually enough. The important thing is knowing whether a SKU is safely profitable, barely profitable, or likely to go negative after refunds, discounts, shipping, or bad PPC.
Is Shopify COGS the same as net profit?
No. COGS helps estimate gross profit. Net profit also needs shipping, ads, payment fees, labor, overhead, software, and accounting adjustments.
Can Gorilla ROI help track Shopify COGS in Google Sheets?
Yes. Gorilla ROI can centralize COGS by SKU, support bulk CSV updates, and provide COGS-related formulas such as GORILLA_COGSTOTAL(), GORILLA_COSTDUMP(), and GORILLA_COSTCURRENT().
Should COGS, sales, and inventory live in the same tab?
No. Keep them separate. Sales tells you what moved. COGS tells you what it cost. Inventory tells you what you can still sell.









