← Back to blog
2026-08-23 · 7 min read · Selvra OS Team

Shopify COGS Setup: How to Track Cost of Goods Sold

Where Shopify actually stores cost of goods sold, why it doesn't reach Google Ads on its own, and three realistic tiers of accuracy for tracking it.

If you've tried to connect Shopify product costs to Google Ads reporting and hit a wall, you're not missing a setting — the two systems genuinely don't talk to each other. This guide covers where the data actually lives, why it doesn't flow automatically, and three realistic ways to close the gap depending on how much effort you want to put in.

Where to set COGS in Shopify

Cost of goods sold lives on each product variant, in the Cost per item field: go to Products, select a product, and under the Pricing section you'll find "Cost per item" alongside price and compare-at price. This is the number Shopify uses internally to calculate profit margin on the product page and in some analytics reports — but it has to be entered per variant, and it's optional, which is why it's blank on a large share of products in most stores that haven't specifically gone looking for it.

A few practical notes: if a product has multiple variants (sizes, colors), each variant needs its own cost if the costs actually differ — a single cost entered on one variant doesn't automatically apply to the others. And "cost" here should reflect what the unit actually costs you landed and ready to sell, which for some stores means just the supplier unit cost, and for others should include inbound freight, packaging, or per-unit fulfilment costs if those vary meaningfully by product.

Why Merchant Center COGS doesn't flow into Google Ads automatically

This is the part that surprises most merchants. Google Merchant Center — the product feed that powers Shopping and Performance Max campaigns — can display cost-related fields in some contexts, but that cost data does not connect to Google Ads' own reporting or bidding. Google Ads reports revenue, conversions, and ROAS; it has no COGS field, no profit column, and no built-in way to import one from Merchant Center or from Shopify directly.

In practice, this means a merchant can have perfectly accurate Cost per item data sitting in Shopify, a fully synced product feed in Merchant Center, and a well-optimised Google Ads account — and still have zero visibility into actual profit anywhere in that pipeline, because none of the three systems is responsible for connecting cost to ad performance. This is a genuinely underserved gap: it's not that merchants don't know COGS matters, it's that the tooling to connect it doesn't exist by default anywhere in the stack.

Closing this gap means either building the connection manually or using a tool that does it for you — there isn't a setting to turn on inside Google Ads or Merchant Center that solves it natively.

It's worth being clear about what Merchant Center's cost-related fields are actually for, since the naming causes confusion. Where Merchant Center does surface cost data, it's typically for shipping cost estimation or specific program eligibility, not for feeding a profitability calculation back into Ads reporting. Even a fully accurate cost feed in Merchant Center doesn't change what Google Ads itself reports — ROAS, not POAS, remains the default metric regardless of how much cost data sits elsewhere in the Google ecosystem.

Three tiers of COGS accuracy

You don't need perfect, per-SKU cost data to get useful profitability insight — but it's worth being deliberate about which tier you're operating at, since each comes with a real accuracy-versus-effort tradeoff.

Tier 1: Flat margin. Apply a single average margin assumption across your entire catalog (for example, "we run roughly 35% margin overall"). Fast to set up — takes minutes — and immediately upgrades you from zero profitability visibility to rough visibility. The tradeoff: it's wrong for every product that doesn't sit near that average, which for a mixed catalog can be most of them.

Tier 2: Category-level margin. Split your catalog into a handful of margin bands — apparel at 55%, accessories at 30%, bundles at 40%, for example — and apply the right band per product or per campaign. More accurate than a flat number, still approximate within each category, but a reasonable middle ground for stores with a moderate number of distinct product categories.

Tier 3: Per-product COGS. Pull the actual Cost per item value for each SKU and match it to campaign or product-level ad spend. This is the accurate tier — but it's also the one most likely to be set up once and then quietly go stale, since nothing forces the Cost per item fields to stay current as suppliers or prices change, and nobody typically owns keeping hundreds of them updated by hand.

Worked example: why the tier you pick actually matters

Take a store selling two products: a T-shirt at $30 with $12 COGS (60% margin) and a phone case at $25 with $20 COGS (20% margin). A flat 40% margin assumption across both — a reasonable-looking blended average — would badly misjudge each one individually: it overstates the phone case's real margin by 20 points (making an unprofitable campaign look viable) and understates the T-shirt's margin by 20 points (making a genuinely strong campaign look mediocre). At the account level a flat assumption can look fine on average while being wrong for literally every product in the catalog.

What "good enough" looks like

The right tier depends on how much your margins actually vary. If every product in your store sits within a few points of the same margin, Tier 1 is genuinely good enough — the added accuracy of Tier 2 or 3 won't change many decisions. If your margins span a wide range, as they do for the T-shirt and phone case above, a flat assumption will actively mislead you on which campaigns to scale, and it's worth investing in at least Tier 2.

The honest failure mode to watch for isn't picking too low a tier — it's picking Tier 3, doing it manually, and having it decay within a quarter as nobody keeps the Cost per item fields current. If you're going to commit to per-product accuracy, it's worth pairing that decision with something that keeps the data fresh automatically, since stale per-product data can end up less trustworthy than an honest, current flat-margin estimate.

Our Shopify profit margin calculator is a fast way to sanity-check true per-order profit once COGS, shipping, and fees are factored in — useful groundwork before deciding which tier is worth setting up. For how this connects to the wider profitability picture, including what changes once you're tracking margin properly, see what is POAS, ROAS vs POAS, and our complete guide to Google Ads for Shopify.

Accurate margin data is also what makes customer lifetime value calculations meaningful rather than just revenue-based guesses — see LTV:CAC ratio for ecommerce for how this same COGS data feeds a profit-based LTV.

Selvra OS is built around exactly this tier structure — it's transparent about which confidence tier your COGS data is at for each product (flat, category, or verified per-product), rather than quietly assuming perfect data it doesn't have.

FAQ

Does Shopify show profit and loss automatically?

Shopify's built-in analytics show revenue, but a full profit and loss view — one that nets out cost of goods sold, shipping, fees, and ad spend — isn't something the core platform generates on its own unless the Cost per item field is populated accurately for every product and variant. Most stores need to combine Shopify's cost data with ad spend from Google Ads (or another tool that connects the two) to see actual profit and loss rather than just revenue.

What's a good gross margin for a Shopify store?

It varies hugely by category — apparel and beauty brands often run 50–70% gross margin, while categories with high physical shipping costs or thin competitive pricing can sit closer to 15–30%. There's no universal 'good' number; what matters is knowing your actual margin per product, since that number directly determines your break-even ROAS and whether a given ad campaign can be profitable at all.

Related reading

Want Selvra OS to do this automatically for every campaign, every day?

Install Selvra OS on Shopify →