Search

Tracking POAS In Google Ads & Shopping Setup Accuracy And Per-Product Profit

How to send profit as your Google Ads conversion value, check it against your own numbers and use per-product POAS in Shopping and Performance Max.

By , Founder
Published 15 min read

If you run Google Ads or Performance Max on revenue-only ROAS, you can scale campaigns that look great in the UI but quietly lose money once costs land in the P&L. Profit on ad spend (POAS) fixes that, but only if your tracking actually sends profit — not just revenue — back into Google Ads.

This guide walks through how to:

  • Define POAS correctly for ecommerce
  • Calculate profit per order and per SKU
  • Send profit as your Google Ads conversion value
  • QA the setup so numbers match finance
  • Use per-product POAS to restructure Shopping and PMax

Along the way, you’ll see where a platform like Product Metrics can take the heavy lifting off your team by sending profit and product-level labels to Google Ads, Meta and Merchant Center automatically. (Source: Product Metrics)

Quick Answer How To Track POAS In Google Ads And Shopping

At a high level, tracking POAS for Google Ads and Google Shopping campaigns looks like this:

  1. Define POAS as contribution profit before advertising divided by ad spend. (Source: Product Metrics)
  2. Calculate profit per order (and ideally per SKU) by starting from net revenue and subtracting product and variable order costs such as cost of goods, shipping that you subsidize, and payment fees. (Source: Product Metrics)
  3. Create a Google Ads purchase conversion action that uses different values per conversion and accepts a dynamic value field. (Source: Google Ads Help)
  4. Pass profit, not revenue, into the conversion tag for each order via the Google tag or Google Tag Manager. (Source: Google Developers)
  5. Verify tracking accuracy with Tag Assistant, test orders, and order-level reconciliations against your ecommerce and finance data. (Source: Google Ads Help)
  6. Use per-SKU POAS in Shopping and PMax by grouping products via Merchant Center custom labels (e.g., margin or POAS tiers) and adjusting bids/targets per group. (Source: Google Merchant Center Help)
  7. Layer on server-side tracking and enhanced conversions to recover conversions lost to ad blockers and privacy changes, improving the accuracy of POAS as a signal. (Source: Google Ads Help)
Flow diagram of POAS tracking for Google Ads: an order's costs give profit per order and per product, profit becomes the Google Ads conversion value, and bidding and Merchant Center labels act on it
POAS tracking is one route: each order's profit becomes the conversion value, and bidding and product labels act on that profit instead of revenue.

If you want this done for you, Product Metrics connects your shop, Merchant Center, Google Ads and Meta, then sends server-side conversion values for profit, revenue, new vs returning customers and LTV, plus product-level labels that campaigns can bid on. (Source: Product Metrics)

1 What POAS Is And How It Differs From ROAS In Google Ads

Profit on ad spend (POAS) measures how much contribution profit before advertising your campaigns generate per unit of ad spend. In Product Metrics’ definition:

POAS = contribution profit before ads ÷ ad spend
where contribution profit before ads is net revenue minus product and variable order costs (for example, cost of goods, shipping you cover, payment fees, and returns). (Source: Product Metrics)

By contrast, ROAS (return on ad spend) divides revenue by ad spend and ignores cost of goods and fulfilment, so two products with the same ROAS can be wildly different in profit. (Source: WeProfit)

Comparison of two products with the same ROAS of 4 on €1,000 revenue and €250 ad spend: product A keeps €400 profit before ads for a POAS of 1.6, product B €150 for a POAS of 0.6. Illustrative data
Both products show a ROAS of 4, yet one returns €1.60 of profit per €1 of ad spend and the other stays below break-even POAS of 1. Illustrative data.

From a Google Ads perspective, this distinction matters because value-based bidding strategies such as Maximize conversion value and Target ROAS optimize toward whatever values you send back as conversions. (Source: Google Ads Help) If those values are profit instead of revenue, Smart Bidding learns to find buyers and products that grow profit, not just turnover.

2 Decide What Profit You Will Track Per Product

Before you touch tags or campaigns, decide exactly which costs you include in “profit.” A practical ecommerce definition for POAS usually starts from:

  • Net revenue (after discounts, excluding sales tax where applicable)
  • Minus cost of goods sold per SKU
  • Minus variable fulfilment costs per order, such as shipping subsidies, packaging and payment processor fees
  • Minus expected returns cost for that SKU or category, where you can estimate it

That yields contribution profit before advertising, the numerator Product Metrics uses in its POAS definition. (Source: Product Metrics)

Waterfall diagram per €100 of net revenue excl. VAT: minus €45 cost of goods, €9 variable fulfilment and €4 expected returns leaves €42 contribution profit before advertising. Illustrative data
From €100 of net revenue, €42 is left as contribution profit before advertising once cost of goods, fulfilment and expected returns are taken off. Illustrative data.

You can apply that at two levels:

  • Per order: Sum profit across all items in the basket and pass that as the conversion value.
  • Per SKU: Track which SKUs were in the order and attribute profit and ad spend at product level, so you can see POAS for each product rather than only the account average. (Source: Product Metrics)

Per-SKU POAS is what lets you decide which products to push, fix or pause in Shopping and Performance Max.

3 Choose Your POAS Tracking Architecture

There are three common ways to get profit into Google Ads as a conversion value:

Three POAS tracking architectures compared: profit in the website conversion tag, an offline or server-side import from the backend, and Full Signal Tracking from your own subdomain to Google Ads and Meta
The three routes differ in when the profit value arrives and how final it is; Full Signal Tracking also sends revenue, new and returning customers and LTV to Google Ads and Meta.

Option A Real-Time Profit In The Website Conversion Tag

Here, you:

  1. Calculate profit for the order at checkout.
  2. Pass that profit into the value field of your Google Ads conversion tag (via the Google tag or Google Tag Manager) when the purchase happens. (Source: Google Ads Help)

Pros:

  • Fast feedback for bidding
  • Simple data flow: browser → tag → Google Ads

Cons:

  • Harder to adjust for cancellations, partial refunds or late returns
  • Requires profit to be known at checkout

Option B Offline Or Server-Side Import Of Profit Values

Here, you:

  1. Capture the Google click identifier (GCLID or equivalent) and order ID with each order.
  2. Compute final contribution profit after refunds and returns in your backend.
  3. Upload a file or send an API call with GCLID, conversion name, time, value and currency to Google Ads as an offline conversion. (Source: Google Ads Help)

Pros:

  • Profit matches what finance sees after adjustments
  • Easier to incorporate returns and transaction fees precisely

Cons:

  • More moving parts and potential failure points
  • Values arrive later, which can slow initial learning

Option C Full Server-Side Tracking With Profit Product Metrics

Platforms like Product Metrics sit between your ecommerce platform and Google Ads and Meta. Product Metrics’ Full Signal Tracking collects click IDs and orders on your own subdomain, bypasses ad blockers and Safari’s ITP, then sends purchase conversions with order ID and value to Google Ads and Meta using a server-side endpoint. (Source: Product Metrics)

Full Signal Tracking is described as server-side, adblocker-proof conversion tracking that keeps sending purchases even when the default Google Ads browser tag is blocked, by rotating through a first-party endpoint. (Source: Product Metrics)

On top of that, Product Metrics’ LTV guides say it sends profit, revenue, new customers, returning customers and lifetime value as conversion actions to Google Ads and Meta, so Smart Bidding can work with richer signals. (Source: Product Metrics)

If you don’t want to own a custom offline import pipeline, Option C gives you server-side reliability plus profit-aware signals with a turnkey setup.

4 Implement POAS Tracking With Dynamic Conversion Values Hands-On

Below is a generic, platform-agnostic walkthrough you can adapt whether you eventually send profit directly or via a tool like Product Metrics.

4.1 Create Or Edit Your Purchase Conversion Action

  1. In Google Ads, go to Tools & Settings → Conversions.
  2. Create a new Website conversion (e.g., “Purchase – Profit”) or edit your existing purchase conversion.
  3. Under Value, choose “Use different values for each conversion” and provide a fallback value for when none is sent. (Source: Google Ads Help)
  4. Set Count = Every, since each purchase has its own profit.
  5. Save the conversion action and note the conversion ID and label for later tag configuration. (Source: Google Developers)

You can keep a separate revenue-based conversion action as a secondary metric for reporting while optimizing bidding on the profit-based one.

4.2 Calculate Profit Per Order And Per SKU

In your ecommerce backend or tag manager data layer, calculate fields like:

  • item_revenue per SKU (net of discounts)
  • item_cogs per SKU
  • order_shipping_subsidy (what you actually absorb)
  • payment_fees and other variable costs

Then compute, for example:

order_profit_before_ads = Σ(item_revenue - item_cogs) - order_shipping_subsidy - payment_fees

This matches the contribution profit before advertising definition used for POAS. (Source: Product Metrics)

Worked example of order_profit_before_ads for a two-item order: €120 revenue minus €58 cost of goods gives €62, minus €5 shipping subsidy and €2.40 payment fees gives €54.60. Illustrative data
A €120 order sends €54.60 to Google Ads as its conversion value once item costs, the shipping subsidy and payment fees are taken off. Illustrative data.

If you want per-SKU POAS, also persist profit and quantity per item_id or SKU alongside the order ID so you can reconcile back to Google Ads performance later. Google’s Shopping product reporting schema supports product-level revenue, gross profit and gross profit margin when cart data is enabled. (Source: Google Developers)

4.3 Pass Profit Into The Google Ads Tag Or Google Tag Manager

You now need to send order_profit_before_ads to Google Ads as the value for your purchase conversion.

a) Using the Google tag (gtag.js)

On your order confirmation page (or server side, if you proxy the tag), call the conversion event with a dynamic value and currency:

gtag('event', 'conversion', {
  'send_to': 'AW-CONVERSION_ID/CONVERSION_LABEL',
  'value': order_profit_before_ads, // your calculated profit
  'currency': 'USD'
});

Google’s help docs specify that for transaction-specific values you dynamically set the value and currency parameters at runtime, passing the value as a number in the correct currency code. (Source: Google Ads Help)

b) Using Google Tag Manager

  1. Push an order_completed event to the data layer that includes order_profit_before_ads, order ID and line items.
  2. In GTM, create a Google Ads Conversion Tracking tag, paste in the conversion ID and label from your conversion action, and set Value to a variable that reads order_profit_before_ads from the data layer. (Source: Google Developers)
  3. Trigger the tag on the order_completed event.
  4. Optionally send transaction_id so Google can deduplicate conversions, which the help center recommends when tracking purchases. (Source: Google Ads Help)
Google Tag Manager setup for POAS: an order_completed data layer event carries order_profit_before_ads and transaction_id, the Google Ads Conversion Tracking tag reads both, and Google Ads records one profit conversion
One data layer event carries the profit and the order ID, so the tag sends profit as the value and Google can deduplicate the purchase. Illustrative data.

If you use Product Metrics’ Full Signal Tracking, this server-side pipeline performs the same job while avoiding browser-level blocks, then passes purchase conversions (with value and order ID) directly to Google Ads and Meta. (Source: Product Metrics)

4.4 QA Checklist Prove Your POAS Numbers Are Correct

Before you trust POAS in bidding decisions, you need to prove that the profit values Google Ads sees match your own systems.

  1. Tag firing & payloads
    • Use GTM’s Preview mode or browser tools plus Google Tag Assistant to confirm the purchase tag fires exactly once per order with the expected value and transaction_id. (Source: Google Ads Help)
  2. Sample order reconciliation
    • Pick several real orders, compute contribution profit from your backend, and compare to the conversion values recorded in Google Ads for those transaction IDs.
  3. Currency and tax sanity check
    • Ensure you’re sending values in the same currency the Google Ads account expects, and that you’re not double-counting tax when you subtract costs.
  4. Duplicate prevention
    • Confirm you are not counting both GA4 imports and Google Ads tags as primary conversions for the same purchase. Google recommends being deliberate about which conversions are included in the main Conversions column. (Source: Google Ads Help)
  5. Coverage vs revenue
    • Compare total revenue and total profit in Google Ads to your ecommerce platform over a representative window. If a large chunk of orders is missing, consider server-side tracking or enhanced conversions.

5 Alternative POAS Via Offline Or Server-Side Imports

For some businesses, especially those with longer fulfilment cycles or volatile returns, it’s cleaner to compute profit after the fact and import it.

5.1 Classic Offline Conversion Import

With Google’s offline conversion imports you can upload a file that ties each click to a later conversion with a specific value:

  1. Capture the GCLID or other allowed click identifier with each lead or order.
  2. When profit is known (for example, after shipment or return window), create a CSV with columns like Google Click ID, Conversion Name, Conversion Time, Conversion Value, Conversion Currency.
  3. Upload it under Tools & Settings → Conversions → Upload or via the Google Ads API. (Source: Google Ads Help)
One row of an offline conversion import file for POAS: Google Click ID, conversion name Purchase – Profit, conversion time, conversion value 38.20 and currency EUR. Illustrative data
Each row ties one click ID to the order's final profit, so the value Google Ads receives already reflects refunds and returns. Illustrative data.

This approach lets you send true profit after all adjustments, but requires careful monitoring of Google’s evolving policies around offline imports.

5.2 Enhanced And Server-Side Conversions

Google’s enhanced conversions for web allow you to add hashed first-party customer data (email, phone, address) to your conversion tags so more conversions are matched back to ads despite browser restrictions, improving measurement completeness. (Source: Google Ads Help)

On the server side, Product Metrics’ Full Signal Tracking places a first-party endpoint on your domain, keeps click IDs and orders server-side, and then sends purchase conversions (with value and order ID) to Google Ads and Meta from your server even when the client-side tag is blocked. (Source: Product Metrics)

The net effect in both cases is the same: more of your real, profit-carrying conversions reach Google Ads, which makes POAS a more reliable signal for bidding.

6 Per-Product POAS For Google Ads And Performance Max

Once you have profit flowing into Google Ads, the next step is to make POAS visible per product, not just per campaign.

6.1 Use Merchant Center Custom Labels For Margin And POAS Tiers

Google Merchant Center offers five optional custom label attributes (custom_label_0 through custom_label_4) that you can fill with your own values, up to 1,000 distinct values per attribute. (Source: Google Merchant Center Help) These labels can be used in Shopping and PMax campaigns to subdivide product groups by things Google doesn’t know about, such as margin bands or POAS tiers. (Source: Google Partners)

A simple, profit-first scheme looks like this:

  • custom_label_0 → margin or POAS tier, e.g. margin_high, margin_medium, margin_low
  • custom_label_1 → lifecycle or seasonality
  • custom_label_2 → price position vs competitors

You can then:

  • Subdivide Shopping or PMax listing groups by these labels
  • Set more aggressive targets (lower tCPA / higher tROAS) for high-margin or high-POAS tiers
  • Protect spend by tightening targets or even excluding low-margin / low-POAS tiers from paid traffic
Custom label scheme for POAS: custom_label_0 holds margin_high for more priority, margin_medium for standard priority and margin_low for lower priority, with custom_label_1 for lifecycle and custom_label_2 for price position
One label for the margin or POAS tier gives each tier its own listing group, so high-margin products get more priority and thin-margin products less.

Google’s own Shopping optimization material recommends using custom labels to subdivide inventory and bid differently by goals such as margin or price band. (Source: Google Marketing Platform)

6.2 How Product Metrics Automates Per-Product POAS

Product Metrics is designed for exactly this layer of work:

  • It connects to Shopify, WooCommerce, Magento, Lightspeed and Shopware 6, then to Google Ads, Meta and Merchant Center. (Source: Product Metrics)
  • It segments every product into six segments — Stars, Question Marks, Cash Cows, Dogs, Drainers and Ghosts — based on ad clicks and return measured in POAS against your target. (Source: Product Metrics)
  • Rules can then write segment labels such as stars, dogs or drainers into Merchant Center custom labels, automatically. (Source: Product Metrics)
  • Those labels become product groups your Shopping and PMax campaigns can bid on.

For example, the site shows a rule like:

“When POAS ≥ target and margin ≥ threshold with enough stock, set custom_label_0 = star_candidate.” (Source: Product Metrics)

This closes the loop:

  1. Server-side tracking captures more conversions with accurate values.
  2. Profit and POAS are calculated per product.
  3. Segmentation and rules convert that into Merchant Center labels.
  4. Campaigns bid differently on each label.
Loop diagram: Full Signal Tracking sends server-side conversions, Product Metrics works out profit and POAS per product, six segments from Stars to Ghosts become custom labels, and Shopping and Performance Max give each label its own priority
Each new round of tracked profit updates the segments, and the custom labels carry them into Shopping and Performance Max without a feed export.

You get per-SKU POAS without maintaining spreadsheets, scripts or manual feed exports.

7 How To Improve POAS Tracking Accuracy Over Time

Even a good first implementation can drift. Here’s how to keep POAS trustworthy as the foundation for Google Ads decisions.

  1. Standardize your profit definition
    Ensure finance, marketing and your tracking stack all agree that POAS uses contribution profit before ads, not net profit after fixed costs and not revenue. (Source: Product Metrics)

  2. Audit cost inputs regularly

    • Sync cost of goods data from your ERP or catalogue into the ecommerce platform and Product Metrics.
    • Refresh shipping and payment cost assumptions when carriers or providers change pricing.
  3. Tighten conversion measurement

    • Add enhanced conversions so more purchases match to ads. (Source: Google Ads Help)
    • Consider server-side tracking such as Full Signal Tracking to avoid adblocker losses. (Source: Product Metrics)
  4. Monitor import diagnostics and discrepancies
    If you import conversions or use APIs, regularly review Google Ads’ conversion diagnostics and investigate missing values, as Google’s offline import documentation recommends. (Source: Google Ads Help)

  5. Reconcile cohorts, not just totals
    Periodically pick a week, pull all orders and ad clicks, and re-compute POAS per product and per campaign. Differences highlight where tracking, returns handling or attribution windows need adjustment.

  6. Document attribution windows
    Keep a record of the lookback windows used for revenue, profit and ad spend so everyone reads POAS numbers in the same context.

8 Turn POAS Signals Into Bidding And Optimization

With accurate profit values in place, you can finally optimize for POAS, not just report on it.

8.1 Use Value-Based Bidding With Profit Values

Google recommends value-based bidding strategies such as Maximize conversion value and Target ROAS when you can send transaction-level values that reflect real business value. (Source: Google Ads Help) If your conversion value is profit rather than revenue, these same strategies effectively become profit-based bidding.

Table reading target ROAS as target POAS when conversion values are profit: 100% is POAS 1.0 and break-even, 150% is POAS 1.5 and 200% is POAS 2.0 per €1 of ad spend
With profit as the conversion value, a target ROAS of 150% asks for €1.50 of profit per €1 of ad spend: a POAS of 1.5, with €0.50 kept after the ad.

Practical steps:

  • Start with Maximize conversion value using your profit-based purchase conversion as the primary goal.
  • Once you have stable data, move to Target ROAS, interpreting that ROAS as “target POAS” because the values you send are profit. (Source: Google Ads Help)
  • Set different targets per campaign or asset group based on margin and POAS tiers; for example, high-margin stars might support a lower ROAS target than thin-margin question_marks.

8.2 Decide When To Optimize For POAS Versus ROAS

  • Use ROAS when you lack cost data or sell high-margin digital goods where revenue is a good proxy for profit.
  • Use POAS when margins vary meaningfully by product, shipping or returns — especially in retail ecommerce. (Source: JudeLuxe)
  • At the account level, use ROI or LTV:CPA when you want to factor in fixed costs and customer lifetime value.
Decision card for choosing a bidding metric: ROAS without cost data or for high-margin digital goods, POAS when margins differ by product, shipping or returns, and ROI or LTV:CPA at account level
The more your margins differ between products, the more POAS beats ROAS as the value bidding should follow.

Product Metrics supports both POAS and LTV-adjusted ROAS as metrics, and can send them together as separate conversion actions, so you can experiment safely without losing sight of first-order profitability. (Source: Product Metrics)

FAQ Common POAS Tracking Questions

How Do I Calculate Profit On Ad Spend Per Product?

For each SKU:

  1. Take net revenue from orders attributed to ads for that SKU (excluding tax where relevant).
  2. Subtract product and variable order costs (COGS, shipping you subsidize, payment and fulfilment fees, expected returns cost).
  3. Divide the result by ad spend attributed to that SKU over the same window.

That ratio is POAS per product, using the contribution profit before ads definition. (Source: Product Metrics)

How Do I Track POAS In Google Ads For Ecommerce Campaigns?

  • Create a purchase conversion action that uses different values per conversion.
  • Calculate contribution profit per order at checkout or in your backend.
  • Pass that profit into the value field of the Google Ads conversion tag or GTM tag.
  • Use value-based bidding so Smart Bidding optimizes to those profit values.

Google’s documentation on transaction-specific conversion values shows how to configure dynamic values in the tag. (Source: Google Ads Help)

How Can I Improve POAS Tracking Accuracy For My Ads?

  • Make sure your cost inputs (COGS, shipping, fees) are accurate and kept in sync.
  • Use enhanced conversions and consider server-side tracking to recover conversions lost to browser restrictions. (Source: Google Ads Help)
  • Regularly reconcile a sample of orders between your store, Product Metrics (if you use it) and Google Ads.

How Do I Track POAS Effectively For Google Ads And PMax?

  • Ensure each purchase sends a profit value into Google Ads.
  • Use Merchant Center custom labels to cluster products by margin or POAS tier. (Source: Google Merchant Center Help)
  • Split Shopping or PMax listing groups by those labels and assign targets that reflect each tier’s required POAS.
  • Use a tool like Product Metrics to keep these labels up-to-date automatically from product-level POAS and margin data. (Source: Product Metrics)

How Does Product Metrics Help Agencies With POAS Tracking Across Clients?

Product Metrics runs as a product-level optimization layer across Google Ads and Performance Max for multiple stores. It:

  • Connects each client’s shop, Merchant Center and Google Ads without developer work
  • Uses machine learning to segment all products by POAS and volume (Stars, Dogs, Drainers, etc.)
  • Writes those segments back to Merchant Center as custom labels
  • Sends profit, revenue, new vs returning customers and LTV to Google Ads and Meta via Full Signal Tracking (Source: Product Metrics)

That lets an agency manage POAS-aware Shopping and PMax structures for many clients from a consistent playbook instead of bespoke spreadsheets and scripts.

If you want to skip the plumbing and go straight to per-product POAS and profit-based bidding, you can analyse your products for free or book a demo to see how Product Metrics’ Full Signal Tracking and segmentation would look on your own Shopping and Performance Max data. (Source: Product Metrics)

Written by

, Founder of Product Metrics

1M+ products analysed · Nominated at the Dutch Search Awards for Best Measurement Campaign (2023) and Best Use of Data (2024)

Linkedin

Keep reading.

See which of your products to push, fix or pause. Start with your own products, or a 30-second estimate.

See what a blocker stops with the ad blocker tracking test. Then see how your products perform once every conversion is counted.

Find your hidden profit30-second estimate · no login
Analyse your products for freeFree analysis, no credit card

Questions, or want to spar about your products? Book a demo: a video call with Berend, then a demo account.