Google Ads says 40 conversions. Your EHR says 11.
The two systems are counting different events. Google counts the form submission or the phone tap; your EHR counts the patient who arrived and was treated. Neither is lying — they were never measuring the same thing, and nobody built the join between them.
The short answer
To run Google Ads for medical practices whose reported numbers do not match reality, optimize toward a treated patient, joined back to the click that produced them — recorded in your EHR or practice management system — rather than toward form fills or booked appointments. This is the single most common reason a practice fires an agency, and usually the agency has not done anything wrong. The costliest mistake is assuming one of the numbers is wrong. Everything below is the build order, in the sequence you would actually work through it.
Written by Ariful Islam — eight years building Google Ads accounts and the conversion tracking underneath them.
Specific to Reporting gap
Why Google Ads shows 40 conversions and your EHR shows 11
The gap between Google Ads and your EHR closes when you stop bidding on form fills and import treated patients instead. Store the click ID at booking, match it to the visit in the practice management system, and send back only the click ID, timestamp and value, never a name, diagnosis or appointment type, as the primary conversion.
In a practice, the forty usually come from a handful of predictable places: thank-you page reloads counted twice, calls over 60 seconds from existing patients rescheduling, form fills from people outside your insurance panel, view-through and modeled conversions, and conversions credited on a 30-day window to clicks the patient would have made anyway on your brand name. The eleven come from the EHR, which only knows who walked in and was seen. Neither number is lying; the platform is counting intent, the EHR is counting care.
Fix the structure, not the report. Demote form submits and call conversions to secondary so they stay visible but stop steering bids, and make an offline conversion called something neutral, such as "visit_completed", the primary action. Pass a value that reflects the visit type internally, for example a higher value for a new-patient surgical consult than a routine follow-up, but encode it as a number, not a label Google can read. Keep brand search in its own campaign so its easy conversions do not inflate the cost per patient for non-brand terms.
The failure specific to practices is the join. Most EHRs have no field for a GCLID, the front desk books by phone, and the patient fills intake forms in a portal the ad tag never touches. Capture the click ID in the booking layer or a small middleware table keyed to the appointment ID, then match it after the visit is marked complete. Never route the EHR export to Google with names, dates of birth or diagnoses attached, and do not switch on enhanced conversions for leads without counsel signing off.
Search terms to start from
- google ads conversions not matching
- google ads offline conversion import ehr
- google ads reporting more conversions than actual patients
- track patients from google ads
- google ads conversion tracking for medical practice
- gclid practice management system
- google ads call tracking healthcare
- healthcare offline conversion tracking
Negative keywords
- certification exam
- jobs
- free course
- ehr software
- epic login
- ehr training
- adsense
- salary
Read this before step one
Google Ads does not fail on its own. It fails on top of three things that were already broken.
- 01
Conversion tracking that reports the truth
If Google is counting form fills rather than a treated patient, joined back to the click that produced them, every bid it makes is aimed at the wrong outcome. First-party, server-side, joined back to your own system — not a browser tag that a consent banner or a cookie policy can silence.
- 02
A landing page that answers the search
One page for every ad group means the page answers a general question when the search asked a specific one. Google scores that as poor landing page experience and charges you more per click for it.
- 03
The right campaign for the goal
Performance Max on a broken signal spends faster and explains less. Search first, on a conversion you trust, then expand — in that order, because the order is not a preference.
Get all three right and the playbook below compounds. Get the first one wrong and everything below is executed perfectly in the wrong direction — which is the single most expensive thing that happens in this channel.
Not sure which of the three is wrong on your account? Send it over and we will tell you what it is actually reporting.
Before deciding which to trust
Write down, precisely, the event behind each figure. Most of the time nobody has ever done this and the discrepancy dissolves into two clearly different definitions.
- 01Get the exact conversion action definition from Google Ads, including the counting setting.
- 02Get the exact report definition from the EHR, including the date basis.
- 03Note the attribution window on the Google side and the reporting period on the practice side.
- 04Expect them to differ. The question is by how much and why.
In the order they usually apply
Almost every gap is one of four things, and they compound. Ruling them out in order is faster than debating the totals.
- 01Counting setting: 'every' conversion counts repeat form fills from the same person.
- 02Attribution window: a conversion credited to last month's click appears in last month's row.
- 03No-shows and unqualified enquiries never reach the EHR at all.
- 04Calls answered and handled outside the tracked path are invisible to Google.
Thirty seconds, frequently the whole answer
A lead-generation conversion action set to count 'every' rather than 'one' inflates by whatever your repeat-submission rate is, and forms get submitted twice constantly.
- 01Open the conversion action and check Count: it should be 'One' for lead actions.
- 02Check for duplicate conversion actions firing on the same event.
- 03Check whether both a form action and a thank-you page action exist.
- 04Look for a tag firing on every page load rather than on submission.
The number nobody wants
Between form fill and treated patient there are several stages, and each loses people. Knowing the rate at each is more useful than closing the gap on paper.
- 01Form fills → contacted.
- 02Contacted → appointment booked.
- 03Booked → attended.
- 04Attended → treated and paid. This last number is the one that matters.
The actual fix
Capture the click identifier at the form, carry it into the practice system, and send the outcome back when it is known. This is the step that changes what the algorithm optimises toward, and it is the one almost no account has.
- 01Capture GCLID in a hidden field on every form and store it against the record.
- 02Give staff a field for it on phone enquiries, or use call tracking that passes it.
- 03When the patient is treated, upload that as an offline conversion with the stored GCLID.
- 04In a HIPAA context, send the fact and the value only — never the condition or the identity.
Where the money comes back
Once treated patients flow back, smart bidding stops buying form fills. Expect volume to fall and cost per treated patient to fall further; that is the trade working as intended.
- 01Switch the primary conversion action to the offline one.
- 02Mark form fills as secondary so they still report but no longer bid.
- 03Give the offline conversion a value if the values differ meaningfully.
- 04Allow a full learning period before judging. The first two weeks will look worse.
Permanently
From here the Google column is a diagnostic, not a scoreboard. The practice system is the scoreboard, and the reconciliation between the two runs monthly.
- 01Reconcile Google conversions against treated patients every month.
- 02Track the ratio between them; a sudden change means tracking broke, not that demand changed.
- 03Report cost per treated patient to the owner, not cost per lead.
- 04Keep the two definitions written down where the next person can find them.
When Google Ads is the wrong answer here
Three situations where running this playbook will lose money. Read them before you fund the account, not after.
- You have not launched yet and nothing is broken. Build it right the first time — this page describes repairs, and repairs are more expensive than construction.
- The question is legal rather than technical. This page explains the mechanism and what it implies; it is not legal advice and does not replace your counsel's sign-off.
- You are looking for a way around a rule rather than a way to comply with it. Circumventing a platform's systems costs the account permanently, and we will not help with it.
Questions this raises
- Our EHR vendor says they cannot store a click ID. What now?
- Store it outside the EHR, in your scheduling tool or a separate table that maps the appointment ID to the GCLID. You only need the EHR to export appointment IDs with a completed status, which most systems can already do.
- Should call conversions count at all for a practice?
- Count them as secondary, so you can see call volume by campaign, but do not bid on them. Existing patients calling to reschedule and out-of-network callers make raw call conversions a poor stand-in for new patients seen.
- Which number should I believe?
- Yours. The practice system records what actually happened and what you were paid for. The ad platform records what it could see from the browser.
- Is my agency lying to me?
- Usually not. Most agencies report the platform number because it is the one they have. The gap is structural, and closing it needs access to your systems, which most agencies never ask for.
- How big a gap is normal?
- There is no normal. It depends entirely on your no-show rate, your qualification rate and your close rate. What matters is that the ratio is stable — a moving ratio means something broke.
- Does offline conversion import work with a small practice?
- Yes. It needs a GCLID field and someone to export weekly. It does not need a data team.
- Will this reduce my conversion volume?
- Yes, on the dashboard. That is the point. You will be buying fewer, better outcomes and the reported number will finally mean something.
Five problems we get called in to fix
Every one of these arrived as “the campaign has stopped working”. None of them were the campaign. If you recognize your own symptom here, the cause is probably the one sitting next to it.
The reported number and the real number stopped agreeing.
Nothing joins the ad click to your EHR or practice management system, so the platform reports what it can see and nobody reconciles it.
Capture the click identifier at the form, store it against the record, send the outcome back when it is known.
Conversions collapsed and nothing in the account changed.
The tracking broke, not the campaign — a site update, a consent banner change, or a browser tightening cookie rules.
First-party server-side tagging, so measurement does not depend on a third-party cookie surviving, plus monitoring so the next break is an alert rather than a quarter.
Compliance asked a question nobody could answer in writing.
The tags were installed by whoever built the site, and no one has audited what leaves the page or where it goes.
An inventory of every tag on every clinical page, then a server-side container that redacts before anything is forwarded.
So what should you actually do with this?
Three honest options. The first one is genuinely fine for a lot of businesses, and we would rather you picked it knowingly than drifted into it.
Run it yourself
Good if you have the hours and someone technical
- A build, then a weekly routine that never stops
- You end up understanding your own account, which is worth real money later
- The measurement step still needs a developer
- Your mistakes are paid for at auction prices while you learn
Hire a general agency
Good if you want it off your desk this month
- Fast to start, and most are competent at the campaign work
- Usually optimizes toward whatever is easy to count — the form fill, the booked call
- Reports come from the ad platform's own numbers
- The measurement problem stays yours, because it lives in your systems
Work with us
Good if the reporting has stopped matching reality
- We build the measurement first — first-party, server-side, joined back to your EHR or practice management system
- Then we run the account on a conversion we can both check
- Reporting is against your numbers, not the Google column
- Eight years of this, and the tracking and the media are the same team
We are not going to promise you a number. Anyone who quotes you a return before seeing what your account currently reports is guessing, and the guess is always flattering. What we will tell you, for free and before any of this becomes a conversation about money, is what your account is actually measuring today.
Or we run it for you
Eight years of Google Ads, on top of tracking that reports the truth.
Everything above is doable. Doing it every week for a year, while running the business it is meant to fill, is the part that does not fit.
Most agencies will run the campaign and take your word for what a conversion is. We build the measurement first — first-party, server-side, joined back to your EHR or practice management system — and then manage the account on a signal we can both trust. It is the same reason the playbook above starts with the conversion rather than the keywords.
- Account build or rebuild, structured the way this page describes
- Conversion tracking wired to your EHR or practice management system, not to form fills
- Server-side, first-party tagging so the signal survives the browser
- Landing pages that answer the ad, one per intent
- Monthly reporting against your own numbers, not the Google column
- The search terms report worked every week, not quarterly
The first conversation is a read of what your account is actually reporting. No deck, and nothing to sign to get it.
