Not every page runs your scripts
Kajabi's header page scripts load on most site pages, but some system pages don't load site-level scripts. Tags that rely on those pages never fire, and the gap is easy to miss.
This is for course creators, coaches and membership businesses who sell on Kajabi and run ads to their offers and opt-ins. Kajabi hosts the checkout and some system pages, so not every page runs your scripts, and native integrations can overlap with GTM. I set up purchase and lead tracking that works within those limits, and add a server-side copy of each sale.
Proper Kajabi tracking means choosing between Kajabi's native GA4 and Meta Pixel integrations and GTM for each event, installing GTM in the site-wide header scripts, tracking purchases on a thank-you page you control with the offer's real value, and sending a server-side copy of each sale from Kajabi's purchase notifications to Meta CAPI and Google Ads.
The events I set up on Kajabi, and where each one is sent.
Kajabi's header page scripts load on most site pages, but some system pages don't load site-level scripts. Tags that rely on those pages never fire, and the gap is easy to miss.
The checkout is hosted and controlled by Kajabi. You can't add your own purchase code to it, so the purchase signal has to come from a native integration, a thank-you page or a server-side source.
Kajabi can send events to GA4 and the Meta Pixel natively. If GTM sends the same purchase or lead, every sale is counted twice.
When purchase tracking is a page view on a shared thank-you page, every sale gets the same value, or none. Payment plans, coupons and order bumps make the gap bigger.
Upsells, payment plan instalments and sales completed after the buyer closes the tab never reach a browser tag. Meta and Google underreport your best offers.
| Event | When it fires | Sent to |
|---|---|---|
page_view | Sales page or landing page loads | GA4, Meta Pixel |
generate_lead / Lead | Opt-in form submitted successfully | GA4, Google Ads, Meta Pixel + CAPI |
begin_checkout / InitiateCheckout | Click through to an offer's checkout | GA4, Meta Pixel |
purchase / Purchase | Buyer lands on the offer's thank-you page | GA4, Google Ads, Meta Pixel |
purchase (server) | Kajabi reports the sale to server-side GTM | Meta CAPI, Google Ads, GA4 |
book_appointment | Coaching or discovery call booked | GA4, Google Ads, Meta |
I check Kajabi's native integrations, header scripts and offer settings, and compare platform conversions with your Kajabi sales.
We list your offers, opt-ins and thank-you pages, and agree how each sale and lead should be valued.
I install GTM, set up thank-you page purchases and lead events, and connect Kajabi's sale notifications to server-side GTM.
I run test purchases, using a coupon or low-priced test offer, and confirm each one is counted once with the right value.
You get an event map and a checklist to follow whenever you launch a new offer.
Because the checkout belongs to Kajabi, there are three places a purchase can come from: Kajabi's own GA4 and Meta integrations, a thank-you page on your site where GTM runs, or a server-side notification of the sale. For each offer I pick the method that gives the most accurate value and avoids duplicates.
A thank-you page per offer, or one page that reads which offer was bought, lets GTM send the real price rather than a guess. The server-side copy then covers buyers who never reach that page, such as people who close the tab after paying.
Kajabi's built-in GA4 and Meta Pixel settings are easy and Kajabi recommends them for purchase tracking across checkout paths. Their limit is control: you can't change event parameters, add Google Ads conversions with enhanced conversions, or run a single server-side pipeline.
I often keep the native Meta integration for basic events and add GTM for Google Ads and lead tracking, or move everything to GTM and server-side GTM. The important part is that each event has one sender.
Paste the GTM head snippet into the header page scripts in your site settings, and the body snippet where Kajabi allows it. Then check your key pages in GTM preview, since some system pages don't load site-level scripts.
Send buyers to a thank-you page you control and fire the Google Ads purchase conversion there with the offer's price, or send the sale server-side. Turn on enhanced conversions so Google can match more sales.
Usually the native Meta Pixel integration and a GTM tag both send the purchase. Keep one browser sender, and if you add CAPI, use a shared event ID so Meta can deduplicate.
I send them through server-side GTM, using Kajabi's purchase notifications as the source. Each event includes hashed customer data and the same event ID as the browser purchase, so Meta keeps one copy.
Yes, as long as we agree how to value them. I usually send the first payment as the purchase value, and optionally the full plan value as a separate conversion for reporting.

Meta merges Pixel and server events only when the event name and event ID match. Here is how to set that up correctly and prove it works.

Apple's privacy changes hid many conversions from Meta. Here is what changed, what is gone for good and how to recover the data you can still measure.
A step-by-step guide to Google Ads conversion tracking with GTM: conversion actions, the Google tag, conversion linker, values, transaction IDs and testing.
Get a free audit of your tracking and ad account. Usually replies within 1–2 hours.