Notes on measurement-first marketing.
Things I keep running into across ad accounts: attribution that doesn't add up, tracking that quietly breaks, reports nobody trusts. Written so you can go fix the thing, not just read about it.

Why platform-reported ROAS lies, and the four checks to run before you touch creative
Meta and Google grade their own homework. Here's how the in-platform number drifts from revenue, and the four reconciliation checks that show you by how much.

Reporting that assembles itself: n8n, Apps Script and the end of the Monday spreadsheet
The weekly ad report is the most automatable job in marketing and the one most teams still do by hand. A practical architecture, the tool for each layer, and the limits to design around.

Performance Max for lead gen: the guardrails that decide whether it prints leads or garbage
PMax can work for lead generation. It can also fill your CRM with junk at a great-looking CPA. The difference is almost entirely what you feed it. The setup rules I use before it gets a dollar.

Hyros, GA4 or the ad platform: which attribution number do you actually run the business on?
Three tools, three different answers for the same month. What each one is measuring, where each one is blind, and a practical rule for which number gets budget authority.

149 conversion actions, 7 that mattered: cleaning up what Google Ads learns from
Smart bidding optimizes toward every primary conversion action you leave on. A walkthrough of a cleanup on a coaching account, and the rules to keep it clean.

Teach the algorithm what a real lead looks like: offline conversion imports, end to end
Google and Meta optimize toward the event you give them. If that's a form fill, you get form fills. How to send CRM stages like 'qualified' back to both platforms, and the gotchas that break it.

Your Meta purchases are probably counted twice. Here is the 10-minute check.
Pixel plus Conversions API without a shared event_id means one sale becomes two in Ads Manager. How dedup works, how to see it in Events Manager, and what to fix.

Server-side tagging is not about beating ad blockers. It is about owning your data.
Most server-side tagging pitches lead with 'recover lost conversions'. The real reason to do it is control: one first-party pipe you decide what goes through.

Quebec's Law 25 and your tracking stack: what changes if you sell to anyone in Quebec
Two years in, most Canadian marketing sites still treat Law 25 as a legal memo. It's a tracking spec. What it requires of your cookies, pixels and banner, and how to comply without gutting your data.

HubSpot says 12 leads from paid social. Ads Manager says 41. Neither is lying.
HubSpot's Original Source and Meta's reported leads follow different rules. What each one measures, why they diverge, and how to pass UTMs into HubSpot so the CRM number is one you can defend.

Enhanced conversions in Google Ads: what it actually does, and the GTM setup that takes an hour
Enhanced conversions sends a hashed email alongside your conversion so Google can match it to a signed-in user when cookies can't. What it fixes, what it doesn't, and the Tag Manager walkthrough.

A creative testing framework for Meta that tells you something, not just a winner
Most creative tests declare a winner after four days and 30 conversions. Here's how I structure hook, angle and format tests so the result is a lesson you can reuse, not a coin flip you got lucky on.

Your Meta ad sets never leave learning, and it's a math problem, not a creative problem
Meta wants roughly 50 optimization events per ad set per week. Most accounts are structured so that's impossible. How to work the math backwards into a structure that can actually exit learning.

UTM discipline: the naming convention that stops your attribution from leaking
Most attribution gaps I find aren't tool problems. They're a dozen people inventing their own utm_source. One convention, one template, and three rules that keep it clean.
Start with a 15-minute call.
Bring your ad account and your numbers. You leave with a read on where the measurement is wrong and what to fix first. No pitch deck.