---
title: "POAS In The Real World Passing Profit, Composing Conversion Value, And Bidding With Confidence"
description: "POAS in the real world passing profit to Google Ads: what to send as conversion value, which costs to include, how to keep margins private and test it."
canonical: "https://www.productmetrics.io/blog/poas-conversion-value-bidding"
pageType: article
language: en
publisher: "Product Metrics"
author: "Berend Vrakking"
datePublished: 2026-11-09
dateModified: 2026-11-09
image: "https://www.productmetrics.io/og/blog/poas-conversion-value-bidding.png"
---

> Content index: https://www.productmetrics.io/llms.txt

# POAS In The Real World Passing Profit, Composing Conversion Value, And Bidding With Confidence

## Key takeaways

- Google Ads doesn’t care whether your conversion value is revenue, profit or a proxy. It optimises toward whatever numbers you send as value.
- Refunds and cancellations should flow back into Google Ads as conversion adjustments so POAS reflects kept profit, not gross revenue that never landed.
- You can keep exact margins private by calculating profit server-side, sending only the final value to Google Ads, or by using indexed/scaled values and adjusting your Target ROAS accordingly.

Most teams now agree that [ROAS](https://www.productmetrics.io/glossary/roas "Return on ad spend (ROAS) is the revenue your ads generate for every euro you spend on them.") alone is not enough. The question that keeps coming back is more practical:

> *How do we actually send profit to Google Ads, include real costs, and run POAS experiments without handing Google our margin table?*

This guide walks through exactly that, from picking a profit definition to wiring it into conversion value and testing it safely.

## Key Takeaways

- Google Ads doesn’t care whether your conversion value is revenue, profit or a proxy. It optimises toward whatever numbers you send as `value`. (Source: [Google Ads Help – About conversion values](https://support.google.com/google-ads/answer/13064207))
- You can pass order-level profit directly as the `value` parameter in your Google Ads conversion tag, or send it via offline/imported conversions, then let Target ROAS and Maximize conversion value bid on that profit. (Source: [Google Ads Help – Track transaction‑specific values](https://support.google.com/google-ads/answer/6095947), [Google Ads Help – Value-based bidding](https://support.google.com/google-ads/answer/14792795))
- Conversions with cart data plus `cost_of_goods_sold` in Merchant Center unlock native gross profit and gross profit margin metrics for Shopping and PMax, but they usually exclude shipping, payment fees and returns unless you bake them into COGS. (Source: [Google Ads Help – About conversions with cart data](https://support.google.com/google-ads/answer/9028254), [Merchant Center Help – cost_of_goods_sold](https://support.google.com/merchants/answer/9017895), [Google Ads API – Shopping reporting](https://developers.google.com/google-ads/api/docs/shopping-ads/reporting))
- Refunds and cancellations should flow back into Google Ads as conversion adjustments so POAS reflects *kept* profit, not gross revenue that never landed. (Source: [Google Ads Help – About conversion adjustments](https://support.google.com/google-ads/answer/7686447), [Google Ads API – Upload conversion adjustments](https://developers.google.com/google-ads/api/docs/conversions/upload-adjustments))
- You can keep exact margins private by calculating profit server-side, sending only the final value to Google Ads, or by using indexed/scaled values and adjusting your Target ROAS accordingly. (Source: [Think with Google – Maximise Growth with Data](https://services.google.com/fh/files/emails/maximise_growth_with_data.pdf), [Google – Changing Biddable Conversion Actions](https://services.google.com/fh/files/misc/external_changing_biddable_conversion_actions.pdf))

## 1. From ROAS To POAS The Implementation Gap

ROAS uses revenue as conversion value; POAS replaces revenue with profit before ad spend:

- **ROAS** = revenue ÷ ad spend
- **POAS** = contribution profit ÷ ad spend

In Product Metrics’ framework, contribution profit means revenue excluding VAT/sales tax minus cost of goods and [variable order costs](https://www.productmetrics.io/glossary/variable-cost) (shipping subsidies, payment fees, packaging, expected returns). (Source: [Product Metrics – POAS vs ROAS](https://www.productmetrics.io/blog/poas-vs-roas))

That definition is what makes a [POAS of 1.0](https://www.productmetrics.io/poas-calculator) break-even: ad‑driven sales have covered product and variable costs *and* the ads that drove them. (Source: [Product Metrics – POAS vs ROAS](https://www.productmetrics.io/blog/poas-vs-roas))

![Diagram comparing ROAS and POAS on one €100 order with €30 contribution profit and €20 ad spend: ROAS 5, POAS 1.5, above break-even POAS 1.0. Illustrative data.](https://www.productmetrics.io/images/blog/poas-conversion-value-bidding/poas-value-roas-vs-poas.webp)

_On the same €100 order, ROAS reads 5 while POAS reads 1.5: €10 of contribution profit is left after €20 of ads._

Conceptually, POAS is straightforward. In practice, most accounts still:

- Send **order total including tax and shipping** as conversion value.
- Never subtract refunds or cancellations.
- Let Smart Bidding optimise on revenue that the business doesn’t keep. (Source: [Google Ads Help – Track transaction‑specific values](https://support.google.com/google-ads/answer/6095947), [Google Ads Help – About conversion values](https://support.google.com/google-ads/answer/13064207))

Fixing this requires two things:

1. A clear, per‑order **profit formula**.
2. A plan to **compose that profit into Google’s single `value` field** without leaking sensitive margin data.

The rest of this guide is about those two pieces.

## 2. Decide What “Profit” You Want Google To See

Before touching tags or bid strategies, standardise how you’ll calculate profit at order level. That choice matters more than any code snippet.

### 2.1 Fix Your Revenue Basis

Google’s own examples assume conversion value is usually **net revenue**, not including VAT or sales tax. (Source: [Google Ads Help – About conversion values](https://support.google.com/google-ads/answer/13064207))\
For US retailers, that normally means:

- Start from **item subtotal** (price after discounts).
- Exclude **sales tax** and any non-refundable duties from the value you send.

This keeps POAS consistent with how finance sees revenue.

### 2.2 Choose A Profit Definition You Can Maintain

Think in layers. A typical ecommerce stack looks like this per order:

- Item revenue (net of discounts)
- − [Cost of goods sold](https://www.productmetrics.io/glossary/cost-of-goods-sold) (product cost)
- − Variable order costs (shipping subsidies, payment fees, packaging, expected returns)
- = **[Contribution profit before ads](https://www.productmetrics.io/contribution-margin-calculator)**
- − Ad spend
- − Overheads and fixed costs
- = Net profit

Google’s gross profit metrics from conversions with cart data and `cost_of_goods_sold` stop at **revenue − COGS**. They don’t automatically subtract your shipping subsidies, payment fees or returns unless you fold those into COGS yourself. (Source: [Google Ads Help – Metrics with conversions with cart data](https://support.google.com/google-ads/answer/16564103), [Merchant Center Help – cost_of_goods_sold](https://support.google.com/merchants/answer/9017895))

![Waterfall of one €100 order: minus €50 COGS gives €50 gross profit, minus €20 variable order costs gives €30 contribution profit before ads, then ad spend and overheads leave €4 net profit. Illustrative data.](https://www.productmetrics.io/images/blog/poas-conversion-value-bidding/poas-value-profit-layers.webp)

_Google’s gross profit stops at revenue minus COGS (€50); the number worth bidding on is contribution profit before ads (€30)._

For POAS bidding, most retailers use one of three definitions:

1. **Minimum viable profit**: revenue − COGS.
2. **Contribution profit (recommended)**: revenue − COGS − variable order costs.
3. **Contribution profit including expected returns**: same as (2), but with a [return allowance per SKU](https://www.productmetrics.io/blog/ecommerce-return-rate).

![Table of three profit definitions for POAS bidding on a €100 order: minimum viable profit €50, contribution profit €34 (recommended), contribution profit including expected returns €30. Illustrative data.](https://www.productmetrics.io/images/blog/poas-conversion-value-bidding/poas-value-three-profit-definitions.webp)

_The same €100 order sends €50, €34 or €30 as conversion value, depending on the definition you choose._

Pick one that:

- You can compute **per order and per SKU** from your ecommerce platform.
- You can keep consistent across websites, currencies and channels.

This is the profit number we’ll send to Google Ads as conversion value.

## 3. How Google Ads Treats Conversion Value

Google Ads defines conversion value as the numeric amount you record for each conversion, which can represent revenue, profit margin or other business value. (Source: [Google Ads Help – About conversion values](https://support.google.com/google-ads/answer/13064207))

A few consequences for POAS:

- Bid strategies like **Target ROAS** and **Maximize conversion value** optimise for whatever number you send as `value`, not specifically revenue. (Source: [Google Ads Help – Bidding FAQ](https://support.google.com/google-ads/faq/10286469), [Google Ads Help – Smart Bidding using value-based bidding](https://support.google.com/google-ads/answer/15099424))
- Google’s value‑based bidding docs explicitly list **profit margins and lifetime value** as valid optimisation targets when used as conversion value. (Source: [Google Ads Help – Value-based bidding best practices](https://support.google.com/google-ads/answer/14792795))
- If you change from revenue to profit as conversion value, you must also change your Target ROAS so that the new ratio matches your profit expectations. (Source: [Product Metrics – Target ROAS meaning and margin formula](https://www.productmetrics.io/glossary/target-roas), [Think with Google – Maximise Growth with Data](https://services.google.com/fh/files/emails/maximise_growth_with_data.pdf))

So “bidding on profit” in Google Ads is not a special feature. It’s standard [Target ROAS](https://www.productmetrics.io/glossary/target-roas) or [Maximize conversion value](https://www.productmetrics.io/glossary/maximize-conversion-value), pointed at a profit‑based value column.

## 4. Route 1 - Send Profit Instead Of Revenue As Conversion Value

This route answers the queries:

- *“How to send profit instead of revenue as conversion value to Google Ads?”*
- *“How to pass gross profit per order to Google Ads?”*
- *“How to bid on profit in Google Ads without showing Google my margins?”*

At a high level:

1. Compute **order‑level profit** in your backend.
2. Pass that profit to your Google Ads conversion as the `value` field.
3. Point a Target ROAS or Maximize conversion value strategy at that conversion.

### 4.1 Compute Profit Per Order

On your ecommerce platform, for each order:

```text
net_revenue = sum(line_item_price_excl_tax_after_discounts)
product_cogs = sum(line_item_cogs)
variable_costs = shipping_subsidy + payment_fees + packaging + expected_returns

profit_before_ads = net_revenue - product_cogs - variable_costs
```

This is the number you’ll send to Google Ads.

If you cannot yet calculate all variable costs per order, start with **[revenue − COGS](https://www.productmetrics.io/blog/calculator-gross-profit)** and mark this as an interim definition while you expand cost coverage.

### 4.2 Map Profit To The `value` Parameter (Browser-Side)

If you use the Google tag directly, Google’s documentation shows how to dynamically pass a transaction‑specific value and currency via the `value` and `currency` parameters: (Source: [Google Ads Help – Track transaction-specific conversion values](https://support.google.com/google-ads/answer/6095947))

```html
<script>
  gtag('event', 'conversion', {
    'send_to': 'AW-XXXXXXXXX/YYYYYYYYYY',
    'transaction_id': 'ORDER_ID_123',
    'value': PROFIT_BEFORE_ADS,    // e.g. 42.15
    'currency': 'USD'
  });
</script>
```

In a Google Tag Manager Google Ads Conversion Tracking tag, you’d set **Conversion Value** to a variable that holds `profit_before_ads`. (Source: [Google Ads Help – Use the Google tag for conversion tracking](https://support.google.com/google-ads/answer/6095821), [Google Ads Help – Track transaction-specific conversion values](https://support.google.com/google-ads/answer/6095947))

From Google’s perspective, this is identical to sending revenue. It simply sees a number.

### 4.3 Server-Side And Offline Profit Uploads

If you don’t want profit visible in the page source at all, [compute it server-side](https://www.productmetrics.io/blog/what-is-server-side-tracking) and send conversions via:

- A server‑side tagging setup (for example, server‑side GTM or a first‑party endpoint) that forwards conversions to Google Ads with `value` set to profit. (Source: [Google Ads Help – How Google Ads tracks website conversions](https://support.google.com/google-ads/answer/1722054), [Google Developers – Reporting for Retail](https://developers.google.com/google-ads/api/docs/shopping-ads/reporting))
- Offline or API‑based conversion imports where each row includes `order_id`, `gclid` or `click_id`, conversion time and a **profit value**. (Source: [Google Ads Help – Import conversions](https://support.google.com/google-ads/answer/7014069), [Google Ads API – Upload conversions](https://developers.google.com/google-ads/api/docs/conversions/overview))

Google’s own value‑based bidding playbooks describe passing profit as conversion value via offline import or API for Search and Shopping. (Source: [Think with Google – Maximise Growth with Data](https://services.google.com/fh/files/emails/maximise_growth_with_data.pdf), [Think with Google – Making a Bid for Profit](https://services.google.com/fh/files/misc/make-a-bid-for-profit.pdf))

When everything runs server-side, neither Google nor anyone inspecting your checkout page sees raw COGS or per‑SKU margins.

![Diagram of two routes for the profit value: browser-side via the Google tag puts the value in the page source; server-side or offline import keeps COGS, fees and margins in the backend.](https://www.productmetrics.io/images/blog/poas-conversion-value-bidding/poas-value-browser-vs-server.webp)

_Google Ads receives the same profit value either way; only the server-side route keeps costs and margins out of the browser._

### 4.4 Adjust Target ROAS To Match Profit Values

Once profit flows into Google Ads as conversion value:

- **[Break-even POAS](https://www.productmetrics.io/break-even-roas-calculator)** is 1.0 (profit equals ad spend) when you use contribution profit. (Source: [Product Metrics – POAS vs ROAS](https://www.productmetrics.io/blog/poas-vs-roas))
- Your **Target ROAS** must now be set on that profit value instead of revenue; a revenue‑based target will be wrong. (Source: [Product Metrics – Target ROAS meaning and margin formula](https://www.productmetrics.io/glossary/target-roas), [Google Ads Help – Bidding FAQ](https://support.google.com/google-ads/faq/10286469))

A simple way to set the new targets is to work backwards from your contribution margin and desired profit after ads, as in Product Metrics’ target ROAS guide. (Source: [Product Metrics – How to set a target ROAS from your margin](https://www.productmetrics.io/blog/target-roas-from-margin))

![Comparison of one order with revenue versus profit as conversion value: €100 and ROAS 5 with break-even target ROAS 333%, against €30 and POAS 1.5 with break-even target ROAS 100%. Illustrative data.](https://www.productmetrics.io/images/blog/poas-conversion-value-bidding/poas-value-target-roas-switch.webp)

_After the switch, break-even target ROAS drops from 333% to 100%; keeping the old target asks Google for a POAS of 3.33._

## 5. Route 2 - Use Conversions With Cart Data And COGS For Gross Profit

If your main question is *“How to include cost of goods sold in Google Ads conversion value?”*, you can also use [Google’s native retail stack](https://www.productmetrics.io/blog/cogs-margin-google-shopping).

**Conversions with cart data** let you send item‑level cart contents with your purchase conversions (product IDs, quantities, prices). When you also provide `cost_of_goods_sold` in your Merchant Center feed, Google can calculate and report **revenue, gross profit, gross profit margin and units sold** per product. (Source: [Google Ads Help – About conversions with cart data](https://support.google.com/google-ads/answer/9028254), [Google Ads Help – Metrics with conversions with cart data](https://support.google.com/google-ads/answer/16564103), [Merchant Center Help – cost_of_goods_sold](https://support.google.com/merchants/answer/9017895))

At a high level:

1. Add `cost_of_goods_sold` for each product to your Merchant Center feed.
2. Implement conversions with cart data on your purchase event (via Google tag or GTM).
3. Link Merchant Center and Google Ads; enable conversions with cart data for the relevant conversions. (Source: [Google Ads Help – About conversions with cart data](https://support.google.com/google-ads/answer/9028254))

Once configured, Shopping and [Performance Max](https://www.productmetrics.io/performance-max) reports can show metrics such as **Gross profit** and **Gross profit margin** per product or product group. (Source: [Google Ads API – Retail reporting](https://developers.google.com/google-ads/api/docs/shopping-ads/reporting))

Limitations for POAS:

- These metrics use **gross profit = revenue − COGS**, without automatically subtracting your shipping support, payment fees or returns. (Source: [Google Ads Help – Metrics with conversions with cart data](https://support.google.com/google-ads/answer/16564103))
- Bidding still happens on the conversion value you send in the tag; gross profit reporting is an extra view rather than a new bid signal today. (Source: [Google Ads Help – About conversion values](https://support.google.com/google-ads/answer/13064207))

For many retailers, cart data + COGS is an excellent **reporting** layer, but they still move to Route 1 or a [server‑side setup](https://www.productmetrics.io/server-side-tracking) when they want bidding to fully reflect contribution profit.

![Table comparing Route 1, profit as conversion value, with Route 2, conversions with cart data plus cost_of_goods_sold, on what Google receives, costs covered, bidding and best use.](https://www.productmetrics.io/images/blog/poas-conversion-value-bidding/poas-value-two-routes.webp)

_Cart data with cost_of_goods_sold adds gross profit reporting; only the value you send in the tag changes what Smart Bidding optimises for._

## 6. Don’t Forget Refunds Cancellations And Adjustments

If Google Ads never hears about returns, your POAS is inflated and Smart Bidding is rewarded for customers who send goods back.

Google Ads supports **[conversion adjustments](https://www.productmetrics.io/blog/google-ads-refund-conversion-adjustments)** that either:

- **Restate** a conversion’s value (for partial refunds or discounts).
- **Retract** a conversion (for full cancellations/refunds). (Source: [Google Ads Help – About conversion adjustments](https://support.google.com/google-ads/answer/7686447))

You identify the original conversion (for example via `order_id` or `gclid` + timestamp), then upload an adjustment with the new kept value. (Source: [Google Ads API – Upload conversion adjustments](https://developers.google.com/google-ads/api/docs/conversions/upload-adjustments), [Google Data Manager API – Conversion adjustments](https://developers.google.com/data-manager/api/devguides/events/google-ads/conversion-adjustments))

A robust POAS setup usually:

1. Sends **initial profit** as conversion value when the order is placed.
2. On each refund or item return, sends a **RESTATE** adjustment with the updated profit (which may be zero or negative).
3. Automates this via an integration between the order system and Google Ads, on a daily or intra‑day schedule.

![Diagram of two orders each sending €30 profit: order A restated to €12 after a return, order B retracted after a full refund; POAS falls from 3.0 to 0.6 on €20 of ad spend. Illustrative data.](https://www.productmetrics.io/images/blog/poas-conversion-value-bidding/poas-value-refund-adjustments.webp)

_Without adjustments these two orders report a POAS of 3.0; on the profit actually kept, it is 0.6._

Google’s own value‑based bidding material explicitly recommends using conversion adjustments to reflect returns and profit in value-based setups. (Source: [Think with Google – Maximise Growth with Data](https://services.google.com/fh/files/emails/maximise_growth_with_data.pdf))

> **Grow revenue with the products that perform best.** Every product segmented on profit, so you know which ones get more priority. [Analyse your products for free](https://app.productmetrics.io/) Log in with Google, no credit card.

## 7. How To Keep Margins Confidential While Bidding On Profit

There are three complementary levers that let you run profit‑based bidding without exposing sensitive margins.

### 7.1 Keep All Cost Data Server-Side

When you compute profit from:

- Ecommerce platform data (prices, discounts, tax, COGS, shipping, fees).
- Order and refund status in your backend.

…and only send the **final profit value** to Google Ads via a server‑side endpoint or offline import, neither Google nor third parties see your margin table or item-level costs in the browser. (Source: [Product Metrics – Full Signal Tracking](https://www.productmetrics.io/server-side-tracking), [Google Ads Help – How Google Ads tracks website conversions](https://support.google.com/google-ads/answer/1722054))

This is the default approach in [server‑side tracking products](https://www.productmetrics.io/blog/server-side-tracking-tools) that “send profit to Google Ads and Meta,” including Product Metrics’ Full Signal Tracking. (Source: [Product Metrics – Full Signal Tracking](https://www.productmetrics.io/server-side-tracking))

### 7.2 Use Indexed Or Scaled Values Instead Of Currency

Google’s guidance on changing biddable conversion actions mentions “indexed values” on a different scale: you can store conversion value as an index rather than real currency amounts, as long as Target ROAS is recalibrated. (Source: [Google – Changing Biddable Conversion Actions](https://services.google.com/fh/files/misc/external_changing_biddable_conversion_actions.pdf))

In practice, that can mean:

- Storing **profit index = profit_before_ads ÷ X**, where X is a constant known only to your team.
- Or multiplying profit by a constant so that £12.34 of profit might appear as a value like `123.4` in Google Ads.

Because Target ROAS and Maximize conversion value care about **relative differences** and total value, not absolute currency, constant scaling preserves optimisation behaviour; you simply set a Target ROAS that matches the new scale. (Source: [Google Ads Help – About conversion values](https://support.google.com/google-ads/answer/13064207), [Think with Google – Maximise Growth with Data](https://services.google.com/fh/files/emails/maximise_growth_with_data.pdf))

![Table of profit values scaled by a constant of 10: £12.34 becomes 123.4, £24.68 becomes 246.8, the 2 to 1 ratio holds and break-even target ROAS moves from 100% to 1,000%. Illustrative data.](https://www.productmetrics.io/images/blog/poas-conversion-value-bidding/poas-value-indexed-scaling.webp)

_Multiplying every profit value by 10 keeps the ratios between orders; only the target ROAS moves, from 100% to 1,000%._

If you use Google’s **conversion value rules**, you can also apply multiplicative factors on top of recorded values for specific audiences or conditions, which underscores that the bidding system is comfortable with scaled values. (Source: [Google Ads API – Conversion value rules](https://developers.google.com/google-ads/api/docs/conversions/conversion-value-rules), [WordStream – How to Use Conversion Value Rules](https://www.wordstream.com/blog/conversion-value-rules))

### 7.3 Limit Who Sees Profit In Your Reporting Stack

Even when profit values live in Google Ads, you can:

- Restrict account access to users who need to see value columns.
- Use custom columns that show **POAS and profit after ads** without revealing item‑level COGS. (Source: [Google Ads Help – Custom columns](https://support.google.com/google-ads/answer/9444075))

Combined with server‑side computation and scaling, this lets you run [full POAS optimisation](https://www.productmetrics.io/blog/poas-vs-roas) while keeping underlying margins confidential.

> **Bid on profit in Google Ads and Meta.** Full Signal Tracking sends profit server-side and gets through every adblocker. Sends revenue, profit and new customers to Google Ads and Meta. [Book a demo](https://www.productmetrics.io/demo)

## 8. How To Include COGS Shipping And Fees In Google Ads Conversion Value

A common edge question is whether **shipping costs** and **payment fees** should be included when you set up profit‑based conversion values.

A practical rule of thumb:

- Include **any cost that varies meaningfully by order or SKU** and that you want Smart Bidding to internalise.
- Exclude fixed overheads (salaries, rent) and handle them outside Google Ads in your [required POAS target](https://www.productmetrics.io/blog/target-roas-from-margin).

For most retailers that means:

- **COGS**: always include. Either directly per SKU in your own database or via Merchant Center `cost_of_goods_sold`. (Source: [Merchant Center Help – cost_of_goods_sold](https://support.google.com/merchants/answer/9017895))
- **Shipping**: include any shipping subsidy you pay (for example, free shipping or flat‑rate shipping that doesn’t fully cover your carrier cost).
- **Payment fees**: include card/PayPal/BNPL fees per order.
- **Returns**: include an expected return cost per category or product, or adjust via conversion adjustments when actual returns happen. (Source: [Google Ads Help – About conversion adjustments](https://support.google.com/google-ads/answer/7686447))

![Checklist of costs for a profit-based conversion value: include COGS, shipping subsidy, payment fees and returns; leave salaries and rent out and cover them with the POAS target.](https://www.productmetrics.io/images/blog/poas-conversion-value-bidding/poas-value-cost-checklist.webp)

_Costs that vary by order or SKU go into the value; fixed overheads stay out and are covered by the POAS target._

Technically, there are two main ways to get these costs into value:

1. **Directly in your profit formula**, before you send `value`.
2. By **folding some items into COGS** so that Google’s gross profit metrics consider them as part of product cost. (Source: [Merchant Center Help – cost_of_goods_sold](https://support.google.com/merchants/answer/9017895), [Google Ads Help – Metrics with conversions with cart data](https://support.google.com/google-ads/answer/16564103))

Either way, the goal is the same: the `value` Google sees should reflect the **profit you are actually willing to trade for ad spend**.

## 9. Running A Safe POAS Experiment In Google Ads

You don’t have to flip an entire account to POAS in one step. Google strongly recommends phasing value-based bidding in, normally over several weeks, to let models learn from new value signals. (Source: [Google – Value-based bidding best practice guide](https://services.google.com/fh/files/emails/value_based_bidding_best_practice_guide.pdf))

Here is a practical experiment pattern for ecommerce:

### Step 1 - Add A Profit-Based Conversion Action No Bidding Yet

1. Create a new **Purchase – profit** conversion action in Google Ads that records profit as `value`. (Source: [Google Ads Help – Set up conversion tracking for your website](https://support.google.com/google-ads/answer/6095821))
2. Implement tagging so this action fires on purchases with your chosen profit formula.
3. Initially set it as **secondary** (not used for bidding) so you can collect data without disrupting existing strategies. (Source: [Google – Changing Biddable Conversion Actions](https://services.google.com/fh/files/misc/external_changing_biddable_conversion_actions.pdf))

Run this for a few weeks until profit data is stable and matches your backend totals within a tolerable margin.

### Step 2 - Build POAS Views In Reporting

Using Google Ads custom columns, create:

- **POAS** = `conversion value (profit) ÷ cost` for the profit action.
- **Profit after ads** = `conversion value (profit) − cost`.

That gives you an account‑native view of **“how to calculate profit inside of Google Ads”** without exporting everything to spreadsheets. (Source: [Google Ads Help – Custom columns](https://support.google.com/google-ads/answer/9444075))

### Step 3 - Run A Campaign-Level Experiment On Target ROAS

Use Google Ads Experiments to A/B test profit‑based bidding: (Source: [Google Ads Help – Set up a custom experiment](https://support.google.com/google-ads/answer/6261395), [Google – Test Campaigns with Ads Experiments](https://business.google.com/ad-tools/google-ad-experiments/))

1. Pick a Shopping or Performance Max campaign with enough volume.
2. Create a **Custom experiment** that duplicates the base campaign.
3. In the experiment campaign:
   - Switch the bidding strategy to **Target ROAS** or **Maximize conversion value with a Target ROAS** on the **profit** conversion.
   - Set an initial Target ROAS aligned with your break-even POAS and profit goals. (Source: [Product Metrics – How to set a target ROAS from your margin](https://www.productmetrics.io/blog/target-roas-from-margin), [Google Ads Help – Bidding FAQ](https://support.google.com/google-ads/faq/10286469))
4. Split traffic (for example, 50/50) and run long enough to get statistically useful POAS and revenue readings.

![Three-step POAS experiment in Google Ads: add a secondary profit conversion action, build POAS and profit-after-ads custom columns, then run a 50/50 custom experiment on one Shopping or Performance Max campaign.](https://www.productmetrics.io/images/blog/poas-conversion-value-bidding/poas-value-experiment-plan.webp)

_Collect profit as a secondary action, report POAS in custom columns, then test Target ROAS on profit against current bidding in a 50/50 split._

You’re now testing **“how to bid on profit in Google Ads”** in a controlled way, with a clear rollback path if needed.

## 10. Where Product Metrics Fits In

Doing all of the above manually is possible. It is also a lot of engineering and operations work:

- Joining order data, COGS and variable costs reliably for each SKU.
- Capturing [click IDs](https://www.productmetrics.io/glossary/gclid) first‑party so [adblockers don’t break attribution](https://www.productmetrics.io/ad-blocker-conversion-tracking).
- Maintaining conversion adjustments for refunds and returns.
- Keeping profit, revenue, new vs returning customers and LTV aligned across Google Ads and Meta.

Product Metrics was built specifically to solve this for Google Shopping and Performance Max. (Source: [Product Metrics – About](https://www.productmetrics.io/about))

With **Full Signal Tracking**, Product Metrics: (Source: [Product Metrics – Full Signal Tracking](https://www.productmetrics.io/server-side-tracking))

- Runs a first‑party, auto‑rotating endpoint on your domain that survives adblockers and browser privacy changes.
- Reads orders, margins and customer history from [platforms like Shopify, WooCommerce, Magento, Lightspeed and Shopware](https://www.productmetrics.io/platforms).
- Keeps the Google Click ID server-side and deduplicates orders.
- Sends **five conversion actions** to Google Ads from each order: revenue, profit, new customer, returning customer and lifetime value.

> **Sidenote:** Full Signal Tracking sends the same signals to Meta as well: revenue, profit, new and returning customers and lifetime value.

That gives you:

- **Clean POAS and ROAS per product**, even under heavy adblocking.
- Profit as a first‑class conversion signal for Shopping and PMax bidding.
- The ability to run POAS experiments quickly without building and maintaining your own tracking stack.

If you want to go deeper from here, two good next reads are Product Metrics’ guides on **POAS vs ROAS** and **setting Target ROAS from your margin**, which show the maths behind the targets you’ll plug into your experiments. (Source: [Product Metrics – POAS vs ROAS](https://www.productmetrics.io/blog/poas-vs-roas), [Product Metrics – How to set a target ROAS from your margin](https://www.productmetrics.io/blog/target-roas-from-margin))

And when you’re ready to see what profit-based bidding looks like on your own catalogue, Product Metrics can analyse your product-level ROAS and POAS and set up server-side profit tracking for you. (Source: [Product Metrics – About](https://www.productmetrics.io/about), [Product Metrics – Full Signal Tracking](https://www.productmetrics.io/server-side-tracking))

## Keep reading.

- [Operationalizing POAS: Best Practices, Governance, and Analysis](https://www.productmetrics.io/blog/operationalizing-poas)
- [Best POAS Tracking Tools for E‑commerce and Google Ads A Practical Buyer’s Guide](https://www.productmetrics.io/blog/poas-tracking-tools)
- [Google Ads Match Types: Broad, Phrase and Exact Compared](https://www.productmetrics.io/blog/google-ads-match-type)

---

Written by Berend Vrakking, founder of Product Metrics. Last updated 2026-11-09.

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

HTML version: https://www.productmetrics.io/blog/poas-conversion-value-bidding
