Guide
How to add cost per item in Shopify so ad profit can be calculated
In your Shopify admin, go to Products, open the product, open each variant from its Variants section and fill Cost per item with what one unit costs you. For many products, Shopify’s own help says to add costs all at once with the bulk editor or a CSV import. Until a variant you advertise and sell has a cost, Shopify’s profit reports leave its sales out and, with Cost of Goods switched on in Opteno’s store settings, Opteno shows its profit as unavailable rather than guessing.
Last checked · More guides
Which method to use
Pick the method by how many variants are missing a cost: the product page for a few, the bulk editor for dozens, and a CSV import for hundreds or when your costs already live in a supplier spreadsheet. All three write the same Shopify field, so you can mix them.
Cost per item, in Shopify’s words, is “the cost to you of the product or variant”. It is held per variant, which matters: a size or colour that costs more to buy is a different number, and averaging it is how a losing variant hides inside a winning product.
On one product or variant
Step 1: Open the product
From your Shopify admin, go to Products and click the product you want to edit.
Step 2: Open the variant
If the product has variants, click the variant in the Variants section and edit its pricing details. On a product without variants, the cost sits with the price on the product page.
Step 3: Enter the cost and save
Type the cost as a number and click Save. Unless Charge tax on this product is selected (then Shopify doesn’t display them), Shopify shows projected Profit and Margin, with margin = ([price − cost] ÷ price) × 100: its own example is a $50 price and $30 cost, a 40% margin.
Many products: the bulk editor
Step 1: Select the products
From your Shopify admin, click Products and use the checkboxes to select each product you want to edit.
Step 2: Open the bulk editor
Click Bulk edit.
Step 3: Add the cost column
Click Columns and select the properties you want in the table, including the cost per item.
Step 4: Type the costs and save
Click a field, type the value, and click Save. Larger changes take longer to complete.
Hundreds of variants: a CSV import
Step 1: Export your products
Go to Products, click Export, choose which products (for example All products) and a CSV type, and click Export products. If any single product has more than 100 variants, Shopify emails the file instead of downloading it.
Step 2: Fill the Cost per item column
Shopify’s CSV format defines Cost per item as how much it costs you to make or acquire the product or variant, as a number with no currency symbol — for example 9.99. Each variant has its own row, tied to its product by the Handle column and its option values. Rows that hold only an extra image are not variants, so leave them as exported.
Step 3: Change nothing else
Leave every other cell as exported. With overwrite on, a blank non-required column blanks the stored value, and Shopify warns that removing a column another column relies on can delete existing data.
Step 4: Import with overwrite
Go to Products, click Import, click Add file and choose the CSV. Select Overwrite products with matching handles, click Upload and continue, review the summary, then click Import products. The file can’t exceed 15 MB. Our advice: before importing the full file, run the same steps on a copy cut down to a couple of products and check their costs in the admin.
What number to enter
Enter what one unit of that variant costs you, in your store’s currency, and decide once, for the whole catalogue, whether it includes landed costs.
Shopify defines it as “the cost to you of the product or variant” and gives two examples of what you can enter: for a product you resell, the price you paid the manufacturer, excluding taxes, shipping or other costs; for one you make, a value based on your labour and material costs. That is the narrow reading. For judging advertising you can widen it to what the unit really costs you: inbound freight per unit, packaging, and outbound shipping you bear rather than charge. Shipping you charge separately and that covers itself stays out of both sides.
Example (illustrative figures): a supplier charges €6.20 a unit, freight on a 500-unit shipment is €300 (€0.60 a unit) and packaging is €0.35. The narrow cost is €6.20; the landed cost is €7.15. On a €24.00 price excluding VAT, Shopify’s margin formula gives 74.2% on the first and 70.2% on the second. Either can be right; mixing them across products makes comparisons wrong.
- One cost per variant, not a product average
- Excluding the VAT or sales tax you reclaim
- In your store’s currency: convert foreign-currency supplier invoices first
- Never 0 as a placeholder — a zero says the goods were free; leave it blank until you know
- Gift cards are exempt — Shopify says cost per item doesn’t apply to them
Why this field comes first
In finding the products that lose you money, filling this field is the highest-value step, because every later figure (margin, POAS, net profit) is built on it. See the workflow at /workflows/find-unprofitable-products.
Checking coverage: variants that sold with no cost
The gaps that matter are variants that sold, and were advertised, without a cost — so check against sales, not only against the catalogue.
Shopify’s profit reports only count variants that had a cost recorded when they were sold; Shopify says orders missing from those reports likely lack cost information. That shows a gap, but only after the sale.
Step 1: List the catalogue gaps
Export products to CSV and filter Cost per item for blanks, ignoring image-only rows and gift cards.
Step 2: Rank them by what sells
Fill variants with recent orders and ad spend first.
Step 3: Check the result where profit is computed
With Cost of Goods switched on in Opteno’s store settings, Opteno names each sold variant with no cost-per-item, which is the list of missing costs standing between you and a profit figure.
The fallback: a store-wide cost percentage in Opteno
If you cannot fill costs yet, Opteno lets you set one cost percentage for the whole store. Cost of goods, POAS and net profit become computable at once (a day with no usable exchange rate still shows as unavailable), but it is one number for the whole store, so it cannot tell a thin-margin product from a healthy one. Use it as a stopgap until variant costs are in.
What Opteno shows while costs are missing
With Cost of Goods switched on in Opteno’s store settings, a sold variant with no cost-per-item makes the affected figure unavailable: Opteno names the variant and does not print a zero. An average that silently includes a guess is worse than no average. Opteno lists cost-per-item filled in as one of two things it needs before its numbers mean anything; the other is a Google Ads account running Shopping or Performance Max.
Cost of goods is each sold variant’s cost-per-item multiplied by the units sold, summed. In Opteno’s default setting, POAS is (revenue − cost of goods) ÷ ad spend, breaking even at 1.00×; net profit is revenue − cost of goods − ad spend. ROAS, revenue ÷ ad spend, needs no cost — which is why it cannot say whether a sale was worth making.
Example (illustrative figures): a variant sells 40 units at €24, so €960 of revenue, with a cost per item of €7.15 (€286 of cost of goods) and €300 of ad spend. POAS is (960 − 286) ÷ 300 = 2.25× and net profit is €374. If a second variant of the product sold 10 units with no cost, the product’s cost of goods cannot be summed, so its POAS and net profit show as unavailable with that variant named — not a figure that quietly counts those units as free.
With Cost of Goods switched on in Opteno’s store settings, fill the cost in Shopify, or set a store-wide percentage, and the profit figures complete themselves.
Questions merchants ask
Where is Cost per item in Shopify?
On the product details page, with the price. For a product with variants, go to Products, click the product, then click the variant in the Variants section and edit its pricing. Once a cost is entered, Shopify shows projected Profit and Margin in the Price section, unless Charge tax on this product is selected.
Can I bulk edit cost per item in Shopify?
Yes. Shopify’s help suggests adding costs to all existing products at once with the bulk editor or a CSV import. In the bulk editor, select products, click Bulk edit, then use Columns to add the cost to the table.
What is the CSV column for product cost?
Cost per item. It takes a number with no currency symbol, such as 9.99. Import with Overwrite products with matching handles selected, and remember that a blank non-required column overwrites the stored value with a blank.
Should cost per item include shipping?
Shopify defines it as “the cost to you of the product or variant”, and for a reseller gives the example of the price paid to the manufacturer, excluding taxes, shipping or other costs. For judging ad profit you can include per-unit inbound freight and packaging instead. Either works if every product uses the same rule; mixing them makes products incomparable.
Do costs I add now apply to past orders?
In Shopify’s own profit reports, no: profit is reported only for variants that had a cost recorded at the time they were sold. In Opteno, figures that were unavailable because a sold variant had no cost complete themselves once you fill it in Shopify.
What if I don’t know my costs yet?
Set a store-wide cost percentage in Opteno so the figures compute, and use it as a stopgap until real variant costs are in. Because it is one number for the whole store, it cannot tell a thin-margin product from a healthy one.
See which products are losing you money
Connect Shopify and Google Ads in under five minutes. From $14.99 a month, cancel whenever you want, and no change to your store or your campaigns without your approval.