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.