Kajabi and WordPress: Two Platforms, One Attribution Problem
Kajabi is a popular all-in-one platform for course creators, coaches, and membership site operators. It handles courses, community, email marketing, checkout, and sometimes landing pages — all under one roof. Many Kajabi users also maintain a WordPress site as their main web presence, using WordPress for their blog, their primary content marketing, and their general brand site, while Kajabi handles the product and member experience behind the paywall.
The attribution gap happens in between. Someone finds your WordPress blog post through organic search. They read it, sign up for your lead magnet, and eventually buy your Kajabi course. You know they bought. You know they came from somewhere. But by the time they clicked “buy,” the traffic source that originally brought them to you has typically been lost.
This guide covers how to capture that source data on the WordPress side and make it available in Kajabi, so you can understand which channels are actually building your paying membership base.
Why This Matters for Course and Membership Businesses
Attribution matters differently for course creators and membership business operators than it does for service businesses. The typical journey is longer: a prospect might follow you for months before buying. They might come through organic search, subscribe to an email list, receive a launch sequence, and then buy. That whole chain started somewhere, and understanding where changes how you invest your time and money.
With source data, you can answer questions like:
- Which content pieces produce buyers, not just subscribers? A blog post that generates organic traffic is valuable. A blog post that generates organic traffic that converts into paid members is especially valuable — and you can only identify it if source data follows the subscriber through to purchase.
- Do paid traffic buyers have different lifetime value than organic buyers? Someone who found you through a Google Ad and bought during your launch is different from someone who followed you for six months through organic search before buying. Understanding this difference shapes whether paid acquisition is worth its cost.
- Which launch or campaign channels produced the most revenue? If you ran a launch with Facebook Ads, email campaigns to your list, and organic social, UTM tracking lets you attribute revenue to each by tracing purchases back to their original entry source.
How the Tracking Setup Works
The core flow:
- A visitor arrives on your WordPress site from a tagged URL (one with UTM parameters from a paid ad, an email campaign, a social post, or a partner link)
- A script captures those UTM values and stores them in a first-party cookie that persists as the visitor moves between pages
- When the visitor subscribes to your list (via a WordPress opt-in form or a Kajabi landing page), hidden fields in the form capture the UTM data and pass it to your email list or CRM as custom field data
- That source data travels with the subscriber through your email sequences and into Kajabi’s contact record
- When the subscriber purchases, Kajabi’s contact record includes the original source information
Step 1: Tag Your Marketing Links
UTM tracking only works if your traffic sources carry UTM parameters. A tagged link to a WordPress blog post looks like:
https://yourblog.com/the-post/?utm_source=newsletter&utm_medium=email&utm_campaign=launch-week-3
Tag links in:
- Every email you send to your list (links back to your WordPress blog, landing pages, or Kajabi checkout)
- Every paid ad (Facebook, Instagram, Google, Pinterest, YouTube)
- Every partner or affiliate link where you control the URL
- Social posts when you’re running a specific campaign you want to track
Organic search, direct traffic, and untagged referral traffic won’t carry UTMs, but they’ll still appear in your data as “organic” or “direct” through Google Analytics. The UTM fields you’ll pass to Kajabi will simply be empty for untagged traffic — which is useful information (someone who found you organically rather than through a campaign).
Step 2: Capture UTMs in Cookies on WordPress
UTM parameters exist in the URL only on the first pageview. The visitor loses them the moment they click to another page. A JavaScript snippet on your WordPress site reads them immediately and writes them to a cookie that persists for the session (and optionally for 90 days):
document.addEventListener('DOMContentLoaded', function() {
const params = new URLSearchParams(window.location.search);
const utmParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term'];
utmParams.forEach(function(param) {
const val = params.get(param);
if (val) {
document.cookie = param + '=' + encodeURIComponent(val)
+ '; path=/; max-age=7776000; SameSite=Lax';
}
});
if (!readCookie('landing_page')) {
document.cookie = 'landing_page=' + encodeURIComponent(window.location.href)
+ '; path=/; max-age=7776000; SameSite=Lax';
}
});
function readCookie(name) {
const m = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
return m ? decodeURIComponent(m[2]) : '';
}
Install this via WPCode (the simplest option), your theme’s header.php, or a custom plugin. It runs on every WordPress page load and captures UTMs before the visitor navigates away from the landing page.
Step 3: Pass UTMs When a Visitor Subscribes
The capture point for source data is the moment a visitor becomes a subscriber. This happens through an opt-in form — either on WordPress or on a Kajabi landing page. The method varies:
WordPress opt-in forms with Kajabi integration. If you use a WordPress form plugin (WPForms, Gravity Forms, Fluent Forms) with a Kajabi connection via Zapier or Make.com, add hidden UTM fields to the form, populate them from cookies via JavaScript, and configure the Zapier step to pass the UTM field values to Kajabi’s contact custom fields.
Kajabi landing pages. If the opt-in happens on a Kajabi page (not WordPress), the WordPress cookie won’t transfer automatically — the visitor has moved to a different domain. Options: (1) use Zapier with a custom webhook that captures UTMs from URL parameters on the Kajabi page (you’d need to include UTMs in the Kajabi landing page URL when linking to it), or (2) use Kajabi’s built-in tracking features to capture click-source context.
Email service provider as the bridge. If you use a separate email platform (ConvertKit, MailerLite, ActiveCampaign) as your email list before Kajabi handles purchases, pass UTMs to that platform first using the same hidden-field approach, then sync the source data to Kajabi via automation when a subscriber purchases.
Step 4: Store Source Data in Kajabi Contact Fields
Kajabi supports custom contact fields that you can populate via API or integrations. Go to Settings > Custom Fields and create text fields for:
- Lead Source (from utm_source)
- Lead Medium (from utm_medium)
- Lead Campaign (from utm_campaign)
- Landing Page (the first WordPress URL the visitor hit)
Configure your Zapier steps to write the UTM values from the form submission into these fields on the Kajabi contact record. When the contact later purchases, the custom fields carry over to the purchase record.
Step 5: Verify the Pipeline
- Open an incognito window and visit your WordPress site with UTM parameters:
yourblog.com/?utm_source=test&utm_medium=email&utm_campaign=tracking-check - Navigate to another page (confirm UTM cookies persist in DevTools)
- Submit your opt-in form with a test email address
- Check the contact record in Kajabi — the Lead Source field should show “test”, Lead Medium should show “email”, Lead Campaign should show “tracking-check”
What to Do With Source Data in Kajabi
Once source data is on Kajabi contact records, you can filter and analyze your membership by acquisition source:
Filter purchasers by source. In Kajabi’s People section, filter contacts by the Lead Source custom field. This shows you which sources have produced paying members, not just subscribers.
Revenue by campaign. If you tag launch email campaigns consistently, you can calculate revenue from each campaign by filtering purchases by the Lead Campaign field value for that launch. This is the basic campaign attribution report that most course creators can’t produce.
Content performance beyond pageviews. A WordPress blog post that drives organic traffic is easy to measure in Google Analytics. But does that organic traffic buy? Filter Kajabi purchasers by Lead Source = “google” and Lead Medium = “organic” to estimate how many organic readers eventually became customers.
The Simpler Path
The setup above works but requires per-form configuration of hidden fields and JavaScript, plus Zapier wiring between WordPress and Kajabi. Every new opt-in form or landing page needs to be added to the setup individually.
Sales Provenance installs as a WordPress plugin and handles UTM capture automatically across all forms on your site. Source data passes to connected platforms — including Kajabi via integrations — without per-form configuration. If understanding which channels produce paying Kajabi members is something you want working without a development project, Sales Provenance is the faster path.