How to Track COGS in Shopify for Handmade Sellers
Shopify's built-in cost field won't give you accurate COGS if you make your own products. Here's how to actually track cost of goods sold as a maker using Shopify.

Shopify has a “cost per item” field on every product. So you’d think tracking your COGS would be sorted. Type a number in the box, and Shopify handles the rest.
That works fine if you’re buying finished goods wholesale and reselling them. But if you make your products — which, if you’re reading this, you almost certainly do — that field is almost useless. It captures one number, at one moment in time, with no connection to the actual materials, labour, or overhead that went into making the thing.
This guide is specifically for makers who sell on Shopify and want accurate, tax-ready COGS. Not a workaround. Not a rough estimate. The real number.
Why Shopify’s Built-In COGS Field Isn’t Enough for Makers
Shopify’s “cost per item” field is a simple static input — you type a number, Shopify stores it, and uses it to calculate margin reports. That’s it.
Here’s what it can’t do:
It doesn’t know what’s in your products. If your soy candle uses 140g of wax, 15ml of fragrance oil, one wick, and a labelled jar — Shopify doesn’t know any of that. You’d have to manually calculate the total and type it in. And every time your wax supplier raises prices, you’d have to manually update every affected product.
It doesn’t track material inventory. Shopify’s inventory system counts finished product units — it doesn’t track raw materials at all. So when you fulfil 50 candle orders, Shopify knows you sold 50 candles. It doesn’t know you used 7kg of wax, 750ml of fragrance, 50 wicks, and 50 jars to make them.
It doesn’t handle manufacturing. Making a batch of soap isn’t a purchase event. It’s a production event — raw materials go in, finished goods come out. Shopify has no concept of this. There’s nowhere to record that you ran a batch, what it cost, or how many units you made.
It gives you one cost, not a cost history. Material prices shift constantly. The cost per unit you entered six months ago probably doesn’t reflect what you’re paying for materials today. Shopify just stores the last number you typed.
For a retailer buying in finished goods, none of this is a problem. For a maker, it means your COGS number is almost always wrong — and if it’s wrong, your margins are wrong, and your tax reporting is wrong.
How to Calculate True COGS for Handmade Products
True COGS for a handmade product has three components.
1. Direct Materials
Everything that physically goes into the product. For a soap maker: base oils, lye, water, colourants, fragrance, packaging. For a candle maker: wax, fragrance oil, wick, dye, jar, lid, label.
Calculate the cost of each ingredient at the quantity used per unit — not the price of the full bag or bottle, but your cost per gram, per ml, per metre.
Packaging counts too. The box, the tissue paper, the branded sticker, the thank-you card — if it goes to the customer with the product, it’s a material cost.
2. Direct Labour
Your time, or the time of anyone helping make the product.
This is where most makers undercount. They include materials and call it done. But your time has a cost. Even if you’re not paying yourself a market wage yet, leaving labour out of COGS means your gross margin is overstated and your pricing decisions will be off.
A reasonable starting point: pick a minimum hourly rate you’d accept for your time, track how many minutes a product takes to make (include mixing, setting, trimming, packaging), and calculate the labour cost per unit.
3. Manufacturing Overhead
The indirect costs that make production possible — electricity for your curing space, consumables like cleaning supplies and moulds, depreciation on equipment, a portion of your studio or workspace costs if applicable.
Overhead is usually allocated as a percentage of direct costs or a per-unit estimate. It doesn’t need to be perfect. It needs to be in the ballpark, because “in the ballpark” is infinitely more accurate than ignoring it entirely.
The formula:
COGS = Beginning Inventory + Cost of Goods Manufactured − Ending Inventory
Where “cost of goods manufactured” = materials + labour + overhead for the period.
This is the number that goes on Schedule C, Line 42, at tax time. See our guide on tracking COGS across multiple sales channels if you sell on Etsy and other platforms as well.
How Shopify Records Sales but Loses the Cost Data
When an order comes through Shopify, here’s what actually happens:
Shopify records the sale amount, subtracts one unit from your product inventory, and logs the “cost per item” value you entered if it exists. That’s the end of it.
What doesn’t happen: Shopify doesn’t deduct the component materials from any raw materials tracking system, because it doesn’t have one. It doesn’t recalculate your cost based on current material prices. It doesn’t know which batch of product was used to fulfil the order, or what that batch actually cost to make.
So when you go to Shopify’s analytics and look at gross profit — that number is based on whatever static cost you entered, minus the sale price. If your cost entry was accurate when you made it, and your material costs haven’t changed, and you haven’t made any production errors, and you don’t have any overhead… it’s passable.
For most real handmade businesses, those conditions don’t hold.
The gap between “what Shopify records” and “what it actually cost to make and sell that product” is where margin disappears without any obvious explanation. You’re busy, sales are decent, and yet somehow the numbers never quite add up at the end of the year.
Three Approaches to Tracking COGS with Shopify
Option 1 — Manual Spreadsheet
You calculate the cost of each product by hand: list every material, note the quantity used per unit, pull your latest supplier prices, and do the maths. Repeat any time material prices change.
At the end of the year, you tally up materials purchased, adjust for opening and closing inventory, and arrive at your COGS.
This works. It’s what a lot of makers do, especially in the early stages. It’s time-consuming, error-prone, and gets progressively worse as your product range grows or you run complex batches. But it’s better than relying on Shopify’s static cost field.
If you go this route, keep a separate material inventory spreadsheet updated regularly. See how to manage inventory when selling on Etsy and Shopify for a practical approach.
Option 2 — Shopify Apps
There are Shopify apps designed to improve COGS tracking — some add recipe or BOM (bill of materials) functionality, others focus on better profit analytics.
The limitations here depend on the app. Some add a layer on top of Shopify’s product data without actually tracking raw material inventory — meaning you still have to manually update costs when supplier prices change. Others do handle material-level tracking, but are built for commercial manufacturers rather than small-batch makers.
Worth evaluating if you want to stay fully within the Shopify ecosystem, but test carefully before committing: ask specifically whether the app tracks raw material inventory, handles batch production, and updates per-unit costs automatically when material costs change.
Option 3 — Dedicated Manufacturing Software
This is the approach that actually solves the problem at its root, rather than patching over Shopify’s limitations.
Dedicated manufacturing and inventory software for makers is built around a fundamentally different model: you define a recipe (or BOM) for each product, specifying which materials and what quantities go into one unit. When you manufacture a batch, the system deducts those materials from your stock and records the production cost. When an order comes in from Shopify, it records the COGS for that sale from the recipe, not from a static field.
The result: your COGS is always calculated from actual material costs, actual quantities, and actual production. Change what you’re paying for fragrance oil, and every product that uses it updates automatically.
How Craftybase Calculates COGS Automatically from Recipes and Batch Runs
Craftybase is built specifically for makers who manufacture in small batches — which makes it a natural fit for Shopify sellers who make their own products.
Here’s how it works in practice:
You set up your materials. Each raw material has a current cost (per gram, per litre, per unit — whatever unit you buy it in). When you reorder from a supplier at a different price, Craftybase updates that cost and it flows through to every product that uses the material.
You build a recipe for each product. A recipe lists every material that goes into one unit — exact quantities. You can also add labour costs to a recipe: how many minutes to make, at what rate.
You record manufacturing runs. When you make a batch — say, 48 candles — Craftybase deducts the required materials from your stock and calculates the total cost of that batch. It knows exactly what it cost to make those 48 candles, down to the ingredient level.
Orders sync from Shopify. Craftybase pulls your Shopify orders automatically. When a candle order comes in, it’s matched to the appropriate product and its COGS is recorded from the recipe — not guessed from a static field.
You pull a COGS report. At any point — weekly, monthly, yearly — you can generate a COGS report that shows exactly what it cost to produce the goods you sold. This is the number that goes on your tax return, and it’s based on actual material costs and actual production runs.
For a full walkthrough of how Shopify and Craftybase work together, see Shopify inventory management for handmade businesses.
If you’re interested in seeing how this compares to a broader integration approach, the Craftybase Shopify integration page has the technical details.
What a COGS Report Should Include for Schedule C and Tax Purposes
Schedule C, Part III (Cost of Goods Sold) asks for:
- Line 33 — Method used to value closing inventory: Most makers use cost. Consistent use of the same method from year to year is what matters here.
- Line 34 — Did you change inventory method? If no (most cases), check no.
- Line 35 — Beginning inventory: The value of your materials and finished goods inventory at the start of the year.
- Line 36 — Purchases: Materials and supplies purchased during the year.
- Line 37 — Cost of labour: What you paid employees, if any. Your own labour as owner isn’t included here.
- Line 38 — Materials and supplies: Other materials not included in line 36.
- Line 39 — Other costs: Manufacturing overhead that doesn’t fit elsewhere.
- Line 40 — Total: Lines 35 through 39.
- Line 41 — Ending inventory: The value of your materials and finished goods at year-end.
- Line 42 — COGS: Line 40 minus line 41. This is your COGS for the year.
A solid COGS report from your manufacturing software should break out each of these components. If you’re working with an accountant, this is the document they need — not a vague “total cost of materials purchased.”
For the full picture on COGS and Schedule C, see our dedicated guide on COGS reporting for handmade sellers at tax time.
Frequently Asked Questions
Does Shopify automatically calculate COGS for handmade products?
No. Shopify's "cost per item" field stores a single static number you enter manually — it doesn't calculate COGS from recipes, material costs, or production runs. For handmade products, this means your COGS is only as accurate as the number you typed, and it won't update automatically when material prices change. Most makers need dedicated manufacturing software, like Craftybase, to get an accurate COGS figure.
What is the COGS formula for handmade Shopify sellers?
COGS for handmade Shopify sellers equals beginning inventory plus cost of goods manufactured minus ending inventory, where cost of goods manufactured covers direct materials, direct labour, and allocated overhead. This is the figure reported on Schedule C, Line 42. Unlike retail sellers, makers must account for the full cost of production — not just what they paid for raw materials.
Can I use Shopify's reports for Schedule C COGS?
Only partially. Shopify's profit reports use the "cost per item" figure you entered — which may not reflect true production costs. They also don't provide the breakdown Schedule C requires: beginning inventory, purchases, cost of labour, and ending inventory as separate line items. Most makers use Shopify for order data and a separate accounting or manufacturing tool to build the actual COGS figure for their tax return.
How does Craftybase track COGS from Shopify orders?
Craftybase syncs orders from Shopify and matches them to your product recipes. Each recipe specifies which materials and what quantities go into one unit, at current material costs. When a Shopify order comes in, Craftybase records the COGS from the recipe automatically — so your cost data reflects what production actually costs, not a static number you entered months ago. You can pull a COGS report at any time, broken down by product, period, or channel.
Should I include my labour cost in COGS for handmade products?
Yes — and most makers forget to. Your time has a cost, even if you're a solo maker who doesn't pay yourself a formal wage. Include direct labour in your COGS by estimating the time to make each product, multiplied by an hourly rate. Leaving labour out overstates your gross margin and leads to underpricing — which means you can be running a busy Shopify store and still not actually making money.
What's the difference between Shopify COGS tracking and inventory management?
Shopify's inventory management counts finished product units — it knows you have 24 candles in stock. COGS tracking goes deeper: it records what it cost to produce those 24 candles, which materials were used, and what those materials cost at the time of production. Inventory management tells you what you have. COGS tracking tells you what it cost to make what you have — and what it cost to make what you sold. Both matter, and Shopify only does the former.
If your Shopify analytics are showing you margins that feel too good to be true — or margins that don’t explain why you’re always tight on cash — the COGS tracking is usually where the answer lives.
Shopify shows you revenue. But revenue minus an inaccurate cost number doesn’t tell you much. For makers, getting COGS right means building it from recipes, tracking materials properly, and recording what each production run actually cost.
Craftybase does this automatically for Shopify sellers — syncing orders, calculating COGS from your recipes, and giving you the reports you need at tax time without a spreadsheet in sight. The 14-day free trial is a good way to see how it maps to your specific products and production workflow.
For the full picture on managing inventory alongside your Shopify store, start with our guide to inventory management for Shopify sellers.
