Back to insights

Data Integration|15 September 2026

Fix campaign attribution in 90 minutes: reconcile UTMs, form captures and CRM source fields for small teams

A practical 90‑minute plan to reconcile UTMs, form captures and CRM source fields so reports and automations use the correct campaign values.

1) Quick triage (20 minutes)

  • Build three saved views or list filters: (a) recent form submissions (last 30 days), (b) records created from ads (if you tag them), (c) records with any utm_ fields present but the canonical CRM source/campaign field empty or showing generic values like “direct/none”. Export a 200–500 row sample to a spreadsheet.
  • In the sheet, pivot on utm_source/utm_campaign and the CRM source field to spot common mismatches and frequent variants (google / Google / gclid / paid_search; facebook / fb / social). Note the top 10 offenders to target for normalisation.
  • Check counts: compare ad-clicks or landing-page sessions for the same date range with the number of CRM records attributed to those campaigns — big gaps point at capture or mapping failures.

2) Verify form capture and mappings (30 minutes)

Walk a single submission through the whole stack. Open a landing page, add UTM parameters (utm_source=localtest&utm_campaign=test-campaign), submit the form on desktop and mobile, and then find the created record in your CRM. Do the hidden UTM fields map into the CRM canonical fields?

Look for three common causes: missing hidden fields on the live form (or naming mismatch), analytics scripts or tag managers overwriting or removing the UTM cookie before the form reads it, and multiple mappings where the form writes to different fields (e.g. utm_campaign -> campaign_text, plus a separate lead_source field set by a server postback). Check the form configuration in HubSpot, the field mapping in Salesforce Web-to-Lead, Marketo form handlers or Pardot handlers as relevant.

Do this simple smoke test for each form type: submit with UTMs, submit without UTMs, and submit from a direct visit. Confirm the CRM fields record the expected combination and that consent fields still behave correctly for UK privacy rules.

3) Normalise, safe backfill and put lightweight guards in place (40 minutes)

Pick one canonical field (eg. "canonical_source" and "canonical_campaign") and a temporary staging field (eg. "staging_source"). Create a short mapping table in a sheet to normalise common variants to your chosen canonical values (Google Ads → paid_search; facebook / fb → paid_social; organic / seo → organic_search).

Safe backfill pattern you can run without engineering: 1) use an import or update that writes only to staging_source (most CRMs let you suppress workflow triggers on imports or you can set a temporary checkbox like "do_not_process"); 2) run a controlled automation/workflow that copies and normalises staging_source -> canonical_source only for a small, inspected batch (20–50 records) and keep that automation off for the rest; 3) once you’re happy, run the same job in batches until done, removing the do_not_process flag as you go. If your CRM doesn’t suppress workflows on import (Salesforce triggers can run), add the processing flag first and have automations ignore records with that flag.

Final smoke tests: re-run the triage lists and confirm the proportion of records with empty canonical_source has dropped; sample 20 updated records to verify no unwanted tasks or emails fired; compare totals for a recent week against ad platform counts (allow small timing differences). Add two lightweight checks to prevent recurrence: a daily saved view of "new records in last 24h with utm_* present but canonical_source empty" and a weekly 5‑record manual sample check that anyone on the rota can run.

If you’d like a short, practical walkthrough for your stack (HubSpot, Salesforce, Marketo or Pardot) or help implementing the staging/backfill pattern, see our CRM and marketing data optimisation in Fareham page — and if you prefer hands‑on help in Fareham or along the South Coast, Optira can run this 90‑minute triage and fix with your team.

Need this turned into action?

Optira helps smaller teams clean up data, connect systems, build lightweight tools and remove the manual work that keeps coming back.