Skip to content

Growth & Embedding

Track bookings with Google Analytics, Meta Pixel, or Tag Manager

Save your Google Analytics 4, Meta Pixel, or Google Tag Manager ID in Calso, and know exactly which booking pages the code runs on and which moments it reports as events.

Updated August 27, 2026

If you advertise, or you want to know which of your marketing actually turns into booked sessions, Calso can hand each step of a client's booking to Google Analytics, Meta, or your Tag Manager container. You paste one ID; Calso does the rest of the wiring.

All three live on the Integrations page, under Insights in the sidebar. Scroll to the Marketing & Analytics group and you will find three cards — Google Analytics 4, Meta Pixel, and Google Tag Manager — each reading Not configured until you fill it in.

Add an ID on the Integrations page

  1. Copy the ID out of the other tool

    Google Analytics 4 gives you a Measurement ID starting with G-, shown on the web data stream for your site. Meta gives you a Pixel ID — a long run of digits beside your pixel's name in Events Manager. Google Tag Manager gives you a container ID starting with GTM-, printed next to the container name. Copy it exactly as it appears, capital letters included.

  2. Open the card for that tool

    On the Integrations page, click the card in the Marketing & Analytics group. A panel slides in from the right with a single field in it: GA4 Measurement ID, Meta Pixel ID, or GTM Container ID, depending on which card you opened.

  3. Paste the ID and press Save

    Paste the ID into the field and press Save. A green Saved appears, the ID is echoed back under Currently configured, and the card behind the panel flips from Not configured to Active. If the format is wrong you get Must match format G-XXXXXXXXXX, Must be numeric, or Must match format GTM-XXXXXXX instead, and nothing is stored — check for a stray space or a lowercase letter and try again.

  4. Repeat for any other tool you use

    Each card is saved separately, so you can run Analytics and Meta side by side. Read the Tag Manager section below before you save a container ID, though, because a container changes how the other two behave.

CalsoThe Integrations page

To take an ID out again, open the same card and press the trash button beside the value under Currently configured. The card goes back to Not configured and that script stops loading from the next visit onward.

Which pages the tracking code loads on

This is the part worth reading twice, because the code does not run everywhere you might expect.

It does run on an individual session's booking page — the link that ends in the name of one event type, like yourname/60-minute-consultation. It runs on that same page when it is loaded inside an embed on your own website, and it runs on it when the page is served from your own custom booking domain.

It does not run on the booking page that lists everything you offer — the bare link with just your Booking Page URL in it. It also does not run on a group event page, a package page, a digital product page, or anywhere in your dashboard. So a client who lands on your main link, browses, and then clicks into a session is invisible to Analytics until that click lands.

If you are paying for traffic and want every step measured, point the ad at a single session's booking link rather than at your general booking page. Nothing is lost either way — Calso's own booking funnel counts visits to the general page whether or not a pixel saw them.

What Calso sends to each tool

The whole booking happens at one address, so Analytics sees one pageview per visit and everything after it arrives as an event. Build your conversion on the booking event, not on a thank-you page address, because there is no separate thank-you page to point at.

When a client…Google Analytics 4Meta PixelTag Manager data layer
opens a session's booking pagepage_viewPageViewyour container's own page view
picks a dateview_item_listViewContentcalso_date_selected
picks a timeadd_to_cartAddToCartcalso_slot_selected
moves on and the time is held for themadd_to_cartAddToCartcalso_hold_created
lets that held time run outremove_from_cartCustomEventcalso_hold_expired
submits their name and emailbegin_checkoutInitiateCheckoutcalso_checkout_started
finishes and the booking is confirmedpurchaseSchedulecalso_booking_confirmed

Each of these is sent as the moment itself, without a money value attached. A purchase in Analytics or a Schedule in Meta therefore counts one booking but does not carry what it was worth — for money, read your Analytics figures in Calso, which come from the real payment records.

When Tag Manager takes over

Saving a GTM Container ID puts your container in charge. Calso stops loading the Analytics and Meta scripts itself and pushes the events above into the data layer instead. This is the right setup if you already manage your tags centrally, or if you want to feed a tool Calso does not connect to directly.

Once a container ID is saved, the other two panels grey out with the note This integration is currently managed through Google Tag Manager. To configure it directly, remove the GTM container ID first. Any IDs you saved there are kept — they are simply not loaded — and their cards keep reading Active because the ID is still on file. Clear the container ID and both panels become editable again, with your previous values intact.

Checking a pixel is really firing

Saving your first ID switches on the cookie consent banner for your booking pages, and that banner is absolute: no Analytics, Meta, or Tag Manager script loads until a visitor presses Accept. Open a session's booking page in a fresh private window, press Accept, then pick a date and a time and watch the events arrive in the other tool's real-time view.

With the pixels reporting, the other half of the picture is Calso's own count of who reached your booking page and where they stopped. That lives in your booking funnel.

Frequently asked questions

Do I need a paid Calso plan to add a tracking pixel?

No. Google Analytics 4, Meta Pixel, and Google Tag Manager can all be saved on every Calso plan, including Starter, and they run on your booking pages straight away. Putting your booking page inside your own website is the part that needs the Practice plan — but that is about the embed, not about tracking.

Why is Google Analytics not recording people landing on my booking page?

The tracking code runs on an individual session's booking page, not on the page that lists everything you offer. Someone who lands on your main booking link and then clicks through to a session is only counted from the moment they reach that session's page. The cookie banner also holds every script back until the visitor presses Accept, so a visitor who declines is never counted at all.

Can I run Google Analytics and Meta Pixel through Google Tag Manager?

Yes, and that is what Calso expects once you save a container ID. From that point Calso stops loading the two standalone scripts and sends its booking events into the data layer instead, so your container is responsible for loading Analytics and the pixel. Clear the container ID if you want Calso to load them directly again.

Do the events Calso sends include the price of the session?

No. Calso reports the moment — a date picked, a checkout started, a booking confirmed — without a money value attached, so a purchase in Google Analytics or a Schedule in Meta counts the booking but does not carry the amount. For revenue figures, use Calso's own Analytics, which reads the real payment records.