Your Google ads send people to book, and the booking happens somewhere else: Calendly, Acuity, Fresha, Square Appointments, or the system your gym or clinic runs on. Google Ads shows the clicks and the spend, and the conversions column stays empty or counts the wrong thing. Google can't bid for bookings it never sees, so it bids for what it can see. Here's why bookings go missing, what each system actually sends, the five ways to track them, and how to prove that one booking is one conversion.

The short answer
  • Google matches a booking to an ad click using the click ID that auto-tagging adds to your URL and stores in a cookie on your domain.
  • A booking page on another domain can't read that cookie, so the conversion has to fire on a page you own, or be imported with the click ID afterward.
  • Booking systems differ: Fresha reports bookings to Google Ads itself, Acuity runs your tag on its own domain, and Calendly reports to Google Analytics.
  • Count bookings once per click, make one action primary, and test with a real booking before you bid on it.

Why bookings go missing

When someone clicks your ad, auto-tagging adds a Google Click Identifier, the GCLID, to the page address. Google's help center says that with a Google tag on your site, the GCLID is stored in a new Google Analytics cookie on your site's domain. When your conversion tag fires later, Google uses it to tie the conversion back to the click.

A booking page on calendly.com or an Acuity domain is, to the browser, a different site. The same-origin policy keeps it apart from your pages, and it can't read cookies set on your domain. Embedding the scheduler doesn't change that, because the widget still loads from the booking system's domain, inside a frame.

Two smaller leaks finish the job. If a redirect on your site strips the address parameters, the click ID never arrives: Google says it must be passed to the final landing page. And if the conversion fires on a click of "Book now" rather than on a booking, Google learns to find people who click buttons.

What booking systems actually send

Booking systemRoute to Google AdsWatch for
FreshaBuilt in. Paste the Conversion ID from a website conversion action, and Fresha sends completed bookings as conversionsOnly bookings that follow an ad click count. Imported and offline conversion actions have no Conversion ID to connect
Acuity SchedulingPaste your Google Ads tag into Custom conversion tracking. Acuity fires it on every booking and purchaseThe code loads in a frame on sandbox.acuityinnovation.com, not your domain, and Acuity's support doesn't cover custom code
CalendlyIts Google Analytics integration sends invitee_meeting_scheduled to GA4, which you can import into Google AdsPaid plans only, one Measurement ID per organization, and visits without UTM tags show in GA as direct
Square AppointmentsA booking.created webhook, which a developer can use to pass bookings onSomeone has to build the step from your server to Google Ads

Sources: the help centers of Fresha, Acuity and Calendly, and Square's developer reference, reviewed November 2026. These integrations change, so check yours.

Gym, climbing wall and clinic systems vary even more. Ask yours three questions: can it send people to a page on your site after they book, can it run your Google tag on its confirmation page, and can it pass bookings out by webhook or export? The answers decide your route.

Five ways to track the booking, compared

RouteHow it worksWorks best whenWatch for
The booking system's own integrationYou paste a Google Ads Conversion ID into the booking system, and it reports bookingsIt's built for Google Ads, as Fresha's isWhat it counts as a booking, and from which clicks
A thank-you page you ownAfter booking, the system sends people to a page on your site, where the Google tag fires the conversionThe system can redirect after booking, as Calendly canReloads fire it again. Count one per click, and keep the page out of menus and search
An event from the embedded schedulerThe scheduler tells your page when someone books, and your page fires the conversionIt posts booking events to the page, as Calendly's JavaScript embed doesA plain iframe embed sends nothing
Import from Google AnalyticsGA4 records the booking as a key event, and Google Ads imports it as a conversionThe booking happens on your domain, or one your Google tag also runs onBookings GA4 can't tie to the ad visit show as direct and credit nothing
Offline import with the click IDYour site saves the GCLID with the booking, and you upload bookings or kept appointments laterThe sale comes later: consultations, trials, first visits, programsGoogle keeps the GCLID for 90 days, so upload well inside that

Sources: Calendly's redirect guide and developer embed guide; Google Ads Help on importing Google Analytics conversions and offline conversion imports, reviewed November 2026.

Google's tag can follow a visitor from one domain to another, but only across domains your tag runs on: its settings ask you to specify all of your domains that use this tag. A hosted booking page usually isn't one of them, which is why the routes above exist.

Most local businesses end up with two: one route that fires when the booking happens, and offline imports for what happens later, the appointment kept or the program sold. Keep them as separate conversion actions and make only one primary. Google counts primary actions in the Conversions column and uses them for bidding; secondary actions are for observation only.

Calendly: the coach's setup

Coaches and consultants book discovery calls through Calendly more than anything else, so it's worth being specific. Here are its three routes, from the one that ties a booking to the ad most cleanly to the one that ties it least.

Three Calendly routes, best first
  • Redirect to your own thank-you page. Calendly's confirmation page settings can send invitees to a page on your site after they book. Fire the Google Ads conversion there, when the page loads.
  • Embed it and listen. Calendly's JavaScript embed sends calendly.event_scheduled to your page when someone books. A few lines of code on your page turn that into a conversion. A plain iframe embed won't send it.
  • Import from GA4. Calendly's Google Analytics integration sends invitee_meeting_scheduled to GA4. Mark it as a key event and import it. It's the easiest to set up and the weakest at crediting the ad, because a visit without UTM tags shows in GA as direct.

Either way, a booked call isn't a client. On our Google Ads for coaches, the setup is "Calendar wired as a tracked conversion, and reminder sequences treated as part of the ad system." Then comes "Offline conversion import so a program sold six weeks later still teaches Google which search started it." If the bookings arrive but they're the wrong people, here's how to stop fake and unqualified bookings.

Settings that decide what counts

Check these on every booking conversion
  • Count: One. Google says counting one conversion per ad click suits leads, and website actions default to every conversion. If people pay when they book, count every booking and attach the value instead.
  • Primary, once. Only one action per booking should be primary, or the same booking counts twice in the column bidding learns from.
  • Conversion window. A click gets 30 days by default to turn into a conversion. Lengthen it if people often book weeks after their first click.
  • Auto-tagging on. It's on by default in new accounts. Check Admin, then Account settings, then Auto-tagging, especially in an older account.

How to test that one booking is one conversion

1

Follow the click ID

Open your landing page with ?gclid=test added to the address and check it's still there once the page loads. If a redirect drops it, Google can't match anything, which is why Google's help center flags redirects.

2

Watch the tag fire

Connect Google Tag Assistant to your site and book the way a customer would, on the public page. The conversion should fire once, on the booking, not on the Book now click. Its Chrome extension also detects Google tags inside frames, which helps with embedded schedulers.

3

Count the hits

One booking should fire the primary conversion exactly once. If it fires on the button and again on the booking, remove one of them.

4

Check the status

In Goals, then Conversions, a working action shows "no recent conversions" until one arrives, then "Recording". Unverified or Tag inactive means Google isn't seeing the tag.

5

Reconcile every week

Compare Google's booking conversions with your booking system's own count for the same days. Google should never report more bookings than you took. If it reports far fewer than your ads plausibly brought, a route is leaking.

What to bid on once it works

Bid on the booking. A conversion on a "Book now" click is easy to set up, and Google shows how to track button clicks as conversions. It's useful as a secondary action for watching the funnel. As the primary action, it teaches Smart Bidding to find people who click.

Bookings arrive more slowly than clicks, and that's fine. Google says Smart Bidding can start without conversion data, and recommends periods with at least 30 conversions for judging it. A small account is better off bidding on a few real bookings than on a lot of something that isn't one.

Then go a step further. Upload the bookings that became customers, the kept appointments, paid memberships or programs sold, as offline conversions with the click ID. Enhanced conversions for leads can also match them on a hashed email address. Google lists Zapier, a paid service as one way to send them from a CRM, and from 15 June 2026 uploads that used the Google Ads API go through its Data Manager API instead. On our Google Ads for local businesses, it's the standing rule: "Where your systems allow it we also feed booked jobs back as the conversion, so the algorithm learns what a good call actually sounds like."

The lesson from a gym account

Our clearest example is on Meta rather than Google, but the mechanics are the same. A climbing gym's ad account had been buying clicks, and because there was no purchase event firing, Meta had never been given a single sale to learn from. In the case study's words, the account started at £28.82 per booking on a link click objective and reached £5.13 once purchase tracking and a sales objective were in place, on essentially the same budget. Its rule holds on any ad platform: "Tracking you have not tested is tracking you do not have." The Facebook version of this guide, how to track bookings from Facebook ads, covers what Mindbody, Acuity and Calendly send to Meta.

Do it yourself, or get help?

Do it yourself if your booking system has a Google Ads integration or can send people to a page you own, and a test booking shows up once. Get help when it needs embed code, an offline import, or the click ID saved with each booking, or when Google and your calendar disagree and you can't see why.

On our Google Ads management for local businesses and for coaches, the booking conversion is part of the setup, not an extra. Management runs $500-$2,000 a month.

Questions people ask

How do I track bookings from Google Ads?

Make the conversion fire where Google can match it to the ad click: on a thank-you page you own, on your own page when an embedded scheduler reports a booking, through the booking system's own Google Ads integration, or by importing bookings with the click ID afterward. Then check that one real booking produces exactly one conversion.

Can I track Calendly bookings in Google Ads?

Yes, but not directly. On paid plans, Calendly's Google Analytics integration sends invitee_meeting_scheduled to GA4, which you can import into Google Ads. For cleaner matching, redirect invitees to a thank-you page on your own site, or use Calendly's JavaScript embed and fire the conversion when it reports calendly.event_scheduled.

Does Acuity Scheduling work with Google Ads conversion tracking?

Acuity's custom conversion tracking accepts a Google Ads tag and fires it on every booking and purchase. The code runs in a frame on an Acuity domain, not yours, and Acuity's support doesn't cover custom code, so test it with a real booking before you bid on it.

Why aren't my Google Ads bookings showing as conversions?

Usually because the booking happens on the booking system's domain, where the click ID stored on your site isn't available, or because a redirect drops the click ID before the visitor reaches your page. Check auto-tagging, follow the booking path with Tag Assistant, and confirm where the conversion actually fires.

Should a booking count as one conversion or every conversion?

One, for most bookings. Google says counting one conversion per ad click suits leads, and website actions default to every conversion. If people pay when they book, count every booking and attach the value instead.

How long do I have to upload offline bookings to Google Ads?

Google keeps the click ID for 90 days, so a booking matched by click ID has to be uploaded within 90 days. Conversions matched on hashed customer data, such as an email address, have 63 days.

When isn't booking tracking worth the effort?

When people can't book online yet, or the budget is too small for Google to learn from bookings. Our Google Ads management runs $500-$2,000 a month, and we're not the right fit if there's nothing in place to catch the bookings.

Not sure whether your bookings reach Google Ads, or reach it twice? Book a strategy call and we'll trace one booking from the ad to the conversions column with you.