← All articles
22 October 2026 · Pradipta Sinha · Google Ads / Digital Marketing

Google Ads Audit: 9 Tracking and Targeting Mistakes That Quietly Burn Your Budget

Purchases counted twice, tags firing on every thank-you page reload, ads shown to the wrong cities. Nine common Google Ads and GTM mistakes, how to spot each one, and how to fix it.

Google Ads Audit: 9 Tracking and Targeting Mistakes That Quietly Burn Your Budget
Share

Most Google Ads accounts I'm asked to look at don't have one big problem. They have five or six small ones, and they stack. A purchase that counts twice here, a few hundred rupees a day on "free" and "jobs" searches there, ads showing to people three states away. None of it throws an error. The dashboard still looks busy.

It's a common enough story that freelance boards are full of it. Here's a brief posted on Upwork this week, paraphrased: our Google Ads sales don't match our store orders; we think some are counted twice and some are missed; please check our Tag Manager setup, the purchase tag, the Analytics link, and the value sent with each sale. That one sentence covers half of this article.

The leaks fall into two groups:

  1. Tracking leaks. Google is optimising toward the wrong numbers, so Smart Bidding confidently spends more on the wrong things. (Data quality matters even more now that late uploads drop out of data-driven attribution.)
  2. Targeting leaks. You're paying for clicks from people who were never going to buy.

Fix tracking first. If the conversion data is wrong, every targeting decision you make on top of it is a guess.

Part 1: Tracking problems (fix these first)

1. Purchases counted twice: GA4 import plus the Google Ads tag

This is the most common cause of inflated conversions I see. Someone installs the Google Ads conversion tag through Tag Manager. Later, someone else links GA4 and imports the GA4 purchase event into Google Ads. Both conversion actions are set to Primary, so both count in the Conversions column, and every sale shows up twice.

How to spot it: go to Goals → Conversions → Summary and look for more than one purchase-type action marked Primary. Then compare a month of Google Ads purchase conversions with the actual order count in your store. They won't match exactly because of attribution windows, but if Google reports close to double, this is why.

Fix: pick one source for bidding. I usually keep the native Google Ads conversion tag as Primary and set the GA4 import to Secondary. Secondary actions still show under "All conversions" for reporting, but they no longer feed bidding.

2. The purchase tag fires twice on the thank-you page

Even with one conversion action, the tag itself can fire more than once per order:

  • The customer reloads the order confirmation page, or comes back to it with the back button.
  • Shopify's order status page gets revisited from the confirmation email.
  • A platform app (Shopify's Google & YouTube app, a WooCommerce tracking plugin) and a GTM tag both send the purchase.
  • An old hard-coded gtag snippet is still in the theme from a previous agency.

How to spot it: open GTM Preview, place a test order, then refresh the thank-you page. Watch the left-hand event list. If purchase appears twice in the dataLayer, the duplication is in the site or plugin code. If it appears once but your Google Ads tag fires twice, you have two tags or two triggers.

Fix, part one: send a transaction ID. In your Google Ads Conversion Tracking tag in GTM, fill the Transaction ID field with a data layer variable for ecommerce.transaction_id. Google Ads ignores a second conversion for the same action with the same transaction ID, so reloads stop counting. The ID has to be the real order number from your store. A hard-coded or empty value either does nothing or, worse, makes Google drop genuine sales.

Fix, part two: only fire once per order. The transaction ID protects Google Ads, but your GA4 and Meta tags on the same trigger still fire again. A small guard in GTM stops that for everything at once.

Create a Custom JavaScript variable called JS - Purchase already sent:

function() {
  var id = {{DLV - ecommerce.transaction_id}};
  if (!id) return false; // no order ID: never block the tag
  try {
    return localStorage.getItem('purchase_sent_' + id) === '1';
  } catch (e) {
    return false;
  }
}

Add the condition JS - Purchase already sent equals false to your purchase trigger. Then create a Custom HTML tag that records the order once the purchase tags have fired, and attach it as a cleanup tag in the Google Ads tag's Tag Sequencing settings:

<script>
  (function () {
    var id = {{DLV - ecommerce.transaction_id}};
    if (!id) return; // without a real order ID, don't record anything
    try {
      localStorage.setItem('purchase_sent_' + id, '1');
    } catch (e) {}
  })();
</script>

Both snippets check for an order ID first. Without that check, a page that pushes purchase with no ID would store purchase_sent_undefined and quietly block every later purchase from that browser.

Keep the "read" and the "write" separate like this. GTM can evaluate a variable several times for one event, so a variable that writes to storage can end up blocking the very tag it was meant to protect.

Fix, part three: one source per event. If the Shopify Google app and your GTM container both send purchases, turn one of them off. Two sources that each fire once is still two conversions.

3. The wrong conversion value is being sent

Smart Bidding strategies like Target ROAS and Maximise Conversion Value need the real order value, and so does AI Max for Search, which leans on your conversion data to decide which searches to chase. Things I regularly find:

  • A static value of 1 (or no value at all) on every purchase.
  • The value pulled from the wrong field: subtotal on one platform, total including shipping and tax on another.
  • No currency code, or a store that sells in INR sending to an account reporting in USD with no conversion.

Fix: map Conversion Value to ecommerce.value and Currency Code to ecommerce.currency from the same purchase push. Decide once whether value includes tax and shipping, and use the same rule for Google Ads, GA4 and Meta. Then check a few test orders in the conversion action's details to confirm the values match the store.

4. Leads set to count "Every" conversion

For purchases, Every is right: two orders are two sales. For leads it inflates numbers. If one person submits the contact form three times, that's one lead, not three.

Fix: open each lead conversion action and set Count to One. Leave purchases on Every.

5. Tags blocked by consent, or no Conversion Linker

If you use a cookie banner, check how it interacts with your tags. Two problems come up a lot:

  • Old exception triggers that stop Google tags firing until someone clicks "Accept". Google's own consent mode guidance says these were usually set up before consent mode existed and should be removed. Use consent mode so tags load in a limited state and adjust once consent is given, and let modelling fill some of the gap.
  • No Conversion Linker tag in a GTM setup that uses the standalone Google Ads Conversion Tracking tag. Without it, the click ID isn't stored properly and conversions go missing, especially in Safari.

How to spot it: run Tag Assistant on the site, accept and decline the banner, and check the "Tags Not Fired" section and the consent state on each event.

Part 2: Targeting leaks (where the money actually goes)

6. Irrelevant search terms from broad match

Broad match lets Google match your keyword to searches it thinks are related. Without negative keywords, "AC repair" pays for "AC repair course", "AC technician salary" and "how to repair AC yourself".

How to spot it: open the Search terms report (under Insights and reports in the current interface), set the date range to the last 30 days and sort by cost. Every search with spend and no conversions is a candidate.

Fix:

  • Build negative keyword lists by intent and apply them across campaigns: jobs and careers (job, salary, vacancy, hiring), learning (course, training, how to, tutorial), free and DIY (free, DIY, yourself, template), and anything you don't sell (second hand, rental, wholesale, depending on the business).
  • Use phrase match negatives on root words. An exact-match negative only blocks that exact search.
  • Check the report weekly for the first month of a new campaign, then monthly.

Broad match can work well with good conversion data behind it. It's broad match with bad conversion data from Part 1 that burns money, because Google has nothing reliable to learn from.

7. Location set to "Presence or interest"

This one surprises people. The default location option shows your ads to people in your target area and to people who have shown interest in it. A shop in Bankura targeting Bankura can end up paying for clicks from Kolkata, Delhi or abroad, from people reading about the town.

How to spot it: in the campaign's Locations report, look at where users actually were, not just which locations you targeted, and sort by cost.

Fix: go to Campaign settings → Locations → Location options and change Presence or interest to Presence: people in or regularly in your included locations. For local businesses this is nearly always the right choice. If you rely on local customers, it's also worth making sure your website does its share of the selling once the click lands.

8. Search Partners and Display left on in a Search campaign

New Search campaigns come with the Google Search Partners and Display Network boxes ticked. Partner sites and display placements usually convert worse than Google Search itself, and the spend is easy to miss because it's mixed into the campaign totals.

How to spot it: in the Campaigns view, use Segment → Network (with search partners) to split results by network.

Fix: if partners or display aren't converting at an acceptable cost, untick them in the campaign's Networks settings. Run pure Search until you have enough data to test them deliberately.

9. Auto-applied recommendations changing the account

Google Ads can apply some recommendations automatically: adding keywords (often broad match), raising budgets, switching bid strategies. Useful for some accounts, but I've seen campaigns change shape overnight without anyone on the team noticing.

Fix: open Recommendations → Auto-apply, review what's switched on, and turn off anything you'd rather approve by hand. Check the Change history once a week so you know what changed and who changed it.

A 30-minute audit you can run yourself

Check Where What good looks like
Primary purchase actions Goals → Conversions → Summary One Primary purchase action
Conversions vs orders Google Ads vs your store, same month Roughly aligned, not doubled
Duplicate firing GTM Preview, reload the thank-you page purchase fires once per order
Transaction ID Google Ads tag in GTM Real order ID, never static
Conversion value and currency Conversion action details Matches the order total and currency
Lead counting Each lead conversion action Count set to One
Consent and linker Tag Assistant, banner accepted and declined No exception triggers; Conversion Linker present
Search terms Insights and reports → Search terms Few costly terms with zero conversions
Location option Campaign settings → Locations "Presence" for local businesses
Networks Segment → Network Partners and Display off unless proven
Auto-apply Recommendations → Auto-apply Only what you've chosen

The same problem on Meta

Meta has its own version of the double-count. If you run the Meta Pixel in the browser and the Conversions API from the server, both send the purchase. Meta only removes the duplicate when both events carry the same event_name and the same event_id. Use the order number (or a value derived from it) as the event ID on both sides, and check Events Manager for the deduplication status on your Purchase event. It's the same discipline as the Google side: one order, one conversion, one real value.

Where to start

If you only do one thing this week, compare last month's Google Ads purchase conversions against your real order count. If they don't line up, fix tracking before you touch bids, keywords or budgets.

This is the work I do every week for clients as part of our ads, growth and tracking service: Google Ads and Meta Ads management with tracking set up properly from the start, using Google Tag Manager, GA4, Google Ads conversions, the Meta Pixel and Microsoft Clarity. You can see it in practice in the Monika Electronics case study, a local retailer in Bankura where we ran Facebook and Google Ads with the full tracking stack behind them. More client projects are on our work page.

If your numbers don't add up, send me your account details for a tracking audit, or start with a free website audit to check the site your ads send people to.

Related reading


Found this useful? Share it.
Share

Ads spending more than they earn?

We run Google and Meta Ads with tracking set up properly first — GTM, GA4, conversions, and the Meta Pixel — so every rupee is tied to a real result.

Talk to WPFreelance →See the Monika Electronics results
Chat with us