A store came to us reporting 3.8x return on ad spend in Google Ads and 4.2x in Meta. Leadership was about to scale the budget on those numbers. We pulled thirty days of ad spend against thirty days of actual store revenue and the blended figure was 1.9x. The platforms were not lying, exactly. Each one was counting the same orders, claiming the same conversions, and reporting against its own optimistic model. Stacked together they described a business that did not exist.
That gap is the entire reason to run a Google Ads audit, and it is the reason a free audit score will never find it. The grader tools read the account: quality scores, ad extensions, disapproved ads, budget caps. All real, all worth fixing, and none of it answers the only question that changes a budget decision - is the ROAS this account reports actually the money the business made?
A Google Ads audit is a systematic review of whether an account's conversions, spend, and reported returns can actually be trusted - not a settings score, but a reconciliation against GA4 and the store of record. Here is the Google Ads audit checklist I work through for ecommerce brands, in the order the findings tend to matter. It is grouped into four layers: conversion tracking, spend allocation, the feed and audiences Google spends against, and attribution. The settings layer is the shortest, on purpose.
Why the free "audit score" misses the money
Search for a Google Ads audit and you will be offered a free grader that returns a number out of 100. It scans the account surface in seconds. That is genuinely useful for catching lazy hygiene problems, and if your score is low on ad strength or you have twelve disapproved ads, fix those.
But a scan cannot cross the account boundary. It cannot open GA4, it cannot see Shopify, and it therefore cannot tell whether a single conversion the account reports is real. The most expensive problems in a paid search account are invisible from inside the account:
- Conversions that fire but carry no revenue, or fire twice
- Performance Max buying branded searches you would have won organically for free
- A product feed quietly disapproving your best sellers
- Reported ROAS that no reconciliation survives
None of those show up as a bad grade. They show up when you put the account next to the store of record, which is what a real audit does.
Layer 1: is conversion tracking even telling the truth?
Everything downstream inherits from this. If the conversions are wrong, every optimization, every automated bid, and every ROAS number is built on sand. Google's automated bidding optimizes toward whatever you told it a conversion is, so a tracking error does not just misreport - it actively steers spend the wrong way.
Work through these before touching a single campaign setting:
- Do the purchase conversions carry real revenue? In a delivered tracking audit we found a property where all eight Google Ads conversion actions read zero while GA4 was reporting roughly 526,000 "conversions" over 90 days with $0 revenue attached. Engagement events had been marked as key events; the real purchase event never fired. Smart Bidding had been optimizing toward noise for months.
- Does each purchase fire once? Duplicate conversion tags, a tag firing in a native app iframe as well as through GTM, or enhanced conversions layered on top of a hard-coded tag will double-count. Google's enhanced conversions improve match quality when set up cleanly, but stacked on an existing conversion action they inflate the count.
- Is the conversion action counting "one per click" for purchases, not "every"? Every-conversion counting is correct for lead forms and wrong for ecommerce checkouts that can be reloaded.
- Do the conversion windows and categories match how you actually report? Confirm against Google's conversion tracking setup that primary and secondary actions are assigned deliberately, not by default.
This is the same discipline as a GA4 audit checklist: the settings panel is not the audit, event quality and reconciliation are.
Layer 2: where the budget actually goes
Once you trust the conversions, follow the money. In most ecommerce accounts the largest, least-inspected line item is Performance Max.
- Is Performance Max cannibalizing brand? PMax will happily serve against searches for your own brand name and book those conversions as its own - conversions you would have captured organically or through a cheap brand campaign. Performance Max exposes far less than the classic search terms report does on standard campaigns, which is exactly why brand contamination hides inside it. Segment branded from non-branded demand before you judge PMax ROAS.
- What are the actual search terms costing you money? Pull the search terms report on standard campaigns and read it. Match-type creep - broad match quietly expanding into irrelevant queries - is the most common source of waste we find, and it compounds when Smart Bidding is chasing bad conversion data from Layer 1.
- Brand versus non-brand, separated. Blended account ROAS almost always looks fine because brand search props it up. Split them and the true cost of new customer acquisition appears.
The point of this layer is not to kill campaigns. It is to see the account the way the money sees it, which is rarely how the default reporting frames it.
Layer 3: the feed and audiences Google spends against
Google does not just spend against your bids. It spends against your product feed and your audience definitions, and both fail silently.
- How much of your catalog is actually eligible? In a delivered paid media audit we found roughly 11% of a catalog silently disapproved in Merchant Center - a price mismatch after a currency-app update, plus missing GTINs on one product line - and it included best sellers. Shopping and PMax simply stopped showing the store's best products, and nothing in the campaign view announced it. Check Merchant Center against Google's product data disapprovals guidance, not the Ads interface.
- Are your exclusion audiences still working? In another audit a purchaser-exclusion audience had quietly frozen when the event it was built on was renamed. Retargeting frequency climbed past nine impressions against a recent-buyer overlap of around 22% - the account was paying to advertise to people who had already bought. Audience definitions break when the underlying events change, and no error fires.
Feed health and audience integrity are where budget leaks without any obvious symptom in the account. They only surface when someone goes looking.
Layer 4: attribution and the ROAS reconciliation
This is the layer that started this post, and it is the one the grader tools structurally cannot reach.
- Reconcile reported ROAS against blended reality. Take total ad spend across platforms for a window, divide the store's actual revenue by it, and compare that blended figure to what each platform claims. When platform ROAS sums to something far above blended - like the 3.8x Google and 4.2x Meta against 1.9x blended above - the platforms are each taking credit for the same orders.
- Understand the model you are being scored on. Google's default data-driven attribution distributes credit across the path, which is more defensible than last-click but still lives inside Google's own view of the world. It cannot see the Meta impression that primed the click.
- Check attribution windows and where Direct or Unassigned revenue is hiding. A large Unassigned slice usually means the click IDs and UTMs are not making it through the funnel cleanly, which quietly hands Google credit it did not earn or strips credit it did.
A trustworthy ROAS number is one you can defend when the CFO asks where it came from. Getting there means holding the account against the store of record and a properly blended ecommerce reporting dashboard, not trusting any single platform's self-report.
The Google Ads audit checklist
Run these in order. Each layer assumes the one above it is clean, because a conversion problem makes every later finding unreliable.
Conversion tracking
- Purchase conversions carry real, non-zero revenue that matches order values
- Each purchase fires exactly once (no duplicate tags, no app-iframe double-fire)
- Purchase actions count "one per click," not "every"
- Enhanced conversions are set up once, not stacked on a hard-coded tag
- Primary and secondary conversion actions are assigned deliberately
Spend allocation
- Performance Max is not booking branded search you already owned
- Search terms report reviewed for match-type creep and irrelevant queries
- Brand and non-brand demand separated before judging ROAS
Feed and audiences
- Merchant Center checked for silent disapprovals, including best sellers
- Exclusion and retargeting audiences still bound to live events
- Frequency against recent buyers is sane
Attribution and reconciliation
- Platform-reported ROAS reconciled against blended spend and store revenue
- Attribution model and conversion windows understood, not defaulted
- Direct or Unassigned revenue explained, not shrugged off
If you want the version of this done for you, with a written findings document and the reconciliation math, that is exactly the scope of our paid media audit - you can read a real sample paid media audit report to see the format before deciding, and the audit pricing is fixed and credited toward implementation. The recovered spend from a single cannibalizing PMax campaign usually covers it in the first budget cycle.

