Attribution
Offline Conversion Imports: How to Tell Google Which Leads Became Patients
Your ad account is optimizing toward something. If you have never sent outcomes back to it, that something is form submissions — and form submissions are the cheapest, least valuable thing your campaigns can produce.
On this page
This is the CRM-agnostic version — what the mechanism is, what it needs from your systems, and what changed in 2026. If you are on Salesforce specifically, the step-by-step build is in GCLID to Salesforce.
Why the platform's numbers look better than your bank account
Almost every clinic owner has had this conversation. The dashboard says 84 conversions last month. The front desk says the schedule was not noticeably fuller. Both are telling the truth.
A conversion in Google Ads means whatever you told it to mean, and by default that is a form submission or a click on a phone number. Neither of those is a patient. In elective healthcare the distance between them is enormous: the enquiry has to be answered, qualified, converted into a booked consultation, actually attended, and then converted into treatment. Five steps, each one leaking.
This matters more than it sounds, because Google's bidding is not passive. Smart Bidding is actively searching for more of whatever you defined as success. Define success as a form fill and it will find the audiences most likely to fill in forms — which skews toward price shoppers, students writing papers, people three states away, and competitors. It is optimizing perfectly. It is just optimizing toward the wrong thing.
What actually gets sent back — and what does not
This is the part that makes healthcare owners nervous, so it is worth being precise. An offline conversion import does not send patient information to Google. Four things go back, and only four:
| Field | What it is |
|---|---|
| Click ID (GCLID) | A random string Google appended to the URL when the person clicked. It identifies a click, not a person. |
| Conversion name | A label you chose, for example "Consultation Attended". |
| Timestamp | When it happened. |
| Value | What it is worth to you. |
No names. No phone numbers. No email addresses. No procedure, diagnosis, or anything from a medical record. The click identifier is meaningless outside your own account, and it travels one direction only.
How it works, in the order you would build it
1. Capture the click ID
When someone arrives from an ad, Google appends a GCLID to the landing page URL. It has to be captured at that moment and stored on the lead record when the form is submitted or the call is logged. This is a hidden field on the form plus a small script, and it is the single most important step — everything downstream depends on it existing.
This is also where most accounts silently break. A form embedded from a third-party booking tool often strips the parameter. A redirect from an old URL loses it. A phone call captured without call tracking never had one. Each of those is a lead the algorithm will never learn from.
2. Define the outcome that actually matters
Not the enquiry. Pick the first point in your funnel where the person has demonstrated genuine commitment and where you have reliable data. For most practices that is consultation attended rather than consultation booked — no-shows are a large fraction of bookings, and counting them teaches the algorithm to find more people who book and vanish.
3. Assign real values
Not every outcome is worth the same. A consultation for a full arch reconstruction and one for a single filling should not carry identical value, because they do not produce identical revenue. Once you send differentiated values, bidding stops treating volume as the goal and starts weighting toward money. This one change often does more than any structural work in the account.
4. Send it back on a schedule
The import can run as a scheduled upload from a spreadsheet, or through the API for near-real-time. For a small account a weekly upload is fine. For anything with meaningful spend, automate it — manual uploads get forgotten in the second month, and a gap in the data is worse than no data because it teaches the algorithm something false.
5. Wait before you change bidding
Let roughly 30 days of clean import data accumulate before pointing bid strategies at the new conversion action. Switching a campaign onto a conversion action with no history is how accounts stall for six weeks. The temptation to flip the switch immediately is strong. Resist it.
6. Check which pipe you are actually using
This mechanism has been quietly rebuilt. Through 2026 Google has been consolidating offline conversion imports and enhanced conversions for leads into Data Manager, with legacy API routes closing behind it. Nothing about the logic on this page changes — a click identifier, an outcome, a time, a value — but the route the data travels does, and setups built two or three years ago are the ones that break without anyone noticing.
There is also an upload window: conversions sent too long after the originating click are simply not accepted. In elective healthcare, where months can pass between enquiry and treatment, that constraint is a design decision rather than a footnote. It is another reason to send a mid-funnel event you can confirm quickly, and to hold final revenue as a business metric rather than a bidding signal.
On a luxury US healthcare clinic, I inherited an account that had spent heavily for months with very little to show. The instinct in that position is to add budget. I cut it and rebuilt tracking first, wiring click IDs into the CRM so verified patients — not enquiries — flowed back to the platform. Cost per verified acquisition fell roughly 78% while spend scaled about 2×, and verified volume rose around 9×. Same market, same procedures, same competitors. The account was simply optimizing toward the wrong signal.
The volume problem nobody mentions
There is a real constraint here, and any consultant who does not raise it is either inexperienced or selling you something.
Smart Bidding needs signal to learn from. If your practice converts eight patients a month, feeding the algorithm eight events a month is not enough for it to find a pattern — it will thrash, or it will simply stop spending. This is the most common reason offline conversion imports get implemented and then abandoned.
The way through it is to optimize bidding toward a mid-funnel event that happens often enough to teach the algorithm — a qualified enquiry, or a booked consultation — while holding cost per verified patient as the number you actually judge performance by. Those are two different jobs. Conflating them is how accounts with good tracking still end up managed badly.
What to check in your own account this week
- Open your conversion actions. How many are marked Primary? If it is more than one or two, bidding is being pulled in several directions at once.
- Look at what those primary actions actually are. If they are all form submissions and phone clicks, no outcome data is reaching the platform.
- Submit a test enquiry from an ad click. Does a click ID land on the record in your CRM?
- Ask whoever answers the phone how many of last month's enquiries became attended consultations. Compare that to the dashboard number.
- Check whether every form on the site captures the parameter — including the one embedded from your booking software.
- Confirm auto-tagging is enabled in the Google Ads account. Without it there is no click ID to capture in the first place.
What this changes
Once outcomes flow back, three things happen in sequence. First, reporting stops flattering you — the real cost per patient is usually several times the reported cost per conversion, and seeing it is uncomfortable. Second, bidding starts shifting budget toward audiences and queries that produce attended consultations, which often looks like fewer leads at first. Third, over the following two months, cost per patient falls while lead volume stays flat or drops.
That middle phase is where most practices lose their nerve and revert. Lead count is going down, the dashboard looks worse, and the instinct is that something broke. Nothing broke. The account stopped buying leads and started buying patients, and those are not the same purchase.
Questions I get asked
Does this work with Microsoft Ads and Meta too?
Yes. Microsoft has its own click identifier and offline import, Meta uses the Conversions API. The principle is identical; only the plumbing differs. Google is usually the place to start because it carries the highest-intent traffic in healthcare.
Do I need a developer?
Usually a small amount, yes — someone has to persist the click identifier on the lead record and expose the outcome data. It is typically a few hours of work, not a project. Most modern CRMs, including HubSpot, Salesforce and GoHighLevel, support this natively.
What if my CRM is a spreadsheet?
Then this still works and the upload is manual. It is less elegant and it will eventually need fixing, but the concept does not require enterprise software. What it requires is that the click identifier gets recorded somewhere at the moment of enquiry.
Is this HIPAA compliant?
The import itself sends no protected health information — only a click identifier, an event label, a timestamp and a value. That said, compliance depends on how your systems are configured and who has access to what, and that is a question for your compliance counsel rather than your marketer.
How long do I have to upload a conversion after the click?
There is a window, and it is not generous. Uploads that arrive too long after the originating click are rejected, which matters in elective healthcare where the gap between enquiry and treatment can be months. Send the mid-funnel event promptly rather than waiting for the final outcome to be certain.
Has Google changed how these uploads work?
Yes. Through 2026 Google has been consolidating offline imports and enhanced conversions for leads into Data Manager, and legacy API routes have been closing. If your setup was built a couple of years ago, the mechanism still works conceptually but the pipe it runs through is being replaced — worth checking before it fails quietly.