← All questionstROAS Campaigns

How do I check that the conversion value being passed to tROAS is accurate?

What to check before you touch anything

  • What exactly is being passed as "value" — the full order amount (revenue), or an amount already net of discounts, shipping, and taxes? Different systems (your website, your CRM, Google Ads) may define "value" differently, and it's worth cross-checking line by line on a handful of real orders.
  • Are refunds and cancellations accounted for? If value is passed at the moment the order is placed and never adjusted afterward, ROAS will be systematically overstated relative to the business's real profit.
  • Does the currency and its conversion line up (if you have multi-currency orders)? A mismatched exchange rate or double conversion is a common technical cause of distorted value.
  • Is value being passed twice from more than one tag/source (say, the native Google Ads tag and a GA4 import running at the same time)? In that case, the same transaction's value could be counted twice.
  • How different is the "raw" value (revenue) from the business's real margin-based value? ROAS calculated on revenue and ROAS calculated on margin can lead to fundamentally different conclusions about the same campaign's performance.
  • Manually verify a handful of specific orders (from the click all the way to the final amount shown in the Google Ads report) — this is the most reliable way to confirm the value pipeline isn't distorted somewhere along the chain.
  • Which specific metrics in the UI and API actually show the value Google is really seeing and using. In the interface (UI), pull up the "Conv. value" column (value from your primary "Conversions" goal) and "All conv. value" (value from every counted action, including second-tier ones) — compare them to each other rather than looking at just one. The derived metrics "Value / cost" (your actual ROAS) and "Value / conv." (average value per conversion) are also useful — sharp swings in these at a stable volume often point to a problem in how value is being passed, not a real change in sales. In the Google Ads API (or GAQL queries), the relevant fields at the campaign/group/keyword level are metrics.conversions_value and metrics.all_conversions_value — cross-check these against metrics.conversions_value_by_conversion_date if you need to look by the date of the conversion itself rather than the date of the click (which matters a lot with a long sales cycle).
  • If a campaign is optimizing toward more than one goal at once (multiple conversion actions running simultaneously) — which by itself can complicate and dilute how the bid strategy performs — you need to look at value broken out by the specific conversion action (segments.conversion_action in the API, or "Conversion action" segmentation in the interface), not just the combined total. Otherwise it's easy to miss a situation where one conversion action is passing a wildly overstated or understated value, invisible at the aggregate level because it's masked by the blended average across all goals.

Possible approaches

  • If value is being passed incorrectly (refunds, discounts, shipping not accounted for), fix the underlying data pipeline technically first, before drawing any conclusions about campaign performance from ROAS.
  • Google recommends passing dynamic conversion value as close as possible to the real transaction amount, including refund adjustments where feasible (via the Adjustments API or manual conversion adjustments) — this is considered more accurate than a fixed average value.
  • If the business wants to optimize toward margin rather than revenue, you can pass the calculated margin instead of the full order amount as the conversion value (or use value rules to adjust value across categories with different margins), so bid optimization better reflects real profitability.
  • For multi-currency or multi-region accounts, separately test that currency conversion is accurate on a few transactions in different currencies before trusting aggregated ROAS reports.
  • If duplicate value sources are found, explicitly decide which source (native tag or import) is the one to use for optimization, and disable or correct the duplicate rather than leaving both active at once.
  • If a campaign is optimizing toward several goals at once and the breakdown by conversion action shows a clear value skew between them, consider whether those goals should be split into separate campaigns or whether each goal's value should be corrected individually, rather than relying on the aggregated figure, which can mask a problem in one specific conversion action.