Every attribution audit I run starts with the same statement from the client: "our tracking is pretty solid." Every attribution audit I run finds the same things: at least one broken conversion event, significant UTM naming drift, and a CRM where attribution fields are missing or empty for 40% or more of recent records. The problems are not exotic. They are the predictable result of incremental changes to a system nobody owns.

Morning: GA4 and GTM (two hours)

Start with GTM. Open the workspace and look at the tag list. Count how many GA4 Configuration tags exist. More than one means multiple configurations are firing with potentially conflicting settings and measurement IDs. Look at the trigger for each GA4 event tag and verify the event names follow a consistent convention. Look specifically for "all pages" triggers that might fire events you did not intend on every pageview. Then open GTM Preview, trigger a debug session, and walk through your key funnel steps: homepage, product or service page, contact or demo form, and the thank-you confirmation. In DebugView in GA4, watch which events fire. Check for duplicate events, events missing required parameters, and conversion events firing on pages that should not trigger them. In most accounts I audit, this two-hour step surfaces at least one broken or double-firing conversion event.

Late morning: UTM taxonomy and source attribution (two hours)

In GA4, open Reports > Acquisition > Traffic Acquisition and look at the Session source / medium dimension. Count the number of naming variants for each of your major channels. If you see facebook, meta, Facebook, fb, and Facebook_Ads as separate rows, your UTM taxonomy has drifted across agency and team changes. Check Google Ads specifically: confirm that auto-tagging is enabled in Google Ads account settings. In GA4, verify that Google / cpc sessions appear with campaign-level breakdown, meaning gclid processing is working. If sessions show as google / cpc but without campaign names, the gclid is being dropped somewhere between click and session — typically because a manual UTM on the landing page URL is overriding it.

Afternoon: CRM attribution fields and closed-loop data (two hours)

Pull a sample of 50 recent leads from your CRM — the most recent 50 contacts created in the last 30 days. Check three fields on each record: attributed source or channel (populated or empty?), GA4 client_id (present or absent?), and first-touch UTM parameters (captured or null?). In most audits I conduct, 40–60% of these records have no meaningful attribution data beyond a rough channel guess populated manually by whoever created the record. For the records that do carry attribution data, spot-check a handful. Look at the attributed source in the CRM and then look at what GA4 shows for sessions from those sources on those dates. Mismatches between the CRM and GA4 typically indicate a form integration problem: the hidden fields that should pass attribution data to the CRM are not populating before form submission.

Late afternoon: what you will find, and what to fix first

The typical one-day audit produces the same short list in almost every account: one or two GA4 conversion events that are broken, double-firing, or mapping to the wrong funnel action; UTM source naming inconsistency across at least three variants per major channel; CRM attribution fields missing for 40–60% of recent leads; and at least one form integration that is not passing GA4 client_id to the contact record. The fix priority is deliberate. First, repair broken conversion events — campaign optimisation, reported ROAS, and budget decisions all flow downstream from these. Second, fix the CRM hidden-field integration for all new submissions going forward because new data compounds. Third, standardise UTMs with a URL builder and approved values list. Fourth, attempt a partial backfill of the CRM using GA4 BigQuery data joined on email address or session timestamp proximity for high-value closed deals where the attribution history actually matters.