Skip to main content
TrackingConsulting

0%

Ga4Analytics

GA4 and Ad Tracking for Course Creators: The Kajabi Measurement Guide

AI

Ariful Islam

Founder · Tracking Consultant

Updated

August 14, 2026

Reading time

10 min read

Course funnels on Kajabi are almost always the same shape: opt-in page, sales page, checkout, upsell offer. Four steps, and usually three different answers to "how many sales yesterday" depending on whether you ask Kajabi, GA4, or Meta Ads Manager. Most of that gap is fixable. Some of it isn't, and I'll tell you which is which.

What can you actually control on a hosted platform like Kajabi?

More than you'd think, less than on WordPress or Shopify. The inventory:

  • Site-wide header and footer code (historically under the site's page-scripts settings — Kajabi moves menus, so search settings for "code" if it isn't there). This is where GTM goes.
  • Per-page code blocks. Kajabi landing pages accept custom code sections, so you can add step-specific scripts to an opt-in or sales page.
  • Native pixel integrations. Built-in fields for your Facebook Pixel ID and Google Analytics measurement ID. Paste the ID, Kajabi handles the base code.
  • Offer thank-you pages. Each offer sends buyers to a page you control after checkout. That page is your purchase-tracking anchor.
  • Webhooks and Zapier. Kajabi can notify an outside system when a purchase happens (availability varies by plan tier — check yours). This is the door to server-side tracking.

What you don't get: access to the checkout page's code, a proper ecommerce dataLayer, or server-side control. Every workaround in this guide routes around those three walls.

How should you install GA4 on Kajabi?

Use Google Tag Manager in the site-wide header code rather than the native GA integration alone. The native field is fine for pageviews but gives you no control over events.

  1. Create a GTM web container and put the snippet in Kajabi's site-wide header code area.
  2. Add a GA4 tag with your G- measurement ID, firing on all pages.
  3. Remove your measurement ID from Kajabi's native GA field so you don't double-count pageviews. One source of truth.
  4. In GTM preview mode, click through opt-in, sales page, and a test checkout, and confirm one page_view per step.

Then name your funnel steps. Create GA4 events via GTM page-path triggers like optin_view, sales_page_view, and begin_checkout. You'll thank yourself when you build funnel reports later.

How do you track purchases on Kajabi reliably?

Two layers: browser tags on the thank-you page, and a server-side event from a webhook. Browser first.

Point every paid offer at a dedicated thank-you page and fire GA4 purchase and Meta Purchase there via GTM. The catch: the thank-you page doesn't know the order value or ID unless Kajabi passes them in the URL (run a test checkout and read the URL — this is the kind of detail that changes quietly). If you can't get a dynamic value, hardcode the offer price per thank-you page. Ugly, but for a course business with three offers it's five minutes of work and it's accurate.

Also: Kajabi's native Facebook Pixel integration fires its own events. If GTM also fires Purchase without matching event IDs, Meta may count both. Pick one owner per event. I keep the native integration off once GTM plus server-side is running.

Comparison of the thank-you page browser Purchase and the Kajabi webhook server Purchase, showing what each one sees, what it misses, and what deduplication needs.
If you can't share an order ID between them, make the webhook your only Meta Purchase source.
Thank-you page tagKajabi purchase webhook
Fires only if the buyer lands thereFires even if the pixel never does
Often has no order value or IDCarries buyer email, offer and amount
Reloads and revisits re-fire itLifts Meta Event Match Quality
Blocked by ad blockers and ITPNeeds a shared ID to dedupe

How do you keep attribution intact across a multi-step funnel?

UTM discipline, and the discipline part matters more than the UTM part. Attribution survives the opt-in → sales page → checkout → offer chain only if nothing strips or overwrites the original click data. Rules I hold every course client to:

  1. Tag every ad with full UTMs. Source, medium, campaign, content. Set them once in an ad-level URL template.
  2. Never redirect through a bare URL. Link shorteners that drop query strings kill fbclid, gclid, and your UTMs before the pixel ever sees them.
  3. Keep the funnel on one domain. If every step lives on the same custom domain, GA4's cookies carry the session and its source through the whole funnel. No extra work needed.
  4. Watch your email links. A buyer clicks your ad Monday, then buys Thursday from a nurture email tagged utm_source=email. GA4's last-click lens credits email; Meta still claims it through the pixel and CAPI match. Two lenses, two answers, both "correct." Know that before you judge campaigns on GA4 numbers.

When do you need GA4 cross-domain tracking on Kajabi?

Only when a visitor crosses domains mid-funnel. If your entire funnel runs on courses.yourdomain.com, skip this section. Two setups do need it: a WordPress site sending traffic to a Kajabi checkout on another domain, and funnels still partly on a *.mykajabi.com address.

Without it, GA4 starts a new session on the second domain and attributes the purchase to referral traffic from your own site. Your campaigns look like they die at checkout when they're converting fine.

The fix, assuming the same GA4 tag loads on both domains: Admin → Data Streams → your web stream → Configure tag settings → Configure your domains, and list both. The Google tag then appends a _gl linker parameter to cross-domain links so the session survives the hop. Test by clicking through and confirming _gl shows up in the URL.

Where does server-side tracking fit when you can't touch the server?

You don't need Kajabi's server — you need Kajabi's webhooks. When a purchase completes, Kajabi pushes the order (buyer email, offer, amount) to an endpoint you control: a server-side GTM container or a small relay that forwards to Meta's Conversions API and GA4's Measurement Protocol.

This is the strongest purchase signal available on a hosted platform. It fires even when the buyer never reaches the thank-you page or blocks the pixel. It carries the buyer's email, which lifts Meta's Event Match Quality well above an anonymous browser event. And it never touches the browser, so ad blockers and Safari's ITP cookie limits can't touch it.

The honest trade-off: deduplication. Meta dedupes browser and server events by event_id, and a webhook doesn't know what ID your thank-you page generated. If you can derive a shared ID (check whether an order ID appears in both the thank-you URL and the webhook payload), dedupe properly. If not, make the webhook your only Meta Purchase source and keep the browser layer for upper-funnel events. One accurate source beats two overlapping ones.

Diagram showing Kajabi purchase webhooks and GTM funnel events feeding a server container that forwards purchases to Meta CAPI, GA4 Measurement Protocol and Google Ads.
You never touch Kajabi's servers — the webhook is the door to server-side tracking on a hosted platform.
LayerWhat sits there
InputsKajabi purchase webhook, Thank-you page GTM tag, Site-wide GTM container, Buyer email and offer name
Your server containerBuilds one Purchase per order and dedupes on a shared event_id
DestinationsMeta CAPI, GA4 Measurement Protocol, Google Ads conversions

What won't a hosted platform let you fix?

Some limits are structural. You can't inject code into Kajabi's checkout flow itself, so fine-grained checkout events (payment info added, checkout errors) are out of reach. There's no item-level ecommerce dataLayer, so GA4 reporting with full item arrays means hand-building payloads. And you can't control how Kajabi's pages load third-party scripts.

The workarounds are the pattern this guide follows: move conversion-critical events server-side via webhooks, hardcode what the platform won't pass dynamically, and keep everything on one domain so cookies do the session work. That gets a Kajabi funnel to tracking quality most custom-built sites never reach, because it's simple enough to stay correct.

Frequently asked questions

Does Kajabi work with GA4?

Yes. Paste your measurement ID into Kajabi's native Google Analytics integration, or better, run GA4 through GTM in the site-wide header code. Use one method, not both, or you'll double-count pageviews.

Can I use Google Tag Manager on Kajabi?

Yes. Put the GTM snippet in Kajabi's site-wide custom code area and it loads across your pages, giving you full control over GA4, Meta, and Google Ads tags.

How do I track Kajabi purchases in Meta Ads Manager?

Fire a Purchase event on each offer's thank-you page via GTM, backed by a server-side Purchase sent to the Conversions API from a Kajabi purchase webhook. The webhook version carries the buyer's email, which improves Meta's match quality.

Why don't my Kajabi sales match what Meta reports?

Different counting rules. Meta claims any sale it can match to an ad interaction within its attribution window, GA4 uses a different lens, and Kajabi counts every order regardless of source. Expect differences; worry when they suddenly diverge.

Do I need cross-domain tracking if my whole funnel is on my Kajabi custom domain?

No. Cross-domain configuration only matters when a visitor moves between domains mid-funnel, like from a WordPress site to a Kajabi checkout. On one domain, GA4's cookies already carry the session through every step.

Can I run server-side tracking on Kajabi?

Not on Kajabi's servers, but you don't need to. Use Kajabi's purchase webhooks or Zapier to send order data to a server-side GTM container, which forwards purchase events to Meta CAPI and GA4's Measurement Protocol.

How do I track my Kajabi upsell offers separately?

Give each offer its own thank-you page and fire purchase events with that offer's value. Server-side, the webhook payload identifies which offer was bought, so front-end and upsell revenue report separately.

kajabiga4course creators

Need help implementing this?

We help brands fix server-side tracking, consent mode, attribution, and conversion validation so reporting becomes easier to trust.

Keep reading

Related articles

WhatsApp