Sending Offline Conversions to Google Ads with Dewy
Most Google Ads accounts optimize toward the wrong thing. They count form fills, and Google's algorithm dutifully goes out and finds you more people who fill out forms—whether or not those people ever book, show up, or spend money. The result is a campaign that looks busy and a calendar that doesn't fill.
Offline conversion tracking fixes this. Because Dewy connects directly to your EMR (ModMed, Zenoti, DrChrono, Meevo), it knows what actually happened after the lead came in: who qualified, who booked a consult, who showed up for an appointment, and who turned into a high-value patient. Dewy sends those real outcomes back to Google Ads as conversions, so Google can optimize toward booked, high-value patients instead of toward form fills.
This is the single highest-leverage thing you can do to improve Google Ads performance for a cash-pay practice.
Why this matters
When you only track form submissions, every lead looks identical to Google. A tire-kicker who will never book counts exactly the same as a patient who books a $6,000 treatment package. Google's Smart Bidding has no way to tell them apart, so it optimizes for volume, not value.
When you feed real outcomes back in, three things change:
Google learns who your good leads actually are. Smart Bidding (Maximize Conversions, Target CPA, Target ROAS) starts steering spend toward the audiences, keywords, and placements that produce booked appointments and high-LTV patients—not just clicks that fill out a form.
You can finally measure true cost per booked patient. Instead of "cost per lead," you see cost per qualified lead, cost per booked consult, and cost per high-value patient. That tells you which campaigns are actually worth the money.
Your reporting matches your revenue. The numbers in Google Ads start lining up with what your front desk and EMR see, which makes budget decisions far easier to defend.
How it works
The flow is straightforward:
- A prospect clicks your Google ad. Google attaches a unique tracking ID called a GCLID (Google Click Identifier) to the URL.
- They land on your site and submit a form. Dewy captures the GCLID along with their contact details and creates the contact.
- As that contact moves through your EMR—qualifying, booking, showing up, paying—Dewy detects each milestone.
- At each milestone, a webhook sends the conversion (matched by GCLID) back to Google Ads.
- Google credits the original ad click with the real outcome.
The GCLID is the thread that ties the whole thing together. If a contact has no GCLID, the conversion cannot be matched and will not be sent to Google. This is the most common point of failure, so it gets its own section below.
The four conversion actions to set up
Set up these four conversion actions in Google Ads. They form a funnel, so you can see exactly where money turns into patients.
| Conversion action | Fires when | Why it matters |
|---|---|---|
| Qualified Lead | A new lead meets your qualification criteria in the EMR (real prospect, in service area, viable treatment interest) | Filters out junk leads so Google stops chasing them |
| Consult Booked | The contact schedules a consultation | The first real commitment signal—strong optimization target for most practices |
| Appointment Booked | The contact books a treatment/procedure appointment | Closer to revenue than a consult; ideal target for established accounts |
| High-Value Patient | A patient's total spend crosses your defined threshold. Because Dewy syncs financial data from your EMR and sums all of a patient's invoices, we can track cumulative spend and fire this conversion automatically once they cross the line. Your practice sets the threshold—we recommend a $2,500 baseline for most cash-pay practices, or higher ($5,000+) if your average ticket is large. | Teaches Google to find more of your most profitable patients, not just any patient |
Step-by-step setup
Step 1: Add a hidden GCLID field to every form
This is non-negotiable. Every form that feeds Dewy needs a hidden field that captures the GCLID from the URL. No GCLID, no conversion match.
- Add a hidden field to your form and map it to the GCLID field on the Dewy contact record.
- Add a small script to your site that reads the
gclidparameter from the page URL and writes it into that hidden field on form load.
A minimal version of the capture script. Add it to every page that has a form, just before the closing body tag, and make sure the hidden field is named gclid :
<script>
(function () {
var fromUrl = new URLSearchParams(window.location.search).get('gclid');
if (fromUrl) { try { localStorage.setItem('gclid', fromUrl); } catch (e) {} }
var gclid = fromUrl || (function () { try { return localStorage.getItem('gclid'); } catch (e) { return null; } })();
if (!gclid) return;
function fill() {
document.querySelectorAll('input[name="gclid"]').forEach(function (f) { if (!f.value) f.value = gclid; });
}
if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', fill); } else { fill(); }
document.addEventListener('focusin', fill, true);
})();
</script>
This script persists the GCLID in localStorage , so prospects who click an ad, browse a few pages, and convert later still get matched—and it only writes a value when a GCLID is actually present, so it never touches direct or organic visits.
Step 2: Grant Dewy access to your Google Ads account
So the Dewy team can create the conversion actions and connect them to Zapier, they'll need access to your Google Ads account.
- In Google Ads, go to Admin → Access and security.
- Click the + button to invite a new user.
- Enter the Dewy email address. Ask for it through the help bubble in the bottom right corner of your Dewy account if you do not have it.
- Set the access level to Admin (required to create conversion actions and link integrations) and send the invite.
- Send a quick note through the help bubble so we can accept the invite.
If you would rather not grant standing access, Dewy can also do the conversion setup in a screen-share session. Ask through the help bubble.
Step 3: Dewy builds and tests the integration
Once you've completed Steps 1 and 2, the Dewy team will:
- Create the four conversion actions in your Google Ads account (Qualified Lead, Consult Booked, Appointment Booked, High-Value Patient).
- Build the Zapier workflows that fire each conversion when the matching EMR milestone occurs, passing the GCLID, conversion action name, conversion time, and value.
- Run test conversions to confirm everything matches before going live.
Step 4: Verify it's working
You're welcome to confirm the GCLID capture is working on your side while Dewy handles the rest:
- Visit one of your forms with a fake GCLID appended to the URL (e.g.,
?gclid=TEST123). - Submit the form and confirm the GCLID lands on the new Dewy contact record.
If the GCLID shows up there, your forms are wired correctly. Dewy will confirm the Google Ads side once conversions start recording (usually within a few hours, though full attribution can take longer).
Common pitfalls
- Missing GCLID field on one form. It only takes one untracked form to create a blind spot. Audit every form that feeds Dewy.
- GCLID lost on multi-page visits. Use the persistence approach above so visitors who don't convert immediately still get matched.
- Conversion action names that don't match. A typo between Google Ads and Dewy means conversions silently fail to route. Copy/paste, don't retype.
- Optimizing too early. Smart Bidding needs enough conversion volume to learn. For low-volume milestones like High-Value Patient, let data accumulate before switching bidding strategies to it.
- Double-counting. Decide whether each milestone counts once per contact and set the Google counting option accordingly.