Notes from the Accounts
Practical writing on PPC, tracking and lead quality. Things I keep fixing for clients, written up so you can fix them too.
Proto-Plus, Not Protobuf: Four Errors That Eat a Morning of Google Ads API Work
The google-ads Python client wraps protobuf in a layer called proto-plus, and most of the answers a search surfaces were written for raw protobuf. They look right and fail at runtime. Repeated fields with no .add(), the FieldMask the client refuses to hand you, enum names that drift between versions, and the read/write asymmetry that empties copied ads.
Read the postGAQL Looks Like SQL, and That Is the Problem
GAQL borrows SQL's shape closely enough that people write it from SQL instincts, and the divergences are silent: the query succeeds and returns something plausible. Segments that multiply your rows with no GROUP BY to collapse them, view resources that demand filter fields in the SELECT, and a segment compatibility matrix where SQL would have a schema.
Read the postThe _ga_ Cookie Is Now GS2 Format, and Index 2 Is Not the Session ID
The GA4 session cookie moved to a new format, and the common parsing pattern, split on a full stop and take the third element, now returns a fragment instead of a session ID. No exception, no warning, just a wrong value flowing into payloads and join keys. The old shape, the new shape, a parser that fails loudly, and two more silent parsing failures from the same family.
Read the postDoes Google Ads Backfill a GA4 Conversion Imported After the Click? In One Test, Yes
A booking came through from a paid click before the GA4 purchase key event was imported into Google Ads. It still landed against the new conversion action, value intact. One reproduced case, stated as one case, plus the trap found on the way: a conversion action named like purchase tracking that was really a thank-you page view proxy.
Read the postYour Conversion Count Is the Number Least Likely to Be Questioned
An account recorded 17,359 conversions in the time the business took roughly 4,500 bookings, and nobody ever asked, because high numbers go in the deck and low numbers get audited. How conversion counts drift from reality, what automated bidding does with a broken signal, and how to verify the pipeline with a real transaction rather than a debug tool.
Read the postWhat a GTM Consultant Actually Fixes
Most people call a GTM consultant after the conversion numbers stop making sense. The same handful of Google Tag Manager problems come up in account after account: enhanced conversions data stranded on the form page, AJAX submits that never trigger, consent systems fighting each other, a CMP quietly blocking the whole container. The recurring fixes, from real implementations.
Read the postSmart Bidding Is Only as Smart as What You Feed It
Target CPA and target ROAS treat every recorded conversion as the truth. When the Conversions column contains spam leads, duplicate fires and soft actions promoted to primary, bidding does not just misreport: it steers budget toward the junk. How each pollution distorts delivery, and the order to fix it in so the account can relearn on clean data.
Read the postWhat Actually Breaks When You Restructure Google Ads Accounts via the API
Every tutorial shows one clean mutate call. Real restructures are thousands of operations that depend on each other, and the work lives in what the tutorials skip: partial failure handling that turns errors into a fixable list, MutateOperation batching, and the ordering rules around temporary resource IDs. Lessons from scripted multi-market builds with the Python client.
Read the postWhy I Stopped Using the Keyword Planner UI and Built My Own Tooling
The Keyword Planner UI works for occasional research and breaks down across many accounts and markets: hand-assembled settings, exports that feed nothing, copy-paste errors that sit silently in the data. How querying the API directly turns keyword research into one repeatable run whose output feeds restructures, negative lists and asset briefs.
Read the postAI-Generated Fake Leads: Why They Look Completely Real and How to Stop Them
A new breed of form spam is hitting lead-gen advertisers: enquiries with real company names, coherent messages and valid contact details, carrying a phishing link as the payload. Here is what is actually going on, why your filters miss it, and the fixes that remove most of it for very little effort, from Cloudflare Turnstile to a properly built honeypot field.
Read the post