A B2B account shows £72,000 of conversion value against £12,000 of ad spend: 6.00x ROAS. The CRM then reveals that one £20,000 opportunity was imported twice and a cancelled £12,000 contract was never removed. The inaccurate ROAS data survived three monthly reviews because the total looked plausible.
The correction is not subtle:
- Reported ROAS: £72,000 ÷ £12,000 = 6.00x
- Corrected ROAS: (£72,000 − £20,000 − £12,000) ÷ £12,000 = 3.33x
Whether 3.33x is commercially strong is a separate decision. First establish whether the value is real. The wider reasons platform-reported Google Ads ROAS can mislead include attribution and incrementality. Here, the job is narrower: find the broken hand-off and fix it.
How inaccurate ROAS data reveals itself
Most discrepancies fall into three categories: value is overstated, genuine value is missing, or two accurate systems are grouping the same events differently.
Do not start by forcing dashboard totals to agree. Select 10–20 known records across successful leads, won deals, losses and cancellations. Trace each one through this chain:
Ad interaction → confirmed website action → CRM record → opportunity → finance-approved value
Record the conversion action, event time, click identifier, opportunity or order ID, value, currency and status at each hand-off. The first field that changes or disappears tells you where to investigate.
This article tests the integrity of those inputs. It does not redefine profitability. If the platform value is clean but the commercial return still feels inflated, use a true ROAS calculation based on net realised revenue and fully loaded acquisition cost.
Four causes that overstate ROAS data
1. The same event enters Google Ads twice
Symptom. Conversions appear in exact multiples, share near-identical timestamps, or one enquiry appears under two conversion actions.
Cause. A native Ads tag runs alongside a GA4 import; a hard-coded tag duplicates Google Tag Manager; or both browser and server events arrive without a shared ID.
Fix. Complete one real conversion with Tag Assistant open. Retain one authoritative route and make the duplicate action Secondary while it is removed. Pass a unique transaction or order ID where supported. Google’s transaction ID guidance is a safeguard within the relevant conversion action; it does not make two Primary actions safe.
2. The trigger records intent, not completion
Symptom. Ads records more form conversions than the CRM receives, especially when validation errors or payment failures are common.
Cause. The event fires when somebody clicks Submit, reaches a generic page, or begins a booking. None proves the backend accepted the action.
Fix. Fire the conversion only after a confirmed success response from the website, booking system or CRM. Push that confirmation into the data layer with a stable event ID. Test an invalid form, a timeout, a double-click, a refresh and the browser back button. Each failed path should produce zero conversions; the successful path should produce one.
3. The counting setting does not match the outcome
Symptom. One prospect creates several lead conversions after repeated submissions, or several genuine purchases are collapsed into one.
Cause. The conversion action uses “Every” for a non-additive lead or “One” for additive sales.
Fix. Google’s conversion counting guidance recommends “One” for leads and “Every” for transactions. Treat that as a guardrail, not CRM deduplication: “One” applies per ad interaction, not per person or company. Use a durable lead, opportunity or order ID to control the business record itself.
4. The value or currency payload is wrong
Symptom. Every action is worth exactly £1,000, values are 100 times too high, or USD contracts appear as GBP.
Cause. A default value replaces the live amount; the integration sends pence as pounds; the wrong CRM field is mapped; or value and cost use different currencies or VAT bases.
Fix. Inspect the live tag or import payload, then reconcile at least ten IDs against the source system. Send decimal major units with an explicit ISO currency code, and document whether values include VAT. Google explains how supplied currencies are converted in its conversion value settings. If a fixed value is intentional, it is a proxy—see cause 10.
Four causes that hide genuine conversion value
5. A real conversion happens on an untracked path
Symptom. CRM lead volume is stable, but one form, device, landing-page template or booking journey disappears from Ads after a release.
Cause. A single-page application changes state without loading the tagged thank-you page; an embedded form never exposes success; a content-security rule blocks the request; or the latest container was not published everywhere.
Fix. Inventory every live success route, including mobile, embedded forms and alternate landing pages. Trigger from a confirmed application callback or server outcome rather than a visual page change. Test production, not only a tag-manager preview. Where the browser cannot observe the outcome reliably, send the governed CRM result instead.
6. The ad-click identifier disappears before the CRM
Symptom. The enquiry exists, but its campaign is blank or “direct”, and offline match rates fall after a redirect or domain migration.
Cause. Auto-tagging is disabled; a redirect strips GCLID, WBRAID or GBRAID; cross-domain linking is absent; or a hidden attribution field is overwritten before submission.
Fix. Enable auto-tagging and preserve available identifiers in first-party storage and immutable CRM fields. Google confirms that auto-tagging attaches the click identifier used for offline attribution. Test the actual redirect, cookie banner, domain change and form submission from a tagged URL. UTMs are useful context, but they do not replace a lost identifier for a click-ID import.
7. Consent and first-party measurement are misconfigured
Symptom. Tracking drops sharply by browser or geography immediately after a consent-management platform change, while CRM demand remains steady.
Cause. Consent defaults and updates fire in the wrong order, some templates block tags after consent, or enhanced-conversion fields are empty or malformed.
Fix. Test both accept and reject journeys in Tag Assistant and confirm the saved choice persists. The implementation must honour the user’s decision; Consent Mode communicates that decision rather than obtaining it. Where permitted, consented first-party email or phone data can improve matching through enhanced conversions for leads. It will not repair a duplicate event, a false trigger or a bad value.
8. The measurement window ends before the sale
Symptom. Recent cohorts backfill slowly, yet older B2B wins never appear in Ads even though the CRM still links them to paid search.
Cause. The chosen conversion window is shorter than the observed buying cycle, or offline outcomes are uploaded after the platform can accept them.
Fix. Segment campaigns by days to conversion and measure the account’s actual lag instead of assuming a standard cycle. Google’s conversion-lag reporting exists for this reason. Set the window accordingly within platform limits, upload eligible outcomes daily, and retain CRM acquisition cohorts as the authority for sales cycles that extend beyond those limits.
Four causes that break CRM and finance reconciliation
9. Offline imports are rejected or mapped incorrectly
Symptom. Website leads appear, but qualified and closed-won actions arrive in batches, remain at zero or show row-level errors.
Cause. The integration uses the wrong action name, account, timestamp, time zone, currency or identifier format. Expired credentials and changed CRM field names can stop an otherwise sound setup without an obvious front-end error.
Fix. Inspect accepted, rejected and unmatched rows separately. Correct the source mapping, retry eligible records and automate a daily import through Data Manager or a supported CRM connection. Use the actual stage-change time, an immutable opportunity ID and the correct action. Google’s lead-import implementation checklist is useful for checking the current required fields and diagnostics.
10. Estimated lead values are presented as booked revenue
Symptom. “Revenue” increases whenever lead volume rises, even though closed-won revenue is flat.
Cause. A form fill carries a fixed £2,000 value, or probability-weighted pipeline is summed as if every opportunity had closed. Some accounts then import the final sale as well, counting the proxy and outcome together.
Fix. Keep expected pipeline value separate and label it as an optimisation estimate. Reserve realised ROAS for a governed closed, collected or recognised revenue field, chosen consistently with finance. If an early-stage action must remain Primary for bidding volume, its value still does not become booked revenue. This is a naming and data-governance fix, not a bidding trick.
11. CRM revenue is duplicated or never adjusted
Symptom. Several contacts carry the full value of one opportunity, or cancelled and reduced contracts retain their original amount in Ads.
Cause. Revenue is imported at person level without a unique opportunity ID, and later CRM changes do not produce retractions or restatements.
Fix. Deduplicate at opportunity or order level and use that durable ID from CRM through Ads. Send a retraction for a void outcome and a restatement for a revised value, then reconcile the cohort to finance. Google documents both methods in its conversion adjustment guidance. This is the fault that turned the opening account’s apparent 6.00x into 3.33x.
12. Reports use different dates, scopes or attribution rules
Symptom. Individual conversion IDs and values match, but Ads, GA4 and CRM disagree by month or channel.
Cause. Standard Google Ads columns assign conversions to the ad-interaction date, while a CRM commonly uses the stage-change or close date. Time zones, conversion windows, included actions and attribution scope create further differences. Two ad platforms may also claim the same sale.
Fix. For event-date reconciliation, use Ads columns labelled “by conv. time”, then align action set, currency, time zone and attribution window. Google describes these date bases in its conversion-data guidance. Compare matched IDs before headline totals, and never add platform-attributed revenue together as if it were unique business revenue.
How to validate corrected ROAS data
Run one successful action, one failed action and one cancellation through the full chain. Confirm that the success fires once, the failure fires zero times, the ID and value reach the CRM, the import is accepted once, and the cancellation changes the original record.
Mark the repair date. Most setting changes improve future collection rather than rewriting history, so do not silently blend old and new definitions. Allow normal processing time and a representative conversion cycle before judging the repaired campaigns.
For broader implementation coverage, use the complete ROAS tracking checklist. The same measurement ownership should be explicit in any Google Ads management engagement, and it should sit behind case studies that quote campaign returns. A lower corrected ROAS is not a performance failure. It is a number you can finally use.
FAQ
Why is Google Ads ROAS higher than GA4 or the CRM?
The systems may include different conversion actions, use different attribution scopes, place the same event on different dates or operate in different time zones. Reconcile transaction or opportunity IDs first. If the IDs match, build an explainable bridge between the totals rather than treating every difference as a tracking fault.
Can I use a fixed value for a B2B lead?
Yes, as a clearly labelled optimisation proxy based on defensible historical data. No, as a substitute for realised revenue. Keep expected lead value and closed-won ROAS separate, particularly if both actions feed the same account.
How soon can I trust ROAS after fixing tracking?
A duplicate tag or wrong value can be verified immediately with controlled tests, but campaign data still needs normal processing time and enough of the sales cycle to mature. Mark the cutover date, adjust eligible historical conversions where possible, and do not compare a newly corrected week with contaminated historical data.
Does accurate ROAS mean the campaign is profitable or performing well?
No. Accuracy tells you that the numerator, denominator and attribution basis are coherent. Profitability needs commercial cost and margin data; performance also needs context. Only after the data is clean should you compare it with the 2026 B2B Google Ads benchmark guide.
Summary
- Classify the gap as overstated value, missing value or a legitimate reporting difference.
- Test the event, action, count and payload before changing campaigns or bids.
- Preserve click identifiers and consent-safe first-party signals through the CRM.
- Deduplicate at opportunity level and send later value adjustments back to Ads.
- Compare matched IDs, dates, currencies and attribution scopes before trusting ROAS.
Actualyse builds measurement and attribution setups that tie B2B ad spend to real revenue. Book a call to talk through where yours stands.

