Freshpaint is live, the pixels are gone, and Google Ads stopped learning
You moved to Freshpaint so patient data stops leaking to ad platforms, and that worked. Then Google Ads and Meta conversions dropped off a cliff and Smart Bidding started optimizing on almost nothing. The privacy filtering usually isn't what broke it. More often the allowlists are tighter than your compliance team actually requires, the Google Ads import conversion actions were never built, or attended visits never got wired back. We fix it inside Freshpaint, with your compliance team approving every field that leaves.
Free30 minutesNo obligation
Freshpaint · what breaks
What goes wrong after a clinic moves to Freshpaint
- 01
Google Ads conversions fell to a trickle overnight
Freshpaint only sends Google an event when the visit carries a gclid, gbraid or wbraid, and in HIPAA Mode those must be allowlisted. Miss either step and you bid blind on cardiology or oncology keywords.
- 02
Meta gets events but can't match them
Freshpaint's Meta Conversions API destination needs the browser user agent, with $fbclid and action_source recommended, and each waits on legal approval. Without them, Meta can't credit conversions to the ads that drove them, so campaigns optimize on thin, poorly matched data.
- 03
The old pixels never fully left
A Meta Pixel in a CMS template or a GA4 tag on the urgent care booking page keeps firing beside Freshpaint. That's a compliance problem first, and it can double-count conversions on top of Freshpaint's.
- 04
Ads optimize to form fills, not patients who showed up
A booking request isn't a visit. If only the website event reaches Google and Meta, the algorithm buys more no-shows, and you can't see which campaigns fill the schedule.
Freshpaint · the fix
What changes — Freshpaint
Every ad-driven conversion actually reaches Google and Meta
Click IDs allowlisted with sign-off, import actions mapped by ctname or ctid, and each event timestamped after its click so Google accepts it.
Bidding learns from attended visits
Attended appointments from your EHR or scheduling records go back as their own conversion, kept apart from booking requests.
One clean path per destination
Leftover pixels found and removed, every destination server-side in HIPAA Mode, and nothing double-counted.
Freshpaint · architecture
What Freshpaint actually lets you hook into
Everything below is from Freshpaint's own documentation and product pages. Where the docs don't say, we test it on your account.
- 1
HIPAA Mode on server-side destinations only
Freshpaint applies its PHI rules on its servers, so a destination set to client-side with HIPAA features on is invalid.
- 2
Project and destination allowlists
Any property not allowlisted is stripped before it reaches a non-HIPAA destination; project-level entries apply to every destination.
- 3
Google Ads Conversion API destination
Supports HIPAA Mode, needs import conversion actions, and sends only events from Google Ad clicks. Freshpaint's docs also warn that importing GA4 events as Google Ads conversions is non-compliant.
- 4
Meta Conversions API destination
Server-side delivery, with user agent required and $fbclid plus action_source recommended for matching.
- 5
Appointment and EHR data
Freshpaint describes matching stored click IDs to booking and attendance records from EHR or scheduling systems, including Epic reporting extracts, over direct connections, APIs or SFTP.
- 6
Custom domain and webhooks
CNAME records put the SDK on your own subdomain, and a Webhooks destination posts events to an endpoint you control; we confirm its HIPAA Mode settings before anything is sent.
Freshpaint · diagnose
Where Freshpaint tracking breaks, in diagnostic order
We start with the settings that silently drop events, because on Freshpaint the usual fault is a conversion withheld, not a conversion leaked.
- 01
Check each destination's connection mode
Client-side plus HIPAA features means the destination isn't doing what anyone thinks.
- 02
Read the allowlists for click IDs and conversion names
$gclid, $gbraid, $wbraid and ctname or ctid for Google; user agent, $fbclid and action_source for Meta.
- 03
Confirm the Google Ads actions are import type
Website-type actions won't take Conversion API uploads.
- 04
Send a test conversion from a tagged click
Then watch it arrive in Google Ads and Events Manager, timestamped after the click.
- 05
Scan the site for tags outside Freshpaint
Freshpaint's Web Tracker Monitoring helps, but we also load each booking page and read the network requests.
- 06
Check the attended-visit feed
If no EHR or scheduling data reaches Freshpaint, bidding is still learning from requests.
Freshpaint · prove
The QA evidence — Freshpaint
Run on your live site through real ad clicks, with your compliance contact reviewing payloads before production.
Source of truth
Your EHR or scheduling system's appointment records — ad-sourced bookings and attended visits by date, matched to the click IDs Freshpaint stored
- A test click from each platform, with the click ID confirmed on the Freshpaint event.
- The outgoing payload checked against the approved allowlist, field by field.
- Each conversion seen once in Google Ads and once in Meta Events Manager.
- No requests to ad platforms from any tag outside Freshpaint.
- Attended visits reconciled against both platforms across a closed window.
- Repeated 30 days later and after any website or allowlist change.
Freshpaint · free audit
What we check in the free audit
- Check each destination's connection mode
- Read the allowlists for click IDs and conversion names
- Confirm the Google Ads actions are import type
- Send a test conversion from a tagged click
- Scan the site for tags outside Freshpaint
- Check the attended-visit feed
Checked against
Your EHR or scheduling system's appointment records — ad-sourced bookings and attended visits by date, matched to the click IDs Freshpaint stored
Free30 minutesNo obligation
Freshpaint · when not to buy
When you don't need us on Freshpaint
Freshpaint's own team handles a lot of this, and some setups are already right.
- If Google Ads and Meta already report numbers close to your ad-sourced appointments and attended visits are flowing back, keep what you have.
- If your compliance team won't approve any click ID leaving Freshpaint, configuration can't fix ad attribution. Run on aggregate reporting instead, and we'll tell you so.
- If you're mid-rollout and Freshpaint's implementation team is still connecting your EHR, let them finish before anyone else touches it.
- If ad leads come in almost entirely by phone and CallRail or CallTrackingMetrics already reports qualified calls to Google Ads with your compliance team's approval, Freshpaint's web events matter less and the call side may already be fine.
Freshpaint · what we deliver
The event map on Freshpaint
Ad landing with click ID captured
gclid, gbraid, wbraid or fbclid stored by Freshpaint on arrival, with the page URL handled under your HIPAA Mode settings rather than passed through raw.
Appointment request submitted
A generic event name with no service line, condition or provider in it, so the label itself can't carry health information.
Call from an ad
If CallRail or CallTrackingMetrics is connected (both sit in Freshpaint's integration directory), ad calls are counted once and kept apart from form requests.
Appointment booked
From your scheduling records, sent to its own Google Ads import action.
Appointment attended
The primary bidding conversion, matched on the stored click ID and sent only for visits that happened.
Excluded on purpose
Patient portal logins, existing-patient rebookings, bill pay and anything not on the approved allowlist.
Written guarantee
95%+ tracking accuracy
Measured against Your EHR or scheduling system's appointment records — ad-sourced bookings and attended visits by date, matched to the click IDs Freshpaint stored. Miss it and we keep working at no cost.
From $400 · See packages
FAQ
Freshpaint questions, answered
Usually because Freshpaint only sends Google events that carry a gclid, gbraid or wbraid, and in HIPAA Mode those properties must be allowlisted. The other common cause is missing import-type conversion actions in Google Ads.
Your compliance team makes that call, not us. Freshpaint's docs require legal approval before properties like the user agent or fbclid are switched on, and we document exactly what each field contains so they can decide.
No. Freshpaint holds the BAA and the PHI filtering, so we configure and verify it. Anything we'd add next to it goes in only with your compliance team's sign-off on what it sends.
Yes, if attended visits from your EHR or scheduling system reach Freshpaint and match a stored click ID. That becomes its own conversion, separate from the booking request.
Freshpaint's own documentation calls that non-compliant because of how the GCLID is handled. Send Google Ads conversions through its Conversion API destination instead.
Practices where one ad-sourced patient is worth a lot: cardiology, oncology, neurology, pulmonology, rheumatology and regenerative medicine, plus urgent care, dialysis centers, residential and teen mental health programs and hospital service lines.
More on Freshpaint
- Enhanced ConversionsEnhanced Conversions enrich the conversions that already fire. First we make sur…
- Meta CAPIA one-click CAPI integration sends thin events. That's why your Event Match Qual…
- Cross-Domain TrackingYour checkout provider is the best performing traffic source in your GA4 account…
RELATED GUIDES
Booking tools beside Freshpaint, and what their bookings feed
- R.O. WriterAds ring your phone. R.O. Writer closes the RO. Google Ads never learns which calls paid.
- CelerantCelerant conversion tracking: see which ads sell at the counter, not just online
- Juris DigitalYour Juris Digital report shows more leads. Your signed cases don't.
- Autoshop SolutionsAutoshop Solutions conversion tracking that counts repair orders, not rings
- LawLyticsYour LawLytics site gets the inquiries. Google Ads can't tell which ones signed.
- PerkvilleYour ads are taking credit for Perkville referrals
- FindLawFindLaw reports contacts. Which ones became signed cases?
- GoDaddy Websites + MarketingYour GoDaddy site gets calls and form fills. Your ads can't tell which ones they paid for.
Free · 30 min
Get Freshpaint feeding your ads again
Free30 minutesNo obligation
