Your booking software and Google Ads don't talk to each other by default. Every appointment, every invoice, every completed booking is invisible to your campaigns. Here's how to connect them.
Booking software and Google Ads have no native connection — every paid appointment is invisible to Smart Bidding by default.
The fix has two parts: capture the GCLID when someone clicks your ad, then upload when they book or pay.
Most booking platforms support webhooks — this is the trigger that fires when a booking or payment happens.
ConversionLoop handles both sides: cl.js captures the GCLID, webhook listener uploads the conversion.
Setup takes 10 minutes regardless of which booking platform you use.
Booking platforms like Pabau, Boulevard, Mindbody, and Acuity are purpose-built for scheduling and payments. They have no awareness of Google Ads click data. When a client books an appointment, the booking record contains their name, email, and service details — but no ad click identifier. Without that identifier, there's nothing to upload to Google Ads.
When someone clicks your Google ad, their landing page URL contains ?gclid=CjwKCA.... A script on your page needs to read that parameter and store it before the visitor navigates away or the URL changes. Most booking platforms use iframes or redirects that strip URL parameters, so you need to capture before any redirect.
Most booking platforms support outgoing webhooks — HTTP POST requests fired when a specific event happens (appointment booked, payment received, etc.). This is the signal that tells you a conversion has occurred. Without a webhook, you're stuck polling an API or exporting manually.
The webhook from your booking platform contains the client's email. The GCLID was stored against that same email on page load. The matching logic looks up the GCLID for the booking email and prepares the conversion upload. This is where manual approaches fall apart — the matching requires either spreadsheet joins or custom code.
The Google Ads UploadClickConversions API requires specific formatting: the GCLID, a conversion action name, a UTC timestamp, and an optional value. Manual CSV uploads work but delay Smart Bidding by days. Errors in the CSV format cause silent failures.
Why the manual process breaks at scale — and what changes with automation
Manual connection: add a hidden GCLID field to your booking form, export bookings with GCLIDs from your platform, format as CSV, upload weekly in Google Ads. Each step is a failure point. Most booking platforms don't support custom hidden fields, so the GCLID never makes it into the booking record in the first place.
ConversionLoop removes every manual step. Add cl.js to capture GCLIDs, paste a webhook URL in your booking platform, enter your Google Ads credentials. Every booking or payment fires a conversion upload automatically. No exports, no spreadsheets, no developer.
ConversionLoop handles GCLID capture, upload formatting, and delivery automatically. Set it up once.
Start free trialAfter setup, ConversionLoop sends a test event through the full pipeline and shows you the result. In Google Ads, check the Diagnostics tab on your import conversion action — it shows every upload attempt, match result, and failure reason.
If your platform supports outgoing webhooks, yes. ConversionLoop accepts any JSON webhook payload. You map the email and value fields to the right keys, and the pipeline works the same way. If your platform doesn't support webhooks, Zapier can usually bridge the gap.
Phone bookings can be connected if your front desk logs the client's email in the booking system. The GCLID was stored against their email when they visited your site (even if they didn't book online). When the booking is created with that email, the match works.
Automated GCLID capture, real-time upload, and full error diagnostics. Every conversion, every time.
Start free — 14 days on usNo credit card required · No developer needed · Cancel anytime