This is part of a series where I share real-world experiences working with AI as a marketing director. No fluff, no hype — just honest accounts of what worked, what didn’t, and what I learned.
Your Conversion Data Is Probably Wrong Too
Let me tell you something embarrassing.
Our Google Ads conversion tracking had been set up across multiple team members over the years. GA4 showed one number, Google Ads another, and our CRM a third story, but I kept putting off the audit. You know the type of task: important, unglamorous, lives permanently on the “when I get around to it” list.
I finally got around to it. But instead of spending days in spreadsheets, I sat down with Viktor, our AI coworker, and asked him to run a cross-platform conversion audit across our Google Ads account, GA4, Google Tag Manager, and our GoHighLevel CRM.
In about 15 minutes, Viktor surfaced seven specific, data-backed issues, not best-practice guesses, but problems found by querying our live accounts. We spent the rest of the afternoon fixing them. Our conversion reporting accuracy is expected to more than double.
Here’s what he found. If you manage Google Ads and haven’t run a proper audit recently, treat this as your checklist, because I’d bet at least two of these are hiding in your account right now.
Issue #1: Wrong Primary Conversion Action in Google Ads
This was the one that made me say “oh no” out loud.
GA4’s Enhanced Measurement had automatically created a `form_submit` event. At some point, someone had set it as a primary conversion action in Google Ads. Primary conversion actions are what Smart Bidding learns from, they’re the signal the algorithm uses to decide who to show your ads to.
Viktor pulled the event data and cross-referenced it with the page paths where it was actually firing. Of 44 events in a 30-day window, a significant chunk were on `/authindex`, `/login`, `/knowledgebase/*`, and various console subdomains.
We were counting existing customer logins as conversions. Every time a paying customer logged into their dashboard, Google Ads logged a win and updated its model accordingly.
I had no idea. It had almost certainly been doing this for months.
The fix: Demote `form_submit` from primary to secondary or remove it from conversion tracking entirely. GA4’s Enhanced Measurement auto-creates events without asking whether you actually want them counting as conversions. You have to audit this manually.
Why this matters beyond just clean data: Smart Bidding actively learns from whatever you tell it is a conversion. If you’re optimizing toward logins, the algorithm will find more people who look like your existing customers, not prospects. Your reported CPA looks great. Your pipeline doesn’t match. And you spend months wondering why.
Issue #2: Lead Conversion Events Not Set as Primary in Google Ads
Here’s the flip side of Issue #1, which made the situation almost perfectly inverted.
We had a custom GTM event — `ghl_form_submit` — tracking actual GoHighLevel form submissions. Viktor confirmed it was firing correctly: 35 events in 30 days, all on the right pages, all genuine leads.
It just… wasn’t set as primary. It was in the account. It was working. It just wasn’t the thing Smart Bidding was learning from.
The fix: Promote `ghl_form_submit` to primary conversion action. One change. Took about two minutes once we knew it needed to happen.
Together, Issues #1 and #2 are why the accuracy improvement is so significant. The wrong signal was primary. The right signal was secondary. Flipping that is the whole game.
Issue #3: A Pricing Page View Was Generating 127+ “Conversions” Per Month
Somewhere along the way, a `/monthly-pricing/` page view had been set up as a conversion action, probably as a proxy engagement metric, the kind of thing that seems reasonable at the time.
It was generating over 127 conversions per month on our highest-spend campaign. Visits to the pricing page are not conversions. They’re a good sign. They’re not the thing.
The fix: Remove the page view conversion action, or reclassify it as a non-primary event for informational tracking only.
Why this matters: Phantom volume like this artificially deflates your cost-per-acquisition. If your boss is happy with your CPA numbers, it might be worth checking what those numbers are actually counting.
Issue #4: We Were Counting Multiple Form Submissions Per Click as Multiple Conversions
Multiple conversion actions were configured with “many per click” counting. The intent behind that setting is for eCommerce, if someone buys three items in one session, you want to count three purchases.
For lead gen, it means if a prospect somehow submits a form twice in one session, you count two leads. That’s not two leads. That’s one interested person with a twitchy submit finger.
The fix: Switch lead gen conversion actions to “one per click” counting. Keep “many per click” for actual purchase/transaction events only.
Why this matters: Volume inflation compounds with Issues #1, #2, and #3. Stack them all and your conversion numbers can look dramatically better than reality, which is a fun discovery to make when someone asks you to reconcile them against actual pipeline.
Issue #5: Missing UTM Parameters on Highest-Spend Campaigns
Viktor ran a coverage check across all enabled campaigns. Two — including our highest-spend campaign had no Final URL suffix. Every click from those campaigns landed without UTM parameters.
Zero source attribution in GA4. Zero campaign data in our CRM. No way to connect ad spend to pipeline for those campaigns.
The fix: Add UTM suffixes. Viktor confirmed all 10 enabled campaigns are now properly configured.
This one is mortifying in retrospect because the highest-spend campaign being the untracked one means the budget decisions we’ve been making had the least attribution data behind them.
Issue #6: GoHighLevel Was Mangling Our UTM Source Data
Even on campaigns that had UTM parameters configured, Viktor spotted something in the GHL data: `utm_source=adwords` appearing alongside unresolved `{campaignname}` placeholder tokens in the campaign field.
GoHighLevel handles UTM parameters differently from a standard landing page setup. Under certain configurations, it can overwrite or fail to correctly pass through UTM values on form submission, stripping attribution from leads that came through paid channels, or passing through partially-resolved tokens that break downstream reporting.
The fix: Audit how GHL is configured to handle UTM parameters end-to-end. Ensure dynamic value tokens are resolving before submission, and that GHL isn’t overwriting source data. This may require adjustments in your form settings or a custom field passthrough setup. Worth testing with a live submission and checking what actually lands in the CRM record.
If you use GHL for lead capture alongside Google Ads, check this explicitly. It’s not well-documented and it’s a common source of attribution loss that gets blamed on everything except the actual culprit.
Issue #7: Our Own Subdomains Were Breaking Session Attribution
Viktor identified that traffic moving between our main domain and subdomains wasn’t being handled with referral exclusions in GA4. When a user navigated between domains mid-session, GA4 was logging a new session, with the referral source set to our own subdomain.
So instead of seeing “google / cpc” as the source for a user’s full journey, we’d see a clean paid click followed by a self-referral bounce, with attribution broken.
The fix: Add internal domains to the referral exclusion list in GA4. If you see your own domain or subdomains showing up as referral traffic sources in your reports, this is almost certainly what’s happening.
## The Wild Goose Chase (Keeping It Honest)
One thing I committed to in this series is not making AI look better than it is, so here’s the part where things went sideways.
During the audit, Viktor flagged `app.convesio.com` as a cross-domain tracking gap. It seemed like a reasonable concern. We even created a new GA4 data stream for it.
Later, when I asked where `app.convesio.com` was actually showing up in the data, Viktor pulled the hostname report and found… zero sessions. Not a single one.
Our users were hitting `console.convesio.com`. Viktor had assumed we’d have an app at `app.convesio.com` because that’s a common pattern, but we don’t. To its credit, Viktor owned it immediately: “My Issue #6 mention of app.convesio.com was imprecise… Sorry for the wild goose chase on that one! 🦆”
The lesson is genuine: AI accelerates investigation, but it reasons from patterns, not from knowledge of your specific infrastructure. It will make logical inferences that don’t match your reality. You still need domain knowledge to catch them. Trust but verify isn’t a caveat, it’s the working model.
## How the Session Actually Worked
Worth explaining the mechanics for anyone who wants to try this.
Viktor couldn’t make most of these changes directly, the Google Ads API has write limitations that prevent programmatic changes to tracking templates, conversion action status, Final URL suffixes, and counting methods. Rather than just surfacing that as a dead end, Viktor produced exact step-by-step instructions for each fix: precise navigation paths, specific values, text strings to paste.
We worked in a rhythm: Viktor would identify an issue, explain what needed to change and why, hand me the steps, and I’d go make the change. When I came back and said “done,” Viktor ran a verification audit to confirm it had taken effect. Diagnosis and instruction on one side; clicking on the other. It moved faster than I expected.
Fifteen minutes to identify all seven issues. About three to four hours to implement and verify the fixes.
For work I’d been avoiding for months, that’s not bad.
Your Audit Checklist
Run these on your own account. You probably won’t find all seven, but I’d be surprised if you found zero.
- Are your primary conversion actions tracking actual conversions? Pull the event data and check the page paths where your key events fire, not just that they’re firing.
- Did Enhanced Measurement auto-create any events you didn’t intend to count? GA4 does this silently. Audit which auto-created events have been promoted to conversion actions.
- Are any page views set as conversion actions? Remove or demote them.
- Is conversion counting set to “one per click” for lead gen? Change “many per click” to “one per click” for any non-purchase conversion action.
- Do all enabled campaigns have UTM suffixes? Do a full coverage check, not just a spot check.
- Is your CRM preserving UTM data on form submission? Submit a test form via a paid click and verify the source attribution survives into the CRM record intact.
- Are your internal domains excluded from GA4 referrals? Check your referral exclusion list and look for your own domain in the traffic source report.
If you run through this and find something interesting, I’d genuinely like to hear about it.

