Your WooCommerce store knows exactly what every product costs. Google Ads has never seen that number — and it’s been optimising your campaigns without it. Smart Bidding treats £100 revenue from a 10% margin product identically to £100 revenue from a 70% margin product. That’s not an algorithm quirk. That’s the design. And WooCommerce’s own documentation confirms the problem: its native COGS feature ‘does not integrate with WooCommerce Analytics’ — and by extension, sends zero margin data to GA4 or Google Ads.
What Google Ads Smart Bidding Actually Optimises For
Target ROAS and Maximise Conversion Value are value-optimisation systems. They learn from the conversion value you pass at purchase. That’s it. According to Google Ads Smart Bidding documentation (2025), the algorithm has no mechanism to infer or adjust for product margin — it optimises for what you send.
If you send revenue, it optimises for revenue. It doesn’t know whether that revenue came from a product that cost you £5 to make or £90. It just learned that the sale happened, noted the value, and updated its bidding model accordingly.
This matters most in mixed-category stores. Apparel carries 40–60% gross margin. Electronics sits at 5–15%. Health and beauty runs 50–70%. If your Performance Max campaign covers all three, it bids identically for every £100 of revenue — regardless of which category generated it. It will actively funnel budget toward electronics if electronics generates more revenue volume, even when that revenue delivers a fraction of the profit your beauty products return.
You may be interested in: Your WooCommerce items Array Is Sending Google Product Data It Cannot Use
The Data Exists. It Just Never Leaves WooCommerce.
Here’s the frustrating part: the cost data already exists. When you set up WooCommerce COGS — either via the native feature or a Cost of Goods plugin — that cost is stored in order item meta against every purchase. WooCommerce knows the margin on every line item, in every order, in real time.
It just doesn’t go anywhere useful.
WooCommerce’s own COGS documentation states explicitly that cost data ‘does not integrate with WooCommerce Analytics.’ GA4 doesn’t see it. Google Ads doesn’t see it. Klaviyo doesn’t see it. The margin data that could transform your bidding strategy sits in a database field and never leaves.
This is a structural data silo — not a configuration error you can fix in settings. There’s no toggle that routes margin data to Google Ads. The integration simply doesn’t exist at the platform level.
Poor data quality costs organisations an average of $12.9 million annually, according to Gartner (2025). For WooCommerce stores, directing Smart Bidding budget toward high-revenue, low-margin products is a compounding, structural form of that loss — hidden inside a dashboard that shows a healthy ROAS.
ROAS Looks Great. Your Bank Account Disagrees.
Revenue-based ROAS is a vanity metric when your product mix carries wildly different margins. A store spending £2,000 on ads and reporting 5x ROAS has generated £10,000 in revenue. That looks excellent. But if Smart Bidding has learned to push electronics — 8% margin — those £10,000 in sales represent £800 in gross profit. Ad spend is £2,000. The campaign is losing money while reporting a healthy return.
67% of data professionals cannot trust their analytics data for business decisions, according to the Precisely/Drexel University Data Integrity Trends Report (2025). Marketing teams reading ROAS without knowing whether that return reflects high- or low-margin conversions are firmly in that 67%.
POAS — Profit on Ad Spend — is the corrective metric. It divides gross profit by ad spend rather than gross revenue. A campaign returning 2x POAS on 60% margin products is outperforming a 6x ROAS campaign on 10% margin products. But POAS requires margin data at the event level. You can’t calculate it in a spreadsheet after the fact at scale — by then Smart Bidding has already made its decisions.
You may be interested in: WooCommerce Order Edits Are Permanently Corrupting Your GA4 Revenue — And There Is No Correction Event
The Fix: Margin at the Event Level, Sent Server-Side
Google Ads Enhanced Conversions accepts a conversion value parameter. That parameter doesn’t have to be revenue. It can be any numeric value — including a margin-adjusted figure calculated at the moment of purchase.
According to Google Ads Enhanced Conversions documentation (2025), sending margin as the conversion value is the architectural mechanism that enables profit-optimised Smart Bidding. The algorithm doesn’t care what the value represents — it learns from it. If you teach it that a £340 sale on an 8% margin product is worth £27 in conversion value, and a £200 sale on a 65% margin product is worth £130, it will bid accordingly.
GA4’s purchase event also accepts custom item-level parameters. That means you can pass margin data alongside revenue for BigQuery analysis — even if GA4 standard reports don’t surface it — without disrupting your existing revenue reporting structure.
The two values can coexist. Revenue goes to GA4. Margin-adjusted value goes to Google Ads Enhanced Conversions. One pipeline call, two destinations, two different optimisation objectives — served simultaneously from a single order event.
How a Server-Side Pipeline Reads WooCommerce Margin Data
WooCommerce stores product cost in order item meta — typically in the _wc_cog_cost field (Cost of Goods plugins) or the native COGS field. At order confirmation, those values are available in the WooCommerce order object alongside sale price.
The calculation is straightforward: margin = (sale_price - cost) / sale_price. For multi-item orders, you weight by line item revenue to get blended order margin. This is a server-side computation that happens in milliseconds at order time — before any tracking event fires.
A server-side pipeline handles this by reading the WooCommerce order object, calculating margin per item, and routing margin-adjusted conversion value to Google Ads Enhanced Conversions simultaneously with routing revenue value to GA4. No client-side JavaScript. No browser dependency. No ad blocker exposure.
Seresa’s Transmute Engine™ reads each order item’s cost from WooCommerce product meta at order confirmation, calculates margin in real time, and delivers margin-adjusted conversion value to Google Ads Enhanced Conversions — while simultaneously sending standard revenue value to GA4. Both platforms receive accurate, purpose-built data in a single pipeline call. Pricing starts at $89/month.
Key Takeaways
- Smart Bidding optimises for what you send. Send revenue, it optimises for revenue. Send margin-adjusted value, it optimises for profit.
- WooCommerce’s COGS data never leaves WooCommerce. This is a structural silo confirmed in official documentation — not a configuration problem.
- Mixed-margin stores are the most exposed. Any store with product categories carrying different margins is running campaigns that systematically misdirect budget.
- POAS requires server-side margin delivery. You can’t post-process your way to profit-optimised bidding — the data needs to arrive at Google Ads at event time.
- Revenue reporting doesn’t need to change. GA4 continues receiving revenue value. Google Ads receives margin-adjusted value. Both are accurate for their respective purposes.
POAS — Profit on Ad Spend — is the revenue-equivalent metric calculated using actual product margin rather than gross sale value. A campaign returning 4x ROAS on 15% margin products may be generating less absolute profit than one returning 2x ROAS on 65% margin products. WooCommerce stores with mixed product categories need POAS to make Smart Bidding work in their favour.
No. WooCommerce’s own documentation states that its COGS feature does not integrate with WooCommerce Analytics. Cost data exists in product meta but is siloed entirely from GA4, Google Ads, and any third-party analytics platform without a server-side integration.
A server-side pipeline reads product cost from WooCommerce order item meta at the moment of purchase, calculates margin per item, and sends margin-adjusted conversion value to Google Ads Enhanced Conversions — simultaneously sending revenue value to GA4. This allows Smart Bidding to optimise for profit without disrupting your revenue reporting.
ROAS (Return on Ad Spend) divides revenue by ad spend. POAS (Profit on Ad Spend) divides gross profit by ad spend. A store spending £1,000 on ads generating £4,000 revenue achieves 4x ROAS. If the products sold carry a 15% margin, gross profit is £600 — POAS is 0.6x. The store lost money on advertising while reporting a healthy ROAS.
Yes. A server-side pipeline routes each order event to multiple destinations simultaneously. Revenue value goes to GA4 for consistent reporting. Margin-adjusted value goes to Google Ads Enhanced Conversions for Smart Bidding optimisation. The two values coexist without conflict and serve different optimisation objectives.
Your WooCommerce store has been doing the hard part — storing cost data — since the day you set up your products. The data just needs a pipeline that actually sends it where it can do work. If your campaigns are reporting strong ROAS while Smart Bidding quietly scales your lowest-margin products, the fix isn’t in your ad account. It’s in your tracking architecture.
