Home / Notes

Call tracking + CRM: closing the attribution loop

Call tracking tags a call with its source — campaign, keyword, GCLID. That's half the loop. Closing it means the CRM's outcome for that call — booked, showed, admitted — gets imported back to the ad platform as the conversion. Skip the return trip and you're bidding on ring volume, not patient value.

Every healthcare account I open has call tracking installed. Most have half of it working — the half that tells you a call happened and where it came from. The half that tells the ad platform what that call became is where almost every setup quietly stops.

Two halves, one usually missing

Call tracking software is good at the first half of this problem: dynamic number insertion swaps the phone number a visitor sees based on which ad or campaign brought them, so when they call, you know the source before they say a word. Most healthcare and high-ticket accounts have this working. Where it stops is the second half — what happened after the call. Did it become a booked consult? Did the patient show? Did they get admitted? That information lives in the CRM, and in most setups it stays there, disconnected from the ad platform that needs it to bid intelligently.

What closing the loop actually requires

Three pieces, in order. First, the call needs a persistent identifier — the GCLID (or an equivalent click ID) captured at the moment of the ad click and carried through to the call via the tracking number's session data. Second, the CRM needs a disposition field someone actually fills in — not just "call logged" but an outcome: booked, no-show, spam, existing patient, not qualified. Third, a scheduled job — native integration, Zapier, or a direct API push — exports the qualified/booked subset back into the ad platform as an offline conversion, matched by that same click ID. Miss any one of the three and the loop doesn't close; it just gets longer.

Where it breaks in real accounts

The two failure patterns I see most: front-desk answers that never get logged in the CRM at all — the call happened, nobody recorded what it became, so there's nothing to import — and multi-location routing that strips the tracking number before the call reaches whoever is disposition-ing it, losing the source even though the outcome gets logged. Both look fine on the surface. Call volume reports look healthy. It's only when you try to reconcile call-sourced conversions against the CRM that the gap shows up.

AD CLICK · GCLIDattached at clickDNI CALLnumber swaps per sessionCRM DISPOSITIONbooked · no-show · spamIMPORT BACK TO ADSGCLID + outcome, weeklyNOT LOGGED = SIGNAL LOSTfront desk answers, CRM stays blankTHE LOOP CLOSES ONLY IF THE OUTCOME MAKES THE RETURN TRIP
The loop closes only if CRM disposition makes the return trip to Ads. Most setups build the first three boxes and stop.

What a closed loop looks like day to day

A call comes in, tagged with its GCLID by the tracking number. It becomes a CRM record within minutes, not end of day — delay is where dispositions get skipped. Front desk (or an automation) sets a disposition before the record goes stale. A weekly job, or daily for higher-volume accounts, pulls every disposition marked qualified or booked and imports it as an offline conversion, GCLID intact. Google Ads sees, within days, which campaigns and keywords are actually producing patients — not just phone rings.

The compliance layer

For healthcare, this whole loop has to run without moving PHI into ad-platform systems. The identifiers that make the trip back to Google Ads are the click ID and a qualification flag — not the patient's name, condition, or any clinical detail. BAA-capable call tracking tooling, and a CRM field structure that keeps clinical notes separate from the disposition flag, are what make this compliant instead of a liability.

VERIFIED EXAMPLE · When I inherited a wasteful account at a luxury US healthcare clinic, it was optimizing toward platform conversions. Rebuilt around admitted patients imported from the CRM, cost per admitted patient fell ~78% while spend scaled ~2× and approved patients rose ~9×.

What clients say

"He monitors the full lead flow across systems and CRMs – data accurate, attribution clear, nothing falls through the cracks."

Ruben MirakyanRuben Mirakyan ↗ · Marketing Manager, luxury US healthcare clinic

Where the loop actually breaks
Break pointSymptomFix
Front desk never dispositionsCall volume looks healthy, CRM has no outcomeDisposition required before the record goes stale
Multi-location routingTracking number stripped before the call is loggedPreserve the number through the full routing path
No scheduled import jobDispositions sit in the CRM, never reach AdsWeekly (or daily) job pushing qualified outcomes back

Questions owners ask

We already have call tracking. Isn't that enough?

Call tracking alone tells you a call happened and where it came from. Without the CRM outcome importing back, the ad platform still doesn't know if that call became a patient — it's bidding on ring volume, which correlates with patient volume loosely at best.

Does closing the loop require exposing patient data to Google Ads?

No. The only fields that need to make the trip are a click ID and a qualification outcome — booked or not, admitted or not. Clinical details and PHI stay in the CRM and never enter the ad platform's import.

How often should the import run?

Weekly is the practical minimum for most healthcare accounts; daily is better once call volume and budget are high enough that Smart Bidding is actively re-learning within the week. The usual constraint is staff bandwidth to disposition calls promptly, not the technical import.

Not sure where your loop breaks?

Thirty minutes with your call tracking and CRM open side by side. We'll find the gap — front desk, routing, or the import itself — and you'll know exactly what to fix.

$500 audit + 90-day roadmap · direct with me, no account managers.

Book a 30-minute call