HIPAA‑Conscious Conversion Tracking for Telehealth Google Ads
How telehealth and peptide clinics track Google Ads conversions without sending patient data to Google: Consent Mode v2, enhanced conversions, server-side tagging and offline imports.
Key takeaways
- Protected health information must never reach Google’s advertising products. Everything below is about preserving measurement while keeping that line intact.
- Consent Mode v2 requires two signals, ad_user_data and ad_personalization, alongside the original ad_storage and analytics_storage. Missing them degrades modelling and remarketing eligibility.
- Server-side tagging is a control point, not a compliance certificate. A server container that forwards the same identifiers is exactly as non-compliant as a browser tag doing it.
- The highest-value build for a clinic is offline conversion import: optimise toward qualified consultations instead of raw form fills, using hashed identifiers you collected with consent.
- URL parameters and form field values are the most common accidental leak. Strip them before anything is forwarded.
Where exactly is the line?
The rule is simple to state: information that identifies an individual and relates to their health, care or payment for care cannot be sent to Google Ads or GA4. Hashed emails used for enhanced conversions are still personal data, so the question is never “is it hashed?” but “does the combination of what I am sending reveal a health context about an identifiable person?”
An email address forwarded from a generic newsletter signup is a different risk from the same email forwarded from /glp1-eligibility/thank-you with a URL parameter naming the condition. The identifier did not change. The context did.
The three usual leaks
1. Page paths and query strings that name a condition or medication. 2. Form field values auto-captured by enhanced conversions or a tag manager variable. 3. Conversion action names and labels that describe treatment. All three are avoidable in an afternoon.
This article describes engineering practice, not legal advice. Your counsel and your privacy officer decide what your organisation may transmit; our job is to make sure the measurement still works once they have.
Consent Mode v2, correctly implemented
Consent Mode v2 tells Google tags how to behave based on a user’s consent state. Four signals matter:
| Signal | Controls |
|---|---|
| ad_storage | Advertising cookies |
| ad_user_data | Whether user data may be sent to Google for advertising |
| ad_personalization | Personalised advertising and remarketing eligibility |
| analytics_storage | Analytics cookies |
Implementation checklist:
- Set default consent state to denied before any Google tag fires. A default that runs after the tag is the same as no default.
- Update the state when the visitor chooses, and persist it across pages and sessions.
- Use a consent management platform that actually integrates with the Google tag rather than one that only hides a banner.
- Verify in tag assistant and in the network tab that the
gcsparameter reflects the choice made. - Re-test after every site release. Consent implementations break silently and nothing in the interface tells you.
Enhanced conversions without sending PHI
Enhanced conversions improve attribution by sending hashed first-party identifiers alongside a conversion. For a general ecommerce brand this is straightforward. For a clinic it demands care, because the conversion itself may carry health context.
Practical patterns that keep the line clean:
- Move the conversion upstream. Fire an identified conversion at a neutral event (account created, consultation booked) rather than at a treatment-specific confirmation page.
- Strip context. Send no page path, no query string, no referrer, and no custom parameters describing the service. Configure this explicitly — automatic collection defaults are not on your side.
- Use a server-side endpoint you control. Receive the conversion, drop every field not on an allow-list, hash what remains, forward that and nothing else.
- Allow-list, never deny-list. Deny-lists fail the moment a developer adds a field.
- Keep names generic. A conversion action called “Consultation booked” carries no clinical meaning; one named after a medication does.
Server-side is not a shortcut
Moving tags to a server container gives you a place to filter data. It does not, by itself, make anything compliant, and it does not create a business associate relationship with Google. The value is entirely in what you choose to strip.
Offline conversion import: the part that actually moves revenue
Almost every underperforming telehealth account we look at optimises toward form submissions. Google then does exactly what it was asked and finds the cheapest people willing to fill in a form — out-of-state, ineligible, and price-shopping. Offline conversion import fixes this by feeding real outcomes back.
- Capture GCLID (and
wbraid/gbraidfor app and iOS paths) on the first landing and store it against the lead record in your CRM. - Define outcome stages that matter: consultation booked, consultation attended, clinically qualified, programme started, retained at 90 days.
- Assign values reflecting real economics — expected programme value times stage conversion rate, not a made-up number.
- Upload via the Google Ads API or scheduled import on a cadence fast enough to stay inside the conversion window.
- Switch bidding to the qualified stage once volume supports it, keeping form fills as a secondary conversion for diagnostics.
Uploads carry GCLIDs and outcome flags — no names, no conditions, no clinical notes. That is what makes this the highest-value and lowest-risk build available to a clinic.
A reference architecture
Most clinics can get to a defensible setup with four components. None of them are exotic; the discipline is in what each one refuses to pass along.
- Consent layer. A CMP that sets Consent Mode v2 defaults to denied before any tag loads, then updates and persists the choice. This is the only component that must run first.
- Browser tag, deliberately thin. The Google tag fires events with no page path, no query string and no form values. Custom parameters are opt-in, never automatic.
- Server container you control. Receives events, applies an allow-list, hashes permitted identifiers, and forwards only that to Google. This is where policy is enforced in code rather than in a document.
- CRM as the source of truth. Stores GCLID against the lead, tracks outcome stages, and pushes offline conversions back with outcome flags and values — no clinical fields, ever.
Design principle
Assume every field will eventually be added by someone who has not read your privacy policy. An allow-list survives that; a deny-list does not. Enforce it in the server container, where a front-end release cannot change it.
Eight mistakes we see repeatedly
- Thank-you page URLs that name the treatment. Free to fix today, expensive to explain later. Use neutral confirmation paths.
- Conversion actions named after medications. The name travels into reporting and into Google's systems.
- Auto-collected form fields. Enhanced conversion auto-detection can scrape inputs you never intended to send. Configure fields explicitly.
- Consent tags firing after the Google tag, which makes the whole implementation cosmetic.
- Remarketing audiences segmented by condition page. The segmentation itself is the health inference.
- Counting every micro-event as a conversion, which makes optimisation meaningless and inflates reported performance to leadership.
- No GCLID column in the CRM, which makes offline import impossible and is usually a one-line form change.
- Never re-testing. Tracking breaks silently at every site release; without a scheduled check you find out from a month of bad data.
Reconciling Google's numbers with reality
Once consent modelling, enhanced conversions and offline imports are all in play, three different systems will report three different numbers. That is expected. What matters is that you know which number answers which question.
| Question | Source of truth | Why |
|---|---|---|
| Which campaign should get more budget? | Google Ads, with offline conversions imported | It is the system making the bidding decision |
| How many patients did we actually acquire? | CRM / billing | Only place a real outcome exists |
| Is the site converting better? | Analytics, consent-modelled | Relative movement is reliable even when absolutes are not |
| What did a patient cost us? | Total spend ÷ CRM-confirmed patients | Blended and unarguable |
Publish that table internally. Most measurement arguments inside clinics are two people answering different questions with the same dashboard, and settling which system owns which question ends the argument permanently.
Validating the whole thing
Run this quarterly, and after every website release:
- Consent default fires before tags;
gcsvalues match user choice - No conversion payload contains page path, query string or form values
- Conversion action names carry no clinical meaning
- Enhanced conversion identifiers derive only from allow-listed fields
- GCLID capture rate above 90% of paid sessions in the CRM
- Offline uploads landing inside the conversion window, with a match rate you monitor
- Ads reported conversions reconcile against CRM outcomes within a tolerance you have agreed
If several of these are unknown, that is the work — not another round of bid adjustments. Related reading: conversion tracking without fooling yourself and advertising compounded GLP‑1s. To get a scored view of your current setup, run the Readiness Score or book a strategy call.
Founder Question
“Isn’t server-side tracking enough to make us compliant?”
Our Perspective
A server container gives you somewhere to enforce a rule; it does not enforce one by itself. If the same identifiers and the same treatment-specific page paths pass through it untouched, the data reaching Google is identical to a browser tag. The compliance value is entirely in what you strip — and in writing that as code rather than as a policy document nobody reads before a release.
Practical Recommendation
- Set Consent Mode v2 defaults to denied before any Google tag loads, and verify the gcs parameter reflects real user choices after every site release.
- Enforce an allow-list in a server container you control, so no page path, query string or form value can ever be forwarded — a deny-list fails the moment a developer adds a field.
- Build offline conversion import next. Optimising toward qualified consultations instead of raw form fills is the highest-value, lowest-risk measurement work available to a clinic.
What we learned
The clinics that scale profitably are almost always the ones that did the offline conversion work early. It is unglamorous, it takes a CRM change, and it is the difference between an account that buys form fills and an account that buys patients. Everything else in tracking is refinement by comparison.
Frequently asked
Does Google sign a BAA for Google Ads?
No. Google Ads is not offered as a HIPAA-covered service, which is precisely why the architecture has to guarantee no protected health information is ever transmitted rather than relying on a contract.
Can we use remarketing lists at all?
Audience building based on health context is where clinics get into trouble. Broad site-visitor audiences with no condition segmentation, built with consent, are a different proposition from a list named after a treatment page.
Is server-side GTM required?
Not strictly, but it is the cleanest way to enforce an allow-list before anything leaves your control. Without it you are trusting browser-side configuration that any release can change.
What if our consent rate is low?
Consent Mode v2 modelling recovers part of the gap, and offline conversion import is unaffected by cookie consent because it keys on GCLID captured at click. That is another reason the offline build is worth doing first.
Next step
If you want this applied to your account and your site rather than read in the abstract, book a 30-minute strategy session. We will look at the domain before the call.
Book a Strategy CallRelated articles
Conversion Tracking for Peptide Ecommerce (Without Fooling Yourself)
A tracking build for peptide stores: single source of truth, enhanced conversions, consent handling, and the double-counting patterns that quietly bre…
Can You Advertise Compounded GLP‑1s on Google Ads?
What Google's restricted drug term rules mean for compounded semaglutide and tirzepatide, why keyword targeting is the real wall, and how GLP-1 clinic…
The Google Ads Compliance Checklist for Peptide Companies
A practical, page-by-page compliance checklist for peptide websites and Google Ads accounts, in the order we run it during an audit.…