Multi-platform ad attribution audit

An audit for a multi-location law firm found Local Services Ads spend missing from HubSpot and about 21% of paid-search contacts mislabelled.

Industry: Estate law, multi-location

0.04%Google Ads spend variance vs HubSpot
0.02%Meta spend variance vs HubSpot
~21%of paid-search contacts were actually organic
53%of Meta spend on campaigns not tracked for conversions

The situation

A multi-location estate law firm ran paid spend across Google Ads, six Local Services Ads accounts, Meta, CallRail, an intake chat tool and a long tail of legal directories. Sources wrote into inconsistent properties, so no two channels could be compared and ROI reporting wasn’t possible.

What the audit found

  • Spend sync was clean where it existed. Google Ads reconciled to 0.04% ($7,186.75 on the platform against $7,183.94 in HubSpot) and Meta to 0.02% ($7,715.66 against $7,714.47) over a 30-day window.
  • Local Services Ads spend wasn’t syncing at all. At one location, $2,354.69 of real spend with 16 charged leads showed in HubSpot only as $0 placeholders. Leads arrived through CallRail with the call but not the cost.
  • About 21% of paid-search contacts were misclassified (at least 83 of 393). HubSpot’s native source property tagged organic Google Business Profile leads as paid search; the UTM data was correct.
  • 53% of Meta spend sat on campaigns flagged as not tracked for conversions.
  • The offline conversion import fired for nearly every contact on entry, with a flat default value instead of real deal values. The ad platform was effectively optimizing for raw lead volume, which explained a complaint about cheap, low-quality leads.
  • A lead capture gap: at one location, 5 of 17 leads never reached HubSpot.

What I designed

  • A canonical property set that every source writes into, with a field map showing one row per property and one column per source.
  • Source priority rules (UTM over intake capture over a manual “how did you hear about us” answer over direct), including when a later signal may overwrite an earlier one.
  • Account-level tracking templates so campaign and keyword data populate automatically.
  • A scoped daily Local Services Ads spend pipeline, and an offline conversion import to Meta that fires on deal stage with the deal value attached.

Stack

HubSpot CRMHubSpot ads toolsGoogle Ads APIGoogle Local Services Ads APIMeta Conversions APICallRailZapierGoogle Sheets

Related service: HubSpot Audit.

Have a system that needs to talk to HubSpot?

Book a free 30-minute call. Bring the messy version and I’ll help you work out what to fix first.

Book a call