Skip to main content
Google AdsFor Google Ads advertisers

Get your Google Ads tracking to 95%+ accuracy guaranteed in writing.

Without Enhanced Conversions and offline imports, Google's algorithm sees barely half of what's actually happening. It optimizes for the wrong audiences, the wrong keywords, the wrong devices. CPA inflates. ROAS rots. We rebuild your Google Ads tracking with Enhanced Conversions, server-side gtag, deduped actions, and CRM-driven offline imports so Smart Bidding finally has the signal it needs.

Free30 minutesNo obligation

Google Ads · what breaks

Why Smart Bidding is wasting your budget — Google Ads

  1. 01

    Conversion data is incomplete

    Without Enhanced Conversions you're feeding tCPA/Maximize Conversions an incomplete sample. Smart Bidding optimizes against the wrong audiences.

  2. 02

    Duplicate conversion actions

    Most accounts have 3–5 redundant conversion actions firing on the same event. Bid strategies fight each other.

  3. 03

    Lead-gen has no offline data

    You're optimizing for form submits, not closed deals. Smart Bidding chases tire-kickers.

  4. 04

    GA4-imported conversions are wrong

    Many accounts import GA4 'Key Events' that double-count or attribute to the wrong source.

Google Ads · the fix

What you get — Google Ads

  • Enhanced Conversions (Web + Leads)

    Hashed user data passed via gtag and CAPI.

  • Conversion action consolidation

    One canonical action per business outcome, deduped.

  • Offline conversion imports

    CRM (HubSpot, Salesforce, Pipedrive, Close) → Google Ads via daily sync.

  • Smart Bidding readiness scorecard

    Per-campaign data-volume + conversion-quality check before flipping to tCPA / Maximize Conversions.

Google Ads · architecture

How a Google Ads conversion should actually reach the account

Most accounts fire one browser tag on a thank-you page and call it done. That single path is the one iOS, ad blockers, consent banners and payment redirects all break. Here is the path we build instead.

  1. 1

    Click identifiers captured at first touch

    gclid, and gbraid or wbraid on iOS app traffic, are read from the landing URL and written to a first-party cookie before anything else runs. Miss this and no later conversion can ever be attributed, no matter how good the rest of the setup is.

  2. 2

    Consent state resolved before any tag fires

    Consent Mode v2 defaults are set in the container's initialization, so ad_storage and ad_user_data have a known value at the moment the first tag would fire rather than a moment after.

  3. 3

    The browser sends a lightweight signal

    The web container fires the conversion with a transaction ID and the click ID. This is the fast path and it is the one that gets blocked, so nothing important depends on it alone.

  4. 4

    The server container sends the authoritative one

    A GTM server container on your own subdomain receives the same event, adds hashed email and phone for Enhanced Conversions, and forwards it to Google. Same transaction ID, so Google keeps one conversion, not two.

  5. 5

    Offline outcomes come back later

    For lead-gen accounts, the click ID stored at step one travels into the CRM. When a deal closes, an Enhanced Conversions for Leads upload sends the real revenue back against the original click.

Google Ads · events

Which Google Ads conversion actions we set up, and what each one is for

The mistake that costs the most money is not a missing conversion — it is three conversions all marked Primary, so Smart Bidding chases whichever is cheapest. Primary means bid on this. Secondary means show me the number and leave bidding alone.

PurchaseOrder is confirmed by the store or payment processortransaction_id, value, currency, gclid, em/ph hashedEvery · Primary
Qualified leadSales marks the lead as real, not the form fillgclid, order_id, value, conversion_timeOne · Primary (Enhanced Conversions for Leads)
Begin checkoutCheckout is entered with a non-empty cartvalue, currency, num_itemsOne · Secondary
Add to cartItem added, with the real item ID from your feeditem_id, value, currencyOne · Secondary
Form submittedForm posts successfully, not on validation failuregclid, em/ph hashed, form_idOne · Secondary until sales confirms quality
Phone callTracked call passes your duration thresholdgclid, ph hashed, call_durationOne · Secondary
Subscription startedFirst successful recurring charge, not trial signuptransaction_id, value, currency, planEvery · Primary for SaaS

Google Ads · normal or broken

Google Ads will never match your store exactly — here is where the line is

A gap between Google Ads and your backend is expected. A gap in the wrong direction, or one that changes shape week to week, is not. Knowing which is which stops you chasing a number that was never wrong.

Normal, not a fault

  • Google Ads shows fewer conversions than your store total

    Your store counts every order. Google Ads counts orders it can attribute to an ad click. Direct, organic and email orders belong to the first number and not the second.

  • Conversions appear days after the click

    Google credits the conversion to the date of the click, not the date of the sale. A conversion that lands today can change last week's numbers. This is by design and it is why yesterday's ROAS is always understated.

  • Fractional conversion counts

    Data-driven attribution splits credit across touchpoints, and modeled conversions fill consented-traffic gaps. Both produce decimals. That is a working setup, not a rounding bug.

  • GA4 and Google Ads disagree

    They use different attribution models and different conversion windows by default. Two tools built to answer different questions returning different numbers is expected.

Actually broken

  • Conversions reported as inactive or a sudden drop to zero

    The thank-you page URL changed, or a redesign dropped the tag. Google flags the action inactive after 30 days without a hit — by which point a month of bidding has already run blind.

  • Conversion count exceeds your order count

    The tag is firing more than once, usually because a theme hardcodes it and GTM fires it too, or because the thank-you page can be refreshed and no transaction ID is set.

  • Conversion value is zero or missing on a Purchase action

    Bidding has been told every order is worth the same. Target ROAS cannot function. This is the single most expensive misconfiguration we find.

  • No gclid recorded on any converting session

    Auto-tagging is off, or a redirect strips query parameters. Every conversion is then attributed to nothing, and no offline import will ever work.

Google Ads · diagnose

The sequence we run to find why a Google Ads conversion is wrong

Always in this order. Each step rules out a whole class of cause, so by the time we reach the last one there is usually only one explanation standing.

  1. 01

    Confirm auto-tagging and gclid capture

    Check auto-tagging is on in the account, then load a real ad URL and confirm the gclid survives every redirect to the landing page and into a first-party cookie.

  2. 02

    Read the conversion action diagnostics

    Google tells you when it last received a hit, whether the tag is present, and whether Enhanced Conversions is receiving data. Most accounts have never opened this screen.

  3. 03

    Complete a live test purchase

    Go through the funnel as a customer, all the way to a real order, and watch the network requests. Tag Assistant preview can pass while the production page fails.

  4. 04

    Check for a second firing path

    Search the theme, the app layer and the container for the same conversion ID. Duplicate installs are the most common cause of over-counting and they are invisible in the interface.

  5. 05

    Verify the value and currency reaching Google

    Inspect the actual payload. A formatted string, a currency mismatch, or tax and shipping counted inconsistently all change bidding without changing the conversion count.

  6. 06

    Reconcile a fixed window against the backend

    Take seven closed days, pull orders from the store or CRM, and compare against Google Ads on a click-date basis. The size and direction of the gap identifies the fault.

Google Ads · prove

How we prove the account is fixed — Google Ads

The interface saying the tag is active proves nothing. We reconcile against the system that takes the money.

Source of truth

Your store or payment processor order records

  • Pick a window that is fully closed — seven days ending at least three days ago, so late conversions have landed.
  • Pull every paid order from the backend for that window, with order ID and net value.
  • Export Google Ads conversions for the same window on a click-date basis, segmented by conversion action.
  • Match on transaction ID, not on totals — matching on totals hides an equal number of missing and duplicated conversions.
  • Confirm no order ID appears twice and no paid order with a gclid is absent.
  • Check Enhanced Conversions match rate in the diagnostics panel and confirm hashed fields are arriving.
  • Re-run the same reconciliation 30 days later, because a setup that works once and drifts is worse than one that never worked.

Google Ads · free audit

What we check in the free audit

  • Confirm auto-tagging and gclid capture
  • Read the conversion action diagnostics
  • Complete a live test purchase
  • Check for a second firing path
  • Verify the value and currency reaching Google
  • Reconcile a fixed window against the backend

Checked against

Your store or payment processor order records

Get my free conversion tracking audit

Free30 minutesNo obligation

Google Ads · when not to buy

When this is not the work you need — Google Ads

We would rather tell you now than three weeks into an engagement.

  • You spend under roughly $3,000 a month on Google Ads. A correct basic tag and Enhanced Conversions turned on will get you most of the way, and the server-side layer will not pay for itself yet.
  • Your conversions are already reconciling within a few percent of your backend. Verify it with a real reconciliation first — but if it holds, spend the money on creative or landing pages instead.
  • You do not run Google Ads and have no plan to. Enhanced Conversions and offline imports only exist inside Google Ads accounts.
  • Your problem is that the leads are bad, not that they are uncounted. That is a targeting and offer problem. Tracking will measure it accurately, but it will not fix it.

Google Ads · what we deliver

Deliverables — Google Ads

  • Enhanced Conversions setup

    Web + Leads, with gtag + CAPI dual-fire and dedup.

  • Offline conversion pipeline

    Make / Zapier / custom integration to your CRM.

  • Conversion-action audit & consolidation

    Cleanup of redundant or stale actions.

  • GA4 ↔ Ads link audit

    Make sure imported conversions don't double-count.

  • Smart Bidding readiness report

    Per-campaign go/no-go.

Written guarantee

95%+ tracking accuracy

Measured against Your store or payment processor order records. Miss it and we keep working at no cost.

Get my free conversion tracking audit

Pricing

Pick the package that fits your ad spend

Pixel-only starter

$400one-time setup

Foundation Google Ads pixel install only. Honest disclosure: this tier is for accounts spending under $1K/month. Above that, 1st-party server-side is the only architecture that survives iOS, ITP, and ad blockers.

  • Google Ads pixel / tag installed
  • Clean dataLayer for purchase + lead events
  • UTM hygiene + dedup checks
  • Consent Mode v2 banner integration
  • QA test events + 7-day support
  • No server-side CAPI · no iOS recovery
Start with pixel only

1st-party server-side Google Ads

Recommended for paid media

$800one-time setup · most popular

What every account spending $5K+/month on Google Ads should run. 1st-party server-side Events API on your subdomain, full identity match, deterministic dedup. iOS users count, ad blockers don't matter, Google Ads's algorithm finally has the signal it needs.

  • Everything in pixel starter
  • 1st-party server-side Google Ads Events API
  • Full identity match (email, phone, IP, UA, click_id)
  • Deterministic browser ↔ server dedup
  • Match-quality / EMQ live verification
  • Notion runbook + 30-day support
Book a call · get server-side

Full-funnel + offline imports

$1,800one-time + optional retainer

For agencies and brands running multiple Google Ads accounts or wanting CRM offline conversions feeding back. Every signal — click, lead, MQL, SQL, opportunity, closed-won — pipelined into Google Ads so the algorithm optimizes for revenue.

  • ✓ Everything in 1st-party server-side Google Ads
  • 📥 CRM offline conversion imports
  • 🔀 Multi-account routing & per-account QA
  • 🎯 Lead-quality / VBO bidding readiness
  • Looker Studio attribution dashboard
  • 60-day support · retainer optional
Book a call · scope full-funnel

FAQ

Google Ads questions, answered

Yes. PMax especially benefits because it depends almost entirely on conversion volume + signal quality.

Free · 30 min

Free Google Ads tracking audit

Free30 minutesNo obligation