Attribution for chat
How to Track Chatbot Conversions in Google Ads, GA4 and Meta When the Booking Is the Win
Somebody opens the chat bubble, and an ad account somewhere records a conversion. That single setting is why a campaign can claim dozens of conversions in a month that filled a handful of appointments. A chat is a conversation. A booking is money moving toward you.
November 1, 2026 · 10 min read
The short answer
To track chatbot conversions, capture the visit's UTM tags and Google click ID when the page loads, keep them attached through the chat, and count the booked appointment, not the chat, as the conversion. Send it to Google Ads with the click ID through offline conversion import, now run through the Data Manager API, to GA4 as a key event, and to Meta through the Conversions API.
On this page
- Why "chat started" is the most expensive conversion you can count
- Keeping the ad click attached from the landing page to the booking
- One booking, written down: what the record should hold
- Sending bookings to Google Ads after the June 2026 change
- GA4: the booking as a key event, sent from the server
- Meta: the Conversions API and the fbc value
- The order we set it up in, and what you will see afterward
Why "chat started" is the most expensive conversion you can count
Ad platforms learn from what you call a conversion. Tell Google Ads or Meta that an opened chat window is a win, and the system goes looking for more people who open chat windows: the curious, the bored, the competitor checking your prices. The reports look wonderful. The calendar does not change.
- Widget opened measures curiosity. Useful in a funnel, useless as a goal.
- First message sent measures engagement, including the visitor who asked whether you are hiring.
- Contact captured is closer, but a phone number is a lead to chase, not an appointment.
- Booking made is the event a business owner would pay for. It is the only one Kairos treats as the conversion, and the only one its ad platform sync, now rolling out to Growth and Pro plans, will send.
The earlier steps still matter for diagnosis, and the Clio dashboard shows each of them as a funnel. They just should not be what your bidding chases. This page covers how the booking carries its source all the way back. The Kairos overview explains the widget itself, and our conversion tracking setup service covers tracking beyond chat.
Keeping the ad click attached from the landing page to the booking
Attribution breaks in the gap between the page view and the booking. The visitor lands with tags in the address bar, reads two pages, opens the chat on a third, and books. If nothing caught those tags on arrival, the booking shows up as "direct" and the ad that paid for it gets no credit. Kairos records them when the visit starts and keeps them with the conversation.
| Where it comes from | What it lets you do | |
|---|---|---|
| utm_source, utm_medium, utm_campaign | Tags you add to ad and post links; Google's GA4 help says to always use these three together | See bookings by campaign in Clio and in GA4 |
| GCLID (Google Click ID) | Assigned by Google Ads to each ad click and carried in the landing URL | Send the booking back to Google Ads as an offline conversion |
| fbclid | The fbclid query parameter in the landing page URL after a Meta ad click | Build the fbc value Meta's Conversions API accepts |
| GA4 client ID | Set by the Google Analytics tag on your site | Join a server-sent booking event to the visitor's session in GA4 |
| Page the chat started on | Recorded by the widget | Learn which service pages produce bookings, not just traffic |

Google's GA4 guidance on UTM parameters recommends always setting utm_source, utm_medium and utm_campaign, and warns that missing ones show up as "(not set)". Write them consistently. "Facebook", "facebook" and "fb" are three sources to a report and one to you.
One booking, written down: what the record should hold
Before any data goes to an ad platform, the booking needs to exist as a clean record in one place. Clio, the record-keeping agent in Athena, holds that record for every Kairos widget, and the analytics dashboard page shows how the metrics roll up. Here is what a single booking looks like underneath. The values are invented for illustration.
| Example value | Used by | |
|---|---|---|
| Booking time | Tuesday, 9:42 p.m., with the site's time zone offset | Google Ads upload, GA4 event, Clio's time-of-day view |
| Booking type | AC repair, standard visit | Clio, conversion value rules if you set them |
| Source, medium, campaign | google / cpc / summer-ac-repair | Clio by source; GA4 reports |
| Click IDs | A GCLID present; no fbclid | Google Ads offline conversion; Meta skipped for this one |
| Contact | Name, phone, email, address, validated on the server | Enhanced conversions for leads, hashed before sending |
| Chat started on | /ac-repair | Which page earns its keep |
Clio keeps this record on every plan today, and you can export it as CSV. Late bookings like this one are common enough to have their own after-hours guide. The booking time carries an offset because Google requires it, as the next section explains. The contact data is sent only in hashed form to ad platforms and only for the purpose your privacy policy describes. We are not lawyers; your counsel decides the privacy wording.
Sending bookings to Google Ads after the June 2026 change
Google's model is simple to describe. Google Ads assigns a Google Click ID to every ad click. For offline conversions, Google's help center says you store the GCLID with the lead and "you give that GCLID back to Google Ads along with a few details" when the lead converts. A booking made in a chat is exactly that kind of conversion, as described in Google's article on offline conversion import.
Google calls enhanced conversions for leads "an upgraded version of offline conversion import that uses user-provided data", meaning hashed email and phone, and still advises including GCLIDs whenever possible. The plumbing changed in 2026. Google says that starting June 15, 2026, offline conversion import and enhanced conversions for leads uploads migrate to the Data Manager API and are blocked in the Google Ads API, and its developer docs say upload requests fail if the developer token had not sent requests before that date.
Field-service platforms handle this their own way. ServiceTitan's Marketing Pro sends its own conversion actions to Google, covered in our ServiceTitan Google Ads tracking guide; the Housecall Pro and Jobber sources we checked list no Google Ads conversion integration, which is why the Jobber attribution guide and the Housecall Pro attribution guide matter. Once Kairos booking into those platforms is live (it is rolling out), pick one system to report each booking to Google so it is not counted twice.
GA4: the booking as a key event, sent from the server
Google defines a key event as "an event that measures an action that's particularly important to the success of your business." A booking qualifies. In GA4 you create or identify the event, then mark it as a key event. Google's help also says key events can be used to create Google Ads conversions, which is handy and also the classic way to count one booking twice.
Because a booking is confirmed on the server, the clean way to record it is Google's Measurement Protocol. Google says its intent is "to augment automatic collection" through the tag, not replace it, and that events are joined with the visit through the client ID, which "should match the ID generated by the Google Analytics tag on your website." Events can be backdated up to 72 hours. That is why the widget is built to read the client ID when the chat opens.
- Use the same event name for every booking, and put the booking type in a parameter, not the name.
- Choose one path for Google Ads credit: the direct upload with the GCLID, or the GA4 key event imported into Ads. Not both.
- Keep the browser-side "chat opened" event as an ordinary event for funnel analysis, never a key event.
Meta: the Conversions API and the fbc value
Sending bookings to Meta, for clients who run Meta ads, is part of the sync rolling out to Growth and Pro plans. Meta describes its Conversions API as a connection from an advertiser's server, website platform, mobile app or CRM to Meta systems. Meta's documentation says the fbc value takes the form version.subdomainIndex.creationTime followed by the fbclid from the page URL, and that the click ID is case sensitive, so it is stored exactly as it arrived.
If the site also runs the Meta Pixel, the two must not double count. Meta's deduplication rules match a Pixel event and a server event when both the event ID and the event name agree, and only within 48 hours. Clio gives each booking one ID, and the sync is designed to reuse it for every destination. The ServiceTitan section has a separate Meta ads guide for contractors already sending job events from ServiceTitan.
The order we set it up in, and what you will see afterward
- 1
Agree on the conversion
A booked appointment, by booking type. Opens and contacts stay in Clio as funnel steps, not goals.
- 2
Tag every paid and social link
Consistent utm_source, utm_medium and utm_campaign values; Google Ads set up so the click ID reaches the landing page.
- 3
Capture identifiers on arrival
The widget stores tags, click IDs, the GA4 client ID and the landing page when the visit starts, before any chat.
- 4
Create the destinations
An offline conversion action in Google Ads, a key event in GA4, and a Conversions API dataset in Meta where you run Meta ads. You approve access in your own accounts.
- 5
Send test bookings and check each platform
One test booking per source, followed into Google Ads, GA4 and Meta's Events Manager, then removed or excluded.
- 6
Compare totals every week
Bookings in Clio against conversions reported in each platform. A gap that grows is a broken link, not a mystery.
Every Kairos build includes conversion tracking setup, and Clio's record of bookings by page, source, campaign and click ID is available on every plan now. Automatic conversion sync to Google Ads, GA4 and Meta is rolling out to Growth and Pro plans and is not live yet; until it arrives, every booking and its click ID sit in Clio and its CSV export, so nothing collected now is lost. Plan details are on the Kairos pricing page. If your ads need attention as well, see PPC advertising and our Google Ads library. Running a trade business? The home services page shows how bookings are triaged before they ever count.
Questions owners ask about Kairos
Not as your main one. If an opened or answered chat counts, the ad system learns to find chatters, not customers. Count the booked appointment, sent with the Google Click ID, as the conversion that bidding optimizes toward. Keep chat opens and contacts captured as secondary measures in your dashboard, where they help you diagnose the funnel.
The widget reads it from the landing page address when the visit starts and stores it with the session. When the visitor books, even three pages later, the booking record carries the GCLID along with the UTM tags and the page where the chat began. Without that capture on arrival, the ID is lost before anyone types a word.
Google says that from June 15, 2026, offline conversion import and enhanced conversions for leads uploads move to the Data Manager API and are blocked in the Google Ads API, with upload requests failing for developer tokens that had not used them before. New setups should send conversions through the Data Manager API.
Yes, through the Measurement Protocol, which Google says augments the website tag rather than replacing it. The event must carry the client ID the GA4 tag set in the visitor's browser so it joins the right session, and Google allows events to be backdated up to 72 hours. Mark the booking event as a key event in GA4.
Send the same event ID and event name from the Pixel and from the Conversions API. Meta's documentation says it deduplicates events when both match and they arrive within 48 hours of each other. Clio gives every booking a single ID for exactly this reason.
Conversion tracking setup is part of every build, and Clio tracks bookings by page, source, medium, campaign and click ID on all plans. Sending booked appointments back to Google Ads, GA4 and Meta automatically is rolling out to Growth, at $199 a month, and Pro, at $349 a month; it is not available yet.
Keep reading
- The Clio dashboardClio, the Chatbot Analytics Dashboard That Counts Bookings, Not ChatsClio tracks every Kairos chat from widget open to booked job, by page, ad and campaign, and lists the questions your site leaves unanswered. On every plan.
- Google Ads and ServiceTitanWhy Google Ads Keeps Buying Phone Taps, and How ServiceTitan Revenue Changes Its MindSend booked jobs and invoice revenue from ServiceTitan back to Google Ads: the exact conversion actions, click IDs, enhanced conversions and setup steps.
- Kairos pricingAI Booking Widget Cost: $575 to Build, Then $99, $199 or $349 a MonthAI chatbot pricing for small business, spelled out: a $575 build, then $99, $199 or $349 a month by conversations. What each plan adds and what is quoted.
- How Kairos answersAI Chat for Your Website That Answers From Your Own Pages, Then BooksA custom AI chat for small business websites: trained on your pages, never invents a price, says it is an AI, hands off with the transcript, and books.
- Comparing your optionsCustom AI Chatbot vs Tidio, Intercom, Live Chat and Answering Services: An Honest Buyer's ComparisonChatbot alternatives for small business, compared fairly: Tidio, Intercom Fin, LiveChat, answering services and a custom AI booking widget, priced Nov 2026.
- The night shiftAfter-Hours Booking for Small Businesses: What Your Website Does Between Closing Time and 8 a.m.What happens to a 9 p.m. website visitor today, how a 24/7 online booking chat captures and books the lead, and what should wait for the on-call phone.
- Everything in Kairos AI Booking WidgetSee the section
Find out which ads actually fill your calendar
Tell us where you advertise and what counts as a conversion today. We will show you what Kairos would send to each platform and where your current tracking leaks.
Which of these sounds like you? (pick any)
Rather talk now? Call (210) 346-0848.