Comprehensive guide to connecting your Kajabi membership site with CheckoutJoy payment processing, including checkout widgets, custom pages, and webhook configuration
Seamlessly sell your Kajabi products using CheckoutJoy's powerful checkout solutions. Whether you prefer custom checkout pages or embedded widgets, our integration makes it easy to enhance your sales process while maintaining full control over your customer experience.
CheckoutJoy connects with Kajabi through secure webhook technology, automatically granting access to your offers when customers complete their purchase.
Watch this quick demo to see the integration in action:
CheckoutJoy offers multiple sales channels to integrate with your Kajabi site, each with its own set of features. Select the option that best aligns with your business needs and technical requirements:
Sales Channel
Plans
Description
Simple Buy-Now Button
Essential
Intended for simple use cases where you need payment processor support for Kajabi checkouts. The payment button is embedded directly on the Kajabi checkout page, and will process the payment through the selected payment processor. This option doesn't include any of our other features.
Checkout Widget
Essential / Pro
A fully featured, embeddable checkout widget that can be added to any page in Kajabi. It can either be embedded inline or as a popup. learn more
Custom Checkout Page
Pro
A fully featured, hosted checkout page that essentially replaces your Kajabi checkout pages. Customers are taken to the hosted checkout page instead of the default Kajabi checkout pages. learn more
This lightweight option embeds directly into your existing Kajabi checkout pages:
Alternative Payment Methods: Offer payment options beyond Kajabi's default Stripe and PayPal
Minimal Setup: Just add our code snippet to your Kajabi checkout settings
Familiar Experience: Customers stay within the standard Kajabi checkout flow
Global Payment Support: Accept payments via Klarna, GiroPay, iDEAL, and more
When a customer selects your custom payment option, CheckoutJoy securely processes the transaction through your connected payment processor in a popup window.
For your integration to work properly, you'll need to configure three critical elements in Kajabi. These settings ensure customers gain access to your products after purchase and are directed to the right page after checkout.
The Activation Webhook is essential for granting customers access to your products after successful payment. Without this, customers won't receive access to what they've purchased.
Where to find it: In your Kajabi offer settings under More Actions > Webhooks
Once you've configured your webhooks, you're ready to add the CheckoutJoy checkout functionality to your Kajabi site. Follow these steps to get up and running quickly.
You should see your CheckoutJoy payment options in the checkout area
Important: Your payment buttons will only appear if you've added your Kajabi Offer to your CheckoutJoy account.
Congratulations! You've successfully integrated CheckoutJoy with your Kajabi site, giving your customers more payment options and enhancing your checkout experience.
No — only CheckoutJoy's internal product ID is available
Requires Kajabi plan
Kajabi PRO (API access is gated by plan tier)
Available on any plan that supports webhooks
Recommended for
Long-term setup, multi-system integrations, anything that needs to map back to Kajabi's offer IDs
Quick start, single-system setups, or accounts that can't upgrade to Kajabi PRO
If you have access to Kajabi PRO, use the API integration. The webhook integration is fully supported and remains a reliable fallback, but the API path is more robust and propagates more metadata downstream.
Kajabi's native checkout pages do not support multi-currency. If you want to charge different buyers in different currencies on Kajabi, you must use either CheckoutJoy's Checkout Widget or Custom Checkout Page — the Simple Buy-Now Button still lives inside Kajabi's checkout and inherits Kajabi's single-currency constraint.
See the Currencies feature doc for how multi-currency and geo-detection work end-to-end.
In the vast majority of cases this is one of three things:
Order stuck in "Pending" status. Automations (offer grant, tag assignment, confirmation email) only fire on completed orders. If the processor never sent the "payment completed" webhook to CheckoutJoy, the order sits in Pending. The fix is almost always a missing or misconfigured webhook in the processor dashboard — see the step-by-step webhook diagnostic in Troubleshooting.
The Kajabi offer-activation URL is misconfigured. Re-check that the activation webhook URL on your Kajabi offer matches what CheckoutJoy generated.
The Kajabi API key has been revoked. If you're on the API integration, an expired or revoked API key prevents the grant. Generate a new key and update it in Settings → Integrations → Kajabi in CheckoutJoy.
Once the underlying issue is fixed, support can replay the grants — buyers don't have to be added manually.
No — CheckoutJoy's purchase.completed outgoing webhook has a different shape (see the Webhooks reference). All the equivalent fields are available — customer name and email, billing address, products, custom-field values, payment metadata — but you'll need to remap them. Custom-field variable names can be controlled per checkout, so you can give them names that match what your downstream system already expects.
No. Kajabi's native webhooks only fire on actual purchases, not on offers granted by an admin. If your downstream system needs to react to grants too, you'll need to drive it from CheckoutJoy (where the grant is what kicks off the post-purchase flow in the first place).
CheckoutJoy's Meta integration fires events on CheckoutJoy-hosted checkouts (Checkout Widget and Custom Checkout Page). If you're using the Simple Buy-Now Button the checkout still happens on Kajabi's native checkout page — CheckoutJoy can't fire pixel events on that page. Configure Meta events directly inside Kajabi's checkout settings instead, or switch to the Widget / Custom Checkout Page to use CheckoutJoy's pixel integration.
No. Kajabi's built-in financial and subscription reports only include payments processed through Kajabi's own checkout (its native Stripe/PayPal connection). Sales processed by CheckoutJoy don't appear in those Kajabi dashboards.
For revenue and subscription metrics on CheckoutJoy-processed orders, use the CheckoutJoy reports (or your payment processor's dashboard) as the source of truth. The Kajabi customer/access side is still managed correctly — only Kajabi's revenue reports are blind to CheckoutJoy sales.
This is the external_user_id collision pattern. Kajabi assigns each contact an internal external_user_id that's separate from email. When a second offer is granted to the same email, Kajabi requires the original external_user_id to match — but Kajabi's API doesn't expose that ID, so CheckoutJoy can't always reconcile it automatically.
When it fails:
CheckoutJoy surfaces an "Action required" notification on the affected orders.
The buyer receives Kajabi's default account-creation/welcome emails instead of your offer-grant flow.
To resolve: open Kajabi, find (or add) the contact manually, and grant them access to the offer from inside Kajabi. This is the only path — there's no API workaround.
To reduce the frequency: keep your buyer-facing email canonicalisation consistent (don't strip dots from Gmail addresses, don't aggregate across plus-aliases), so repeat buyers map to the same Kajabi contact on the first attempt.
If Kajabi itself confirms the API key works but the CheckoutJoy connection still fails, the most likely cause is that you're on Kajabi PRO Legacy (or another older plan tier). Older plans only expose Kajabi's previous-generation API; CheckoutJoy needs the new public API that ships on current Kajabi plans (PRO and above on the new pricing).
CheckoutJoy queries the Kajabi /v1/sites endpoint during setup. On a legacy plan that endpoint isn't available, so the connection can't complete even though the key itself is valid.
To resolve: confirm with Kajabi that your plan includes public API access, or upgrade to a plan that does. The webhook integration remains a working fallback regardless of API plan tier.