Stefan RiemeyerGoogle Ads Freelancer

Margin as conversion value: how to implement it and what to watch

How margin reaches the conversion value server-side, how to recalculate target ROAS, switch without a learning dip and price in returns.

Stefan Riemeyer/Updated 3 November 2026/6 min read

Worked example, hypothetical Target ROAS Target ROAS Value = revenue 500% Value = margin × 0.28 140% Same bid level, new weighting

Margin belongs in the value, but not in the browser

Margin as conversion value is technically simple and commercially delicate. According to Google, the value that value-based bidding maximises can be revenue, margin or another business value. The problem lies in the consequences: where the margin is calculated, who can see it, what happens to target ROAS and reports, and how returns get in. Why steering by profit is worthwhile at all, and in which stages you get there, is covered in steering Google Ads by profit. This article is about implementation.

The usual guide writes the margin per item into the dataLayer and has the tag form the value from it. That puts your margin in the source code of the order confirmation. Every customer, including any competitor placing a test order, can read it in the browser, as mohrstade also points out. For a retailer who negotiates with suppliers or is in a price war, that is no small matter.

How does the margin get into the tag without becoming visible?

The clean route: only order ID, item IDs, quantities and revenue leave the browser, as before. The margin is added only on the server. In the server-side Google Ads tag, the conversion value can be set from a variable instead of the default value. You fill this variable server-side, for example through a lookup against a margin table per item or category. Whether a server container is worth it for you anyway is covered in server-side tracking.

If you do not want to run a server container, there are two alternatives. First: the shop calculates the margin in the backend and passes it on without it ever appearing in the browser. Second: you do not pass a true margin but an approximate value. According to Google, approximate values are acceptable where exact values are hard to determine. I consider margin classes the best compromise: three to five tiers per category, as a factor on revenue. They are easier to maintain, reveal less if in doubt and are accurate enough for bidding. The classes can follow your margin groups.

Two details that often go wrong:

  • Value 0. Items with zero or negative margin must not run with a value of 0. For value-based bidding, Google advises against conversions with a value of 0. I would rather take such items out of advertising than give them an artificial value.
  • Which margin. Gross profit (net revenue minus cost of goods) is the minimum. A contribution margin that also deducts shipping, payment fees and packaging is better. Which items belong in it is covered in costs in the contribution margin.

Returns belong in the value, not in the correction

Many people plan to deduct returns afterwards using a conversion adjustment. For bidding, that achieves little. According to Google, value adjustments count for automated bidding only within seven days of the conversion, and in total they are possible for 54 days. Google also recommends uploading adjustments no earlier than 24 hours after the conversion. With the usual return periods, a large share of returns probably arrives only after that.

My assessment: the expected return rate belongs in the value at the time of purchase. The calculation per item or category:

Value passed = margin × share kept − return rate × cost per return

Worked example, hypothetical: an item brings €40 margin, the category's return rate is 30%, and each return costs €8 for shipping and reprocessing. The value passed is 40 × 0.7 − 0.3 × 8 = €25.60. The bid strategy therefore learns from the start on the amount that stays with the retailer on average. Later adjustments for actual returns only keep the reports clean. This does not apply to ranges with a very low or very even return rate, where the deduction hardly changes the ranking of items. More on the role of returns in returns as a media topic.

40 −12 −2.40 25.60 Margin per order Returns 30% Cost €8 per return Value to Google Euro, hypothetical worked example
Worked example: expected returns come out of the value at the time of purchase.

What happens to the reports?

After the switch, the Conversion value column shows the margin, no longer revenue. The ROAS in the interface becomes a margin ROAS and looks correspondingly low. In the worked example it falls from 500 to around 140%, which needs explaining internally beforehand.

You keep the revenue through a second conversion action. According to Google, primary actions appear in the Conversions column and drive bidding, while secondary actions count only under All conversions and serve for observation. The revenue action therefore becomes secondary and the margin action primary. Both must count the same order, otherwise you are comparing unlike quantities.

Separate from this is cost of goods in Merchant Center. Conversions with cart data combine the transmitted items with the cost of goods from the feed to give gross profit metrics. This is a reporting function, and bids continue to follow the value passed. It is still useful as a check on whether the transmitted margin value is plausible. The precondition: the item IDs in the conversion tag exactly match the id in the feed.

How do you switch without a learning dip?

The learning dip does not come from the margin but from two mistakes: target and value basis are changed separately, or the new target is a guess. According to Google, a significant change to conversion goals or actions triggers the Learning status, for a maximum of seven days. A change to the target ROAS, by contrast, does not trigger a learning phase and does not delete history data. You cannot avoid changing the primary action, but you can avoid a wrong target.

The sequence I recommend:

Step What happens Duration
1. Measure in parallel Set up the margin action as a secondary action, revenue stays primary at least 4 weeks
2. Determine the ratio Margin value divided by revenue value, per campaign once
3. Switch Margin action primary, revenue secondary, new target in the same step one day
4. Hold still No further target changes 1 to 2 conversion cycles

The four weeks in step 1 follow Google's recommendation to collect at least four weeks or three conversion cycles of consistent values before value-based bidding. During this time you also check whether both actions count the same number of orders.

The calculation for the new target: new target ROAS = old target ROAS × (margin value ÷ revenue value). Worked example, hypothetical: a campaign ran with a target ROAS of 500% on revenue. In the parallel phase, the margin value was 28% of the revenue value. The new target is 500 × 0.28 = 140%. That way the campaign bids at a similar level to before on day one, only with a different weighting between items. Calculating the ratio per campaign matters because campaigns with high-margin ranges would otherwise start too tight and low-margin ones too generous.

After that, according to Google: it can take one to two conversion cycles for performance to settle at a new target, and you should avoid several target changes within one cycle. Whether you later shift the target towards the profit maximum is a separate decision, see changing target ROAS. How to read the metric behind it is explained in POAS instead of ROAS.

When it is not worth it

If your margin is almost the same across the range, a margin value changes nothing about the ranking of items. The margin value is then just revenue times a fixed factor, and you achieve the same effect by deriving the revenue-based target ROAS from the margin. You save yourself server logic, maintenance of the margin table and explaining the new reports.

I would switch if margins differ clearly between categories or brands and enough conversions come in per campaign for the bid strategy to be able to learn the differences at all. A further reason against: if the margin data in the inventory system is not cleanly maintained, Google optimises on errors. In that case, clean up the purchase prices first, then switch.

Further questions

Is it enough to store cost of goods in Merchant Center?

For reports, yes. For bidding, no. Cost of goods in the feed, together with cart data, provides gross profit metrics in reporting. The bid strategy continues to optimise on the value that the conversion action passes.

Does the margin have to be accurate to the cent?

No. Google explicitly allows approximate values. Margin classes per category are usually enough, and they are easier to maintain and to protect than exact values per item.

Sources

  1. About value-based bidding, Google Ads Help
  2. About conversions with cart data, Google Ads Help
  3. Set up Google Ads conversions with server-side tagging, Google for Developers
  4. About primary and secondary conversion actions, Google Ads Help
  5. About bid strategy statuses (Learning), Google Ads Help
  6. About conversion adjustments, Google Ads Help
  7. Optimierung von Google Ads und Search Ads 360 auf Basis produktspezifischer Margen (optimising Google Ads and Search Ads 360 on product-specific margins), mohrstade (in German)
Stefan Riemeyer

Stefan RiemeyerIndependent Google Ads freelancer for e-commerce in the DACH region. I work on every account I manage myself. How I steer accounts by contribution margin.

Request a free audit

Read next