They were spending thousands on ads and couldn't tell you which ones worked.
A US homecare provider operating across two states was running Google and Facebook campaigns into a website that told them nothing about where their patients came from. We rebuilt the path from ad click to sales rep so every lead arrives tagged, routed to the right state, and traceable back to the campaign that produced it.
The problem
Paid spend was going out across Google and Facebook. Patient enquiries were coming in through the website. Nothing connected the two.
- No attribution between ad and enquiry A lead in the CRM was a name and a phone number. Where it came from was anyone's guess.
- Disconnected systems The website, the forms, and the CRM didn't share data. Campaign parameters died at the form submission.
- Two states, one undifferentiated inbox Leads for both markets arrived together and had to be sorted by hand before anyone could work them.
- Budget decisions made on instinct With no campaign-level data, spend was allocated on gut feel rather than on what was actually producing patient enquiries.
The team knew the ads were working. They couldn't tell you which ones.
What we built
A full-funnel attribution and routing system: capture at the source, clean hand-off into the CRM, automatic distribution to the right state and the right rep, and a dashboard that shows where every lead came from.
- Capture at the sourceUTM tracking implemented across the WordPress site, capturing source, medium, campaign, content and term, stored in cookies and persisted across the session. First-touch and last-touch attribution both preserved, so a visitor who arrives on a Facebook ad and converts three visits later is still credited correctly.
- Form-level persistenceHidden UTM fields added to every Gravity Form on the site: contact, appointment request, service enquiry. Tracking data survives multi-step forms and session gaps, which is where most attribution setups quietly lose it.
- Hand-off into the CRMZapier automations carry every submission into GoHighLevel, mapping lead details and all five UTM parameters onto custom CRM fields. Error handling added at the hand-off so a failed sync surfaces rather than silently dropping a patient enquiry.
- Master sub-account routingEvery lead lands first in a master sub-account that acts as the distribution hub, then routes to the correct state sub-account based on the enquiry. One entry point, one place to maintain the routing logic, and no cross-contamination between two teams working two markets.
- State-level follow-up and distributionInside each state sub-account, leads enter automated follow-up tailored to that market, then drop into the sales pipeline and distribute to the reps working there. The sales team gets an assigned, contactable lead, not a raw form submission to triage.
- Attribution reportingA dashboard in each sub-account breaking inbound leads down by ad source, medium, campaign, ad content and organic traffic source. The team can see which platform, which campaign, and which specific creative is producing patient enquiries, per state rather than just in aggregate.
What changed
- Every lead carries its origin Source, medium, campaign, content and term arrive attached to the contact record and stay there.
- Routing happens on arrival Leads reach the right state, the right follow-up sequence and the right rep without anyone sorting them by hand.
- Campaign performance is visible per market A campaign that works in one state and not the other is now a thing the team can see, rather than something averaged into a single number.
- Spend decisions have data behind them The question moved from whether the ads were working to which ads were working, and where.
The numbers, and what they replaced.
Cost per qualified enquiry dropped from an estimated $142 to $68, a 52% cut, as wasted spend was eliminated based on real attribution data.
The sales team handled more than double the lead volume by state without increasing headcount, strictly due to automated routing.
Nearly 40% of the ad budget was shifted from underperforming campaigns to high-converting creative within the first 60 days.
Speed to contact reduced from a 24-hour-plus manual triage process to under five minutes, through automated state-level rep routing.
The share of leads arriving with no source data fell from 100% to zero.