70% of Google Ads accounts have broken tracking. We know this because we audited 20+ of them over the last 3 years. The average waste: 23% of total ad spend.
On a $50k/month account, that is $11,500 every month - not from bad campaigns, but from bad data feeding those campaigns.
This checklist pulls the 15 highest-severity checks from our full 78-point diagnostic. These are the ones that actively cost you money right now or degrade your Smart Bidding accuracy this week. If you only have 30 minutes, run these 15 checks. They will surface the problems that matter most.
How to use this checklist: Work through checks 1-15 in order. Each check has three columns: what to look for, how to verify it, and the most common way it fails. Score each check Pass or Fail. Any fail in the Critical tier means stop and fix it before continuing - those issues corrupt the data every other check depends on.
These are actively costing you money right now. If any of these fail, fix them before doing anything else.
What you are checking: Your Google Ads conversion tag actually fires when someone completes a purchase.
How to check: Open Google Tag Assistant (tagassistant.google.com). Complete a test purchase on your site. On the order confirmation page, verify the Google Ads conversion tag fires exactly once. Look for the tag in the Tag Assistant sidebar with a green checkmark.
Common failure: Tag fires on the wrong page (cart page instead of confirmation), or does not fire at all because the confirmation page loads a different GTM container or no container.
Time to fix: 15-30 minutes
| Status | Meaning |
|---|---|
| PASS | Tag fires once on confirmation page, shows correct conversion ID |
| FAIL | Tag missing, fires on wrong page, or fires multiple times |
What you are checking: The Conversion Linker tag fires on every page of your site, not just the conversion page.
How to check: Open GTM Preview mode. Navigate through at least 5 different pages on your site (home, category, product, cart, checkout). On every page, verify the Conversion Linker tag appears in the "Tags Fired" section.
Common failure: Conversion Linker only fires on the conversion page. This creates cookie gaps. Google cannot connect the ad click to the conversion because the linker cookie was never set during the browsing session.
Time to fix: 15 minutes
| Status | Meaning |
|---|---|
| PASS | Conversion Linker fires on every page you navigate |
| FAIL | Missing on one or more pages |
What you are checking: If your checkout is on a different domain or subdomain (common with Shopify, custom checkouts), session continuity is maintained across the domain boundary.
How to check: Open GA4 Realtime report. Start on your main site. Add a product to cart. Proceed to checkout (which loads the different domain). Watch the Realtime report. If the session breaks - you see two separate sessions instead of one continuous session - cross-domain tracking is broken.
Common failure: GA4 Data Streams are not configured with the checkout domain in the cross-domain linking settings. The session breaks at the domain boundary. Google Ads sees the click but never sees the conversion because they are on different sessions.
Time to fix: 1-2 hours
| Status | Meaning |
|---|---|
| PASS | Single session maintained through checkout on different domain |
| FAIL | Session breaks at domain boundary, or N/A if same domain |
What you are checking: Enhanced conversions are enabled and actually sending hashed customer data back to Google.
How to check: Go to your Google Ads conversion action. Verify "Enhanced conversions" is toggled on. Then open Google Tag Assistant, complete a test purchase, and check that the conversion tag shows enhanced conversion parameters (hashed email, phone, or address data) in the tag details.
Common failure: Enhanced conversions are "enabled" in the Google Ads interface but the actual data mapping in GTM is incomplete or pointing to the wrong fields. The toggle is on but no data flows. You lose 10-30% of conversion signal, especially from Safari and iOS users.
Time to fix: 1-2 hours
| Status | Meaning |
|---|---|
| PASS | Enhanced conversions on AND verified sending hashed data in Tag Assistant |
| FAIL | Disabled, or enabled but no data flowing |
What you are checking: If you have EU traffic, Consent Mode v2 is active and properly configured so that tracking degrades gracefully (not completely) when users decline consent.
How to check: Open GTM Preview mode. Check that consent initialization happens before any other tags fire. Click "decline" on your consent banner. Verify that Google tags still fire in "consent-denied" mode (they should fire but not set cookies). Check GA4 Admin to confirm behavioral modeling is active.
Common failure: Consent banner fires but never actually updates the consent state in GTM. Or consent mode is not implemented at all, meaning EU users either get no tracking (total data loss) or full tracking (compliance risk).
Time to fix: 2-4 hours
| Status | Meaning |
|---|---|
| PASS | Consent Mode v2 active, modeling enabled, consent state updates work |
| FAIL | Missing, misconfigured, or consent state never updates |
These degrade Smart Bidding accuracy. Fix them this week.
What you are checking: You have exactly one purchase conversion action set to "Primary" in Google Ads. Not two. Not three.
How to check: Go to Google Ads > Goals > Conversions. Filter to "Include in Conversions: Yes." Count how many purchase actions appear. Check if multiple actions are tracking the same event (common when GA4 import and Google Ads tag both track purchases).
Common failure: A GA4-imported purchase action AND a Google Ads conversion tag both count as primary. Every sale gets counted twice. Google's algorithm optimizes toward a phantom 2x conversion rate. Your reported ROAS is double the reality.
Time to fix: 30-60 minutes
| Status | Meaning |
|---|---|
| PASS | Exactly 1 purchase action set to Primary |
| FAIL | Multiple purchase actions counting the same event |
What you are checking: Your GA4 property is linked to the correct Google Ads account.
How to check: Go to GA4 Admin > Product Links > Google Ads Links. Verify the correct Google Ads account ID appears and the link is active. Then check Google Ads > Tools > Data Manager to confirm the connection from the other side.
Common failure: GA4 is linked to an old or wrong Google Ads account. Especially common after UA-to-GA4 migration, agency transitions, or when a brand has multiple Google Ads accounts. Audience data, conversion imports, and bidding signals all fail silently.
Time to fix: 15 minutes
| Status | Meaning |
|---|---|
| PASS | Correct GA4 property linked to correct Google Ads account |
| FAIL | Wrong property, missing link, or multiple conflicting links |
What you are checking: The conversion value reported to Google Ads matches the actual order value, not a static placeholder.
How to check: Pull the last 10 conversions from Google Ads. Compare each conversion value to the actual order in your order management system (Shopify, WooCommerce, etc.). Values should match within 2-5%.
Common failure: A static fallback value (like $50 or $1) is hardcoded in the conversion tag. Every order reports the same value regardless of actual order size. Google cannot distinguish a $30 order from a $300 order, so it cannot optimize toward higher-value customers.
Time to fix: 30-60 minutes
| Status | Meaning |
|---|---|
| PASS | Values match OMS within 5% across sampled orders |
| FAIL | Static values, or dynamic values significantly off |
What you are checking: A single GTM container loads on each page of your site.
How to check: View page source on any page. Search for "gtm.js". Count how many GTM container snippets appear. Each snippet has a container ID (GTM-XXXXXXX). You should see exactly one.
Common failure: A previous developer or agency installed their own GTM container and it was never removed. Two containers fire the same tags, causing duplicate conversion counting. Or one container fires old tags that conflict with current ones.
Time to fix: 30-60 minutes (identifying which to keep may take longer)
| Status | Meaning |
|---|---|
| PASS | One GTM container ID across all pages |
| FAIL | Multiple container IDs found |
What you are checking: All Google tracking tags fire through GTM, not hardcoded directly in the page source.
How to check: View page source. Search for your Google Ads conversion ID (e.g., "AW-XXXXXXXXX"). If it appears outside of the GTM snippet, you have hardcoded tags running alongside your GTM tags.
Common failure: A developer added a Google Ads conversion tag directly to the checkout confirmation page template. GTM also has the same conversion tag. Every conversion counts twice. This is one of the most common causes of inflated ROAS.
Time to fix: 30-60 minutes
| Status | Meaning |
|---|---|
| PASS | Conversion IDs only appear inside GTM-managed tags |
| FAIL | Conversion IDs found hardcoded in page source |
These create data drift over time. Fix them this month.
What you are checking: A unique transaction ID is sent with every conversion, so Google can deduplicate if the tag fires more than once for the same order.
How to check: Open GTM Preview. Complete a test purchase. Click on the conversion tag in the Tags Fired panel. Check the tag parameters for "Transaction ID" or "Order ID." It should show a unique value (your order number), not be blank or undefined.
Common failure: Transaction ID field is empty or mapped to the wrong variable. If a customer reloads the confirmation page, Google counts it as a new conversion because there is no transaction ID to deduplicate against.
Time to fix: 30-60 minutes
| Status | Meaning |
|---|---|
| PASS | Unique transaction ID visible in tag parameters |
| FAIL | Empty, undefined, or static value |
What you are checking: You are tracking add_to_cart and begin_checkout events in GA4, and they are set as Secondary (not Primary) conversion actions in Google Ads.
How to check: Go to GA4 > Events. Look for add_to_cart and begin_checkout. Verify they have data in the last 7 days. Then go to Google Ads > Goals > Conversions. Verify these are listed as Secondary actions (not included in the primary conversion count).
Common failure: Either these events are not tracked at all (creating funnel blind spots), or they are set as Primary conversions (polluting your purchase conversion data and confusing Smart Bidding).
Time to fix: 1-2 hours
| Status | Meaning |
|---|---|
| PASS | Both events tracked in GA4, set as Secondary in Google Ads |
| FAIL | Missing events, or set as Primary in Google Ads |
What you are checking: Payment processor domains (PayPal, Klarna, Afterpay, etc.) are excluded as referral sources in GA4.
How to check: Go to GA4 Admin > Data Streams > your stream > Configure Tag Settings > List Unwanted Referrals. Check that your payment gateway domains are listed.
Common failure: A customer clicks "Pay with PayPal," gets redirected to paypal.com, then returns to your confirmation page. GA4 attributes the conversion to "paypal.com" as the referral source instead of the original Google Ads click. Your Google Ads conversions drop. Your PayPal referral conversions spike. The data is wrong in both directions.
Time to fix: 15-30 minutes
| Status | Meaning |
|---|---|
| PASS | All payment gateway domains listed in referral exclusions |
| FAIL | Payment gateways showing as referral source in GA4 reports |
What you are checking: Your click-through and view-through attribution windows are set intentionally based on how long your customers actually take to purchase.
How to check: Go to Google Ads > Goals > Conversions > your purchase action > Settings. Check the click-through conversion window and the view-through conversion window. Compare to your actual time-to-purchase data (GA4 > Explore > Time to Conversion, or check your order data for average days between first visit and purchase).
Common failure: Default 30-day click window on a product with a 3-day purchase cycle inflates conversions. Or a 1-day click window on a product with a 14-day research phase misses conversions. Either way, the algorithm gets the wrong feedback signal.
Time to fix: 15-30 minutes
| Status | Meaning |
|---|---|
| PASS | Attribution window matches actual purchase cycle within reasonable range |
| FAIL | Default window never reviewed, or window mismatched with sales cycle |
What you are checking: You have at least one customer list uploaded to Google Ads and it was updated within the last 90 days.
How to check: Go to Google Ads > Tools > Audience Manager > Your Data Segments. Look for customer lists. Check the upload date. Check the match rate (should be 30%+ for email lists).
Common failure: No customer list uploaded at all (Google has no first-party signal to learn from). Or the list was uploaded once 8 months ago and never refreshed. Stale lists degrade audience signal quality and reduce Smart Bidding effectiveness.
Time to fix: 30-60 minutes
| Status | Meaning |
|---|---|
| PASS | At least 1 list with 1,000+ entries, updated within 90 days, 30%+ match rate |
| FAIL | No list, stale list, or very low match rate |
Count your results:
| Tier | Checks | Your Passes | Your Fails |
|---|---|---|---|
| Critical (1-5) | 5 | ___/5 | ___ |
| High (6-10) | 5 | ___/5 | ___ |
| Medium (11-15) | 5 | ___/5 | ___ |
| Total | 15 | ___/15 | ___ |
15/15: Your tracking foundation is solid. You are in the top 30% of accounts we audit. Focus on advanced signal optimization (server-side tracking, Consent Mode modeling, audience signals).
12-14/15: Good shape with gaps. Prioritize any Critical or High fails first. Most of these fixes take under an hour each.
9-11/15: Your Smart Bidding is making decisions on incomplete data. Every dollar you spend on scaling right now is partially wasted. Block 4-6 hours this week to work through the fails.
Below 9/15: Stop scaling. Your data is unreliable. The algorithm is optimizing toward wrong signals. Fix tracking before touching budgets, bids, or campaign structure.
This checklist is the triage layer. It catches the most damaging problems fast.
The full diagnostic covers 78 checks across 5 layers, including:
The Google Ads AI Agentic System ($4,997+) includes the complete 78-point diagnostic with implementation instructions for every fix, the Conversion Action Decision Tree for classifying every action in your account, and a monitoring system that catches breaks before they cost you money.
If your score on this checklist was below 12, the full system will save you multiples of its price in the first month.
Built from 20+ account audits. Average tracking waste found: 23% of ad spend.