Google Ads can report few or no bookings for a practice whose patients book through DrChrono's scheduling widget, because the booking finishes inside DrChrono's frame, not on your pages. The fix is to carry the ad click id into the booking and send completed visits back to Google Ads.
Quick answer
Open your site from an ad on your phone and book a test slot. If your Google Ads conversion did not fire, the booking is invisible to your tag. Ask whoever built your site to save the ad click id (the code Google Ads adds to the link when someone clicks an ad) with the booking. Then count three things separately: bookings started, bookings made and visits completed. Send the last one to Google Ads as an offline conversion (a result reported after the click, from your own records).
What exactly does DrChrono give you to put on your site?
DrChrono's setup article says the scheduling widget adds "a direct booking link" to your website so patients can schedule while visiting it, and that it is separate from OnPatient appointment scheduling (DrChrono, checked 2026-10-12). Three steps turn it on: tick "Access to online scheduling" under Account Settings, open the office's "Online Schedule" and switch on both "Show office information online" and "Allow online scheduling in this office", then copy the code from "Share Office Link".
That last step gives you a "Schedule URL" and an "Embed Schedule" iframe code, either for all offices or for one. An iframe is a window on your page that shows another page. The same article lists what you control: whether existing patients may book follow-ups or new appointments, whether new patients may book, whether patients can cancel online, a cutoff time, and the days and hours offered. DrChrono's pricing grid lists a "Scheduling Widget for Website" under all three plans, Foundation, Growth and Premium (DrChrono pricing, checked 2026-10-12).
Where does the booking actually happen?
DrChrono's article does not say which web address the frame loads from, or whether that page lets you add your own scripts. You can check in a minute: in the office's row choose "More actions", then "Preview Office Schedule", which DrChrono says opens "the office's live patient-facing online booking page" in a new tab. Read the address in that tab; if it is not your domain, that is where a patient finishes booking.
That matters because your Google tag only sees pages it is installed on. Google's cross-domain help says each domain you include needs the Google tag, with the same tag ID on every page (Google, checked 2026-10-12). It does not mention iframes either way. So unless DrChrono's page runs your tag, which its setup article does not offer, the last step of the booking is outside what your site can measure.
What does DrChrono's Google Analytics field do?
In the setup article, each office has a "Google Analytics ID" box, described as "Used to track the online appointment scheduler." A separate DrChrono article tells you to paste your Google tag ID there, and warns it can take up to 24 hours for analytics to show; the article was last modified in July 2024 and its example still shows an older UA- style code (DrChrono, checked 2026-10-12).
Neither article says what events the widget sends, whether a booking arrives as a conversion, whether it stays tied to the visitor's earlier ad click, or whether anything from the widget reaches Google Ads. Treat the field as a way to get some data into Google Analytics, and prove with a test booking that a booking arrives and carries the right source.
How does a booking come to count for the ad?
Three pieces make this work, and the first explains the rest. When Google Ads sends someone to your site, it can add a click id (a long code, called a gclid, in the address) that identifies that one ad click. If you hand that code back with a result, Google can credit the right ad.
The first piece is capturing and keeping the id as the visitor moves around your site; capturing the gclid covers that part. The second is saving it with the booking, which is the step whose answer depends on what DrChrono lets a website pass in; ask them, do not assume. The third is reading appointment status back: getting appointment outcomes out of your EHR and the DrChrono API cover what leaves the system.
I connected DrChrono to Google Ads for a medical practice in the US: bookings carry the ad click id, and booked or completed visits go back to Google Ads as offline conversions, which I built and debugged.
What should you count, and what should Google Ads chase?
Keep three counts apart. A booking started is a widget opened or a slot picked, and it is a weak signal. A booking made is a confirmed slot, and a visit completed is the one that matches revenue. Cancellations and no-shows sit between the last two, and adjusting conversions after no-shows shows how to take them back out.
Point Google Ads at completed visits when there are enough of them for the account to learn from; before that, bookings made are the working compromise, with completed visits imported beside them. A widget opened is a signal worth watching and a poor thing to bid on, since an opened widget counts the same whether or not anyone arrives.
Illustrative month: what the cost per result looks like
Illustrative: every number below is made up for an imaginary two-provider primary care practice, and none comes from a client.
The practice spends $1,200 on Google Ads in a month. Its website tag counts every widget opened as a conversion. With the click id saved with each booking, the calendar then shows how many of those clicks turned into appointments and visits.
| Step | Count | Spend divided by count |
|---|---|---|
| Ad clicks | 400 | $3.00 per click |
| Widget opened (what the tag reports) | 90 | $13.33 per reported conversion |
| Booking made | 24 | $50.00 per booking |
| Visit completed | 15 | $80.00 per completed visit |
The check: $1,200 divided by 90 is $13.33, by 24 is $50.00, and by 15 is $80.00. Of 24 bookings, 15 were completed, which is 62.5 percent. The ad account would call this a $13.33 result, but the practice paid $80 for each patient who came. Do the same with your own month, dividing spend by each count and taking the last two from the calendar.
What can you see now, and what needs work?
| What you can see without extra work | What needs the click id path | What needs a developer |
|---|---|---|
| Clicks and cost in Google Ads | Which ad click led to each booking | Saving the click id with the booking |
| Calls and form submissions on your own pages | Which bookings were completed | Reading appointment status out of DrChrono |
| Site visits in Google Analytics | Cost per completed visit by campaign | Sending the result to Google Ads on a schedule |
| Some widget activity, if the Analytics ID field is filled in | A way to tell a missed booking from a kept one | Handling the id when a visitor returns later |
What stays out of Google Ads?
Only the click id, a conversion name, a value and a time should go to Google. No names, dates of birth, phone numbers, visit reasons or diagnoses.
HHS's online tracking bulletin says that on June 20, 2024 a federal court in Texas vacated the part of it covering an online technology that connects a person's IP address with a visit to a public page about specific health conditions or healthcare providers, and that HHS is evaluating its next steps. The same bulletin still says tracking on a page where people schedule appointments may have access to protected health information in certain circumstances, and where it does, the HIPAA Rules apply (HHS, checked 2026-10-12 via the Internet Archive copy of 2026-10-09). So ask your privacy officer or healthcare counsel before putting any tag near a booking page. I describe my own work as HIPAA-conscious; I am not a lawyer, and I do not sign a business associate agreement for you.
HIPAA is a US law; for a Canadian practice, Canada's privacy commissioner says PIPEDA covers personal information handled in commercial activity, with substantially similar laws in Alberta, British Columbia and Quebec and, for personal health information, in Ontario, New Brunswick, Nova Scotia and Newfoundland and Labrador (Office of the Privacy Commissioner of Canada, checked 2026-10-12).
What should you ask DrChrono and your web person?
- Which web address does the scheduling frame load from, and can my own tag run inside it?
- Can a website pass a value, such as a click id, into the booking so it is saved with the appointment?
- If the Google Analytics ID is filled in, which events does the widget send, and are they conversions?
- Which appointment fields, including status and any source note, can I export, and who at the practice turns that access on?
- Who keeps the click id between the ad click and the booking, and what happens when the visitor books a day later?
Tags
Frequently asked questions
Does DrChrono's Google Analytics ID field make Google Ads count my bookings?
DrChrono's setup article says the field is used to track the online appointment scheduler, and its GA4 article says to paste your Google tag ID there for Google Analytics; neither says a booking reaches Google Ads. Whether a booking made in the widget stays tied to the ad click that brought the visitor is not stated, so run a test booking from an ad click and look for it in your reports.
Can I put my own tracking code inside the DrChrono widget?
DrChrono's setup page gives you a Schedule URL and iframe embed code to paste into your site, and it does not mention a place for your own scripts. The only tracking setting it documents is the Google Analytics ID per office. If you want more, ask DrChrono support what the widget allows.
Which should Google Ads optimize toward: bookings or completed visits?
Completed visits once there are enough of them each month for Google Ads to learn from, because a booking can still be canceled or missed. Until then, use bookings and import the visit outcome so you can see the gap. Which volume is enough is Google's call, not a number I can promise.
How long can I wait before sending a visit back to Google Ads?
Not long. Google's help on import errors says it keeps the gclid for only 90 days and suggests uploading more often, and a conversion older than the conversion window you set is rejected too ([Google](https://support.google.com/google-ads/answer/13321563), checked 2026-10-12). Send each visit soon after it is marked completed, not in a batch weeks later.
Which parts of the widget tracking can I check without a developer?
Whether your widget runs in a frame, and whether your ads carry a click id, you can check yourself. Capturing the click id and saving it with the booking is developer work, and so is reading appointment status out of DrChrono.
Written by
Alexander Cheberko
Marketing Analytics & Conversion Tracking Engineer, US and Canada, run remotely
- Media buyer on Google Ads and Meta Ads from October 2023 to September 2025, nearly $700K in spend.
- Set up patient conversion tracking for a New York medical practice (anonymized).
- Upwork Top Rated, 5.0 from 20 reviews.