, , , , , ,
,
, , , , , , , `
**Note:** Video embeds and scripts (like Calendly and other schedulers) do not work in Email Campaigns. If you wish to include an embedded video or scheduler with your Email Campaign, link a Page with custom sections containing your Video Embed or embedded Schedulers to your Email Campaign. Read [How to Add Custom Code to Your Page](../../website/pages/add-custom-code-to-pages) for details.
## Add custom HTML to an Email Sequence
To add custom HTML to an Email Sequence email using the Classic Editor:
* From the Dashboard, open the **Marketing** tab.
* Click into an existing **Email Sequence** or create a new one.
* Select your individual email to edit.
* Open the **source code** section on the toolbar `<>` of the Text section.
* Read the **warning** message and click **Ok** to proceed.
* Add your **custom HTML.**
* Be sure to click **Save** to keep your changes:
## Add custom HTML to an Email Broadcast
To add custom HTML to an Email Broadcast using the Visual Editor:
* Click into an existing **Email Broadcast** or create a new one.
* Hover over the body of the email and click **Edit content**.
* Then, click into a text block or create a new one in the sidebar editor.
* In the Text Body toolbox, click the **Source Code** icon.
* Add your custom HTML.
* Click **Save:**
# Add emojis to emails
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-add-emojis-to-emails
Customize Email Campaigns with emojis to add personality and visual appeal.
Add **emojis** to your Email Campaigns to inject personality and visual appeal into your messaging.
## Add emojis to emails
* Open the **Marketing** tab from your Dashboard.
* Select **Email Campaigns**.
* Then, select the Email Campaign you wish to edit.
* Open your Text Block with the [Email Visual Editor](../../marketing/email-campaigns/email-visual-editor-overview) or click into your text editor with the classic editor.
* Simultaneously press:
* For Mac Users: **Command** + **Control** + **Spacebar**
* For Windows Users: **Windows** + **.** (period)
* For Linux Users: **Ctrl** + **.** (period)
* Select the emoji you would like to include and continue customizing your email.
* Be sure to click **Save** to keep your changes:
# Connect a custom email domain with Bluehost
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-connect-a-custom-email-domain-with-bluehost
Connect a custom email domain from Bluehost to a Kajabi account.
## Connect a custom email domain with Bluehost
To connect your custom email domain to Kajabi, you'll need to add the following DNS records provided by Kajabi to your DNS provider:
* Three TXT records
* Two MX records
* One CNAME record
**Warning:** Don't delete or replace existing DNS records when you add DNS records provided by Kajabi.
## Access DNS records in Bluehost
To access your DNS records in Bluehost:
1. Go to your Bluehost dashboard.
2. Click to open the **Domains** menu and select **My Domains**.
3. Locate your domain and click **Manage.**
4. Then, select the **DNS** tab:
## Add unique DNS records from Kajabi to Bluehost
To add your DNS records from Kajabi to Bluehost:
### Create unique DNS records in Kajabi
In order to generate your unique DNS records in Kajabi, you must first add your custom email domain in your Kajabi Marketing Settings.
**To create your DNS records:**
1. From your Kajabi dashboard, open the **Settings** tab on the bottom left.
2. Select **Marketing settings**.
3. Scroll down to the **Email Settings** section.
4. Locate your **Custom Email Domain** settings.
5. Input the **From name**, **From email**, and **Reply-to email** for your custom email domain.
6. Then, click **Setup Custom Email Domain**.
7. Your unique DNS records will appear on the Custom Email Domain Setup page:
### Add TXT Records
Please note that Kajabi may use different terms for some of the values in a DNS record than those used by any given DNS provider, like Bluehost. For instance, the terms "Name", "Host", and "Host Record" usually refer to the same DNS record component.
**To add your TXT records:**
1. In your Bluehost DNS Manager, scroll down to the TXT card and click **Add Record**.
2. Copy the **Host** value for the first TXT record created by Kajabi and paste it into the **Host Record** field in Bluehost.
3. Then, copy the **Value** content in Kajabi and paste it into the **TXT Value** field in Bluehost.
4. Select **4 Hours** in the **TTL** field.
5. Click **Save**.
6. Repeat these steps to add the second and third TXT records:
### Add MX Records
1. In Bluehost, scroll to the MX (Mail Exchanger) card and click **Add Record**.
2. Enter **10** for the **Priority**.
3. Copy the **Host** value for the first MX record created by Kajabi and paste it into the **Host Record** field in Bluehost.
4. Then, copy the **Value** content in Kajabi and paste it into the **Points To** field in Bluehost.
5. Select **4 Hours** in the **TTL** field.
6. Click **Save**.
7. Repeat these steps to add the second MX record, but enter **20** for the **Priority**:
### Add CNAME Record
1. In Bluehost, scroll to the CNAME card and click **Add Record**.
2. Copy the **Host** value for the CNAME record created by Kajabi and paste it into the **Host Record** field in Bluehost.
3. Then, copy the **Value** content in Kajabi and paste it into the **Points To** field in Bluehost.
4. Select **4 Hours** in the **TTL** field.
5. Click **Save**:
### Wait for propagation
The verification process can take up to 48 hours due to the timeframe for the Domain Name System (DNS) changes to propagate.
#### What does this mean?
To create a successful connection:
* A custom subdomain has been added to ensure that your records don't interfere with existing domains.
* Your DNS changes must propagate, meaning that Internet Service Provider (ISP) nodes across the world must update their caches with your DNS information.
### Can I send emails during this time?
Yes! As your custom email domain propagates, your marketing emails will continue to send via Kajabi's shared marketing email domain.
### Can I make changes to my 'from' information during this time?
After updating your DNS records, you can continue to make changes to your "from name", "from email", and "reply-to email". These changes will not impact your custom email domain setup.
Regardless of your connection status (i.e. connection pending, error, or successful connection), you can continue to make changes to your 'from' information.
### How will I know when it's done?
After the verification process has completed, you'll receive an email notification from our support team:
* Your custom email sending domain is confirmed
* There is a problem with your custom email sending domain
If you've received an email notification that your custom email domain is confirmed, your marketing emails will now be sent to your list using your branded email domain.
# Connect a custom email domain with Cloudflare
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-connect-a-custom-email-domain-with-cloudflare
Connect a custom email domain from Cloudflare to a Kajabi account.
## Connect a custom email domain with Cloudflare
**If you're using CloudFlare, log into your CloudFlare account to add your unique DNS Records.**
To connect your custom email domain to Kajabi, you'll need to add the following DNS records provided by Kajabi to your DNS provider:
* Three TXT records
* Two MX records
* One CNAME record
## Add unique DNS records to Cloudflare
To add your DNS records from Kajabi to CloudFlare:
### Create unique DNS records in Kajabi
In order to generate your unique DNS records in Kajabi, you must first add your custom email domain in your Kajabi Marketing Settings.
**To create your DNS records:**
1. From your Kajabi dashboard, open the **Settings** tab on the bottom left.
2. Select **Marketing settings**.
3. Scroll down to the **Email Settings** section.
4. Locate your **Custom Email Domain** settings.
5. Input the **From name**, **From email**, and **Reply-to email** for your custom email domain.
6. Then, click **Setup Custom Email Domain**.
7. Your unique DNS records will appear on the Custom Email Domain Setup page:
### Add TXT Records
Please note that Kajabi may use different terms for some of the values in a DNS record than those used by any given DNS provider, like CloudFlare. For instance, the terms "Name", "Host", and "Host Name" usually refer to the same DNS record component.
**To add your TXT records:**
1. Log into your CloudFlare dashboard and click into your **Active domain**.
2. Select the **DNS** tab.
3. Click +**Add Record** and select **TXT** from the Type dropdown.
4. Copy the **Name** value for the first TXT record created by Kajabi and paste it into the **Name** field in CloudFlare.
5. Keep the default value in the TTL field.
6. Then, copy the **Content** value in Kajabi and paste it into the **Content** field in CloudFlare.
7. Click **Save** to add your record.
8. Repeat these steps to add the second and third TXT records:
### Add MX Records
1. Click **+Add Record** and select **MX** from the Type dropdown.
2. Copy the **Name** value for the first MX record created by Kajabi and paste it into the **Name** field in CloudFlare.
3. Then, copy the **Mail Server** value in Kajabi and paste it into the **Mail server** field in CloudFlare.
4. Keep the default value in the TTL field.
5. Enter **10** for the **Priority**.
6. Click **Save** to add your record.
7. Repeat these steps to add the second MX record, with the Priority set to **20**:
### Add CNAME Record
1. Click **+Add Record** and select **CNAME** from the Type dropdown.
2. Copy the **Name** value for the first CNAME record created by Kajabi and paste it into the **Name** field in CloudFlare.
3. Then, copy the **Target** value in Kajabi and paste it into the **Target** field in CloudFlare.
4. Click the **Proxy status** toggle off (from "Proxied" to "DNS Only").
5. Keep the default value in the TTL field.
6. Click **Save** to add your record:
**Warning:** Why the Proxy status must be "DNS Only" (Error 1014). Cloudflare's proxy (the "orange cloud") routes traffic through Cloudflare's network, but Kajabi's mail authentication needs to see your CNAME record directly. If this CNAME is left proxied ("orange cloud" instead of "grey cloud / DNS Only"), or if you reconnect the domain and the toggle resets to proxied, you'll see a "Cloudflare Error 1014 (CNAME Cross-User Banned)" error. If you've confirmed the toggle is set to DNS Only and still see this error, the fix requires Kajabi Support to remediate on their backend — contact Kajabi Support with your domain name and mention "Error 1014" rather than continuing to re-enter the same DNS records.
Need more help? Learn to [manage your DNS Records in CloudFlare](https://support.cloudflare.com/hc/en-us/articles/360019093151-Managing-DNS-records-in-Cloudflare).
### Wait for propagation
The verification process can take up to 48 hours due to the timeframe for the Domain Name System (DNS) changes to propagate.
#### What does this mean?
To create a successful connection:
* A custom subdomain has been added to ensure that your records don't interfere with existing domains.
* Your DNS changes must propagate, meaning that Internet Service Provider (ISP) nodes across the world must update their caches with your DNS information.
## While you wait: confirming propagation vs. a real error
It's not always obvious whether you should keep waiting or reach out to support. Use this to tell the difference:
* Use a DNS lookup tool (such as Cloudflare's own DNS records view, or a public tool like dig or an online DNS checker) to confirm your TXT, MX, and CNAME records are visible and match what Kajabi generated. If they match and it's been under 48 hours, this is normal propagation — no action needed yet.
* If it's been more than 48 hours and your records still don't match, or you're seeing Cloudflare Error 1014 specifically, this is a genuine issue rather than propagation delay — contact Kajabi Support rather than continuing to wait or re-adding records.
### Can I send emails during this time?
Yes! As your custom email domain propagates, your marketing emails will continue to send via Kajabi's shared marketing email domain.
### Can I make changes to my 'from' information during this time?
After updating your DNS records, you can continue to make changes to your "from name", "from email", and "reply-to email". These changes will not impact your custom email domain setup.
Regardless of your connection status (i.e. connection pending, error, or successful connection), you can continue to make changes to your 'from' information.
### How will I know when it's done?
After the verification process has completed, you'll receive an email notification from our support team:
* Your custom email sending domain is confirmed
* There is a problem with your custom email sending domain
If you've received an email notification that your custom email domain is confirmed, your marketing emails will now be sent to your list using your branded email domain.
# Connect a custom email domain with GoDaddy
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-connect-a-custom-email-domain-with-godaddy
Connect a custom email domain from GoDaddy to a Kajabi account.
## Connect a custom email domain with GoDaddy
To connect your custom email domain to Kajabi, you'll need to add the following DNS records provided by Kajabi to your DNS provider:
* Three TXT records
* Two MX records
* One CNAME record
**Warning:** **Don't delete or replace existing DNS records** when you add DNS records provided by Kajabi.
## Access DNS records in GoDaddy
To access your DNS records in GoDaddy:
1. Go to your GoDaddy dashboard.
2. Select the **My Products** tab.
3. Locate your domain in the Domains card.
4. Then, click **DNS** to the right of your domain name:
## Add unique DNS records from Kajabi to GoDaddy
To add your DNS records from Kajabi to GoDaddy:
### Create unique DNS records in Kajabi
In order to generate your unique DNS records in Kajabi, you must first add your custom email domain in your Kajabi Marketing Settings.
**To create your DNS records:**
1. From your Kajabi dashboard, open the **Settings** tab on the bottom left.
2. Select **Marketing settings**.
3. Scroll down to the **Email Settings** section.
4. Locate your **Custom Email Domain** settings.
5. Input the **From name**, **From email**, and **Reply-to email** for your custom email domain.
6. Then, click **Setup Custom Email Domain**.
7. Your unique DNS records will appear on the Custom Email Domain Setup page:
### Add TXT Records
Please note that Kajabi may use different terms for some of the values in a DNS record than those used by any given DNS provider, like GoDaddy. For instance, the terms "Name", "Host", and "Host Name" usually refer to the same DNS record component.
**To add your TXT records:**
1. In your GoDaddy DNS Records, click **Add** and select **TXT** from the Type dropdown.
2. Copy the **Host** value for the first TXT record created by Kajabi and paste it into the **Name** field in GoDaddy.
3. Then, copy the **Value** content in Kajabi and paste it into the **Value** field in GoDaddy.
4. Keep the default value in the TTL field.
5. Click **Add record**.
6. Repeat these steps to add the second and third TXT records:
### Add MX Records
1. In GoDaddy, click **Add** and select **MX** from the Type dropdown.
2. Copy the **Host** value for the first MX record created by Kajabi and paste it into the **Name** field in GoDaddy.
3. Enter **10** for the **Priority**.
4. Then, copy the **Value** content in Kajabi and paste it into the **Value** field in GoDaddy.
5. Keep the default value in the TTL field.
6. Click **Add record**.
7. Repeat these steps to add the second MX record, but enter **20** for the **Priority**:
### Add CNAME Record
1. In GoDaddy, click **Add** and select **CNAME** from the Type dropdown.
2. Copy the **Host** value for the CNAME record created by Kajabi and paste it into the **Name** field in GoDaddy.
3. Then, copy the **Value** content in Kajabi and paste it into the **Value** field in GoDaddy.
4. Keep the default value in the TTL field.
5. Click **Add record**:
### Wait for propagation
The verification process can take up to 48 hours due to the timeframe for the Domain Name System (DNS) changes to propagate.
#### What does this mean?
To create a successful connection:
* A custom subdomain has been added to ensure that your records don't interfere with existing domains.
* Your DNS changes must propagate, meaning that Internet Service Provider (ISP) nodes across the world must update their caches with your DNS information.
### Can I send emails during this time?
Yes! As your custom email domain propagates, your marketing emails will continue to send via Kajabi's shared marketing email domain.
### Can I make changes to my 'from' information during this time?
After updating your DNS records, you can continue to make changes to your "from name", "from email", and "reply-to email". These changes will not impact your custom email domain setup.
Regardless of your connection status (i.e. connection pending, error, or successful connection), you can continue to make changes to your 'from' information.
### How will I know when it's done?
After the verification process has completed, you'll receive an email notification from our support team:
* Your custom email sending domain is confirmed
* There is a problem with your custom email sending domain
If you've received an email notification that your custom email domain is confirmed, your marketing emails will now be sent to your list using your branded email domain.
# Connect a custom email domain with Namecheap
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-connect-a-custom-email-domain-with-namecheap
Connect a custom email domain from Namecheap to a Kajabi account.
## Connect a custom email domain with Namecheap
To connect your custom email domain to Kajabi, you'll need to add the following DNS records provided by Kajabi to your DNS provider:
* Three TXT records
* Two MX records
* One CNAME record
**Warning:** Don't delete or replace existing DNS records when you add DNS records provided by Kajabi.
## Access DNS records in Namecheap
To access your DNS records in Namecheap:
1. Go to your Namecheap dashboard.
2. Locate your domain and click **Manage** to the right of your domain name.
3. Then, select the **Advanced DNS** tab:
## Add unique DNS records from Kajabi to Namecheap
**Important:** It may not be possible to complete all of the following steps in Google Chrome. We recommend using a different browser to update your DNS records in Namecheap.
To add your DNS records from Kajabi to Namecheap:
### Create unique DNS records in Kajabi
In order to generate your unique DNS records in Kajabi, you must first add your custom email domain in your Kajabi Marketing Settings.
**To create your DNS records:**
1. From your Kajabi dashboard, open the **Settings** tab on the bottom left.
2. Select **Marketing settings**.
3. Scroll down to the **Email Settings** section.
4. Locate your **Custom Email Domain** settings.
5. Input the **From name**, **From email**, and **Reply-to email** for your custom email domain.
6. Then, click **Setup Custom Email Domain**.
7. Your unique DNS records will appear on the Custom Email Domain Setup page:
### Add TXT Records
Please note that Kajabi may use different terms for some of the values in a DNS record than those used by any given DNS provider, like Namecheap. For instance, the terms "Name", "Host", and "Host Name" usually refer to the same DNS record component.
**To add your TXT records:**
1. In your Namecheap Advanced DNS settings, locate your Host Records.
2. Click **+ Add New Record** and select **TXT Record** from the dropdown menu.
3. Copy the **Host** value for the first TXT record created by Kajabi and paste it into the **Host** field in Namecheap.
4. Then, copy the **Value** content in Kajabi and paste it into the **Value** field in Namecheap.
5. Keep the default value (Automatic) in the TTL field.
6. Repeat these steps to add the second and third TXT records.
7. Then, click **Save All Changes**:
### Add MX Records
1. In Namecheap, scroll down to Mail Settings.
2. Click the Mail Settings dropdown menu and select **Custom MX**.
3. Copy the **Host** value for the first MX record created by Kajabi and paste it into the **Host** field in Namecheap.
4. Then, copy the **Value** content in Kajabi and paste it into the **Mail Server** field in Namecheap.
5. Enter **10** for the **Priority**.
6. Keep the default value (Automatic) in the TTL field.
7. Click **Save All Changes**.
8. Then, click **+ Add New Record**.
9. Repeat these steps to add the second MX record, but enter **20** for the **Priority**:
### Add CNAME Record
1. In Namecheap, scroll back up to Host Records.
2. Click **+ Add New Record** and select **CNAME Record** from the dropdown menu.
3. Copy the **Host** value for the CNAME record created by Kajabi and paste it into the **Host** field in Namecheap.
4. Then, copy the **Value** content in Kajabi and paste it into the **Target** field in Namecheap.
5. Keep the default value (Automatic) in the TTL field.
6. Then, click **Save All Changes**:
### Wait for propagation
The verification process can take up to 48 hours due to the timeframe for the Domain Name System (DNS) changes to propagate.
#### What does this mean?
To create a successful connection:
* A custom subdomain has been added to ensure that your records don't interfere with existing domains.
* Your DNS changes must propagate, meaning that Internet Service Provider (ISP) nodes across the world must update their caches with your DNS information.
### Can I send emails during this time?
Yes! As your custom email domain propagates, your marketing emails will continue to send via Kajabi's shared marketing email domain.
### Can I make changes to my 'from' information during this time?
After updating your DNS records, you can continue to make changes to your "from name", "from email", and "reply-to email". These changes will not impact your custom email domain setup.
Regardless of your connection status (i.e. connection pending, error, or successful connection), you can continue to make changes to your 'from' information.
### How will I know when it's done?
After the verification process has completed, you'll receive an email notification from our support team:
* Your custom email sending domain is confirmed
* There is a problem with your custom email sending domain
If you've received an email notification that your custom email domain is confirmed, your marketing emails will now be sent to your list using your branded email domain.
# Connect a custom email domain with SiteGround
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-connect-a-custom-email-domain-with-siteground
Connect a custom email domain from SiteGround to a Kajabi account.
## Connect a custom email domain with SiteGround
To connect your custom email domain to Kajabi, you'll need to add the following DNS records provided by Kajabi to your DNS provider:
* Three TXT records
* Two MX records
* One CNAME record
**Warning:** Don't delete or replace existing DNS records when you add DNS records provided by Kajabi.
## Access DNS records in SiteGround
To access your DNS records in SiteGround:
1. Go to your SiteGround dashboard.
2. Select the **Websites** tab.
3. Locate your domain and click **Site Tools** to the right of your domain name.
4. Select **Domain** from the left sidebar menu.
5. Then, select **DNS Zone Editor**:
## Add unique DNS records from Kajabi to SiteGround
To add your DNS records from Kajabi to SiteGround:
### Create unique DNS records in Kajabi
In order to generate your unique DNS records in Kajabi, you must first add your custom email domain in your Kajabi Marketing Settings.
**To create your DNS records:**
1. From your Kajabi dashboard, open the **Settings** tab on the bottom left.
2. Select **Marketing settings**.
3. Scroll down to the **Email Settings** section.
4. Locate your **Custom Email Domain** settings.
5. Input the **From name**, **From email**, and **Reply-to email** for your custom email domain.
6. Then, click **Setup Custom Email Domain**.
7. Your unique DNS records will appear on the Custom Email Domain Setup page:
### Add TXT Records
Please note that Kajabi may use different terms for some of the values in a DNS record than those used by any given DNS provider, like SiteGround. For instance, the terms "Name", "Host", and "Host Name" usually refer to the same DNS record component.
**To add your TXT records:**
1. In your SiteGround DNS Zone Editor, navigate to **Create New Record** and select the **TXT** tab.
2. Copy the **Host** value for the first TXT record created by Kajabi and paste it into the **Name** field in SiteGround.
3. Then, copy the **Value** content in Kajabi and paste it into the **Value** field in SiteGround.
4. Keep the default value in the TTL field.
5. Click **Create.**
6. Then, click **Back** and repeat these steps to add the second and third TXT records:
### Add MX Records
1. In SiteGround, navigate to **Create New Record** and select the **MX** tab.
2. Select **Add your own MX records**.
3. Copy the **Host** value for the first MX record created by Kajabi and paste it into the **Name** field in SiteGround.
4. Enter **10** for the **Priority**.
5. Keep the default value in the TTL field.
6. Then, copy the **Value** content in Kajabi and paste it into the **Destination** field in SiteGround.
7. Click **Create.**
8. Then, click **Back** and repeat these steps to add the second MX record, but enter **20** for the **Priority**:
### Add CNAME Record
1. In SiteGround, navigate to **Create New Record** and select the CNAME tab.
2. Copy the **Host** value for the CNAME record created by Kajabi and paste it into the **Name** field in SiteGround.
3. Then, copy the **Value** content in Kajabi and paste it into the **Resolves to** field in SiteGround.
4. Keep the default value in the TTL field.
5. Click **Create**:
### Wait for propagation
The verification process can take up to 48 hours due to the timeframe for the Domain Name System (DNS) changes to propagate.
#### What does this mean?
To create a successful connection:
* A custom subdomain has been added to ensure that your records don't interfere with existing domains.
* Your DNS changes must propagate, meaning that Internet Service Provider (ISP) nodes across the world must update their caches with your new DNS information.
### Can I send emails during this time?
Yes! As your custom email domain propagates, your marketing emails will continue to send via Kajabi's shared marketing email domain.
### Can I make changes to my 'from' information during this time?
After updating your DNS records, you can continue to make changes to your "from name", "from email", and "reply-to email". These changes will not impact your custom email domain setup.
Regardless of your connection status (i.e. connection pending, error, or successful connection), you can continue to make changes to your 'from' information.
### How will I know when it's done?
After the verification process has completed, you'll receive an email notification from our support team:
* Your custom email sending domain is confirmed
* There is a problem with your custom email sending domain
If you've received an email notification that your custom email domain is confirmed, your marketing emails will now be sent to your list using your branded email domain.
# Convert Email Sequence emails from Classic to Visual Editor
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-convert-email-sequence-emails-from-classic-to-the-new-visual-editor
Convert Email Sequence emails from the Classic Editor to the Visual Editor for richer design options.
Convert your **Email Sequence** emails from the Classic Editor to the Visual Editor to access richer design and branding options.
## Convert an email to the Visual Editor
Add rich design to your emails and give your audience a sophisticated, highly branded experience by converting your email.
Converting your email will display your stylized version for new recipients.
### Convert an email
* Open the **Marketing** tab from your Dashboard.
* Click **Email Campaigns**.
* Then, select the Email Sequence you wish to edit.
* Open the email editor for the email you wish to convert.
* Navigate to the top right corner and click **Convert to Visual Editor.**
* Confirm your conversion at the prompt.
* Then, click the **Launch Email Editor** link.
* Finally, click **Save and Close** to finish the conversion:
# Create and use Liquid Objects in email marketing
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-create-and-use-liquid-objects-in-email-marketing
Personalize emails based on information collected in Form Fields using Liquid Objects.
## What are Liquid Objects?
Liquid is a programming logic that tells templates what to do. **Liquid Objects** can be used to personalize emails based on information collected in Form Fields. Follow this step-by-step guide to create and use Liquid Objects in your Kajabi email marketing.
On Kajabi, when a contact opts-in through a Form, the information they input is saved into a data store. You can use Liquid Objects to pull that information from the data store and use it to personalize your Emails.
An example of a Liquid Object can be seen in the default email template and wrapped in `{{ }}` characters:
## Add default Liquid Objects to an email
There are many default Liquid Objects you can use in your emails to personalize them, including but not limited to:
* First Name
* Last Name
* Location
* Phone Number
### Insert a default Liquid Object into an email
1. From the Dashboard, click **Marketing.**
2. Click **Email Campaigns**.
3. Click **+ New Email Campaign** and choose between an Email Broadcast or Email Sequence. This example uses an Email Broadcast.
4. Choose an Email Template, select your recipients, and click **Save & Continue**.
**Note:** Send your email only to a segment of contacts for whom your Liquid Object data exists in the data store, so the personalization populates correctly instead of appearing blank.
5. Hover over your Email Content and click **Edit content** to open the Visual Editor.
6. Hover over the email section you want to edit and click **Edit**.
7. In the sidebar Text Editor, locate the **Personalize** dropdown and choose a Liquid Object.
8. Click **Save** to insert your Liquid Object.
**Note:** If you're using the Email Classic Editor instead of the Visual Editor, after selecting your recipients you can access the "Personalize" dropdown directly on the Edit Content page in the Body text editor.
## Create and input a custom Liquid Object
When you create a custom Form Field on Kajabi, that field is saved as an Object which can then be inserted into your marketing emails to increase personalization.
As an example, let's say you teach a Course on how to replace coffee with tea.
In your Opt-in Form, you can create a custom Form Field asking potential students about their favorite tea.
Then, in your marketing emails, you can add the Liquid Object from the custom Form Field to personalize the emails with their answer.
To learn how to incorporate custom Liquid Objects into your marketing emails, follow the guide below.
### Create a custom form field
1. From the Dashboard, click **Marketing.**
2. Click **Forms**.
3. Click **+ New Form**.
4. Give your form an internal title and click **Save**.
5. Under "Form Fields", select **+ Add Form Field**, then **Create a New Field**.
6. In the Title field, input the question you want to ask your page visitor. For example: "What's your favorite tea?"
7. Under Type, choose the input method your contacts will use to answer the question (such as Checkbox, Select Box, Radio Buttons).
8. Click **Save** to keep your changes.
### Add the opt-in form to a page
In order for the Liquid Object to pull information from a data store, first there needs to be data.
Add the Opt-in Form to your pages and funnels: [Learn how to create and build your Form](https://help.kajabi.com/articles/marketing/forms/create-and-build-your-form)
### Add the Liquid Object to your marketing emails
After you've created your custom Form Field and added it to a Form, you can use the corresponding Liquid Object in your marketing emails.
#### To add your custom Liquid Object to an Email Campaign:
1. From the Dashboard, click **Marketing.**
2. Click **Email Campaigns**.
3. Select **+ New Email Campaign** and choose between an Email Broadcast or Email Sequence. For this example, we'll create an Email Broadcast.
4. Choose an Email Template, select your recipients, and click **Save and continue**.
**Note:** Send your email only to a segment of contacts for whom your Liquid Object data exists in the data store, such as contacts who have submitted your Opt-in Form.
5. Hover over your email body content and click **Edit content** to open the Visual Editor.
6. From inside the Visual Editor, click to edit your desired Text Block.
7. In the sidebar Text Body editor, locate a dropdown labeled "Personalize". Click the dropdown to choose a Liquid Object.
8. The list of supported Liquid Objects will now include the custom Form Field you created. Simply click the title of the field to insert the Object in the body of your email.
9. Click **Save** to keep your changes.
**Note:** When a custom Liquid Object is placed into the Text body it will appear in the format of `{{ custom_1 }}`, with the number ascending for each custom Form Field created in your site.
### Send
When your email is sent, your recipients will receive a personalized message based on the information they input into your Opt-In Form.
In this example, a prospective student indicated in the form created above that their favorite tea is **matcha**. In the email created and sent, the Liquid Object was replaced by their answer (matcha):
## FAQs
### What happens if a contact has no data for a Liquid Object?
If a contact has not submitted a value for the Form Field tied to a Liquid Object, the field displays blank in the sent email rather than showing the literal `{{ }}` code. Always send personalized emails to a segment of contacts who have submitted the relevant Form.
### Can I use Liquid Objects outside of email, such as on Landing Pages?
No. Liquid Objects in this article are used specifically for personalizing Kajabi email marketing. They are not supported on Landing Pages or Website Pages.
# Create custom email templates
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-create-custom-email-templates
Save email designs as reusable templates to quickly create branded Email Campaigns.
Save email designs as reusable **custom email templates** to quickly create branded Email Campaigns that reflect your style.
## Custom email templates
An email template allows you to save your design and brand from your beautifully designed Email Campaign and use it again and again with ease.
With an email template, you can save time, recreate successful Email Campaigns, and create branded emails faster than ever before.
**Note:**
You can create up to 25 custom email templates.
## Create a custom email template
With Kajabi's [Email Visual Editor](../../marketing/email-campaigns/email-visual-editor-overview) you can create custom email templates with your brand and design.
**Note:**
Creating an email template requires the [Email Visual Editor](../../marketing/email-campaigns/email-visual-editor-overview). If you are using the Classic Editor, your email cannot be saved as an email template.
### Create an Email Campaign to use as a custom template
* Open the **Marketing** tab from your Dashboard.
* Click **+ New Email Campaign**.
* Select **Email Broadcast** or **Email Sequence**.
* Then, select the design you wish to use for your Email Campaign.
* Add your **Email Title**.
* Click **Create**.
* In the email editor, design your email to use as a template. [Learn more](../../marketing/email-campaigns/email-visual-editor-overview)
* Then, click **Save as a template.**
* Complete the prompt to include a **Template name** and **Template description**.
* Click **Save** to keep and apply your changes:
### Create an email template in the template manager
* Open the **Marketing** tab from your Dashboard.
* Click **Manage Templates**.
* Click **+ New Template**.
* Enter your **Template Name** and **Template Description**.
* Then, click **Create.**
* Select an existing template to use as the starting point for your new custom template.
* Customize your new template as desired in the editor:
## Use and manage email templates
Email templates can be used to help you quickly build your Email Campaigns with your desired branding and design.
When you create and save a custom email template you'll be able to choose between your custom email template or one of Kajabi's templates when creating a new Email Campaign:
To use a custom email template, you can begin by creating a new custom Email Campaign or Email Broadcast directly from your template manager.
### Create an Email Broadcast with a custom email template
* Open the **Marketing** tab from your Dashboard.
* Click **Manage Templates**.
* Select the **Template** you wish to use.
* Click **Create a broadcast**.
* Enter your **Email title**.
* Click **Create**:
## Update a custom email template
Your email templates may receive updates to fix bugs or include additional features. If you have created a custom email template, you can update it to gain access to the latest version.
### Update an email template
* Open the **Marketing** tab from your Dashboard.
* Click **Manage Templates**.
* Locate the **Template** you wish to update.
* Click the `…` icon to access more actions.
* Select **Update template**:
## Delete a custom email template
If you no longer need a custom email template, you can delete it.
### Delete an email template
* Open the **Marketing** tab from your Dashboard.
* Click **Manage Templates**.
* Locate the **Template** you wish to update.
* Click the `…` icon to access more actions.
* Select **Delete**.
* A popup will ask if you really want to delete this template. If so, select **Yes, Delete**:
# Customize typography in Email Campaigns
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-customize-the-typography-in-email-campaigns
Customize font style and font sizes for desktop and mobile devices to match your brand.
Font type plays a significant role in the personality and character of your brand. In the **Typography** section, you can customize font style and font sizes for desktop and mobile devices.
## Custom font
### Select a custom font
**Note:**
Custom Fonts are only supported in modern email clients. Ensure the readability of your email content across different email clients by selecting a Fallback Body and Heading Font.
* Open the **Settings** tab in the Editor.
* Click **Typography**.
* Check **Use Custom Fonts:**
* Then, select your Body Font:
* Select your Heading Font:
## Fallback font
Select a Fallback Font for email clients that may not support your selected Custom Font.
### Select a fallback font
**Tip:**
To use the default Fallback Fonts without Custom Fonts, uncheck Custom Fonts and simply select your desired Fonts under the Body Font (Fallback) and Heading Font (Fallback) dropdown menus.
## Configure email visibility
Customize the email font size to optimize the reader experience across devices.
### Desktop font sizes
* Select the **Settings** tab in the Editor.
* Click open **Typography**.
* Navigate to the Desktop Font Sizes header.
* Use the dropdown menus to specify your Desktop Font Sizes:
### Mobile font sizes
* Select the **Settings** tab in the Editor.
* Click open **Typography**.
* Navigate to the Mobile Font Sizes header.
* Use the dropdown menus to specify your Mobile Font Sizes:
For best practices when customizing your Font Sizes, read [How to Optimize Your Font Size in Email Campaigns](../../marketing/email-campaigns/how-to-optimize-your-font-size-in-email-campaigns) for details.
# Customize when Email Campaigns are sent
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-customize-when-email-campaigns-are-sent
Schedule when Email Broadcasts and Sequences are sent.
Schedule when **Email Broadcasts** and Email Sequences are sent to reach your audience at the right time.
## Email Broadcast
An Email Broadcast is one email that can be scheduled to send right now or at a **specific date and time**:
## Email Sequence
Email Sequences are a series of emails that can be scheduled to be sent on specific days and times from when the recipient subscribed to the sequence.
It is important to note that Email Sequences are sent based on an Action performed (e.g., a Form is submitted, an Offer is purchased, or an Automation is triggered).
Therefore, the date your recipient receives the emails in your sequence will depend on the date they subscribed to the sequence.
When creating your Email Sequence you can set when the emails in the sequence are sent according to the number of days after a user subscribes.
Sequences automatically default to Day 1, which is one day after a contact subscribes to your emails.
To make an email in a sequence send immediately when a contact subscribes, choose Day 0.
If you would like the second email to send 3 days after someone subscribes, select 3 for the second Email.
### Definition of a "day" in an Email Sequence
The "days" a subscriber has been subscribed is defined as the calendar day in the Email Sequence's time zone. The time of day a message is sent is also determined by the Email Sequence time zone.
This can be an important distinction if a large proportion of customers are in a different time zone.
Let's say your business is based in Southern California, but most of your customers live in Manila, Metro Manila, Philippines. That is a 16-hour time difference!
In this case, it may be more beneficial to adjust your Email Sequence to Philippine Time (PHT).
If you keep the email sequence time zone set to Pacific Standard Time (PST) and you create a campaign that opens the ability to subscribe during the last week of January with emails set to send at 10 AM (PST), and your customers subscribe at 2:00 PM (PHT), then they will receive your emails at 2:00 AM (PHT) one calendar day ahead of the time zone you are based out of.
Be sure to set your Email Sequence Settings to customize the time zone and send time for each Email Sequence you create. [Learn to edit your email sequence settings.](../../marketing/email-campaigns/how-to-edit-your-email-sequence-settings)
### Set send times for emails in an Email Sequence
* Open the **Marketing** settings from your Kajabi Dashboard.
* Select **Email Campaigns**.
* Create a **New Email Sequence**. [Learn more](../../marketing/email-campaigns/create-an-email-sequence)
* In the Email Editor:
* Select the number of **Day(s)** after a contact subscribes to receive the email in the Sequence.
* Select the **Time** of day the email will be sent.
* Click **Save** to keep and apply your changes:
**Note:**
Email Sequences cannot be set to send on specific dates when editing your Email Sequence emails.
### Time zone settings
Email Sequences will copy the default time zone and send time set in your [Marketing Settings](../../marketing/email-campaigns/how-to-customize-your-marketing-settings#h_113a1cec-824d-4d24-8c82-b40a2647e256).
However, you can adjust the time zone for your email sequences separate from your Marketing Settings by updating your Email Sequence Settings. [Learn to edit your email sequence settings](../../marketing/email-campaigns/how-to-edit-your-email-sequence-settings).
**Note:**
The time zone and send time set in your [Marketing Settings](../../marketing/email-campaigns/how-to-customize-your-marketing-settings#h_113a1cec-824d-4d24-8c82-b40a2647e256) are used as the default time when a new Email Sequence is created. If you want to update the send time and time zone for an Email Sequence, edit the [Email Sequence Settings](../../marketing/email-campaigns/how-to-edit-your-email-sequence-settings). Changing the time zone and send times in your Marketing Settings will not affect existing Email Sequences.
# Customize the color scheme in Email Campaigns
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-customize-your-color-scheme-in-email-campaigns
Change the default page background color, header text color, and body text color in the Color Scheme tab.
In the **Color Scheme** tab, you can change the default page background color, header text color, and body text color.
**Note:**
These instructions apply only to the Email Visual Editor, not the Classic Editor.
## Select a color scheme
### Access the color scheme
* Click the **Settings** tab in the editor.
* Select **Color Scheme:**
To change colors, click the colored circle and then select which of the default colors you'd like to use.
If you prefer to use a custom color, click the color wheel and either enter your RGB color code or use the sliders to choose your color:
# Customize marketing settings
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-customize-your-marketing-settings
Brand email marketing settings by customizing the From Name, From Email, Reply-to address, company address, and logo.
## Marketing contact address
Your marketing contact address will be displayed in the footers of your emails to comply with international spam laws.
### Customize the Marketing Contact Address
1. From the Dashboard, click **Settings**.
2. Then, under **Site settings**, click **Marketing Settings**.
3. Complete all applicable fields under **Marketing Contact Address**:
**Note:** A complete Marketing Contact Address is required before marketing emails (e.g. Email Sequences & Email Broadcasts) and Offer-related emails (Offer Grant Confirmation email & Member Welcome Email) will send. If any field is left blank, these emails will not send, even to fully subscribed contacts, and no error or warning will appear anywhere to flag this. Standard transactional emails such as purchase receipts are not affected.
## Company logo
Include your company logo in every marketing email sequence you send through Kajabi by uploading it in your Marketing Settings.
The image will display at the top of your marketing emails. (Recommended dimensions are at least 150 x 100 px in PNG format.)
### Upload a Company Logo to Email Sequences
1. Open the **Settings** tab from the Dashboard.
2. Select **Marketing Settings**.
3. Under **Company Logo**, click **Select Image**.
4. Click **Upload**, then **Upload images**.
5. Drop a file into the modal, or browse and import a file.
6. Click **Select media**.
7. Click **Save**.
## Email Settings
With Kajabi, you are automatically granted an email address through our email server (e.g., [kajabihelpcenter@c.kajabimail.net](mailto:kajabihelpcenter@c.kajabimail.net)) to send your marketing emails.
If you do not have a custom email domain, and you wish to change the "From" information for marketing emails, update **Email Settings** within your Marketing Settings.
**Note:** Leave the **From Email** section blank to use the default Kajabi email address that has been personalized for your account or use a c[ustom ](../../marketing/email-campaigns/connecting-a-custom-email-domain)e[mail ](../../marketing/email-campaigns/connecting-a-custom-email-domain)d[omain](../../marketing/email-campaigns/connecting-a-custom-email-domain). If you wish to use an address owned by an email service provider such as Gmail or Outlook, please use this as your Reply-to address.
To protect the reliability of your marketing emails, Kajabi makes a small behind-the-scenes adjustment to any personal email addresses added to the "From Email" section. For example, if your email was "[person@example.com](mailto:person@example.com)" it will change to "person=[example.com@a.kajabimail.net](mailto:example.com@a.kajabimail.net)." This will not change any content in your emails.
### Change the From Name, From Email, and Reply-to email address
1. From the Dashboard, click **Settings**.
2. Under **Site settings**, select **Marketing Settings**.
3. Scroll down to **Email Settings.**
4. Customize the **From** and **Reply-to** information:
**Note:** This only applies to Email Broadcasts and Email Sequences. All transactional or support emails are sent from your Support Email Address. [Learn to update your support email address](https://help.kajabi.com/hc/en-us/articles/360049714574)
Replies go to your **Reply-to** address. If that's blank, Kajabi uses your **From email** address. If neither is set, replies go to your site's **Support Email Address**.
[Learn how to change the From address on transactional emails](https://help.kajabi.com/articles/account-settings/notifications/how-to-change-your-transactional-email-sender-information).
[Sendi and receive marketing email from your own domain](/articles/website/domains/connect-a-custom-domain)
## Email Sequence Defaults
Configure the default settings used when creating new Email Sequences, including the **Default time to send sequence emails**, and the **Default time zone**.
Customizing the Default time zone will sever the connection between the time zone set in your Marketing Settings. If you set the time zone in your Marketing Settings, ensure that the emails in your Email Sequences are set to your intended time zone.
### Configure the default send time for automatic emails
1. From the Dashboard, click **Settings**.
2. Under Site settings, select **Marketing Settings**.
3. Scroll to the bottom of the page to locate **Email Sequence Defaults**.
4. Select the **Default time to send sequence emails** and the **Default time zone**:
# Customize the mobile and desktop layout in Email Campaigns
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-customize-your-mobile-and-desktop-layout-in-email-campaigns
Change the layout of an email based on the device contacts use to view it.
In the **Email Visual Editor**, you can change the layout of an email based on the device contacts use to view it.
## Preview an email on different devices
At the top of the Email Editor page, you can choose which device you would like to view the email in as you edit:
## Edit the desktop layout
### Edit the Desktop Layout
* In the sidebar, click a section.
* Locate the **Section Settings** header and click **Desktop Layout**.
* Customize the layout to the section.
* Click **Save** to keep your changes.
### Desktop layout
Customize the desktop layout by configuring the following features:
* **Hide Section**: This feature allows you to hide a specific section in the desktop view.
* **Desktop Section Padding**: Adjusting the padding shifts the content within the section to your desired appearance.
* **Width**: Adjust the width of the section. Use the format 540px or simply 540 to specify your desired width:
## Edit the mobile layout
### Edit the Mobile Layout
* In the sidebar, click a section.
* Locate the **Section Settings** header and click **Mobile Layout**.
* Customize the layout to the section.
* Click **Save** to keep your changes.
### Mobile layout
**Note:**
The Email Visual Editor is designed to arrange itself in a vertically stacked layout for optimal viewing on mobile devices. Optimize your mobile viewing experience by editing the mobile layout in your Visual Editor Settings and for each section.
* **Hide Section**: This feature allows you to hide a specific section in the mobile view.
* **Mobile Section Padding**: Adjusting the padding within a section shifts the section to your desired appearance:
# Delete an email from an Email Sequence
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-delete-an-email-from-an-email-sequence
Remove an email from an Email Sequence.
Remove an email from an **Email Sequence** when it is no longer needed.
## Delete an email from an Email Sequence
* Open the **Marketing** tab from your Dashboard.
* Then, select **Email Campaigns**.
* Choose the **Campaign** you want to edit.
* Inside the Email Sequence, select the **email** you wish to delete.
* In the editor of the specific email, scroll to the bottom right of the page and select **Delete**.
* Confirm that you want to delete this email:
# Delete bounced email addresses
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-delete-bounced-email-addresses
Remove contacts with bounced emails to maintain mailing list reputation and email deliverability.
Bounced emails impact the reputation of your mailing list and can negatively affect email deliverability. Remove contacts with bounced emails to keep your list healthy.
## Bounced vs. Dropped
**Dropped emails**: Emails being sent to addresses already known to be invalid will be dropped. This can occur if multiple senders send to the same invalid address.
**Hard bounced emails**: A permanent error that can be caused by invalid email addresses, disabled inboxes, or if a domain doesn't exist.
Kajabi automatically unsubscribes hard bounced contacts to help protect your email deliverability. [Learn more about how auto unsubscribe works](https://help.kajabi.com/articles/contacts/manage-your-contacts/how-auto-unsubscribe-helps-you-maintain-a-healthy-mailing-list).
## Remove bounced email addresses
Although Kajabi helps you manage your hard bounced contacts by automatically unsubscribing them from your email list, it is still best practice to occasionally remove hard bounced contacts from your account entirely.
**Warning:** Avoid deleting contacts from your account by filtering your list to exclude certain contacts. Deleted contacts are permanently removed and cannot be recovered. If your contact has outstanding future payments (such as a recurring subscription), their future payment transactions will be cancelled upon deletion. [Learn more](https://help.kajabi.com/articles/contacts/manage-your-contacts/apply-filters-to-your-contacts-tab).
### Remove contacts with hard bounced email addresses
**Note:** The Hard Bounced segment only appears in your Segments dropdown if your account has contacts with hard bounced email addresses. If you do not see this option, your account currently has no hard bounced contacts to remove.
* Open the **Contacts** tab from your Dashboard.
* Click into the **Segments** dropdown menu.
* Select **Hard Bounced**.
* Click the **Select All** checkbox.
* Then, open the **Bulk Actions** menu.
* Scroll to the bottom of the Actions menu and click **Delete**.
* At the prompt, review the warning that deleting contacts cannot be undone.
* Then, click **Permanently delete** to permanently remove your hard bounced contacts:
**Note:** As a safety feature, after bulk deletions, an email will be sent to you containing a link (active for 3 days only) to a downloadable CSV file listing all of your deleted contacts.
# Disable an Email Sequence
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-disable-an-email-sequence
Prevent further emails from being sent by disabling an Email Sequence and removing subscription triggers.
An **Email Sequence** is a series of emails sent with pre-set time intervals to contacts after they are subscribed to the sequence via trigger-based automation.
While an Email Sequence can be a crucial part of your web-based marketing strategy, there are times when you may want to disable the Email Sequence for some time, preventing further emails from being sent.
There are two steps to disabling an Email Sequence:
First, delete all subscription automation triggers. This prevents any future sign-ups for that Email Sequence.
Next, bulk unsubscribe your contacts from that Email Sequence. This prevents any further emails from being sent to those who were previously subscribed.
## Disable an Email Sequence
To delete all subscription automation triggers:
1. From the Kajabi Dashboard, select **Marketing** > **Email Campaigns**.
2. Click **Sequence**.
3. Select the **Email Sequence** you wish to edit.
4. Click **Subscribe Triggers** to view the subscribe triggers for that Email Sequence.
5. Select **Edit** next to the subscribe trigger.
6. Click **Delete**, then confirm you wish to delete that trigger.
7. Repeat this process for each subscribe trigger for that Email Sequence:
To bulk unsubscribe contacts from an Email Sequence:
1. From the Kajabi Dashboard, select **Contacts** > **All Contacts**.
2. Click the **Select All** box to select all your contacts.
3. Use the **Bulk Actions** dropdown menu then choose **Unsubscribe from Email Sequence**.
4. Choose which **Email Sequence** you wish to unsubscribe your contacts from, then click **Submit**:
# Edit the section background in Email Campaigns
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-edit-the-section-background-in-email-campaigns
Customize the background color of each section in your email using the Email Visual Editor.
The **Email Visual Editor** lets you customize the look and feel of every section of your email, creating a professional look to best represent your brand. Customize the background color of each of your sections to match your branding.
## Edit the section background color
### Customize the section background color
1. Click the section you would like to customize.
2. Navigate to **Section Settings** in the Sidebar Editor and click the **Background** dropdown.
3. Input a Hex code, select and edit from your custom Color Scheme, or choose a color from the Color Wheel:
# Edit Email Sequence settings
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-edit-your-email-sequence-settings
Access Email Sequence settings to configure the Internal Title, Unsubscribe Triggers, Sending Time, and Automations.
Configure your **Email Sequence** settings to manage the Internal Title, Unsubscribe Triggers, Sending Time, and Automations.
## Access Email Sequence settings
1. Open the **Marketing** tab from the Dashboard.
2. Click **Email Campaigns**.
3. Select the Email Sequence you wish to edit.
4. Click **Settings** in the top navigation menu of the editor:
## Define Email Sequence settings
**Email Sequence Details** - The Internal Title is only visible to you and your team to be used in your reports. Your email recipients cannot view your Internal Title.
**Email Sequence Exclude** - Specify the Offers or Forms that will unsubscribe your sequence subscribers when purchased or submitted.
**Sending time zone** - Configure the time zone in which the emails in this sequence will be sent out. [Learn more.](../../marketing/email-campaigns/how-to-customize-when-email-campaigns-are-sent#h_01EJEQ6G5A716HF2CFQXBCB321)
**Automations** - Create [Automations](../../marketing/automations/automations-overview) to trigger an action when the Email Sequence is completed.
# Edit Preview Text for your emails
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-edit-your-preview-text
Target messaging specific to the Preview Text that encourage email opens.
Encourage your email recipients to open your email by creating targeted messaging specific to the **Preview Text**. Edit the email Preview Text displayed, along with the sender Name and Subject line in a subscriber's email inbox.
## What is Preview Text?
**Preview Text** is a snippet of copy most commonly displayed beneath the sender Name and Subject line in a subscriber's email inbox. Depending on the recipient's email client, the Preview Text may appear next to the subject line:
The goal of Preview Text is to capture a recipient's attention and interest, encouraging them to open an email.
## Edit Preview Text
**Note:** Preview Text edit is not available with the [Classic Editor](https://help.kajabi.com/../../marketing/email-campaigns/create-an-email-broadcast#h_75d4c608-8b44-47f2-988a-7893cb9a17a5).
Customize Preview Text using the [Visual Editor](../../marketing/email-campaigns/email-visual-editor-templates) available in Email Campaigns.
1. Open the **Marketing** tab from the Dashboard.
2. Click **Email Campaigns**.
3. Select the Email Campaign you wish to edit or [create an Email Campaign](../../marketing/email-campaigns/email-campaigns-overview).
4. In the Visual Editor, select recipients using **Filters** or **Segments**. [Learn more about contact segments](../../contacts/manage-your-contacts/segment-your-contacts).
5. Edit content to customize the **Internal Title**, **Subject**, and **Preview Text**:
## Personalize Preview Text
Personalizing emails improves your Click-to-Open Rate (CTOR). Use **liquid objects** to pull data from your contact information and personalize the Preview Text.
### Default liquid objects
\| **First Name:** `{{ first_name }}` | **Address Line 2:** `{{ address_line_2 }}` | | **Last Name:** `{{ last_name }}` | **Address:** `{{ address_line_1 }}` | | **Zip Code:** `{{ address_zip }}` | **Phone Number:** `{{ phone_number }}` | | **Country:** `{{ address_country }}` | **Email:** `{{ email }}` | | **State:** `{{ address_state }}` | **Name:** `{{ name }}` | | **City:** `{{ address_city }}` | |
Read [**Create and use liquid objects**](../../marketing/email-campaigns/how-to-create-and-use-liquid-objects-in-email-marketing) for more details.
**Tip:** Add fallback text so the liquid object still shows something if a customer's first name is missing: `{{member.first_name | default: 'there'}}` displays "there" instead of leaving a blank.
## FAQs
### What is Preview Text's character limit?
Like everything else with email, support for Preview Text varies. Kajabi gives the largest number of characters found to be displayed across email clients (**140 characters**), but remember, no two inboxes look the same. The number of characters displayed will vary based on your recipient's email client.
### What happens if you leave the Preview Text blank?
If you leave Preview Text blank, it will default to the recipient's email client settings. This means your recipient's email client may display the first few characters of text found in the body of the email in place of the custom Preview Text.
If you included the [View in Web Browser](https://help.kajabi.com/../../marketing/email-campaigns/how-to-hide-the-view-in-web-browser-link) section in your Email Campaign and left the Preview Text blank, that link text may appear as the preview in some email clients.
### Is Preview Text available with the Classic Editor?
Preview Text is only available with the [Visual Editor](../../marketing/email-campaigns/email-visual-editor-templates) accessible in Email Broadcasts and Sequences. It is not available with the [Classic Editor](../../marketing/email-campaigns/create-an-email-broadcast#h_75d4c608-8b44-47f2-988a-7893cb9a17a5).
## Optimize Preview Text
### Second Subject Line
Think of Preview Text as a second chance to earn the open — use it to add context the Subject Line couldn't fit:
* Add specifics the Subject Line left out
* Tell recipients exactly what's inside
* Set clear expectations about the email's content
### Keywords
Keep your most important words at the start of your Preview Text. Many email clients cut it short, and the cutoff point varies. At the same time, write enough text to fill the full available space so no client displays an awkward gap or pulls in unintended content.
### Get creative
Don't repeat your Subject Line. Use the extra space to give recipients another reason to open.
* **Personalize it:** Use liquid objects to pull in contact data and tailor the Preview Text for each recipient.
* **Summarize the content:** Give recipients a quick sense of what they will find inside the email.
* **Reference your CTA:** Call out any important actions you want recipients to take.
* **Be honest:** Your Subject Line and Preview Text should work together to set accurate expectations. Never mislead recipients into opening an email.
* **Tease your content:** Highlight a detail or two that encourages recipients to keep scrolling once they open.
# Hide the view in web browser link
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-hide-the-view-in-web-browser-link
Hide the link that lets recipients open your email in a separate browser window.
The **View in Web Browser** link is in the header of an email and lets recipients open it in a separate browser window.
### Hide the View in Web Browser link
1. Click on the **Settings** tab in the Editor.
2. Select **View in Web Browser**.
3. In the Desktop Layout and Mobile layout sections, select the box that reads **Hide Section on Desktop** or **Mobile**.
To prevent the "View in Browser" text from appearing in your Preview Text, see [**customize Preview Text**](../../marketing/email-campaigns/how-to-edit-your-preview-text). Leaving Preview Text blank lets the recipient's email client decide what to display, which may pull in that link text by default.
**Tip:** The View in Web Browser link lets recipients open your email in a browser for the best viewing experience, and share it with others on social media or elsewhere.
# Link an image to a page in an Email Sequence
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-link-your-image-to-a-page-in-an-email-sequence
Make an image in an Email Sequence clickable to link to a page.
Adding links to an email is a simple way to navigate a contact to your Website. Make an **image in an Email Sequence** clickable to link to a page.
**Note:**
This article refers to settings in an Email Sequence. If you are creating an Email Broadcast, refer to the guide on [adding and customizing sections in Email Campaigns](/articles/marketing/email-campaigns/add-and-customize-sections-in-email-campaigns).
## Option 1. Link an image to a page using the Classic Editor
When you create an Email Sequence, you will have the option on the Template selection page to click a button to use the Classic Editor. Follow these steps if you are using the Classic Editor to create your Email Sequence:
1. Open the **Marketing** tab from the Dashboard.
2. Click **Email Campaigns**.
3. Select an existing Email Sequence or create a [new one](../../marketing/email-campaigns/create-an-email-sequence).
4. Click the **title** of the Email you wish to edit or add a new email to your sequence.
5. In the Body of your email, click the **Upload Image** icon from the toolbar.
6. Upload an image into the file picker.
7. Select the image with your cursor, then click the **Insert/Edit Link** icon in the toolbar.
8. Add your desired URL and click **OK**.
9. Click **Save**:
## Option 2. Link an image to a page using the Visual Editor
If you choose not to select the Classic Editor when creating an Email Sequence you will default to the Visual Editor. Follow these steps if you are using the Visual Editor to create your Email Sequence:
1. Open the **Marketing** tab from the Dashboard.
2. Click **Email Campaigns**.
3. Select an existing Email Sequence or create a [new one](../../marketing/email-campaigns/create-an-email-sequence).
4. Click the title of the Email you wish to edit or add a new email to your sequence.
5. Click **Launch Email Editor** above the body of your Email to open the Visual Editor.
6. In the left sidebar of the Editor, click **Add section**.
7. Click **Image**. It generates at the bottom of the email.
8. Then, click **Add** to open its options.
9. Click **Select Image**, choose your image file, and **Save**.
10. Navigate to **Image Action** in the left sidebar and select **Go to a URL**.
11. Add your desired URL and click **Save**:
**Tip:**
If you want to link to a page hosted on Kajabi, you can alternately select the Image Action of Go to a Landing Page, Go to a Sales Page, or Go to a Checkout Page and select your page from the dropdown menu instead of copying and pasting the URL.
# Manage and edit existing Email Campaigns
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-manage-and-edit-existing-email-campaigns
Manage, edit, and view reports of existing Email Campaigns.
Manage, edit, and view reports of your existing **Email Campaigns**.
## Edit
### Edit an Email Sequence
1. Open the **Marketing** tab from your Dashboard.
2. Click **Email Campaigns**.
3. Select the **Email Sequence** you want to edit:
[Learn more about the settings you can update in your Email Sequence emails.](../../marketing/email-campaigns/create-an-email-sequence#h_7c527d7e-4be6-46e7-9b74-78ade9c5d094)
[Learn to convert your Email Sequence emails from the Classic Editor to the Visual Editor.](../../marketing/email-campaigns/how-to-convert-email-sequence-emails-from-classic-to-the-new-visual-editor)
**Note:**
Emails cannot be sent retroactively. For example, if you add an email to your sequence to be sent on Day 6 of the sequence, but most of your subscribers are on Day 8 of the sequence, those subscribers will not receive the added email.
### Edit an Email Broadcast
1. Open the **Marketing** tab from your Dashboard.
2. Click **Email Campaigns**.
3. If you have scheduled your Email Broadcast, first unschedule it by hovering over the Email Broadcast and then clicking **Unschedule**.
4. Select the **Email Broadcast** you want to edit:
[Learn more about creating and editing your Email Broadcast.](../../marketing/email-campaigns/create-an-email-broadcast)
## Preview
### Preview an Email Broadcast scheduled for a future time
1. From the Email Campaigns page, locate the Email Broadcast you would like to preview.
2. Click the `...` menu icon to the far right of your Email title.
3. Select **View**:
### Preview an email within an Email Sequence
1. From the Email Campaigns page, click on the Email Sequence you would like to preview.
2. Click on the title of the email you would like to preview within the chosen Email Sequence.
3. In the top menu, click **Preview In Browser**:
**Tip:**
To send a test email to your admin email address, click into the email you wish to test and open the email editor. In the top menu, click **Send Test Email**.
## Duplicate
### Duplicate an existing Email Campaign
1. From the Email Campaigns page, locate the Email Broadcast or Sequence you'd like to duplicate.
2. Click the `...` menu icon to the far right of your Email title.
3. Select **Duplicate**:
**Tip:**
Duplicate a single email within your Email Sequence by copying and pasting the original email body copy into a new email within your Email Sequence.
## Delete
**Important:**
Deleting an Email Campaign cannot be undone.
### Delete an Email Campaign
1. From the Email Campaigns page, locate the Email Broadcast or Sequence you'd like to delete.
2. Click the `...` menu icon to the far right of your Email title.
3. Select **Delete**.
4. Confirm the removal of the Email Sequence or Email Broadcast by selecting **Delete** again:
### Delete a scheduled, unsent Email Broadcast
In order to delete a scheduled, unsent Email Broadcast you must unschedule it first before deleting it:
1. From the Email Campaigns page, locate the Email Broadcast you'd like to delete.
2. Click the `...` menu icon to the far right of your Email title.
3. Select **Unschedule**.
4. Confirm the removal of the Email Sequence or Email Broadcast by selecting **Unschedule** again.
5. Go back to the `...` menu and select **Delete**.
6. Confirm the removal of the Email Sequence or Email Broadcast by selecting **Delete** again:
## View reports
### View an Email Campaign Report
1. From the Email Campaigns page, locate the Email Broadcast or Sequence you'd like to view.
2. Click the `...` menu icon to the far right of your Email title.
3. Select **Report**:
# Optimize images in Email Campaigns
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-optimize-images-in-your-email-campaigns
Optimize images in an Email Campaign to enhance the recipient email experience across devices.
The **Email Visual Editor** is designed to build responsive email content across both Desktop and Mobile devices. With highly-customizable visual editing, optimizing your images enhances the recipient email experience across devices.
**Tip:**
When building your Email Campaign, we recommend changing your view with the triangle in the bottom right corner to ensure optimal email viewing for your recipients on Desktop and Mobile devices.
## View on different devices
### Mobile
The Email Visual Editor uploads your images to be responsive when viewed on different devices. This means that when your recipients view your Email Campaign on a Mobile device, your images will be displayed in full width. However, you may wish to adjust the sizing of your image when viewed on a Mobile device according to your design vision.
To customize the sizing of your image when viewed on a Mobile device:
1. Navigate to the top toolbar and click the **Mobile** icon.
2. Locate the Image section you wish to customize and click **Edit**.
3. In the sidebar, click **Mobile Layout**.
4. Configure your **Padding Mobile** to stretch or shrink your image when viewed on a Mobile device.
5. Click **Save** to keep your changes:
**Note:**
The Logo Image is the only image that will not change to full width when your email is viewed on Mobile.
### Desktop
The Email Visual Editor empowers you to control not only the Mobile view, but the Desktop view as well. By default, your preview will be set to view on Desktop, but we recommend switching between the views while editing to ensure the best results for your recipients on any device.
To customize the sizing of your image when viewed on a Desktop device:
1. Navigate to the top toolbar and click the **Desktop** icon.
2. Locate the Image Section you wish to customize and click **Edit**.
3. In the sidebar, click **Desktop Layout**.
4. Configure your **Padding Desktop** to stretch or shrink your image when viewed on a Desktop device.
5. Click **Save** to keep your changes:
## Optimize for different email clients
Email clients vary when it comes to displaying emails.
This can mean that different email clients will display your email up to a certain size.
Most commonly, when an email is larger than the email client supports, it will include a button at the bottom of the email allowing the recipient to "View Full Email" when clicked.
To ensure that your entire email is displayed without this button, we recommend keeping the size of your email to a minimum.
One method of minimizing your email size is by compressing your images.
### Image size
Compressing your images (i.e. reducing the file size while maintaining the image quality) is always the best practice when it comes to uploading images to your site and emails.
However, we have built into the Email Visual Editor a feature to automatically resize your images when uploaded into your Email Campaigns.
When uploading your image into the file picker of an Image Section, the image will compress down to, at most, 1280px wide while keeping the original aspect ratio (width vs. height) of the image:
Although the Email Visual Editor makes it simpler to optimize your email for varying email clients, we always recommend compressing your images.
### Compress images
Compressing your image sizes can greatly enhance user experience for both your emails and your pages. We recommend utilizing free image compression tools like [ImageOptim](https://imageoptim.com/howto) or [imageresizer.com](https://imageresizer.com/compress-images):
Image compression apps are also available for both Mac and Windows devices. We recommend finding an image compressor that works best for you and utilizing it to optimize the images for your site and your emails.
# Optimize font size in Email Campaigns
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-optimize-your-font-size-in-email-campaigns
Configure font sizes in an Email Campaign across desktop and mobile devices for the best reading experience.
Customizing your **font size** can be accomplished within the Text Box field. However, we recommend utilizing the Heading sizes to adjust your font size and have more control over the font size across desktop and mobile devices.
## Optimize font size
Adjust your font size to optimize the appearance of your email content across devices.
### Change the heading size of the font
1. Hover over the Text Section you wish to customize and click **Edit**.
2. Navigate to the sidebar and highlight the text you want to edit.
3. Click the **Header** dropdown menu.
4. Select the Header size you wish to use.
5. Click **Save** to keep your changes:
### Configure the font size for the chosen heading size for both desktop and mobile
1. Navigate **back** to the main sidebar editor.
2. Click **Settings** in the top menu:
## Change the font size for desktop
### Desktop font size
1. Scroll down to the Desktop Font Sizes Section.
2. Locate the Heading size you selected (for example, h6).
3. Click the dropdown menu and select the pixel size for the Heading font size when viewed on a desktop device.
4. Click **Save** to apply and keep your changes.
5. Refer to your preview to see your font size as it would appear on a desktop device:
## Change the font size for mobile
### Mobile font size
1. Adjust your view to mobile by clicking the **Mobile** icon found in the top toolbar.
2. Navigate to the Mobile Font Sizes Section.
3. Locate the Heading size you selected (for example, h6).
4. Click the dropdown menu and select the pixel size for the Heading font size when viewed on a mobile device.
5. Click **Save** to apply and keep your changes.
6. Refer to your preview to see your font size as it would appear on a mobile device:
## Preview font size on different devices
1. Navigate to the top toolbar to select a device view.
2. Select **MOBILE** to see your font size as it would appear on a mobile device.
3. Select **DESKTOP** to see your font size as it would appear on a desktop device.
4. Once you have configured your font according to your email design vision on both mobile and desktop devices, click **Save** to keep your changes:
# Optimize the Video section in Email Campaigns
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-optimize-your-video-section-in-email-campaigns
Use the Video Section to create an image that links to a video in an email.
Adding a **Video Section** in an Email Campaign is a great way to link to a video in order to implement a fluid transition from email to landing page for your contacts.
## Video section best practices
The Email Visual Editor provides you with the tools to create content in your emails to engage your recipients.
The Video Section elevates the experience by providing a user-friendly feature for linking an image within your email to your video.
Optimizing your Video Section ensures that the image in your Email Campaign leading to a video is clearly defined as a clickable image, regardless of your recipient's email client.
Learn more about the list of [supported email clients](https://themes.kajabi.com/changelog/email-themes/encore#supported-email-clients).
## Edit the video section for best results across email clients
To ensure the best results across email clients:
1. Use image editing tools like [canva.com](https://www.canva.com/) to add a Play button symbol to your image:
2. In the Video Section of your Email Visual Editor, upload your edited image. Read [Add and customize sections in Email Campaigns](/articles/marketing/email-campaigns/add-and-customize-sections-in-email-campaigns) for details:
3. Paste the link to your Video in the Video URL text box.
4. Click **Save**.
**Tip:**
Upload your video to a page and link your Video URL to your page. Read [Copy a Page Link](../../website/pages/how-to-copy-your-page-link) for details.
# Organize content with folders
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-organize-your-content-with-folders
Organize Email Campaigns with Kajabi Folders to improve your systems and manage content efficiently.
Organize your Email Campaigns with **Kajabi Folders**. With custom folders you can create, manage, and organize your emails to improve your systems and manage your content efficiently.
## Kajabi Folders
Organize your email content into tidy folders with Kajabi Folders. With these custom folders, you can group your Email Campaigns tailored to your business needs to help you stay organized.
## Create a folder
### Create a Kajabi Folder for Email Campaigns
1. Open the **Marketing** tab from your Dashboard.
2. Click **Email Campaigns**.
3. Open the **Folders** tab from the Email Campaigns top menu:
4. Click **New folder**.
If you have created a folder previously, you can select the **New folder** button from the top-right:
5. Enter your folder title.
6. Click **Save** to create your folder:
## Manage folders
### Add to folders
To add emails to a folder:
1. Navigate to the **All emails** tab within Email Campaigns:
2. Select the emails you want to add to your folder.
3. Click **Add to folder**:
4. Select your desired folder and click **Save**:
### Remove from folders
To remove emails from a folder:
1. Navigate to the **Folders** tab within Email Campaigns:
2. Select the folder containing the emails you want to remove.
3. Select the emails you want to remove from your folder.
4. Click **Remove from folder**.
5. Complete the prompt to confirm by clicking **Remove**:
**Note:**
Removing emails from a folder will not permanently delete your email campaigns. The emails will still be accessible through the "All emails" tab.
### Rename folders
To rename folders:
1. Navigate to the **Folders** tab within Email Campaigns.
2. Locate the folder you wish to rename.
3. Select the `…` menu.
4. Click **Rename** folder.
5. Enter your new folder title.
6. Click **Save** to keep and apply:
### Delete folders
To permanently remove folders:
1. Navigate to the **Folders** tab within Email Campaigns.
2. Locate the folder you wish to delete.
3. Select the `…` menu.
4. Click **Delete folder**.
5. Click **Delete** to confirm removal of the folder permanently:
**Note:**
Permanently removing folders will not delete your email campaigns contained in the folder. The emails will still be accessible through the "All emails" tab.
# Personalize Email Campaigns
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-personalize-your-email-campaigns
Connect with email recipients by personalizing Email Campaigns with liquid objects.
Connect with your email recipients by personalizing your **Email Campaigns**. Address your recipients by name or any custom field by pulling information from their form submissions.
## Personalize marketing emails with liquid objects
Use Kajabi's supported liquid objects to personalize your email campaigns to each individual recipient based on the data stored in their [Contact Profile](../../contacts/manage-your-contacts/how-to-manage-your-contacts-profiles).
### Personalize an email campaign
1. Open the **Marketing** tab from your Dashboard.
2. Select **Email Campaigns**.
3. Select an existing email campaign or create a one.
(In this example we will edit an Email Sequence).
4. Navigate to the body of your email and select **Edit content** or click **Launch Email Editor**.
5. Open your Text Block with the [Email Visual Editor](../../marketing/email-campaigns/email-visual-editor-overview) or click into your text editor with the classic editor.
6. Click the **Personalize** dropdown menu in the toolbar.
7. Select from the supported liquid objects (e.g., First Name).
To create custom liquid objects, follow the guide: [**Create and use Liquid Objects in Email Marketing**](../../marketing/email-campaigns/how-to-create-and-use-liquid-objects-in-email-marketing).
8. Click **Save** to keep and apply your changes:
[Learn how to send an email to a single contact](../../marketing/email-campaigns/how-to-send-an-email-to-a-single-contact).
# Remove a subscriber from an Email Sequence
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-remove-a-subscriber-from-an-email-sequence
Manually remove a subscriber from an Email Sequence to maintain a healthy mailing list.
Having a healthy mailing list is essential to your success in Email Marketing and one of the easiest ways to guarantee a clean list is by unsubscribing inactive **subscribers**.
## Remove a subscriber from an email sequence
### Remove a subscriber
1. Open the **Marketing** tab from the Dashboard.
2. Select **Email Campaigns**.
3. Choose an existing **Email Sequence**.
4. Click **Subscribers**.
5. Find the contact you would like to remove then click **Unsubscribe**.
6. Confirm the Unsubscribe:
**Note:**
Unsubscribing a contact from an Email Sequence will remove the contact from the specific email sequence, not your general mailing list. If your contact remains subscribed in your Contacts tab, you will still have the ability to send Email Campaigns to their email address.
# Remove text formatting with the Clear Formatting button
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-remove-text-formatting-with-the-clear-formatting-button
Remove unwanted text formatting with a single click using the Clear Formatting button.
Remove unwanted **text formatting** in your Email or Web Page with a single click using the Clear Formatting button.
## What is text formatting?
Text formatting controls the visual appearance of your text, such as the color of the text, whether it appears as italicized or bolded, and more.
Behind the scenes, formatting is controlled by HTML and CSS code. But unless you're updating your text source code in the Code Editor, you may not know which types of formatting have been applied:
This can be especially problematic when you copy and paste text from another source like a Google or Word document, or an external website or email platform. When you copy the text, you might also copy the formatting code. This can cause your text to render differently in the pasted location.
## Remove formatting from text
The Clear Formatting button in the Kajabi Text Editor enables you to remove unwanted formatting from your text with a single click:
### Web Page text
**To clear the formatting from Web Page text:**
1. Select the **Website** tab from the Dashboard.
2. Select either **Website Pages** or **Landing Pages**.
3. Open the Page where you want to unformat your text.
4. Navigate to your Text Block and click **Edit**.
5. In the sidebar Text Editor, select the text you want to unformat.
6. Click the **Clear Formatting** button.
7. Click **Save** to apply your changes:
### Email text
**To clear the formatting from Email text:**
1. Select the **Website** tab from the Dashboard.
2. Select the **Marketing** tab.
3. Open the Email where you want to unformat your text.
4. Navigate to your Email Content and click **Edit content**.
5. Navigate to your Text Section and click **Edit**.
6. In the sidebar Text Body Editor, select the text you want to unformat.
7. Click the **Clear Formatting** button.
8. Click **Save** to apply your changes:
**Note:**
The Clear Formatting button is only available in the [Email Visual Editor](../../marketing/email-campaigns/email-visual-editor-overview). You will not see this feature if you create your Email using the Classic Editor.
# Remove a logo from Email Campaigns
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-remove-your-logo-from-your-email-campaigns
Remove the Company Logo from the top of Email Campaigns.
Remove the **Company Logo** from the top of your Email Campaigns when it is no longer needed or you want a cleaner email design.
## Remove the logo from email campaigns
1. Open the **Settings** tab from your Dashboard.
2. Select **Marketing Settings**.
3. Scroll down to the Logo section and click **Remove**.
4. Click **Save** to keep your changes:
# Resend Email Broadcasts to unopened contacts
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-resend-email-broadcasts-to-unopened-contacts
Resend emails to contacts who have not opened an email broadcast to boost engagement.
Encourage your email recipients to open your **Email Broadcast** by resending emails to contacts who have not opened your latest email broadcast.
## Resend emails
Even the best emails sometimes go unread. That's why Kajabi gives you the power to resend emails to those who didn't open them the first time.
Resending your broadcasts to non-openers can give your audience another chance to see your information, boost audience engagement, and let you optimize your message by updating the subject line, preview text, or body copy.
**Note:**
To protect your email sender reputation, resending an email is not available for email broadcasts with less than a 20% open rate and is only available to established senders. Once Kajabi has identified your site as an established sender, the feature will be available on your account.
## Resend an email broadcast
1. Navigate to the **Marketing** tab from your Dashboard.
2. Open **Email Campaigns**.
3. Click the `…` icon to open **more options for an email broadcast that has been sent**. This option will be available 48 hours after the original email was sent, up until three months after the original email was sent.
4. Select **Resend to unopened**:
5. Follow the prompts to edit your email broadcast.
**Note:**
You do not have to edit your email. Continue through the prompts to keep your original email copy/designs.
6. Schedule your resend:
* Send right now
* Schedule for later
Your Email Broadcast will then be resent to the contacts that did not originally open the broadcast at your desired send time.
## FAQs
### Can I resend to recipients who opened the original email but did not click?
No. However, you can manually create a segment for recipients who did not click and send the email to your created segment.
### What types of emails can be resent?
Email Broadcasts that have been sent.
### What types of emails cannot be resent?
Anything other than Email Broadcasts that have been sent.
### Can I save the resent email as a draft?
No, resent emails cannot be saved as a draft. However, if you leave the page, your email will be in a "draft" state and you can resume from where you left off.
### Can I resend to recipients who did not open the resent email?
No, you can only resend an Email Broadcast once after the original email has been sent.
# Send an email to a single contact
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-send-an-email-to-a-single-contact
Send an Email Broadcast to a single contact using a custom segment filter.
Send an **Email Broadcast** to a single contact by creating a custom segment filter with their email address.
## Email Broadcasts
To send an email to a single contact, you will need to use Kajabi's Email Broadcasts.
Email Broadcasts are a type of marketing email on Kajabi commonly used as Email Blasts, Newsletters, or individually crafted emails sent to a specified audience.
Build and design your Email Broadcasts with the [Email Visual Editor](../../marketing/email-campaigns/email-visual-editor-overview) or the Classic Editor to reach your audience and grow your brand.
[Learn to create an Email Broadcast](../../marketing/email-campaigns/create-an-email-broadcast#h_75d4c608-8b44-47f2-988a-7893cb9a17a5).
**Tip:**
To send an email to a contact, that contact must be subscribed to your marketing emails. If they are not subscribed you will not be able to send that contact an email. Learn more about [subscription status.](../../contacts/manage-your-contacts/what-does-the-subscription-status-mean)
## Send an Email Broadcast to a single contact
1. Open the **Profile** of the contact you wish to email in your Contacts tab.
2. Copy their email address from the email field:
3. Open the **Email Broadcast** that you wish to send to that contact (if it has already been created) or create an Email Broadcast.
4. Click **Select Recipients**:
5. On the **Select Recipients** screen, under "Who will receive this broadcast?" open the **dropdown menu**.
6. Click **Custom Segment**.
7. Open the **Select Filter** dropdown menu.
8. Select **Email Contains** under "Default Field Filters".
9. Paste your chosen contact's email address in the empty field box. Your custom filter should look similar to the image below:
10. After adding your selected contact, click **Apply**:
# Set up an Automation using a link in an email
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-set-up-an-automation-using-a-link-in-an-email
Initiate an action after a link is clicked in an Email Campaign using Automations.
Initiate an action after a link is clicked in an Email Campaign to add a Tag, send an email with a Coupon inside, or grant a free Offer. The possibilities are broad when using **Automations**.
## Set up an Automation for an Email Broadcast
The steps below use the original Automations experience, where you build the Automation in a panel at the bottom of the Editor. [Learn which Automations experience you have](/articles/marketing/automations/automations-overview#which-automations-experience-you-have)
1. Open the **Marketing** tab from the Dashboard.
2. Click **Email Campaigns**.
3. Select the **Email Broadcast** you wish to automate or create one.
4. Navigate to the bottom of the Email Editor and click **+ Add Automation**.
5. In the **When** dropdown menu, select **Link in email broadcast is clicked**.
6. Select the link from the **Any link in the email** dropdown.
7. In the **Then** dropdown menu, select the action you want to occur after the link has been clicked by the reader of the email.
8. Click **Save** to keep your changes:
## Set up an Automation for an Email Sequence
1. Open the **Marketing** tab from the Dashboard.
2. Click **Email Campaigns**.
3. Select the **Email Sequence** you wish to automate or create one.
4. Locate the Email in your sequence you wish to customize and click **+ Add Automation**.
5. In the **When** dropdown menu, select **Email sequence email is clicked**.
6. Select the link from the **Any link in the email** dropdown.
7. In the **Then** dropdown menu, select the action you want to occur after the link has been clicked by the reader of the email.
8. Click **Save** to keep your changes:
**Tip:** Each Automation tracks only one selected link. To apply different tags based on which link a reader clicks, create a separate Automation for each link, and select a different link to its own tag each time. If you have access to Advanced Automations, you can also create these Automations from the Automations tab under Marketing.
# Subscribe contacts to an Email Sequence after completing a sequence
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-subscribe-contacts-to-a-new-email-sequence-after-completing-a-sequence
Automatically subscribe contacts to another Email Sequence when they complete one.
**Email Sequences** are an effective approach to marketing a product or offer. Subscribing a contact to another Email Sequence after completing one keeps customers engaged and informed on what's next with your business.
## Subscribe to an Email Sequence after completing another
1. Open the **Marketing** tab from the Dashboard.
2. Click the **Sequence** tab in Email Campaigns.
3. Edit an existing **Email Sequence** or [create one](/articles/marketing/email-campaigns/create-an-email-sequence).
4. Click **Settings**.
5. Scroll down to **Automations**.
6. Create an Automation that will subscribe to an Email Sequence when the **Email Sequence is completed**.
7. Select the Email Sequence your contacts will be subscribed to after completing the sequence.
# Subscribe contacts to an Email Sequence
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-subscribe-contacts-to-an-email-sequence
Subscribe contacts to Email Sequences manually or with the power of Automations.
Contacts can be subscribed to your **Email Sequence** with the power of Automations or by manually adding contacts to your sequence.
An Email Sequence is an email or a sequence of multiple emails that can be set to send automatically to subscribers after an action has been completed, like filling out a form, purchasing an offer, completing a product, etc. [Learn more about email campaigns](/articles/marketing/email-campaigns/email-campaigns-overview).
With [Automations](../automations/automations-overview), your contacts can subscribe to your Email Sequences by performing an action (e.g., form submission, offer purchase, event registration).
Setting up a subscribe trigger for your Email Sequence is the most common way to subscribe to an Email Sequence on Kajabi.
However, as an admin of your site, you may wish to manually subscribe existing contacts from your contacts tab to your Email Sequence.
This can be accomplished by performing a bulk action from your contacts tab to easily subscribe multiple contacts to your Email Sequence.
[Learn to create an Email Sequence.](/articles/marketing/email-campaigns/create-an-email-sequence)
**Note:** Unsubscribing a contact from an Email Sequence will remove the contact from the specific Email Sequence, not your general mailing list. If your contact remains subscribed in your Contacts tab, you will still have the ability to send email campaigns to their email address. If your contact resubscribes to the Email Sequence, they will not receive any emails from the sequence.
## Automated subscribe
On Kajabi, Automations can be used to translate an action into a subscription to your email campaign.
In order to begin sending emails from your Email Sequence, an automation is required to include an **Add Trigger** that will subscribe contacts to your Email Sequence.
[Learn about Automations.](../automations/automations-overview)
The subscribe trigger is an action specified to trigger a specific response.
For Email Sequences, an add trigger is used to subscribe a contact to the Email Sequence after the specified action occurs.
For example, you can set your subscribe trigger to subscribe contacts to your Email Sequence when an "Offer is purchased".
### Create an add trigger
1. Open the Email Sequence editor by selecting the Email Sequence you wish to edit.
2. Select **Subscribe Trigger**.
3. Click **Add Trigger** to create your Email Sequence subscribe trigger.
In this example, when a contact purchases the specified offer they will be subscribed to the Email Sequence:
Similarly, with Automations, you can unsubscribe a contact from an Email Sequence after a specified action.
Use the **Unsubscribe Trigger** to automatically unsubscribe a contact from the Email Sequence after your specified action has occurred.
For example, you can select "if a Contact has been inactive for 30 days" to automatically unsubscribe inactive contacts from your sequence.
## Manual subscribe
Manually subscribe existing contacts to your Email Sequence with bulk actions in your Contacts tab.
### Manually subscribe contacts to a specific Email Sequence
1. Open the **Contacts** tab from the Dashboard.
2. Select the names of the contacts you wish to subscribe.
3. Click **Bulk Actions**.
4. Select **Subscribe to Email Sequence**.
5. Select the Email Sequence you wish to subscribe your contacts to when prompted.
6. Click **Submit**.
**Note:** If you have selected contacts that have not subscribed to receive your [marketing emails](/articles/marketing/email-campaigns/what-are-marketing-and-transactional-emails), they cannot be manually subscribed to your Email Sequence. Use [Automations](#automated-subscribe) or a [Form](../forms/create-and-build-your-form) to allow your contacts to subscribe to your marketing emails.
# Test send emails
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-to-test-send-your-emails
Send test emails to yourself to review and edit email campaigns before sending them to recipients.
**Email campaigns** are crucial for communicating with your contacts. Sending test emails to yourself allows you to review and edit email campaigns before sending them to your list.
## Preview email
Previewing your email campaign can provide you with a quick sneak peek as to the look and feel of your campaign.
However, we highly recommend testing your email campaign to get the most accurate feel for the delivery and appearance of your emails when your contacts subscribe to your list.
**Note:** Sending a preview email from your admin account may not include all personalized content such as event names, dates, times, and locations. Various links may also be inactive, including the View in Web Browser link.
**Tip:** For the most accurate test of your email's content and links, skip to [Test Email](#test-email) instead.
1. From the Dashboard, click **Marketing.**
2. Click **Email Campaigns.**
3. Select your **Email Broadcast** or **Email Sequence** you want to preview.
Learn more about [email broadcasts and email sequences](/articles/marketing/email-campaigns/email-campaigns-overview).
### Email Broadcast
To edit and preview an Email Broadcast:
1. Hover over the email preview design and click **Edit content** to use the **Visual Editor.**
2. After customizing your email broadcast, you can **send a test email** to preview the broadcast from your customer's perspective.
3. To send a test, click **Send Test Email**.
4. Confirm the email address you would like your test email to be sent to or enter your desired test email address.
5. Click **Send Preview**.
### Email Sequence
To edit and preview an Email Sequence:
1. Click on the email title of the sequence to preview and edit.
2. Hover over the email preview design and click **Edit content** to use the **Visual Editor.**
3. After customizing your email broadcast, you can **send a test email** to preview the broadcast from your customer's perspective.
4. To send a test, click **Send Test Email**.
5. Confirm the email address you would like your test email to be sent to or enter your desired test email address.
6. Click **Send Preview**.
## Test email from a form
If your email recipients are subscribed to your email campaigns through different methods (such as automations you set up with the completion of courses, offers purchased, and more) simply follow the steps your visitors will experience leading up to receiving your emails.
For this example, test your email for those submitting a form to subscribe to your list:
1. From the Dashboard, click **Website.**
2. Click the **Page** containing your opt-in form to subscribe your visitors to your email campaign.
3. Click the **more actions (...)** icon to the right of your page title.
4. Select **Copy URL** to copy the link for the page containing your opt-in form.
5. Open an incognito window in Chrome or a Private window in Safari or clear your cache and cookies.
6. Paste your page link into the address bar.
7. Enter a different email address to complete your opt-in form.
8. Navigate to your email inbox and take a look at your tested email.
**Tip:** To test without creating a new email account, add a "+" symbol to your existing email address (for example, [johndoe@gmail.com](mailto:johndoe@gmail.com) becomes [johndoe+test@gmail.com](mailto:johndoe+test@gmail.com)). This sends the test to your normal inbox. If you don't see the test email, make sure the address you used is subscribed to your email list. If you are using Double Opt-In, confirm the subscription by clicking the link in the confirmation email first.
## Troubleshoot email sequences not sending
If your test email or sequence is not delivering as expected, check the following:
1. **Marketing Settings are incomplete.** Your From Name, From Email, and Marketing Contact Address must be filled out in your Marketing Settings. If the Marketing Contact Address is missing, your emails will not include a footer address as required by anti-spam laws, which can prevent delivery. From the Dashboard, click **Settings**, then click **Marketing Settings** to review and complete these fields. [Learn how to customize your Marketing Settings](https://help.kajabi.com/articles/marketing/email-campaigns/how-to-customize-your-marketing-settings).
2. **Automation or email step is in Draft status.** If you are using the visual Automation builder, both the Automation itself and each individual Send an email step have their own Draft/Published status. A Draft Automation does not run at all. A Draft email step is silently skipped — contacts pass through the step but receive no email. Check your Automation and confirm both the Automation and every email step inside it show a Published status.
3. **Contact is not subscribed to marketing emails.** Email Sequences only send to contacts with an active subscription status. If a contact is unsubscribed, opted out, or not confirmed, they will not receive sequence emails. Check the contact's subscription status in the **Contacts** tab.[ Learn more about subscription statuses.](https://help.kajabi.com/articles/contacts/manage-your-contacts/contacts-tab-overview)
4. **No automation is triggering the sequence.** Contacts must be subscribed to the sequence through a Form submission, Automation, or manual action. If no trigger is set up, contacts will never enter the sequence. [Learn how to set up automations](https://help.kajabi.com/articles/marketing/automations/understanding-automation-components).
5. **Email was added to the sequence retroactively.** If you add a new email to an active sequence, contacts who have already passed that send day will not receive it. Only new subscribers entering the sequence after the email was added will receive it. If a contact already missed emails this way, the only fix is to remove and re-enroll the contact in the sequence, or duplicate the sequence and create a new enrollment trigger for it.
6. **First email set to Day 1 instead of Day 0.** A sequence email set to Day 0 sends immediately when a contact enters the sequence. Day 1 sends 24 hours after entry. If you want the first email to send immediately on subscription, set its Day value to 0.
7. **Day 0 emails only go to new subscribers.** If you set the first email in a sequence to Day 0, it sends immediately — but only to contacts who subscribe *after* that email is created and active. Contacts who were already enrolled in the sequence before you added the Day 0 email will not receive it retroactively. To send to existing subscribers, send it as a broadcast or manually trigger it via an automation.
8. **Double opt-in confirmation not completed.** If your form uses Double Opt-In, the contact must click the confirmation link in their email before they are subscribed and can receive sequence emails.[ Learn more about subscription statuses](https://help.kajabi.com/articles/contacts/manage-your-contacts/contacts-tab-overview).
9. **Emails are landing in spam.** Your emails may be delivering but going to the recipient's spam or promotions folder. Improve your sender reputation by connecting a custom email domain. [Learn how to improve email deliverability.](https://help.kajabi.com/articles/marketing/email-campaigns/demystifying-email-deliverability)
10. **Contact is already subscribed to this sequence.** A contact can hold only one subscription to a given sequence at a time. If a contact is already actively subscribed, triggering the enrollment again does not restart the sequence or resend earlier emails. To send the sequence to that contact again, unsubscribe them from it first, then resubscribe them — the sequence restarts from Day 0. [Learn more about resubscribing contacts.](/articles/contacts/manage-your-contacts/can-i-resubscribe-a-contact-if-i-accidentally-unsubscribe-them)
# Understand Email Sequence change impacts
Source: https://help.kajabi.com/articles/marketing/email-campaigns/how-will-changes-to-my-email-sequence-impact-my-subscribers
Learn how editing an active Email Sequence affects existing and future subscribers differently.
Changes to an existing, active **Email Sequence** (one with current subscribers) impact subscribers differently depending on when they subscribed.
**Tip:** Set up and finalize your Email Sequence before adding subscribers to ensure that the emails in your sequence are sent to all your sequence subscribers exactly as you intend.
## Existing subscribers
Existing subscribers already subscribed to your Email Sequence will only receive changes to **existing emails** in your sequence if they have not yet reached the sending day of the updated email.
**Important:** Emails added to a sequence cannot be sent retroactively to existing subscribers.
For example, if you created an Email Sequence with three emails sent on days 3, 5, and 7, and you later decided to add an email to be sent on day 6 of the sequence, that email will only be sent to subscribers who have not yet passed day 6.
## Subscribers added after changes
Subscribers added after changes to your Email Sequence will receive updates/changes to your Email Sequence moving forward:
* [Added email to the sequence](https://help.kajabi.com/hc/en-us/articles/360037477793)
* [Edited existing email](/articles/marketing/email-campaigns/create-an-email-sequence)
* [Updated email settings in the sequence](/articles/marketing/email-campaigns/how-to-edit-your-email-sequence-settings)
We recommend setting up your Email Sequence before adding subscribers to ensure that any changes you wish to make are finalized for all subscribers in your sequence.
# Convert classic Email Broadcasts to the Visual Editor
Source: https://help.kajabi.com/articles/marketing/email-campaigns/if-i-have-email-broadcasts-created-with-the-classic-email-editor-can-i-convert-them-to-the-new-visual-editor
Understand the limitations of converting Email Broadcasts between the classic and Visual editors.
Not at this time. Once an email is created with the classic or **Visual Editor**, that email format is uniquely linked to its respective editor and the formatting available within each.
We recommend sending existing, planned broadcasts in their current format and creating Email Broadcasts with the Visual Editor if you desire more styling and content options.
# Missing editor section types or features
Source: https://help.kajabi.com/articles/marketing/email-campaigns/im-not-seeing-some-of-the-new-editor-section-types-or-features-am-i-missing-something
Understand why some editor features may not appear when editing existing email campaigns.
The **visual email editor** is continuously enhanced with features and section types added on occasion.
When you edit an **existing** email campaign (or copy one), you will see the editor and its features as they existed at the time you created the email.
This is done to maintain backward compatibility. To use the latest feature set, create an email campaign. [Learn more](email-campaigns-overview#email-broadcast)
# Template text that cannot be changed
Source: https://help.kajabi.com/articles/marketing/email-campaigns/im-using-one-of-the-templates-but-i-cant-change-some-of-the-text-because-its-part-of-an-image-is-that-right
Understand why some template text appears as part of an image and how to work around it.
The **email visual editor** contains a lot of rich section types to make emails more aesthetic and attractive.
However, some highly graphical effects can only be achieved by making the text part of an image, which requires specialized tools.
The templates are not only a starting point but also serve as inspiration for your email design while giving you the flexibility and the freedom to truly make your emails your own.
For those cases, we recommend using tools like [canva.com](https://www.canva.com/) and bringing the results back into your email as images.
# Lightning Broadcast FAQs
Source: https://help.kajabi.com/articles/marketing/email-campaigns/lightning-broadcast-faqs
Get answers to common questions about Lightning Broadcast and faster email delivery.
**Lightning Broadcast** makes sending broadcasts significantly faster by bundling email messages into batches.
## How does Lightning Broadcast work?
Prior to Lightning Broadcast, emails would pass through our mail provider one message at a time, which gave us the opportunity to increase its efficiency.
Lightning Broadcast means we can "bundle" email broadcast messages into batches of 1,000.
So, instead of passing emails to our mail provider individually, we can pass them in big bundles.
For example, for a broadcast sent to 5107 recipients, instead of passing 5107 individual messages to our mail provider, Lightning Broadcast means that we pass just 6 bundles (5 \* 1,000 + 1 \* 7).
This results in significant efficiency gains.
What this means for you is that your email broadcasts are even better for lists of all sizes, from small to very large.
## Are all my emails delivered super fast now?
Since the volume of emails from broadcasts is the highest (sequences and other sources usually only generate "one-off" emails), the speed optimizations we've done are currently limited to email broadcasts.
## Does the faster delivery impact the open rate, categorization as spam, bounce rate, etc.?
Lightning Broadcasts change the way your emails are delivered to our mail provider. This means that your email performance metrics should not be impacted by Lightning Broadcasts.
# Manage Email marketing categories
Source: https://help.kajabi.com/articles/marketing/email-campaigns/manage-email-marketing-categories
Give contacts the choice to opt out of specific email types instead of unsubscribing from everything.
**Email marketing categories** is an optional feature that lets you organize Email Broadcasts and Sequences into five distinct types. Once enabled, instead of a single all-or-nothing unsubscribe, contacts can opt out of specific email types while staying subscribed to the ones they want to receive.
When you create an Email Broadcast or Sequence, you select one of the following categories. Only contacts subscribed to that category receive the email.
| Category | What it includes |
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| General Marketing | Sales, discounts, promotions, and general updates on products you may be interested in |
| Product Information | Announcements and updates about products you have access to |
| Event Information | Announcements and reminders about events, webinars, and live sessions. Event emails are always assigned to this category automatically |
| Responsive Marketing | Follow-up emails based on actions you've taken (such as signing up for a free resource or expressing interest in a product) |
| Notifications | Reminders, check-ins, and other updates |
These five categories are the only available types and cannot be customized or renamed. Every Email Broadcast and Sequence you send must be assigned to one of these categories. They are not examples, they are the actual groups your contacts use to manage their email preferences.
**Warning:** Enabling Email marketing categories applies to your whole account, not a single site. If you manage multiple sites, turning it on affects all of them at once, and there is no way to enable it for just one site. This change is also permanent and cannot be undone.
* All existing contacts subscribed to marketing emails will be automatically subscribed to all five categories.
* Existing scheduled Email Broadcasts and Sequences are assigned to the **General Marketing** category by default.
* Once an email has been sent, its category cannot be changed. If you manage multiple sites, you can switch between them before enabling to assign categories to your existing unsent emails on each site. This step only pre-categorizes those emails. The enable toggle itself always applies to every site on the account, not just the site you're currently viewing.
## Enable Email marketing categories
**Note:** If you created your account after this feature launched, **Email marketing categories** are already active — no action is needed.
Before enabling Email marketing categories, click **Assign categories to your existing emails** to re-categorize unsent Email Broadcasts, as well as currently running or unsent Email Sequences.
If you have multiple sites, you can switch between sites and apply your selections across all of them at once.
Any existing unsent emails left unchanged will default to **General Marketing.**
To enable Email marketing categories:
1. From the Dashboard, navigate to **Settings,** then click **Marketing settings**.
2. Locate the **Email marketing categories** section.
3. Review the description and click the **toggle** to enable.
## **Assign a category to an email**
### **Email Broadcasts**
1. From the Dashboard, navigate to **Marketing**, then click **Email Campaigns.**
2. Click **+ New Email Campaign** to create a new Email Broadcast or open an existing one.
3. On the **Select recipients** screen, locate the **What type of email marketing is this?** section.
4. Select a category. **General Marketing** is selected by default.
5. The subscriber count updates to reflect only contacts subscribed to that category.
**Note:** Once an Email Broadcast has been sent, its category is locked and cannot be changed.
### **Email Sequences**
1. From the Dashboard, navigate to **Marketing**, then click **Email Campaigns.**
2. Click **+ New Email Campaign** to create a new email sequence or open an existing one.
3. On the email sequence home page, locate the **What type of email marketing is this?** section. This section also appears on the **Subscribers** tab.
Select a category. **General Marketing** is selected by default.
**Note:** The category can only be set before any email in the Sequence has been sent. After the first send, the category is locked.
## **How contacts manage their preferences**
### **Email footer link**
Marketing emails will contain either an **Unsubscribe** or a **Manage your email preferences** link in email footers depending on the editor used. When a contact clicks it, they see a preference page where they can:
* Toggle individual categories on or off
* See which category the email they clicked from belongs to
* Unsubscribe from the individual Email Sequence
* Unsubscribe from all marketing emails at once using the master toggle
If a member returns to an email where they previously unsubscribed and clicks on the same link, they can modify their preferences again.
**Note:** Unsubscribe appears in emails that use the Visual Editor. Marketing emails that use the Classic Editor have a link that says Manage your email preferences.
## **Contact profile and Marketing status changes**
### Marketing status
With **Email marketing categories** enabled, a contact's marketing status can display as:
| Status | Meaning |
| --------------------- | -------------------------------------------------- |
| Subscribed | Subscribed to all five categories |
| Partially subscribed | Subscribed to some categories but not all |
| Not subscribed | Unsubscribed from all five categories individually |
| Manually unsubscribed | Unsubscribed by an Admin |
| Unsubscribed | Contact unsubscribed themselves |
| Never subscribed | Contact has never been subscribed |
### Contact profile detail
To view a contact's category subscription status:
1. From the Dashboard, click **Contacts**, then click **All Contacts.**
2. Click the contact's name to open their profile.
3. In the **Info** section, each of the five categories is listed with its individual subscription status and the date the contact initially subscribed to marketing updates.
## **Filter and segment by category**
### **Contact segments**
The **Email Marketing Subscribed** segment includes both fully and partially subscribed contacts.
### **Contact filters**
Filter by **Marketing Category Status** to see the contacts within a given category. The options per category are:
* **Subscribed:** Contacts currently subscribed or not subscribed to that category.
* **Opted out**: Contacts who opted out of that category within the selected time frame.
* **Can be subscribed:** Contacts who are eligible to be subscribed to that category.
## **Bulk actions for category unsubscribes**
1. From the Dashboard, click **Contacts**, then click **All Contacts.**
2. Select the contacts you want to update.
3. Open the **Bulk Actions** menu and locate the **Marketing Consents** section.
4. Select **Unsubscribe from \[category name]** for the desired category.
### **Upload contacts with category preferences**
When uploading contacts via CSV, the upload flow includes subscription options for each of the five categories in addition to the overall marketing email subscription.
If the **Subscribe to marketing emails** checkbox is unchecked, all five category checkboxes are automatically unchecked and disabled.
### **Add a single contact with category preferences**
When adding a single contact from the **Contacts** page, you can set their subscription status for each of the five categories individually.
## **FAQs**
### Can I enable Email marketing categories for just one of my sites?
No. Email marketing categories are enabled at the account level. Turning on the toggle affects every site on your account at the same time, and there is no way to enable it for a single site only.
### **Can I turn off Email marketing categories after enabling them?**
No. Enabling Email marketing categories is a one-way change. Reverting would require collapsing individual category preferences back into a single setting, which could result in contacts being unsubscribed from emails they still want to receive.
### **Do contacts choose categories when they subscribe?**
No. When a contact subscribes, they are automatically opted in to all five categories. Category-level preferences are managed through their email preferences.
### **Does this affect Newsletters?**
No. Newsletters have their own separate subscription management and are not part of email marketing categories.
### **Does this affect transactional emails?**
No. Transactional emails, such as receipts and app notifications, are not marketing emails and are not affected by this feature.
### **What happens when a contact subscribes to email marketing through an offer?**
When a contact subscribes to email marketing when purchasing an offer, they are automatically opted in to all five categories. There is no category-level section when going through an offer's checkout.
The contact can then update their email preferences in their Member settings page.
### Where should I categorize personal or relationship-building emails that aren't tied to a product or promotion?
Email marketing categories are built around marketing intent, so there is no dedicated category for purely personal updates or non-promotional check-ins with your audience. The closest fit is usually **Notifications**, since it covers general reminders and updates outside of sales or product content. If your personal update mentions or relates to a specific product you offer, **Product Information** may also apply.
If none of the five categories feel like an accurate fit for the kind of content you send, you can share feedback on the [Kajabi ideas portal](https://feedback.kajabi.com).
# Improve sender reputation
Source: https://help.kajabi.com/articles/marketing/email-campaigns/sender-reputation-guide
Build and maintain a strong email sender reputation for better deliverability.
A simple way to demonstrate **sender reputation** is to think of it like a credit score.
Just like the process of a car dealership checking your credit score before financing a vehicle, mailbox providers (i.e., Gmail, Hotmail, Yahoo, etc.) will review your sender reputation.
Furthermore, similar to how credit bureaus rate you on your credit history, email service providers (ESPs) rate you based on your list acquisition and maintenance practices, the content you send, and your recipient engagement. This rating is your sender reputation.
Having a good sender reputation will skyrocket both your **delivery** and **deliverability** rates.
**You may be asking yourself... what's the difference?**
**Delivery rate** counts the number of emails successfully delivered, divided by the number of emails sent.
**Deliverability rate** is the number of emails that successfully reach the inbox, divided by the number of emails sent.
The goal is to have the highest deliverability rate possible, giving you higher probabilities of your contacts opening and reading your mail.
## Mailing list hygiene
The leading cause of a low Click to Open Rate (CTOR) is an unclean, outdated mailing list.
Keeping your list clean and healthy will improve your sender reputation, and in return, increase your deliverability rate.
Here's how to make sure your mailing list is helping your reputation as a sender.
### Offer a double opt-in subscription
The number one rule of growing an organic contact list is using a double-opt-in form. Acquiring contacts through your own opt-in is vital to holding a good sender reputation. By confirming their agreement to join your mailing list, your contacts also signal to the ESPs that your emails are wanted.
[Learn how to use double-opt-ins](../forms/how-to-set-up-a-form-with-double-opt-in)
### Manage inactive or bounced contacts
To improve your sender reputation, we recommend unsubscribing contacts who aren't responding or interacting with your emails after 180 days. ISPs take interaction, such as opens or clicks, as a positive sign, which improves the sender's reputation. Because it is important for your content to reach your subscriber's inbox, Kajabi helps you manage your bounced contacts and improve your email deliverability by automating the process of unsubscribing your bounced email recipients. Learn more about [how auto unsubscribe helps maintain a healthy mailing list](../../contacts/manage-your-contacts/how-auto-unsubscribe-helps-you-maintain-a-healthy-mailing-list).
[Learn how to manage your contacts to nurture a healthy list](/articles/marketing/email-campaigns/best-practices-for-growing-and-maintaining-your-contact-lists)
## Content
ESPs will flag emails with "spammy" content. Here is a list of rules to follow to improve your email deliverability.
### Personalize emails
Address the recipient by name and be sure the content reflects the recipient's specific interests or usage patterns.
#### Personalize an email sequence with a first name
1. Open the **Marketing** tab from your Dashboard.
2. Select **Email Campaigns**.
3. Select an existing email sequence or [create one](/articles/marketing/email-campaigns/create-an-email-sequence).
4. Navigate to the body of your email.
5. Open your Text Block with the [Email Visual Editor](/articles/marketing/email-campaigns/email-visual-editor-overview) or click into your text editor with the classic editor.
6. Click the **Personalize** drop-down menu in the toolbar.
7. Select **First Name**.
8. Click **Save**.
### Text-to-image ratio
In email marketing, using a combination of text and images will make your emails look professional, showcase your brand, and captivate your audience. Nonetheless, too many images and text links can trigger spam flags. To optimize deliverability, use both text and HTML, or text only.
Unfortunately, because ESPs consider many factors when calling out spam, there is not a clear boundary for the text-to-image ratio except this: 100% image(s) + 0% text = low deliverability. However, Kajabi has got you covered with many email templates.
[Learn how to access and use the Email Broadcast templates](/articles/marketing/email-campaigns/email-visual-editor-templates)
### Avoid promotional text
If you take a moment to look through the Spam/Junk folder in your email, you will notice some consistencies in the content and language of the email subject lines. Many headlines will be in all caps or contain lots of numbers or link shorteners. Using gimmicky promotional text such as "Buy Now!" or "Free!" are major spam flags. Try to avoid using all caps or excessive exclamation marks.
[Learn the best practices for your email subject lines](/articles/marketing/email-campaigns/best-practices-for-email-subject-lines)
### Identify who is sending the email
Make sure each email has a valid reply-to address, as well as a valid physical postal address. Not only will this validate your authenticity, it will give you the ability to encourage your subscribers to engage. Engagement will help raise your reputation as a sender and additionally help nurture a relationship with your subscribers.
## Consistency
Consistency is an essential element of your sender reputation. If there are any unexpected changes to the way you're sending mail, ESPs will potentially mark your messages as spam. Here are some tips for keeping your sending habits consistent.
### Quantity
While it's normal for your list size to fluctuate, avoiding large spikes in sending volume is essential to maintaining your sender reputation. For example, if you've been regularly sending to 100 subscribers, jumping to 2,000 subscribers at once will trigger ESPs. As a rule, you can double your sending volume every week as long as you have good engagement.
# Avoid spam traps
Source: https://help.kajabi.com/articles/marketing/email-campaigns/spam-traps-what-are-they-and-how-to-avoid-them
Understand what spam traps are, the types that exist, and how to keep your email list clean to avoid them.
**Spam traps** are email addresses used to identify senders who are not using list management best practices. This article explains what spam traps are, how to avoid them, and what happens if you encounter one.
## What is a spam trap?
A spam trap is an email address used to identify unsolicited emails, also known as spam. Spam traps are typically set up by email providers, Internet Service Providers (ISPs), and anti-spam organizations.
A spam trap will look like a legitimate email address, but it doesn't belong to a real person.
This means they cannot be used for any kind of communication and cannot opt-in to any mailing lists. Therefore, if you have run into a spam trap, you need to do a better job maintaining a healthy list or start following the rules of permission-based email marketing.
## Two types of spam traps
### Recycled
Recycled spam traps are email addresses that were once valid, but are no longer in use, and then reactivated by anti-spam organizations to catch senders who are sending to old or inactive email lists.
If you have run into a recycled spam trap, chances are you have a few old and abandoned email addresses in your list.
Even if you're following the rules of permission-based email marketing, it is possible to run into a recycled spam trap every once in a while, so try to keep your subscriber lists clean and updated.
### Pristine
Pristine spam traps are email addresses that have never been used for communication and are specifically set up to catch spammers who are harvesting email addresses from the internet.
## What happens to email reputation when you hit a spam trap
Sending to spam traps can have a negative impact on your sending reputation and future email deliverability. When you hit a spam trap it is flagged as spam and the sending IP address and domain may be added to a block list.
If listed, future emails will not reach recipients' inboxes. This will lead to decreased open rates and click-through rates.
Additionally, sending to spam traps can damage your sending reputation, making it harder for your legitimate emails to reach the inbox even if you are not blocklisted.
## Avoid spam traps
The best advice we can offer is to follow our guides on email list hygiene and best practices with email marketing:
* [Email list hygiene](/articles/marketing/email-campaigns/best-practices-for-growing-and-maintaining-your-contact-lists)
* [Sender reputation guide](/articles/marketing/email-campaigns/sender-reputation-guide)
## What Kajabi does when you run into spam traps
* When the Email Deliverability & Compliance (EDC) team is alerted to someone sending to recycled spam traps they will reach out to discuss list management best practices.
* When EDC is alerted to someone sending to a pristine spam trap they will reach out to provide guidance on required actions to prevent email suspension.
* Excessive or repeated spam trap hits can lead to email suspension for a sender.
# Understand the Gmail Promotions tab
Source: https://help.kajabi.com/articles/marketing/email-campaigns/understanding-the-gmail-promotions-tab
Learn how Gmail categorizes promotional emails and how this may affect the delivery of marketing messages.
The **Gmail Promotions tab** is a standard placement for marketing messages and can support strong engagement when used effectively. Sending relevant content, maintaining good deliverability practices, and understanding subscriber behavior can help improve performance in this inbox category.
When a Gmail user has the tabbed inbox enabled, Gmail may sort messages into five categories:
* Primary
* Social
* Updates
* Forums
* Promotions
The Promotions tab includes marketing content such as:
* Newsletters
* Discounts
* Sales announcements
* Product updates
* Other commercial offers
Gmail [identifies](https://www.emailonacid.com/blog/article/email-marketing/gmail-promotions-tab-is-it-really-that-bad-for-marketers) this tab as the place for "deals, offers, newsletters, and other call to action emails."
[Emails in the Promotions tab are not marked as spam](https://www.emailonacid.com/blog/article/email-marketing/gmail-promotions-tab-is-it-really-that-bad-for-marketers). These messages are still delivered to the inbox, but Gmail places them into a category that helps users manage marketing content.
## Why emails appear in the Promotions tab
Gmail uses automated machine learning systems to determine where each message belongs. Several factors may influence tab placement:
* [The sender and sending infrastructure](https://www.emailonacid.com/blog/article/email-marketing/gmail-promotions-tab-is-it-really-that-bad-for-marketers)
* [The content and formatting of the email, including templates, images, and promotional language](https://www.emailonacid.com/blog/article/email-marketing/gmail-promotions-tab-is-it-really-that-bad-for-marketers)
* [How subscribers interact with previous messages, such as opens, clicks, or moving messages into a different tab](https://www.getresponse.com/blog/gmail-promotions-tab)
* [The volume and reputation of your sending domain](https://captainverify.com/blog/why-my-emails-landing-promotions-tab)
At this time, [there is no guaranteed way](https://www.emailonacid.com/blog/article/email-marketing/gmail-promotions-tab-is-it-really-that-bad-for-marketers/) to force a promotional message into the Primary tab.
## Is the Promotions tab harmful?
Not necessarily. Gmail users still receive your email in their inbox, and many users check the Promotions tab regularly.
Research shows that:
* About 79.7 percent of Gmail users with tabs enabled check the Promotions tab weekly
* [About 51 percent check the Promotions tab daily](https://www.emailonacid.com/blog/article/email-marketing/gmail-promotions-tab-is-it-really-that-bad-for-marketers/)
[Users who browse the Promotions tab](https://www.litmus.com/blog/how-to-utilize-gmail-promotions-tab) may also be in a shopping mindset and more open to commercial messages.
## Optimize for the Promotions tab
### Use a clear sender name
[Choose a sender name that subscribers can easily recognize.](https://www.litmus.com/blog/how-to-utilize-gmail-promotions-tab)
### Focus on valuable and relevant content
Create content that is helpful, well-designed, and timed appropriately to encourage engagement.
### Monitor subscriber actions
If subscribers frequently move your messages to the Primary tab, Gmail may adjust placement based on that behavior.
### Consider using Gmail annotations
[Annotations](https://developers.google.com/gmail/promotab/overview) can display product images, discount codes, ratings, and other promotional details within the inbox preview.
## Improve deliverability
To improve overall deliverability, consider the following:
* [Authenticate your sending domain with SPF, DKIM, and DMARC](https://fundamental.marketing/email-deliverability/how-to-avoid-the-gmail-promotions-tab-in-2025-your-essential-guide/)
* Segment your list to send relevant content to engaged subscribers
* Avoid attempts to disguise promotional emails as personal messages
* Encourage subscribers to add your email address to their contacts if they want messages in the Primary tab
* Monitor open rates, click rates, and other key metrics to identify performance changes
## FAQs
### Will my emails get fewer opens in the Promotions tab?
Not always. Many Gmail users check the Promotions tab regularly, and [some data](https://www.emailonacid.com/blog/article/email-marketing/gmail-promotions-tab-is-it-really-that-bad-for-marketers/) suggests they may be more likely to take action on promotional content.
### Can I force Gmail to place my emails in the Primary tab?
No. [Gmail determines placement automatically for each user.](https://www.getresponse.com/blog/gmail-promotions-tab) You can recommend moving your messages manually, but you cannot control the tab Gmail selects.
### Is the Promotions tab the same as spam?
No. [The Promotions tab is part of the inbox.](https://www.litmus.com/blog/how-to-utilize-gmail-promotions-tab) Spam is separate and contains unwanted or harmful messages.
# Marketing and transactional emails
Source: https://help.kajabi.com/articles/marketing/email-campaigns/what-are-marketing-and-transactional-emails
Learn the difference between marketing and transactional emails to send compliant, appropriate emails to your recipients.
Understanding the difference between **marketing emails** and **transactional emails** is critical for complying with commercial email laws like the CAN-SPAM Act of 2003 and the General Data Protection Regulation (GDPR).
## Why it matters
Understanding the difference between your marketing and transactional emails is necessary for complying with commercial email laws and avoiding hefty penalties for violating them.
According to the [CAN-SPAM Act of 2003](/articles/marketing/email-campaigns/what-is-can-spam), transactional emails are exempt from most provisions of the CAN-SPAM Act.
The main differentiating factor is the primary purpose of the email:
* **Commercial content** – promotes or advertises a commercial product or service, including content from a website with a commercial or marketing purpose
* **Transactional or relationship content** – facilitates an agreed-upon transaction, or updates or notifies customers about an ongoing transaction
If the message contains commercial or marketing content, its primary purpose is commercial and it must comply with the requirements of the CAN-SPAM Act.
If it contains only transactional or relationship content, its primary purpose is transactional or relationship. In that case, it may not contain false or misleading routing information but is otherwise exempt from most provisions of the CAN-SPAM Act.
### CAN-SPAM Act resources
Read more about what the Federal Trade Commission (FTC) has to say about the CAN-SPAM Act in their CAN-SPAM Act: A Compliance Guide for Business.
This information is provided as a resource, but it is not to be used as legal advice. We encourage you to consult legal counsel in your area to learn how various anti-spam regulations and laws may apply to your organization.
## Marketing and transactional emails on Kajabi
The following sections define what marketing emails and transactional emails mean on Kajabi.
### Marketing emails
Marketing emails on Kajabi are promotional emails sent to your email list subscribers.
Marketing emails include:
* [Email Broadcasts](/articles/marketing/email-campaigns/create-an-email-broadcast)
* [Email Sequences](/articles/marketing/email-campaigns/create-an-email-sequence)
* [Event Emails](../events/how-to-create-an-event)
If your contacts are not subscribed, have unsubscribed, or have not approved their receipt of your marketing emails, they will not receive these types of emails.
[Learn how customers can update their email preferences.](../../contacts/manage-your-contacts/how-your-customers-can-update-their-email-preferences)
### Transactional emails
Transactional emails on Kajabi include any email built for the purpose of sending a transactional message.
Transactional emails should not contain any marketing or commercial content in order to comply with commercial email laws like the CAN-SPAM Act.
Looking to change your transactional email sender information? [Learn how to update your transactional email sender information.](../../account-settings/notifications/how-to-change-your-transactional-email-sender-information)
#### System generated emails (Email Templates)
System generated emails are emails sent out regardless of whether or not your users are subscribed to your marketing emails as they alert them to an action that has occurred within the app. For example, if a purchase is confirmed, product access has been granted, and more.
[Learn how to edit the auto-generated email templates sent by your site](../../account-settings/notifications/edit-automated-email-notifications) to edit your system-generated emails.
#### Notification emails
The **Send an email** action in Automations sends a notification email. Read [Automations overview](../automations/automations-overview) for more details.
Unlike Email Broadcasts and Email Sequences, these reach your Contacts regardless of their subscription status. Only Contacts who explicitly opted out, by using an unsubscribe link or changing their own email preferences, are skipped.
If your account uses [Email marketing categories](manage-email-marketing-categories), these emails follow your Contacts' category preferences instead. Automation emails are always assigned to the **General Marketing** category, so Contacts who are unsubscribed, or who opted out of that category, do not receive them.
[Learn about the Send an email Automation action](../automations/understanding-automation-components#emails)
**Note:**
[Product Announcements](../../products/courses/send-a-product-announcement) and [Offer Grant Emails](../../account-settings/notifications/edit-automated-email-notifications) are separate emails that are considered marketing emails that your customers can manually unsubscribe from within their [customer email notification settings](../../contacts/manage-your-contacts/how-your-customers-can-update-their-email-preferences).
## FAQs
### Why aren't my customers receiving emails?
If your customers report missing emails, try these initial steps:
* Check the **Contacts** tab to ensure their email address is valid
* Check if they are subscribed to marketing emails by opening their contact inside your **Contacts** list (this only applies if the missing email was a marketing email specifically)
* Ask the customer to check their spam and junk folders
*Disclaimer: This article is not legal advice for your company to use in complying with commercial email laws like the CAN-SPAM Act or the GDPR. Instead, it provides background information to help you better understand these laws and how it applies to your Kajabi account. We insist that you consult legal counsel in your area to learn how various anti-spam regulations and laws may apply to your organization. In a nutshell, you may not rely on this as legal advice or as a recommendation of any particular legal understanding.*
# Inactive and active status in an Email Sequence
Source: https://help.kajabi.com/articles/marketing/email-campaigns/what-does-the-inactive-and-active-status-in-an-email-sequence-refer-to
Understand what active and inactive subscriber statuses mean in email sequences.
You can locate the **Status** of each email sequence subscriber in the **Subscribers** section of your email sequences:
* **Active** refers to the contacts who are subscribed to the sequence.
* **Inactive** refers to contacts who are not currently receiving this sequence. This can happen for two different reasons:
* Unsubscribed: The contact unsubscribed from your marketing emails (manually, by opting out, or through a hard bounce).
* Unconfirmed opt-in: Your account uses Double Opt-In, and the contact has not yet clicked the confirmation link. Their Marketing status can show as Subscribed while Opt-in status is still Unconfirmed — this also shows as Inactive here, even though the contact never unsubscribed. To resolve, have the contact click the confirmation link, or resubmit a Double Opt-In form on their behalf.
**Note:** This Inactive/Active status is specific to Email Sequences and is unrelated to a contact's Inactive email-engagement status (based on prolonged non-engagement with marketing emails, not opt-in confirmation).
### To view the status of your Email Sequence subscribers
1. From the Kajabi Dashboard, navigate to the **Marketing** tab.
2. Select **Email Campaigns.**
3. Click on the title of your Email Campaigns from the list.
4. Select the **Subscribers** tab at the top navigation.
# What is CAN-SPAM?
Source: https://help.kajabi.com/articles/marketing/email-campaigns/what-is-can-spam
Learn about the CAN-SPAM Act and how to ensure email campaigns comply with these regulations.
The **CAN-SPAM Act** is a law governing commercial email that you should understand for compliance purposes. Keep in mind this article and other materials posted on our website are offered for informational purposes only and are not intended to constitute legal advice.
## What is CAN-SPAM?
The **[CAN-SPAM Act](https://www.ftc.gov/enforcement/statutes/controlling-assault-non-solicited-pornography-marketing-act-2003-can-spam-act)** (**C**ontrolling the **A**ssault of **N**on-**S**olicited **P**ornography **A**nd **M**arketing Act of 2003) is a law set for commercial email that establishes the requirements for commercial messages and gives recipients the right to unsubscribe or opt-out of commercial emails as well as defining the penalties for any violation of the Act.
The Bureau of Consumer Protection reports that CAN-SPAM doesn't strictly apply to bulk email.
In fact, "It covers all commercial messages, which the law defines as 'any electronic mail message the primary purpose of which is the commercial advertisement or promotion of a commercial product or service,' including email that promotes content on commercial websites. The law makes no exception for business-to-business email."
Although CAN-SPAM applies to all commercial messages, it exempts transactional and relationship messages.
Understanding CAN-SPAM can benefit your path to compliance for your business.
Learn more about marketing (commercial) and transactional emails in Kajabi by reading [the difference between marketing and transactional emails](/articles/marketing/email-campaigns/what-are-marketing-and-transactional-emails) to better recognize the emails that must comply with CAN-SPAM.
## What does this mean for you?
Although email regulations vary by country, the emails you send through Kajabi must comply with the **U.S. CAN-SPAM Act**, even if your business is located outside the United States.
Depending on the location of both your business and your contacts, you may be subject to additional regulations.
It is your responsibility to determine whether any other laws or regulations, including international laws, apply to you or the emails you send through Kajabi.
Essentially, this means your commercial (or marketing) emails must comply with the CAN-SPAM Act.
We will briefly cover the rules you need to follow according to CAN-SPAM, but in a nutshell, your emails must comply in three main areas:
* The option to **unsubscribe**
* Transparent **content**
* Honest **sending behavior**
These laws and requirements were put in place to protect consumers, but by staying compliant you can also create a relationship built on honesty and transparency between you and your customers.
And the cherry-on-top is an increased likelihood of your emails successfully delivering to your recipients (versus ending up in someone's spam or junk folder).
**Before we move on to the rules for CAN-SPAM compliance, let's talk about the penalties for non-compliance with the CAN-SPAM Act.**
The Federal Trade Commission (FTC) states that "**each separate email** in violation of the CAN-SPAM Act is subject to penalties of up to \$43,280 \[...]" and "may give rise to additional fines."
Now that we understand the gravity of violating CAN-SPAM, let's go over how to comply with the CAN-SPAM Act.
## Rules for CAN-SPAM compliance
To stay on the path to CAN-SPAM Compliance, it is crucial to understand the rules of CAN-SPAM. Read more about what the Federal Trade Commission (FTC) has to say about the CAN-SPAM Act in their [CAN-SPAM Act: Compliance Guide for Business](https://www.ftc.gov/tips-advice/business-center/guidance/can-spam-act-compliance-guide-business).
### Things to do
* **Do include your postal address.** Your email must display your current, valid physical business address in your marketing emails. This can be your current street address, a Post Office box, or even a private mailbox registered with a commercial mail receiving agency established under Postal Service regulations. This is enforced in Kajabi to help you comply with CAN-SPAM by requiring you to complete your Marketing Settings before creating Email Campaigns. Simply click your Settings tab and open your [Marketing Settings](/articles/marketing/email-campaigns/how-to-customize-your-marketing-settings).
* **Do honor opt-out requests promptly.** Compliance with the CAN-SPAM Act means honoring your recipient's request to unsubscribe within 10 business days. Kajabi automatically honors this request if your recipient chooses to unsubscribe or change their email notification settings. This rule also means you can't 1) charge a fee, 2) require the recipient to give you any personally identifying information beyond an email address, or 3) make recipients take extensive steps other than responding to an email or visiting a single page on a website as a condition for honoring an opt-out request.
* **Do use transparent "From," "To," and "Reply to" language.** Your email "From" and "Reply-To" information must accurately identify the person or business initiating the email message. Learn to [configure your Email Settings](/articles/marketing/email-campaigns/how-to-customize-your-marketing-settings) in Kajabi.
* **Do monitor what others are doing on your behalf.** Ensure that you and those you work with are complying with CAN-SPAM. It is ultimately your responsibility to ensure that your marketing emails comply.
*Disclaimer: This article and other materials posted on our website is offered for informational purposes only and is not intended to constitute legal advice. Do not rely on the information found here without consulting a licensed attorney in your location for your specific circumstances. It is ultimately your responsibility, and you hereby release Kajabi from all responsibility, to determine the laws or regulations, including international laws, applicable to you and your business. It is always best to be familiar with ALL laws, rules, regulations, and legislation that may be applicable to you and your recipients' country/region.*
# macOS Monterey and iOS 15 email privacy update
Source: https://help.kajabi.com/articles/marketing/email-campaigns/what-you-need-to-know-about-the-monterey-os-12-and-apple-ios-15-email-privacy-update
Understand how Apple Mail Privacy Protection affects email open tracking and adapt your strategy.
At Apple's Worldwide Developers Conference in June, Apple announced a rollout of privacy features. One of the most pertinent features is **Mail Privacy Protection**. This update lets people opt in to mail privacy features that block third parties from tracking email opens or other IP data.
In the past, data from an email was automatically loaded when the email recipient opened the email and downloaded the email's images. A hidden tracking pixel is included within this data which allows your email service providers (ESPs) to see that the email was opened.
With Mail Privacy Protection, Apple Mail will preload images and content of emails — including the tracking pixel — regardless of if the recipient actually opened the email or not. This means that Apple Mail will over-report open rates which will make 'Opens' a less reliable metric since true open rates for emails cannot be effectively tracked.
## How Apple Mail Privacy Protection impacts Heroes
Any Heroes that leverage email marketing, with Kajabi's email marketing tool or another, will need to adjust how they view the performance of email campaigns.
This change will not affect all of your contacts - rather, just the ones that are using Apple Mail. However, Apple Mail is roughly 31% of the email provider market share globally, so this likely is a significant subset of your contacts.
If a recipient is using the Apple Mail app, opens will not be tied to actual user engagement. The impact will vary based on your audience. The expected impact is as low as 4% and high as 54% based on industry, according to Mailgun.
The mail client is the key thing to remember, regardless of if the email is opened on an Apple device like an iPhone, iPad, iMac, or Macbook.
Examples:
* If a recipient is using a Gmail email but has it connected to Apple Mail, and opted in for privacy, the open metric is impacted.
* If a recipient uses an iCloud email address, such as the @me.com, @icloud.com, or @mac.com domains, but uses a browser such as Google Chrome, these opens may not be over-reported.
* It will not be possible for email marketing providers to distinguish between real and false-positive opens. But, opens were never totally accurate and thus not an ideal metric to evaluate email performance on. Other companies will likely follow Apple's lead in consumer privacy, so it's a good idea to adapt.
## What Kajabi is doing in response
The iOS 15 update over-reports email opens, making the open rate metric inflated. A filter for Email Activity: 'was clicked' is available, allowing Heroes to segment contacts that have clicked an email within the last 90 days. A Click Report is also available to help shift the focus to clicks, without having to set up automations to track them.
## Adapt to the changes from Apple
You may want to start analyzing your email performance now and reframe it in a way where you move away from email open rate as your most important metric.
Clicks can be a great indicator of email performance, and optimizing your Calls to Action can be a strategy to maximize email performance.
You may also consider setting up automations based on clicks if you use multiple CTAs in an email. Check out the steps to [set up an automation using a link in an email](/articles/marketing/email-campaigns/how-to-set-up-an-automation-using-a-link-in-an-email). This way, you don't rely on opens for your automations and risk misunderstanding how engaged a contact is with your content.
Like other recent user privacy updates that impact business owners, this is a good reminder that the field of marketing is always changing. It's always a good idea to diversify your marketing strategy and the ways in which you communicate information to your potential, current, and past customers. Email is still a valuable communication tool, but perhaps you could dedicate resources to sharing important information on your social channels where you can get other analytics about viewership.
# Email Sequence email templates
Source: https://help.kajabi.com/articles/marketing/email-campaigns/whats-new-with-email-sequences-email-templates
Explore the updates available for Email Sequences and automated email templates on Kajabi.
With the improvements to **Email Sequences** and automated email templates, you can improve subscriber experience with marketing emails and establish your brand with the automated emails sent by Kajabi.
## Customize Email Sequences
Enable custom send times per email in Email Sequences and send multiple emails on the same day. [Learn to customize email send times.](/articles/marketing/email-campaigns/how-to-customize-when-email-campaigns-are-sent)
**Note:**
Email Sequences cannot send multiple emails set to send on Day 0 (i.e., immediately after subscribing to the sequence). If you wish to send multiple emails on the same day, you will need to set your send time for a future date.
## Establish brand with automated email templates
Establish brand loyalty and recognition by adding a logo to the automated emails sent by Kajabi when a transaction occurs and display a button with your brand colors for the primary links in auto-generated email templates. [Learn to add a brand logo and colors to email templates.](../../account-settings/notifications/how-to-add-your-brand-logo-and-colors-to-the-auto-generated-email-templates)
**Note:**
Any accounts created after March 7th will have buttons in [most of the auto-generated email templates](../../account-settings/notifications/how-to-add-your-brand-logo-and-colors-to-the-auto-generated-email-templates#h_01GTVQVCKK7A1EEBT81VMMRVMG) along with any existing accounts that have not customized the auto-generated email templates. Accounts created before March 7th with customized auto-generated email templates will not display a button to protect customizations. [Learn to add a button to automated email templates.](../../account-settings/notifications/how-to-add-your-brand-logo-and-colors-to-the-auto-generated-email-templates#h_01GTVQVCKK7A1EEBT81VMMRVMG)
[Learn more about the automated emails sent by your site](../../account-settings/notifications/edit-automated-email-notifications).
# Troubleshoot emails after connecting a custom domain
Source: https://help.kajabi.com/articles/marketing/email-campaigns/why-are-my-emails-not-sending-or-receiving-after-i-connect-my-custom-domain
Resolve common email sending and receiving issues after connecting a custom domain to Kajabi.
Experiencing issues sending and receiving emails after connecting your **custom domain** to Kajabi? This article helps you troubleshoot common issues with email sending.
## Troubleshoot email sending
If you're having trouble sending and receiving emails from your webmail address after connecting your custom domain to Kajabi, you may need to manually add your MX records from your email service provider (e.g. Google Workspace, etc.) to your DNS Settings on Kajabi.
Before we dive into troubleshooting, let's talk about when this issue can occur.
**Note:**
If you didn't have a webmail provider (i.e. Google Workspace, Office 365) before going through the setup on Kajabi, this issue will not apply to you because Kajabi's built-in custom email domain feature only lets you send Kajabi marketing emails.
So, what exactly is a webmail provider? Webmail is a system for email that can be accessed through any web browser connected to the internet. Popular webmail services include Gmail, Outlook, and Yahoo Mail.
Webmail providers use MX records to determine how to send and receive your emails.
If you're using a webmail service and you're experiencing issues sending and receiving emails after connecting your custom domain to Kajabi, you may need to manually add your MX records from your webmail service to your DNS Settings on Kajabi:
## What are MX records?
An MX record specifies which mail server is responsible for receiving emails at a given domain.
When the MX records are missing in the Domain Name System (DNS) settings, emails can no longer find the correct destination.
If you're experiencing issues sending and/or receiving emails after connecting your custom domain to Kajabi, you may need to retrieve your MX records from your Email Service Provider (ESP).
**Note:**
Propagation can take up to 48 hours for MX records.
## Add MX records to Kajabi
When adding your webmail MX records to your DNS Settings on Kajabi, you'll need the following three items:
* Name
* Mail Server
* Priority
For this guide, we'll use Google Workspace as an example for the settings needed for the MX records:
| Name | Mail Server | Priority |
| ---- | ----------------------- | -------- |
| @ | aspmx.l.google.com | 1 |
| @ | alt1.aspmx.l.google.com | 5 |
| @ | alt2.aspmx.l.google.com | 5 |
| @ | alt3.aspmx.l.google.com | 10 |
| @ | alt4.aspmx.l.google.com | 10 |
If you're using a different Email Service Provider, your MX records will differ from the example above.
Access your MX records by logging into your ESP account. Then, copy and paste your records into your DNS Settings on Kajabi.
### Add MX records to DNS Settings on Kajabi
1. Click the **DNS Settings** link in the upper left corner of your Domain Settings page.
2. In your DNS Settings, click the **+ Custom Record** button in the upper right corner of the page.
3. Select **MX Record**.
4. Add your values for the Name, Mail Server, and Priority.
Repeat these steps until you've finished adding all of your MX records.
It can take up to 48 hours for MX records to fully propagate. At this point, you can send yourself a test email to confirm your email account is working properly.
# Resolve the "be careful with this message" warning
Source: https://help.kajabi.com/articles/marketing/email-campaigns/why-do-my-emails-have-a-be-careful-with-this-message-warning
Understand why emails display a warning message and learn how to prevent it.
If you are receiving a **"be careful with this message"** warning from your email campaign, your "From" email address is likely the same as the recipient email address.
## Why does this happen?
Are you getting a warning message when viewing your email campaign similar to the warning below?
With various email clients (like Gmail), you are likely to receive this message if:
* Your "From" email address is the same as the email address of the recipient.
* The "Reply-to" email address differs from your "From" email address.
* The "From" email address contains the same domain as the recipient email address domain (e.g., support@**myawesomesite.com** and john@**myawesomesite.com**).
[Learn more about your marketing email settings](/articles/marketing/email-campaigns/how-to-customize-your-marketing-settings)
### Will all of my recipients get this warning?
No, recipients with the same email address as your "From" email address typically include:
* Yourself; this often occurs when testing your own email campaigns.
* Team members sharing the same email address domain. For example, if you include an internal team member as a recipient, your team member's email address likely shares the same domain as your "From" email address (e.g., @yourbusinessdomain.com). This will not happen if you send a campaign to a common email client (e.g., @gmail.com).
## Remove the warning
This warning is generated by the email client (e.g., Gmail) and cannot be altered or removed with Kajabi.
The good news is, this message will only display for recipients sharing the same email address as your "From" email address (for example, yourself and your team).
However, to prevent this warning from appearing on future emails, you can do any one of the following:
### Mark the email as safe
The warning typically includes buttons to report spam or phishing or to mark the email as safe.
Prevent this warning from appearing in the future by selecting the button to mark the message as safe:
### Send test emails to a different domain
Testing your email campaigns is a great practice to ensure that your campaign delivers to your recipients exactly as you intend.
Not sure how to test your email campaigns? [Learn more](/articles/marketing/email-campaigns/how-to-test-send-your-emails)
If you are sending a test email to yourself, try using a valid email address different than your "From" email address.
For example, if your "From" email address is "[support@yourbusinessdomain.com](mailto:support@yourbusinessdomain.com)", send a test email to your "[onlyfortests@commonemailclient.com](mailto:onlyfortests@commonemailclient.com)" email address.
# Troubleshoot emails not reaching all contacts
Source: https://help.kajabi.com/articles/marketing/email-campaigns/why-do-my-emails-send-to-some-contacts-and-not-all
Identify what may cause a discrepancy between a contact list and email recipients.
Wondering why your emails only send to some of your intended contacts? This article explains what may be causing this **email recipient discrepancy**.
## Troubleshoot email recipient discrepancy
If you are attempting to send an email campaign to your list of contacts, you may find that the list of recipients is smaller than your list of contacts.
For example, you have a list of 1500 contacts in your Contacts tab:
But only 1200 recipients when drafting your email campaign:
**Tip:** If none of your contacts are receiving emails, not just fewer than expected, check that your Marketing Settings are complete before troubleshooting further. A missing From Name, From Email, or Marketing Contact Address can block delivery entirely. See [Troubleshoot email sequences not sending](/articles/marketing/email-campaigns/how-to-test-send-your-emails#troubleshoot-email-sequences-not-sending).
## Marketing emails and subscribers
You are likely seeing the result of the important difference between sending marketing emails and transactional emails.
To comply with various rules, laws, and regulations such as the [CAN-SPAM Act](/articles/marketing/email-campaigns/what-is-can-spam) and [GDPR](/articles/marketing/email-campaigns/how-kajabi-helps-you-with-privacy-regulations), your marketing emails will only send to subscribed contacts.
**Learn more about the [difference between marketing emails and transactional emails](/articles/marketing/email-campaigns/what-are-marketing-and-transactional-emails) for details.**
In the example above, 300 of the 1500 contacts are unsubscribed. This will result in the total number of 1200 subscribers that are eligible to receive your marketing email.
A discrepancy can also occur if you are attempting to send an email campaign to a specific segment of your contacts but only a few contacts in the segment are set to receive the email.
If your recipient list contains unsubscribed contacts, you will see a difference between the number of recipients you have selected to send your email and the total number of contacts in your contact list.
It is important to note that your email campaign specifies the term "subscribers" when determining your email recipients.
Subscribers are contacts who have provided the appropriate permissions to be subscribed to receive your marketing emails.
**Note:** If a contact is not subscribed to receive marketing emails they will not receive emails in an email sequence. Learn more about [Subscribers](../../contacts/manage-your-contacts/contacts-tab-overview) for details. If your subscribers are not receiving your sequence, your emails may be getting marked as spam. [Learn to improve your sender reputation and improve your email deliverability](/articles/marketing/email-campaigns/sender-reputation-guide).
If you would like to add custom messaging to encourage email subscription upon offer checkout, or choose to automatically sign up customers to your email list when they purchase a paid offer, you can do so in your checkout page opt-in settings. Learn how to update your [checkout page opt-in settings here.](../../sales/checkout/how-to-change-checkout-page-opt-in-settings)
**Learn more about [contacts, customers, and subscribers](../../contacts/manage-your-contacts/contacts-tab-overview) to better understand subscribed and unsubscribed contacts.**
## Check Email marketing category subscriptions
If you have [Email marketing categories](/articles/marketing/email-campaigns/manage-email-marketing-categories) enabled, a contact can be subscribed overall but opted out of the specific category an email belongs to. These contacts show a **Partially subscribed** marketing status and won't receive emails sent under a category they've opted out of, even though they'd still receive emails sent under a category they remain subscribed to.
To check this:
1. Open the **Contacts** tab from the Dashboard.
2. Open the contact's profile and check the **Info** section for their status in each of the five categories.
3. Compare that against the category assigned to the Email Broadcast or Sequence you sent. [Learn more about Email marketing categories.](/articles/marketing/email-campaigns/manage-email-marketing-categories)
### Additional resource
* Did you accidentally unsubscribe a contact? Did a contact accidentally unsubscribe from your marketing emails or forget to subscribe when signing up for your course? Learn more about [**resubscribing contacts**](../../contacts/manage-your-contacts/can-i-resubscribe-a-contact-if-i-accidentally-unsubscribe-them) who may have been accidentally unsubscribed.
# Fix Email Broadcast display issues in Outlook
Source: https://help.kajabi.com/articles/marketing/email-campaigns/why-does-my-email-broadcast-look-bad-in-outlook
Resolve common display issues when Email Broadcasts are viewed in Microsoft Outlook.
**Email Broadcasts** may look different than intended in Microsoft Outlook due to the version of Outlook your recipient is using. This article helps you troubleshoot Email Broadcasts to fix common display issues in Outlook.
## What makes Outlook different?
The [Email Visual Editor](/articles/marketing/email-campaigns/email-visual-editor-overview) is designed to provide you with the tools to create stunning Email Broadcasts for all email clients.
Nonetheless, some common email display issues can occur when your email recipient views an HTML-based email in Outlook, specifically Outlook 2007 to present.
This is a result of Outlook's use of Microsoft Word to render HTML emails. Microsoft Word is designed to support print designs, which can result in display issues when it comes to your Email Broadcasts.
We recommend determining the version of Outlook most of your subscribers use and designing and [testing your Email Broadcast](/articles/marketing/email-campaigns/how-to-test-send-your-emails) for that version.
The preview shown in the Visual Editor provides a trustworthy indication of how your email will appear in the majority of inboxes, however, we encourage you to test your Email Broadcast with the version of Outlook used most by your contacts.
## Troubleshoot Outlook display issues
Although Outlook is designed to support print designs, there are a few tips and tricks to give your subscribers an enhanced visual experience when viewing your Email Broadcasts with Outlook.
First, enable **[View in Web Browser link](/articles/marketing/email-campaigns/how-to-hide-the-view-in-web-browser-link)**.
Enabling the View in Web Browser link located at the top of your Email Broadcast built with the Visual Editor gives your recipient the ability to experience your Email Broadcast as intended by opening the email in a web browser instead of viewing Outlook's interpretation of your email:
Next, consider the following tips and tricks provided in this guide when creating and designing your Email Broadcast with the [Email Visual Editor](/articles/marketing/email-campaigns/email-visual-editor-overview).
### The video block play button is not showing
Kajabi helps you communicate to your recipients that a video is available for viewing by natively adding a play button to your thumbnail image when using a [Video section](/articles/marketing/email-campaigns/add-and-customize-sections-in-email-campaigns).
However, recipients viewing your Email Broadcast with Microsoft Outlook 2000-2016 will not see the video play button displayed over your video thumbnail image.
The best method of communicating to your recipients that the thumbnail image leads to a video is by using image editing tools like [Canva](https://www.canva.com/) to edit your image prior to uploading.
Use image editing tools to design your thumbnail image with the play button edited into the image.
Read [how to optimize a video section in Email Broadcasts](/articles/marketing/email-campaigns/how-to-optimize-your-video-section-in-email-campaigns) for more details:
### Split blocks display incorrectly in mobile view
Split blocks in the Email Visual Editor (Text and Text, Image and Image, Image and Text) are designed to dynamically adjust to the screen the email is viewed on.
This enhances your recipient's visual experience with your Email Broadcast on both desktop and mobile devices:
However, Outlook only renders email in desktop view. This can result in compressed or cut off sections with split blocks in your Email Broadcast.
This particular Outlook display issue is best resolved with the [View in Web Browser link](/articles/marketing/email-campaigns/how-to-hide-the-view-in-web-browser-link).
The default setting for your Email Broadcasts enables the View in Web Browser link, but if you've disabled it during the editing process, consider re-enabling the section to address varying email client display issues such as Outlook issues.
Enabling the View in Web Browser link located at the top of your Email Broadcast gives your recipient the ability to:
* Experience your Email Broadcast as intended (compared to Outlook's interpretation of your email).
* Share your Email Broadcasts.
### Buttons display differently than customized
The Visual Editor gives you the flexibility to design your email buttons according to your brand and design vision.
However, recipients viewing your Email Broadcast with Outlook will always see buttons in full width. Additionally, only the text inside the button will be clickable.
To remedy this display issue, use image editing tools like [Canva](https://www.canva.com/) to create an image of a button and upload the image into your Email Broadcast.
Then, add your link to the image by customizing the image action.
This will enable your image to behave as a button, allowing your recipients to click the image of your button and be redirected to your linked URL.
This solution is similar to creating a thumbnail image with a video play button edited into the image to communicate to your recipients that there is a video available.
In this case, you can create an image of a button linked to a URL to communicate to your recipients to click the image and access the link.
Read [how to optimize a video section in Email Broadcasts](/articles/marketing/email-campaigns/how-to-optimize-your-video-section-in-email-campaigns) for an example of editing your image with [Canva](https://www.canva.com/).
### Animated GIFs display as static images
Outlook renders your animated GIFs as a static image and will only display the first frame of the GIF.
If your GIF displays an offer, headline, or call to action, be sure to include it in the first frame of your GIF.
Use GIF creation tools like [EZ GIF](/articles/marketing/email-campaigns/how-to-add-a-gif-to-your-email-campaign-with-ez-gif) or [GIPHY](https://giphy.com/) to create and embed an animated GIF:
# Resolve Gmail email clipping
Source: https://help.kajabi.com/articles/marketing/email-campaigns/why-is-gmail-clipping-my-email
Understand why Gmail clips email messages and learn techniques to keep emails within size limits.
Is your email campaign cut short? This guide explains why your emails are getting clipped by **Gmail** and how to avoid it.
## Why Gmail clips emails
Email clients, like Gmail, have algorithms to determine how they display your email.
This can mean that different email clients will display your email up to a certain size. In the case of Gmail, they are thought to "clip" or cut email messages short at 102kb.
Although the exact limit may vary based on their unique algorithm, it is best practice to keep your email messages under the presumed 102kb size limit. This will ensure that your email campaigns stay well within the limits of the various email clients your recipients may be using to view your marketing emails.
Most commonly, when an email is larger than the email client supports, the email client will hide the remaining email content behind a "View Full Email" or "View entire message" button at the bottom of the email:
Your email recipient must then click the link to view the remaining content in your email campaign.
**Elements in your email may be larger than they appear.**
Although 102kb may seem like a relatively large limit, it may surprise you just how easy it is for your email campaign to surpass an email client's size limit.
The size of your email actually consists of the entire code that makes up your email campaign. These elements can include text, tracking codes of links, URLs, and HTML used to style your message.
This can ultimately result in an email campaign that exceeds the size limit for email clients like Gmail.
## Avoid email clipping
Minimizing your email content can be a challenging task when you have a lot of value to provide.
However, this obstacle may create an opportunity for you to design an email marketing strategy that best fits your audience and boosts your sender reputation.
[Learn how to improve your sender reputation](/articles/marketing/email-campaigns/sender-reputation-guide)
To minimize your email size, begin by analyzing your email content.
**Can you remove any extraneous imagery or styling?**
In email marketing, using a combination of text and images will make your emails look professional, reveal your brand, and captivate your audience.
Nonetheless, too many images and text links can trigger [spam flags](/articles/marketing/email-campaigns/spam-traps-what-are-they-and-how-to-avoid-them) and result in clipped emails. To optimize your email, use both text and HTML or text only.
**Are you focusing on the value you have to offer?**
Be sure to include only relevant information in your marketing email. If you find yourself needing to provide additional information, build the information into landing pages on your website. Then, include Call to Action (CTA) buttons in your email to [link to your landing pages](../../website/pages/how-to-copy-your-page-link).
[Learn to add buttons to your email broadcasts](/articles/marketing/email-campaigns/add-and-customize-sections-in-email-campaigns)
**Can you break up your email content?**
If you notice that your email campaign contains multiple topics that may or may not relate to the main message, break up your message into multiple email campaigns.
When drafting and designing your email campaigns, breaking up your content can help:
* Prevent email clipping
* Increase engagement from your recipients
* Lead to an improved sender reputation with consistent email sending
[Learn how consistency can impact your sender reputation](/articles/marketing/email-campaigns/sender-reputation-guide#consistency)
**Are you copying and pasting content from a word-processing program or website?**
Copying and pasting content from a word-processing program, website, or extension can add extra formatting code to your emails without you realizing it.
Not only can this increase the size of your email, but it can also result in the introduction of malware to your site.
[Learn how to diagnose, locate, and remove malware from your site](../../website/pages/diagnosing-locating-and-removing-malware)
**Did you test your email?**
A great practice is to **always test and preview your emails** before sending them. We recommend sending your email to your own Gmail account to ensure that your emails render correctly.
Continue reading to learn how to [test and inspect email size](#test-and-inspect-email-size).
## Test and inspect email size
The best way to avoid email clients, like Gmail, from clipping your emails is by testing and inspecting your email size.
To test and inspect your email campaigns, send a test email to your own Gmail email address and download the message to inspect the file size.
### Send a preview email
First, draft and design your email campaign. Then, send a preview email to your own Gmail email address.
[Learn to test your email campaigns](/articles/marketing/email-campaigns/how-to-test-send-your-emails)
### Download the email message
After sending and receiving your preview email in your Gmail inbox, download the email campaign:
1. Sign into Gmail and open your preview email.
2. Navigate to the top right corner of your email and click the **three vertical dots**.
3. Click **Download message**.
### Inspect your email size
1. Open the **Downloads** folder on your computer.
2. Locate the downloaded email file.
3. View the **Size** column or right-click to **Get Info**.
If the file size is smaller than 102kb, you are good to go.
However, if the file exceeds the size limit, your email may be clipped when recipients view your email campaign in their email inbox. If you find that your email campaign exceeds the size limit, consider [re-analyzing and editing](#avoid-email-clipping) your email to best fit your recipients' email client size requirements.
# Fix broken View in Browser and unsubscribe links
Source: https://help.kajabi.com/articles/marketing/email-campaigns/why-is-the-view-in-browser-and-unsubscribe-link-in-my-email-campaign-not-working
Understand why the View in Browser and unsubscribe links may not work when previewing an email.
Clicking the **["view in web browser" link](/articles/marketing/email-campaigns/how-to-hide-the-view-in-web-browser-link)** or unsubscribe link located in the footer of your email campaign may not function properly when [previewing your email](/articles/marketing/email-campaigns/how-to-test-send-your-emails#preview-email).
Inspect your email links by experiencing the same process your contacts will encounter in order to receive your email campaign.
For example, if your contacts receive your email by submitting a form, submit the form as a test contact to receive and test your email campaign.
[Learn to test your emails.](/articles/marketing/email-campaigns/how-to-test-send-your-emails#test-email)
# Upload a file to blog posts
Source: https://help.kajabi.com/articles/website/blog/how-to-upload-a-file-to-your-blog-posts
Deliver supplemental resources like PDFs and images to blog visitors through downloadable files.
## Overview
Deliver supplemental resources to your blog post visitors including PDFs, images, graphics, and more. To add a downloadable file, you will need a standalone landing page, your downloadable file, and a call to action button.
With Kajabi's many features, you can upload your downloadable file onto a landing page and design a landing page specific to your file. Then, when your blog post visitors click your call to action button in your blog post, they will be redirected to your landing page encouraging them to download your file.
## Step 1. Create a landing page
To give access to your downloadable file from your blog post, you will need to create a separate landing page on Kajabi to hold your file.
In order for your blog post visitors to access your file, they will need to click a button to be redirected to your custom landing page containing your file.
First, you will need to create and customize your landing page to showcase your file.
### Create a landing page with a downloadable file
1. Open the **Website** tab from your Dashboard.
2. Click **Pages**.
3. Then, open your **Landing pages** folder.
4. Click **+ New Landing Page**.
5. Select the template that fits your design and brand.
6. Enter your page title.
7. Click **Create**:
### Add a Call to Action section for the downloadable file
1. Click into the Section you wish to add your Call to Action (CTA) to.
2. Click **Add Content**.
3. Select **Call to Action**.
4. Open the **Call to Action** Block Setting from the sidebar panel.
5. Enter the text you wish to display on your button in the **Text** field.
6. Select **Download a file** from the Button Action dropdown menu.
7. Click **Pick file** to upload your file onto the page.
8. Customize your Call to Action button with the remaining Call to Action settings. [Learn more](../../website/pages/how-to-use-a-call-to-action)
9. Click **Save** to keep and apply your changes:
After configuring your Call to Action section, customize your page to highlight your Call to Action to easily direct your visitors to the file.
## Step 2. Link the landing page to the blog post
Now that you have prepared your landing page, it is time to add your landing page link to your blog post.
### Add the landing page link to the blog post
1. Navigate back to your Kajabi Dashboard.
2. Copy the link to your newly created landing page. [Learn more](../../website/pages/how-to-copy-your-page-link)
3. Then, open the Website tab and select **Blog**.
4. [Create a new Blog Post](../../website/blog/how-to-create-a-blog-post) or select an existing Blog Post to edit.
5. Enter the text for your link and select it with your cursor.
6. Click the **Insert/Edit Link** button in your Blog Post Text Editor.
7. Paste your Landing Page link in the URL box.
8. Select a **Target**:
* **None** – Open the link in the current window
* **New Window** – Open in a different window
9. Click **Ok**.
10. Then, click **Save** to keep and apply your changes:
After completing this final step, your blog visitors will be redirected to your custom-created landing page when they click the link to download your file from your blog post.
Preview your blog post to test your visitor's experience.
# The 4 foundational habits of all successful bloggers
Source: https://help.kajabi.com/articles/website/blog/the-4-foundational-habits-of-all-successful-bloggers
Discover the four key habits that drive a sustainable, profitable blogging practice.
## Overview
The most successful bloggers spend 90-95% of their week in just four key areas. By focusing your efforts on these habits, you can build a sustainable and profitable blogging practice.
## The 4 habits of successful bloggers
The most successful bloggers spend 90-95% of their week in just four key areas:
* **Create habit** – Successful bloggers publish content on their blog regularly. They are effectively using text, audio, or video to get their message out to the masses. Have a goal of producing one helpful piece of content each week, if possible. Over time, you'll have a vast depository of useful content to share with your audience.
* **Capture habit** – Successful bloggers are also religious about building and nurturing an email list. They are always looking for ways and opportunities to add more subscribers to their list. Two great places to create your list is in the right sidebar of your blog or at the end of your post. Kajabi simplifies this habit with the built-in features of your blog page.
* **Compile habit** – This habit alone separates the "hobby" bloggers from the full-time bloggers. Each week they are working on creating products and services that they plan to sell on their blog and to their email list. Two effective paid products to create are online courses and membership sites. Kajabi has your back here—you can easily create an online course, then sell it to your list or on your blog. Want recurring income month after month? Create a membership site on Kajabi and get monthly paying members in no time.
* **Connect habit** – The connect habit is all about getting traffic. Go to where your audience resides online and attract them to your blog. Having blog content makes the process so much easier. Share your blog posts on social media and drive traffic back to your site.
When planning out your week, spend time in each of these four critical areas, and you'll see your blogging efforts grow.
**Related Article**: [How to Build Your Online Business with the Hourglass Funnel](https://bloggingyourpassion.com/build-your-online-business/)
# Build navigation menus
Source: https://help.kajabi.com/articles/website/navigation/build-navigation-menus
Create custom navigation menus, add links, and edit menu items for pages.
Custom navigation menus help guide your site visitors to explore different areas of your site. You can create multiple menus for different purposes and assign them to specific pages.
## Add a navigation menu
1. From the Dashboard, click **Website**.
2. Click the **Navigation** tab.
3. Click **+ New Navigation Menu** in the top-right corner.
4. Enter a **Name** for your navigation menu. This is only visible internally and will not be displayed to site visitors or customers.
5. Click **Save Menu** to create.
After creating your navigation menu, [follow these instructions to add your menu to a page](/articles/website/navigation/how-to-assign-your-navigation-menu).
**Note:** Navigation items inherit their font size and color from your page's Style Guide settings. To change how navigation items look, update the **Fonts** and **Font Colors** settings in your Style Guide. [Learn how to customize your Style Guide](../../website/pages/customize-your-page-font-and-style-with-the-style-guide).
## Add links to existing navigation menus
Before adding a link, copy the URL or note the name of the page, product lesson, or module you want to add.
### Add a link
1. Select the menu in which you would like to add a link, then click **Add.**
2. Select your desired link type:
* **Add Product**: Add a link to a **Module** or **Lesson.**
* **Add Page**: Add a link to any of your [landing pages](/articles/website/pages/how-to-connect-your-landing-pages-to-your-website) on Kajabi.
* **Add Link**: Add a link to a site outside of Kajabi.
**Tip:** To link a navigation item to a specific section on a page, use an anchor link. Open the page editor, click the Section you want to link to, and copy the **Section ID** from the sidebar. Then add a navigation link using **Add Link** and enter the URL as `/your-page-slug#your-section-id` (for example, `/home#about-us`). [Learn how to find and use Section IDs](https://help.kajabi.com/articles/website/pages/add-sections-to-your-pages#add-sections-to-pages).
**Note:** Navigation link names have a maximum length of 50 characters. If you add a custom URL link, the URL must begin with `http://`, `https://`, or `/`.
## Edit navigation menu
### Edit a navigation link
1. Click the **edit** icon on the link you would like to edit.
2. Update the **Title**, the **Path/URL**, or **Visibility Settings** as needed, or click **Delete the Link** to remove it.
3. Click **Save** to apply your changes.
### Rearrange links in a navigation menu
1. Hover over the **drag handle** to the left of the link you want to move.
2. Click and drag the link to your desired position.
**Note:** Dragging a link below another link in the Navigation tab does not create a submenu or dropdown. To nest a page as a submenu item under a main navigation link, you need to set up a dropdown menu in the Theme Editor. [Learn how to add a dropdown menu to your header](https://help.kajabi.com/articles/website/pages/add-a-dropdown-menu-to-your-header).
# Assign a navigation menu
Source: https://help.kajabi.com/articles/website/navigation/how-to-assign-your-navigation-menu
Apply navigation menus to website pages, checkout pages, and course pages.
After customizing your navigation menus and links, you can assign them to various pages of your site. By default, the **Main Menu** and **Footer** link lists are applied to every page until you assign a different link list.
Using navigation menus to link to various pages of your site streamlines any updates you may implement to your links in the future. If you assign a menu to various pages and later update a link in the navigation menu, all pages with the assigned navigation menu will automatically update.
To assign your navigation menu to a page, look for the Header and Footer sections of your pages when customizing the appearance of your:
* Website and landing pages
* Product pages
* Checkout pages
## Website and landing pages
Add menus to your header and footer in your website, landing, and funnel pages with the Menu Block:
1. Open the **Website** tab from the Dashboard
2. Click **Pages**
3. Locate the **Page** you wish to customize
4. Click the page title or the color palette icon to **Customize**
5. Open the **Header** or **Footer** section of the Editor
6. Select the **Menu** block or click **Add Content** to add the block
7. Select your desired navigation menu from the dropdown
8. Click **Save** to keep your changes
**Tip:** Learn to add [dropdown menus to your header](/articles/website/pages/add-a-dropdown-menu-to-your-header).
**Note:** If you would like to change the color of your navigation menu, you may do so by editing the Header Text Color option inside the Header section.
## Checkout pages
Add a menu to the footer of your checkout page:
1. Open the **Product** tab from your Dashboard
2. Select the **Sales** tab
3. Click **Pricing**
4. Select the offer you wish to edit
5. Click **Edit Checkout**
6. Navigate to **Footer** and select your desired menu from the Select navbar dropdown
7. Click **Save** to keep your changes
## Course pages
Add a menu to the header or footer of your course pages:
1. Open the **Products** tab from your Dashboard
2. Select **Courses**
3. Select the course you wish to customize
4. Click the **Customize** tab
5. Hover over the Template Preview and click **Customize**
6. Open the **Header** or **Footer** section in the Editor
7. Navigate to the **Menu** section
8. Select your desired navigation menu from the Menu dropdown
9. Click **Save** to keep your changes
# Navigation tab overview
Source: https://help.kajabi.com/articles/website/navigation/navigation-tab-overview
Configure website navigation menus, add links, and create custom menus for different pages.
## Overview
In the header and footer of your website pages, Kajabi has included default navigation menus leading your site visitors to other pages of your site. You can also use navigation menus throughout different sections of your website pages.
Learn to [customize your navigation menus](/articles/website/navigation/build-navigation-menus).
From inside the Navigation tab you can:
* Add links to your navigation menus
* Create new navigation menus
* Edit, remove, and rename your navigation menus
## Add links to existing menus
Adding links to your navigation menus allows your site visitors to easily access pages that aren't included in your default navigation.
To add links to your navigation menus:
1. Click **Add** inside the menu you would like to add to
Kajabi gives you the option to send your customers to your Kajabi **Products**, one of your **Pages** on Kajabi, or outside pages using a **Link**.
## Create new menus
Creating navigation menus allows you to have different menus for your different pages. For instance, on a sales page, you can have a custom navigation menu that only links out to the pages that help sell your products.
To create a custom navigation menu:
1. Click **+ New Navigation Menu** in the top right corner
2. Give your menu a title
The custom menu will then be categorized in the **Custom Menus** tab.
# Apply filters to the Contacts tab
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/apply-filters-to-your-contacts-tab
Narrow your contact list with filter Categories, stack up to 10 filters at once, and save the result as a Segment.
**Filters** on the **Contacts** tab narrow your list down to the people you actually want to look at — everyone who bought a particular Offer, everyone who hasn't opened an email in 90 days, everyone carrying a specific Tag.
Every filter is built from three parts:
* **Category**: The area of Kajabi you're filtering on, such as Email Activity or Tags
* **Conditional**: The requirement within that Category, such as 'Was opened' or 'Has all'
* **Value**: The specific thing you're matching against, such as a date range or a Tag name
Filters are also how you build Segments, so a filter you use often can be saved and reused.
[Learn more about Segments](/articles/contacts/manage-your-contacts/segment-your-contacts).
## Apply a filter
1. From your Dashboard, open the **Contacts** tab.
2. Click **Filters**.
3. Select a **Category**, a **Conditional**, and a **Value**:
4. To narrow your results further, click **Add filter** and build another one.
5. Click **Apply Filters**.
**Note:** You can apply up to 10 Contact filters at a time.
## Combine filters accurately
### Duplicate Categories and Conditionals
Only one filter per Conditional applies. If you add two filters with the same Category and Conditional, only the last one you added counts — no matter how the Values differ.
Instead, use a Category that lets you [select several Values in one filter](#categories-that-accept-several-values).
### Categories that accept several Values
Some Categories let you pick more than one Value, so a single filter can cover several things at once. **Offers** and **Tags** both work this way.
### How several Values combine
When one filter holds several Values, the Conditional decides whether a contact has to match one of them or all of them:
* **Offers** with **Owns** matches a contact who owns *any* of the Offers you picked
* **Tags** with **Has any** matches a contact carrying *at least one* of the Tags you picked
* **Tags** with **Has all** matches only contacts carrying *every* Tag you picked
## Remove filters
To remove a single filter, click **Filters**, then click the trash icon to the right of the filter you want gone. It disappears immediately. Click **Apply Filters** to update your list.
To drop every filter at once, click **Clear Filters** — the X beside the filter count above your contact list.
## Save filters as a Segment
Once your filters are applied, **Save as Segment** appears above your contact list, next to the filter count. Click it to save the current set of filters and reuse it later. [Learn more about Segments](/articles/contacts/manage-your-contacts/segment-your-contacts).
If you open an existing Segment and haven't changed its filters yet, the button in the Filters panel reads **Duplicate Segment** instead of **Apply Filters**. Use it to make a copy you can adjust without touching the original.
## Filter categories
**Note:** The Categories and Conditionals available to you depend on your account's settings, so your list may not match this one exactly.
### Assessment
Filter by how contacts performed on an Assessment. [Learn more about Assessments](/articles/contacts/create-manage-and-share-assessments/create-and-customize-assessments).
**Conditionals:** Completed, Passed, Failed
**Value:** Any Assessment you've created.
[Learn how to enable automatic grading](/articles/contacts/create-manage-and-share-assessments/create-and-customize-assessments#h_32f6706b-f7a5-48b9-aa9b-bc145daacdcf).
### Contacts
Filter by when a contact was added, or whether they're hidden. [Learn more about the Contacts tab](/articles/contacts/manage-your-contacts/contacts-tab-overview).
**Conditionals:** Contact was added, Contact was not added, [Is hidden](/articles/contacts/manage-your-contacts/hiding-your-contacts)
**Value:** 7, 15, 30, 60, or 90 Days for the two Contact was added Conditionals. Yes or No for Is hidden.
### Coupon
Filter by Coupon use. The Conditional is Coupon used. [Learn more about creating Coupons](/articles/sales/coupons/how-to-create-a-coupon).
**Value:** any Coupon you've created.
### Customers
Filter by customer activity and join date. [Learn more about customers](/articles/contacts/manage-your-contacts/contacts-tab-overview#customers).
**Conditionals:** [Customer was active](/articles/contacts/manage-your-contacts/contacts-tab-overview#what-is-considered-an-active-member), Customer was not active, Customer joined in last, Is Customer
**Value:** 7, 15, 30, 60, or 90 Days, or All time. Customer joined in last does not offer All time. Is Customer takes Yes or No.
### Custom Fields
Filter on the custom Form fields you've built. [Learn how to create Form fields.](/articles/marketing/forms/how-to-add-and-edit-fields-on-a-form)
**Conditionals:** Any custom field created on your site.
**Value:** The text you want that field to contain.
### Default Fields
Filter on the standard fields on a Contact record. [Learn more about Form fields.](/articles/marketing/forms/how-to-add-and-edit-fields-on-a-form)
**Conditionals:** Name contains, Email contains, SMS Mobile Phone Number contains, Address contains, Address line 2 contains, City contains, State contains, Country contains, Zip code contains, Phone number contains
**Value:** The text you want that field to contain. A contact's country may be stored as a two-letter code such as `US` or as a full country name, so if Country contains returns nothing, try the other form.
### Email Activity
Filter by how contacts have engaged with your email overall. [Learn more about email deliverability](/articles/marketing/email-campaigns/demystifying-email-deliverability).
**Conditionals:** Was delivered, Was not sent, Was opened, Was not opened, [Was clicked](/articles/marketing/email-campaigns/email-metrics-overview#h_01EDPQC3J9TEWVG6AKKY7C6CDY), Was not clicked, Has a hard bounced delivery
**Value:** 7, 15, 30, 60, or 90 Days. Has a hard bounced delivery takes Yes or No.
### Email Broadcast
Filter by how contacts responded to a specific email.
**Conditionals:** Was sent, Was not sent, [Was opened](/articles/marketing/email-campaigns/email-metrics-overview#h_01EDPQC3J9TEWVG6AKKY7C6CDY), Was not opened, [Has clicked](/articles/marketing/email-campaigns/email-metrics-overview#h_01EDPQC3J9TEWVG6AKKY7C6CDY), Has not clicked, [Has bounced](/articles/contacts/manage-your-contacts/how-auto-unsubscribe-helps-you-maintain-a-healthy-mailing-list), Has not [bounced](/articles/marketing/email-campaigns/email-metrics-overview#h_01EDPQC3J9TEWVG6AKKY7C6CDY), [Has dropped](/articles/marketing/email-campaigns/email-metrics-overview#h_01EDPQCE5WM1WJFFEBRC0AFNXG), Has not dropped
**Value:** Any broadcast email you've sent.
### Email Engagement
Filter by how engaged a contact is with your email overall. [Learn best practices for growing and maintaining a healthy contact list](/articles/marketing/email-campaigns/best-practices-for-growing-and-maintaining-your-contact-lists).
**Conditionals:** Healthy Contacts, Passive Contacts, Unengaged Contacts, Inactive Contacts
**Value:** Include email open data or Exclude email open data.
### Email Sequence
**Conditionals:** Subscribed to, Not subscribed to
**Value:** Any Email Sequence you've created.
### Events
Filter by Event registration. [Learn more about Events](/articles/marketing/events/event-overview).
**Conditionals:** Registered to, Not registered to
**Value:** Any Event you've created.
### Forms
Filter by Form submission. [Learn more about Forms](/articles/marketing/forms/create-and-build-your-form).
**Conditionals:** Submitted, Not submitted
**Value:** Any Form you've created.
### Lifetime Value
Filter by how much a contact has spent with you in total.
**Conditionals:** Greater than, Less than, Equal to
**Value:** A dollar amount.
### Email Marketing Status
Filter by a contact's marketing email subscription status.
**Conditionals:** Subscribed, Never subscribed, Unsubscribed, Manually unsubscribed, Opted out, Hard bounced, Marked spam
**Value:** 7, 15, 30, 60, or 90 Days, or All time. Subscribed takes a day range or Yes or No. Never subscribed takes Yes or No.
### Newsletter
Filter by Newsletter subscription.
**Conditionals:** Subscribed to, Not subscribed to
**Value:** Any Newsletter you've created.
### Offers
Filter by Offer ownership. [Learn more about Offers](/articles/sales/offers/offers-overview).
**Conditionals:** Owns, Does not own, Previously owned, Canceling
**Value:** Any Offer you've created. Select several to match a contact who owns any of them.
### Products
Filter by Product access. [Learn how to create digital Products](/articles/products/courses/courses-overview).
**Conditionals:** Has, Does not have, Previously owned
**Value:** Any Product you've created.
### Tags
Filter by the Tags on a contact. [Learn how to use Tags](/articles/contacts/manage-your-contacts/tags-overview).
**Conditionals:** Has any, Has all, Does not have
**Value:** Any Tag you've created. Select several and the Conditional decides whether a contact needs one of them or all of them.
## FAQs
### Does applying a filter change or delete my contacts?
No. A filter only changes which contacts appear in your list. Nothing about the contacts themselves is edited or removed.
### Why don't I see a Category or Conditional listed here?
The filters available to you depend on your account's settings and which features are turned on, so your dropdown may be slightly shorter or longer than this list.
### Can I reuse the same set of filters later?
Yes. Apply your filters, then click **Save as Segment** above your contact list. The Segment keeps that filter set so you can return to it without rebuilding it. [Learn more about Segments](/articles/contacts/manage-your-contacts/segment-your-contacts).
# Use Contact Preview
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/contact-preview-overview
Preview contacts and perform quick actions without leaving the filtered contact list.
The **Contact Preview** allows you to preview and perform quick actions without having to enter into the full Contact Profile page.
With this feature you can filter your list, view your contacts, and perform your most common actions without resetting your filtered list.
## Access the Contact Preview
### To access the Contact Preview
1. Open the **Contacts** tab from your Dashboard.
2. Select the **name** of your desired contact or customer.
3. Preview and perform [quick actions](#quick-actions) from the Contact Preview:
## Customer contact preview vs. non-customer contact preview
The Contact Preview will provide different options depending on the type of contact you view. If you open the Contact Preview for a Customer you can perform more actions through the Contact Preview than you will find in the Contact Preview of a Non-Customer.
### Customer contact preview
The Customer contact preview contains more information and quick actions compared to the Non-Customer contact preview as a result of their Customer status.
#### The Customer contact preview allows you to:
* Edit the contact details
* Send a reset password email to your customer
* Add tag(s)
* Grant an Offer
* Manually change your customer's password
* Add a note
* Hide the contact
* Delete the contact
* View the lifetime value of your customer
* Total Offers owned
* Total Products owned
* Last sign in date
* Number of total sign-ins
* Contact status
* [Email Marketing status](/articles/contacts/manage-your-contacts/what-does-the-subscription-status-mean)
* Date the contact was added to your site
* Opt-in status
* Any applicable tags
### Non-customer contact preview
The Non-Customer contact preview allows you to perform the applicable quick actions to your non-customer contact and provides an efficient method of viewing important contact information.
With the Non-Customer contact preview you can:
* Edit the contact details
* Add tag(s)
* Grant an Offer
* Add a note
* Hide the contact
* Delete the contact
* View Total Offers the contact ever owned
* Contact status
* [Email Marketing status](/articles/contacts/manage-your-contacts/what-does-the-subscription-status-mean)
* Date the contact was added to your site
* Opt-in status
* Any applicable tags
## Quick actions
With the Contact Preview you can perform quick actions:
* [Edit contact details](/articles/contacts/manage-your-contacts/how-to-edit-your-contacts-information)
* [Reset password](how-to-reset-your-customers-password#send-a-password-reset-email)
* [Add a tag](/articles/contacts/manage-your-contacts/tags-overview)
* [Grant an offer](../../sales/offers/how-to-grant-an-offer)
* [Change password](how-to-reset-your-customers-password#manually-change-password)
* Add a note
* Hide the contact
* Delete the contact
# Contact search improvements
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/contact-search-improvements
Upgraded contact search provides faster performance, especially for large contact lists.
**Note:** This feature is being released in phases to ensure stability across all accounts. If you do not see this improvement, then it has not been made available to your account yet. Check back at a later time to try the experience.
Kajabi has upgraded how Contact Search works behind the scenes, providing significantly faster search performance, especially for users with large contact lists.
Here's what you need to know about what's changed, what you might notice, and why it matters for your business.
## What's different
You might not *see* anything different, but you'll *feel* it. Searches are now dramatically faster across the board:
* **For high-volume businesses:** Contact searches that used to take 60 seconds or more to load will now load in under **1 second**
* **For most Heroes:** Expect contact search times to drop from around **0.7 seconds to just 0.1 seconds**
* **Visual updates:** When filtering your search, a few of the email filters that previously used the terminology "All time" have been changed to "Within the last year"
## A quick note on timing
With faster searches comes a small but important change to how the system loads your search results to provide the quickest and best response possible.
What does that mean for you?
* When a contact is updated—by filling out a form, making a purchase, getting tagged, updating a custom field, etc.—**it can take up to \~10 seconds** for that update to show in your search results
* Most of the time, you won't notice this delay. Sometimes, hitting search again a few seconds later will show the change
* Occasionally, you might catch the update in real-time, depending on when the background refresh hits
**Bottom line:** If something looks off right after an update, try re-running the search. It'll likely resolve right away.
## Search filter visual updates
Previously, when using the Contact filters to adjust your search, there was an option for "all time". The "all-time" option has been changed to "365 days."
**Why the change?**
Most email activity that impacts your deliverability or audience health happens in the first year. This update keeps your filters focused on the most relevant, recent data—so you can make smarter decisions faster.
Behind the scenes, this also helps Kajabi improve search speed and reduce data load, which lays the groundwork for faster email performance and fewer system timeouts—especially as your contact list grows.
The following filters will show 365 days:
* **Email Activity** - Has hard bounced in the last year (Yes/No)
* **Marketing Status** - Hard Bounced
* **Marketing Status** - Marked Spam
* **Marketing Status** - Manually Unsubscribed
* **Marketing Status** - Opted Out
## What else changed
* **Improved result relevance.** Searches prioritize better matches. For example, searching "Anne" will surface *Anne Smith* before *Maryanne Jones*.
* **More results, smarter order.** You may see more entries returned, but the most relevant ones will be listed first.
## Noticed something off
If a filter seems off or someone should rank higher in the results, let us know. The system is constantly being refined, and your feedback helps make it better for every Hero.
[Contact our support team](https://help.kajabi.com/hc/en-us/p/contact-us).
## Why it matters
This update isn't just about faster searches, even though that's a huge win. It's a foundational step toward smarter, more scalable contact management for Heroes at every stage of business.
Less waiting. More doing.
# Understand contact usage limits
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/contact-usage-limits
Manage your account effectively and avoid interruptions by staying within contact usage limits.
Understanding your **contact usage limits** helps you manage your account effectively and avoid interruptions to your business.
## What happens when you approach the contact limit
If you reach 90% of your contact usage, you will see an in-app notification and banner upon login:
If you hit 100% of your contact usage, you will receive an email notification and an updated in-app banner upon login:
You will be given 30 days to update or remove your contacts before your account is locked. After the 30-day grace period, you will be unable to access your account and will be required to upgrade to a higher plan or reach out to our support team to help you delete contacts.
## What happens when an account is locked
After the 30-day grace period, you will be unable to access your account and will be required to upgrade to a higher plan or reach out to our support team to help you delete contacts. During this time you will be able to log into your account but only to use the Account Settings pages to upgrade.
**Important:** Your customers' user experience will not change. They will still be able to engage with your website, emails, automations, courses, etc.
## Make room for contacts
### Upgrade
If at any point you choose to upgrade your plan, you can upgrade your account through your Account Settings. [Learn more](../../account-settings/billing/manage-your-subscription).
Choose the plan that best fits your growing business needs.
### Delete contacts
Don't want to change your plan? Consider removing contacts that are:
1. Not customers
2. Are unsubscribed
3. And not added in the last 60 days
Additionally, it is always a good idea to remove inactive, unsubscribed, or bounced contacts to make room for contacts.
[Learn to delete contacts](/articles/contacts/manage-your-contacts/how-to-delete-a-contact).
# Explore the Contacts tab
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/contacts-tab-overview
Tell contacts, Customers, and Subscribers apart, and organize your list with Segments, Filters, and Tags in the Contacts tab.
The **Contacts** tab is a built-in Customer Relationship Management System (CRM). All of your contacts are added to a single list to easily view, access, and manage their accounts. Within the Contacts tab you can manage existing contacts with Segments and Filters and add contacts to your site.
**Note:** Looking to add contacts to your site? [Learn to import contacts](../../contacts/manage-your-contacts/how-to-import-contacts-into-kajabi).
## Contacts, Customers, and Subscribers
Three terms describe the people in your Contacts tab, and they overlap. Knowing which is which helps you target your marketing and understand who receives your emails.
### Contacts
**Contacts** include any person in your Contacts tab. This may include contacts that have subscribed, unsubscribed, purchased an Offer, or have been granted an Offer.
For each contact added to your site, you can learn more by clicking into their [Contact Profile](../../contacts/manage-your-contacts/how-to-manage-your-contacts-profiles).
Your list opens with a set of [default Segments](../../contacts/manage-your-contacts/segment-your-contacts#default-segments) that split your contacts into common views:
* **All Contacts:** Every contact on your site, including Customers, Subscribers, and contacts who unsubscribed or never subscribed
* **Customers:** Contacts who have purchased or been granted an Offer
* **Subscribed:** Contacts who have consented to receive your marketing emails
* **Inactive:** Subscribed contacts who have not opened or clicked an email recently
* **Hard Bounced:** Contacts whose email address returned a permanent delivery failure
### Customers
A **Customer** is a contact who has completed a purchase or been granted an Offer on your site.
Customers are marked with a badge on their avatar in the Contacts tab:
How a Customer received access determines which automated emails they get:
* **Purchased an Offer:** The Customer receives the Offer Purchase Confirmation email, which contains a congratulatory message and a link to your site's Login Page. Review the [purchase flow of a customer](../../sales/offers/what-happens-when-a-customer-purchases-my-offer)
* **Granted an Offer:** The Customer receives the Offer Grant Confirmation email, plus the Member Welcome Email containing their login credentials. If you grant an Offer to an existing Customer, only the Offer Grant Confirmation email sends. [Edit the automated emails sent by your site](../../account-settings/notifications/edit-automated-email-notifications)
**Note:** Your Customer may receive additional emails if configured in the [Offer After Purchase Settings](../../sales/offers/how-to-include-additional-settings-for-your-offer).
### Subscribers
A **Subscriber** is a contact who has given consent to receive your [marketing emails](../../marketing/email-campaigns/what-are-marketing-and-transactional-emails). Subscribers are added to your site through a [Form submission](../../marketing/forms/create-and-build-your-form) or [imported onto your site](../../contacts/manage-your-contacts/how-to-import-contacts-into-kajabi).
This is where your contacts overlap. A Customer may also be a Subscriber if they are subscribed to receive your marketing emails, and a Subscriber may be a Customer if they have access to your Offers. Subscribers are not required to be Customers to receive marketing emails — as long as a contact has given permission, they are a Subscriber.
Not every contact in your Contacts tab is a Subscriber. A contact is not a Subscriber if they:
* [Manually unsubscribed](../../contacts/manage-your-contacts/how-auto-unsubscribe-helps-you-maintain-a-healthy-mailing-list#subscription-status) from your emails
* Returned a [hard bounced email](../../contacts/manage-your-contacts/how-auto-unsubscribe-helps-you-maintain-a-healthy-mailing-list)
* Did not confirm a [Double Opt-In Form](../../marketing/forms/how-to-set-up-a-form-with-double-opt-in)
* Were imported without **Subscribe to marketing emails** selected
A contact in any of these states will not receive your marketing emails.
A status of **Not confirmed** means the contact submitted a Form with Double Opt-In enabled but has not yet clicked the confirmation link in their email. That status cannot be changed to **Subscribed** manually. To prompt a new confirmation email, submit a Double Opt-In Form on their behalf. [Learn how to resubscribe a contact](../../contacts/manage-your-contacts/can-i-resubscribe-a-contact-if-i-accidentally-unsubscribe-them).
Check a contact's subscription status directly from the Contacts tab:
**Tip:** The Unsubscribed status also shows the action that triggered the unsubscribe. Review the [Subscription Status](../../contacts/manage-your-contacts/what-does-the-subscription-status-mean) for details.
## Segments
**Segments** allow you to design personalized marketing and efficiently manage your list.
Customize your Segments with Filters to best fit your business with a variety of Filter combinations.
[Learn more about Segmenting](../../contacts/manage-your-contacts/segment-your-contacts).
## Filters
Use **Filters** to build Segments and narrow your list.
Kajabi gives you a library of filter categories — covering everything from a contact's default and custom fields to their Offers, Products, Forms, Tags, and email activity — so you can organize your list by a contact's information or their activity on your site. Open your Contacts tab and click **Filters** to begin filtering your list.
[Learn how to apply filters to the Contacts tab](/articles/contacts/manage-your-contacts/apply-filters-to-your-contacts-tab).
## Bulk actions
**Bulk actions** help you perform various actions to multiple contacts to help streamline your processes.
This list of bulk actions include actions from applying a tag to subscribing to an email sequence.
[Learn more about bulk actions](../../contacts/manage-your-contacts/perform-bulk-actions-in-the-contacts-tab).
## Manage Tags
Your Contacts tab houses all the **Tags** you have created on your site and allows you to create additional tags:
Notice a pattern in the Contacts tab? Just as filters and segments help you organize your list, Tags are a powerful tool for efficiently managing your contacts.
[Learn to utilize Tags to organize and categorize your list](../../contacts/manage-your-contacts/tags-overview).
## FAQs
### What is the difference between a contact, a Customer, and a Subscriber?
Every person in your Contacts tab is a contact. A Customer is a contact who has purchased or been granted an Offer. A Subscriber is a contact who has consented to receive your marketing emails. A single contact can be both a Customer and a Subscriber, or neither.
### Can a contact be both a Customer and a Subscriber?
Yes. Buying an Offer and subscribing to marketing emails are independent. A Customer who opted in to your marketing emails is both, and a Subscriber who later purchases an Offer becomes both.
### Why isn't a Customer receiving my marketing emails?
Purchasing an Offer does not automatically subscribe a contact to marketing emails. Check the contact's subscription status in the Contacts tab — if it reads anything other than **Subscribed**, they will only receive transactional emails such as their purchase confirmation.
# Create a custom affiliate signup page
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/create-a-custom-affiliate-signup-page
Design a custom affiliate onboarding page using Kajabi Pages while capturing registrations.
Although the **Affiliate Signup Page** is not customizable, you can design a custom page with [Kajabi Pages](../../website/pages/pages-explained) to include your desired affiliate onboarding content. With your custom page, include your **Affiliate Signup Link** to capture affiliate registrations while customizing their onboarding experience.
**Note:** The Affiliate Program is only available with Growth and Pro Plans. See the [Kajabi Pricing page](https://kajabi.com/pricing) for the features included with each plan.
## Affiliate signup page
The **Affiliate Signup Page** is used for the main purpose of recording and tracking affiliate registrations and cannot be customized. This page can be accessed by simply sharing the **Affiliate Signup Link**:
1. Open the **Sales** tab from your Dashboard.
2. Click **Affiliates**.
3. Locate the **Affiliate Signup Link**.
4. Click **Copy**.
Sharing this direct link will display your Affiliate Signup Page:
**Note:** This page will only display if you have enabled [Affiliate Registrations](../../sales/affiliates/manage-your-affiliates#affiliate-registrations).
## Copy the unique affiliate signup link
To get started building your custom Affiliate Page, first copy your unique **Affiliate Signup Link**:
1. Open the **Sales** tab from the Dashboard.
2. Click **Affiliates.**
3. Then, click **Copy** next to your unique Affiliate Signup Link:
## Create a landing page
Now that you have copied your Affiliate Signup Link, generate your custom **Page**:
1. Open the **Website** tab from the Dashboard.
2. Click **Pages**.
3. Click **Landing** for Landing Pages.
4. Navigate to the top right corner.
5. Click **+ New Page**.
6. From there, select a Template that best fits your vision for your Affiliate Page:
By building your Affiliate Center with a custom Page, you gain full design flexibility to create a unique onboarding experience for your affiliates.
## Create a call to action with the affiliate signup link
In your Page, design your custom **Affiliate Signup Page** according to your brand and vision.
To capture registrations in your Affiliate Dashboard, be sure to connect your Affiliate Signup Link to your Page.
Create a **Call to Action** in your custom Page to create this connection:
1. In your desired Page Editor, click the Section you want to edit or [create a Section](../../website/pages/add-sections-to-your-pages).
2. Then, navigate to the sidebar panel.
3. Click **Add Content**.
4. Then, select **Call to Action**.
5. In the sidebar, locate **Button Action**.
6. Select **Go to a URL**.
7. In the field below the dropdown, paste in your unique Affiliate Signup Link copied in the previous step.
8. Then, [customize your Call to Action](../../website/pages/how-to-add-a-call-to-action-block-to-your-website-page-and-landing-page) appearance.
9. Be sure to click **Save** to keep your changes.
**Note:** When using the **Go to a URL** action, be sure to enter a full URL (e.g., [https://kajabi.com/](https://kajabi.com/)).
The steps to creating a Call to Action is a recommended method, but is not required to link your Affiliate Signup Link. Kajabi Pages gives you the flexibility to design your Page according to your vision with a variety of [Blocks](../../website/pages/add-blocks-to-your-page#block-types) and [Sections](../../website/pages/add-sections-to-your-pages) that can link your visitors to your Affiliate Signup Link.
Experiment with the different Blocks and Sections to design a Page that best fits your vision. See [Kajabi Pages](../../website/pages/pages-explained) for details.
# Understand single sign-on (SSO) support
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/does-the-system-use-single-sign-on-sso
Kajabi does not currently support single sign-on (SSO).
Currently, Kajabi does not support Single Sign On (SSO).
# Format a CSV for contact imports
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/format-a-csv-for-contact-imports
Resolve CSV import errors by converting the file to UTF-8 encoding in Excel or Numbers.
If you receive an error when importing contacts, your CSV file may not be formatted correctly. This article explains the most common formatting issue and how to fix it in Excel or Numbers.
## Understand the error
Kajabi's contact importer requires CSV files to use **UTF-8** encoding to import correctly.
The most common reason for this error is if a non-UTF-8 character such as "**Å**" is present in the .csv file. To successfully upload your .csv file, you will need to open your .csv file and change the file type.
The steps differ depending on whether you are using **Excel** on Windows or **Numbers** on macOS.
## Format in Windows
1. Open your .csv in **Excel**.
**Note:** If you use a different spreadsheet program, check their support documentation for instructions on how to download as a CSV UTF-8.
2. Select **File** and click **Save As**.
3. From the file type dropdown, select **CSV UTF-8 (Comma delimited) (\*.csv)**.
4. Click **Save**.
## Format in macOS
1. Open your .csv in **Numbers**.
2. Select **File**.
3. Select **Export To**, then select **.csv**.
4. In the export options, select **Advanced Options**, and specify **Unicode (UTF-8)**. If there is another .csv export option shown, click into the dropdown and choose **Unicode (UTF-8)**.
5. Confirm by selecting **Export** on the following screen.
## Troubleshoot data appearing in one column
If all your contact data appears in a single column after opening your CSV file, the file may be using a semicolon or tab as a delimiter instead of a comma. Kajabi's import tool requires comma-separated values.
**To fix this in Excel on Windows:**
1. Open a blank Excel workbook.
2. Click the **Data** tab.
3. Click **From Text/CSV.**
4. Select your CSV file and click **Import.**
5. In the preview window, set the **Delimiter** dropdown to **Comma.**
6. Click **Load** to import the data into separate columns.
7. Save the file as **CSV UTF-8 (Comma delimited)** using **File** > **Save As.**
**To fix this in Numbers on macOS:**
1. Open the CSV file in a plain text editor such as TextEdit.
2. Check whether values are separated by semicolons, tabs, or another character instead of commas.
3. Use **Edit** > **Find** > **Find and Replace** to replace all semicolons or tabs with commas.
4. Save the file and re-open it in Numbers to confirm the columns are correct.
5. Export as CSV UTF-8 following the steps in the [Format in macOS](#format-in-macos) section above.
## FAQs
### What columns does Kajabi require for a contact import?
The only required column for a contact import is **Email**. All other columns such as First Name, Last Name, and Tags are optional. Make sure the column headers in your CSV match Kajabi's accepted field names exactly. [Learn more about importing contacts](https://help.kajabi.com/articles/contacts/manage-your-contacts/how-to-import-contacts-into-kajabi).
### Can I import a CSV file with extra columns?
Yes. Kajabi will only import the columns it recognizes. Any extra or unrecognized columns will be ignored during the import process.
### What happens to contacts that already exist in my account?
If a contact with the same email address already exists in your account, Kajabi will update their information with the data in your CSV rather than creating a duplicate contact.
# Hide contacts
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/hiding-your-contacts
Declutter the Contacts tab by hiding contacts you don't need to see regularly.
If your contact list feels too cluttered, you can hide contacts from your **Contacts** tab to keep things organized.
## Hide a contact
1. Open the **Contacts** tab from the Dashboard.
2. Locate the contact you wish to hide.
3. Click the name of the contact.
4. Open the `…` icon to access **More Actions**.
5. Select **Hide**:
## Understand what hiding does
Hiding a contact or member simply hides them from view in your **Contacts** tab.
Filtering or segmenting your contacts will not display hidden contacts, but searching with their contact information (such as name or email) will display the hidden contact:
## FAQs
### Can hidden contacts receive marketing emails?
Yes, if your hidden contact is a subscriber and you include them in your mailing list, the contact can receive your marketing emails.
Learn about [subscribers](../../contacts/manage-your-contacts/contacts-tab-overview#subscribers) for more details.
### Can hidden customers access their Library with purchased Products?
Yes, if your hidden contact is a member they will be able to log in to their Library to access their purchased Products.
Learn about [customers](../../contacts/manage-your-contacts/contacts-tab-overview#customers) for more details.
### Can hidden contacts leave comments?
Yes, hidden contacts will have the same comment functionality as visible contacts depending on how you have set up your comments in your digital Products.
Learn to [manage comments](../../products/courses/how-to-manage-course-comments) for more details.
# Add a note to a contact profile
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/how-to-add-a-note-to-a-contact-profile
Create and manage notes on contact and customer profiles in the Contacts tab.
## Add notes
Add and edit notes for your contacts to help you manage your customers and contacts.
### Add notes with the contact preview
1. Open the **Contacts** tab from your Dashboard.
2. Select the name of the contact you wish to add your note to.
3. Click the `…` icon to open more actions.
4. Click **Add a note**.
5. Enter your desired note.
6. Click **Add Note**:
### Add notes in the Contacts Profile
1. Open the **Contacts** tab from your Dashboard.
2. Select the name of the contact you wish to add your note to.
3. Click **Open full profile** from their contact preview.
4. Open **Notes**.
5. Enter your desired note.
6. Click **Add Note**:
## Delete notes
Remove notes to clean up the Contacts Profile of your contact or customer.
### Remove a note
1. Open the **Contacts** tab from your Dashboard.
2. Select the name of the contact you wish to add your note to.
3. Click **Open full profile** from their contact preview.
4. Open **Notes**.
5. Locate the note you wish to remove.
6. Click **Delete**.
7. Confirm your desire to delete the note by clicking **Delete** again when prompted:
**Tip:** Contact Notes are private and can only be seen by the site owner.
# Collect additional information from existing contacts
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/how-to-collect-additional-information-from-existing-contacts
Gather more details from contacts already on your list using a landing page form and email sequence.
Depending on the required fields included in your Opt-in Forms, you may have a limited amount of information from existing contacts. In certain cases, you may want to collect more information from the contacts you already have on your list.
## Build a landing page with a form attached
### Create a Form
1. Open the **Marketing** tab from your Dashboard.
2. Select **Forms**.
3. Create a Form by choosing **+ New Form**.
4. Add Form Fields for the additional information you want to collect such as Address, City, State, and Zip Code.
5. Click **Save**.
### Add a Form to a Landing Page
1. Click the **Website** tab.
2. Click **Pages**.
3. Click **+ New Page** and create a Landing Page.
[Create a Page with a Form Block](../../website/pages/how-to-add-a-form-to-your-page) for details.
## Share the page with existing contacts
### Create an email sequence
1. Open the **Marketing** tab from the Dashboard.
2. Click **Email Campaigns**.
3. Select **+ New Campaign** in the top right corner.
4. Select **Email Sequence**.
5. Enter an **Internal Title** for your email in the field.
6. In your Email Sequence, set the **Day** to **0** to make sure this email will be sent to your subscribers immediately.
### Add the opt-in page link
1. In the body of the email, click the **Button** block and paste the URL of the **Opt-in Landing page** just like you would with a Call to Action button.
2. Customize the Text to Display on the button and the Button Color.
3. Once you finish customizing your button, click **Ok**.
4. After customizing your Email Subject and Email Body, click **Save**.
### Specify recipients
1. In the top menu, click **Subscribers**.
2. Click **+ Add Subscribers**.
3. Under the **Who will receive this sequence?** header, click open the dropdown menu to select who will receive this email.
4. You will now be able to collect additional information from Contacts on your list:
**Note:** When your Contacts submit this Form, it will update their current contact information from your List. A duplicate Contact will not be created (so long as they use the same email address).
# Define contact activity
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/how-to-define-customer-activity
Understand which actions count as activity on Kajabi and contribute to a customer's last activity info.
## Customer last activity
With Kajabi, view a customer's last activity to gauge engagement with your site. [Manage customer profiles](/articles/contacts/manage-your-contacts/how-to-manage-your-contacts-profiles) for additional details.
### View a customer's last activity
1. Open the **Contacts** tab from your Dashboard.
2. Select the Customer you wish to view.
3. Click **Open Full Profile**.
4. Click the **Info** tab from the Customer's Profile.
5. View the Customer's **last activity at** info:
**Tip:** Filter your list by activity to personalize your marketing. [Apply filters to the Contacts tab](/articles/contacts/manage-your-contacts/apply-filters-to-your-contacts-tab) to refine results.
## Actions considered "Activity"
Activity is registered when a Customer performs an action on your site.
An easy way to think of Activity is when a page load occurs.
This includes:
* [Creating an account](../../sales/offers/what-happens-when-a-customer-purchases-my-offer#h_01EQ1ZA3X2XXC2XKASCYQGV24A) on your site by making a purchase
* [Logging into your site](../../website/pages/how-to-build-your-login-page)
* Opening and refreshing the [Library page](../../website/pages/customizing-your-library-page)
* Opening and refreshing a [Product page](../../products/courses/courses-overview)
* Clicking the Start or Resume Button in a Product
* Clicking Next Module and Next Lesson in a Product
* When the [Customer posts a comment in a Product](../../products/courses/how-to-manage-course-comments#h_4f5e7d3f-c17f-4e8e-a941-fa6f5f0da793)
* When the Customer refreshes a [Product Lesson page](../../products/products-overview/kajabi-products-overview#what-is-a-post)
* Commenting in a Community Product
* Creating a Lesson in a Community Product
* Sending a direct message to another Customer in a Community Product
* "Liking" a Lesson in a Community Product
## Actions not considered "Activity"
This includes when:
* A [Product Lesson video](../../products/products-overview/kajabi-products-overview#what-is-a-post) is played
* A Product Lesson video is completed
* A Product Lesson Downloadable file is clicked
* Embedded content is played
* A [Product Lesson Audio](../../products/courses/how-to-upload-an-audio-file-to-a-product-lesson) is played
* The ["Mark as complete" button](../../courses/courses-faq/how-to-customize-your-course-product-with-premier#h_7f83cba3-9d12-4423-8060-303e96f88408) in a Product Lesson Body is clicked
* A Customer remains in a Product or Lesson page without refreshing
* A [Form is submitted](../../marketing/forms/how-to-view-form-submissions)
* An [Assessment](../../contacts/create-manage-and-share-assessments/create-and-customize-assessments) is completed
* If an Offer is purchased, but the [account credentials are not created](../../sales/offers/what-happens-when-a-customer-purchases-my-offer#h_01EQ1ZA3X2XXC2XKASCYQGV24A)
* An Email Sequence or Email Broadcast is opened or clicked
# Delete a contact
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/how-to-delete-a-contact
Permanently remove contacts and customers, including all related records and future payments.
Deleting a contact or customer permanently removes them and all associated records from your site.
**Important:** Deleted contacts or customers are **permanently** removed including all records related to the customer such as [product progress](../../analytics/report-product-progress) and cannot be recovered. If your customer has future payments (such as a recurring subscription Offer), their future payment transactions will be canceled upon deletion.
## Delete a contact
1. Open the **Contacts** tab from your Dashboard.
2. Select the Contact or Customer you want to delete.
3. Open the **More Actions** menu.
4. Click the **Delete** icon.
5. Read and follow the directions for the Deletion Warning and popup to confirm your intent to delete.
6. Click **Permanently Delete** to confirm:
Looking to delete multiple contacts in bulk? [Perform bulk actions in the Contacts tab](../../contacts/manage-your-contacts/perform-bulk-actions-in-the-contacts-tab#h_768b7930-8a1c-4504-b0bf-18b62996d1ac) to manage contacts at scale.
**Note:** If you [re-import](../../contacts/manage-your-contacts/how-to-import-contacts-into-kajabi) a deleted contact, their previous information will not be restored. Attempting to resubscribe a contact by deleting and re-importing will require a double opt-in confirmation from the contact to resubscribe the deleted contact to your marketing emails.
# Edit contact information
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/how-to-edit-your-contacts-information
Update the name, email, and form submission answers for contacts from the Contacts tab.
Edit contact information to update names, emails, and any additional fields you have set up in your Forms.
## Contact details
On Kajabi, manage contact information with the Contact Details page. By editing a contact's profile you can update their:
* Name
* Email
In addition to name and email, you can update any additional fields you may have set up in your Forms.
For example, you can collect and update:
* Address
* Phone Number
* Tax ID
* External User ID for third-party integrations
* Custom Fields
**Tip:** Set up a page with a Form to allow users to update their details on an individual basis. As long as your user submits the form with the same email address connected with their account, their user details will update. [Learn to add a form to a page](../../website/pages/how-to-add-a-form-to-your-page)
## Edit contact information
Edit contact information with quick actions made available with the contact preview or update their information through their full profile.
### Edit contact information with quick actions from the contact preview
1. Open the **Contacts** tab from your Dashboard.
2. Search the name or email address of the **Contact** you want to edit.
3. Click on the **Contact's** name.
4. Select the pencil icon to **Edit Contact**:
5. Update the contact's information.
6. Click **Save** to keep and apply your changes:
### Edit contact information through their full profile
1. Open the **Contacts** tab from your Dashboard.
2. Search the name or email address of the **Contact** you want to edit.
3. Click on the **Contact's** name.
4. Select **Open full profile**:
5. Click **Edit Details**.
6. Update the contact's information.
7. Click **Save** to keep and apply your changes:
# Export contacts
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/how-to-export-your-contacts
Download a CSV of customers and contacts from the Contacts tab.
Learn how to export your contacts and customers from the Contacts tab. This can be done all together, one by one, or based off a filtered list. After the export is complete, it'll be sent to the email that you have on file.
## Export contacts
1. From the Dashboard, click **Contacts.**
2. Filter or Segment the contacts you wish to export.
3. Select the contacts you wish to export or click **Select All** to export the entire Segment.
4. Click open the **Bulk Actions** dropdown menu.
5. Select **Export.**
6. Click **Submit** to confirm. Your exported list will be emailed to the email address associated with your Kajabi account.
Your exported list will be emailed to the email address associated with your Kajabi account.
6. Click **Submit** to acknowledge the popup.
**Tip:** Create meaningful groups to export by [Segmenting your contacts](../../contacts/manage-your-contacts/segment-your-contacts). Your contact export is limited to the contacts limit of your [Kajabi Plan](https://kajabi.com/pricing).
## Download the exported list
Download the CSV from the email within 3 days of receiving it before the link expires.
If you are unable to download the CSV within the 3 days of receiving the email, simply repeat the steps above to export your list.
**Note:** Your exported list will be sent in an email with the subject line **Contact export process completed.** The download link expires after 3 days. If it expires, repeat the export steps above to receive a new link.
1. Open the email inbox associated with your Kajabi account.
2. Open the email and click **download the CSV**:
**Note:** Clicking the download link may open the CSV as raw text in your browser instead of saving it as a file. If this happens, right-click the link in the email and select **Save link as** to download it directly to your computer. Once downloaded, open the file in a spreadsheet application such as Microsoft Excel or Google Sheets.
# Import contacts into Kajabi
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/how-to-import-contacts-into-kajabi
Use the import tool to add and update contacts on Kajabi using CSV files, copy and paste, or direct entry.
The **Kajabi Contacts Importer Tool** gives you the option to upload a comma-separated value (CSV) file with multiple custom data fields, copy and paste contacts from a spreadsheet, or type info directly into the import table.
## Import file requirements overview
The Kajabi Contact Importer tool uses intelligent column mapping.
It recognizes column headers in your .CSV file and then organizes the data accordingly. This allows you to upload your contacts with up to 50 data fields and up to 100 tags per upload. You must prepare your .CSV file using the provided template.
**Note:**
* You can import up to **40,000** contacts daily with an active Kajabi account.
* The Contact Import feature is only available to subscribing Kajabi users. If you are on your trial period with Kajabi, it will not be available until your trial expires and your paid subscription begins.
## Prepare a CSV file using the template
1. From the Dashboard, click **Contacts**, then **All Contacts**.
2. Click **+Add contacts**, then select **Import CSV**.
3. Click **Download our CSV template**.
This provides the recommended columns for you to fill out and an example row.
Once you've filled out the template with your list, upload the file to Kajabi's contact importer and you'll see the columns automatically map to our required fields.
## Prepare a downloaded .CSV file from a third-party CRM for importing
For the Kajabi Contact Importer to organize your contacts' data best, it is critical to label the column headings in the first row of the spreadsheet.
For the best results, start with **Email Address**, followed by **Name**, and then the other fields you would like to retrieve.
**Note:** The email column is the only one that is required.
Keep in mind the maximum number of Header Fields Kajabi can import is 50.
## Prepare a blank .CSV file for importing
1. Get started by opening an existing .CSV file or a blank worksheet in a spreadsheet application like Google Sheets or Excel.
2. Create and label a **column** in the first **row**. We recommend naming the first column Email Address:
3. In the next column of the same row, create and name additional columns, such as; **Name**, **Phone Number**, and other information fields you would like to import to Kajabi:
**Note:** Kajabi requires a single name field to function properly. If your CSV export contains two columns for first and last name, convert your multiple name column into a single name column.
For example, with a spreadsheet like Google Sheets, you can use the formula `=CONCATENATE(A2," ",B2)` to combine the first and last name fields in Column A and Column B into a single name column. [Learn more](../../contacts/manage-your-contacts/how-to-use-google-sheets-to-combine-first-and-last-name)
4. Then, paste the contact information into the relevant cells in the spreadsheet:
**Note:** Custom fields using the Country data type must be in the capitalized, 2-letter format (e.g., US not USA).
5. Add up to 50 data fields and 100 tags.
6. **Save** or **Download** the file as a .**CSV** file.
**Note:**
* You can have a max of **20,000** rows in the file per import.
* The max file size for each import is **30MB**.
* Be sure to create different header titles for each column to avoid the "Mapped header has duplicate field ids" error message. If you wish to add multiple tags to your contacts, create a single "Tag" column and separate each tag with a comma or import your contacts in batches with a single Tag column for each batch of tags.
## Import contacts
1. Open the **Contacts** tab from the Dashboard.
2. From the Contact Manager dashboard, click the **+ Import Contacts** button or **+ Add Contacts** to begin adding contacts to your site.
3. Then select how you would like to import your contacts:
* **Import CSV** to upload multiple contacts
* **Add Single Contact** to import an individual contact quickly and easily to your list
### Import a single contact
1. Navigate to your **Kajabi Dashboard**.
2. Go to your **Contacts Page** and click **Add contacts**.
3. Click **Add Single Contact**.
4. Complete the **Name** and **Email** fields.
1. Always double-check any Email you enter for proper formatting and the correct value.
5. You may also **Add a Tag** to the contact for segmentation or **Grant Offers** to the contact.
6. Select the **Subscribe to marketing emails** field.
7. Click **Save**.
### Import CSV
1. If you choose to import a CSV, select your preferred method: **Upload File** or **Copy/paste from file**.
2. Click **Upload File** and select your prepared .CSV file into the file picker.
3. Or, click **Copy and Paste from file** and then copy and paste the rows from a prepared .CSV file into the text box.
4. **Click Continue to Import Actions**.
**Note:** You may encounter the error **Invalid CSV format. CSV rows must include commas** if you're only using the email column. To fix this, add a comma after each email address.
## Column mapping
The Contact Importer uses intelligent column mapping, which recognizes column headers and then organizes the data accordingly.
Make sure to review and edit the columns from the .CSV file. Click the icon in the top right corner of the column to choose an **Existing Field** or a **New Field** from the Contacts tab, or **Skip** the column and waive the accompanying data.
## Create custom fields during the import process
If the field is not recognized, Kajabi will then prompt you to create a Custom Field.
For instance, if the header is something specific such as a company name, Kajabi will ask to create a field.
This field will then be recognized when importing future contacts.
## Bulk actions
* **Grant an offer**: Grant your imported contacts an Offer upon import.
* **Add Tags**: Add an existing tag to your imported contacts or create a tag on the fly.
* **Subscribe to email marketing:** Click the checkbox to subscribe your imported contacts to your email marketing list. Keep in mind, this could harm your deliverability if your contacts did not opt-in to your mailing list.
**Warning**: Only check this box for contacts who explicitly agreed to receive marketing emails from you — not contacts from purchased lists, scraped sources, or old lists where consent is unclear. Importing non-consenting contacts as subscribed risks spam complaints, damages your sender reputation, and may violate CAN-SPAM, GDPR, or CASL depending on where your contacts are located. When in doubt, leave this unchecked and use a double opt-in form to let contacts subscribe themselves.
**Important:** Import contacts as subscribers that have explicitly agreed to join your mailing list to comply with [CAN-SPAM](../../marketing/email-campaigns/what-is-can-spam) and all laws and regulations applicable to you and your business.
[Learn more about Email List best practices](../../marketing/email-campaigns/best-practices-for-growing-and-maintaining-your-contact-lists)
## Confirmation
**Kajabi will send a confirmation email to the email address associated with your account once the upload is complete.**
This email will include:
* The total count of successfully imported contacts with both updated and created contact counts combined.
* A link to a file that explains which contacts weren't uploaded along with the error reason.
The file of rejected contacts includes a record of rejected contacts and rows, along with an explanation of the error. The reason for each rejection appears in the errors column. [Understand the import errors explains the most common ones.](#troubleshooting-import-errors)
**Note:** The download link in the confirmation email expires 3 days after your import finishes. Download the file before then, or run the import again to generate a fresh one.
**What happens if there is a duplicate contact?**
Kajabi prevents the creation of duplicate contacts to help you keep an organized list so long as the same email address is used when added to your site.
[Learn more](../../contacts/manage-your-contacts/how-to-check-for-duplicate-contacts)
## Automatic emails sent after import
When importing your users onto Kajabi they will be created as **Contacts** or as **Customers**.
[Learn more about the differences between contacts, customers, and subscribers.](../../contacts/manage-your-contacts/contacts-tab-overview)
## Import contacts
A user is imported as a **Contact** when they are added to your Kajabi list **without** being granted an Offer:
Contacts **will not** receive an automatic email of any kind when you import them to your Kajabi list.
[Learn about the automated emails sent by your site](../../account-settings/notifications/edit-automated-email-notifications)
## Import customers
A user is imported and created as a Customer when they are granted an Offer during the import process:
Customers will receive the:
* Customer Welcome Email
* As well as the Offer Grant Confirmation email
[Learn more about the automated emails sent by your site](../../account-settings/notifications/edit-automated-email-notifications).
## Troubleshooting import errors
Kajabi checks every email address as it imports, and rejects any address that can't be delivered to or that would damage your sender reputation. A rejected row doesn't stop the rest of the import. The rejected rows are listed in the errors file with a reason. Same messages appear under the Email field when you use **Add Single Contact**.
### Undeliverable address
The address can't receive mail. The mailbox doesn't exist, or the domain isn't real. Mail sent to this address would bounce.
**What to do:**
* Use the suggestion if one is shown; otherwise check the domain for a typo.
* If the address is genuinely dead, remove it.
**Note:** Attempting to re-import an undeliverable address will simply cause it to fail again, and bouncing mail hurts your sender reputation.
### High-risk address
The address can receive mail, but sending to it is risky: a suspicious domain, a disposable throwaway address, or a mailbox likely to go dead soon.
**What to do:**
* Check for a typo first
* Ask for a personal address instead of a role address
* Ask the person to re-subscribe with a permanent address instead of a throwaway.
### Please double check your email address
Imports that receive this error generally have two causes:
1. The address isn't a valid email format — a missing @, a stray space, a trailing comma, etc.
2. The domain is on Kajabi's spam block list.
**What to do:**
Open the row in the errors file and check the address character by character. If the address is well-formed and still fails, the domain is likely on Kajabi's block list. **Do not try re-importing the address repeatedly** — repeated attempts won't resolve a blocked domain and won't help your case with support. [Contact Kajabi Support](https://help.kajabi.com/articles/resources/support/how-to-contact-kajabi-support) to have the domain reviewed.
### **Don't use address aliases as a workaround.**
If an address is rejected, substituting a modified version (e.g., adding `+1` to the username) is not a supported fix and can cause delivery failures. [Contact Kajabi Support](https://help.kajabi.com/articles/resources/support/how-to-contact-kajabi-support) to resolve the underlying rejection.
## FAQs
### **Do rejected rows stop the rest of my import?**
No — every valid row still imports.
### **Why was an address rejected on import when the same person checked out fine?**
Checkout accepts high-risk addresses; import does not.
### **Can I re-import a contact that was rejected?**
Yes — fix the address and import again. Kajabi matches on email, so a corrected address creates the contact and a re-imported existing contact is updated rather than duplicated.
# Manage contact profiles
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/how-to-manage-your-contacts-profiles
Track activity, perform actions, and update details from a contact's profile page.
Contact profiles let you track activity, perform actions, and manage details for each contact and customer on your site.
## Access a contact's profile
1. Open the **Contacts** tab from the Dashboard.
2. Select the name of the person you wish to view.
3. Click **Open full profile**:
Customer Profiles include different features than Contact Profiles. Refer below for the different features. For more details, read [Explore the Contacts tab](../../contacts/manage-your-contacts/contacts-tab-overview).
## Customer profile features
### Lifecycle
#### Track a Customer's lifecycle including
* Offers Purchased and Granted
* Email Campaigns sent
* Email recipient actions on broadcast and sequence emails (e.g., opened, clicked, unsubscribed, complained, or bounced)
* Forms submitted
* Emails sent from an Automation, shown as *Received automation email* with a **View Automation** link to the Automation that sent it
* Automation enrollments, shown as *Enrolled in Automation: \[name]* with a status of Active, Paused, Completed, or Error
* Tags added, shown on the timeline as *Tagged with \[tag name]*
* How the contact was created, shown as *Contact created via \[source]* (for example, Form Submission, Import, or Offer Purchase)
* **Lifespan**: number of days from start date (date added to Contacts through import, purchase, or opt-in)
* **Purchases**: number of purchases made and Offers Granted
* **Net Revenue**: Net revenue generated by Customer
**Note:** The timeline loads 20 events at a time. You can page through up to the 500 most recent events, and filtering by an event type shows the 500 most recent events of that type.
**Note:** Tag removals are not tracked. If you remove a Tag from a contact, its *Tagged with* event no longer appears on the timeline, so the timeline is not a complete Tag history. Automation email events are recorded going forward, so automation emails sent before this appeared on the timeline may not be shown.
### Info
* Added on date
* Net Revenue
* [Subscription to Marketing Emails Status](../../contacts/manage-your-contacts/how-auto-unsubscribe-helps-you-maintain-a-healthy-mailing-list#h_549ed792-86b8-41dd-8aa1-eeae61b70b60)
* Customer Start Date
* Sign in count: total number of sign ins
* Last activity at: The date and time of the Customer's last activity on your site. [Learn more](../../contacts/manage-your-contacts/how-to-define-customer-activity)
* Additional Info: Customer ID & Products owned
### Purchases
* Offers Purchased
* Offers Granted (this includes information about the person that granted the Offer: Owner or account user.)
**Note:** In the event of an [Account User](../../account-settings/users/account-users) granting, revoking, creating a manual purchase, or canceling a Customer's Offer or Product access, you can see the person responsible (noted by their email address) by navigating to the Customer and viewing their Purchases tab.
### Products
* Products owned by Customer
### Notes
* Add notes.
* Review and remove previous notes.
### Edit details
Edit Customer Details to update the name, email, and form submission answers of Customers.
* **Name**
* **Email**
* **External user id** for third-party integrations
* **Contact Information**
* **Custom Fields**
Read [Edit contact information](../../contacts/manage-your-contacts/how-to-edit-your-contacts-information) for details.
### Send password
Send a [password reset link](../../contacts/manage-your-contacts/how-to-reset-your-customers-password) to a Customer.
### More actions
* **Mute** Customers. Read [Muting Customers](https://help.kajabi.com/hc/en-us/articles/360041542213) for details.
* **Hide** a Customer's profile from the Contacts tab.
* **Grant Offers** to Customers. Read [Grant an Offer](../../sales/offers/how-to-grant-an-offer) to learn more.
* **Create a manual purchase** to charge a customer's card and deliver offer access without a checkout link. Read [Create a manual purchase](/articles/sales/kajabi-payments/manual-purchases) to learn more.
* **Change Password** for a Customer.
* **Delete** a Customer permanently. Read [Delete a Customer](../../contacts/manage-your-contacts/how-to-delete-a-contact) for details.
### Tags
Add Tags to filter and segment your List to easily organize and categorize it. Tags can be used when sending Email Campaigns and creating Automations. Read [Use Tags](../../contacts/manage-your-contacts/tags-overview) to learn more.
## Contact profile features
### Lifecycle
#### Track a Contact's lifecycle including
* Email Campaigns sent
* Email recipient actions on broadcast and sequence emails (e.g., opened, clicked, unsubscribed, complained, or bounced)
* Forms submitted
* Emails sent from an Automation, shown as *Received automation email* with a **View Automation** link to the Automation that sent it
* Automation enrollments, shown as *Enrolled in Automation: \[name]* with a status of Active, Paused, Completed, or Error
* Tags added, shown on the timeline as *Tagged with \[tag name]*
* How the contact was created, shown as *Contact created via \[source]* (for example, Form Submission, Import, or Offer Purchase)
* **Lifespan:** number of days from start date (date added to Contacts through import or opt-in)
* **Purchases:** number of purchases made (As a contact, this will appear as a 0 until converted into a Customer)
* **Net Revenue:** Net revenue generated by a Contact (As a contact, this will appear as a 0 unless converted into a Customer with a Purchase)
**Note:** The timeline loads 20 events at a time. You can page through up to the 500 most recent events, and filtering by an event type shows the 500 most recent events of that type.
**Note:** Tag removals are not tracked. If you remove a Tag from a contact, its *Tagged with* event no longer appears on the timeline, so the timeline is not a complete Tag history. Automation email events are recorded going forward, so automation emails sent before this appeared on the timeline may not be shown.
### Info
* Added on date
* [Subscription to Marketing Emails Status](../../contacts/manage-your-contacts/how-auto-unsubscribe-helps-you-maintain-a-healthy-mailing-list#h_549ed792-86b8-41dd-8aa1-eeae61b70b60)
* Additional Info will display if additional info applies (e.g., [custom field](../../marketing/forms/how-to-add-and-edit-fields-on-a-form) submissions in a Form)
### Purchases
This will remain empty unless converted into a Customer.
### Products
This will remain empty unless converted into a Customer.
### Notes
* Add notes.
* Review and remove previous notes.
### Edit details
Edit Contact Details to update the name, email, and form submission answers of Contacts.
* **Name**
* **Email**
* **Contact Information**
* **Custom Fields**
Read [Edit contact information](../../contacts/manage-your-contacts/how-to-edit-your-contacts-information) for details.
### More actions
* **Hide** a Contact's profile from the Contacts Dashboard.
* **Grant Offers** to a Contact and convert into a Customer. Read [Grant an Offer](../../sales/offers/how-to-grant-an-offer) to learn more.
* **Create a manual purchase** to charge a customer's card and deliver offer access without a checkout link. Read [Create a manual purchase](/articles/sales/kajabi-payments/manual-purchases) to learn more.
* **Delete** a Contact permanently. Read [Delete a Customer](../../contacts/manage-your-contacts/how-to-delete-a-contact) for details.
### Tags
Add Tags to filter and segment your List to easily organize and categorize it. Tags can be used when sending Email Campaigns and creating Automations. Read [Use Tags](../../contacts/manage-your-contacts/tags-overview) to learn more.
# Manually add a customer to a site
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/how-to-manually-add-a-new-customer-to-your-site
Add a single Customer from the Kajabi dashboard and optionally grant an Offer at the same time.
Add a single Customer from the Kajabi dashboard and optionally grant an Offer at the same time.
## Add a customer
**Note:** Importing contacts onto Kajabi requires an active account. Trial accounts may receive an error when attempting to import contacts onto Kajabi.
1. Click to expand the **Contacts** section in the left sidebar.
2. Click the **All Contacts** link to navigate to the contacts page.
3. Click the **+Add contacts** dropdown.
4. Select **Add Single Contact** to open the form.
5. Fill the **First Name**, **Last Name**, and **Email** fields.
6. Select the extra actions you wish to apply to your contact
1. **Grant offers**
2. **Add tags**
3. **Subscribe to marketing emails**
4. **Subscribe to Newsletter**
7. Click **Save** to finalize the contact creation.
8. Confirm the contact is created and the offer is granted, completing the task.
**Tip:**
* Add and grant an Offer to multiple Customers simultaneously by using the **bulk import** or **copy/paste** option. [Learn to import multiple contacts to your site on Kajabi.](../../contacts/manage-your-contacts/how-to-import-contacts-into-kajabi)
* Having trouble importing your CSV? [Troubleshoot your CSV formatting](../../contacts/manage-your-contacts/having-issues-formatting-a-csv-for-contact-imports).
**Note:** After adding the contact and creating them as a Customer, your Customer(s) will receive login credentials from the Customer Welcome Email along with the Offer Grant confirmation email sent by your site. Learn how to [edit the automated emails sent by your site](../../account-settings/notifications/edit-automated-email-notifications).
## FAQs
### Do trial accounts support importing contacts?
No. Importing contacts onto Kajabi requires an active account. Trial accounts may receive an error when attempting to import contacts onto Kajabi.
### What emails do customers receive after I add them?
They receive login credentials from the Customer Welcome Email and an Offer Grant confirmation email.
### Can I grant an offer to multiple customers at once?
Yes. Use the **bulk import** or **copy/paste** option to add and grant an Offer to multiple Customers simultaneously.
# Merge contacts
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/how-to-merge-contacts
Combine duplicate contacts when a contact has created two accounts with separate emails on a site.
When a contact has purchased or been granted access using two different email addresses, **merging** combines their records into a single account so they can access all of their Products from one login.
## Find duplicate contacts
Kajabi uses email addresses to identify contacts, which helps prevent duplicates in most cases. As long as a contact uses the same email address when purchasing an Offer or submitting a Form, their information is stored in a single contact record. However, if a contact uses different email addresses to purchase an Offer, submit a Form, or is added manually with a different email address, they appear as separate contact records.
To check for a duplicate:
1. From the Dashboard, click **Contacts.**
2. Click the search bar and enter the contact's name.
3. Press **Enter** to search.
**Note:** Kajabi does not currently have a bulk duplicate detection feature. Duplicates can only be identified by searching for a specific contact by name. As a workaround, export your contact list as a CSV and use a spreadsheet application such as Excel or Google Sheets to identify duplicate names or email addresses across your list. [Learn how to export your contacts](https://help.kajabi.com/articles/contacts/manage-your-contacts/how-to-export-your-contacts#export-contacts).
## How merging works
**Note:** With the merging tool, you can merge up to two contacts at once.
Merging accounts will leave your Customer with one account containing all of their purchased or granted Offers.
## What happens when I merge two contacts?
Merging contacts will combine, disassociate, or delete information from the Secondary Contact to merge into the Primary Contact.
### Combined
* **Offers**: Paid, Free, Granted, Revoked, Inactive and Active Offers will transfer to the Primary Contact, unless the [Active Offer is an Active Subscription payment](../../contacts/manage-your-contacts/how-to-merge-contacts). Revoked or deactivated Offers are not granted or reactivated upon Merge.
* **Form Submissions**: Submission data is not directly added to the Primary Contact's Customer Info. The Form Submission ID carries over, and the data associated with the submission can be viewed by clicking on the Form.
* **Purchase History**: All purchases, refunds, failed payments, and cancellations carry over and remain viewable within the Primary Contact.
* **Unique Product Progress**: If combined Products are unique (not duplicates), then Product Progress for the Secondary Contact is kept for all Products.
### Disassociated
* **Email Records**: Opens, clicks, and unsubscribes are not destroyed and continue to count toward general analytics, but neither the Primary nor Secondary Contact remains associated with these records.
### Deleted
* **Email Notification Settings**: The email notification settings associated with the Secondary Contact are disregarded and deleted.
* **Duplicate Product Progress:** If combined Products are duplicates, Product Progress for the Primary Contact is kept, and Product Progress for the Secondary Contact is deleted.
## What will not happen when I merge contacts?
* Automations are not triggered based on a merge action.
* A Secondary Contact with an active subscription cannot be merged.
* Tags are not merged, to avoid future complications.
* Email statistics and settings associated with the Secondary Contact are not associated with the Primary Contact, though the stats remain available for general reporting purposes.
**Note:** You can merge up to two contacts at a time. To combine more than two duplicate records, repeat the merge process, merging one additional contact into the Primary Contact each time.
## Identify the primary account
Before merging, identify which contact will be the Primary Contact and remain after the duplicate, or Secondary Contact, is merged. Choosing a Primary Contact overwrites all of the Secondary Contact's info, so select the correct contact carefully. See [How merging works](#how-merging-works) for a full breakdown of what transfers, disassociates, or is deleted.
Choosing a Primary Contact's info will overwrite all of the Secondary Contact's info.
[Review the process of a merge](#what-happens-when-i-merge-two-contacts).
Be sure to select your primary account with care to ensure that the correct contact remains.
## Merge accounts
After identifying your primary contact, use the merge contacts feature in your Contacts tab:
1. From the Dashboard, click **Contacts.**
2. Select any two contacts you want to merge.
3. Open the **more octions (...)** menu.
4. Select **Merge contacts**.
5. Select the **Primary Contact.**
6. Click **Confirm merge** to combine your contacts into the Primary Contact.
**Note:** The **Merge contacts** option only appears in the **more options (...)** menu when two applicable contacts are selected.
## FAQs
### Can I merge more than two contacts at once?
No. Kajabi only supports merging two contacts at a time. To combine three or more duplicate records, merge them into the Primary Contact one pair at a time.
### How do I prevent duplicate contacts from being created?
Encourage customers and subscribers to use the same email address every time they purchase an Offer or submit a Form. If you are manually adding a contact, check whether they already exist in your Contacts tab first to avoid creating a duplicate.
# Use Google Sheets to combine first and last name
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/how-to-use-google-sheets-to-combine-first-and-last-name
Combine the first and last name into a single column in a CSV file to successfully import multiple contacts onto a site.
## Why combine the first and last names?
To import multiple contacts onto your site you can upload a CSV file or copy/paste from a CSV file.
However, Kajabi requires a single name field to function properly with the import contacts tool.
If your CSV export contains two columns for the first and last name you can use functions to combine the separate columns into a single separate column with spreadsheets like Google Sheets.
[Import contacts onto a site](/articles/contacts/manage-your-contacts/how-to-import-contacts-into-kajabi).
**Note:**
Kajabi's default "Name" field accepts first and last names. If you have been using custom fields to collect first and last names, your contacts may appear in your Contacts tab as if they have not provided their names. [Fix the name column if you have used custom fields for first and last names.](/articles/contacts/manage-your-contacts/why-are-my-contact-names-not-displayed-in-the-contacts-tab)
## Combine the first and last name
With the [concatenate function](https://support.google.com/docs/answer/3094123) you can use a spreadsheet to combine the first and last names into a single column.
This guide walks you through the process of using the concatenate function with [Google Sheets](https://www.google.com/sheets/about/).
### Use the concatenate function
1. In a separate column of your spreadsheet, enter `=CONCATENATE(`.
2. Then, select an individual's first name (e.g., John). This will enter the column and row cell reference for the first name into the formula.
3. If the desired cell has been referenced in the formula, then enter `" ",`.
4. Next, select the same individual's last name (e.g., Doe). This will enter the column and row cell reference for the last name into the formula.
5. Close the formula with the left-facing parenthesis, `)`.
6. Then, click **enter** to apply:
If the cell containing the concatenate function displays the first and last name of your selected individual you have successfully combined the first and last name into a single column.
To autofill the remaining contacts you may be prompted to autofill the remaining rows or you can click and drag the bottom right corner of the cell to autofill:
## Skip columns in the Kajabi Contact Importer
After you have combined the first and last name columns in Google Sheets and once you have started the [contact import](/articles/contacts/manage-your-contacts/how-to-import-contacts-into-kajabi) process in Kajabi by uploading your CSV file, the Kajabi Contact Importer will still read the First and Last name columns as "unrecognized columns". These columns will need to be skipped upon import for a successful contact import.
### Skip the First and Last name columns
1. Click the **edit** icon on the **First** box in the "unrecognizable columns" section.
2. In the "Map your column" popup menu, select **Skip Column**.
3. Select **Confirm** to confirm your selection.
4. Repeat these steps for the **Last** column.
5. Once both columns have been "skipped" select **Continue to Import Actions.**
6. Select any Bulk Actions to perform during Contact Import, then press **Continue to Summary**.
7. Press the **Confirm Import** button to finish the contact import process:
# Perform bulk actions in the Contacts tab
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/perform-bulk-actions-in-the-contacts-tab
Apply actions to multiple contacts at the same time in the Contacts tab.
Bulk actions allow you to streamline the process of applying various actions to multiple contacts in your Contacts tab, such as Revoking Access to an Offer, Registering to an Event, Adding Tags, and more.
Looking to view groups of your contacts instead? [Navigate the Contacts tab](/articles/contacts/manage-your-contacts/contacts-tab-overview) to explore segment views.
## Perform a bulk action
To toggle the bulk action options in the Contacts tab:
1. Open the **Contacts** tab from the Dashboard.
2. Filter your contacts to narrow your List or select [custom segments](/articles/contacts/manage-your-contacts/segment-your-contacts).
3. Check **Select All**.
4. Open the **Actions** dropdown menu.
5. Select the action you wish to apply.
6. Follow the prompts.
7. Click **Submit:**
## Offers
* [Grant or Revoke an Offer](../../sales/offers/how-to-grant-an-offer)
## Email Sequences
* Subscribe to or Unsubscribe from an Email Sequence
## Events
* Register to or Deregister from an Event
[Explore Events on Kajabi](../../marketing/events/event-overview)
## Tags
* Add or remove Tags
[Understand tags on Kajabi](/articles/contacts/manage-your-contacts/tags-overview)
## Export
* [Export a CSV](/articles/contacts/manage-your-contacts/how-to-export-your-contacts) of your entire list or a segmented selection
## Unsubscribe
* Unsubscribe contacts from all [email marketing](../../marketing/email-campaigns/what-are-marketing-and-transactional-emails).
**Note:** Bulk unsubscribes and bulk deletions export the list to the email address associated with your Kajabi account to recover your unsubscribed or deleted contacts if needed. Be sure to download the CSV within three days of unsubscribing or deleting, after which the link will expire.
## Delete
* Permanently remove contacts
**Warning:** Bulk deletion is destructive. Always confirm there’s no other way to accomplish your goal before running it.
**You have two recovery paths after a bulk delete:**
* **24-hour reversal link.** Right after the delete runs, every Owner, Admin, and Sub-Owner on the account will receive an email with a one-click link that restores the entire batch. The link expires 24 hours after the deletion. *(This notification is rolling out to all Kajabi accounts in May 2026; once it’s active on your account, the email will arrive automatically.)*
* **30-day soft-delete window.** For 30 days after deletion, contacts are soft-deleted and can be restored by Kajabi Support. After 30 days they are permanently removed and cannot be recovered.
### **Who can bulk delete, and who gets notified**
Only users with the **Owner**, **Admin**, or **Sub-Owner** role can bulk delete contacts. Assistants and Support Specialists won’t see the Delete option in the bulk actions menu.
See [Account users](https://help.kajabi.com/articles/account-settings/users/account-users) for the full role permissions matrix.
When a bulk deletion runs, **every Owner, Admin, and Sub-Owner on the account will be automatically emailed**.
* The email shows who ran the deletion, how many contacts were affected, the site it ran on, and when it happened.
* It includes a **“Restore deleted contacts”** button that reverses the entire batch in one click. The button works for 24 hours.
* If someone other than the original deleter uses the restore link, the original deleter is emailed to let them know the action was reversed.
* Suspended users are not emailed.
# Segment contacts
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/segment-your-contacts
Design personalized marketing and efficiently manage your list by segmenting contacts using default and custom Segments.
Design personalized marketing and efficiently manage your list by segmenting your contacts. Organize your contacts and customers in the Contacts tab by utilizing default **Segments** and creating custom Segments.
## What is segmenting?
Segmenting your contacts is a method of dividing your list into small groups based on similar attributes (e.g., subscription status):
### Commonly segmented groups include
* Purchasing habits
* Needs
* Lifestyle
* Age
* Interests
Segmenting is not only a method of efficiently managing your list but can also be used as a powerful marketing technique. Organizing your list in custom segments can give you insight to personalize your marketing and improve your ability to communicate with different groups of your contacts.
## Why segment contacts?
In short, segmenting your contacts greatly improves your ability to manage your list efficiently and design personalized marketing to better communicate with your contacts.
Creating generalized marketing to attempt to reach all of your contacts typically results in mixed responses. Some contacts may respond positively to one campaign while others may not. Regardless of how effective or creative your marketing efforts are for some, they may not reach others as intended. This can result in contacts unsubscribing or even blocking you.
### Segmenting contacts can help you
* Increase engagement by designing [marketing campaigns](../../marketing/email-campaigns/email-campaigns-overview) specific to groups of contacts based on various similar attributes such as products owned, emails received, custom [tags](../../contacts/manage-your-contacts/tags-overview) and more
* Gain insight into the patterns and trends of your contacts with [automations and tags](../../contacts/manage-your-contacts/tags-overview) and assigning each to a custom segment
* Review your Customer's [Product Progress](../../analytics/report-product-progress) and bring focus to your stats
* Efficiently [manage the Contacts tab](../../contacts/manage-your-contacts/perform-bulk-actions-in-the-contacts-tab) by quickly navigating between specified Segments
Segment your contacts and take control of your list to enhance and personalize your contacts experience with your brand and your business at every touchpoint.
**Note:** Looking to segment your contacts upon form submission or purchase? Set up [Tag Automations](../../contacts/manage-your-contacts/tags-overview) to automate this process.
## Default segments
There are default segments added to the Contacts tab that will always be visible for ease of use: **All Contacts, Customers, Subscribed, Inactive, and Excluded**.
* **All Contacts**: A view of all of your Contacts — this includes both Customers and Contacts. Understand the difference between [Customers and Contacts](../../contacts/manage-your-contacts/contacts-tab-overview).
* **Customers**: A Customer view for only users who have purchased something from your site or have been granted an Offer.
* **Subscribed**: A subscriber view of those that have opted-in to receive any type of emails from you.
* **Inactive**: A subscriber view of those that have not opened your emails in the last 90 days.
* **Hard Bounced**: A contact that experienced a permanent error that can be caused by invalid emails, disabled inboxes, or if the domain doesn't exist. [Understand hard bounces](../../marketing/email-campaigns/email-metrics-overview#h_01EDPQC3J9TEWVG6AKKY7C6CDY)
* **Excluded**: A contact that subscribed to your marketing emails, but are identified as high-risk and inactive. [Understand contact exclusions](../../contacts/manage-your-contacts/how-email-address-validation-and-contact-exclusion-helps-you-maintain-a-healthy-mailing-list)
## Custom segments
Create custom segments based on similar attributes to better organize and design marketing campaigns for your contacts.
### Create and save a custom segment
1. Open the **Contacts** tab from your Dashboard.
2. Click **Filters**.
3. Select your **Category**, **Conditional**, and **Value**.
**Tip:** Stack multiple filters to create an even more specific segment by simply including additional filters.
4. Click **Apply**.
5. After selecting your filter(s) save your filtered list into a Segment by clicking **Save as Segment**.
6. Create a title for your Custom Segment.
7. Click **Save**:
Access your custom segment in your Contacts tab, when sending Email Campaigns, creating Automations, adding Tags, and reviewing your Analytics.
Looking to export your segmented list? [Export your contacts](../../contacts/manage-your-contacts/how-to-export-your-contacts) to download a CSV of the filtered selection.
### Remove a custom segment
1. Open the **Contacts** tab from your Dashboard.
2. Select **Segments**.
3. Navigate to your custom Segment.
4. Click the `…` menu.
5. Select **Delete**.
6. Complete the pop-up prompt.
7. Click **Delete** again to confirm the action (this action cannot be undone).
# Tags overview
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/tags-overview
Add tags to contacts to efficiently manage and organize your contact list.
Add **Tags** to your contacts to efficiently manage the contacts in your Contacts tab. Utilize Tags to organize and categorize your list.
## What are tags?
Tags are tools to help you manage your contacts on Kajabi.
With Tags on Kajabi, you can create segments, filter your contacts, create email sequences specific to contacts with a Tag, and more.
Tags are built to help you organize, categorize, and manage your list more efficiently throughout your site on Kajabi.
### How many tags can I create?
You can create up to 100 total Tags in a site.
## Manually add tags to contacts
### Add tags to individual contacts
1. Open the **Contacts** tab from the Dashboard.
2. Select the name of the contact you wish to view.
3. Click **Add Tag**.
4. Open the dropdown menu to create a tag or choose an existing one.
5. Click **Save** to keep and apply your changes:
**Note:** This process is the same for [Customers and Contacts](../../contacts/manage-your-contacts/contacts-tab-overview). Keep in mind that each site has a total limit of 100 tags per site.
## Add a tag during import
### Tag contacts during import
1. Open the **Contacts** tab from the Dashboard.
2. Navigate to the top right corner of the page.
3. Click **+ Add Contacts**.
4. Follow the importing process.
5. After mapping your columns, select **Add Tags** in the Bulk Actions step.
6. Select an existing tag or enter a tag:
## Add tags with automations
Automatically add tags after a set action occurs with Automations.
Follow the links below to learn more about adding tags with automations:
* [Add a tag after form submission](../../marketing/automations/add-tags-with-automations#h_1fb444d3-f13e-4479-b7a0-ae4a4d335d19)
* [Add a tag after an email sequence is completed](../../marketing/automations/add-tags-with-automations#adding-a-tag-after-an-email-sequence-is-completed)
* [Add a tag after an offer purchase](../../marketing/automations/add-tags-with-automations#adding-a-tag-after-an-offer-purchase)
## Bulk tag
### Add tags to a filtered selection of contacts in bulk
1. Open the **Contacts** tab from the Dashboard.
2. Click the checkbox to bulk select your contact list.
3. Use **Filters** to narrow your list.
4. After selecting all, click the **Bulk Actions** dropdown menu.
5. Navigate to **Tags** in the dropdown menu.
6. Click **Add Tag** to select an existing Tag or enter a Tag.
7. Click **Submit**. All the users in your filtered selection will be tagged:
## Remove a tag from a user
### Remove a tag from a contact
1. Open the **Contacts** tab from the Dashboard.
2. Select the name of the contact you wish to edit.
3. Click **Open full profile**.
4. Click the **remove icon** to the right of the Tag name:
## Edit an existing tag
### Edit a tag
1. Open the **Contacts** tab from your Dashboard.
2. Click **Manage tags**.
3. Click the pencil icon to edit the Tag:
## Permanently delete a tag
### Delete a tag from a site
1. Open the **Contacts** tab from your Dashboard.
2. Click **Manage tags**.
3. Click the delete icon next to the Tag.
4. Confirm the deletion by retyping the Tag name exactly as it appears.
5. Click **Delete tag** to confirm:
**Note:** Each site has a total limit of 100 Tags.
# Understand Gravatar for contact avatars
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/what-is-gravatar
Gravatar works with Kajabi to personalize contacts with globally recognized avatars.
With Kajabi, you can enable contact avatars to bring your contacts to life with Gravatar.
A Gravatar stands for a **G**lobally **R**ecognized **Avatar**.
Gravatar is a free avatar creation service that Kajabi works with to personalize and individualize your contacts in your Contacts tab.
It is important to note that Gravatar doesn't change the avatar of your contacts email, but is used to associate an avatar with their email address. This is important to understand because a Gravatar may not automatically display for every contact, instead they are only displayed for recipients with email clients (i.e., Gmail) that support Gravatar.
[Visit the Gravatar website](https://en.gravatar.com/).
# Distinguish between Insights and Analytics
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/what-is-the-difference-between-insights-and-analytics
Understand the difference between People Insights and Site Analytics to make better data-driven decisions.
Kajabi provides two tools for understanding your audience and how they engage with your site and marketing materials: Insights and Analytics. Both provide aggregated data to help you analyze your unique statistics and implement best practices.
## Insights
Insights is Kajabi's feature that allows you to view a breakdown of your contact and member engagement with your email marketing.
[Explore Insights](../../analytics/insights-overview).
## Site Analytics
Site Analytics help you assess your Net Revenue, Subscription Metrics, Opt-ins, Page Views, Offers Sold, Affiliates, and Recent Transactions all in one convenient location.
Within your Analytics Dashboard you can view your most important statistics and dive deeper into each Analytic widget to understand the success of your site and continue to improve your data.
[Explore Analytics](../../analytics/analytics-overview).
# Fix missing contact names in the Contacts tab
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/why-are-my-contact-names-not-displayed-in-the-contacts-tab
Resolve contacts appearing nameless by mapping custom name fields to the default Name column.
If you have created custom fields to capture first and last names, your contacts will appear nameless in the Contacts tab. Here is how to fix contact names to populate in the Name column of the Contacts tab.
## Why does this happen
Kajabi provides a default "Name" field that accepts both first and last names. However, if custom fields are used to collect separate first names and last names instead of the provided name field, the names captured in the custom fields will appear in the Info Tab or the Edit Details page for the contact rather than the Name column of the Contacts tab.
## Fix contact names
Avoid this problem in the future by removing the custom fields for first and last names to ensure that your contacts complete the default Name field Kajabi provides when submitting a Form.
However, if you have collected the first and last names in a custom field it is not too late to address the issue and display the collected names in the Name column.
### Export contacts
If you have collected names with custom fields you will need to export your contacts and re-upload their information to your Contacts tab to display the names in the default Name column.
First, export your contacts. [Learn to export contacts](../../contacts/manage-your-contacts/how-to-export-your-contacts).
### Edit the CSV file
After exporting your contacts, you will receive a CSV file from Kajabi containing your exported contacts. In this step, open the CSV file with your preferred digital spreadsheet (e.g., Excel, Numbers, Google Sheets) to edit the name column(s).
Edit your CSV file with the following adjustments:
* Locate the column titled, "First Name" and change it to "Name". Combine the first and last names into a single Name column if you wish to display both first and last names in the Name column of your Contacts tab. [Learn more](../../contacts/manage-your-contacts/how-to-use-google-sheets-to-combine-first-and-last-name)
* Delete all columns except for your updated Name column and the email column. Ensure that the email column is maintained. This will allow you to update the information for your contacts without creating duplicates.
### Upload the file to the Contacts tab
After updating your CSV file, re-upload your contacts onto your Contacts tab.
**Note:** Use the Import CSV selection to upload your updated CSV file. Kajabi will detect your Name column and Email column within your CSV file to re-upload your updated contact information to each corresponding contact.
[Learn to import contacts to Kajabi](../../contacts/manage-your-contacts/how-to-import-contacts-into-kajabi#h_01EPWRXYDHWBQZSSN1SWKVTYKT).
After uploading your adjusted CSV file to your Contacts tab, Kajabi will update your contacts corresponding with each email address to display the name in the Name column of your Contacts tab.
**Note:** This will not create duplicate contacts as long as the emails match the originally captured emails. [Learn to check for duplicate contacts](../../contacts/manage-your-contacts/how-to-check-for-duplicate-contacts).
# Use Automation triggers, flows, and branches
Source: https://help.kajabi.com/articles/marketing/automations/how-to-use-automation-triggers-flows-and-branches
Consolidate and organize Automations using side-by-side flows, multiple triggers, and branching logic.
Kajabi's [visual Automation Builder](/articles/marketing/automations/whats-new-with-kajabi-automations) allows multiple workflows to be added within a single Automation. Consolidate and organize Automations into one using side-by-side flows, multiple triggers, and branching logic.
This reduces the need for separate Automations and provides greater flexibility when building workflows.
**Note:** Multiple triggers and multiple flows require both of the following, and each is still rolling out on top of them. If you meet both and do not see **+ Add Trigger** or **+ Add flow**, they are not available on your account yet.
* Upgraded to the [visual Automation Builder](/articles/marketing/automations/whats-new-with-kajabi-automations)
* A [Growth plan or higher](https://kajabi.com/pricing) (Advanced Automations)
## Create an Automation with multiple triggers
1. From the Kajabi Dashboard, select **Marketing** > **Automations**.
2. Select an existing Automation or create a new one.
3. Save the first trigger. The option to add additional triggers only appears after the first trigger is saved.
4. Click **+ Add Trigger** to the right to create another trigger within your Automation.
5. Add the Automation's **Then** action(s).
6. Click **Save Trigger** when you're done:
You can stack multiple triggers within a single Automation to combine criteria. Each trigger can also include one or more filters.
## Create an Automation with multiple flows
1. From the Kajabi Dashboard, select **Marketing** > **Automations**.
2. Select an existing Automation or create a new one.
3. Click the **+ Add flow** button to add a flow to your Automation.
4. The flow appears on the right, allowing you to create a separate workflow inside the same Automation.
**Note:** Each Automation can contain up to 10 individual flows and triggers combined. Once you reach 10, **+ Add flow** stops adding new ones.
## Add branching logic and wait nodes
After defining the **Then** action, you can optionally add up to 5 **branches** to create conditional paths. You can also include [wait nodes](/articles/marketing/automations/how-to-use-a-wait-node-with-automations) as needed throughout the Automation.
### Example branching use case
For users who submitted multiple forms:
* **Branch 1:** Send Email 1 if they *have a specific tag* or *have purchased Offer A*
* **Branch 2:** Send Email 2 if they *do not meet those conditions*
## FAQs
### I don't see the option to add another trigger. Where is it?
The option appears only **after saving your first trigger**.
### I'm on the Basic plan and I don't have access to the Automations tab. Can I use this feature?
No. This update is only available with Advanced Automations, included in Kajabi Growth and up.
### Can I still use filters and branching?
Yes. Filters, branching logic, and waiting steps all work as usual with multiple triggers.
### How many triggers can I add to a single Automation?
There is a maximum of 10 triggers that can be added to a single Automation.
# Remove Automations
Source: https://help.kajabi.com/articles/marketing/automations/remove-automations
Delete an Automation from the Automations list, or from the Funnel, Form, Offer, Course, or Campaign it is attached to.
**Automations** can be removed from your Kajabi Dashboard, but where you remove them depends on which Automations experience your account is using.
* **The upgraded Automations experience** removes every Automation from one place, the **Automations** list.
* **The original Automations experience** removes each Automation from wherever it was added, such as a Funnel, Form, or Course Lesson.
If your Automations open on a visual canvas, you are on the upgraded experience. [Learn which Automations experience you have](/articles/marketing/automations/automations-overview#which-automations-experience-you-have)
**Warning:** Deleting an Automation is permanent and cannot be undone on either experience.
## Remove an Automation in the upgraded Automations experience
Every Automation is removed from the **Automations** list, no matter which Funnel, Form, or Course it is attached to.
1. Open the **Marketing** tab from your dashboard.
2. Select **Automations**.
3. Click the more options (...) menu on the Automation you want to remove.
4. Click **Delete**.
5. In **Delete automation?**, select **Yes, I would like to delete this automation**.
6. Click **Delete**.
The **Delete** button stays unavailable until you select the confirmation checkbox. Deleting a published Automation stops it first, so no Contact continues through it.
**Note:** On the upgraded experience, the **Automations** section inside a Course Lesson, Quiz, Form, Event, Offer, or Email Broadcast lists the Automations that use it, but does not remove them. Use the **Automations** list instead.
## Remove an Automation in the original Automations experience
Each Automation is removed from the place it was added. Every one of these ends with the same confirmation prompt.
### Remove an Automation from the Automations Dashboard
The **Automations Dashboard** is located under the **Marketing** tab.
1. Open the **Marketing** tab from your dashboard.
2. Select **Automations**.
3. Click **Edit** next to the Automation you would like to remove.
4. Click **Delete**.
5. Select **OK** when asked if you are sure you want to delete this Automation rule.
### Remove an Automation from a Funnel
1. Open the **Marketing** tab from your dashboard.
2. Select **Funnels**.
3. Click on the **Funnel** that contains your Automation.
4. From your Funnel template, locate and select the **Automation** you would like to remove.
5. Click **Delete**.
6. Select **OK** when asked if you are sure you want to delete this Automation rule.
### Remove an Automation from an Email Campaign
1. Open the **Marketing** tab from your dashboard.
2. Select the title of your **Email Campaign**.
3. Follow the instructions below for your campaign type.
#### Email Sequence
Email Sequences may contain subscribe/unsubscribe triggers (Automations) or Automations on individual emails within the sequence.
To remove a subscribe/unsubscribe trigger:
1. Expand the subscribe or unsubscribe triggers section.
2. Click **Edit** next to the trigger you would like to remove.
3. Click **Delete**.
4. Select **OK** when asked if you are sure you want to delete this Automation rule.
To remove an Automation from an individual email within an Email Sequence:
1. Locate the email that contains the Automation you would like to remove.
2. Click **Edit** next to the Automation you would like to remove.
3. Click **Delete**.
4. Select **OK** when asked if you are sure you want to delete this Automation rule.
#### Email Broadcast
1. Navigate to the Content Editor for your Email Broadcast.
2. Scroll to the bottom of the page and locate the **Automations** section.
3. Click **Edit** next to the Automation you would like to remove.
4. Click **Delete**.
5. Select **OK** when asked if you are sure you want to delete this Automation rule.
### Remove an Automation from a Course Lesson
1. Open the **Products** tab from your dashboard.
2. Select the **Courses** tab.
3. Click on the title of the **Course** that contains your Lesson.
4. Click on the title of the **Lesson** that contains your Automation.
5. Scroll to the bottom of the page and locate the **Automations** section.
6. Click **Edit** next to the Automation you would like to remove.
7. Click **Delete**.
8. Select **OK** when asked if you are sure you want to delete this Automation rule.
### Remove an Automation from a Form
1. Open the **Marketing** tab from your dashboard.
2. Select **Forms**.
3. Click **Edit** next to the name of the Form that contains the Automation.
4. Scroll to the bottom of the page and locate the **Automations** section.
5. Click **Edit** next to the Automation you would like to remove.
6. Click **Delete**.
7. Select **OK** when asked if you are sure you want to delete this Automation rule.
### Remove an Automation from an Event
1. Open the **Marketing** tab from your dashboard.
2. Select **Events**.
3. Click on the title of the **Event** that contains your Automation.
4. Locate the **Automations** section.
5. Click **Edit** next to the Automation you would like to remove.
6. Click **Delete**.
7. Select **OK** when asked if you are sure you want to delete this Automation rule.
### Remove an Automation from an Offer
1. Open the **Sales** tab from your dashboard.
2. Click on the title of the **Offer** that contains your Automation.
3. Scroll to the bottom of the page and locate the **Automations** section.
4. Click **Edit** next to the Automation you would like to remove.
5. Click **Delete**.
6. Select **OK** when asked if you are sure you want to delete this Automation rule.
### Remove an Automation from a Quiz
1. Open the **Products** tab from your Dashboard.
2. Select **Courses**.
3. Click on the title of the **Course** that contains your Quiz.
4. Click to open your **Quiz**.
5. Select the **Settings** tab at the top of the Quiz editor.
6. Scroll to the bottom of the page and locate the **Automations** section.
7. Click **Edit** next to the Automation you would like to remove.
8. Click **Delete**.
9. Select **OK** when asked if you are sure you want to delete this Automation rule.
### Remove an Automation from a Certificate of Completion
1. Open the **Products** tab from your Dashboard.
2. Select **Courses**.
3. Click on the title of the **Course** that contains your Certificate.
4. Select the **Certificates** tab at the top of the Course editor.
5. Scroll to the bottom of the page and locate the **Automations** section.
6. Click **Edit** next to the Automation you would like to remove.
7. Click **Delete**.
8. Select **OK** when asked if you are sure you want to delete this Automation rule.
# Understand Automation components
Source: https://help.kajabi.com/articles/marketing/automations/understanding-automation-components
Get to know the building blocks of Automations, including triggers, actions, and conditional filters.
**Automations** are powerful tools in Kajabi that use **conditional logic** to help you streamline processes by automating actions for your business.
Each Automation is built around two required parts — what starts it **(When)** and what happens as a result **(Then)** — with an optional conditional filter you can add to narrow down when it applies **(Only if)**.
**Basic plan**: Only single-step automations (one When trigger → one Then action) are available. The visual Automation builder, multi-step flows, Wait nodes, and per-step Draft/Published controls require a Growth or Pro plan. If you are on Basic and see features described in this article that aren't available in your account, upgrading your plan will unlock them.
[Learn more about the difference between Basic Automations and Advanced Automations](/articles/marketing/automations/basic-vs-advanced-automations)
## When triggers - What starts an Automation
**When** components are **triggers** that kick off Automations. **When** logic specifies that an event must occur to start an action (the **Then** component).
## When trigger components
### Offers
* **Offer is purchased** - Trigger an Automation after a customer purchases your specified Offer
* **Offer is purchased as a gift** - Trigger an Automation after a customer purchases your specified Offer as a gift. [Learn how to create and manage gift Offers](../../sales/offers/how-to-create-and-manage-gift-offers)
* **Gift is redeemed** - Trigger an Automation when a customer redeems a gifted Offer
* **Offer is granted** - Trigger an Automation when an Offer is granted. [Learn how to grant an Offer](../../sales/offers/how-to-grant-an-offer)
**Note:** Granting an Offer is similar, but not the same as, a [Free Offer](../../sales/offers/how-to-create-a-free-offer) purchase. If the Automation is set to start after the purchase of a Free Offer, granting that Offer does not trigger it, because a Free Offer requires the customer to go through the [checkout process](../../sales/offers/what-happens-when-a-customer-purchases-my-offer).
* **Recurring payments cancelation initiated/completed** - Trigger an Automation anytime a subscription or payment plan cancelation is initiated or completed (by you or your customer), or when all payments of a plan have been paid
**Note:** This trigger was previously named "Offer is deactivated."
### Assessments
* **Assessment is completed** - When an Assessment is completed, its final Question (when it is attached to a Lesson) or Contact information (when it is an [Assessment embedded on a page](../../website/pages/how-to-add-an-assessment-block)) must be submitted
### Certificate
* **Certificate is sent** - Trigger an Automation when a Certificate of Completion is sent to a Course customer
[Learn about Certificates of Completion](../../products/courses/course-completion-certificates)
### Tags
* **Tag is added** - Trigger an Automation when a Tag is added to a Contact (manually or by another Automation)
* **Tag is removed** - Trigger an Automation when a Tag is removed from a Contact (manually or by another Automation)
[Learn about using Tags](../../contacts/manage-your-contacts/tags-overview)
### Email Broadcasts
* **Email broadcast is opened** - Trigger an Automation when a broadcast email is opened by a recipient
* **Link in email broadcast is clicked** - Trigger an Automation when a recipient clicks a link from the selected Email Broadcast
[Learn about Email Broadcasts](../../marketing/email-campaigns/email-campaigns-overview)
**Note:** The **View in web browser** and **Unsubscribe** buttons within an Email Broadcast are not recognized as links for the **Link in email broadcast is clicked** trigger.
### Email Sequences
* **Email sequence is completed** - Trigger an Automation after the final email in your Email Sequence is sent
[Learn about Email Sequences](../../marketing/email-campaigns/email-campaigns-overview#email-sequence)
### Email Sequence Emails
* **Email sequence email is sent** - Trigger an Automation when a specific email in an Email Sequence is sent to recipients
* **Email sequence email is opened** - Trigger an Automation when a specific email in an Email Sequence is opened by a recipient
* **Email sequence email is clicked** - Trigger an Automation when a recipient clicks a link in a specific email in an Email Sequence
### Events
* **Event is registered** - Trigger an Automation when a Contact registers for a specified Event on Kajabi
[Learn about Events](../../marketing/events/event-overview)
### Forms
* **Form is submitted** - Trigger an Automation to complete an action after the selected Form is submitted
[Learn about Forms](../../marketing/forms/create-and-build-your-form)
### Activity
Trigger an Automation based on activity:
* **Person has been inactive for 7 days**
* **Person has been inactive for 30 days**
* **Person has been inactive for 60 days**
* **Person has been inactive for 90 days**
[Learn how to define customer activity](../../contacts/manage-your-contacts/how-to-define-customer-activity)
### Lessons
* **Lesson is completed** - Trigger an Automation after a Course Lesson is marked as complete
### Quizzes
Trigger Automations that kick off **Then** actions after a Quiz is completed or graded:
* **Quiz is completed**
* **Quiz is failed**
* **Quiz is passed**
[Learn about Quizzes](../../products/courses/course-quizzes)
### Social Media
Trigger an Automation after a comment is received on a Facebook or Instagram post or any comment is received on those social media accounts:
* **Instagram comment is received**
* **Any Instagram comment received**
* **Facebook comment received**
* **Any Facebook comment received**
[Learn how to set up Comment-to-DM Automations](../../marketing/comment-to-dm/comment-to-dm)
### Coaching
* **Coaching session completed** - Trigger an Automation after a Coaching session is completed by a customer
* **All coaching sessions completed** - Trigger an Automation after all Coaching sessions are completed by a customer
* **Coaching sessions remaining** - Trigger an Automation when a specific number of Coaching sessions are remaining for a customer
* **Additional coaching sessions purchased** - Trigger an Automation when additional Coaching sessions are purchased by a customer
* **Coaching upcoming invoice due date** - Trigger an Automation to send something ahead of a Coaching customer's invoice due date
* **Coaching invoice overdue** - Trigger an Automation when a customer's Coaching invoice payment is overdue
[Learn more about Coaching](../../products/coaching/coaching-product-overview)
## Then actions - What an Automation does
**Then** components define the action to occur in response to a **When** event trigger.
### Offers
* **Grant an offer** - An Automation that grants a specific Offer after a triggered event occurs
* **Revoke an offer** - An Automation that revokes access for a specific Offer after a triggered event occurs
* **Deactivate from offer** (discontinues payment and access) - An Automation that revokes access to a specific Offer and stops future payments after a triggered event occurs
* **Send an offer** - An Automation that sends an Offer to specific Contacts
* **Action by pricing option** - An Automation that performs an action based on which **Pricing option** is purchased, including:
* Revoke an offer
* Deactivate from offer
**Tip:** You can use Automations to manage billing changes between **Pricing options**. For example, trigger an Automation to deactivate an annual subscription when a customer purchases the monthly Pricing option for the same Offer.
### Email Sequences
An Automation that subscribes or unsubscribes Contacts from a specific Email Sequence after a triggered event occurs:
* **Subscribe to an email sequence**
* **Unsubscribe from an email sequence**
[Learn about Email Sequences](../../marketing/email-campaigns/email-campaigns-overview#email-sequence)
### Events
Automations that register or deregister Contacts to or from an Event after a trigger occurs:
* **Register to an event**
* **Deregister from an event**
[Learn about Events](../../marketing/events/event-overview)
### Tags
Automations that add or remove a Tag after a triggered event occurs:
* **Add a tag**
* **Remove a tag**
[Learn to use Tags](../../contacts/manage-your-contacts/tags-overview)
### Emails
Send a custom [transactional email](../../marketing/email-campaigns/what-are-marketing-and-transactional-emails#transactional-emails) to a Contact or your team after a triggered event occurs:
* **Send an email**
These reach your Contacts regardless of their subscription status. Only Contacts who explicitly opted out, by using an unsubscribe link or changing their own email preferences, are skipped. Emails addressed to your own team are always sent.
If your account uses [Email marketing categories](../../marketing/email-campaigns/manage-email-marketing-categories), these emails follow your Contacts' category preferences instead. Automation emails are always assigned to the **General Marketing** category, so Contacts who are unsubscribed, or who opted out of that category, do not receive them.
#### Choose the Simple or Designed Email body
The **Email body** section of a **Send an email** action holds two versions of your email, and you pick which one sends:
* **Simple** - Write your email in the built-in text editor. This is the default.
* **Designed** - Build a branded email from a template using the full email editor.
Once the step is published, the version you selected carries a **Will send** label. Kajabi saves both versions separately, so switching between them does not erase either one. Click **Preview** to see whichever version is currently selected.
**Note:** The **Designed** email option and per-step Draft and Published statuses require [upgrading to the visual Automation Builder](/articles/marketing/automations/whats-new-with-kajabi-automations#what%E2%80%99s-changing), and they are also rolling out gradually on top of it. If you have upgraded but your **Send an email** action shows a single body editor instead of the **Simple** and **Designed** cards, they are not available on your account yet.
#### Build a Designed Email
1. Select the **Designed** card, then click **Choose a template**.
2. In **Select a template**, pick a design from **Saved Custom Templates** or **Kajabi Templates**.
3. Design your email in the editor, then return to your Automation.
4. (Optional) Click **Save as template** to add your finished design to **Saved Custom Templates** so you can reuse it.
Applying a new template replaces the current design, so Kajabi asks you to confirm before opening the gallery again.
#### Publish or draft an email step
Every **Send an email** step carries its own status, separate from whether the Automation itself is Draft or Published:
* **Published** - The step sends its email.
* **Draft** - Contacts who reach the step skip the email and continue through the rest of the Automation.
A Draft step is highlighted on the canvas with a **Won't send** heading and a **Draft** label, and it warns you that Contacts who reach the step will skip it.
Use **Publish** on the step to start sending, or **Switch to draft** to stop. Publishing is not retroactive, so Contacts who already moved past the step while it was a Draft do not receive the email afterward.
New email steps start as Drafts, which keeps a half-finished email from sending the moment you save your Automation.
**Warning:** A new **Simple** Email body starts with the placeholder text below. Update it before you publish the step, or your recipients receive the placeholder. A **Designed** Email starts from the template you choose instead.
**Subject:** `Subject`
**Email body:**
```text wrap theme={null}
Hello {{ first_name }},
Use this action to congratulate a user on reaching a milestone, send a quick product update, or leave a notification for your users.
Include images or links to create a fun, personal message for your recipients.
Thanks,
Kajabi Product Team
```
### Coupons
Send a unique, single-use **Coupon code** with a custom email after a triggered event occurs:
* **Send a single-use coupon**
[Learn about single-use Coupon codes](../../sales/coupons/how-to-use-single-use-coupon-automations)
### Certificates
Send a customer a customized Certificate of Completion for a Course after a triggered event occurs:
* **Send a certificate**
[Learn about Course Certificates of Completion](../../products/courses/course-completion-certificates)
### Social Media
Send a Contact an Instagram or Facebook message or reply after a triggered event occurs:
* **Send an Instagram direct message**
* **Send an Instagram reply**
* **Send a Facebook direct message**
* **Send a Facebook reply**
[Learn how to set up Comment-to-DM Automations](../../marketing/comment-to-dm/comment-to-dm)
### Coaching
* **Cancel coaching sessions** - Cancel a single Coaching session or all upcoming Coaching sessions after a specific triggered event occurs
* **Remove coaching sessions** - Remove all upcoming Coaching sessions for customers with an unpaid invoice
* **Send coaching invoice reminder** - Send a reminder to specific customers that they have an unpaid or overdue invoice for Coaching
* **Send coaching session survey** - Send a survey to customers after a Coaching session concludes
* **Send coaching program survey** - Send a survey to customers after a Coaching program concludes
[Learn about Coaching](../../products/coaching/coaching-product-overview)
### Community
* **Send Community DM** - Send a direct message to a specific member or a group of members of your Community after a triggered event occurs
* **Add a member to a private channel** - Add a member to a private channel in your Community after a triggered event occurs
* **Remove a member from private channel** - Remove a member from a private channel in your Community after a triggered event occurs
* **Post in channel** - Add a post in a specific Channel in your Community after a triggered event occurs
[Learn about Communities](../../products/community/build-kajabi-communities)
## Only if filters - Conditional logic
Filters let you create an Automation that subscribes Contacts to an Email Sequence after they've completed a Quiz, and then registers them for a specific Event:
**Note:** The **Only if** filter must match the collected data. A specific value is based on "contains" rather than an "exact match."
### Contact filters
* **Is subscribed** - Add a condition that says the customer must be subscribed to receive your marketing emails
* **Is a Customer** - Add a condition that says the Contact must be a customer of your site. [Learn about customers, Contacts, and subscribers](../../contacts/manage-your-contacts/contacts-tab-overview)
* **Is hidden** - Add a condition that says the Contact must be hidden in your list. [Learn about hiding Contacts](../../contacts/manage-your-contacts/hiding-your-contacts)
* **Has a hard-bounced delivery** - Add a condition that says the Contact's email address has hard-bounced. [Learn about hard-bounced Contacts](../../marketing/email-campaigns/email-metrics-overview#bounced)
* **Excluded from mailing** - Add a condition that says the Contact must be excluded from your mailing list for being high-risk inactive and not engaging with 25 or more emails
### Contact activity filters
* **Contact added in the last** - Add a condition that says the Contact was added to your site during a specific time period
* **Contact added before the last** - Add a condition that says the Contact was added to your site before a specific time period
[Learn about customers, Contacts, and subscribers](../../contacts/manage-your-contacts/contacts-tab-overview)
### Customer activity filters
* **Customer joined in the last** - Add a condition that says the customer joined your site during a specific time period
* **Customer visited a page on your site in the last** - Add a condition that says the customer visited a specific page on your site during a specific time period
* **Customer has not visited a page on your site in the last** - Add a condition that says the customer did not visit a specific page on your site during a specific time period
[Learn about customers, Contacts, and subscribers](../../contacts/manage-your-contacts/contacts-tab-overview)
### Email engagement filters
* **Healthy contacts (engaged 0-90 days ago)** - Add a condition that says the Contact engaged with your marketing emails within the past 90 days
* **Passive contacts (engaged 91-180 days ago)** - Add a condition that says the Contact engaged with your marketing emails between 91 and 180 days ago
* **Unengaged contacts (engaged 181-270 days ago)** - Add a condition that says the Contact engaged with your marketing emails between 181 and 270 days ago
* **Inactive contacts (engaged 270+ days ago)** - Add a condition that says the Contact last engaged with your marketing emails more than 270 days ago
[Learn about Email Campaigns](../../marketing/email-campaigns/email-campaigns-overview)
### Email activity filters
* **Delivered an email in last** - Add a condition that says the Contact received a marketing email from your site during a specific time period
* **Hasn't been delivered an email in last** - Add a condition that says the Contact did not receive a marketing email from your site during a specific time period
* **Opened an email in last** - Add a condition that says the Contact opened a marketing email from your site during a specific time period
* **Hasn't opened an email in last** - Add a condition that says the Contact has not opened a marketing email from your site during a specific time period
* **Hasn't clicked an email in last** - Add a condition that says the Contact has not clicked a link in a marketing email from your site during a specific time period
* **Clicked an email in last** - Add a condition that says the Contact clicked a link in a marketing email from your site during a specific time period
[Learn about Email Metrics](../../marketing/email-campaigns/email-metrics-overview)
### Form filters
* **Submitted any of these form(s)** - Add a condition that says the Contact has submitted a specific Form or Forms (multiple Forms can be selected)
* **Has not submitted form(s)** - Add a condition that says the Contact has not submitted a specific Form or Forms (multiple Forms can be selected)
[Learn about Forms](../../marketing/forms/create-and-build-your-form)
### Assessment filters
* **Completed any of these assessment(s)** - Add a condition that says the Contact has completed a specific Assessment or Assessments (multiple Assessments can be selected)
* **Passed any of these assessment(s)** - Add a condition that says the Contact has passed a specific Assessment or Assessments (multiple Assessments can be selected)
* **Failed any of these assessment(s)** - Add a condition that says the Contact has failed a specific Assessment or Assessments (multiple Assessments can be selected)
[Learn about Assessments](../../contacts/create-manage-and-share-assessments/create-and-customize-assessments)
### Product filters
* **Owns any of these product(s)** - Add a condition that says the customer has a specific Product or Products (multiple Products can be selected)
* **Does not own product(s)** - Add a condition that says the customer does not have a specific Product or Products (multiple Products can be selected)
* **Previously owned product(s)** - Add a condition that says the customer used to own a specific Product or Products (multiple Products can be selected)
[Learn about Products](../../products/courses/courses-overview)
### Offer filters
* **Has any of these offer(s)** - Add a condition that says the customer must have a specific Offer or Offers (multiple Offers can be selected)
* **Does not have offer(s)** - Add a condition that says the customer does not have a specific Offer or Offers (multiple Offers can be selected)
* **Previously owned offer(s)** - Add a condition that says the customer used to have a specific Offer or Offers (multiple Offers can be selected)
* **Canceling offer(s)** - Add a condition that says the customer has begun the cancellation process for a subscription Offer (multiple Offers can be selected)
[Learn about Offers on Kajabi](../../sales/offers/offers-overview)
### Coupon filters
* **Used any of these coupon code(s)** - Add a condition that says the customer used a specific Coupon code or codes (multiple Coupon codes can be selected)
[Learn about Coupons on Kajabi](../../sales/coupons/how-to-create-a-coupon)
### Email Broadcast filters
* **Sent email broadcast** - Add a condition that says the Contact was sent a specific Email Broadcast
* **Was not sent email broadcast** - Add a condition that says the Contact was not sent a specific Email Broadcast
* **Opened email broadcast** - Add a condition that says the Contact opened a specific Email Broadcast
* **Has not opened email broadcast** - Add a condition that says the Contact has not opened a specific Email Broadcast
* **Clicked email broadcast** - Add a condition that says the Contact clicked a link in a specific Email Broadcast
* **Has not clicked email broadcast** - Add a condition that says the Contact has not clicked a link in a specific Email Broadcast
* **Email broadcast bounced** - Add a condition that says the delivery of a specific Email Broadcast to the Contact bounced (was refused by the recipient's email server)
* **Email broadcast did not bounce** - Add a condition that says the delivery of a specific Email Broadcast to the Contact did not bounce
* **Email broadcast dropped** - Add a condition that says the delivery of a specific Email Broadcast to the Contact was dropped (not sent due to a reason such as previous bounces or the Contact unsubscribed)
* **Email broadcast was not dropped** - Add a condition that says the delivery of a specific Email Broadcast to the Contact was not dropped
[Learn about Email Broadcasts](../../marketing/email-campaigns/email-campaigns-overview)
### Email Sequence filters
* **Subscribed to email sequence** - Add a condition that says a Contact must be subscribed to a specific Email Sequence
* **Is not subscribed to email sequence** - Add a condition that says a Contact must not be subscribed to your specific Email Sequence
[Learn about Email Sequences](../../marketing/email-campaigns/create-an-email-sequence)
### Event filters
* **Registered to event** - Add a condition that says a Contact must be registered for a specific Event
* **Is not registered to event** - Add a condition that says a Contact must not be registered for a specific Event
[Learn about Events on Kajabi](../../marketing/events/event-overview)
### Tag filters
* **Has any of these tag(s)** - Add a condition that says a Contact must have any of the specified Tags (multiple Tags can be selected)
* **Has all of these tag(s)** - Add a condition that says a Contact must have all of the specified Tags (multiple Tags can be selected)
* **Does not have tag(s)** - Add a condition that says a Contact does not have any of the specified Tags (multiple Tags can be selected)
[Learn to use Tags](../../contacts/manage-your-contacts/tags-overview)
### Default field filters
* **Name contains** - Add a condition that says a Contact's Name must contain a specific value
* **Email contains** - Add a condition that says a Contact's Email must contain a specific value
* **Phone Number contains** - Add a condition that says a Contact's Phone Number must contain a specific value
* **Address contains** - Add a condition that says a Contact's Address must contain a specific value
* **Address Line 2 contains** - Add a condition that says a Contact's Address Line 2 must contain a specific value
* **City contains** - Add a condition that says a Contact's City must contain a specific value
* **State contains** - Add a condition that says a Contact's State must contain a specific value
* **Country contains** - Add a condition that says a Contact's Country must contain a specific value
* **Zip Code contains** - Add a condition that says a Contact's Zip Code must contain a specific value
* **Business Number contains** - Add a condition that says a Contact's Business Number must contain a specific value
[Learn to add and edit Contacts](../../contacts/manage-your-contacts/how-to-edit-your-contacts-information)
### Custom field filters
Add a condition that applies to one of the custom fields you've created for your Forms. Which ones appear are unique to your site.
[Learn to add and edit Form fields](../../marketing/forms/how-to-add-and-edit-fields-on-a-form)
## Limitations
Automations are powerful, but there are a few things the builder cannot do. Knowing these up front saves you from building a flow that quietly does nothing.
#### Automations are not retroactive
An Automation only runs for Contacts who trigger it *after* the Automation is published. Contacts who already completed the trigger event — purchased the Offer, submitted the Form, earned the Tag — are not enrolled retroactively, and **Total Enrolled** does not backfill historical data.
The same applies at the step level: publishing a **Send an email** step does not send it to Contacts who already moved past it while it was a Draft.
**Workaround:** apply the action to your existing Contacts manually.
1. From the Dashboard, go to **Contacts** > **All Contacts**.
2. Filter to the Contacts you want.
3. Select them, then use the bulk action menu to apply the Tag, grant the Offer, or subscribe them to the Email Sequence.
#### There is no abandoned checkout trigger
Kajabi has no native **When** trigger for a customer who starts checkout but does not finish. No combination of triggers and **Only if** filters reproduces it, because the Contact never completes the event the trigger listens for.
**Workaround:** connect Kajabi to a third-party tool such as Zapier and build the abandoned checkout logic there.
# Upgrade and downgrade Offers with Automations
Source: https://help.kajabi.com/articles/marketing/automations/upgrading-downgrading-offers-with-automations
Automate changes to your customer's subscription and Offer access using Automations.
**Automations** are a powerful tool when scaling your business. Automating processes like upgrading or downgrading a customer's subscription allows you to work effectively and efficiently as your list and business grow.
Using Automations to help your customers change their subscription mimics upgrades and downgrades and only impacts future payments.
[Learn more about Automations in Kajabi](/articles/marketing/automations/automations-overview)
**Warning:** If your Product is set to [drip release content](../../products/courses/schedule-and-drip-content-in-courses), this Automation resets your customer's Start Date when they upgrade or downgrade their subscription. This impacts their access to released content and requires you to [manually change their Start Date](../../contacts/manage-your-contacts/how-to-change-a-customers-start-date). This does not impact their [Product Progress](../../analytics/report-product-progress) if they upgrade or downgrade to Offers containing the same Product.
## Set up Offers
### Create multiple Offers
Similar to the Kajabi Pricing Plans (see [kajabi.com/pricing](https://kajabi.com/pricing) for details), [create and customize individual Offers](../../sales/offers/offers-overview) for your customers to upgrade or downgrade their Offers:
### Add Automations
Create Automations for each Offer tier to discontinue payment and access to the Offer if an upgraded or downgraded Offer is purchased.
These steps use the original Automations experience. **Deactivate from offer** is the same **Then** action on the upgraded experience, but you choose it on the Automation canvas instead. [Learn which Automations experience you have](/articles/marketing/automations/automations-overview#which-automations-experience-you-have)
1. In the Offer Editor, scroll to **Automations**.
2. Click **+ Add Automation**.
3. Open the **Then** dropdown menu.
4. Select **Deactivate from offer** (discontinues payment and access).
5. Select the Offer that will deactivate the Offer you are editing if purchased (the downgraded or upgraded Offer tier).
6. Click **Save** to apply your changes.
Repeat those steps for every other Offer that should cancel the one you are editing, selecting a different Offer in the **Then** action each time. This upgrades or downgrades your customer based on the Offer tier they held before the purchase:
Then work through your remaining Offer tiers the same way, so every tier has an Automation for each of the other tiers a customer could move to. Once they are all in place, each Offer should have Automations like the example below:
Setting up your Automations for each Offer ensures that your customers can upgrade or downgrade their current Offer by purchasing the upgraded or downgraded Offer you provide.
# Use search and filter features with Automations
Source: https://help.kajabi.com/articles/marketing/automations/using-the-enhanced-search-filter-features-with-automations
Locate and manage your workflows using the redesigned search and filter experience in the visual Automation Builder.
Kajabi's [visual Automation Builder](/articles/marketing/automations/whats-new-with-kajabi-automations) includes a redesigned **search and filter** experience that makes it faster and easier to locate and manage your workflows.
**Note:** Upgrading to the [visual Automation Builder](/articles/marketing/automations/whats-new-with-kajabi-automations) is required for these features, and they are also rolling out gradually on top of it. If you have upgraded but do not see filters on your **Automations** page, they are not available on your account yet.
## Add and use filters
You can filter Automations by **Trigger** or **Action** type.
### Add a trigger or action filter
1. From the Kajabi Dashboard, select **Marketing** > **Automations**.
2. On the Automations index page, choose **Trigger** or **Action** at the top of the dropdown.
3. Select a **Trigger** or **Action**.
4. (Optional) Select an **Operator** and/or **Value**.
## Use multi-select
* Any dropdown (Trigger or Action) supports **multi-select**
* When multiple items are chosen, the dropdown displays **Multiple selected**
## Edit and remove filters
* Click an active filter to edit its selections
* Click **Clear filter** to remove it
* Use **Clear all** to remove every applied filter at once. It appears only once at least one filter is applied
## Trigger type column
The **Trigger Type** column displays an at-a-glance view of the Automation's triggers from the main **Automations** page.
### How it displays
* If the Automation has **multiple triggers**, the column displays **Multiple Triggers**
* If the Automation has **one trigger**, it displays the specific **Trigger Type**
## Automations panel: Offers, Forms, and more
The Automations Panel shows every Automation in which a specific item (such as an Offer or Form) appears as either a Trigger or an Action.
### How items display
**If the item appears as a Trigger:**
* It is shown under **When**
* The immediately following node appears under **Then**
**If it appears as an Action:**
* It is shown under **Then**
* The node immediately before it appears under **When**
**If multiple triggers are present:**
* Each trigger displays as its own **When** item
# Explore the upgraded Automations experience
Source: https://help.kajabi.com/articles/marketing/automations/whats-new-with-kajabi-automations
Understand what changed with the visual Automation Builder and take full advantage of the latest enhancements.
With the upgraded **Automations** experience, Kajabi offers a more powerful, flexible, and visual way to build Automations across your business. Explore what changed and how to take full advantage of the enhancements.
## Banner and upgrade prompt
When accessing Automations, you'll see a banner inviting you to explore the enhanced version. Click **Explore and update**, then click **Update** in the confirmation window to begin:
**Note:** Once upgraded, the Automations experience fully replaces the previous version. Rollbacks are not supported.
## What to expect after upgrading
### Visual Automations replace Automation rules
Upgrading does not delete your Automations. Each Automation rule you already have is rebuilt as its own visual Automation, keeping the same trigger, the same action, and any conditions you set on it.
The rebuild starts on its own once you confirm the upgrade, and it needs no further step from you. Your existing Automations keep running while it happens, but creating and editing Automations is paused until it finishes, which may take a few minutes.
* Automation rules no longer appear in their previous format.
* If your current Automations share a trigger, they will not be combined into a single Automation. They appear as separate Automations.
* For example, if you currently have one Automation that tags a contact and a separate Automation that sends an email when a form is submitted, those remain as two separate Automations after the upgrade.
* Automations are created using a visual editor with nodes and branches.
Once upgraded, you can build in ways a single Automation rule could not: put several **Then** actions in order on one canvas, and set each Automation to **Draft** or **Published**. Branches, wait steps, and starting one Automation from more than one trigger are part of advanced Automations, so whether you can add them depends on your Kajabi plan. When one is not included in your plan, it still appears in the editor with a **Premium** label.
**Note:** Review your Automations once the upgrade finishes and confirm each one shows as **Published**. An Automation that points to something you have since archived or deleted, such as a Quiz in an archived Product, may arrive as a **Draft** or may not carry over.
### Automation Blueprints
When you create an Automation, you'll see a modal with **Automation Blueprints**. This is where you begin building your Automation using a templated set of steps, or start from scratch.
### Automation basics
#### Triggers and actions (When / Then)
* Each Automation starts with a **When** trigger event.
* You can then add one or more **Then** actions that follow.
* The system allows multiple **Then** actions for a single trigger. Previously, only one **Then** action was allowed per Automation.
#### Draft and publish status
* Automations are not automatically published when created.
* You can set the Automation to **Draft** or **Published** when editing.
* Automations must be published to run:
If an Automation contains an error or is missing information, a **Publishing Unavailable** message appears.
Possible errors:
* Must have at least one lead node
* Must have at least one action node
* Email action limit reached
Individual **Send an email** steps also carry their own Draft or Published status, so a published Automation can still contain an email step that is not yet sending. [Learn how to publish or draft an email step](understanding-automation-components#publish-or-draft-an-email-step)
## Features
### Enhanced Automation editor
* **Search bar:** Find Automations quickly by name or keyword.
* **Custom naming:** Organize your Automations with clear, descriptive names.
* **Total Enrolled:** See how many times the Automation has run.
* **Icon tooltips:** Hover over icons in the editor for helpful explanations.
* **Editable When text:** Modify trigger names directly in the editor.
* **Remaining members:** A fallback path when no conditions in a branch are met.
* **Remove Branch Warnings:** A confirmation appears before deleting branches.
**Note:** Total Enrolled will not backfill with historical data.
### Branching logic
The Automations editor supports branching logic, allowing you to create conditional paths within your Automation. If a contact meets the conditions set in a branch, they follow that path. If not, they follow the **Remaining members** branch instead.
### Community Automations
Automations offers Community Automations Automation Blueprint has been added to the existing Automation Blueprints, with additional **Then** community actions also added.
The **Welcome Community Members with a DM** Automation Blueprint automatically sends a personalized message to Community members:
1. From the Kajabi Dashboard, click **Marketing** > **Automations**.
2. Select **+ New Automation**.
3. Within the pop-up, choose **Welcome Community Members with a DM**.
4. Customize the **When** trigger and click **Save**.
5. Customize the **message** that will be sent when triggered. Click **Save**.
6. (Optional) Choose a contact to send a test message to, then click **Send Test**.
7. Click **Publish** and **Save** the Automation to activate.
If you are starting from scratch or setting up a different Automation, the following **Then** actions are available:
* Send Community DM
* Add a member to a private channel
* Remove member from private channel
* Post in channel
## Analytics mode
**Analytics** mode turns your Automation canvas into a performance view, so you can see how many Contacts moved through the flow and how each email performed without leaving the builder.
Use the **Build** and **Analytics** toggle at the top of the Automation to switch between them. **Build** is the editor you already use. **Analytics** is read-only: a **Read-only** label replaces the Save button, and editing stays off until you switch back to **Build**.
**Note:** **Analytics** mode requires [upgrading to the visual Automation Builder](#what%E2%80%99s-changing), and it is also rolling out gradually on top of it. If you have upgraded but do not see the **Build** and **Analytics** toggle on your Automation, it is not available on your account yet.
### Set the date range
Every statistic on the canvas reads from one shared date range, so the flow numbers and the email numbers always describe the same window. The date range button next to **Flow performance** shows the range in use, and **Last 30 days** is the default.
1. Click the date range button next to **Flow performance**.
2. Choose a preset, or click a start date and an end date on the calendar to set your own range. The presets are **Today**, **Last 7 days**, **Last 30 days**, **Last month**, **This month**, **Last quarter**, **This quarter**, **This year**, **Last 12 months**, and **Year to date**.
3. Click **Apply**.
To close the picker without changing the range, click **Cancel**.
The picker also shows the date your Automation was created, since no Contact could enter the flow before then. Performance data is not backfilled. Emails sent before Analytics became available on your account are not counted.
### Read flow performance
The **Flow performance** strip above the canvas summarizes how Contacts moved through the whole Automation:
* **Entered** - How many times Contacts entered the Automation during the selected date range
* **Active now** - Contacts moving through the Automation right now
* **Completed** - How many times Contacts reached the end of the Automation during the selected date range
**Note:** **Active now** is a live count of where Contacts are right now, so it does not change when you change the date range. **Entered** and **Completed** both follow the range you select, and they count each pass through the flow, so a Contact who enters through two triggers or re-enters later is counted each time.
Each trigger on the canvas also shows its own **Entered** count, which is useful when one Automation starts from several different triggers.
### Read email performance on the canvas
In **Analytics** mode, every **Send an email** step displays a compact stats strip directly on the canvas showing **Delivered**, **Opens**, and **Clicks**, so you can scan the whole flow at once. A step with nothing to report in the selected range shows a dash in place of each figure.
Canvas stats appear on the first 40 email steps in an Automation. If your Automation has more than that, open a step directly to see its performance.
### View a single email's report
Click any **Send an email** step in **Analytics** mode to open its full report, which includes:
* A delivery funnel covering **Sent**, **Delivered**, **Opened**, and **Clicked**, with each stage shown as a share of total sends
* A **Drop-off** breakdown listing **Unsuccessful** sends (bounced, failed, and dropped) and how many recipients **Didn't open** the email
* A delivered-over-time chart for the selected date range
* The number of Contacts who unsubscribed from, or reported, that email
When Kajabi has bot-filtered figures for an email, an **Exclude bot clicks** toggle appears on the report. Turn it on to filter automated link-scanner activity out of both **Opens** and **Clicks**. Security software runs these scanners against links before a recipient ever sees them.
### Automations with no email steps
An Automation with no email steps has nothing to report, so **Analytics** mode shows **No email steps yet**. Switch to **Build**, add a **Send an email** action, then return to **Analytics** to see its performance.
## Where to add Automations
Once upgraded, you can create Automations from multiple areas within Kajabi:
* The **Automations** page
* **Forms**
* **Offers**
* **Funnels** (Automations tab)
* **Courses**
* **Email Campaigns** (both Broadcasts and Sequences)
* **Events**
* **Quizzes**
* **Certificates of Completion**
# Set up Comment-to-DM Automations
Source: https://help.kajabi.com/articles/marketing/comment-to-dm/comment-to-dm
Send an automatic DM when someone comments on an Instagram or Facebook post, and use keyword rules to control who receives it.
**Comment-to-DM** is an Automation that sends a direct message to anyone who comments on an Instagram or Facebook post. Use it to deliver a lead magnet, answer a common question, or start a conversation while interest is high, without watching your comments all day.
Comment-to-DM is built on [Kajabi Automations](../../marketing/automations/automations-overview), and every DM it sends arrives in [Universal Inbox](../../marketing/universal-inbox/universal-inbox) alongside your other social conversations.
## Before you begin
* Your site must be on a Growth or Pro plan. Comment-to-DM is not available on legacy plans, and neither are the Facebook and Instagram integrations. See [kajabi.com/pricing](https://kajabi.com/pricing) for current plan details
* Connect the Instagram or Facebook account you want to automate. See [Manage messages in Universal Inbox](../../marketing/universal-inbox/universal-inbox)
* For Instagram, you need an [Instagram Professional account](https://help.instagram.com/502981923235522?helpref=faq_content)
**Note:** Third-party messaging platforms and integrations can interfere with Comment-to-DM Automations. Use Kajabi on its own for these Automations so each one completes correctly.
## Set up Comment-to-DM for Instagram
1. From the Kajabi Dashboard, select **Marketing** > **Automations**
2. Click **+New Automation**
3. Choose the **Instagram comment-to-conversation** blueprint
4. For the **When** trigger, select a specific Instagram post, or choose **Any post** to include every future post
5. Click **Save trigger**
6. Customize the direct message that sends when the post receives a comment
7. (Optional) Customize an automatic Instagram reply to the comment itself
8. Click **Save**
## Set up Comment-to-DM for Facebook
1. From the Kajabi Dashboard, select **Marketing** > **Automations**
2. Click **+New Automation**
3. Choose the **Facebook comment-to-conversation** blueprint
4. For the **When** trigger, select a specific Facebook Page, or choose **Any page** to include all of your Pages
5. For a specific Page, select a specific post, or choose **Any post** to include every future post on that Page
6. Click **Save trigger**
7. Customize the direct message that sends when the post receives a comment
8. (Optional) Customize an automatic Facebook reply to the comment itself
9. Click **Save**
**Note:** Facebook may temporarily block automated and manual comment replies when reply volume across your posts is high (roughly 250 or more per day). If you expect that volume, skip the comment reply action. Automated DMs are unaffected, and Instagram comment replies are not subject to this limit.
## Choose which comments trigger the DM
Every Comment-to-DM trigger uses one of three settings:
| Setting | What it does |
| --------------------- | ----------------------------------------------------------- |
| **Any comments** | Sends the DM for every comment received |
| **No comments** | Pauses the trigger without deleting the Automation |
| **Specific keywords** | Sends the DM only when a comment matches your keyword rules |
### Set keyword rules
With **Specific keywords**, enter your keywords as a comma-separated list, then use either or both rule types:
* **Include keywords**: the comment must contain at least one of these. With `pricing, cost, price`, the comment "What's the pricing?" matches
* **Exclude keywords**: the comment must not contain any of these. With `spam, fake, bot`, the comment "This looks like spam" is blocked
When you use both, a comment must pass the Include rule and clear the Exclude rule. With Include `help, support` and Exclude `never, don't`, the comment "I need help" matches, and "I don't need help" is blocked.
### How keyword matching works
* Case does not matter, so `HELP`, `help`, and `Help` behave identically
* Single-word keywords match whole words only, so `help` does not match "helpful"
* A keyword containing a space matches as a complete phrase, so `how much` matches "how much do you charge" but not a comment that uses "how" and "much" separately
* Numbers and emoji work as keywords, so `112`, `2024`, ❤️, and 🔥 are all valid
## FAQs
### What happens if I already have an Inbox Automation set up through Meta?
Both Automations trigger. Centralize your Automations in Kajabi, or make sure the triggers do not overlap.
### Can I set up a Comment-to-DM Automation on a post that is not live yet?
Yes. Once the post goes live and receives comments, the DMs start sending.
### Are there post types that do not support Automations?
You cannot build an Automation from a Facebook album post, because Meta does not support it.
### Which Kajabi plan includes Comment-to-DM?
Comment-to-DM is available on Growth and Pro plans, and is not available on legacy plans. Universal Inbox itself is available on any plan.
# Creator Studio
Source: https://help.kajabi.com/articles/marketing/creator-studio/creator-studio
Repurpose videos into clips, blog posts, and emails, view remaining Creator Studio projects, and customize content with Adobe Express.
The Creator Studio feature will be sunset on November 9, 2026. Until then, only Heroes with the Creator Studio add-on are able to use this feature.
**Creator Studio** helps you repurpose any video into clips, transcripts, emails, blogs, social posts, and more in just a few clicks. Reach more people in less time by creating content for every channel — social media clips, blog posts, emails, landing page copy, and beyond.
With just a few clicks, you can have enough content to market your Course, Podcast, Community, or Coaching services for weeks.
## How Creator Studio works
To get started, select a video to repurpose.
You can select an existing Course video from within Kajabi, upload a video directly to Creator Studio, select a Recent File, or paste a YouTube URL. When choosing an existing Course video, you can select from any draft or published content over one minute long.
Then, select what marketing content you want to generate based on this video. There are two types of content that you can generate:
* Written-based content (e.g., blog post, email)
* Video clips
You may select up to fifteen types of content. All content repurposed from the same video will live in the same project.
### Create written-based content
1. Select the written content you want to generate
2. Select **Create**
3. Open the project and select the text thumbnail to view the written content
4. Edit the content, save the changes, copy the content, and regenerate the content as needed
Creator Studio also gives you suggestions for next steps such as creating a blog post with the listicle blog post text. Select the suggestion to open it in a tab.
Then, select the **Copy** icon to copy the text to your clipboard so you can paste it into your email.
### Create a video clip
1. Select **Video clip** when creating a project or when adding media to an existing project
2. Click **Clip video** to open the Creator Studio Script Editor
From the Script Editor, you can view the video's entire transcript, download the transcript and subtitles of the full video, and select highlights with just a click to create a video clip:
You can also use the integrated AI key moments feature. Creator Studio suggests highlights based on the intended length of your final video clip. For every video, the AI can only make three unique Auto-Highlight selections based on those lengths. For example, asking the AI to Auto-Highlight less than three minutes again will result in the same sentences being highlighted.
### Change or remove auto-selected highlights
You can remove any highlight, whether it's one you've made or one the AI suggested. Use the left highlight pane to navigate to where the highlight appears in the original transcript. Selecting the highlight in the transcript again will remove it from your list.
When you are satisfied with the highlights you want to use, click **Save and close**, and Kajabi will start processing your video clip. Kajabi will do this completely in the background. While the clip is being generated, you can safely create another video clip using different highlights or leave Creator Studio or the Kajabi app.
After generating your video clips, you can preview the clip, adjust the layout for different social media platforms, customize the clip using the integrated Adobe Express editor, rename the clip, download the clip, download the clip's transcripts and subtitles, or share the clip to Facebook, Instagram, and LinkedIn.
To adjust the layout for different social media platforms, add text, add animated transitions, and make other customizations, select **Edit video**:
In this video editor, you can also trim your video, upload a logo, add text, and change the background color:
## Repurpose any video
### Get started with Creator Studio
1. Open the **Creator Studio** tab from your Dashboard
2. Select **Create your first project** or **+ New Project**
3. Click **Upload a video** or **Select a recent file**
4. After selecting the video, review it
5. Select the content you want to create from this video
6. Click **Create** to generate your content
Not sure where to start? You can upload the following:
* YouTube video
* Coaching recording
* Webinar recording
* Livestream recording
* Community meetup recording — [Learn more about Community meetups](../../products/community/create-a-community-meetup)
There are two ways to repurpose a Kajabi Community meetup recording using Creator Studio:
* Using a video link
* Using the downloaded video file
### Use a video link
1. Log into your Community
2. Go to the **Meetups** tab
3. Hover over the recording you want to use
4. Copy the video link
5. Create a **Creator Studio** project
6. Paste the video link
### Use the downloaded video file
1. Log into your Community
2. Go to the **Meetups** tab
3. Hover over the recording you want to download
4. Select **Download**
5. Create a **Creator Studio** project
6. Select **Upload a video**
7. Select that video file
**Note:**
* Videos shorter than one minute or longer than 4 hours cannot be used to generate video clips with Creator Studio. [Learn more about video formats accepted by Kajabi](../../products/courses/video-formats-supported-by-kajabi)
* Draft lessons with video are available in Creator Studio. If your Course does not contain video lessons it will not be available to use in Creator Studio.
* Only Coaching recordings embedded in the Details tab will be available to select, not recordings uploaded as attachments in resources.
## Creator Studio projects
A project contains all the marketing content you create from a single, original video.
You create a project by selecting **New project** from the Creator Studio homepage. Then, select the video you want to repurpose and the marketing content you want to create from it (e.g., landing page copy, video clips, email copy, transcripts, etc.)
The number of projects you can create each month depends on your Creator Studio plan:
* **Creator Studio Basic:** Generate unlimited content from 4 videos per month
* **Creator Studio Premium:** Generate unlimited content from 30 videos per month
### View remaining projects
1. Open **Creator Studio** from your Kajabi Dashboard
2. Next to the **New project** button, you will see the number of projects you have made this month and the number of projects you can create this month
The refresh date is based on your base plan subscription date; if your base plan refreshes on the 5th of every month or year, then your Creator Studio projects refresh on the 5th of every month.
### Downgrade a Creator Studio plan
To downgrade your Creator Studio plan, email [support@kajabi.com](mailto:support@kajabi.com) for assistance.
**Note:**
If you downgrade Creator Studio Premium, you will lose complimentary access to Adobe Express Premium.
## Adobe Express
Adobe Express is an all-in-one design, photo, and video tool that makes content creation easy. Built-in Adobe Express editing tools help you level up your content without design experience. [Learn more about Adobe Express](https://www.adobe.com/express/).
Creator Studio Premium includes complimentary access to Adobe Express Premium for 6 months, which adds premium templates, design elements, and editing features. To extend access after 6 months, email [support@kajabi.com](mailto:support@kajabi.com).
You can also purchase Adobe Express Premium directly from Adobe. Visit [https://new.express.adobe.com](https://new.express.adobe.com) and log in to purchase.
## FAQs
### Can I use videos other than Course videos?
Yes, you can upload any video to Creator Studio, as long as it is longer than 1 minute, shorter than 4 hours, and less than 4 GB. [Learn more about video formats accepted by Kajabi](../../products/courses/video-formats-supported-by-kajabi).
### Can I use audio-only files?
Audio-only files are not supported.
### How does the AI suggest key moments?
Creator Studio will create a speech-to-text script of your video and identify complete sentences. It will then mix and match sentences until it can (1) create a clip under the desired duration, and (2) produce a fair summary of the entire video.
It's possible that if you do a great job summarizing a particular part of the video, the AI will pick that part for the clip. However, the app is not designed to favor one part of the video over another.
### Can I ask Kajabi to redo and make a new set of highlights?
At this time, the AI will always suggest the same set of highlights given the same Course video and desired duration.
### How can I quickly highlight sentences for a specific topic?
By using the search bar in the Script Editor, you can enter the name of your topic or a specific keyword. Then, quickly highlight the sentences pertaining to your topic by selecting them.
### Can I download the script, subtitles, or captions?
Yes, you can download the full transcript and subtitle (.srt) file for any video you upload into Creator Studio. [Learn more](../../marketing/creator-studio/how-to-download-transcript-and-subtitles-with-creator-studio).
You can also download the transcript and subtitle (.srt) file for any Creator Studio clip you create. [Learn more](../../marketing/creator-studio/how-to-download-transcript-and-subtitles-with-creator-studio).
### What does unlimited content mean?
Within a project, you can select **New media** to create unlimited pieces of content — clips, emails, blog posts, and more, at any time. You can repurpose a single video into unlimited content, including video clips.
You can also regenerate each piece of content if you want to see variations.
### There's an error creating my project. Does that count against my project count per month?
No, projects with errors do not count towards your limit. You can delete the project and re-create it.
### Do projects roll over from month to month?
No, on your Creator Studio homepage, you can view your remaining projects. Click the information symbol (i) to view when your projects will refresh:
### If I have multiple sites, can I create projects across all sites?
Yes, your project count is for your account, not a specific site. If you have 30 projects per month and 3 sites, you can split those 30 projects across all 3 sites.
### I have an annual base plan and annual Creator Studio plan. Do I get to spread out my projects across the entire year?
No, your base plan only impacts the amount you pay and the frequency you pay. It does not impact how many projects you get per month. Projects do not roll over from month to month.
### If I cancel my Creator Studio plan, will I lose the projects and content I've created?
Cancelling does not delete anything. Your projects and content stay in your Creator Studio tab while Creator Studio is available.
Creator Studio is being sunset, though, so the tab and everything in it will become unavailable when the feature is removed. Download anything you want to keep before then. [Learn how to prepare for the Creator Studio sunset](../../marketing/creator-studio/prepare-for-the-creator-studio-sunset).
### Does the content I generate expire?
Individual pieces of content do not expire on their own, but Creator Studio is being sunset, so access to them ends when the feature is removed. Download the content you want to keep while Creator Studio is still available. Files you download are yours to use with no time limit. [Learn how to prepare for the Creator Studio sunset](../../marketing/creator-studio/prepare-for-the-creator-studio-sunset).
# Creator Studio permissions
Source: https://help.kajabi.com/articles/marketing/creator-studio/creator-studio-permissions
Grant the required permissions for Kajabi to share Creator Studio content to social media.
The Creator Studio feature will be sunset on November 9, 2026. Until then, only Heroes with the Creator Studio add-on are able to use this feature.
Kajabi can share the video clips you make in Creator Studio directly to your social media. In order to do so, Kajabi requires that you give permission to do all of the following for each social media account you connect.
## Required permissions
### Facebook
On Facebook, Kajabi will ask to:
* **Manage your business** to allow posting on your behalf
For your Facebook Pages, Kajabi will ask to:
* **Show a list of the Pages you manage** to allow you to pick which Page to post to
* **Create and manage content on your page** to post your video clip on your behalf
* **Publish videos to your timeline on your behalf** to be able to post video files on your account
* **Read content posted on the page** to share with you how your video clip performs
For your Facebook Groups, Kajabi will ask to:
* **Post content into groups on your behalf** to post your video clip on your behalf
* **Access your authored posts and comments in groups** to share with you how your video clip performs
**Note:**
To share your Creator Studio Clips with Facebook directly from Kajabi, you will need to add the Kajabi Marketing Services App. [Learn to add the Kajabi Marketing Services App to your Facebook Group](../../marketing/creator-studio/how-to-share-your-creator-studio-clips-to-facebook-from-kajabi).
### Instagram
On Instagram, Kajabi will ask to:
* **Access your profile and posts from the Instagram account connected to your Page** to allow you to pick which account to post as and to post your video clip on your behalf
* **Upload media and create posts for the Instagram account connected to your Page** to be able to post video files on your account
### LinkedIn
On LinkedIn, Kajabi will ask to:
* Access your profile to post your video clip to your LinkedIn profile
[Learn more about sharing content to LinkedIn](https://www.linkedin.com/help/linkedin/answer/a519947).
## Remove Kajabi access from accounts
You can remove Kajabi's access to your Facebook and Instagram accounts by navigating to Facebook and accessing the Business Integrations under **Settings > Security and Login > Business Integrations**.
**Note:**
Kajabi will not be able to post to your Facebook page, Facebook group, or Instagram account without these permissions. Previously posted videos will still appear on your Facebook page, Facebook group, or Instagram account until you delete them on the social network.
You can read more instructions from Facebook here: [How do I edit the privacy and settings for my business integrations or remove them from Facebook?](https://www.facebook.com/help/405094243235242)
# Build Creator Studio clips
Source: https://help.kajabi.com/articles/marketing/creator-studio/how-to-build-your-creator-studio-clips
Generate Creator Studio clips with manual highlights or Kajabi's AI key moments feature.
The Creator Studio feature will be sunset on November 9, 2026. Until then, only Heroes with the Creator Studio add-on are able to use this feature.
**Creator Studio** lets you repurpose any video into clips, transcripts, emails, blogs, social posts, and more in just a few clicks. Within minutes, you can have marketing content to share on any channel.
[Learn more about Creator Studio](../../marketing/creator-studio/creator-studio).
## Highlighting
When you open a Creator Studio project, you will have direct access to the transcript from your Course video.
With Creator Studio, you are in full control of what you want to use for your video clip by highlighting the parts of the script you want to include in your final clip.
### Manual highlighting
Select specific sentences in your transcript to control the highlights used in your final video clip.
* **To manually highlight:** Click a sentence in the transcript to add a highlight
* **To remove a highlight:** Click the highlighted sentence in the transcript
As you manually highlight sentences in your transcript, they will appear in the Highlights panel to the right of the editor.
A duration counter in the highlights panel can help you keep track of how long your video clip will be.
For long transcripts, you can click on the highlight in a panel to find where it was originally spoken in line with the script.
Selecting a sentence to create a highlight will be auto-saved to the Kajabi app. If you leave for any reason, any highlights you have added will be waiting for you when you return to Creator Studio.
### Capture key moments
Creator Studio offers an AI key moments feature if you need inspiration on what parts of your video you should use.
Kajabi's AI can make up to 3 recommendations based on the length of your video:
* **Short:** Great for Instagram Reels and TikTok videos
* **Medium:** Ideal for Facebook and LinkedIn posts
* **Long:** Recommended for posting to a YouTube channel
When you select a key moment recommendation, Kajabi's AI will highlight the portions of your transcript that will add up to the target duration.
From here, you can add or remove highlights that the AI made or add your own to the list:
**Note:**
Click on any highlight in the right panel to see where the highlighted sentence was said in context in the Transcript. If you have manually selected any highlights before using a key moment, all existing highlights will be cleared before applying the key moment to avoid any conflict.
Things to keep in mind with AI key moments:
* The AI is trained to use only complete sentences from the transcript and to cover most (if not all) the topics in the video
* This can lead to the AI making a suggested key moment longer than the targeted duration. You may have to remove highlights to achieve your desired duration
* The AI can only make 3 suggestions based on the duration selected for each Course video. If you reapply a set of highlights, you will see the same sentences highlighted for each selected duration
### Reset highlights
Need to start over? Click **Clear all** to remove all of your highlights in a single action:
## Generate a video clip
When you are satisfied with your highlights, click **Save and close**:
Creator Studio will create a video clip based on the sentences you highlighted.
Generating your video clip will take place in the background to allow you to safely work on other video projects or navigate to different areas of Kajabi.
You will receive an email notification when your clip is ready to be downloaded and shared. [Learn to update your email notifications](../../account-settings/notifications/update-email-notifications).
## Preview a video clip
### Watch the video
Preview your video clip by following along with the transcript. You can view the video in the upper right corner if you need a reminder of what was on screen during each section.
As you watch the video, the bolded timestamp on the transcript will follow along with your progress in the video.
Click on the transcript's timestamp if you want to quickly jump to a specific part of the video.
### Highlights
With Highlights, you can see how much of your video you have highlighted from the transcript panel's scrollbar. As you select more highlights, the scrollbar will fill in based on the part of the video where the highlight came from.
This is a quick way to see if you're highlighting from the beginning or end part of your video.
### Preview highlights
View a rough draft preview of your Creator Studio clip before committing to generating it.
To preview, click the **Preview** button to open a modal with your rough draft clip ready to view.
Here you can play or pause and skip forward to the next highlight or skip backward to the previous highlight.
Additionally, you can restart your video from the beginning to review your entire video.
### Common errors
Some accounts may see the error screen pictured below when viewing a Creator Studio project where the project's original Course video was deleted.
Your other Course videos and your ability to generate a clip have not been impacted.
If you would like to be able to preview your video, adhere to the following:
1. Make sure the video you want to work with is uploaded to a Course module
2. Create a project using your intended video
The video and clip previews will be working when it finishes transcribing.
## Share a video clip
After your video clip has finished generating, you can preview your video clip, [customize your clip](../../marketing/creator-studio/how-to-customize-your-creator-studio-clips), rename your clip, download the clip transcript and subtitles, download your clip, and share it on your social media platforms.
[Learn to manage your Creator Studio projects](../../marketing/creator-studio/how-to-manage-your-creator-studio-projects).
# Customize Creator Studio clips
Source: https://help.kajabi.com/articles/marketing/creator-studio/how-to-customize-your-creator-studio-clips
Edit and enhance Creator Studio clips with the integrated Adobe Express editor.
The Creator Studio feature will be sunset on November 9, 2026. Until then, only Heroes with the Creator Studio add-on are able to use this feature.
Creator Studio integrates with **Adobe Express** so you can resize, trim, and enhance your video clips before sharing them. Use the built-in editor to adjust dimensions, add text, apply templates, and more — all without leaving Kajabi.
## Customize clips
1. First, create a highlight clip. [Learn more](../../marketing/creator-studio/how-to-build-your-creator-studio-clips)
2. Select **Edit video**
3. An Adobe Express pop-up will appear. Log in to an existing Adobe Express account, or create an account
4. Resize your video to your desired dimension. You may also trim the video and adjust the video scale
After resizing your video, click **Open in editor** to begin using all the editing features available with Adobe Express.
Features include:
* Templates
* Stock images and videos
* Video editing tools
[Learn more about Adobe Express](https://www.adobe.com/express/#level-up-with-adobe-express).
Now that you have edited your video with Adobe Express, click **Save** to save the video back to Kajabi.
The edited video clip will appear along with all of your other clips in your Creator Studio project.
You can rename the file, share it to social media, and easily add it to your landing page, website, and blog via [Recent Files](../../website/pages/how-to-upload-from-a-list-of-recent-videos-or-images).
## Schedule clips for social media
After you edit a video using Adobe Express, you can schedule your video to be posted on social media.
1. Go to [https://new.express.adobe.com/your-stuff/files](https://new.express.adobe.com/your-stuff/files)
2. Log in to your Adobe Express account
3. Open the file you wish to schedule
4. Select **Share**
5. Click **Schedule post**
## Troubleshooting
### Edit with Adobe button is not visible
The **Edit with Adobe** button is only visible for highlight clips (i.e., videos that you have clipped).
In order to edit a video with Adobe, you must first select the sentences you want in your highlight video and then save that highlight video.
Then, you can edit that highlight video as many times as you'd like using Adobe Express.
### An error occurred while initializing Adobe Express
If this error occurs, try creating the highlight clip again.
To recreate the same highlight clip:
1. Select **New media**
2. Click **Video clip**
3. Select **Clip video** to select the sentences you want to include in your highlight clip. Creator Studio remembers the most recent set of sentences you selected
4. Click **Save and close** and wait for the highlight clip to finish processing
When the highlight clip is ready, you should see the **Edit with Adobe** button.
### File size is too big
In rare circumstances, video clip files that are too large will be unable to be loaded into the video editor.
Your video clip must be less than 1GB and shorter than 5 minutes. You can pick a different video clip, or make a smaller one with fewer highlights to use the video editor.
# Delete Creator Studio projects and clips
Source: https://help.kajabi.com/articles/marketing/creator-studio/how-to-delete-creator-studio-projects-clips
Remove projects or clips from Creator Studio.
The Creator Studio feature will be sunset on November 9, 2026. Until then, only Heroes with the Creator Studio add-on are able to use this feature.
## Delete projects
1. Open **Creator Studio** from your homepage
2. Hover over the project tile
3. Click the **...** menu
4. Click **Delete**
## Delete clips
1. Open **Creator Studio** from your homepage
2. Select your desired project
3. Open the **...** menu next to the clip you wish to delete
4. Select **Delete**
# Download transcripts and subtitles with Creator Studio
Source: https://help.kajabi.com/articles/marketing/creator-studio/how-to-download-transcript-and-subtitles-with-creator-studio
Download transcript and subtitle files from Creator Studio to use across platforms.
The Creator Studio feature will be sunset on November 9, 2026. Until then, only Heroes with the Creator Studio add-on are able to use this feature.
Downloading your Creator Studio clip transcripts and subtitles can strengthen your brand and marketing efforts by providing accessible content with your clips.
For example, you can use your Creator Studio clip to create a marketing video to publish to your YouTube channel and use your downloaded transcripts and subtitles to add captioning, making your content more accessible to all viewers.
With transcripts and subtitles, you can:
* **Add closed captions to Course videos** — Download the .srt file from Creator Studio, then upload it to your Course video
* **Add closed captions to blog videos** — Download the .srt file from Creator Studio, then upload it to your blog video
* **Add closed captions to YouTube videos** — Download the .srt file from Creator Studio, then upload it to YouTube Studio
* **Create a mini-course** — Use Creator Studio to turn long Course videos into short Course videos, then upload them to a Course
* **Add videos to a Kajabi blog** — Select your highlight video from Recent Files
* **Create marketing assets** — Use your video script to help draft emails, blogs, website content, landing page copy, and more
* **Create YouTube chapter markers** — Upload your Creator Studio video to YouTube, and use the corresponding .srt file to create chapter markers in the YouTube description box
## View, edit, and download the full transcript and subtitles
1. When creating a project, select **Transcript** and **Subtitle** to generate them for your video
2. After the project finishes processing, open the project
3. Select the transcript or subtitle thumbnail to view and edit
4. Click the download icon to download the file
**Note:**
The option to download the full transcript and subtitles is only available for projects created after July 17th, 2023. To download the full transcript and subtitles of videos you created before July 17th, 2023, create a project using that video.
## Download transcript and subtitles from a highlight clip
To download your transcript and subtitle files from a Creator Studio clip, you will first need to create a Creator Studio clip.
### Open the Script Editor and select highlights
If you have not created a Creator Studio clip, you will first need to create a clip. [Learn more](../../marketing/creator-studio/creator-studio).
1. Open the Script Editor to select sentences for your highlight video
2. Click **Generate clip**. Your video will start processing on the project exports page. [Learn more](../../marketing/creator-studio/how-to-build-your-creator-studio-clips)
### Download the transcript and subtitles
1. After your video finishes processing, you will see the **...** menu
2. Click the **...** menu. You will see three options to download your transcript and subtitle files
**Note:**
The option to download the transcript and subtitles is only available for auto-highlighted videos created after June 1st, 2023, not customized videos or previously created highlight videos.
# Manage Creator Studio projects
Source: https://help.kajabi.com/articles/marketing/creator-studio/how-to-manage-your-creator-studio-projects
Organize, rename, and create content within Creator Studio projects and video clips.
The Creator Studio feature will be sunset on November 9, 2026. Until then, only Heroes with the Creator Studio add-on are able to use this feature.
A Creator Studio *project* contains all the marketing content you create from a single, original video. *Video clips* are the video files you make from a project to use for social media, website pages, landing pages, blogs, mini-courses, and more.
## Projects and video clips
### What are projects?
You create a project by selecting **New project** from the Creator Studio homepage. Then, select the video you want to repurpose and the marketing content you want to create from it (e.g., landing page copy, video clips, email copy, transcripts, etc.)
### What are video clips?
Video clips are the video files that you make from a project to use for social media, website pages, landing pages, blogs, mini-courses, and more.
There are two types of video clips: highlight video clips and customized clips.
### Create a highlight video clip
1. Select **Clip video** to launch the Script Editor and select which sentences to include in your highlight video clip
2. Select **Save and close** to generate your highlight video clip
### Create a customized clip
1. Select **Edit video** to launch the integrated Adobe Express editor
2. Select the dimensions of your video and customize your video
3. Click **Save** to close and generate your customized video clip
[Learn more about customizing your clip using Adobe Express](../../marketing/creator-studio/how-to-customize-your-creator-studio-clips).
## Manage projects
All of your projects for your site are accessible from the main Creator Studio homepage.
By default, the project has the same name as the original content.
## Manage video clips
All of your clips are organized by the project from which they were made.
Viewing your video clips within a project will allow you to see when the clip was created and its duration.
You can also:
* **Rename a clip** — By default, your clip will be named based on when it was created
* Preview the clip
* Download the clip
* Download the transcript and subtitle files of a highlight clip
* Customize the highlight clip using Adobe Express
* Share the clip to social media
* Schedule the clip to social media using Adobe Express
Kajabi will notify you with an email confirmation when your project has finished transcribing, your highlight video has been generated, and your customized video is ready to download. [Learn to update your email notifications](../../account-settings/notifications/update-email-notifications).
## Create more content from the same video
To create more content based on the same original video:
1. Open the **project** for that original video
2. Click **New media**
3. Select what content you want to create based on that original video
**Note:**
You do not need to create a project to generate more marketing content from the same video. You can navigate to that project and select **New media**.
# Share Creator Studio clips to Facebook
Source: https://help.kajabi.com/articles/marketing/creator-studio/how-to-share-your-creator-studio-clips-to-facebook-from-kajabi
Connect the Kajabi Marketing Services App to share Creator Studio clips directly to Facebook Groups.
The Creator Studio feature will be sunset on November 9, 2026. Until then, only Heroes with the Creator Studio add-on are able to use this feature.
**Creator Studio** lets you generate a highlight video from your existing videos and share it to Facebook and Instagram with one click — no manual editing, downloading, or re-uploading required.
To share your Creator Studio clips to Facebook directly from Creator Studio, you will first need to add the Kajabi Marketing Services App to your desired Facebook Group.
**Note:**
Your Creator Studio clips can be shared to a Facebook Group from Creator Studio if you have created the Group and set up the Kajabi Marketing Services app, or if you are a member of the Facebook Group that has the Kajabi Marketing Services app set up by an Admin of the Group.
## Add Kajabi Marketing Services App
1. Log into your Facebook account
2. Open **Your Groups**
3. Select your **Group**
4. Navigate to the sidebar
5. Click **Group settings**
6. Select the edit icon for **Apps** under "Manage advanced settings"
7. Click **Add apps**
8. In the sidebar, search **Kajabi Marketing Services**
9. Select **Kajabi Marketing Services**
10. Click **Add** in the pop-up modal to complete
# Prepare for the Creator Studio sunset
Source: https://help.kajabi.com/articles/marketing/creator-studio/prepare-for-the-creator-studio-sunset
Save the projects you already built and see which tools now handle written content, transcripts, clips, and video editing.
**Creator Studio** is being sunset. Download the content from your existing projects, and create any future content by referring to the feature relocation table.
| **What you built in Creator Studio** | **Where to do it now** |
| ------------------------------------ | ---------------------------- |
| Blog posts, emails, and social copy | Kajabi MCP |
| Transcripts and subtitle files | Media Library |
| Translations and dubbing | Media Library |
| Video clips | A third-party editor |
| Resizing and editing video | A third-party editor |
| Posting to social platforms | Manual upload or a scheduler |
## Export Creator Studio content
Kajabi has already moved your video clips into your Media Library, so those are safe. The rest of what you built in Creator Studio is not saved automatically: running the export is the step that keeps your written content, transcripts, and subtitle files, and Kajabi emails them to you.
One export covers your whole account, so you do not have to open projects one at a time. Download all content you developed with Creator Studio even for content you're not sure you still need.
**Warning:** Anything you do not export before Creator Studio is removed will be permanently deleted and can't be recovered. Your video clips are the exception, because those are already in your Media Library.
1. Select **More** in the left sidebar of your Kajabi Dashboard, then select **Creator Studio**. If **Creator Studio** is not listed there, contact Kajabi Support, because your account may still hold content to export.
2. Find the **Creator Studio is being retired** banner at the top of your projects list. If you do not see it, the export is not available on your account yet.
3. Click **Export my projects**. This starts your written content export:
4. Open the email **Your Creator Studio export is ready** when it arrives. Kajabi sends it to the account owner, even when someone else starts the export.
5. Sign in to your Kajabi account, then click **Download Creator Studio export** in that email.
Your export arrives as a single ZIP file. Inside it, a **projects** folder holds one folder per project, and each project folder contains:
* Written content the project generated, such as blog posts, emails, social captions, and website copy, as .txt files
* Transcripts as .txt files
* Subtitle files as .srt or .vtt files
A **MANIFEST.txt** file at the top level lists every file in the archive, along with anything Kajabi could not include and why. Projects you deleted before running the export are included too, in a separate **deleted-projects** folder.
**Note:** The export covers every site in your account, not only the site you start it from, and only an owner, subowner, or administrator can run it. Anything that has not finished generating, or that you create while the export is being built, is left out, so run the export again to pick it up.
### Find video clips in Media Library
Kajabi moved your video clips into your [**Media Library**](/articles/media-library/media-library-overview) on September 9, 2026, so they are already waiting for you there. They sit alongside the rest of your video and stay available after Creator Studio is removed. Your emailed ZIP file holds text only, so look for your clips in Media Library rather than in the ZIP file.
Your clips carry the Tag **Creator Studio**, so you can filter your library by that Tag to see them on their own. From there you can use them anywhere in Kajabi that takes a video from your library.
Clips that had finished processing are the ones that moved. Clips you deleted were not brought back, even though your ZIP file does include the written content from projects you deleted.
If a clip is missing, click **Export my projects** to move over anything still left in Creator Studio. That is also how a clip that finishes after September 9, 2026 reaches your Media Library. Running the export more than once is safe: clips already in your Media Library are not added a second time, and if you remove the **Creator Studio** Tag from a clip, a later export puts it back.
If you also want a copy on your own computer, download a clip before Creator Studio is removed:
1. Open a project in **Creator Studio**.
2. Find a finished clip in the project's clip list.
3. Click the download icon on that clip.
## Turn videos into written content
Creator Studio generates blog posts, emails, social captions, and landing page copy from a video. [**Kajabi MCP**](/articles/api-integrations/connect-kajabi-to-claude-or-chatgpt) covers the same ground, and it drafts directly into Kajabi rather than handing you text to copy out.
Kajabi MCP connects your Kajabi account to an AI tool such as Claude or ChatGPT. You describe what you want in plain language, and it builds the draft inside Kajabi for you to review and publish. It can draft Blog Posts, Email Broadcasts, Email Sequences, and Landing Pages, along with Offers, Courses, and Coaching products.
Because Kajabi MCP works from a conversation rather than from a video file, you are not limited to repurposing recordings. You can paste in a transcript, describe a topic, or ask it to work from content already in your account.
You will need an AI tool that supports MCP, such as Claude or ChatGPT.
[Learn how to connect Kajabi to Claude or ChatGPT](../../api-integrations/connect-kajabi-to-claude-or-chatgpt).
## Generate transcripts and captions
Creator Studio produces a transcript and a subtitle (.srt) file for each video. That work now happens in the [**Media Library**](/articles/media-library/media-library-overview), the central place where your Kajabi video and audio files live.
From a video's asset detail page in Media Library, you can:
* Generate a transcript automatically, or upload a transcript you already have
* Edit the transcript in an interactive editor
* Download and edit SRT files
* Translate a transcription from 30+ source languages into 70+ languages
* Add a dubbed voiceover in another language
**Translations** and **Dubbing** both require a transcription to exist first.
**Transcriptions**, Translations, and Dubbing run on [**AI Credits**](/articles/account-settings/billing/ai-credits). Pro and Founders plans include 1,000 AI Credits each month and Growth includes 500. Any plan can purchase additional credits from **Settings** > **Account Settings** > **Subscription & Billing**.
[Learn how to use Kajabi Transcripts, Translations, and Dubbing](../../products/courses/kajabi-transcripts-translations-dubbing).
[Learn more about AI Credits](../../account-settings/billing/ai-credits).
## Create video clips
Creator Studio let you turn highlighted transcript sentences into short video clips, either by selecting them manually or using AI key moments. Kajabi does not yet have a built-in replacement for transcript-based clipping, so you must use a video tool outside Kajabi like [Descript](https://descript.com).
Clips you already made are finished video files you can keep posting. They are already in your Media Library, where they stay available after Creator Studio is removed.
## Edit and resize videos for social
Inside Creator Studio, **Adobe Express** handles video work: adjusting the layout for different social platforms, adding text and a logo, trimming, changing the background color, and adding animated transitions.
Adobe Express itself does not disappear from Kajabi. Media Library still uses Adobe Express for images, where you can generate an image with AI, browse **Adobe Stock**, and crop, resize, or add text and filters to any image in your library.
[Learn more about Media Library](../../media-library/media-library-overview).
To edit video, you have options outside Kajabi:
* Purchase Adobe Express directly from [Adobe](https://new.express.adobe.com) to keep working in the same editor
* Use a third party tool like **Descript** to edit video through its transcript
* Use a video editing tool like [**iMovie**](https://www.apple.com/imovie/index.html) for basic trimming and assembly
## Share clips to social platforms
Creator Studio posts finished clips straight to Facebook, Instagram, and LinkedIn. Kajabi does not publish to social platforms today, so once you have a finished video file, you can upload the file to each platform directly or use a third-party social scheduling tool.
## FAQs
### Will I lose the projects and content I created?
Your video clips are already saved to your Media Library, so those are not at risk. Your written content, transcripts, and subtitle files are a different matter: running the export is what emails those to you, and anything you leave behind becomes unavailable once Creator Studio is removed.
### Why are my video clips not in the export?
The emailed ZIP file holds text only. Your clips are in your Media Library instead, so check there rather than in the ZIP file. They carry the Tag **Creator Studio**, so you can filter by that Tag to pull them up. If you saw **There's nothing to export yet**, that message is about written content only and has no bearing on your clips.
### Can I still create Creator Studio projects?
That depends on whether you pay for the add-on. The Creator Studio add-on is closed to purchase, and accounts without a paid add-on can no longer create projects. If you currently pay for the Creator Studio add-on, you can keep creating projects until Creator Studio is sunset.
### Does Kajabi have a built-in video clipping tool?
Not at this time. Media Library covers transcription, translation, dubbing, chapters, and analytics for your video, but not transcript-based clipping.
### Has Adobe Express been removed from Kajabi?
No. Adobe Express still powers image creation and editing in Media Library, including AI image generation and Adobe Stock browsing. Only the Adobe Express video editing built into Creator Studio goes away.
### Do transcripts cost anything now?
Transcriptions run on AI Credits rather than being included with a Creator Studio plan. Pro and Founders plans include 1,000 AI Credits each month, Growth includes 500, and transcription uses 1 credit per minute. Any plan can buy more credits.
### Can I still download transcripts and subtitle files?
Yes. Media Library generates transcripts for your uploaded video and lets you download and edit SRT files, the same subtitle format Creator Studio produced.
# Share Creator Studio content
Source: https://help.kajabi.com/articles/marketing/creator-studio/sharing-your-creator-studio-content
Share Creator Studio clips directly to Facebook, Instagram, and LinkedIn.
The Creator Studio feature will be sunset on November 9, 2026. Until then, only Heroes with the Creator Studio add-on are able to use this feature.
Kajabi can share the content you make in **Creator Studio** directly to the following social media networks:
* Facebook Pages and Groups
* Instagram Reels
* LinkedIn Posts
To share content, Kajabi requires that you give permission for each social media account you connect. [Learn more about Creator Studio permissions](../../marketing/creator-studio/creator-studio-permissions).
Looking to schedule your clips for social media? [Learn more](../../marketing/creator-studio/how-to-customize-your-creator-studio-clips#schedule-clips-for-social-media).
## Facebook
Kajabi can share your video to Facebook Pages you manage and Facebook Groups you are a member of.
## Instagram
Kajabi can share your video to Instagram accounts associated with your Facebook business account.
Kajabi will share videos to your Instagram Reel. You can also choose to let your Instagram Reel appear on your account's grid.
## LinkedIn
Kajabi can share your videos directly to your LinkedIn account.
## Limitations
Kajabi can only connect to one Facebook username/password per Kajabi account for Facebook pages, Facebook groups, and Instagram business accounts.
To share a video to LinkedIn, it must be longer than 3 seconds, shorter than 30 minutes, and the file size must be smaller than 200 MB.
# Troubleshoot Creator Studio clips
Source: https://help.kajabi.com/articles/marketing/creator-studio/troubleshooting-your-creator-studio-clips
Resolve error messages and issues with Creator Studio.
The Creator Studio feature will be sunset on November 9, 2026. Until then, only Heroes with the Creator Studio add-on are able to use this feature.
## Creator Studio failed to load
This error can occur if there is a system issue or if there is an intermittent internet connection issue.
To resolve:
1. Reload the page
2. If the error persists, open a support ticket so the team can help resolve this issue for you
## Project failed to transcribe
This error can occur when Kajabi is unable to transcribe your Course video or make key moment suggestions.
This typically happens when an unfamiliar file format is encountered or if a speech track on the video cannot be detected.
Supported file formats:
MP4, MOV, AVI, and WebM
If you encounter this error, you can retry creating another project with the same Course video.
However, if the error persists, open a support ticket so the team can investigate the video and see if the underlying error can be resolved.
## Video clip failed to generate
This error can occur when there is an issue rendering your video clip. This can happen even if other clips from the project are successful due to an errant frame.
If you encounter this error, you can retry creating another clip with the same highlights.
However, if the error persists, open a support ticket so the team can investigate the video and see if the underlying error can be resolved.
# Events overview
Source: https://help.kajabi.com/articles/marketing/events/event-overview
Learn how to use Events to collect registrations, send date-based emails, and add countdown timers to pages and broadcasts.
With an **Event**, you can [add a countdown block](../../website/pages/how-to-add-a-countdown-block-to-your-page) to Pages and Email Broadcasts, [collect registrations](../../marketing/events/how-to-register-people-to-your-event) for virtual or in-person events, and send email notifications tied to a specific date. Members may add an Event to their preferred calendar using a link that is automatically included in the confirmation email.
Unlike [Email Sequences](../../marketing/email-campaigns/create-an-email-sequence), Event emails are scheduled around a date rather than a contact's behavior, making them the right tool for time-sensitive announcements. Performance tracking works the same way as other email types — open rates, click reports, and more are available from the Events page.
See [Create an Event](../../marketing/events/how-to-create-an-event) to get started.
## Key benefits
* **Automated email sequences:** Tied to a specific date and time, rather than a contact's opt-in date.
* **Countdown timers:** Add to Website Pages, Landing Pages, and Email Broadcasts to build anticipation.
* **Flexible scheduling:** Schedule a one-time or recurring Events up to one year in advance.
* **Self-registration:** Use Forms and Automations so contacts can sign up on their own.
* **Detailed analytics:** View metrics and click reports for all Event emails from the Events page.
**Note:** For repeat Events, registrants receive emails starting from the time they register, but only for that registration cycle. They won't automatically receive emails for future cycles unless they're removed from the event and re-registered.
## Register Contacts
Pair Events with [**Automations**](../../marketing/automations/automations-overview) to register contacts automatically based on actions they take, including:
* [Completing a Form](../../marketing/forms/create-and-build-your-form)
* Purchasing an Offer
* Completing an Assessment
* Adding a Tag
Set up an Automation with your chosen trigger, and Kajabi handles registration automatically when a Contact meets the condition.
**Note:** Automation availability depends on your plan. Growth and Pro plan members can create Automations from the dedicated **Automations** tab. Basic plan members can access Automations directly within Products, Offers, Funnels, Email Campaigns, Events, and Forms — just open the relevant section and enter its editor.
Learn more about the [differences between Basic and Advanced Automations](../../marketing/automations/basic-vs-advanced-automations) in Kajabi.
## Add to Calendar
**Add to Calendar** lets members quickly save scheduled Events to their preferred calendar. These calendar links are automatically included in confirmation emails and appear on Event pages, making it easier for members to attend and stay organized.
Use Add to Calendar for any scheduled Event with a defined date and duration.
### Supported calendar providers
Multiple calendar providers are supported, each with slightly different behavior:
* **Apple Calendar**: Downloads an ICS file and supports full recurring Event series
* **Google Calendar**: Opens a direct link and supports full recurring Event series
* **Outlook (desktop)**: Downloads an ICS file and supports single Events only
* **Outlook.com**: Opens a direct link and supports single Events only
* **Office 365**: Opens a direct link and supports single Events only
* **Yahoo Calendar**: Opens a direct link and supports single Events only
### Calendar links
Members can access calendar links in the following places:
* **Event confirmation emails** — Add to the email body using the **Add to email** button
* **Member-facing Event pages** — Displayed on the **Event details** tab
### Manage calendar links on the Event page
The Events page includes an **Add to Calendar** panel with tools to customize and share calendar links:
* **Text style**: Display provider names as text links (e.g., Google, Apple, Outlook)
* **Icon style**: Display provider logos as clickable icons
* **Copy widget**: Copy formatted calendar links for use in emails or landing pages
* **Copy code**: Copy raw HTML for custom templates or advanced use
* **Add to email**: Insert the calendar widget directly into the email editor
### Calendar link behavior
Each calendar link includes a secure, time-limited token tied to a specific Event.
When a member clicks a link:
* **Google, Outlook.com, Office 365, Yahoo:** Opens the provider's event creation page with pre-filled details such as title, date, time, duration, and description
* **Apple and Outlook (desktop)**: Downloads an ICS file that the member opens to add the Event to their calendar
Calendar links expire one year after they are generated. To get a new link, return to the Event page and copy a fresh calendar link.
**Note:** When creating an Event, make sure it is fully configured so calendar links will appear. Set a **date and time** for the Event, and add a **duration (in minutes)**. Without both of these, calendar links will not display.
**Note:** Event duration is currently limited to a maximum of 4 hours (240 minutes). If your event runs longer than 4 hours, enter 240 as the duration and communicate the full event length to your registrants directly in your event description or confirmation email.
## Troubleshooting
#### **Calendar links not appearing in email**
* **Cause:** Event has no duration set.
* **Solution:** Add a **duration (in minutes)** in the Event settings.
#### Calendar links not appearing
* **Cause:** Event is not scheduled.
* **Solution:** Set a date and time for the Event.
#### "Link expired" error
* **Cause:** Calendar link token is older than one year.
* **Solution:** Request a new link from the Event page.
#### Recurring event shows only one session
* **Cause:** Provider limitation.
* **Solution:** Apple Calendar and Google Calendar support full series. Other providers add only a single event by design.
## FAQs
### Do calendar links support recurring events?
Yes, but only Apple Calendar and Google Calendar support adding the full event series. Other providers add a single occurrence.
### Why are calendar links missing from my Event?
Calendar links only appear when the Event has both a scheduled date/time and a duration set.
### How long do calendar links stay active?
Calendar links expire one year after they are generated.
### Can calendar links be added to custom emails or pages?
Yes. Use the **Copy widget** or **Copy code** options on the Events page to add calendar links to custom emails or landing pages.
### Can I schedule an Event longer than 4 hours?
The maximum duration you can set for an Event is 4 hours (240 minutes). Manual entry of minutes beyond this limit is not currently supported. If your event runs longer than 4 hours, set the duration to 240 minutes and include the full event length in your event description or registrant confirmation email. To request this as a feature, submit feedback at [feedback.kajabi.com](https://feedback.kajabi.com).
# Create an Event
Source: https://help.kajabi.com/articles/marketing/events/how-to-create-an-event
Create Email Sequences built around an Event for registration, reminder, and follow-up emails.
**Events** let you build automated email sequences around a specific date, such as a product launch, webinar, or flash sale. Set up registration, reminder, and follow-up emails that send based on the Event date and time.
Learn more about [Events in Kajabi](https://help.kajabi.com/../../marketing/events/event-overview).
## Create an Event
1. From the Dashboard, open the **Marketing** tab.
2. Click **Events.**
3. Click **Get started** or **+New event**.
4. Add a **Title**.
5. Then, add a **Location,** either a meeting link or physical address.
6. Select the **Event Date** and **Time**. Events can be scheduled up to one year in advance.
7. Select the **Time zone.**
8. Toggle whether the event is one-time or recurring under **Repeat this event?**.
9. Click **Save** to begin customizing the Event.
## Duplicate an Event
After an **Event** has occurred, it cannot be customized for a future date. Instead, **duplicate** a past Event and edit the Title, Date, and Time to match the upcoming event.
Note: Repeat Events cannot be duplicated.
1. From the Dashboard, open the **Marketing** tab.
2. Click **Events.**
3. Locate the Event to duplicate.
4. Select the **ellipsis menu** \[...], then click **Duplicate**.
5. Edit the **Title**, change the date and time under **When does this event occur?**, and edit the **Time zone** if needed for the duplicated Event.
6. Click **Duplicate Event** to create the Event.
## Add Event Actions
After adding an Event, you may setup actions, including registration emails, reminder emails, and follow-up emails linked to the start date and time of an Event.
**Note:** If you set up a repeating Event, registrants receive the Event Emails from the time of their registration for the first time they register. Registrants will not continue to receive Event Emails for every repeating cycle unless they are de-registered and registered again.
### Add Event emails
1. Select an existing Event or [create a new one](#create-an-event).
2. Under **Event Actions**, click +**Add Email.**
3. Choose when to send the email in relation to the Event in the **When** dropdown menu:
* At the time of registration
* At time of event
* Before the event
* After the event
4. Add a **Subject** and copy in the **Body** of the email. Use the rich text format editor to add styling, links, images or videos, or click **Personalize** to pull in recipient data as part of the email text.
5. Optionally, under **Add to Calendar**, click **Copy widget** and add **Add event to calendar** links for recipients to use. Learn more about [Add to Calendar](/articles/marketing/events/how-to-create-an-event#add-to-calendar-links-for-events) options.
6. See what the email will look like for recipients by clicking **Preview In Browser** or **Send Test Email**.
7. Click **Save** to apply your changes.
**Note:** Event Emails are sent to Event registrants based on the specified date and time. If registrations occur after a scheduled email has been delivered, those registrants only receive the emails scheduled after the time of their registration. For example, if an email is set to send 15 minutes prior to the Event, registrations that occur after that 15-minute mark will not receive the email.
## Unsubscribe from Event emails
Event email recipients (Registrants) have the option to unsubscribe from Event emails with Kajabi's auto-generated **Unsubscribe** link at the bottom of each email:
## Add to Calendar Event links
**Add to Calendar** Event links lets members quickly save scheduled Events to their preferred calendar. These links are automatically included in confirmation emails and appear on Event pages, making it easier for members to attend and stay organized.
Use this for any scheduled Event with a defined date and duration. Below we explain where calendar links appear, how they work, and how to manage them in the Event editor.
### Supported calendar providers
Kajabi supports multiple calendar providers, each with slightly different behavior:
* **Apple Calendar** — Downloads an ICS file and supports full recurring Event series
* **Google Calendar** — Opens a direct link and supports full recurring Event series
* **Outlook (desktop)** — Downloads an ICS file and supports single Events only
* **Outlook.com** — Opens a direct link and supports single Events only
* **Office 365** — Opens a direct link and supports single Events only
* **Yahoo Calendar** — Opens a direct link and supports single Events only
### Where calendar links appear
Members can access calendar links in the following places:
* **Event confirmation emails** — Add to the email body using the **Add to email** button
* **Member-facing Event pages** — Displayed on the Event detail view
### Manage calendar links
Tools to customize and share calendar links appear under **Add to Calendar** on the **Add Event** page:
* **Text style** — Display provider names as text links (e.g., Google, Apple, Outlook)
* **Icon style** — Display provider logos as clickable icons
* **Copy widget** — Copy formatted calendar links for use in emails or Landing Pages
* **Copy code** — Copy raw HTML for custom templates or advanced use
* **Add to email** — Insert the calendar widget directly into the Event email editor
### How calendar links work
Each calendar link includes a secure, time-limited token tied to a specific Event.
When a member clicks a link:
* **Google, Outlook.com, Office 365, Yahoo** — Opens the provider’s Event creation page with pre-filled details such as title, date, time, duration, and description
* **Apple and Outlook (desktop)** — Downloads an ICS file that the member opens to add the Event to their calendar
**Important:** Calendar links expire one year after they are generated.
### Before you begin
Make sure the Event is fully configured so calendar links can appear:
* Set a **date and time** for the Event
* Add a **duration (in minutes)**
Without both of these, calendar links will not display.
### Calendar link Troubleshooting
#### Calendar links not appearing in email
* **Cause:** Event has no duration set
* **Solution:** Add a duration (in minutes) in the event settings
#### Calendar links not appearing
* **Cause:** Event is not scheduled
* **Solution:** Set a date and time for the Event
#### "Link expired" error
* **Cause:** Calendar link token is older than one year
* **Solution:** Request a new link from the event page
#### Recurring event shows only one session
* **Cause:** Provider limitation
* **Solution:** Apple Calendar and Google Calendar support full series. Other providers add only a single event by design.
## Calendar link FAQs
### Do calendar links support recurring Events?
Yes, but only Apple Calendar and Google Calendar support adding the full Event series. Other providers add a single occurrence.
### Why are calendar links missing from my Event?
Calendar links only appear when the Event has both a scheduled date/time and a duration set.
### How long do calendar links stay active?
Calendar links expire one year after they are generated.
### Can calendar links be added to custom emails or pages?
Yes. Use the **Copy widget** or **Copy code** options on the Event page to add calendar links to custom emails or Landing Pages.
# Create an Offer for an Event
Source: https://help.kajabi.com/articles/marketing/events/how-to-create-an-offer-for-your-event
Create an Offer to sell seats to an Event, whether in-person or online.
Selling tickets to an **Event** through an Offer in Kajabi simplifies payments by processing everything through one platform. Connect an Event, a Ghost Offer, and an Automation to sell access to any in-person or virtual event.
## Create an Event
First, create an Event in Kajabi to attach the Offer to. Regardless of the type of Event, whether in-person or virtual, creating an Event sets up the date and time.
Learn to [create an Event in Kajabi](/articles/marketing/events/how-to-create-an-event) for more details.
## Create an Offer
After creating the Event, build a Ghost Offer. A Ghost Offer is an Offer without a Product attached, which allows you to sell access to the Event without needing to create a Product in Kajabi.
Learn more about creating [Ghost Offers](/articles/sales/offers/how-to-create-a-ghost-offer).
### Create a Ghost Offer for the Event
1. From the Dashboard, click **Sales.**
2. Click **Pricing.**
3. Click **+ New Offer.**
4. Enter the Offer **Title** and **Payment** type but leave the product selection blank.
5. Complete any remaining Offer settings such as price, checkout page, and thank you page.
6. Click **Save** to create the Offer.
## Create an Automation
Next, leverage the power of [Automations](/articles/marketing/automations/automations-overview). With Automations, registrants can purchase the Ghost Offer and register to the Event (and any emails set up in the Event):
1. From the Dashboard, click **Sales**
2. Click **Pricing** and select the Ghost Offer you just created.
3. Click on the **Purchase flow** tab, scroll down to **Automations.**
4. Click + **New automation.**
5. Make sure the **When** trigger is set to "Offer is purchased." Select your offer and **Save trigger.**
6. Click on the (+) button to add **Action.**
7. Select **Register to an event** in the **Then** action dropdown.
8. Select the Event and click **Save Action.**
**Note:** Once set up, customers who purchase the Ghost Offer will be automatically registered to the Event. You can confirm registrations by opening the Event and checking the **Registrations** list.
# Create time slots for an Event
Source: https://help.kajabi.com/articles/marketing/events/how-to-create-time-slots-for-an-event
Create time slots for events, webinars, and services using Kajabi Events, Forms, and Automations.
**Note:**
Creating time slots with a Form requires Advanced Automations only available with the Growth and Pro Plans. Check out [kajabi.com/pricing](https://kajabi.com/pricing) for more details.
**Time slots** let you offer multiple scheduling options for an Event. By combining Events, Forms, and Automations, contacts can select the time that works best for them and automatically register for the corresponding Event.
## Create Events
Offer multiple time slots to contacts by creating Events for each time slot.
The number of time slots should correspond with the number of Events. The corresponding Events will be the time slots you offer with any surrounding emails you may wish to send for contacts registering to the Event.
### Create an Event
1. Open the **Marketing** tab from the Dashboard
2. Click **Events**
3. Navigate to the top-right corner and click **+ New Event**
4. Title the Event to easily identify it as a time slot
5. Specify the time slot to offer
6. Select the time zone
7. Click **Save**
Repeat for each time slot. After creating Events for each time slot, you should have multiple Events created before moving on.
Example Events for time slots:
[Learn more about creating Events in Kajabi.](../../marketing/events/how-to-create-an-event)
## Add a Form field
After you have created Events for each time slot, create a Form for contacts to select their preferred time slot.
In the Form, create a Radio Button Field to list every time slot (Event) available. With Radio Buttons, contacts can select an open time slot to register to.
### Add Radio Buttons to a Form
1. Open the **Marketing** tab from the Dashboard
2. Select **Forms**
3. Create a Form or edit an existing one
4. Click **+ Add Form Field**
5. Click **Create A New Field**
6. Enter the Title of the Event
7. Select **Radio Buttons** in the **Type** field dropdown
8. In the **Choices** field, enter each time slot corresponding with the Events (e.g., 9:30AM, 10:00AM)
9. Select **Make this field required** to ensure that contacts select a time slot
10. Click **Save** to keep the changes
[Learn more about creating Form Fields.](../../marketing/forms/how-to-add-and-edit-fields-on-a-form)
## Create Automations
Now that you have set up the essentials for time slots, connect the Form to each time slot with Automations. Create Automations for each time slot and Radio Button created in the previous steps.
### Create an Automation
1. Click **+ Add Automation**
2. The **When** field will be pre-filled
3. In the **Then** field, select **Register to an event** and select a time slot
4. Click **Add Condition**
5. Open the dropdown menu and scroll down to **Custom Field Filters**
6. Select the name of the Radio Button Field
7. Enter the time slot exactly as entered in the Radio Button Choice
8. Click **Apply**
9. Click **Save** to keep the changes
**Tip:**
Copy and paste the Radio Button choice into the Condition Field of the Automation to ensure that the Radio Button and Automation are set up correctly.
Repeat for every Radio Button Choice (available time slot) to register contacts to the Event based on their desired time slot.
[Learn more about Automations.](../../marketing/automations/automations-overview)
# Register people to an Event
Source: https://help.kajabi.com/articles/marketing/events/how-to-register-people-to-your-event
Set up an Event for visitors to self-register through your site with Forms and Automations.
**Event registration** allows contacts to sign up for an Event through a Form on your site. By combining Events, Forms, and Automations, you can automate the entire registration workflow, from sign-up to confirmation emails.
## Create an Event
If you haven't already, create an [Event](../../marketing/events/event-overview) to allow for self-registrations.
Learn to [create an Event](../../marketing/events/how-to-create-an-event) in Kajabi.
## Set up Event actions
Event Actions set up registration emails, reminder emails, and follow-up emails linked to the start time of an Event.
Learn to set up [Event Emails](../../marketing/events/how-to-create-an-event) for details.
## Create a Form for Event registration
Allow attendees to self-register to an Event with the versatility of Forms and Automations.
**Note:** Need to manually register a contact to an Event? Learn [how to perform bulk actions in the Contacts tab](../../contacts/manage-your-contacts/perform-bulk-actions-in-the-contacts-tab) to manually register contacts.
### Create the Form
Learn to [create a Form in Kajabi](../../marketing/forms/create-and-build-your-form) for details.
**Note:** If the Form is set to Double Opt-In, Form submitters will not be registered to the Event until they have confirmed their marketing email subscription. [Learn more about Double Opt-In](../../marketing/forms/how-to-set-up-a-form-with-double-opt-in).
### Add an Automation
1. In the Form Editor, click **+ Add Automation**
2. Open the **Then** action dropdown
3. Select **Register an event**
4. Select the Event for this Form to register to
**Tip:** Try different Automations to register attendees, including after an [Offer is purchased](../../marketing/automations/automations-overview) or a [Product Lesson is completed](../../marketing/automations/automations-in-course-lessons).
## Share the Form
Add the Form to landing pages to allow contacts to self-register for the Event.
Learn to [add and customize Forms on Pages](../../website/pages/how-to-add-a-form-to-your-page#h_945e7c2f-3dac-40cc-8518-31f996ec9df7) for more details.
**Tip:** Limit the number of registrations by [sending a notification to the team when the Form is submitted](../../marketing/forms/how-to-use-the-after-submission-settings-in-forms). Once the Event registration limit has been reached, remove the Form from the landing page(s).
## **Add to Calendar links for events**
Add calendar links so members can save Events to their personal calendars.
The **Add to Calendar** feature lets members quickly save scheduled Events to their preferred calendar. These links are automatically included in confirmation emails and appear on event pages, making it easier for members to attend and stay organized.
Use this feature for any scheduled Event with a defined date and duration. This article explains where calendar links appear, how they work, and how to manage them in the event editor.
### **Supported calendar providers**
Kajabi supports multiple calendar providers, each with slightly different behavior:
* **Apple Calendar** — Downloads an ICS file and supports full recurring event series
* **Google Calendar** — Opens a direct link and supports full recurring event series
* **Outlook (desktop)** — Downloads an ICS file and supports single events only
* **Outlook.com** — Opens a direct link and supports single events only
* **Office 365** — Opens a direct link and supports single events only
* **Yahoo Calendar** — Opens a direct link and supports single events only
### **Where calendar links appear**
Members can access calendar links in the following places:
* **Event confirmation emails** — Add to the email body using the Add to Email button
* **Member-facing event pages** — Displayed on the event detail view
### **Manage calendar links in the event admin**
The event admin includes an **Add to Calendar** panel with tools to customize and share calendar links:
* **Text style** — Display provider names as text links (e.g., Google, Apple, Outlook)
* **Icon style** — Display provider logos as clickable icons
* **Copy widget** — Copy formatted calendar links for use in emails or landing pages
* **Copy code** — Copy raw HTML for custom templates or advanced use
* **Add to email** — Insert the calendar widget directly into the email editor
### **How calendar links work**
Each calendar link includes a secure, time-limited token tied to a specific Event.
When a member clicks a link:
* **Google, Outlook.com, Office 365, Yahoo** — Opens the provider’s event creation page with pre-filled details such as title, date, time, duration, and description
* **Apple and Outlook (desktop)** — Downloads an ICS file that the member opens to add the Event to their calendar
**Important:** Calendar links expire one year after they are generated.
### **Before you begin**
Make sure the Event is fully configured so calendar links can appear:
* Set a **date and time** for the Event
* Add a **duration (in minutes)**
Without both of these, calendar links will not display.
### **Troubleshooting**
#### **Calendar links not appearing in email**
* **Cause:** Event has no duration set
* **Solution:** Add a duration (in minutes) in the event settings
#### **Calendar links not appearing**
* **Cause:** Event is not scheduled
* **Solution:** Set a date and time for the Event
#### **"Link expired" error**
* **Cause:** Calendar link token is older than one year
* **Solution:** Request a new link from the event page
#### **Recurring event shows only one session**
* **Cause:** Provider limitation
* **Solution:** Apple Calendar and Google Calendar support full series. Other providers add only a single event by design.
## **FAQs**
### **Do calendar links support recurring events?**
Yes, but only Apple Calendar and Google Calendar support adding the full event series. Other providers add a single occurrence.
### **Why are calendar links missing from my Event?**
Calendar links only appear when the Event has both a scheduled date/time and a duration set.
### **How long do calendar links stay active?**
Calendar links expire one year after they are generated.
### **Can calendar links be added to custom emails or pages?**
Yes. Use the **Copy widget** or **Copy code** options in the event admin to add calendar links to custom emails or landing pages.
# Sell access to a webinar
Source: https://help.kajabi.com/articles/marketing/events/how-to-sell-access-to-a-webinar
Sell digital tickets to a webinar with Kajabi Events, Pages, and Offers.
**Webinars** can be a powerful tool for reaching your audience in real-time. With Kajabi, you can connect an Event and Offers to sell access to a webinar. This page walks you through creating an Event to correspond with the date and time of the webinar, building a confirmation page with instructions for customers, and setting up an Offer to collect payment.
### Where to hold a webinar
A webinar can be a pre-recorded video added to a [Landing Page](/articles/website/pages/pages-explained) connected to an Offer, or you can set up video streaming with a third-party service (e.g., Zoom) and add the webinar link to [Event Emails](/articles/marketing/events/how-to-create-an-event#add-emails-to-an-event).
## Create an Event
First, set up an Event. The Event reflects the date and time of the webinar.
1. Open the **Marketing** tab from the Dashboard
2. Click **Events**
3. Click **+ New Event**
4. Title the Event
5. Select the Event date and time (Events can be scheduled up to one year in advance)
6. Select the time zone
7. Configure the Event as a one-time occurrence or recurring
8. Click **Save** to begin customizing the Event
After creating the Event, set up Event Emails to include the link to the webinar:
[Learn to add Event Emails.](/articles/marketing/events/how-to-create-an-event#add-emails-to-an-event)
## Create a confirmation page
After setting up the Event, create a confirmation page. The confirmation page communicates to customers that the instructions for joining the webinar can be found in their email inbox.
[Learn to create a page on Kajabi.](/articles/website/pages/pages-explained)
For example:
## Create an Offer
Now that the Event and confirmation page are ready, build an Offer to connect the pieces. Create a Ghost Offer (an Offer without a Product) and set up Automations to register purchasers to the Event and send them to the confirmation page.
This ensures that customers purchasing the Offer receive the emails associated with the Event and instructions on how to join the webinar.
### Create a Ghost Offer
1. Open the **Sales** tab from the Dashboard
2. Select **Pricing**
3. Click **+ New Offer**
4. Enter a Title for the Ghost Offer
5. Leave the **Select your product** field empty (the Offer should *not* be connected to a Product)
6. Enter the Payment type and Price and click **Create** (you can edit the price further within the Offer builder)
## Connect the Event and page to the Offer
After setting up the basic information for the Offer, create Automations to connect the Event and confirmation page to the Offer.
### Register customers to the Event
1. Open the **Sales** tab from the Dashboard
2. Select the Ghost Offer
3. Navigate to the **Automations** card
4. Click **+ Add Automation**
5. In the **Then** field, select **Register to an event**
6. In the field below **Register to an event**, select the Event
7. Click **Save** to keep and apply the changes
### Send customers to the confirmation page after purchase
1. Open the **Sales** tab from the Dashboard
2. Select the Ghost Offer
3. Navigate to the **Post-purchase** card
4. In the **Post-purchase** dropdown menu, select **Existing Landing Page**
5. In the **Landing page** dropdown menu, select the confirmation page
6. Navigate to the top-right corner and click **Save**
## Test the setup
Performing a test purchase is a great way to confirm everything works as intended.
[Learn how to perform a test purchase.](/articles/sales/offers/creating-a-test-purchase-in-kajabi)
Edit the Offer checkout page and any additional settings you want to customize. [Learn more about Offers on Kajabi.](/articles/sales/offers/offers-overview)
# Customize double opt-in confirmation email and landing page
Source: https://help.kajabi.com/articles/marketing/forms/can-i-customize-my-double-opt-in-confirmation-email-and-landing-page
Customize the confirmation email and confirmation page for a double opt-in Form.
By default, your contacts receive the **Double Opt-In** confirmation email template sent by your site after submitting your Form. After confirming their desire to subscribe to your marketing emails, the contact is redirected to the default confirmation page.
You can design your confirmation email and confirmation page to best fit your brand and business with the Double Opt-In Additional Options settings:
To customize your Double Opt-In Additional Options settings, select **Double Opt-In (Recommended)** and enable your desired settings by clicking the toggle and changing it from grey to black.
[Learn to set up a Form with double opt-in](./how-to-set-up-a-form-with-double-opt-in).
## Default confirmation settings
If you disable the Additional Options for your Double Opt-In settings, your site sends Form submitters the default confirmation email:
Learn to [customize the default email templates sent by your site](../../account-settings/notifications/edit-automated-email-notifications).
After your contacts confirm their intent to subscribe to your marketing emails they are redirected to the default confirmation page:
With the Double Opt-In Additional Options you can design your contacts' experience with your site when a Form is submitted to fit your brand and business. When a Form is submitted, your contact receives your Double Opt-In email (the default email or your custom email) and can be redirected to a custom landing page or the default confirmation page.
## Customize Double Opt-In settings
1. Open the **Marketing** tab from your Dashboard.
2. Select **Forms**.
3. Click the Form you wish to edit or create a Form.
4. Select **Double Opt-In (Recommended)**.
5. Enable your desired **Additional Options** settings:
* Select **Send custom confirmation email to new contacts** to craft a custom email to encourage your Form submitters to confirm their intent to subscribe to your marketing emails. If the setting is left unselected, your Form submitters receive the default Double Opt-In email template.
* Select **Redirect contacts to custom confirmation page** to design a custom confirmation page that displays after they have confirmed their desire to subscribe to your marketing emails. If left unselected, your Form submitters receive the default confirmation page.
6. Click **Save** to keep and apply your changes:
# Create and build a Form
Source: https://help.kajabi.com/articles/marketing/forms/create-and-build-your-form
Create a Form to subscribe contacts, grant Offers, and register contacts for Events.
A **Form** in Kajabi is a versatile tool that can be used for many actions such as: [subscribing someone to an email sequence](../../marketing/email-campaigns/create-an-email-sequence), [granting them an offer](./how-to-grant-access-to-an-offer-after-a-form-submission), [registering them to an event](../../marketing/events/how-to-register-people-to-your-event), and more.
[Learn how to customize the look and feel of your Form in a Page](../../website/pages/how-to-add-a-form-to-your-page#h_945e7c2f-3dac-40cc-8518-31f996ec9df7) built with Kajabi, or [learn how to design your Kajabi Form for an external location](./embed-a-kajabi-form-on-an-external-webpage).
## Create and build a Form
1. From the Dashboard, open the **Marketing** tab.
2. Click **Forms**.
3. Select **+ New form**.
4. Give the Form an internal **Title**.
5. Click **Save**.
6. Now, build out the form. Under **Opt-in Settings**, select either Double Opt-In (recommended) or Single Opt-in.
* **Double Opt-In** requires contacts to confirm their subscription via email after completing the form. This helps improve deliverability and lead quality. See [Set up a Form with double opt-in](./how-to-set-up-a-form-with-double-opt-in).
* **Single Opt-In** means reCAPTCHA is disabled for the form. To help protect against bots, enable reCAPTCHA under **Settings** > **Forms**.
7. Under **Additional Options**, Toggle wether you want to **Send a custom confirmation email to new contacts** coming through the Form. Otherwise, new contacts will be sent the default Double Opt-in Email Template.
8. If sending a custom email, edit the **Subject** and **Body**. Use [**liquid objects**](/articles/marketing/email-campaigns/how-to-create-and-use-liquid-objects-in-email-marketing) to personalize the email.
9. Edit the **Button text**, and choose a **Background color** and **Text color** for the email.
10. Choose whether to **Redirect contacts to a custom confirmation page**. \
Otherwise, new contacts will be redirected to the Default Confirmation Page.
11. Click **Preview in Browser** to check how the custom email will appear.
12. If desired, add one or more additional **Form Fields** to collect data by choosing from the provided list, such as **City** or **Business Number**.
13. Or, click **Create a New Field** to add your own field. Choose a field **Type** and enter a **Title**, then click the checkbox if you want to **make this field required** on your form.
14. You may edit the values for any field by clicking the **pencil icon**.
15. Rearrange the order fields appear on your form by clicking and dragging the **drag handle** next to fields.
16. If needed, add a Form submission **Automation**.\
\
Set up **Automations** in opt-in Forms to automatically generate Offers, Email Sequences, Events, Tags, Transactional Emails, and Coupons. See [Use Automations in Forms](./how-to-use-automations-in-forms)
17. In the **After Submission** section, choose what happens once the Form is submitted. See [Use After Submission settings in Forms](./how-to-use-the-after-submission-settings-in-forms) for more details.
* **Send a notification to your team -** Add team email addresses
* **Send the contact to a third party email provider -** Connect an integration
* **Send the contact to a custom thank you page** - Choose a previously created page
18. Click **Save** to apply your changes.
## Duplicate a Form
1. From the Dashboard, open the **Marketing** tab.
2. Click **Forms**.
3. Next to the **Title** of a Form, click the **more options icon** (…).
4. Select **Duplicate**.
5. Choose whether to **include automations**, and click **Duplicate**.
6. The duplicate form will appear at the top of the **Forms** list. Click the **more options icon (...)**, and select Edit to modify the new Form.
## Delete a Form
1. From the **Forms** page, click the **Title** of the Form you wish to delete.
2. Click the **more options icon (…)** and select **Delete**:
## Design Forms for Pages and external sites
[Design a Form within a Website Page or Landing Page built with Kajabi](../../website/pages/how-to-add-a-form-to-your-page), or [design a Form for an external website](./embed-a-kajabi-form-on-an-external-webpage#embed-settings).
Learn how to [customize and design text, colors, and messaging](../../website/pages/how-to-add-a-form-to-your-page#h_945e7c2f-3dac-40cc-8518-31f996ec9df7) for any Form.
After adding a Form to a Page, [copy the page link](../../website/pages/how-to-copy-your-page-link) to share it on social platforms, in email campaigns, in Products, and more.
### Embed a Form in an external webpage
1. From the Dashboard, open the **Marketing** tab.
2. Select **Forms**.
3. Select the **Form** you would like to embed.
4. Open the **Embed tab**.
5. Then, click the copy icon next to **Embed your form with one line of javascript:**
6. Paste the embed code into the source code of the external web page.
### Embed Settings and Style
You can further customize the design and copy of an embedded Form.
1. From the **Forms** page, open the **Embed** tab.
2. Under **Settings**, edit the Form **Title**, **Subtitle**, and **Button text**.
3. Choose a **Button color**, **Background color**, and **Font color**.
4. Under **Embed Style**, determine how the embedded form will display on the webpage:
* An **Inline** embed displays within the webpage.
* A **Pop-up** displays the form in a separate pop-up window.
5. Click **Save** to apply your changes before copying the Embed Code.
# Embed a Kajabi Form on an external webpage
Source: https://help.kajabi.com/articles/marketing/forms/embed-a-kajabi-form-on-an-external-webpage
Embed Kajabi Forms onto external webpages to build your list and gain subscribers.
Spread your reach, build your list, and gain subscribers by embedding your **Forms** to virtually any page on the web.
**Note:**
Although the embed code works well on most external webpages, the embedded Form may not function properly on all external pages. External page code may break the embed or disallow the Form from being embedded. This is dependent on the page where you paste the embed and not an issue with the Kajabi embed code.
## Find the embed code
1. Open the **Marketing** tab.
2. Select **Forms**.
3. Edit an existing Form or [create a new one](./create-and-build-your-form).
4. Select the **Embed** tab from the top menu of the Form Editor.
5. Click the copy icon next to **Embed your form with one line of javascript:**
## Paste the embed code
Paste the embed code in the source code of the external page where you want the Kajabi Form to appear:
1. Paste the embed code into the source code of your external web page.
2. If you are using the inline style, the location of this embed code determines where the **Form** is located on the page.
3. **Save** and refresh the page.
## Embed settings
Customize the design and copy for your embedded Form. You can replace the default **Title** (i.e., Join the Newsletter) and **Subtitle** for your Form when embedding it on an external page:
1. Edit the Form **Title**, **Subtitle**, and **Button Text**.
2. Choose the color for the button, background, and text.
3. **Save** your changes before copying the embed code.
## Embed style
After customizing the Form **Settings**, you can select the Form **Style**.
Style determines how the embedded Form displays on the web page:
* **Inline embeds** display within the web page
* **Pop-up Forms** display as a pop-up on the page
## Pop-up Form settings
Customize additional settings for a pop-up style Form:
* **Loading Delay** — how many seconds before the pop-up appears
* **Frequency** — don't show the pop-up to return visitors for this number of days
# Change a Form title
Source: https://help.kajabi.com/articles/marketing/forms/how-do-i-change-my-form-title-from-join-the-newsletter
Edit the title displayed on a Form from 'Join the Newsletter' to a custom title.
Edit the message displayed on your Form by editing the [Form block](../../website/pages/how-to-add-a-form-to-your-page#h_945e7c2f-3dac-40cc-8518-31f996ec9df7) in your [page editor](../../website/pages/how-to-get-to-the-page-editor).
If you are embedding your Form onto a third-party platform, edit your message in the Form Embed Settings.
Design the look and feel of your Form by customizing your Form in your page editor:
[Learn to add and customize your Form on your page.](../../website/pages/how-to-add-a-form-to-your-page)
## Customize Form title for external embeds
Customize your messaging in the Form embed settings. Change your Form title from "Join the Newsletter" to something different by clicking into the **Title** textbox:
[Learn to customize your Form to embed on an external page.](./embed-a-kajabi-form-on-an-external-webpage#embed-settings)
# Add and edit fields on a Form
Source: https://help.kajabi.com/articles/marketing/forms/how-to-add-and-edit-fields-on-a-form
Customize Form fields to gather specific information about leads and customers.
**Form Fields** let you gather specific and unique information about your leads and customers. Customize the fields on your opt-in Forms and Event registrations to collect the data that matters most to your business.
## Add a field to a Form
1. Open the **Marketing** tab from the Dashboard.
2. Select **Forms**.
3. [Create a Form](./create-and-build-your-form) or edit an existing one.
4. Scroll down to Form Fields and click **Add Form Field**.
5. Select an existing field or click **Create A New Field**.
6. Click **Save**:
When a Form is submitted, the data collected is included in the submitter's Contacts Profile. View the submitted data in your **Contacts** tab. [Learn more](../../contacts/manage-your-contacts/how-to-manage-your-contacts-profiles)
**Note:**
Create up to 50 custom Form Fields in your site. Custom Fields are created by selecting **Create a New Field** in a Form. If you reach your maximum custom Form Fields for your site, learn to [archive or permanently delete custom Fields](./how-to-remove-custom-form-fields).
## Edit a Form field
### Form Editor options
* Click on an existing field on the Form to edit the field
* **Change the order** of the fields on your Form by clicking and holding `=` next to the field title and dragging to your desired location
* Choose to make the **Form field required** by checking or unchecking **Make this field required** in the Field Editor
### Edit field settings
**Note:**
Selecting **Make this field required** makes the field required in every Form in which the field is used. If you need the field to be required in one Form while staying optional in another, create two identical custom fields — one as a required field and the other as an optional field.
## Create a field type
* **Text** — allows Form submitters to enter a short line of custom text:
* **Phone** — allows Form submitters to enter their phone number:
* **Email** — allows Form submitters to enter another email:
* **Text Area** — allows Form submitters to enter more text than the Text type:
* **Checkbox** — allows Form submitters to check a box or leave it unchecked (typically used with yes or no type inquiries, but can also be used for a "select all that apply" question):
* **Select Box** — allows Form submitters to select a choice from a dropdown menu:
* **Radio Buttons** — allows Form submitters to check a button next to their selection:
* **Country** — allows Form submitters to select their country from a dropdown menu
To customize the look and feel of your Form, add it to a page and customize your Form Block with the Page Editor. [Learn to add and customize a Form on your page](../../website/pages/how-to-add-a-form-to-your-page).
# Autofill Forms by passing submission data to the thank you page
Source: https://help.kajabi.com/articles/marketing/forms/how-to-autofill-forms-by-passing-submission-data-to-the-thank-you-page
Use the Pass submission data to the thank you page setting to autofill a second Form.
**Pass submission data to the thank you page** is a feature for those with developer experience to display data submitted (e.g., name and email) on the thank you page by enabling this feature with custom code.
**Note:**
Without custom coding, the data sent with this feature will not be captured to display on your page.
This feature is made possible with the After Submission settings in Forms. [Learn about the Form After Submission settings.](./how-to-use-the-after-submission-settings-in-forms)
You can use this feature to autofill a second Form after the initial Form is submitted, creating a seamless user experience.
## Set up autofill Forms with custom coding
Setting up a Form to lead to another Form lets you collect a simple submission before asking more detailed questions, or have your users complete a Form before getting access to your application.
This setup redirects users to an auto-filled Form after submitting the first Form. The second Form autofills their name and email by pulling the data from the first Form submission:
## Before you begin
* Create your [Forms](./create-and-build-your-form)
* Create your [Pages](../../website/pages/how-to-add-pages-to-your-website)
For this setup, you need two Forms and two Pages (one Form per Page). If you have already prepared your landing pages with your Forms, continue to the first step.
**Tip:**
This feature works for Single Opt-in and [Double Opt-in](./how-to-set-up-a-form-with-double-opt-in) Forms, but does not work for Forms triggered by a [Two-Step Opt-in](../../website/pages/how-to-use-the-two-step-optin-popup) popup.
## Enable pass submission data
Enable pass submission data for the first Form your users will submit.
First, enable **Send the contact to a custom thank you page**. Your "custom thank you page" is the second page containing the second Form:
1. Open the **Marketing** tab from the Dashboard.
2. Click **Forms**.
3. Select the first Form your users will complete.
4. Navigate to the **After Submission** settings.
5. Enable **Send the contact to a custom thank you page**.
6. Select the second page with your second Form from the dropdown:
Then, enable **Pass submission data to the thank you page**:
## Add custom code to the page
**Important:**
Introducing custom code to your site can open you up to vulnerabilities and potential malware attacks. We recommend using vulnerability tools like [VirusTotal](https://www.virustotal.com/gui/home/url) or [Snyk](https://snyk.io/) to scan any custom code that you intend to use and apply certain [best practices](../../website/domains/code-based-customizations) to help reduce potential impact.
After enabling the After Submission settings, add custom code to your second page to enable the autofill.
This step varies depending on the editor used to build your pages. Select the editor used to create your page below to learn how to add the custom code:
* Kajabi Pages
* Premier
Copy and paste the Javascript code below to the second page containing the Form you wish to autofill:
```javascript theme={null}
```
## Kajabi Pages
With Kajabi Pages, you can add the custom code directly from your page editor.
First, copy the custom code above.
**Note:**
When copying the code, leave out the opening and closing ``) if you are using Kajabi Pages.
Then, navigate to your Kajabi account:
1. Open the **Website** tab from the Dashboard.
2. Click **Pages**.
3. Select the second page containing the Form you want autofilled.
4. Click **Settings** in the editor.
5. Open **Custom Code**.
6. Paste the Javascript code into the Javascript box.
7. Click **Save** to keep and apply your changes:
After entering and saving your custom code onto your page, the setup is complete. When a visitor completes and submits the first Form, the second Form autofills with their name and email from the information submitted in the first Form.
## Premier
If you are using Premier, you need access to the Code Editor only available with the Pro Plan. Check out [kajabi.com/pricing](https://kajabi.com/pricing) to learn more about the features available with your pricing plan.
First, copy the entire custom code above (including the opening and closing ``).
Then, navigate to your Kajabi account to access the Code Editor for your page built with Premier. [Learn to access the code editor for your page.](../../website/pages/how-to-access-the-code-editor#page-theme)
In the code editor, add the custom code to your page template:
1. Open the **Templates** folder.
2. Select the **index.liquid** file.
3. Scroll to the bottom of the file.
4. Place your cursor before the closing body tag (i.e., ``).
5. Click the `enter` key on your keyboard to create an empty line.
6. Paste your custom Javascript code into the line directly above the closing body tag (i.e., ``).
7. Click **Save** to keep and apply your changes:
After entering and saving your custom code onto your page, the setup for a Premier page is complete. When a visitor submits the first Form, the second Form autofills with their name and email from the information submitted in the first Form.
# Export information from a Form
Source: https://help.kajabi.com/articles/marketing/forms/how-to-export-information-from-a-form
Export a CSV file of contacts who have opted in to a Form.
Export contact information from a Form submission to a CSV file. This is useful for tracking opt-ins, analyzing lead data, or importing contacts into external tools.
## Export contacts from a Form
1. Open the **Marketing** tab from your Dashboard.
2. Select **Forms**.
3. Select the Form with the data you want to export.
4. Click **Submissions**.
5. Select **Export** in the top right corner:
## CSV file
The information is sent to your email inbox as a CSV file that you can download. The file shows the time the Form was submitted, name, email, which Landing Page, and the landing page's ID number.
# Fix white or invisible text on a Form
Source: https://help.kajabi.com/articles/marketing/forms/how-to-fix-white-or-invisible-text-on-your-form
Resolve white or invisible text on a Form by adjusting font color settings.
White or "invisible" text happens when a user enters information on a Form and their text is not visible. This is typically caused by the Form text color matching the background color. You can fix this by adjusting font color settings or using custom code.
## Identify white or invisible text
You can confirm the text is white or invisible by highlighting the Form text field with your cursor after typing:
## Change body font color settings
Fix the white or invisible text on your Form by changing your page's body font color.
### Change page font color settings
1. Navigate to the **Website** tab from your Dashboard.
2. Click **Pages**.
3. Select the **Website or Landing** tab to locate your page.
4. Select the title of your page to open the page editor.
5. Select the **Settings** tab from the page editor.
6. Select **Style Guide**.
7. Locate the **Fonts Colors** section.
8. Select the **Body Font Color** changer.
9. Select a color other than White.
10. Click **Save**:
**Note:**
If you are using the [Premier template](../../website/pages/customizing-your-website-with-the-legacy-template-premier), the setting in your page editor is called **Typography** and the color setting you need to change is called **Font Color**.
## Use custom code to change Form text color
**Important:**
Introducing custom code to your site can open you up to vulnerabilities and potential malware attacks. We recommend using vulnerability tools like [VirusTotal](https://www.virustotal.com/gui/home/url) or [Snyk](https://snyk.io/) to scan any custom code that you intend to use and apply certain [best practices](../../website/domains/code-based-customizations) to help reduce potential impact.
You can fix the white or invisible text on your Form by adding custom code to your Encore template pages.
1. Navigate to the **Website** tab from your Dashboard.
2. Click **Pages**.
3. Select the **Website or Landing** tab to locate your page.
4. Select the title of your page to open the page editor.
5. Select the **Settings** tab from the page editor.
6. Select **Custom Code**.
7. Locate the **CSS Code** text box.
8. Copy and paste the code snippet below in the **CSS Code** text box.
9. Click **Save**:
```css theme={null}
.form-control {
color: #000000;
}
input#form_submission_name.form-control {
color: #000000;
}
input#form_submission_email.form-control {
color: #000000;
}
```
`#000000` is the hex code for the color black. You can use a tool like [Coolors](https://coolors.co/) to generate hex codes for other colors. Replace `#000000` in the code snippet with your own hex codes.
**Note:**
If you are using the [Premier template](../../website/pages/customizing-your-website-with-the-legacy-template-premier), this option requires you to have code editor access to add the code snippet to the overrides.scss file located in your Assets directory. [Learn how to access the code editor](../../website/pages/how-to-access-the-code-editor) for more information.
# Grant access to an Offer after a Form submission
Source: https://help.kajabi.com/articles/marketing/forms/how-to-grant-access-to-an-offer-after-a-form-submission
Grant access to an Offer automatically after a user submits a Form.
Use **Automations** in your Form to automatically grant access to an Offer when someone submits the Form. This is useful for providing free access to content, courses, or other Products as a reward for opting in.
## Grant access to an Offer
1. Open the **Marketing** tab from the Dashboard.
2. Click **Forms**.
3. Select an existing Form or [create a new one](./create-and-build-your-form).
4. Navigate to the bottom of the editor and click **+ Add Automation**.
5. In the **THEN** dropdown, select **Grant an Offer**.
6. Click **Save** to keep and apply your changes:
# Redirect Form submitters to a custom thank you page
Source: https://help.kajabi.com/articles/marketing/forms/how-to-redirect-your-form-submitters-to-a-custom-thank-you-page
Connect a Form to a custom thank you page to redirect subscribers after submission.
Redirect your Form submitters to a branded thank you page after they submit a Form. Custom thank you pages let you reinforce your messaging, deliver content, or guide subscribers to their next step.
Looking to add a Form to a landing page? [Learn how to add a Form to your page](../../website/pages/how-to-add-a-form-to-your-page).
**Note:** This article covers redirecting to a Kajabi Landing Page. If you want to send form submitters to an external page outside Kajabi (such as a WordPress or third-party thank-you page), create a Kajabi Landing Page with a redirect script first, then connect it to your Form. [Learn how to set up a redirect on a Kajabi page.](https://help.kajabi.com/articles/website/pages/how-can-i-redirect-a-page)
## Create a custom thank you page
1. Open the **Website** tab from your Dashboard.
2. Click the **Landing** pages tab.
3. Navigate to the top right corner of the page and click **+ New Landing Page**.
4. Select your desired Pages Template.
5. Click **Get Started**.
6. Enter your Page Title.
7. Click **Create** to generate your custom page:
**Tip:** Check out the Thank You templates for a quick start.
After generating your custom thank you page, use the page editor to customize it.
Read [Pages overview](../../website/pages/pages-explained) to learn more about using Kajabi Pages to build your custom page.
## Connect the thank you page to the Form
After creating your custom thank you page, connect it to your Form to redirect subscribers immediately after opting in.
1. Open the **Marketing** tab from your Dashboard.
2. Select **Forms**.
3. Select an existing Form or [create a new one](./create-and-build-your-form).
4. Click the checkbox next to **Send the contact to a custom thank you page**.
5. Select your created thank you page in the dropdown below.
6. Click **Save**:
**Note:** When customizing your [page containing your Form Block](../../website/pages/how-to-add-a-form-to-your-page), there is a [Thank You Page setting](../../website/pages/how-to-add-a-form-to-your-page#customize-your-form-block) in your page editor. If left unchecked, a Form submission redirects submitters to the [standard website Thank You Page](../../website/pages/how-to-build-your-thank-you-page) or to the Thank You Page selected in your [After Submission settings of the Form editor](./how-to-use-the-after-submission-settings-in-forms). If you enable the Thank You Page setting in your page editor, your page editor settings override the standard website thank you page and the After Submission Form settings thank you page.
# Remove custom Form fields
Source: https://help.kajabi.com/articles/marketing/forms/how-to-remove-custom-form-fields
Archive or permanently delete a custom Form field to manage the field limit.
Removing a custom field can impact your contacts, Form submissions, and Offer purchases that use the field. To protect against accidental deletions, removing a field requires a few simple steps.
## Archive a custom Form field
**Tip:**
Archive your custom Form Fields if you have reached your [maximum number](./what-is-the-maximum-amount-of-fields-i-can-include-on-a-form) of custom Form Fields.
1. Open the **Settings** tab from your Dashboard.
2. Click **Form Settings**.
3. Locate the custom field you wish to remove. Only custom fields can be removed.
4. Click the **Archive** icon.
5. Confirm your wish to archive the field by clicking **Yes, archive**:
## Permanently delete a field
**Warning:**
Deleting a field removes any data captured with the field on your contacts, Form submissions, and Offer purchases. This action cannot be undone.
1. First, archive your custom Form Field.
2. After archiving the field, navigate to the **Archived** tab and click **Delete**.
3. Confirm your wish to permanently delete the field by clicking **Yes, delete**:
# Send email sequences based on Form answers
Source: https://help.kajabi.com/articles/marketing/forms/how-to-send-email-sequences-based-on-form-answers
Subscribe contacts to email sequences based on their responses submitted in a Form.
**Automations** let you send targeted email sequences to specific recipients based on their Form responses. This setup enhances the experience your contacts have with your email content by delivering personalized messaging based on their answers.
**Note:**
Sending targeted email sequences based on Form responses requires the Conditional Field only available with Advanced Automations. Learn the difference between [Basic and Advanced Automations](../../marketing/automations/basic-vs-advanced-automations) for details.
## Create email sequences
Draft and design personalized, branded email sequences to send to your Form submitters depending on their selected responses.
**Tip:**
Formulate the question and answers (or Choices as referred to in the Form builder) you wish to include in your Form before creating your Email Sequences. This helps you draft targeted email messaging based on the choices your users can select from.
For example, if you create a Form as a survey to collect user feedback (i.e., Love the course, Course was sometimes helpful, or Did not like the course) you may want to consider creating email sequences for each feedback response.
Not sure how to create an Email Sequence? [Learn how to create an Email Sequence](../../marketing/email-campaigns/create-an-email-sequence).
## Create a custom Form field
Now that you have completed the email content, set up your Form.
For the purpose of this guide, we use a survey to collect user feedback as an example:
1. Open the **Marketing** tab from the Dashboard.
2. Click **Forms**.
3. Select the Form you wish to edit or [create a new one](./create-and-build-your-form).
4. Under **Form Fields**, click **Create a New Field**.
5. Add a title (easily identifiable) and select **Radio Buttons** as the type.
6. Enter custom **Choices** for your contacts to select from (e.g., Everyday, Sometimes, Never).
7. Select **Make this field required** if you wish to require the field for your users to submit the Form.
8. Click **Save**:
## Create the Automation
After creating your custom Form field, build your Automation to subscribe your Form submitters to different Email Sequences depending on their selected choice.
1. In your Form, locate **Automations**.
2. Click **+ Add Automation**.
3. Select **Subscribe to an email sequence** in the **THEN** field.
4. Select the Email Sequence that corresponds with your first custom Form field choice.
5. Click **Condition** and select the **Title** of your custom Form field.
6. In the dropdown menu, select the **Choice** that corresponds with your desired email sequence.
7. Click **Apply**.
8. Click **Save** to keep your changes:
Repeat for each choice/answer created in your custom Form field to subscribe your Form submitters to different Email Sequences based on their selected answers:
Want to learn more about customizing your Form? Check out [Create and build a Form](./create-and-build-your-form).
## Share the Form
Now that you have set up the backend process, connect your Form to your landing pages so users can submit their responses and subscribe to your targeted email sequences.
By connecting your Form to your landing pages, you can design the appearance of your Form.
[Learn to connect your Form to your pages, Funnels, and external sites.](https://help.kajabi.com/hc/en-us/articles/360037456154)
**Tip:**
[Test your Automation by completing the Form on your page](../../marketing/email-campaigns/how-to-test-send-your-emails#h_84dfee70-b75a-4484-9e98-b3c69cd99bb6). Set your first email in your sequence to 0 for your test to receive the email the same day as your Form submission. Keep in mind, the Automation may take some time to process and trigger before your email arrives in your inbox.
# Set up a Form with double opt-in
Source: https://help.kajabi.com/articles/marketing/forms/how-to-set-up-a-form-with-double-opt-in
Enable or disable Double Opt-In on a Form to improve deliverability and lead quality.
**Double Opt-In** requires your subscribers to confirm their subscriptions via email before triggering any emails you may have set up with your Form. This setting improves both deliverability and lead quality and helps you on your [path to GDPR compliance](../../marketing/email-campaigns/how-kajabi-helps-you-with-privacy-regulations#step1datacollectionformsanddoubleoptin).
## Double opt-in
A Double Opt-In automatically sends a confirmation email to the address submitted on the Form:
This email prompts your Form submitter to confirm their intention to subscribe and receive your sales and marketing emails before triggering any emails you may have set up with your Form.
After the Form submitter has confirmed their intention to subscribe, they can begin receiving your email campaigns until unsubscribed.
[Learn to view your contact Subscription Status](../../contacts/manage-your-contacts/what-does-the-subscription-status-mean)
## Benefits of double opt-in
When a lead confirms they want to remain a contact on your list, it shows they are interested in your business and will have a much higher likelihood of becoming a customer.
Making a Double Opt-In a requirement also reduces the chances of your marketing emails being flagged as spam and can help you comply with various laws (e.g., the [GDPR](../../marketing/email-campaigns/how-kajabi-helps-you-with-privacy-regulations)).
**Note:**
By default, Forms are set up as a Double Opt-In. Learn to enable and disable Double Opt-Ins for your Forms below.
With a Double Opt-In Form, your contacts are added to your **Contacts** tab after confirming their desire to subscribe through the confirmation email.
If you choose to disable the Double Opt-In, contacts are added to your **Contacts** tab upon completion of the Form. This is considered a single opt-in, as contacts are not required to confirm their subscription.
## Enable or disable Double Opt-In
1. Open the **Marketing** tab from your Dashboard.
2. Select **Forms**.
3. Create a **Form** or edit an existing one.
4. Select **Double Opt-In (Recommended)** to enable or select **Single Opt-In** to disable.
5. Configure any additional opt-in settings if applicable.
6. Click **Save** to keep and apply your changes:
## Customize Double Opt-In confirmation
Customize your Double Opt-In confirmation email and confirmation page by configuring your Double Opt-In Additional Option settings.
1. Open the **Marketing** tab from your Dashboard.
2. Select **Forms**.
3. Click the Form you wish to edit or create a Form.
4. Select **Double Opt-In (Recommended)**.
5. Enable your desired **Additional Options** settings:
* Select **Send custom confirmation email to new contacts** to craft a custom email to encourage your Form submitters to confirm their intent to subscribe to your marketing emails. If the setting is left unselected, your Form submitters receive the default Double Opt-In email template.
* Select **Redirect contacts to custom confirmation page** to design a custom confirmation page that displays after they have confirmed their desire to subscribe to your marketing emails. If left unselected, your Form submitters receive the default confirmation page.
6. Click **Save** to keep and apply your changes:
## Default Double Opt-In email
If you choose to send the default Double Opt-In email after a contact submits a Double Opt-In Form, they receive the default Double Opt-In email template sent by your site:
**Note:**
You can [edit the default Double Opt-In email from the Email Templates section in your Settings tab](../../account-settings/notifications/edit-automated-email-notifications).
# Trigger Automations based on Form responses
Source: https://help.kajabi.com/articles/marketing/forms/how-to-trigger-automations-in-a-form-based-on-the-submitters-response
Set up Forms to trigger Automations based on the submitter's response with custom field types.
**Automations** can perform actions automatically based on a Form submitter's responses. Use conditional logic with custom field types — checkboxes, select boxes, and radio buttons — to control what happens after a Form is submitted.
For example, you can:
* Grant or revoke an Offer
* Subscribe to or unsubscribe from an Email Sequence
* Register to or deregister from an Event
* Add or remove a Tag
* Send an Email
* Send a single-use Coupon
**Note:**
Creating a Form that triggers an Automation based on the response of the submitter requires Advanced Automations available with the Growth and Pro Plans. [Learn more about the different plans](https://kajabi.com/pricing/).
The steps below use the original Automations experience, where you build the Automation in a panel at the bottom of the Editor. [Learn which Automations experience you have](/articles/marketing/automations/automations-overview#which-automations-experience-you-have)
## Trigger Automations with a checkbox
A *checkbox* allows your Form submitters to either select an option or leave it unselected. Create multiple checkboxes for your Form submitters to select one or more options:
### Create a checkbox
1. Open the **Marketing** tab from your Dashboard.
2. Select **Forms**.
3. [Create a Form](./create-and-build-your-form) or choose an existing Form to edit.
4. Under **Form Fields**, choose **Add Form Field**.
5. Click **Create a New Field**.
6. Title your custom field and select **Checkbox** as the field type.
7. Click **Save**.
8. Navigate to the upper right corner of the Form Editor and click **Save** again:
### Customize the Form Automation
After creating your checkbox, create an Automation in your Form to process the Form submitter's checkbox selection:
1. Inside the Form Editor, click **Add Automation**.
2. Select the action you want to occur after the Form is submitted in the **Then** dropdown menu.
3. Click the **Add Condition** button.
4. Select your custom checkbox field filter in the **Select filter** dropdown menu (custom field filters can be found at the end of the menu).
5. Enter `1` in the final field to trigger the Automation if the box is checked, or `0` to trigger the Automation if the box is not checked.
6. Click **Apply**.
7. Click **Save**:
## Trigger Automations with a select box
A *select box* lets your Form submitters select a single response from a dropdown experience:
### Create a select box
1. Open the **Marketing** tab from your Dashboard.
2. Select **Forms**.
3. [Create a Form](./create-and-build-your-form) or choose an existing Form to edit.
4. Under **Form Fields**, choose **Add Form Field**.
5. Click **Create a New Field**.
6. Title your custom field and select **Select Box** as the field type.
7. Enter your select box answer options.
8. Click **Save**.
9. Navigate to the upper right corner of the Form Editor and click **Save** again:
### Customize the Form Automation
After creating your select box, create an Automation in your Form to process the Form submitter's select box selection:
1. Inside the Form Editor, click **Add Automation**.
2. Select the action you want to occur after the Form is submitted in the **Then** dropdown menu.
3. Click the **Add Condition** button.
4. Select your custom select box field filter in the **Select filter** dropdown menu (custom field filters can be found at the end of the menu).
5. In the second dropdown menu, select your desired select box answer option to trigger the Automation.
6. Click **Apply**.
7. Click **Save**:
## Trigger Automations with radio buttons
*Radio buttons* let your Form submitters select a single response from multiple options:
### Create radio buttons
1. Open the **Marketing** tab from your Dashboard.
2. Select **Forms**.
3. [Create a Form](./create-and-build-your-form) or choose an existing Form to edit.
4. Under **Form Fields**, choose **Add Form Field**.
5. Click **Create a New Field**.
6. Title your custom field and select **Radio Buttons** as the field type.
7. Enter your radio button answer options.
8. Click **Save**.
9. Navigate to the upper right corner of the Form Editor and click **Save** again:
### Customize the Form Automation
After creating your radio buttons, create an Automation in your Form to process the Form submitter's radio button selection:
1. Inside the Form Editor, click **Add Automation**.
2. Select the action you want to occur after the Form is submitted in the **Then** dropdown menu.
3. Click the **Add Condition** button.
4. Select your custom radio buttons field filter in the **Select filter** dropdown menu (custom field filters can be found at the end of the menu).
5. In the second dropdown menu, select your desired radio button answer option to trigger the Automation.
6. Click **Apply**.
7. Click **Save**:
# Use an opt-in to allow access to a video
Source: https://help.kajabi.com/articles/marketing/forms/how-to-use-an-opt-in-to-allow-access-to-a-video
Use an Opt-In form to gate free video content and grow your contacts list.
Using an **Opt-In Form** to gate free video content is a great way to organically grow your contacts list. Visitors submit a Form and are redirected to a page containing your video.
## Create a page
First, create a Landing Page:
1. Open the **Website** tab from the Dashboard.
2. Select the **Landing** pages tab.
3. Click **+ New Landing Page**.
4. Choose from the many options of Page Templates. In this example we use **Danke**, a simple thank you page.
5. Select your template and click **Get Started**.
6. Title your page and click **Create**:
To create a standard Website Page instead of a Landing Page, [learn how to add pages to your website](../../website/pages/how-to-add-pages-to-your-website).
## Add a video to the page
1. In the sidebar editor, click **Add Section** and choose **Video**.
2. Click **Add Video**.
3. Hover over your Video block and click **Edit**.
4. Open the **Video Actions** dropdown menu and select **Upload a New File** to upload your video.
5. Select and upload an image to use as your video thumbnail image:
**Tip:**
[Learn how to further customize your page](../../website/pages/pages-explained#h_54126d74-7fd2-426c-a5c5-21fea7244c56).
## Create a Form that leads to the video page
After creating and customizing your page containing your uploaded video content, create your Opt-In Form:
1. Open the **Marketing** tab from the Dashboard.
2. Select **Forms**.
3. Click **New Form** and give it a title.
4. Click **Save**.
5. [Edit the Form fields](./how-to-add-and-edit-fields-on-a-form) and [Automations](../../marketing/automations/automations-overview) as needed.
6. Check the **Send the contact to a custom thank you page** box and select your created page from the dropdown menu.
7. Click **Save**:
## Add the Form to a page
After setting up the Opt-In Form that leads to your video page, share your Opt-In Form by adding it to your other pages (e.g., home page, sales page, etc.).
[Learn to add a Form to a page](../../website/pages/how-to-add-a-form-to-your-page)
After adding your Form to your desired page, site visitors can access your video page by submitting the Form:
*Opt-in to view video example:*
# Use Automations in Forms
Source: https://help.kajabi.com/articles/marketing/forms/how-to-use-automations-in-forms
Set up Automations for Opt-In Forms to automate Offers, Email Sequences, Events, Tags, Emails, and Coupons.
**Automations** let your Kajabi site run on its own by performing actions automatically when a Form is submitted. You can grant Offers, subscribe contacts to Email Sequences, register contacts to Events, add Tags, send emails, and distribute Coupons.
## Create an Automation in a Form
1. Open the **Marketing** tab from the Dashboard.
2. Select **Forms**.
3. Create a **Form** or edit an existing one.
4. Scroll down to the **Automations** section:
The steps below use the original Automations experience, where you build the Automation in a panel at the bottom of the Editor. [Learn which Automations experience you have](/articles/marketing/automations/automations-overview#which-automations-experience-you-have)
## Select an Automation type
Available Automation types:
* **Offer**
* **Email Sequence**
* **Event**
* **Tag**
* **Coupon**
## Offer
### Grant an Offer
[Grant an Offer](../../sales/offers/how-to-grant-an-offer) after someone submits a Form:
1. Choose **Grant an offer** as the **Then** action.
2. Select the Offer you are granting in the dropdown menu.
### Revoke an Offer
[Revoke an Offer](../../contacts/manage-your-contacts/revoke-product-access-from-a-customer) after someone submits a Form:
1. Choose **Revoke an offer** as the **Then** action.
2. Select the Offer you are revoking in the dropdown menu.
### Deactivate an Offer
1. Choose **Deactivate from offer** as the **Then** action.
2. Select the Offer you are deactivating the user from in the dropdown menu.
## Email Sequence
### Subscribe
Subscribe a Contact to an Email Sequence after they submit a Form:
1. Choose **Subscribe to an email sequence** as the **Then** action.
2. Select the Email Sequence you want to subscribe them to.
### Unsubscribe
Unsubscribe a Contact from an Email Sequence after they submit a Form:
1. Choose **Unsubscribe from an email sequence** as the **Then** action.
2. Select the Email Sequence you want to unsubscribe them from:
Learn more about [Email Sequences](../../marketing/email-campaigns/email-campaigns-overview#email-sequence).
## Event
### Register
Register Contacts to an Event after they submit a Form:
1. Choose **Register to an event** as the **Then** action.
2. Select the Event you want to register them to.
### Deregister
Deregister Contacts from an Event after they submit a Form:
1. Choose **Deregister from an event** as the **Then** action.
2. Select the Event you want to deregister them from:
Read [Event overview](../../marketing/events/event-overview) to learn more about Events in Kajabi.
## Tag
### Add a Tag
Add a Tag to the Contact after the Form is submitted:
1. Choose **Add a tag** as the **Then** action.
2. Create or select an existing Tag in the field below.
### Remove a Tag
Remove a Tag from the Contact after the Form is submitted:
1. Choose **Remove a tag** as the **Then** action.
2. Create or select an existing Tag in the field below:
Learn [how to use Tags](../../contacts/manage-your-contacts/tags-overview).
## Email
Send a [transactional email](../../marketing/email-campaigns/what-are-marketing-and-transactional-emails) when the Form is submitted:
1. Choose **Send an email** as the **Then** action.
2. Customize your transactional email in the field below:
Learn more about the [difference between Marketing and Transactional Emails](../../marketing/email-campaigns/what-are-marketing-and-transactional-emails).
## Coupon
Email a single-use Coupon code to the Contact after the Form is submitted:
1. Choose **Send a single-use coupon** as the **Then** action.
2. Select an existing [single coupon code](../../sales/coupons/what-is-the-difference-between-single-coupon-codes-and-bulk-coupon-codes#what-is-a-single-coupon-code) in the field below:
Learn to [create a Coupon](../../sales/coupons/how-to-create-a-coupon).
# Use After Submission settings in Forms
Source: https://help.kajabi.com/articles/marketing/forms/how-to-use-the-after-submission-settings-in-forms
Configure options that automatically occur after a Form is submitted.
**After Submission settings** are actions that automatically occur after a Form is completed and submitted by your leads or customers. With Kajabi Forms, you can send a notification to your team, send the Form data to a third-party email provider, or route the contact submitting the Form to a custom thank you page.
## Send a notification to the team
Select this option, then enter the **Email Address** of your team member in the box below. To add multiple emails, hit the **Tab** button after you enter each email. Click **Save** to apply.
## Send the contact to a third-party email provider
To send the Form's data to a third-party email provider, first integrate with that provider within your Kajabi account.
[Learn how to integrate with third-party providers using the integration guides](https://help.kajabi.com/hc/en-us/sections/360008619374-Third-Party-Contact-Management-Integrations).
## Send the contact to a custom thank you page
**Note:** The dropdown only shows Kajabi Landing Pages that already exist in your account. You cannot enter an external URL directly. To redirect form submitters to a page outside Kajabi (for example, a WordPress or third-party thank-you page), first create a Kajabi Landing Page with a redirect script, then connect that page here. [Learn how to set up a redirect on a Kajabi page.](https://help.kajabi.com/articles/website/pages/how-can-i-redirect-a-page)
To redirect the Form submitter to a thank you **Landing Page**, first create that page for it to appear as an option in the dropdown.
[Learn how to create a Landing Page](../../website/pages/how-to-add-pages-to-your-website).
##
# View Form submissions
Source: https://help.kajabi.com/articles/marketing/forms/how-to-view-form-submissions
View all responses to a Form from both the Form editor and Contacts tab.
**Form submissions** are the responses given in an Opt-In Form. Kajabi records every contact that completes and submits your Forms. You can locate submissions directly from the Form Editor or from the **Contacts** tab.
## Form submissions
### Difference between Form tab and Contacts tab submissions
The Form Editor displays every contact submitted through the Form as well as any duplicate submissions that may occur:
The **Contacts** tab filters only the contacts subscribed to your email marketing through the Form:
## View submissions in the Form tab
1. Open the **Marketing** tab from the Dashboard.
2. Select **Forms**.
3. Select the **Form** you wish to view.
4. Click **Submissions** under the Form title:
**Tip:**
You can view the total number of Form submissions at the bottom of the table on the **Submissions** page.
## View submissions in the Contacts tab
1. Open the **Contacts** tab from your Dashboard.
2. Click **Filters**.
3. Select your **Category**, **Conditional**, and **Value**:
* **Category:** Forms
* **Conditional:** Submitted
* **Value:** Form title that you wish to filter
4. Click **Apply Filters**:
# What happens when a Form is deleted
Source: https://help.kajabi.com/articles/marketing/forms/what-happens-when-a-form-is-deleted
Understand what happens to contacts and tags when a Form is permanently removed from your site.
Removing a Form from your site cannot be undone. Before deleting a Form, understand how it affects your contacts, their lifecycle data, and any Tags created through Form Automations.
## Delete a Form
1. Open the **Marketing** tab from your Dashboard.
2. Click **Forms**:
3. Select the Form you wish to delete.
4. Click the **more actions menu** (`…`) in the top-right corner of the Form Editor.
5. Select **Delete**:
6. Confirm your desire to delete by clicking **Delete** in the pop-up modal:
## Contacts that submitted the Form
Contacts added to your **Contacts** tab through a Form submission continue to remain in your **Contacts** tab if you remove the Form from your site.
However, the **Lifecycle** tab for your contacts no longer displays the Form as an event that occurred in their lifecycle:
## Tags created from the Form submission
If you have set up an [Automation](./how-to-use-automations-in-forms) to create a Tag when the Form is submitted, Tags applied to a contact remain in the contact's profile in your **Contacts** tab after the Form is removed from your site.
Form submitted:
Form deleted:
# Maximum Form fields
Source: https://help.kajabi.com/articles/marketing/forms/what-is-the-maximum-amount-of-fields-i-can-include-on-a-form
Add up to 50 total fields in a single Form and manage up to 50 custom Form fields per site.
You can add up to 50 total fields in a single Form and create up to 50 custom **Form Fields** in your site. This limit applies across all Forms on your site, not per individual Form.
**Note:**
If you reach the maximum number of custom Form Fields for your site, learn to [archive or permanently delete custom Fields](./how-to-remove-custom-form-fields).
# Duplicate a Funnel
Source: https://help.kajabi.com/articles/marketing/funnels/duplicate-a-funnel
Create an additional version of a Funnel by recreating it with duplicate pages.
**Duplicating a Funnel** lets you recreate an existing Funnel without starting from scratch. Since Funnels use a combination of pages, automations, and emails, duplication involves copying the individual Funnel pages and then adding them to a blank Funnel.
## Duplicate Funnel pages
1. Open the **Website** tab from the Dashboard
2. Click **Pages**
3. Select **Funnel Pages**
4. Select the Funnel you wish to duplicate
5. Duplicate each page of the Funnel by clicking `…` next to your Funnel Pages
6. Select **Duplicate** from the dropdown menu
7. Edit the page if needed. When finished, click back to **Landing Pages**
8. The duplicated page will appear in the **Pages** tab under Standalone Pages with the number 1 next to the original titles. Rename the page to minimize confusion
9. Once you have duplicated all of the pages of your Funnel, return to the **Dashboard**
Then, create a copy of your Funnel using the duplicated Pages.
**Note:**
Forms in a Funnel Page are not duplicated during the Funnel Page duplication process. [Create a new Form](../../marketing/forms/create-and-build-your-form) and [add it](../../website/pages/how-to-add-a-form-to-your-page) to your duplicated Funnel Page to replace the original.
## Add duplicated pages to a Funnel
1. Open the **Marketing** tab from the Dashboard
2. Click **Funnels**
3. Click **New Funnel**
4. Select the **Blank** Funnel
5. Click **Choose Funnel**
6. Rename your created Funnel
7. In the Funnel editor, click **Add Page**
8. Select **Add Existing Landing Page**
9. Add the duplicated pages to the blank Funnel in the same order as the original
The automations from the pages, such as email sequences, will then populate in your Funnel:
**Note:**
The blank Funnel originates with a blank page. Be sure to remove this from the Funnel to accurately copy your Funnel.
# Funnel templates
Source: https://help.kajabi.com/articles/marketing/funnels/funnel-templates
Explore the Funnel templates available in Kajabi.
**Funnel templates** are set up to:
* Encourage your audience to opt in
* Provide them value
* Present your Offer
All Funnel templates are great for conversion.
Kajabi offers 7 different Funnel templates to accommodate different types of Offers:
* [Freebie Funnel](#freebie-funnel)
* [Sales Page Funnel](#sales-page-funnel)
* [Waitlist/Coming Soon Funnel](#waitlistcoming-soon-funnel)
* [Product Launch Funnel](#product-launch-funnel)
* [Zoom Webinar Funnel](#zoom-webinar-funnel)
* [Free Book Funnel](#free-book-funnel)
* [Coaching Campaign Funnel](#coaching-campaign-funnel)
Each flow is equipped with pages and emails that are needed to reach the desired outcome.
## Freebie Funnel
The Freebie Funnel is great for those just starting to build their list or beginning to grow their online reputation and brand. This Funnel is quick and provides instant value.
This template has been tested by Brendan Burchard to grow his very own list and now you can use it too. This is a very simple template that contains an Opt-in page promising some kind of value to lead to a thank you page containing that value.
The Freebie Funnel is an excellent lead generator that will automatically create an email sequence for you to nurture your growing list.
This Funnel is best used to grow your list with Kajabi.
## Sales Page Funnel
The Sales Page Funnel is great for those looking to get their Offer out quickly. This acts as a lead generator and a way to promote the Offer you are selling directly from the thank you page.
This Funnel is the simplest way to get quick conversions. Generating the Sales Page Funnel will create an Opt-in page to promise your audience some kind of value. This value will then be delivered on the thank you page, built as a sales page.
The Sales Page behaves as a thank you page, but with a focus on the value to make a sale. From the Sales Page, your audience will be led to a Checkout Page to purchase the Offer you are selling.
This Funnel is a great lead generator while also resulting in a sale.
## Waitlist/Coming Soon Funnel
This Funnel is great for those looking to build an audience through a product waitlist. A waitlist allows you to connect with potential customers before you are ready to sell, setting you up for a great product launch.
This Funnel is the simplest way to build an audience. Generating the Waitlist/Coming Soon Funnel will create an Opt-in Page to capture a potential customer's first name and email.
The Welcome Email automatically sends to those who join your waitlist. It behaves as a confirmation focusing on welcoming your customers, encouraging them to join the waitlist, and getting them excited about what you are working on.
This Funnel is a great lead generator and audience builder perfect for Kajabi businesses.
## Product Launch Funnel
The Product Launch Funnel is an ideal Funnel for those looking to lead with value and sell a multi-faceted program. This Funnel template allows you to show the value before asking for the sale.
This Funnel can be used to do your own Product Launch. Designed by Brendan Burchard to mimic how he launches his online courses to build his online empire, the template begins with an Opt-in page to promise some kind of value in exchange for an email address.
The value provided is delivered in three sequential value pages over the coming days or weeks after your audience opts in. Your audience receives your three value pages through an automated email sequence generated with the Funnel template.
Each value page contains a simple layout to emphasize the value you provide. Each value page features a headline and a video to explain your value and how it will benefit them. Your value pages link to the Checkout Page for the Offer you discuss in your value pages.
In summary, the Product Launch Funnel is spread out over time with the automated email sequence as the glue to encourage your subscribers to go from one page to the next.
## Zoom Webinar Funnel
The Zoom Webinar Funnel is made for entrepreneurs who like to use webinars to promote and share information around a topic and pitch their Offer at the end.
This is an extremely powerful template that packs the power of a Product Launch into a Webinar.
Generating this template begins with a registration page. This registration page acts as a type of opt-in page to capture the email address of your registrants wanting to attend your Webinar. After registering, they will be led to a confirmation page with the date and time of the Webinar they registered for.
Your registrants will then be subscribed to Event emails leading up to the Webinar Event. Your Webinar can be powered by any Webinar Host (like Zoom) as long as you can paste the link to your Webinar in the Funnel.
During the Webinar, you can then provide value, confirming your attendees' desire to exchange their information for your Webinar Event.
At the conclusion of your Webinar, you can then pitch the Offer you are selling to your Webinar attendees. Your registrants will then be led to a sales page to encourage them to purchase the value discussed, and they will receive an email containing the direct link to the Checkout Page for your Offer.
This Funnel is power-packed with pages and email containing pre-written copy to help get your Webinar Funnel up and running quickly.
[Learn to set up a Zoom Webinar Funnel](../../marketing/funnels/how-to-set-up-a-zoom-webinar-funnel).
## Free Book Funnel
The Free Book Funnel is best for entrepreneurs who use a free book as a lead magnet. This book is the value your subscriber receives for opting into your email list for only the cost of shipping.
This Funnel template begins with an Opt-in page promising the book as the value. After a subscriber opts in by submitting their email address, they will be led to a Checkout Page to pay the shipping and handling fee.
After opting in, they will simultaneously be led to a Checkout Page to pay the shipping fee for the book and subscribe to an email sequence for you to encourage the sale of your main Offer.
This Funnel is versatile because you can do a free book launch to grow your list and nurture your list to sell your main Offer or lead to another Funnel with the power of Kajabi Automations.
## Coaching Campaign Funnel
The Coaching Campaign Funnel is great for coaches that require a scheduled initial call as part of their coaching program.
Whether you coach online or in-person, this template can help you build your coaching business.
As with all Funnels, this template starts off with an Opt-in page. In this case, the Opt-in page will act as an application for those wanting to join your coaching program.
Your applicants will be led to a thank you page containing further instructions while subscribing them to an Email Sequence that will encourage them to schedule their first appointment with you.
# Funnels overview
Source: https://help.kajabi.com/articles/marketing/funnels/funnels-in-kajabi
Automate marketing and sales with Funnels in Kajabi.
A **Funnel** is an advanced marketing tool that simplifies the relationship between marketing and sales by automating the entire process.
To better understand Funnels, think of a treasure map. In a treasure map, various locations are strung together to lead to the treasure. In the same way, Funnels string together landing pages and email campaigns to ultimately lead a potential customer to a purchase.
Take, for example, the Simple Sales Page Funnel:
In the Simple Sales Page Funnel, a potential customer will begin their journey from the Sales Page and be led to the Offer Checkout page to make their purchase.
Although this process can be built without a Funnel (by creating a [CTA button in a landing page](../../website/pages/how-to-add-a-call-to-action-block-to-your-website-page-and-landing-page)), Funnels help you automate and organize the connection between landing pages and email campaigns within a single location of Kajabi.
With the building blocks of a Funnel:
* Landing pages
* Email campaigns
* An Offer
Design a seamless experience to encourage your audience to see the value you offer and provide them with the opportunity to access that value.
Funnel templates are designed with pre-built landing pages and email copy to help you get started.
Generate the Funnel template that best fits your vision to begin building your Funnel. [Learn to generate a Funnel](../../marketing/funnels/how-to-generate-a-funnel).
## Build a Funnel
After generating a Funnel template, begin building in your content from the Funnel customization screen:
Hovering over each page will display tips on how to use each auto-generated page in your Funnel.
Although Funnel templates generate pre-built landing pages and email copy to get you started, you have the flexibility and freedom to customize your Funnel to best fit your business.
Click into each page to begin customizing your Funnel page in the same way you would customize a landing page with Kajabi Pages.
Not familiar with Kajabi Pages? [Learn more about Kajabi Pages](../../website/pages/pages-explained).
Within your Funnel customization screen:
* [Add landing pages](../../marketing/funnels/how-to-add-a-page-to-your-funnel)
* [Reorder Funnel landing pages](../../marketing/funnels/how-to-reorder-pages-in-a-funnel)
* [View the Funnel Checklist](../../marketing/funnels/how-to-use-the-funnel-checklist)
* [Share the Funnel with the Funnel link](../../marketing/funnels/share-your-funnel)
* [View video stats](../../analytics/how-to-view-video-stats)
* [View Funnel stats](../../marketing/funnels/how-to-view-page-and-email-stats-in-funnels)
This allows you to manage and customize all the building blocks of your Funnel in one location.
Now that you are familiar with the building blocks of a Funnel, [learn more about each Funnel template](../../marketing/funnels/funnel-templates).
# Add a chat box to a live webinar Funnel
Source: https://help.kajabi.com/articles/marketing/funnels/how-to-add-a-chat-box-to-a-live-webinar-funnel
Include a Chatbox with a Live Webinar Funnel using YouTube Live to interact with viewers in real-time.
A **chat box** in a live webinar Funnel lets you interact with your audience in real time during a YouTube Live stream. This feature is only available with the Legacy Webinar Funnel using YouTube Live — it will not display with a pre-recorded webinar or the Zoom Webinar Funnel.
**Note:**
The Legacy Webinar Funnel, Live Webinar (YouTube Live), is required to enable a chat box. The chat box will not display with a pre-recorded webinar or the Zoom Webinar Funnel.
## Create a Webinar Funnel
1. Log into your Kajabi account
2. Open the **Marketing** tab from the Dashboard
3. Click **Funnels**
4. Click **+ New Funnel**
5. Navigate to the bottom of the page and select **Legacy Funnels**
6. From the selection of Legacy Funnels, choose **Webinar** then click **Create Funnel**
7. In the **Webinar Type** dropdown, be sure to select **Live Webinar (YouTube Live)**
8. Select the Time and Date of the Webinar, the Time Zone, and an Offer you would like your Webinar viewers to purchase
## Set up YouTube Live
1. In your YouTube Studio dashboard, click **Create** then select **Go Live**
### Configure YouTube Live settings
1. Create a title and select Public or Unlisted
2. Select **No, it's not made for kids** for the Audience Type
**Note:**
YouTube Live chat is only available if your live stream's audience is set for **not made for kids**.
3. Scroll down and click **More Options**
4. Click **Advanced Settings**
5. Ensure that **Allow Chat** is enabled
6. Return to the Basic Settings and click **Next**. This will launch a streaming preview to attach as the Thumbnail
7. If you wish to upload a custom image for the Thumbnail or Retake Thumbnail, hover over the image and select your desired option
8. In the Popup, click **Share**
9. Copy the **ID** at the end of the link to your clipboard, in this example:
[https://youtu.be/\*\*PXI4Y76qHZQ](https://youtu.be/**PXI4Y76qHZQ)\*\*
## Connect YouTube Live to the Funnel
1. Head back into the Kajabi Funnel page and click into **Webinar Room**
2. Select **YouTube Live** in the sidebar on the right and paste the **ID** into **Video ID**
3. Make sure to check **Show Chat**
4. Click **Save** to keep your changes
Fill out the remaining steps in the [Funnel Checklist](../../marketing/funnels/how-to-use-the-funnel-checklist) to finish your Webinar Funnel with YouTube Live.
# Add a page to a Funnel
Source: https://help.kajabi.com/articles/marketing/funnels/how-to-add-a-page-to-your-funnel
Add pages to a Funnel template for additional customization.
Adding a **Landing Page** to a Funnel lets you extend the visitor journey with additional steps — such as an extra sales page, a thank you page, or a content page — without building a Funnel from scratch.
## Add a Landing Page to a Funnel
1. From the Dashboard, open the **Marketing** tab.
2. Click **Funnels**.
3. Select the **Funnel** you want to edit.
4. Hover between two existing pages until the **+ Add Page** button appears:
5. Click **+ Add Page**.
6. Select **New Landing Page** or **Existing Landing Page**, then click **Next**.
7. For an existing Landing Page, select it under **Choose Your Page**, and click **Save** to add it to your Funnel.
8. For a new Landing Page, choose a **Page Type**, then click **Next.**
9. Choose a **Page Style**, then click **Next.**
10. Enter a **Page Name**.
11. Click **Save** to generate the new Funnel page.
**Tip:** Check your previous steps to ensure that any triggers (e.g., Thank you page URL) lead to your added page. If your Funnel skips the page during your test and preview, a previous step may not be set up to lead to it.
# Add emails to a Funnel
Source: https://help.kajabi.com/articles/marketing/funnels/how-to-add-emails-to-a-funnel
Add an Email Sequence or Event with emails to a Funnel flow and customize them directly in the Funnel.
Adding **emails** to a Funnel lets you automate follow-up communication with your visitors. You can add Email Sequence emails or Event emails directly to your Funnel and manage them from the Funnel builder.
## Email Sequence emails
Add Email Sequence emails directly to your Funnel and subscribe a visitor to the email sequence when your Opt-in Form is submitted.
**Note:**
You will need to have an [Opt-in Form](../../marketing/forms/create-and-build-your-form) on one of the pages in your Funnel.
### Add an Email Sequence to a Funnel
1. Select the **Marketing** tab from the Dashboard
2. Click **Funnels**
3. Select an existing **Funnel** or [generate a new Funnel](../../marketing/funnels/how-to-generate-a-funnel)
4. From your Funnel template, click **+Add Automation**
5. Select **Subscribe to an email sequence**
6. Click **Save**
You can now customize your email sequence directly in your Funnel.
### Add emails to the sequence
1. Click on the email sequence from your Funnel template
2. Click **Add New Email**
### Remove emails from the sequence
1. Click on the email sequence from your Funnel template
2. Select the email you wish to remove
3. Click **Delete** at the bottom of the email body
## Event emails
Add Event emails directly to your Funnel template and register visitors to the event when your opt-in form is submitted.
**Note:**
You will need to have an opt-in form on one of the pages in your Funnel template.
### Add an Event to a Funnel
1. Select the **Marketing** tab from the Dashboard
2. Click **Funnels**
3. Select an existing **Funnel** or [generate a new Funnel](../../marketing/funnels/how-to-generate-a-funnel)
4. From your Funnel template, click **+Add Automation**
5. Select **Register to an event**
You can now customize your event emails directly in your Funnel.
### Add Event emails
1. Click on the event emails in your Funnel template
2. Click **Add Email**
### Remove Event emails
1. Click on the event emails in your Funnel template
2. Select the email you wish to remove
3. Click **Delete Event Email** at the bottom of the page
# Attach multiple Offers to a Funnel
Source: https://help.kajabi.com/articles/marketing/funnels/how-to-attach-multiple-offers-to-a-funnel
Add Pricing Card Blocks to Funnel Landing Pages to convert leads into paying customers.
**Pricing Card Blocks** let you display multiple **Offers** on a single **Funnel** page, giving your visitors the ability to compare options and choose the right fit. Use this approach when you want to present tiered pricing or bundle options within a Funnel.
1. From the Dashboard, select the **Marketing** tab.
2. Click the **+ New Funnel** button to generate a **Funnel**.
3. Click **Get started** on the **Sales Page** **Funnel.**
4. Give your Funnel at **Title**.
5. Choose an existing **Offer** to sell with this Funnel, and then, select **Create Funnel**.
6. Select the **Sales Page.**
7. Click **Add Section** from the sidebar control panel.
8. Scroll down to select **Pricing Cards:**
9. Click **Add** to add the section to your Sales Page. The Pricing Cards section will be added to the bottom of your page.
10. Repeat this for each Offer you want to include.
11. Set the **Call-to-Action** in each block to lead to the associated **Checkout Page** for each Offer.
**Note:** Your [Funnel stats](../../marketing/funnels/how-to-view-page-and-email-stats-in-funnels) will only show sales stats from the Offer Checkout Page in your Funnel. Sales that come from Pricing Card Blocks will not be reflected in the Funnel stats.
# Customize a Funnel page
Source: https://help.kajabi.com/articles/marketing/funnels/how-to-customize-a-funnel-page
Access the Funnel Page Builder to customize Funnel pages.
A **Funnel Page** is a landing page built specifically for your Funnel. Customizing your Funnel Pages is an essential step in setting up your Funnel — it ensures your branding, messaging, and calls to action align with your business goals.
[Learn more about Funnels](../../marketing/funnels/funnels-in-kajabi).
## Access the Funnel Page Builder
On Kajabi your site consists of [Website, Landing, and Funnel pages](../../website/pages/pages-overview). Each page type can be customized with the Kajabi Page Builder.
[Learn more about customizing Kajabi Pages](../../website/pages/pages-overview).
There are two ways to access the Funnel Page Builder from Kajabi: from the Pages tab or the Marketing tab.
### Access from the Pages tab
1. Open the **Website** tab from the Dashboard
2. Click **Pages**
3. Select **Funnels**
4. Select the Funnel you wish to customize
5. Locate the Funnel page and click **Customize**
### Access from the Marketing tab
1. Open the **Marketing** tab from the Dashboard
2. Click **Funnels**
3. Locate the **Funnel** that contains the Page you want to edit
4. Click the **Page** you wish to edit
## Additional resources
* [Use the Funnel Checklist](../../marketing/funnels/how-to-use-the-funnel-checklist)
* [Add a page to a Funnel](../../marketing/funnels/how-to-add-a-page-to-your-funnel)
* [Reorder pages in a Funnel](../../marketing/funnels/how-to-reorder-pages-in-a-funnel)
# Delete a Funnel
Source: https://help.kajabi.com/articles/marketing/funnels/how-to-delete-a-funnel
Remove a Funnel from the Marketing Funnel tab.
**Warning:**
Deleting a Funnel cannot be undone.
Deleting a **Funnel** removes it from the Marketing Funnel tab to free up space for additional Funnels, depending on your [Kajabi Plan](https://kajabi.com/pricing).
**Note:**
Landing Pages, Automations, emails, and/or Events created in the deleted Funnel will remain in their respective tabs within Kajabi. For example, Landing Pages created in a deleted Funnel can be found in your list of Standalone Landing Pages within the Pages tab.
## Delete a Funnel
1. Open the **Marketing** tab from the Dashboard
2. Select **Funnels**
3. Click into an existing **Funnel**
4. At the top of your Funnel, click the **Funnel Title**
5. In the dropdown menu, select **Delete**
# Generate a Funnel
Source: https://help.kajabi.com/articles/marketing/funnels/how-to-generate-a-funnel
A **Funnel** brings marketing and sales together through the power of automation. A Funnel can help drive traffic to your opt-in page, capture lead information, send follow-up content, and ultimately convert visitors into paying customers.
With Kajabi, Funnels are designed with pre-built landing pages and email copy. Generate the Funnel template that best fits your vision to get started.
[Learn more about Funnels on Kajabi](https://help.kajabi.com/articles/marketing/funnels/funnels-in-kajabi#funnels-overview).
## Generate a Funnel
1. Open the **Marketing** tab from the Dashboard
2. Select **Funnels**
3. Click **+ New Funnel**
4. Choose your **Funnel Template**
5. Enter a **Title** for your Funnel
6. Click **Create Funnel**
## Duplicate a Funnel
1. From the Dashboard, open the **Marketing** tab.
2. Click **Funnels.**
3. Next to the Funnel, click the **more options icon** (...).
4. Select **Duplicate.**
5. Confirm by clicking **Duplicate** in the new modal.
6. The duplicate funnel will appear at the top of the list. Click the title of the Funnel to edit the new Funnel.
# Reorder pages in a Funnel
Source: https://help.kajabi.com/articles/marketing/funnels/how-to-reorder-pages-in-a-funnel
Rearrange existing pages in a Funnel to fit the style and flow of a marketing Funnel.
**Reordering pages** in a Funnel lets you rearrange the flow your visitors experience. Adjust the page order to match your marketing strategy and guide visitors through the journey you intend.
## Rearrange pages in a Funnel
1. Open the **Marketing** tab from the Dashboard
2. Select **Funnels**
3. Edit an existing Funnel or [create a new one](../../marketing/funnels/how-to-generate-a-funnel)
4. Click `…` on one of the Funnel cards
5. Choose **Reorder** from the more options dropdown
6. Click and drag the pages to create your desired flow
# Replace an Event in an existing Funnel
Source: https://help.kajabi.com/articles/marketing/funnels/how-to-replace-an-event-in-an-existing-funnel
Replace an Event in an existing Funnel without rebuilding it from scratch.
Replacing an **Event** in an existing Funnel lets you swap out the current Event without rebuilding the entire Funnel. Remove the existing Event automation first, then add the replacement.
## Remove the existing Event from a Funnel
1. Open the **Marketing** tab from the Dashboard
2. Select **Funnels**
3. Select your Funnel to open your Funnel template
4. Select the automation that you use to register contacts to an Event when your form is submitted. This automation will be found on your opt-in page
5. Click **Delete**
6. Click **Ok** to confirm you would like to delete the automation rule
## Add an Event to the Funnel
1. Open the **Marketing** tab from the Dashboard
2. Select **Funnels**
3. Select your Funnel to open your Funnel template
4. Click **Add Automation**
5. Select **Register to an event** from the dropdown menu
6. Select your Event from the dropdown menu
7. Optional: [Add a conditional to your automation](../../marketing/automations/automations-overview)
8. Click **Save**
# Replace the PDF file in a Freebie Funnel
Source: https://help.kajabi.com/articles/marketing/funnels/how-to-replace-the-pdf-file-in-a-freebie-funnel
Change the downloadable file in a Freebie Funnel.
A **Freebie Funnel** is a great tool for building your list and growing your online reputation. This simple template contains an Opt-in page promising some kind of value, leading to a thank you page containing that value — specifically, your downloadable PDF file:
[Learn more about Funnels in Kajabi](../../marketing/funnels/funnels-in-kajabi).
## PDF file location
When generating a Freebie Funnel, you are prompted to:
* Name your Funnel
* Upload your freebie file
Your uploaded freebie file will be added as a download on the thank you page of your Funnel:
## Replace the downloadable file
Change your downloadable PDF file in a Freebie Funnel by replacing the original file in the Thank You Page of your Funnel.
### Navigate to the Freebie Funnel builder
1. Open the **Marketing** tab from the Dashboard
2. Click **Funnels**
3. Select your Freebie Funnel
### Open the Thank You page
When your visitors submit the Form for your Freebie Funnel, they will be redirected to a Thank You Page containing your downloadable PDF file.
Swap out the file by opening the Thank You Page editor in your Freebie Funnel builder:
### Upload the file
Your visitors will access your PDF file by clicking the **Download Now** call to action button in the Thank You page:
Open the Call to Action editor to change out the downloadable file:
1. Click **Download Now** to edit
2. Navigate to the sidebar editor
3. Locate the Call To Action block settings in the sidebar
4. Under Button Action, click **Pick File**
5. Select the file from the file picker to replace your original PDF
6. Click **Save** to keep and apply your changes
After customizing and branding your Funnel, begin sharing it with your audience. [Learn to share your Funnel](../../marketing/funnels/share-your-funnel).
# Set up a live evergreen webinar
Source: https://help.kajabi.com/articles/marketing/funnels/how-to-set-up-a-live-evergreen-webinar
Set up a live evergreen webinar using the Zoom Webinar Funnel in Kajabi.
A **live evergreen webinar** lets you run a recurring live webinar on an automated schedule. Set up your webinar or meeting in Zoom, connect it to a Kajabi Funnel, and configure it to repeat at the frequency you choose.
## Set up a webinar or meeting in Zoom
**Note:**
The Webinar feature in Zoom is a paid upgrade from the free account. If you'd like to use Zoom completely free, use the Meeting function.
### Create a Webinar in Zoom
1. Log in to your **Zoom account** on a web browser
2. Select the **Webinar** tab from the sidebar
3. Click **Schedule a Webinar**
4. Title your Webinar, add a description, and choose a date and duration
5. Make sure registration **IS NOT REQUIRED**
6. Check that the Host's video will be on when the webinar starts
7. Select **Record the webinar automatically** if you would like to keep a copy for later use
8. Click **Save** and scroll down on the page to copy your Zoom Webinar link
### Create a Meeting in Zoom
1. Log in to your **Zoom account** on a web browser
2. Select the **Meeting** tab from the sidebar
3. Click **Schedule a Meeting**
4. Title your Meeting, add a description, and choose a date and duration
5. Make sure registration **IS NOT REQUIRED**
6. Check that the Host's video will be on when the meeting starts
7. Select **Record the meeting automatically** if you would like to keep a copy for later use
8. Turn on the **Waiting Room**
9. Click **Save** and copy your Zoom Meeting link
## Generate the Zoom Webinar Funnel
1. Open the **Marketing** tab from the Dashboard
2. Select **Funnel**
3. Navigate to the top right corner of the page and select **+ New Funnel**
4. From the list of Funnel templates, select **Zoom Webinar Funnel**
5. Click **Create Funnel**
6. In the prompt, create a title, paste your Webinar link, select the date for which your evergreen webinar will begin, and select an Offer if you wish to sell an Offer with the webinar
7. Click **Generate Funnel**
8. Navigate to the **Event** section of the Funnel and toggle on **Repeat this Event**
9. Choose how often you would like this event to repeat, then click **Save**
This Live Webinar Funnel will now repeat in accordance with the frequency you selected:
**Tip:**
You can use this same process with any webinar host whether it be Zoom, EverWebinar, or WebinarJam.
# Set up a pre-recorded evergreen webinar with the Webinar Legacy Funnel
Source: https://help.kajabi.com/articles/marketing/funnels/how-to-set-up-a-pre-recorded-evergreen-webinar-with-the-webinar-legacy-funnel
Set up a pre-recorded evergreen webinar using the Legacy Funnel in Kajabi.
**Note:**
Creating your pre-recorded webinar Funnel with the Legacy Funnel, Webinar, will not include the features available with the Zoom Webinar Funnel. If you wish to use the Zoom Webinar Funnel, refer to the [Zoom Webinar Funnel guide](../../marketing/funnels/how-to-set-up-a-zoom-webinar-funnel).
A **pre-recorded evergreen webinar** lets you replay a webinar on a recurring schedule using the Legacy Funnel. Record and edit your webinar video before setting it up in Kajabi, then keep the file in an easily accessible location for upload.
## Generate the Webinar Legacy Funnel
1. Open the **Marketing** tab from the Dashboard
2. Click the **Funnel** tab
3. Navigate to the bottom of your Funnel Templates to open **Legacy Funnels**
4. Select **Webinar**
5. Click **Create Funnel**
6. Complete the prompt to generate your Funnel. Be sure to select "webinar"
7. Click **Create Funnel**
## Upload the pre-recorded video
After generating your Webinar Funnel, upload your pre-recorded webinar video.
From the Funnel Builder:
1. Open the **Webinar Room** page
2. Navigate to the sidebar editor and click **Event Video**
3. Scroll to the **During Event** section
4. Click **Add video**
5. Upload your video
6. Click **Save** to apply and keep your changes
## Set the Event to repeat
With an evergreen webinar, your Event is set to repeat over time:
1. Open the **Event** section of your Funnel
2. Toggle on **Repeat this event**
3. Select how often you want your Webinar Funnel to repeat
4. Click **Save**
Now that you have set up the main building blocks for your pre-recorded evergreen webinar, customize the rest of your Funnel to fit your brand and business.
Then, begin sharing your Funnel with your audience. [Learn to share your Funnel](../../marketing/funnels/share-your-funnel).
**Note:**
Since this Funnel will be repeating, registrants will only be subscribed to one cycle of the webinar and the associated Email Sequence. You can subscribe them to other Email Sequences by creating an Automation within the Registration Form.
# Set up a Zoom Webinar Funnel
Source: https://help.kajabi.com/articles/marketing/funnels/how-to-set-up-a-zoom-webinar-funnel
Set up a Webinar Funnel using the Zoom Webinar Funnel template in Kajabi.
The **Zoom Webinar Funnel** combines registration pages, event emails, and a sales page into a single automated flow. Use it to promote a live webinar, capture registrants, and convert attendees into customers.
**Note:**
The Webinar feature in Zoom is a paid upgrade from the free account. If you'd like to use Zoom completely free, you can use the [Meeting function](https://zoom.us/meetings).
## Zoom Webinar Funnel template
**Note:**
All of these Pages and Email Sequences are generated with fill-in-the-blank copy designed by Brendon Burchard. Make sure you edit each page individually with text specific to you and your business.
### Contents of a Zoom Webinar Funnel
The Zoom Webinar Funnel template generates a:
* Registration page
* Event with surrounding emails
* Confirmation page
* Sales page
* Offer checkout page
### Registration Page
Visitors register for your webinar on this page and opt in to receive updates or news about the event. Let your customers know what you will be teaching during your webinar and why they should register.
### Event with lead-up and follow-up Event Emails
The Registration Page will register the user to the Event as well as subscribe to the Event's lead-up and follow-up Event Emails. There will be a total of nine emails around the Event:
* 4 reminder emails, the last of which will contain a link to the Zoom room
* 5 follow-up emails that will link to your sales page
All of the copy in these emails is designed directly from Brendon Burchard's Expert's Academy.
Click into an email to customize your message:
**Tip:**
Need to change your Zoom Link? Open the Day #4: Day of Reminder email and change your Zoom link from the Body text, then open the Confirmation Page to update the Zoom link from the Countdown block.
### Confirmation Page
Immediately after registering, your visitors will be taken to the confirmation page. Use this page to thank them for registering and remind them when the event will take place.
### Sales Page
After your webinar has concluded and the event is over, your attendees will be sent an automatic email with a link to this page. Reiterate a few of the most valuable points from your webinar and sell your viewers on your main Offer.
This is where you convert leads into customers.
### Offer Checkout
The Funnel will add the Offer's checkout page to the Funnel. Make sure the checkout page is ready to go and start taking payments.
## Set up the Zoom Webinar Funnel
### Set up the webinar in Zoom
1. Log in to your **Zoom account** on a web browser
2. Select the **Webinar** tab from the sidebar
3. Click **Schedule a Webinar**
4. Title your Webinar, add a description, and choose a date and duration
5. Make sure registration **IS NOT REQUIRED**
6. Check that the Host's video will be on when the webinar starts
7. Select **Record the webinar automatically** if you would like to keep a copy for later use
8. Click **Save** and scroll down on the page to copy your Zoom Webinar link
### Set up the Zoom Webinar Funnel in Kajabi
1. Open the **Marketing** tab from the Dashboard
2. Select **Funnel**
3. Click **+ New Funnel**
4. Choose **Zoom Webinar** from the Funnel Templates
5. Watch the video and click **Create Funnel**
6. Fill in the form with the same information you set up your webinar with on Zoom
7. Paste the **webinar link** from Zoom
8. Select a time for your webinar
9. Pick a time zone
10. Add an **Offer** if you are selling ([learn to create an Offer](../../sales/offers/create-an-offer))
11. Click **Generate Funnel**
# Test a Funnel
Source: https://help.kajabi.com/articles/marketing/funnels/how-to-test-your-funnel
Preview and test Funnels to ensure they are designed and functioning as intended.
Testing your **Funnel** before sharing it ensures that every page, form, and call to action works as intended. Use the preview function and an incognito browser window to catch issues before your audience does.
## Preview a Funnel
The simplest way to make sure your [Funnel](../../marketing/funnels/funnels-in-kajabi) looks and acts as intended is to use the Preview function in the Funnel Editor.
Remember to use the [Funnel Checklist](../../marketing/funnels/how-to-use-the-funnel-checklist) to make sure your Funnel is complete.
1. Open the **Marketing** tab from the Dashboard
2. Click **Funnels**
3. Select the **Funnel** you intend to preview
4. Open the first page of your Funnel
5. Click the **Preview** button in the upper right-hand corner of the page editor
6. If you are using a CTA or similar to trigger the next Funnel step, click your CTA
7. Continue clicking your next Funnel step triggers until you get to the final page of your Funnel
## Use an incognito window
To fully experience your Funnel, use an incognito or private window in your internet browser.
Using an incognito window ensures that Kajabi will not recognize you as a logged-in admin, so you can view the Funnel as if you were a visitor of your site.
**Tip:**
If your Funnel requires a [Form](../../marketing/forms/create-and-build-your-form) to be filled out in order to advance to the next Funnel step, use a different email address than your Kajabi login email address. This way you can receive the intended follow-up email and ensure that aspect of the Funnel is working as intended.
### Open an incognito window in Google Chrome
1. Open the **Marketing** tab from the Dashboard
2. Click **Funnels**
3. Select the Funnel you wish to share or create a new one
4. Navigate to the top right corner of the page
5. Click **Copy Link**
6. In the Chrome browser bar, click **File**, then **New Incognito Window**
7. In the incognito window, paste your **Funnel URL** into the address bar
8. Click through your Funnel pages, making sure to check any [CTAs](../../website/pages/how-to-use-a-call-to-action) or fill out any forms you need to complete to continue to the next Funnel step
9. Continue until you reach the last Funnel step. If the last step is an Offer, purchase the Offer to confirm it works properly
Funnels can end in many different ways — an email address sign-up, an Offer purchase, a prospective client becoming a customer, or event registration.
Whichever route you choose, test your Funnel all the way through to be sure it works as expected before sending the link out to the public.
# Use the Funnel Checklist
Source: https://help.kajabi.com/articles/marketing/funnels/how-to-use-the-funnel-checklist
Use the Funnel Checklist to track customization progress while building a Funnel.
The **Funnel Checklist** helps you track your customization progress as you build out your Funnel. When you generate a Funnel template, pre-built landing pages and email copy auto-generate in your Funnel.
The Funnel Checklist in the Funnel builder tracks the landing pages and email copy that you have customized to fit your personal brand and voice. It helps you keep track of what you have and have not customized, so you can avoid sending traffic to a page with default copy or sending out an email with swipe copy.
**Note:**
The Funnel Checklist is a digital checklist that auto-completes as you build your Funnel.
## Use the Funnel Checklist
See how the checklist works:
After customizing and saving a Page, Email Sequence, or Event in the Funnel editor, the item will be checked off on the list.
When you have finished all the items on the checklist and you are ready to start sending traffic to your Funnel, click the **Share Funnel** button to copy your Funnel link and share it with your audience.
**Tip:**
You can close the checklist by clicking the **X** in the top right of the box. If you still have elements to customize, the checklist will remind you with push notifications.
# Use YouTube Live in a webinar Funnel
Source: https://help.kajabi.com/articles/marketing/funnels/how-to-use-youtube-live-in-a-webinar-funnel
Use YouTube Live with a Webinar Funnel on Kajabi to reach customers in real time.
**YouTube Live** lets you stream directly to your audience through a Kajabi Webinar Funnel. Before going live, you need to enable the required features on your YouTube account and then connect the stream to your Funnel.
## Before going live
Before you go live, complete a few steps on your [YouTube](https://www.youtube.com/) account.
Make sure that the features *Live Stream* and *Embed Live Streams* are enabled in your [account settings](https://www.youtube.com/features) on YouTube.
1. Log into your YouTube account
2. Go to your YouTube Studio
3. Click **Settings** in the bottom left corner
4. Select **Channel**
5. Click **Advanced Settings**
6. Scroll to Other channel settings and click **Manage your YouTube Account**
7. Click **Channel status and features**
8. Locate the Live streaming and Embed live streams cards and confirm they are enabled. If not, follow YouTube's instructions on how to enable Live Stream and Live Stream Embedding
## Create a Webinar Funnel
1. Open the **Marketing** tab from the Dashboard
2. Click **Funnels**
3. Click **+ New Funnels**
4. Navigate to the bottom of the page and select **Legacy Funnels**
5. From the selection of Legacy Funnels, choose **Webinar**
6. Click **Create Funnel**
7. In the Webinar Type dropdown, choose **YouTube Live**
8. Select the Time and Date of the Webinar, the Time Zone, and an Offer you would like your Webinar viewers to purchase
## Connect YouTube Live to the Funnel
1. In your YouTube Studio dashboard, click **Create**
2. Select **Go Live**
3. Create a title, add time and date, select your audience type, and click **Next**. This will prompt a streaming preview
4. In the Popup, click **Share**
5. Copy the **ID** at the end of the link to your clipboard, in this example:
[https://youtu.be/\*\*u4Y2QyqsKUo](https://youtu.be/**u4Y2QyqsKUo)\*\*
6. Head back into the Kajabi Funnel page and click into **Webinar Room**
7. Select **YouTube Live** in the sidebar on the right and paste the **ID** into **Video ID**
Complete the remaining steps in the [Funnel Checklist](../../marketing/funnels/how-to-use-the-funnel-checklist) to finish your Webinar Funnel with YouTube Live.
# View Forms submitted in a Funnel
Source: https://help.kajabi.com/articles/marketing/funnels/how-to-view-forms-submitted-in-a-funnel
Access and view Form submissions in a Funnel.
**Form submissions** in a Funnel let you see who has opted in and the information they provided. Use this to track lead generation and follow up with potential customers.
## View Funnel opt-in submissions
1. Open the **Marketing** tab from the Dashboard
2. Click **Forms**
3. Select the Form for the Funnel you would like to view the submissions for
4. Click **Submissions**
# View page and email stats in Funnels
Source: https://help.kajabi.com/articles/marketing/funnels/how-to-view-page-and-email-stats-in-funnels
Track statistics throughout Sales and Marketing Funnels to understand conversion rates.
**Funnel Stats** help you understand how visitors move through your Funnel, where they convert, and how your emails perform. Use this data to identify bottlenecks and optimize your marketing flow.
## Access Funnel Stats
1. Open the **Marketing** tab from the Dashboard.
2. Select **Funnels.**
3. Click into an existing Funnel.
4. Click the **View Stats** button.
## Funnel Stats
* **Conversion Rate** — Total opt-ins divided by the total number of page views
* **Total Revenue** — The total profit generated from your Offer in the Funnel
* **Revenue Per View** — Total number of sales divided by the total number of page views
* **Views** — The total number of visits (page views)
* **Conversions** — Total number of opt-ins from a Form on the page
* **Sales** — The total number of sales generated from the Offer
**Note:** Sales stats reflect all sales of the specific Offer, even if the purchase did not come from the Funnel.
## Funnel Email Sequence stats
If your Funnel includes emails, your Funnel Stats will display an **Email Sequences** tab:
* **Sends** — The number of emails successfully sent
* **Opens** — The number of times the email has been opened
* **Clicks** — The number of times any link in the email has been clicked. Click tracking excludes clicks from the [View in Browser](../../marketing/email-campaigns/how-to-hide-the-view-in-web-browser-link) button in an email campaign
**Note:** Stats reflect all sends, opens, and clicks that are specific to the Email Sequence, even if the subscriber did not come from the Funnel.
# Share a Funnel
Source: https://help.kajabi.com/articles/marketing/funnels/share-your-funnel
Share a Funnel to encourage visitors to opt in to sales and marketing Funnels.
**Note:**
The Share Funnel option in the Template Checklist will only become available when all the items in the checklist are completed. However, you can still copy the link from the top right corner of the Funnel Builder.
## Copy the Funnel link
Share a Funnel by first copying the Funnel link.
After copying the link, share it in email campaigns, landing pages, and social platforms.
1. Open the **Marketing** tab from the Dashboard
2. Click **Funnel**
3. Select the Funnel you wish to share or create a new one
4. Navigate to the top right corner of the page
5. Click **Copy Link**
**Tip:**
If you prefer to share a customized Funnel link with your audience, you can [edit and copy the link of the first page](../../website/pages/customize-your-page-details) of your Funnel.
## Share the link in emails
1. Open the **Marketing** tab from the Dashboard
2. Click **Email Campaigns**
3. Select the Email you wish to edit or [create a new one](../../marketing/email-campaigns/create-an-email-sequence)
In the body of your email sequence, use a Call to Action button to link to the beginning of your Funnel.
1. Click **Insert/edit button** in the Email Body menu
2. Paste your Funnel URL in the URL text box
3. Configure the **Text to display**
4. Customize your Button color to fit your branding
5. Click **Ok** to add your button
6. Click **Save** to keep your changes
7. Preview your email by navigating to the top menu and selecting **Preview In Browser** or **Send Test Email**
## Share the link on a site page
1. Open the **Website** tab
2. Select the Page you wish to edit
3. Click **Customize**
4. Click **Add Section** in the sidebar editor
5. Select **Call to Action** and click **Add**
6. Click the **Call to Action** block in the sidebar
7. Under the Button Action header, select **Go to a URL** from the dropdown menu
8. In the text field, paste your Funnel URL
**Note:**
When using the **Go to a URL** action, be sure to enter a full URL (e.g., [https://kajabi.com/](https://kajabi.com/)).
## Share the link on social platforms
Use your social media platforms to share your Funnel. Paste your Funnel link onto your social media profiles and add your link to your social media posts.
**Tip:**
To control which image is shown in search results, customize the SEO details in your site settings. If linking visitors to the first page of the Funnel, the first image of that page will be displayed.
# Funnel updates
Source: https://help.kajabi.com/articles/marketing/funnels/whats-new-with-funnels
Explore the updates to Funnels on Kajabi.
Kajabi features a redesigned **Funnel** page to help you locate and edit your Funnels more intuitively.
With this update to Funnels:
* Redesigned the Funnel List page
* Updated the Funnel templates page
What are Funnels? [Learn more about Funnels in Kajabi](../../marketing/funnels/funnels-in-kajabi).
## Funnel list page
Easily access and navigate your list of Funnels with the redesigned Funnel list page.
## Funnel templates page
Create Funnels with Funnel templates. The redesigned Funnel template page helps you preview and select the template that best fits your goal.
# Manage messages in Universal Inbox
Source: https://help.kajabi.com/articles/marketing/universal-inbox/universal-inbox
Connect Instagram and Facebook, answer every social and in-app conversation from one screen, and turn a conversation into a Contact.
**Universal Inbox** is a single hub for the conversations happening across your Kajabi site and your connected social accounts. Instead of moving between Instagram, Facebook, and Kajabi, you answer everyone from one screen.
Universal Inbox is available on any plan, and it brings together these channels:
* **Instagram DMs**, including messages sent by [Comment-to-DM Automations](../../marketing/comment-to-dm/comment-to-dm)
* **Facebook Messenger** chats
* [**Backstage**](../../products/backstage/set-up-a-private-client-backstage) client messages
* [**Expert Agents**](../../products/products-overview/expert-agents-overview) conversations with members and visitors
## Connect Instagram or Facebook
1. From your Kajabi Dashboard, navigate to **Settings** > **Integrations & Webhooks**.
2. In the **Social media** section, select **Instagram** or **Facebook** and click **Connect.**
3. Log in to your Instagram or Facebook account in the pop-up window.
4. Convert to an Instagram Professional account if prompted.
5. Allow **Kajabi Marketing Services** access to finish the integration.
## Open Universal Inbox
1. Click the **inbox icon** from your Kajabi Dashboard.
2. Select **View all messages.**
## Channels that connect automatically
Backstage and Expert Agents need no setup. Once either is in use on your site, its conversations appear in Universal Inbox on their own.
### Backstage client messages
[**Backstage**](../../products/backstage/set-up-a-private-client-backstage) is a private, branded space for each 1:1 client. Messages a client sends there arrive as their own channel in Universal Inbox, so client conversations sit beside your social ones.
### Expert Agents conversations
[**Expert Agents**](../../products/products-overview/expert-agents-overview) are AI chat experiences that answer questions for members and site visitors. Their conversations appear in Universal Inbox, so you can step in when someone needs a person instead.
## Create a Contact from a conversation
Turning a conversation into a Contact lets you tag that person, keep notes on them, and reach them through the rest of your Kajabi marketing.
1. Open Universal Inbox, then select the conversation with the person you want to add.
2. Click the **(i) information** **icon** on the right.
3. Click **+Add Details.**
4. Add the email address for that Contact.
5. (Optional) Add any relevant Tags or notes.
6. Click **Save.**
## Disconnect an account
1. Click **Settings** > **Integrations & Webhooks** from your Kajabi Dashboard.
2. In the **Social media** section, press **Disconnect** for the integration you want to remove.
## FAQs
### Is there a limit on how many conversations Universal Inbox holds?
No. There is currently no limit.
### What is the largest file a customer can send?
The maximum file size is 8 MB for images, due to Meta restrictions, and 25 MB for all other file types after encoding.
### Which Kajabi plan includes Universal Inbox?
Universal Inbox is available on any plan. Sending automated DMs with [Comment-to-DM](../../marketing/comment-to-dm/comment-to-dm) requires a Growth or Pro plan.
**Note:** If your account is on a **legacy plan** (for example, Growth Legacy), Universal Inbox's social features — connecting an Instagram or Facebook account — are not included, even though Universal Inbox itself appears in your dashboard. Connecting social accounts on a legacy plan requires switching to the current version of your plan. See [Manage subscription](../../account-settings/billing/manage-your-subscription) to compare your legacy plan against the current plan before switching, since this move can't be undone.
### Where do Comment-to-DM messages appear?
In the Instagram or Facebook channel for the account that sent them, in the same conversation list as your other messages from that account.
# Add Google Tag Manager to a site
Source: https://help.kajabi.com/articles/analytics/add-google-tag-manager-to-your-site
Monitor site performance, conversion rates, and more by adding Google Tag Manager code to your site.
**Kajabi Analytics** offers essential data to help you run your online business. However, you can deepen your insight into your site performance, conversion rates, and more by adding Google Tag Manager code to your site.
**Warning:**
Introducing custom code to your site can open you up to vulnerabilities and potential malware attacks. We recommend using vulnerability tools like [VirusTotal](https://www.virustotal.com/gui/home/url) or [Snyk](https://snyk.io/) to scan any custom code that you intend to use and apply certain [best practices](/articles/website/domains/code-based-customizations) to help reduce potential impact.
## Google Tag Manager (GTM)
Google Tag Manager is a tracking tag management solution offered by Google that simplifies tracking tag implementation for marketers, analysts, and developers.
Google Tags are typically used to track web page activity alongside Google Analytics to gain a better understanding of your site's performance and user activity.
When you create a Google Tag Manager account, you'll be provided with two snippets of code unique to your site: one to place in the Head section of your site code, and a second to place in the Body section. In this guide, we'll walk through where to paste each code snippet.
[Learn more about Google Tag Manager.](https://marketingplatform.google.com/about/tag-manager/)
Kajabi also helps you track data with Google Analytics via a Google Analytics integration built into your Site Settings. Learn to [connect Google Analytics](/articles/api-integrations/analytics-integrations/connect-google-analytics-with-kajabi) for more details.
## Add GTM code to your Site Settings
Learn to add Google Tag Manager (GTM) code to your Kajabi site.
### Create a Google Tag Manager account
First, [create a Google Tag Manager account.](https://marketingplatform.google.com/about/tag-manager/)
### Copy the GTM code
After creating a Google Tag Manager account, you are given a unique code to install GTM onto your site.
**Warning:**
The sample code used as an example in this tutorial will not work for your site. You must copy and paste the unique code for your own site out of your Google Tag Manager account. This code will be provided to you when you create your account in Step 1.
Copy the first snippet of code provided in your GTM account (not the sample code shown below):
### Paste the GTM code into page scripts
Navigate to your Kajabi account to paste the GTM code snippet in your site Page Scripts.
1. Open the **Settings** tab from your Dashboard
2. Click **Site Details**
3. Navigate to **Page Scripts**
4. Paste your GTM code into your **Header Page Scripts**
5. Click **Save** to keep your changes
## Add GTM code to individual pages
Learn to add your Google Tag Manager (GTM) code to specific pages on your site built with the Encore Template.
**Note:**
Encore is the current default page template for Kajabi Pages.
With the Encore Template you get access to Kajabi's latest, highly customizable page editing features. [Learn more about building your page with Kajabi Pages.](/articles/website/pages/pages-explained)
**Note:**
Your Google Tag Manager (GTM) code can be added to specific pages without access to the Code Editor if your page is built with the Encore Template. Access to the code editor is required if your page is built with the legacy template, Premier. [Learn to add your GTM code to a page built with Premier.](#add-gtm-code-to-a-premier-legacy-page)
### Copy the second GTM code snippet
After adding the first snippet of your GTM code to your page scripts as outlined above, return to Google Tag Manager and copy the second snippet of code provided (note: don't use the sample code shown below, use your own unique site code from GTM):
### Paste the second GTM code snippet
Navigate back to your Kajabi account to paste the second GTM code snippet to your page:
1. Open the [page editor](/articles/website/pages/how-to-get-to-the-page-editor) for your desired page
2. Click **+ Add Section** in the left sidebar editor
3. Scroll down to the end of the list and select **Custom Code**, then click **Add**
4. Then, click to open the **Custom Code** block in the left sidebar editor
5. Paste your second code snippet into the **Code** field
6. Click **Save** to keep and apply your changes
## Add GTM code to a Premier legacy page
Learn to add your Google Tag Manager (GTM) code to site pages built with the legacy template, [Premier.](/articles/website/pages/how-to-create-a-new-page-with-premier)
**Note:**
Adding your Google Tag Manager code to a page built with the [Premier template](/articles/website/pages/how-to-create-a-new-page-with-premier) requires access to the [Code Editor](/articles/website/pages/how-to-access-the-code-editor) only available with the Pro Plan. [Learn more about Kajabi's pricing plans](https://kajabi.com/pricing).
### Create a Google Tag Manager account
First, [create a Google Tag Manager Account.](https://marketingplatform.google.com/about/tag-manager/)
### Copy and paste the first GTM code snippet
After creating a Google Tag Manager account, you're given a unique code to install GTM onto your site.
**Warning:**
The sample code used as an example in this tutorial will not work for your site. You must copy and paste the unique code for your own site out of your Google Tag Manager account. This code will be provided to you when you create your account in Step 1.
Copy the first snippet of code provided in your GTM account (not the sample code shown below):
Navigate to your Kajabi account to paste the first GTM code snippet into your page's Code Editor:
1. [Open the Code Editor](/articles/website/pages/how-to-access-the-code-editor) for your page
2. Open the **Templates** folder
3. Select the **index.liquid** file
4. Locate the opening `` tag
5. Paste the first snippet of code on the line below the opening `` tag
### Copy and paste the second GTM code snippet
After copying and pasting the first snippet of your GTM Code, return to Google Tag Manager and copy the second snippet of code provided (note: don't use the sample code shown below, use your own unique site code from GTM):
Then, navigate back to your Kajabi account to paste the second GTM code snippet into your page's Code Editor:
1. [Open the Code Editor](/articles/website/pages/how-to-access-the-code-editor) for your page
2. Open the **Templates** folder
3. Select the **index.liquid** file
4. Locate the opening `` tag
5. Paste the second snippet of code on the line below the opening `` tag
6. Click **Save** to keep your changes
### Limitations with certain system pages
Google Tag Manager is added to your Kajabi site through the site-level header scripts. Most pages and templates load this script automatically. However, some system-level pages such as the Account Creation page, do not load site-level header scripts. Because of this, GTM will not run on these pages, and any GTM-based tags or triggers will not fire.
If you need reliable purchase tracking across all checkout paths, Kajabi recommends using:
* The native Google Analytics integration
* The native Meta Pixel integration
Learn more:
* [How to Connect Google Analytics with Kajabi](/articles/api-integrations/analytics-integrations/connect-google-analytics-with-kajabi)
* [Meta Pixel with Kajabi](/articles/api-integrations/analytics-integrations/meta-pixel-with-kajabi)
# Analytics benchmarking
Source: https://help.kajabi.com/articles/analytics/analytics-benchmarking
Compare your performance against thousands of successful Kajabi Heroes with Benchmarking.
**Benchmarking** lets you compare your performance against anonymized, aggregated data from creators across all industries. Use the **Add comparison** dropdown in supported reports to see how your metrics measure up.
## Benchmarking industries
**Benchmarks** are based on performance of active revenue-earning Kajabi Heroes within one of the following industries:
* Education, Learning & Training
* Coaching, Consulting & Mentoring
* Health, Wellness & Fitness
* Personal Development & Self-Help
* Finance, Accounting & Investment
* Creative, Media, Entertainment & Gaming
* Marketing, Advertising & Communications
* Religion, Spirituality & Esoteric
* Retail, E-Commerce & Consumer Goods
* Construction, Home & Real Estate
* Sports & Recreation
* People, Workforce & Relationships
* Legal, Compliance & Government
* Food, Beverage & Hospitality
* Technology, Data & IT
* Agriculture, Animals & Environment
* Transportation & Logistics
## Benchmarking definitions
**Benchmarking** compares your performance to aggregated data from Kajabi Heroes within the selected industry segment. It provides several key values to help you understand how you stack up:
* **Your Site Average**: The mean (average) value for your site
* **25th Percentile**: Represents the lower quartile of the industry
* **Median**: The midpoint, or 50th percentile, for your selected industry
* **75th Percentile**: Represents the upper quartile of the industry
## Benchmarking supported reports
* [Gross Revenue Over Time](/articles/analytics/report-gross-revenue)
* [Offer Purchases Over Time](/articles/analytics/report-offer-purchases-over-time)
* [Refunds Over Time](/articles/analytics/report-refunds)
* [Free Purchases Over Time](/articles/analytics/report-free-offers-over-time)
# Analytics overview
Source: https://help.kajabi.com/articles/analytics/analytics-overview
Customize your dashboard to highlight key business metrics and access detailed reports.
The Analytics Overview report provides a customizable dashboard that highlights your key business metrics. It gives you a high-level snapshot of performance and serves as the starting point for accessing detailed reports and in-depth views.
## Customize your dashboard
You can tailor the analytics dashboard to display the data that matters most to your business.
* **Customize view**: Click *Customize view* and then *Add* to choose from the available widgets to add them to your dashboard
* **Reorganize widgets**: Drag and drop widgets to arrange them in your preferred order
* **Remove widgets**: Select the X in the corner of any widget to remove it
* **Adjust filters**: Use the filters at the top of the dashboard to change the time range, comparison period, or currency. Some widgets do not use the date filter and will display a note in the top corner indicating their relevant time frame
## Widgets
### Payments
**[Gross Revenue](/articles/analytics/report-gross-revenue)**
Displays the total gross revenue generated over time, including all paid purchases. Does not account for refunds.
**[Refunds](/articles/analytics/report-refunds)**
Displays the total value of refunds issued over time, including full and partial refunds for paid purchases.
**[Top Offers](/articles/analytics/report-payments-by-offer)**
Displays gross revenue and payment counts by offer over a selected time frame.
**[Gross Revenue by Payment Method](/articles/analytics/report-payments-by-payment-method)**
Displays the total gross revenue generated by payment method over time, including all paid purchases. Does not account for refunds.
**[Gross Revenue by Pricing Type](/articles/analytics/report-payments-by-pricing-type)**
Shows the breakdown of payments by pricing type, including one-time payments, subscriptions, payment plans, free, and pay what you want.
### Contacts
**[New Contacts](/articles/analytics/report-new-contacts-over-time)**
Displays the number of new contacts added over a selected time frame.
**[Top Customers](/articles/analytics/report-top-customers)**
Displays top customers by total spend, including full and partial refunds for paid purchases.
**[Opt-ins](/articles/analytics/report-opt-ins)**
Displays the number of form submissions and landing page signups over a selected time frame.
**[Contacts by Segment](/articles/marketing/email-campaigns/best-practices-for-growing-and-maintaining-your-contact-lists)**
Displays the total number of contacts broken down by customer segment.
### Subscriptions
**[New Subscriptions](/articles/analytics/report-new-subscriptions-over-time)**
Displays new subscription counts and gross revenue over time, including those with trials.
**[MRR from Subscriptions](/articles/analytics/report-monthly-recurring-revenue-from-subscriptions)**
Displays monthly recurring revenue generated by active subscriptions.
**[ARPU from Subscriptions](/articles/analytics/report-average-subscription-revenue-per-user-over-time)**
Displays average revenue per user for subscriptions.
**[Subscription Status](/articles/analytics/report-subscription-status-by-offer)**
Displays the status of all current subscriptions by offer. Each status count can be clicked to open the subscription page with the filter already applied.
**[Subscription Retention](/articles/analytics/report-subscription-payment-retention-over-time)**
Displays the percentage of customers who continue making payments after each billing cycle.
**[Canceled Subscriptions](/articles/analytics/report-canceled-subscriptions-over-time)**
Displays the number of subscriptions that have been canceled within the selected time frame.
**[Churn Rate from Subscriptions](/articles/analytics/report-churn-rate-of-subscriptions-over-time)**
Displays the percentage of subscriptions canceled relative to the starting base in the selected period.
### Payment plans
**[New Payment Plans](/articles/analytics/report-new-payment-plans-over-time)**
Displays new payment plan counts and gross revenue over time, including those with trials.
**[Payment Plan Status](/articles/analytics/report-payment-plan-status-by-offer)**
Displays the status of all current payment plans. Each status count can be clicked to open the subscription page with the filter already applied.
**[Canceled Payment Plans](/articles/analytics/report-canceled-payment-plans-over-time)**
Displays the total number of canceled payment plans over time.
### Emails
**[Unsubscribed Contacts](/articles/contacts/manage-your-contacts/contact-preview-overview)**
Displays the total unsubscribe count from marketing emails. This data includes all historical records and does not adjust according to the selected time range.
For the full list of reports, refer to [Analytics Reports](/articles/analytics/analytics-reports).
# View Analytics reports
Source: https://help.kajabi.com/articles/analytics/analytics-reports
Track revenue, subscriptions, offers, customers, and more with Analytics reports.
To access Analytics reports, navigate to **Analytics** > **Reports** in the left navigation of your dashboard.
The following reports are available. Click any report to view its dedicated article for definitions, data tables, and export details:
| Report | Description |
| --------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| **[Gross Revenue](/articles/analytics/report-gross-revenue)** | Displays the total gross revenue generated over time, including all paid purchases. Does not account for refunds. |
| **[Refunds](/articles/analytics/report-refunds)** | Shows the total value of refunds issued over time, including full and partial refunds for paid purchases. |
| **[Payments by Payment Method](/articles/analytics/report-payments-by-payment-method)** | Displays the breakdown of payments by payment method, showing how customers paid for their purchases (e.g. credit card, ApplePay, etc.). |
| **[Payments by Pricing Type](/articles/analytics/report-payments-by-pricing-type)** | Shows the breakdown of payments by pricing type, including one-time payments, subscriptions, payment plans, free, and pay what you want. |
| **[Free Offers Over Time](/articles/analytics/report-free-offers-over-time)** | Displays the total number of free offers purchased over time. |
# Track individual learner progress
Source: https://help.kajabi.com/articles/analytics/can-i-track-individual-learner-progress
Track how far customers are in your course, assessment completion, and video watch progress.
Yes, you can track individual learner progress to see how far they are in your course, if they have completed your assessments or quizzes, and if they have watched the videos in your courses.
Check out the following articles to learn more:
* [Track customer progress in a Product](/articles/analytics/report-product-progress)
* [Segment, tag, or track customers who have watched a portion of a video](/articles/products/courses/how-to-segment-tag-or-track-customers-who-have-watched-a-portion-of-a-video)
# Trace individual learning paths
Source: https://help.kajabi.com/articles/analytics/can-we-trace-individual-learning-paths-for-each-customer-with-kajabi
Trace and track individual learning paths for customers.
Yes, you can trace individual learning paths for your customers.
[Learn to track your customer's progress.](/articles/analytics/report-product-progress)
# View audio stats
Source: https://help.kajabi.com/articles/analytics/how-to-view-audio-stats
Measure how your audio performs on Blog Posts and Course Lessons.
Measure **audio performance** on Blog Posts and Course Lessons by reviewing audio stats.
## Access audio stats in a Course Lesson
Measure the performance of audio assets uploaded to your Course(s) to gain a better understanding of your customers and their engagement with your audio content.
### View stats for an audio asset in a Course Lesson
1. Open the **Products** tab from the Dashboard
2. Click into your Course and select the **Lesson** with your uploaded audio asset
3. Open the **Audio Actions** dropdown
4. Select **Audio Stats**
## Access audio stats in a Blog Post
Measure the performance of your audio content in your Blog Post(s) to gain a better understanding of your blog visitors and their engagement with your audio content.
### View stats for an audio asset in a Blog Post
1. Open the **Website** tab from the Dashboard
2. Then, click the **Blog** tab
3. Select the **Blog Post** with your uploaded audio asset
4. Click **Audio Actions** in the media card
5. Then, select **Audio Stats**
## Audio stats definitions
After opening your Audio Stats, you will see three main sections: summary stats, the engagement graph, and information for individual sessions.
These three sections can help you better understand how your visitors engage with your audio.
The data can be used to improve your audio content, how your content is displayed on the page, and the page context surrounding the audio in order to boost your play rate and engagement.
[Learn more with the Media Stats Overview](/articles/analytics/media-stats-overview)
# View analytics from a specific date range
Source: https://help.kajabi.com/articles/analytics/how-to-view-sales-and-other-analytics-from-a-specific-date-range
Track analytics daily, weekly, monthly, annually, or for any custom date range.
Tracking your analytics based on a **specific date range** allows you to discover patterns and examine critical statistics daily, weekly, monthly, annually, or for any desired range in between.
## Create a custom date range to track analytics
1. Open the **Analytics** tab from your Dashboard
2. Then, select the type of Analytics you'd like to view (i.e. net revenue, subscription metrics, opt-ins, page views, product progress, offers sold, affiliates)
3. Select the **date range dropdown** at the top right and highlight the date range you'd like to view
4. Click **Apply** and watch the graphs and tables below change to match your selected dates
**Note:**
The local date, time, and timezone of a user's computer and browser will affect how the Analytic Reports display for that specific user.
# View video stats
Source: https://help.kajabi.com/articles/analytics/how-to-view-video-stats
Track plays, play rate, and engagement for a video from the Media Library, or jump to its stats from a Page, Funnel page, or Course lesson.
**Video stats** show what people actually did with a video you uploaded to Kajabi — how many pressed play, how far they watched, and where they dropped off.
Your [Media Library ](/articles/media-library/media-library-overview)is the home for this data. Every video you upload lives there, and its stats cover every place the video is embedded, so you can measure one video across your whole site in a single view.
## View video stats using the Media Library
1. From the Dashboard, click **Media Library**.
2. Click a video **Title.**
3. On the **Analytics** card, choose the stats you want to see using three filters. The filters read as a sentence — a metric across a location in a time span, i.e. ***Total plays*** across ***All locations*** in ***Last 30 days***.
* **Metric** — Total plays, Unique plays, Unique viewers, Play rate, Engagement rate, or Hours watched
* **Location** — All locations, or a single Page or lesson the video is embedded on
* **Time span** — Last 7 days, Last 30 days, or Last 90 days
The number and the chart below the filters update with each change.
## View historical insights
Click **View historical insights** within the Analytics chart to open a detailed window covering the life of the video:
* **Summary stats** — **Average Engagement**, **Total plays**, and **Play rate**, each expandable for the definition and the calculation behind it
* **Engagement graph** — an interactive preview of the video; hover across it to find the exact second viewers lost interest
* **Individual sessions** — one entry per viewing session with location, device, and a heat map of what that viewer watched
Click **Load More** at the bottom of the session list to page back through older sessions.
[Learn more with the Media Stats overview](/articles/analytics/media-stats-overview).
## Reach video stats from a Page or lesson
You can also reach video stats from an individual Website Page, Landing Page, or Funnel page, as well as within a Course lesson.
#### To view stats for a video on a Website Page or Landing Page:
1. From the Dashboard, go to **Website** > **Website Pages** or **Landing Pages**.
2. Open the page containing your video, and click **Customize** to open the [page editor](/articles/website/pages/how-to-get-to-the-page-editor).
3. In the sidebar, click the **section**, then click the **block** that contains your video.
4. Click **Video actions** beneath the video preview.
5. Select **View in Media Library**.
6. Filter stats on the **Analytics** card.
#### To view stats for a video on a Funnel page:
1. From the Dashboard, go to **Marketing** > **Funnels**.
2. Click the **Funnel**, then select the page containing the video.
3. If the page is a Landing Page, in the sidebar, click the **section**, then click the **block** that contains your video. If the page is a Checkout Page, you must first click **Edit checkout**, then the section and block.
4. Click **Video actions** beneath the video preview.
5. Select **View in Media Library**.
6. Filter stats on the **Analytics** card.
#### To view stats for a video in a lesson:
1. From the Dashboard, go to **Products** > **Courses**.
2. Click a Course **Title** and select the lesson containing the video.
3. Click **Video actions** beneath the video.
4. Select **View in Media Library**.
5. Filter stats on the **Analytics** card.
## What Video stats shows
**Video stats** opens in three parts:
* **Summary stats** — **Average Engagement**, **Total plays**, and **Play rate**, each expandable for the definition and the calculation behind it
* **Engagement graph** — An interactive preview of the video; hover across it to find the exact second viewers lost interest
* **Individual sessions** — One entry per viewing session with location, device, and a heat map of what that viewer watched
Click **Load More** at the bottom of the session list to see older sessions.
[Learn more with the Media Stats overview](/articles/analytics/media-stats-overview).
## FAQs
### Why does my Video actions menu show 'Video stats' instead of View in Media Library?
That is the standard behavior for any video stored in your Media Library. **Video stats** indicates the older stats window, and only appears for videos that were uploaded before the Media Library existed.
### Where do I find stats for an entire Funnel instead of one video?
Open the Funnel and click the **View Stats** button at the top of the page for conversion rate, revenue, page views, and Email Sequence performance. See [View page and email stats in Funnels](/articles/marketing/funnels/how-to-view-page-and-email-stats-in-funnels).
### Can I see the same stats for audio?
Yes. Audio files use an **Audio actions** menu with an **Audio stats** option. See [View audio stats](/articles/analytics/how-to-view-audio-stats).
# View the Email Click Report
Source: https://help.kajabi.com/articles/analytics/how-to-view-your-email-click-report
Access the Email Click Report to see which links are being clicked.
Access and review the **Email Click Report** to understand which links drive engagement in your email campaigns.
## Email Click Report
The Email Click Report will give you insight into which links are being clicked in your email campaigns.
Every Email Broadcast or Email Sequence sent after February 16th, 2022 will include a Click Report, if there are links in your campaign that can be clicked.
With the Email Click Report you can compare your links to see which links are getting more clicks and which recipients are clicking on your links.
## View the Email Click Report
### Access the Email Click Report for an Email Broadcast
1. Open the **Marketing** tab from your Dashboard
2. Select the Email Broadcast you wish to view
3. Locate the **Clicked** tile
4. Select **View click report**
### Access the Email Click Report for an Email Sequence
1. Open the **Marketing** tab from your Dashboard
2. Select the Email Sequence containing the email you wish to view
3. Click the **Report** tab
4. Then, click the **Report icon** to the right of the individual email
5. Locate the **Clicked** tile
6. Select **View click report**
### The Email Click Report
Within your Email Click Report, you can:
* View the Links clicked
* View the Total Number of Clicks
* Access the Link Report
## View the Email Link Report
You can view your Email Link Report by selecting the **View Recipients** link in the Email Click Report. The Email Link Report displays the name and email of each contact who viewed a link, the date on which they clicked the link, and the number of clicks.
### Access the Email Link Report
1. First, open your Email Click Report as directed above
2. Then, click **View Recipients** next to the Link you wish to view
**Note:**
The video example below opens the Email Click Report for an Email Broadcast.
Within your Link Report, you can also perform bulk actions.
Available Bulk Actions include:
* Add a [Tag](/articles/contacts/manage-your-contacts/tags-overview)
* Subscribe to an [Email Sequence](/articles/marketing/email-campaigns/email-campaigns-overview)
# Insights overview
Source: https://help.kajabi.com/articles/analytics/insights-overview
Understand your contacts and their engagement with your marketing to improve outreach.
The **Insights** tab gives you a clear view of your contact engagement — who your contacts are, how they interact with your marketing, and where to focus your efforts.
## Insights tab
With the Insights tab, you can gain a better understanding of your contacts and their engagement with your marketing materials to help you know what is working well and what needs improvement.
### Insights Dashboard
## Use Insights
Use the Insights tab to analyze and assess your email marketing best practices and improve your marketing materials based on your unique Insights.
Your Insights tab will filter by your Contacts, Customers, Subscribed, Unsubscribed, and by Subscriber Engagement.
### View Insights
1. Open the **Contacts** tab from your Dashboard
2. Click **Insights**
3. Click into each card to view a filtered list specific to the Insight group
## Insights
Your Insights tab displays Insight Widgets containing aggregated data for each group.
Within each widget, you can view the filtered list to apply [bulk actions](/articles/contacts/manage-your-contacts/perform-bulk-actions-in-the-contacts-tab) to each particular group.
### Contacts
A contact is a person whose information you've saved to your Contacts tab. They can be added to your list by manual import, form, assessment, or Offer purchase.
* **Total Contacts** is the overall number of people who have ever been added to your contacts
* **New Contacts** is the number of people that have been added in the past 30 days
### Subscribed
Subscribed Contacts are subscribed to [marketing emails](/articles/marketing/email-campaigns/what-are-marketing-and-transactional-emails).
* **Total Subscribers**: the number of contacts and customers that are currently subscribed to email marketing
* **New Subscribers**: the number of contacts and customers that subscribed to your email marketing in the last 30 days
### Customers
A customer is a contact that has purchased or been [granted](/articles/sales/offers/how-to-grant-an-offer) an Offer.
* **Total Customers** is the overall number of contacts that have ever purchased or been granted an Offer
* **New Customers** is the number of contacts that purchased an Offer in the past 30 days
* **Customer Activity** is the number of contacts that have logged in to their account in the past 30 days
### Unsubscribed
Contacts or Customers that are unsubscribed from [marketing emails](/articles/marketing/email-campaigns/what-are-marketing-and-transactional-emails).
Total Unsubscribed is the total count of unsubscribed contacts in your list. There are multiple ways a contact becomes unsubscribed:
* **Manually Unsubscribed**: the sender/admin or contact unsubscribed manually in contact's preferences
* **Opted Out**: the contact clicked unsubscribe in the footer of the email they received
* **Bounced**: the contact's email was not deliverable. The system unsubscribes them to protect your email reputation
* **Marked Spam**: the contact marked the email as spam in their inbox
* **Never Subscribed**: the contact has never subscribed to email marketing. This could've been during an import the contact was not marked as subscribed or during a purchase, the customer did not opt-in to receive marketing emails
### Subscriber Engagement
Engaged subscribers are key to successful email marketing. We measure engagement by when subscribers last interacted with your emails. Each subscriber is grouped into one of the following tiers:
* **Healthy**: Interacted in 0-90 days
* **Passive**: Interacted in 91-180 days
* **Unengaged**: Idle for 181-270 days
* **Inactive**: Idle for 270+ days
Segmenting based on engagement is a good strategy to adopt. To maintain a healthier list, consider removing any inactive subscribers from your Contacts.
[Learn best practices for maintaining a healthy mailing list](/articles/marketing/email-campaigns/best-practices-for-growing-and-maintaining-your-contact-lists).
At the bottom of the Subscriber Engagement card is a toggle to give you the option to include an email open event as part of engagement. It is good to keep in mind that there is growing skepticism around using open events due to changes to mail privacy across different mail clients.
# Media Stats overview
Source: https://help.kajabi.com/articles/analytics/media-stats-overview
Review media statistics for videos and audio uploaded to Website Pages, Landing Pages, and Course Lessons.
**Media Stats** track how your audience engages with videos and audio across Website Pages, Landing Pages, and Course lessons. Use these stats to measure play rates, average engagement, and individual viewing sessions.
## View media statistics
Measure the performance of your media content and gain a better understanding of your visitors from their response to your audio and video.
You can add video or audio content to your Website Pages, Landing Pages, Blog Posts, and Course Lessons to engage your audience.
Learn to access your media stats:
* [View video stats](/articles/analytics/how-to-view-video-stats)
* [View audio stats](/articles/analytics/how-to-view-audio-stats)
## Media stats definitions
Your media stats will display in three sections:
* Summary stats
* Engagement graph
* Information for individual sessions
These three sections can help you better understand how your visitors engage with your media.
The data can be used to improve your content, how the content is displayed on the page, and the page context surrounding the media in order to boost your play rate and engagement.
**Media stats card:**
### Summary Stats
Located in the top right section of your Media Stats, your Summary Stats provide a high-level view of how your media has performed to-date:
#### Average Engagement
The Average Engagement is displayed as a percentage to provide insight into how your visitors engage with your media.
The percentage is calculated as the time spent engaging with your media (calculated in hours) divided by the product of the total number of plays and the media length.
```
Average Engagement = Engagement Time / (Total Plays x Media Length)
```
Click **View Details** to see how your Average Engagement was calculated.
#### Total Plays
Total Plays displays the total number of times a visitor clicked "play" to engage with your video.
This number is calculated each time a visitor plays your media content, not by unique views. Which means if a single visitor engages with your media multiple times, your Total Plays will include each time the visitor played your media.
Click **View Details** to compare the amount of time after uploading your media against the number of Total Plays.
#### Play Rate
The Play Rate is the percentage of time someone who saw the page containing your embedded media spent playing the media.
This metric is a great way to measure whether your video is in the best possible context:
* Media placement on the page
* Use of a captivating thumbnail image
* Customized player accent color to match your brand
* Surrounding text to encourage your page visitors to click play
Learn to [customize your Course Lesson](/articles/products/courses/how-to-customize-your-course-product-with-premier) in order to optimize your media.
### Engagement Graph
To the right of your summary stats, you'll see a preview of your media file.
This preview is an interactive engagement graph which allows you to see how your viewers are engaging with your content:
Hover over the graph with your cursor (from left to right) to view the specific frame and overall engagement at that moment with your content.
In addition to viewing second-by-second data, the overall view can provide insight into the points at which your viewers lost interest or stopped paying attention and disengaged from your content.
Understanding this data empowers you to create content that best fits your audience to boost engagement.
### Individual Sessions
Directly below your summary stats and engagement graph, you'll find a list of individual sessions with a heat map displaying the exact moment an individual stopped playing your media:
Each session contains viewer information, contextual information (when and where the media was viewed), and a timeline representing how the specific viewer interacted with your content.
At the end of each session is the total percentage of media the viewer played.
The dropdown arrow next to the viewer's location allows you to view more detail about your visitor:
* Type of device used to play your media
* Viewer IP address
* Exact page URL the visitor used to play your media
This information can help you understand how certain people engage with your media content.
For example, this data can provide insight into which topics may be more interesting to certain segments of your contacts, or help you gain a better understanding of when your most engaged visitors are interacting with your media.
# Report: Revenue Recovered from Abandoned Checkout Emails
Source: https://help.kajabi.com/articles/analytics/report-abandoned-checkout
The Revenue Recovered from Abandoned Checkout Emails report shows how your abandoned checkout emails are performing over time. This report helps you understand how many checkouts you're recovering, how much revenue those recoveries are generating, and how your audience is engaging with your follow-up emails.
This report is most useful for:
* Tracking how many abandoned checkouts are being recovered through email follow-ups
* Monitoring email engagement (opens, clicks) for your abandoned checkout emails
* Understanding the revenue impact of your abandoned checkout email settings
## **Data Presented in this Report**
## **Data table**
The data table includes the following columns:
* **Date:** The time period for the row of data, based on your selected granularity (day, week, or month).
* **Sent:** The total number of abandoned checkout emails sent during the period.
* **Opened:** The number of sent emails that were opened by the recipient.
* **Clicked:** The number of sent emails where the recipient clicked a link.
* **Recovered:** The number of checkouts that were completed after the recipient received an abandoned checkout email.
* **Recovery Rate:** The percentage of sent emails that resulted in a completed purchase (Recovered ÷ Sent × 100).
* **Revenue Recovered:** The total revenue attributed to recovered checkouts during the period.
## **How to use this report**
You can customize the data displayed in the report using several controls.
* **Time range:** Filter results by time period (e.g., last 30 days, custom date range).
* **Interval:** View data broken down by day, week, or month.
* **Offer selection:** Filter results to a specific offer or view data across all offers.
* **Add comparison:** Compare performance across two time periods side by side.
## **Export information**
When you export the Revenue Recovered from Abandoned Checkout Emails report, the resulting file will include the same columns and reflect any filters you have applied. This ensures the data in the export matches what is displayed in the report:
* Date
* Sent
* Opened
* Clicked
* Recovered
* Recovery Rate
* Revenue Recovered
* Currency
## **FAQs**
### **Why don’t I see any metrics in the report?**
There is a delay between when emails get sent to when the metrics are updated in this report. If you don’t see your metrics immediately, come back in a few hours and they should be available.
### **When is a checkout considered "recovered"?**
A checkout is counted as recovered when a recipient of an abandoned checkout email completes a purchase for the same offer they previously abandoned within 14 days.
### **What counts as a sent email?**
Each abandoned checkout event triggers one email send. If the same person abandons the same offer's checkout multiple times, each abandonment is counted as a separate send.
### **Why might my open or click numbers look low?**
Open and click tracking can be affected by email clients that block tracking pixels or auto-click links for security scanning. These numbers are best used as directional signals rather than precise counts.
### **Does this report include data from before I enabled abandoned checkout emails?**
No. The report only includes data from sends that occurred while the abandoned checkout email setting was enabled on your offer.
# Report: Affiliates
Source: https://help.kajabi.com/articles/analytics/report-affiliates
View affiliate stats to see performance, commission earned, and customers referred.
The Affiliates report lets you view affiliate stats to see performance, commission earned, and customers referred. This report helps you identify your top-performing affiliates, monitor conversions, and track payouts.
This report is most useful for:
* Tracking which affiliates are driving sales and referrals
* Reviewing commissions owed and earned
**Note:**
The Affiliates Report is only available with the Growth and Pro Plans. Learn more about our Growth and Pro Plans at [kajabi.com/pricing](https://kajabi.com/pricing). For more information on using the affiliates feature, visit [Affiliate Overview](/articles/sales/affiliates/affiliates-overview).
## Data table
The data table includes the following columns:
* **Rank**: The affiliate's rank based on amount of sales
* **Affiliate Name**: The name or email of the affiliate. Clicking a name reveals all customers they have referred
* **Commission**: The total commission earned by the affiliate during the selected date range
* **Conversions**: The number of successful transactions attributed to the affiliate
* **Total Clicks**: The total number of tracked clicks from the affiliate's links
* **Conversion Rate**: The ratio of conversions to clicks, expressed as a percentage
When you click on an affiliate's name, you'll see additional details for each referred customer:
* Customer Referred
* Customer Email
* Commission
* Offer Purchased
* Purchase Date
## How to use this report
You can customize the data displayed in the report using several controls.
* **Time range**: Filter results by time period (e.g., last 7 days, last 30 days, custom date range)
* **Affiliate Name or Email**: Search and filter results to focus on a specific affiliate
## Export information
When you export the Affiliates report, the resulting file will include the same columns and reflect any filters you have applied. This ensures the data in the export matches what is displayed in the report:
* Name
* Email
* Revenue
* Commission
* Conversion
* Conversion Rate
* Total Clicks
* Last Sale
* Override Percentage
* PayPal Email
## FAQs
### How is conversion rate calculated?
Conversion rate = (Conversions ÷ Total Clicks) × 100.
### Why do some affiliates show \$0 commission even with conversions?
This can occur if the transaction was ultimately free.
### Can I track performance across different offers for the same affiliate?
Yes. Clicking on an affiliate's name will show the specific offers purchased by their referrals.
### How does the "Override Percentage" field affect commission?
The override percentage adjusts the affiliate's standard commission rate set manually by an admin.
### How can I export the PayPal Mass Payment report?
To export this report to manually pay your affiliates, navigate to **Affiliates** -> **Transactions** -> **Pay now** -> **View itemized transactions**. Learn more about Manual Payouts.
# Report: Average subscription revenue per user over time
Source: https://help.kajabi.com/articles/analytics/report-average-subscription-revenue-per-user-over-time
Track average revenue per user (ARPU) from subscriptions to identify customer value trends.
Displays the average revenue per user (ARPU) from subscriptions during a selected date range. This metric represents the monthly recurring revenue (MRR) per unique customer who has at least one paying subscription. Calculated by taking the total net MRR (after coupon discounts) and dividing it by the count of unique active subscription customers.
This metric helps track how much recurring revenue each customer generates on average and identify customer value trends over time. The report includes only paying subscriptions that have started before the end of each time period and are not canceled before that period. Free trials without setup fees are excluded from both MRR and customer count calculations until the first successful payment occurs. Coupon discounts are applied based on their duration and type. The report excludes canceled subscriptions and normalizes all subscription intervals into monthly revenue amounts.
This report is most useful for:
* Monitoring how much revenue your subscribers generate on average
* Comparing ARPU across different time periods to identify growth or decline
* Evaluating the impact of pricing changes, discounts, or plan adjustments
## Data presented
### Visual charts
* **Average subscription revenue per user (line chart)**: Displays ARPU trends across the selected time frame
### Data table
The data table provides a daily breakdown of ARPU and supporting metrics:
* **Date**: The calendar date of the data
* **Total customers**: The total number of active subscribers for that date
* **Net MRR**: The total subscription revenue earned for that date (after refunds or adjustments)
* **Average subscription revenue per user (ARPU)**: The net revenue divided by total customers
## How to use the report
You can customize the data displayed in the report using several controls.
### Controls
* **Time range**: Filter ARPU data by period (e.g., last 7 days, last 30 days, custom date range)
* **Interval**: Choose how the data is grouped within the selected time range (Day, Week, Month, Year)
* **Offer selection**: Choose whether to view ARPU across all offers or focus on a specific offer
* **Currency selector**: View ARPU in your preferred currency
* **Add comparison**: Compare current ARPU to past performance
## Export information
When you export the **Average subscription revenue per user over time** report, the resulting file will include the same columns and reflect any filters you have applied. This ensures the data in the export matches what is displayed in the report:
* Date
* Total customers
* Net revenue
* Average revenue per user
* Currency
# Report: Canceled payment plans over time
Source: https://help.kajabi.com/articles/analytics/report-canceled-payment-plans-over-time
Track payment plan cancellations and identify common cancellation reasons.
The **Canceled payment plans over time** report displays the number of payment plans canceled within a selected time frame. It provides a breakdown of cancellation reasons to help you understand how customers were canceled.
This report is most useful for:
* Tracking payment plan cancellations across time periods
* Identifying which cancellation reasons (e.g., voluntary, delinquent, internal) are most common
## Data presented
### Visual charts
* **Payment plans canceled (stacked bar chart)**: Shows the total number of cancellations over time, broken down by reason (voluntary, internal, delinquent, etc.)
### Data table
The data table provides a monthly breakdown of cancellations by reason:
* **Interval**: The calendar month of cancellations
* **Voluntary**: Cancellations initiated directly by customers choosing to end their payment plan
* **Internal**: Cancellations manually processed by an internal user on behalf of a customer
* **Delinquent**: Cancellations due to failed and overdue payments that were not resolved
* **Automation**: Cancellations triggered by an automated rule you set up in Kajabi
* **Bulk action**: Cancellations applied in bulk by an internal user
* **External**: Cancellations that originated outside Kajabi, such as through a 3rd party payment method or provider
* **API**: Cancellations triggered programmatically via Kajabi's API
## How to use the report
You can customize the data displayed in the report using several controls.
### Controls
* **Time range**: Filter cancellations by period (e.g., last 7 days, last 30 days, last 12 months, custom date range)
* **Interval**: Choose how the data is grouped within the selected time range (Day, Week, Month, Year)
* **Offer selection**: Choose whether to view cancellations across all offers or focus on a specific offer
## Export information
When you export the **Canceled payment plans over time** report, the resulting file will include the same columns and reflect any filters you have applied. This ensures the data in the export matches what is displayed in the report:
* Month
* Voluntary
* Internal cancellation
* Delinquent
* Automation
* Bulk action
* External
* API
* Other
## FAQs
### Why are some cancellation reasons not appearing for my site?
The cancellation reasons shown in this report are limited to the date range you selected. Only events that occurred within that time frame will appear.
### Do pending cancellations show up in this report?
No. This report only includes payment plans that are fully canceled. To see payment plans that are in a pending cancellation state, use the Payment Plan Status by Offer report.
### What is the "Other" cancellation reason in my report?
The "Other" category appears when a cancellation does not match any of the specified reasons. If you would like details for your specific site, please contact [payments.support@kajabi.com](mailto:payments.support@kajabi.com).
# Report: Canceled subscriptions over time
Source: https://help.kajabi.com/articles/analytics/report-canceled-subscriptions-over-time
Track subscription cancellations and identify common cancellation reasons.
The **Canceled subscriptions over time** report displays the number of subscriptions canceled within a selected time frame. It provides a breakdown of cancellation reasons to help you understand how customers were canceled.
This report is most useful for:
* Tracking subscription cancellations across time periods
* Identifying which cancellation reasons (e.g., voluntary, delinquent, internal) are most common
## Data presented
### Visual charts
* **Subscriptions canceled (stacked bar chart)**: Shows the total number of cancellations over time, broken down by reason (voluntary, internal, delinquent, etc.)
### Data table
The data table provides a monthly breakdown of cancellations by reason:
* **Interval**: The calendar month of cancellations
* **Voluntary**: Cancellations initiated directly by customers choosing to end their subscription
* **Internal**: Cancellations manually processed by an internal user on behalf of a customer
* **Delinquent**: Cancellations due to failed and overdue payments that were not resolved
* **Automation**: Cancellations triggered by an automated rule you set up in Kajabi
* **Bulk action**: Cancellations applied in bulk by an internal user
* **External**: Cancellations that originated outside Kajabi, such as through a 3rd party payment method or provider
* **API**: Cancellations triggered programmatically via Kajabi's API
## How to use the report
You can customize the data displayed in the report using several controls.
### Controls
* **Time range**: Filter cancellations by period (e.g., last 7 days, last 30 days, last 12 months, custom date range)
* **Interval**: Choose how the data is grouped within the selected time range (Day, Week, Month, Year)
* **Offer selection**: Choose whether to view cancellations across all offers or focus on a specific offer
## Export information
When you export the **Canceled subscriptions over time** report, the resulting file will include the same columns and reflect any filters you have applied. This ensures the data in the export matches what is displayed in the report:
* Month
* Voluntary
* Internal cancellation
* Delinquent
* Automation
* Bulk action
* External
* API
* Other
## FAQs
### Why are some cancellation reasons not appearing for my site?
The cancellation reasons shown in this report are limited to the date range you selected. Only events that occurred within that time frame will appear.
### Do pending cancellations show up in this report?
No. This report only includes subscriptions that are fully canceled. To see subscriptions that are in a pending cancellation state, use the Subscription Status by Offer report.
### What is the "Other" cancellation reason in my report?
The "Other" category appears when a cancellation does not match any of the specified reasons. If you would like details for your specific site, please contact [payments.support@kajabi.com](mailto:payments.support@kajabi.com).
# Report: Cart orders over time
Source: https://help.kajabi.com/articles/analytics/report-cart-orders-over-time
Track cart-based orders, revenue, average order value, and items per order.
The **Cart Orders Over Time** report shows metrics relating to cart orders over a selected timeframe.
This report is most useful for:
* Tracking the volume of cart-based orders over time
* Measuring gross revenue associated with cart orders
* Monitoring average order value and items per order in carts
## Data presented in this report
### Visual charts
* **Cart Orders Over Time**: Displays the number of cart orders and associated revenue by day, week, month, or year
### Data table
* **Date**: The specific time period selected (day, week, month, or year)
* **Quantity**: The number of cart orders placed during that period
* **Gross revenue**: The total gross revenue generated from cart orders
* **Average order value (AOV)**: The average dollar value of cart orders
* **Average items per order**: The average number of items included per cart order
## How to use this report
You can customize the data displayed in the report using several controls.
* **Time range**: Filter payments by period (e.g., last 7 days, last 30 days, custom date range)
* **Interval**: Choose how the data is grouped within the selected time range (Day, Week, Month, Year)
* **Offer selection**: Choose whether to view data for multiple offers or a specific offer
* **Currency selector**: View stats in your preferred currency
* **Comparison**: Compare current results against a past period
## Export information
When you export the **Cart Orders Over Time** report, the resulting file will include the same columns and reflect any filters you have applied. This ensures the data in the export matches what is displayed in the report:
* Interval
* Quantity
* Gross revenue amount
* Gross revenue currency
* Average order value
* Average order value currency
* Average items per order
# Report: Churn rate of subscriptions over time
Source: https://help.kajabi.com/articles/analytics/report-churn-rate-of-subscriptions-over-time
Track the percentage of subscriptions canceled and understand retention trends.
The Churn Rate of Subscriptions Over Time report displays the percentage of subscriptions that were canceled during a selected date range. It helps you track retention and understand how cancellations affect overall growth.
Subscriptions are only counted once they become paying subscriptions. If a subscription has a trial without a setup fee, it will appear in this report as a paying subscription once the trial has ended and the first payment is complete. If a subscription includes both a trial and a setup fee, it is counted as a paying subscription starting from the purchase date.
This report is most useful for:
* **Gross Churn Rate**: measuring the percentage of existing subscriptions that canceled
* **Net Churn Rate**: understanding whether the subscription business grew or shrank when comparing new paying subscriptions to canceled subscriptions
* **Growth Rate**: identifying the pace of adding new paying subscriptions
## Data presented in this report
### Visual charts
* **Churn rate (line chart)**: Displays the gross churn rate percentage across the selected time frame
### Data table
The data table provides a detailed breakdown of subscription activity, including:
* **Interval**: The reporting interval (day, week, month, or year) within the selected date range
* **Period Start**: The number of non-canceled subscriptions at the beginning of the period
* **New**: The number of paying subscriptions that began during the period
* **Canceled**: The number of subscriptions that were canceled during the period. This is based on the date the subscription actually reached canceled status, not the date it was set to pending cancellation
* **Started/Ended**: The number of paying subscriptions that both started and ended within the same period. These are not included in the New or Canceled counts in this report
* **Period End**: The number of non-canceled subscriptions at the end of the period
* **Gross Churn Rate**: The percentage of subscriptions canceled during the period, relative to the starting base. Calculated as Canceled ÷ Period Start
* **Net Churn Rate**: The percentage of cancellations after accounting for new subscriptions. Calculated as (Canceled – New) ÷ Period Start
* **Growth Rate**: The percentage of growth in subscriptions compared to the start of the period. Calculated as New ÷ Period Start
## How to use the report
You can customize the data displayed in the report using several controls.
### Controls
* **Time range**: Filter data by period (e.g., last 7 days, last 30 days, custom date range)
* **Interval**: Choose how the data is grouped within the selected time range (Day, Week, Month, Year)
* **Offer selection**: Choose whether to view churn data across all offers or focus on a specific offer
* **Currency selector**: View stats in your preferred currency
* **Add comparison**: Compare current churn results against a past period
## Export information
When you export the **Churn rate of subscriptions over time** report, the resulting file will include the same columns and reflect any filters you have applied. This ensures the data in the export matches what is displayed in the report:
* Date
* Subscriptions at period start
* New subscriptions
* Canceled subscriptions
* New subscriptions that were cancelled during the period
* Subscriptions at period end
* Gross churn rate
* Net churn rate
* Growth rate
## FAQs
### Why does my net churn rate appear negative?
A negative net churn rate means you added more new subscriptions than were canceled during the period. In other words, growth in new paying subscriptions outpaced the number of cancellations. This is a positive outcome because it shows your subscription base expanded overall, even though some subscriptions may have still churned.
# Report: Free offers over time
Source: https://help.kajabi.com/articles/analytics/report-free-offers-over-time
Track the total number of free offers purchased over time.
The **Free Offers Over Time** report is the total number of free offers purchased over time.
## View the Free Offers Over Time report
To access your Free Offers Over Time report:
1. Open the **Analytics** tab from your Dashboard
2. Click **Free Offers over Time**
### Understand Free Offers Over Time
In this report, you can view the total number of free offers purchased over time and when they were purchased.
**Note:**
[Granted offers](/articles/sales/offers/how-to-grant-an-offer) and [fully discounted purchases](/articles/sales/coupons/how-to-create-a-coupon) are not included in the Free offers over time report.
### Using filters
Using the filter bar on the top of the page, you can alter your entire data set by currency, date, and offer:
## Export the Free Offers Over Time report
Export your free offers overtime report to share, file, and record your free offers.
### Export Free Offers Over Time
1. Open the **Analytics** tab from your Dashboard
2. Click **Free Offers Over Time**
3. Located toward the top of the page, click **Export**
Access your exported report from the downloaded files on your hard drive.
## Exported data
The following data is exported with the Free Offers Over Time report:
* Day
* Quantity
* Number of Customers
**Note:**
Exporting this report will notify the owner of the Kajabi account if the owner has selected to receive notifications data is exported from their account. [Learn to update email notification settings.](/articles/account-settings/notifications/update-email-notifications)
# Report: Gross revenue
Source: https://help.kajabi.com/articles/analytics/report-gross-revenue
Track total gross revenue generated over time including all paid purchases.
**Gross Revenue Over Time** is the total gross revenue generated over time, including all paid purchases. It does not account for refunds.
## View gross revenue over time
To access your gross revenue over time report:
1. Open the **Analytics** tab from your Dashboard
2. Click **Gross Revenue Over Time**
## Understand the Gross Revenue Over Time report
### Line graph
View your gross revenue over time.
Hover over your line graph for more detailed information about your gross revenue:
### Timeframe
Choose the timeframe of the data set you would like to view from the top dropdown. Select from our presets or choose a custom date range:
### Using filters
Using the filter bar on the top of the page, you can alter your entire data set by currency and offer:
## Export the Gross Revenue Over Time report
Export your Gross Revenue to share, file, and record your refunds.
### Export Gross Revenue Over Time
1. Open the **Analytics** tab from your Dashboard
2. Click **Gross Revenue Over Time**
3. Located toward the top of the page, click **Export**
Access your exported report from your downloaded files on your hard drive.
**Note:**
Exporting this report will notify the owner of the Kajabi account if the owner has selected to receive notifications data is exported from their account. [Learn to update email notification settings.](/articles/account-settings/notifications/update-email-notifications)
## Exported data
The following data is exported with the Gross Revenue Over Time report:
* Day
* Quantity
* Amount
* Currency
# Report: Monthly recurring revenue from payment plans
Source: https://help.kajabi.com/articles/analytics/report-monthly-recurring-revenue-from-payment-plans
Track MRR from payment plans to measure recurring revenue growth.
The **Monthly Recurring Revenue (MRR) from Payment Plans** report displays the total recurring revenue normalized into monthly amounts from all paying payment plans during a selected date range. It helps you track payment plan revenue growth and understand your predictable income stream.
The report includes gross MRR (total payment plan revenue) and net MRR (after coupon discounts). Payment plans are included once they have a successful payment, regardless of trial status. Trial payment plans with setup fees are counted immediately upon purchase, while free trials are only included after the first successful payment. The report excludes canceled payment plans and applies coupon discounts based on their duration and type.
This report is most useful for:
* Tracking the growth of recurring revenue over time
* Measuring the stability of your payment plan business
## Data presented
### Visual charts
* **Line chart**: Displays the trend of net MRR over the selected time range
### Data table
* **Interval**: The specific interval period (day, week, month, or year) across the time range selected
* **Gross MRR**: Total monthly recurring revenue before discounts
* **Coupon discounts**: The value of discounts applied to payment plans
* **Net MRR**: Gross MRR minus coupon discounts
## How to use the report
You can customize the data displayed in the report using several controls.
### Controls
* **Time range**: Filter by period (e.g., last 7 days, last 30 days, last 12 months, custom date range)
* **Interval**: Choose how the data is grouped within the selected time range (Day, Week, Month, Year)
* **Offer selection**: Choose whether to view MRR for multiple offers or a specific offer
* **Currency selector**: View in your preferred currency
* **Comparison**: Compare to past periods for trend insights
## Export information
When you export the **Monthly recurring revenue from payment plans** report, the resulting file will include the same columns and reflect any filters you have applied. This ensures the data in the export matches what is displayed in the report:
* Date
* Gross MRR
* Coupon discounts
* Net MRR
* Currency
## FAQs
### What's the difference between Gross MRR and Net MRR?
* Gross MRR is your total monthly recurring revenue before any discounts are applied
* Net MRR subtracts coupon discounts, showing the actual recurring revenue your business earns
# Report: Monthly recurring revenue from subscriptions
Source: https://help.kajabi.com/articles/analytics/report-monthly-recurring-revenue-from-subscriptions
Track MRR from subscriptions to measure recurring revenue growth and stability.
The **Monthly Recurring Revenue (MRR) from Subscriptions** report displays the total recurring revenue normalized into monthly amounts from all paying subscriptions during a selected date range. It helps you track subscription revenue growth and understand your predictable income stream.
The report includes gross MRR (total subscription revenue) and net MRR (after coupon discounts). Subscriptions are included once they have a successful payment, regardless of trial status. Trial subscriptions with setup fees are counted immediately upon purchase, while free trials are only included after the first successful payment. The report excludes canceled subscriptions and applies coupon discounts based on their duration and type.
This report is most useful for:
* Tracking the growth of recurring revenue over time
* Measuring the stability and health of your subscription business
## Data presented
### Visual charts
* **Line chart**: Displays the trend of net MRR over the selected time range
### Data table
* **Interval**: The specific interval period (day, week, month, or year) across the time range selected
* **Gross MRR**: Total monthly recurring revenue before discounts
* **Coupon discounts**: The value of discounts applied to subscriptions
* **Net MRR**: Gross MRR minus coupon discounts
## How to use the report
You can customize the data displayed in the report using several controls.
### Controls
* **Time range**: Filter by period (e.g., last 7 days, last 30 days, last 12 months, custom date range)
* **Interval**: Choose how the data is grouped within the selected time range (Day, Week, Month, Year)
* **Offer selection**: Choose whether to view MRR for multiple offers or a specific offer
* **Currency selector**: View in your preferred currency
* **Comparison**: Compare to past periods for trend insights
## Export information
When you export the **Monthly recurring revenue from subscriptions** report, the resulting file will include the same columns and reflect any filters you have applied. This ensures the data in the export matches what is displayed in the report:
* Date
* Gross MRR
* Coupon discounts
* Net MRR
* Currency
## FAQs
### What's the difference between Gross MRR and Net MRR?
* Gross MRR is your total monthly recurring revenue before any discounts are applied
* Net MRR subtracts coupon discounts, showing the actual recurring revenue your business earns
# Report: Net revenue
Source: https://help.kajabi.com/articles/analytics/report-net-revenue
Track total revenue after refunds and discounts are removed.
Net Revenue is the total amount of money generated by your business each day after refunds and/or discounts have been removed from the total. Learn to view your Net Revenue.
## Net revenue calculation
Net Revenue is a combination of the **Gross Revenue** (**recurring** and **non-recurring** sales) subtracted by your **refunds**.
Gross Revenue (Recurring and Non-recurring) - Refunds = Net Revenue
## View net revenue
### Access the Net Revenue report
1. Open the **Analytics** tab from your Dashboard
2. Click **Net Revenue**
**Note:**
You can also view Net Revenue attributed to your Email Broadcasts, Email Sequences, Event Emails, and individual emails within your Sequences. [Learn more.](/articles/marketing/email-campaigns/email-metrics-overview)
## Understand the net revenue report
### Line graph
View your Gross revenue as well as your refunds, giving you your total **Net Revenue.**
Hover over your Line Graph to view more detailed information about your Gross Revenue, Refunds, Net Revenue, and Purchases.
### Compare offers
Click **Compare Offers** to compare the Net Revenue of your Offers during your specified time frame:
### Timeframe
Choose the timeframe of the data set you would like to view from the top dropdown. Select from our presets or choose a custom date range. Then, choose if you want to view the sales **Daily**, **Weekly**, **Monthly**, or **Annually**:
### Revenue by offer
#### Net Revenue and Top Selling Offers
This donut chart displays the total net revenue and ranks your top 5 Offers by the amount of revenue generated:
#### Refunds and Top Refunded Offers
This donut chart displays your total refunds and ranks the top 5 Offers refunded:
### Summary
The Summary breaks down your Net Revenue in much greater detail by displaying the Payments collected, Revenue made, Refunds given, and Offers purchased by day. Filter the Time Frame displayed with the dropdown menu at the top of the Report:
### Using filters
Using the filter bar on the right of the page, you can alter your entire data set by payment type, currency, and by choosing up to 5 Offers.
Remember to click **Apply** to display your filtered data:
## Export the net revenue report
Export your Net Revenue Report to share, file, and record your net revenue.
Your Net Revenue Report can be exported as "Revenue by Date" or "Offers by Date":
* **Revenue by date**: Displays the cumulative revenue amount by date within your specified date applied before exporting
* **Offers by date**: Displays every Offer sold for each date within your specified date filtered applied exporting
### Export Net Revenue
1. Open the **Analytics** tab from your Dashboard
2. Click **Net Revenue**
3. Located toward the top of the page, click **Export**
4. Select **Revenue By Date** or **Offers by Date**
Access your exported report from your downloaded files on your hard drive.
**Note:**
Exporting this report will notify the owner of the Kajabi account if the owner has selected to receive notifications data is exported from their account. [Learn to update email notification settings](/articles/account-settings/notifications/update-email-notifications).
## Exported data
The following data is exported with the Net Revenue report, depending on if Revenue by Date or Offers by Date is chosen:
### Revenue by Date
* Start Date
* Revenue
* Refunds
* Payment Types
* Currency
### Offer by Date
* Start Date
* Offer Token
* Title
* Price
* Recurring
* Gross Revenue
* Revenue Count
* Refunds
* Refund Count
* Currency
## Net revenue analytics vs. Stripe
Stripe does not take refunds into account.
In addition, the Net Revenue report uses the timezone you selected for your site which can be found in your [Account Details](/articles/account-settings/my-kajabi/change-your-account-details), whereas your Stripe dashboard may be localized to your own timezone.
This means revenue may be reported on a different day than Stripe.
# Report: New contacts over time
Source: https://help.kajabi.com/articles/analytics/report-new-contacts-over-time
Track contact list growth and monitor fluctuations in new contacts.
Displays the number of new contacts added over a selected time frame. Counts reflect the date each contact was first created.
This report is most useful for:
* Tracking contact list growth over time
* Monitoring daily, weekly, or monthly fluctuations in new contacts
* Evaluating the impact of marketing campaigns, promotions, or offers on new sign-ups
## Data presented in this report
### Visual charts
* **Contacts added (line chart)**: Displays the number of new contacts added within the selected time frame
### Data table
The data table provides a detailed breakdown of contact growth, including:
* **Date**: The calendar date when contacts were added
* **New contacts**: The number of new contacts created on that date
* **Total contacts**: The running total number of contacts in your system
## How to use the report
### Controls
* **Interval**: Choose how the data is grouped within the selected time range (Day, Week, Month, Year)
* **Currency selector**: View stats in your preferred currency (if applicable)
* **Comparison**: Use the Add comparison option to compare new contact growth in the current period against a past period, making it easier to evaluate performance trends
# Report: New payment plans over time
Source: https://help.kajabi.com/articles/analytics/report-new-payment-plans-over-time
Track new payment plan counts and gross revenue over time.
Displays new payment plan counts and gross revenue over time, tracking all completed payment plan purchases including those with a trial. Purchase counts are based on the original transaction date, regardless of any trial period. Gross revenue reflects the setup fee amount when applicable, with \$0 recorded for trial-only purchases without a setup fee.
This report is most useful for:
* Comparing periods of growth to identify seasonality, promotional performance, or shifts in customer subscription purchase behavior
## Data presented in this report
### Visual charts
* **Payment plans sold (line chart)**: Shows the total count of new payment plans purchased within the selected time frame
### Data table
The data table below the chart provides a daily breakdown, including:
* **Interval**: The specific interval period (day, week, month, or year) across the time range selected
* **Subscriptions sold**: The number of new payment plans purchased. Purchase counts are based on the original transaction date, regardless of any trial period
* **Gross revenue**: The total gross revenue earned from purchased payment plans. Gross revenue reflects the setup fee amount when applicable, with \$0 recorded for trial-only purchases without a setup fee
## How to use the report
### Controls
* **Time range**: Filter payments by period (e.g., last 7 days, last 30 days, custom date range)
* **Interval**: Choose how the data is grouped within the selected time range (Day, Week, Month, Year)
* **Offer selection**: Choose whether to view data for multiple offers or a specific offer
* **Comparison**: Use the **Add comparison** option to compare current payment plan performance to a past period. This helps identify growth trends or seasonal changes
* **Currency selector**: View stats in your preferred currency
## Export information
When you export the **New Payment Plans over time** report, the resulting file will include the same columns and reflect any filters you have applied. This ensures the data in the export matches what is displayed in the report:
* Date
* Payment plans sold
* Gross revenue
* Currency
# Report: New subscriptions over time
Source: https://help.kajabi.com/articles/analytics/report-new-subscriptions-over-time
Track new subscription counts and gross revenue over time.
Displays new subscription counts and gross revenue over time, tracking all completed subscription purchases including those with a trial. Purchase counts are based on the original transaction date, regardless of any trial period. Gross revenue reflects the setup fee amount when applicable, with \$0 recorded for trial-only purchases without a setup fee.
This report is most useful for:
* Comparing periods of growth to identify seasonality, promotional performance, or shifts in customer subscription purchase behavior
## Data presented in this report
### Visual charts
* **Subscriptions sold (line chart)**: Shows the total count of new subscriptions purchased within the selected time frame
### Data table
The data table below the chart provides a daily breakdown, including:
* **Interval**: The specific interval period (day, week, month, or year) across the time range selected
* **Subscriptions sold**: The number of new subscriptions purchased. Purchase counts are based on the original transaction date, regardless of any trial period
* **Gross revenue**: The total gross revenue earned from purchased subscriptions. Gross revenue reflects the setup fee amount when applicable, with \$0 recorded for trial-only purchases without a setup fee
## How to use the report
### Controls
* **Time range**: Filter payments by period (e.g., last 7 days, last 30 days, custom date range)
* **Interval**: Choose how the data is grouped within the selected time range (Day, Week, Month, Year)
* **Offer selection**: Choose whether to view data for multiple offers or a specific offer
* **Comparison**: Use the **Add comparison** option to compare current subscription performance to a past period. This helps identify growth trends or seasonal changes
* **Currency selector**: View stats in your preferred currency
## Export information
When you export the **New subscriptions over time** report, the resulting file will include the same columns and reflect any filters you have applied. This ensures the data in the export matches what is displayed in the report:
* Date
* Subscriptions sold
* Gross revenue
* Currency
# Report: Offer purchases over time
Source: https://help.kajabi.com/articles/analytics/report-offer-purchases-over-time
Track offer purchase quantities, gross revenue, and first vs returning purchases.
The **Offer Purchases Over Time** report displays offer purchase quantities and gross revenue over time, tracking all completed purchases including free pricing types, 100% discounted purchases, and trial subscriptions. Purchase counts reflect the original transaction date regardless of trial periods, with revenue showing \$0 for trial-only purchases or the setup fee amount when applicable. The report provides breakdowns for 1st versus returning purchases.
This report is most useful for:
* Tracking overall offer purchase activity
* Measuring the revenue impact of first purchases versus returning purchases
* Understanding performance by pricing type
## Data presented in this report
### Visual charts
* **Offer Purchases Over Time (line chart)**: Displays the total quantity and gross revenue of purchases over time
* **Purchase Quantity (donut chart)**: Breaks down purchases by a customer's first purchases versus returning purchases
* **Purchase Gross Revenue (donut chart)**: Breaks down gross revenue by first purchases versus returning purchases
### Data table
* **Interval**: The specific interval period (day, week, month, or year) across the time range selected
* **Gross revenue**: The total gross revenue earned from those purchases at the time of purchase
* **First purchases quantity**: The number of purchases made by new customers
* **Returning purchases quantity**: The number of purchases made by returning customers
* **Total quantity**: The total number of offers purchased
## How to use this report
You can customize the data displayed in the report using several controls.
* **Time range**: Filter payments by period (e.g., last 7 days, last 30 days, custom date range)
* **Interval**: Choose how the data is grouped within the selected time range (Day, Week, Month, Year)
* **Offer selection**: Choose whether to view data for multiple offers or a specific offer
* **First purchases only**: Limit the report to first purchases only
* **Currency selector**: View stats in your preferred currency
* **Comparison**: Compare current results against a past period
## Export information
When you export the **Offer Purchases Over Time** report, the resulting file will include the same columns and reflect any filters you have applied. This ensures the data in the export matches what is displayed in the report:
* Date
* Total quantity
* Gross revenue
* First purchases quantity
* First purchases gross revenue
* Returning purchases quantity
* Returning purchases gross revenue
* Currency
## FAQs
### What does the First Purchases Only filter do?
This filter limits the entire report and export to show only revenue and quantities from first purchases over the specified date range.
### How are First Purchases defined?
First purchases represent purchases made by customers who have not purchased an offer from your site before. Offer grants do not count as purchases.
### What happens if a new customer has purchased multiple offers within the date range?
If a new customer has purchased twice in the date range, their First purchase will be attributed as a "First Purchase", and their subsequent purchases will be attributed to "Returning purchases". This report may classify a single customer in each if they join your site within date range you select.
### Are Free and Trial purchases included in this report?
Yes, purchases that are Free or include a Trial period are classified as a Purchase in this report.
# Report: Offers sold
Source: https://help.kajabi.com/articles/analytics/report-offers-sold
Understand what offers were sold in a given time frame and measure marketing impact.
With the Offers Sold Report, you can understand what offers were sold (or purchased) in a given time frame.
This will help you analyze when offers are performing best and why.
This means you can measure the response to your marketing - such as the impact of an Event on your sales or the volume generated as a result of your social media campaigns. All by identifying the offers purchased around the date of your event or marketing campaigns.
## View the offers sold report
1. Open the **Analytics** tab from your Dashboard
2. Click **View** in the Offers Sold card
### Filter the offers sold report
* Payment Type
* Currency
* Offer
* Date
To Filter your report use the dropdown menu in the sidebar to select your filters and click **Apply**:
## Understand the offers sold report
**Offers Sold** indicates the total number of offers purchased, including both first purchases and regular purchases.
### First purchase vs. regular purchases
Discerning between First Purchases and Regular Purchases is essential to understanding how much of your revenue is coming from existing customers or new customers.
* **First Purchases**: Of the total Offers Sold, the First Purchase contains the number of first-time purchases made by new customers
* **Regular Purchases**: A purchase made by a current customer of your site that has previously purchased an offer on your site
Return customers are *huge* for your business because it demonstrates the belief your existing customers have in your products and services and their loyalty to you and your brand.
Understanding the patterns of your existing customers can give you insight into the lifetime value of gaining a new customer. For example, if your total Offers Sold in a given time frame is considerably higher than your First Purchases made, this can mean that your existing customers - and in turn, your new customers - are more likely to return and purchase from you again and again.
### Offer payment types
When creating Offers in Kajabi, you have the option to select from [four different payment types](/articles/sales/offers/how-to-create-a-pricing-plan-for-your-offer):
* Free
* Single Payment
* Payment Plan
* Recurring Subscription
The Offers Sold Report displays the analytics for One-Time Payment Offers, Payment Plan Offers, and Recurring Subscriptions.
**Payment Plans and Recurring Subscription Offers**
* **Payment Plan Offers** display the installment/increment price paid for the Payment Plan Offer on the report for each month
* **Recurring Subscription Offers** reflect the date of purchase as the Start Date and the Sales amount displays the one-month charge of the Recurring Subscription Offer. Take a look at the [Subscription Metrics](/articles/analytics/report-subscription-metrics) report for a deeper understanding of your Recurring Subscription Type Offers
The Payment Plan and Recurring Subscription types are denoted by an asterisk (\*) in your report.
**Are Free Offers included?**
Free Offers are not included in this report because there are no transactions accompanying Free Offers.
**What if I change my Offer Payment Type to be a Free Offer?**
If the Offer was initially set with a payment but is later updated to a Free Offer, purchases that occur when the initial Offer is set (the Offer with a payment) will be displayed in the Offers Sold Report. After the Offer is updated to a Free Offer, the purchases that occur following the update will not appear in the report.
**Note:**
If the first purchase is a subscription offer and the next offer purchased by that same customer is a one-time payment offer, the one-time payment offer purchased will be added to the total amount under "Offers Sold", but not the amount under "First Purchase" in the Offers Sold Report.
## Export the Offers Sold report
Export your Offers Sold Report to share, file, and record your offers sold.
Your Offers Sold Report can be exported as "Sales by Date" or "Offers by Date":
* **Sales by date**: Displays the cumulative sales amount by date within your specified date applied before exporting
* **Offers by date**: Displays every Offer sold for each date within your specified date filtered applied exporting
### Export Offers Sold
1. Open the **Analytics** tab from your Dashboard
2. Located toward the top of the page, click **Export**
3. Select **Sales By Date** or **Offers by Date**
Access your exported report from your downloaded files on your hard drive.
**Note:**
Exporting this report will notify the owner of the Kajabi account if the owner has selected to receive notifications data is exported from their account. [Learn to update email notification settings](/articles/account-settings/notifications/update-email-notifications).
## Exported data
The following data is exported with the Offer Sold report, depending on if you choose Sales by Date or Offers by date:
### Sales by Date
* Start Date
* Sales
* Payment Plan
* First Purchases
* Payment Types
* Currencies
### Offers by Date
* Start Date
* Offer Token
* Title, Sales
* Offers Sold
* First Purchases
* Payment Plan Currency
# Report: Opt-ins
Source: https://help.kajabi.com/articles/analytics/report-opt-ins
Track form performance and identify which pages collect the most submissions.
Use the Opt-ins Report to acquire greater insight into how well your forms are performing. Use this report to determine which Pages are collecting the most Form submissions and to bring clarity in the direction your online business should go.
## View the opt-ins report
1. Open the **Analytics** tab from your Dashboard
2. Locate the Opt-ins card
3. Click **View** in the Opt-ins box from the analytics dashboard
### Filter your total opt-ins by
* Forms
* Landing Pages
* Date
To filter your report, use the dropdown menu in the sidebar to select up to five Forms and/or five Landing Pages you wish to display and click **Apply**:
**Note:**
Applying Forms and Landing Pages Filters will adjust your Total Opt-ins Overview, Opt-in Forms by Submissions, and Landing Pages by Form Submissions. However, applying the Date Filter will only adjust the Total Opt-ins Overview and not the donut charts displaying the Opt-in Forms by Submissions and the Landing Pages by Form Submissions.
## Understand the opt-ins report
**Total Opt-Ins** indicate the total number of Form submissions (also known as Opt-ins).
This overview will calculate the total number of Opt-ins including Single Opt-ins, Double Opt-ins confirmed, and Double Opt-ins that are not confirmed.
Double Opt-ins differ from the default, Single Opt-in, because it requires your potential subscribers to qualify themselves and confirm their desire to subscribe before officially subscribing to your marketing emails.
Whereas the default, Single Opt-in, only requires a single action to permit the desire to receive marketing emails and officially subscribe to your list, such as submitting a Single Opt-in Form. Learn more about setting up [Double Opt-ins in Kajabi](/articles/marketing/forms/how-to-set-up-a-form-with-double-opt-in).
Due to the nature of a Double Opt-in, contacts will not be added to your Contacts tab if a Double Opt-in is not confirmed.
Your Opt-in Report provides insight into the Contacts created and the total Opt-ins in the Summary portion of the report. See below for more information about your Opt-ins Summary.
**Opt-in Forms by Submissions** calculate your top five Forms ranked by the number of submissions through each form.
Under each Form title, you can see the total number of opt-ins submitted for that specific Form and its percentage from your top five Forms.
Configuring your Filters to apply specific Forms will adjust your Opt-in Forms by Submissions card to display the analytics for your filtered Forms.
This chart can provide insight into your strongest Forms. You can then utilize this information to better understand the strengths of different Forms and Pages.
**Landing Pages by Form Submissions** calculate your top five Landing Pages ranked by how many Opt-in Form submissions have been collected on your top five Pages.
Configuring your Filters to apply specific Landing Pages will adjust your Landing Pages by Form Submissions card to display the analytics for your filtered Landing Pages.
This chart can provide insight into the specific Pages generating the most number of Opt-ins.
**Note:**
The Opt-ins Report does not include your [Website Design Pages](/articles/website/pages/customizing-your-website-pages-with-the-website-builder) (including the [default Homepage or Template Home](/articles/website/pages/what-is-the-template-home), Store, Blog, etc.) when calculating your **Landing Pages**. However, Forms submitted through your Design Pages and custom Landing Pages will still be counted as **Opt-ins**. Learn more about the [difference between Website Pages and Pages in Kajabi](/articles/website/pages/what-is-the-difference-between-a-landing-page-and-a-website).
**Summary** provides a daily look at your Opt-ins submitted, Forms submitted, and Landing Pages used to collect Opt-ins. Nested within each date, you can view further detail about the Opt-ins submitted and Contacts created for the day.
* **Opt-ins** calculate your total Opt-ins from Single Opt-ins, Double Opt-ins not confirmed, and Double Opt-ins confirmed
* **Forms** indicate the number of Forms completed. Remember, Opt-ins come from Forms. Forms in Kajabi can be created in the Marketing tab to collect Opt-ins. Therefore, you may have 10 Opt-ins collected from 3 separate Forms
* **Landing Pages** indicate the number of Pages used to collect Opt-ins. If an Opt-in occurs by completing a Form on a Landing Page, it will be calculated into the Landing Pages total in the Summary. Keep in mind, Landing Pages do not include the [Website Design Pages](/articles/website/pages/customizing-your-website-pages-with-the-website-builder)
* **Contacts** calculate your total Opt-ins confirmed, including Single Opt-ins and Double Opt-ins confirmed. Contacts will not be created from a Double Opt-in if they have not confirmed through their email. Therefore, Contacts will not be created in your Contacts tab with a Double Opt-in until they confirm. This may result in a larger number of Opt-ins than Contacts. Learn more about setting up [Double Opt-ins in Kajabi](/articles/marketing/forms/how-to-set-up-a-form-with-double-opt-in)
## Export the opt-ins report
Export your Opt-Ins Report to share, file, and record the Opt-Ins from your site.
### Export opt-ins
1. Open the **Analytics** tab from your Dashboard
2. Click **Opt-Ins**
3. Located toward the top of the page, click **Export**
**Note:**
Exporting your Opt-Ins Report will notify the owner of the Kajabi account if the owner has selected to receive notifications data is exported from their account. [Learn to update email notification settings](/articles/account-settings/notifications/update-email-notifications).
## Exported data
The following data is exported with the Opt-Ins report:
* Start Date
* Count
# Report: Page views
Source: https://help.kajabi.com/articles/analytics/report-page-views
Track page views and unique page views across your site.
The **Page Views** report tracks how many times pages on your site are visited. Use it to identify your most popular pages and understand traffic patterns.
## View page view reports
1. Open the **Analytics** tab from your Dashboard
2. Click **View** in the Page Views card
**Tip:**
Use the filters in the right sidebar to filter your results by a specific page.
## Page views vs. unique page views
A **Page View** represents each time a user visits a page.
This means that a single user loading the same page 5 times in a single session will generate 5 page views.
**Note:**
Your Page View report allows you to review your views by Landing pages, Website pages, and Offers.
**Unique Page Views** represent a total of page views generated by a user during the same session.
This means that if the same user loads a page 5 times in a given session, it's only calculated as 1 unique page view.
This is why page views will always outnumber unique page views.
## Export the page views report
Export your Page Views Report to share, file, and record the page views from your site.
### Export page views
1. Open the **Analytics** tab from your Dashboard
2. Click **Page Views**
3. Located toward the top of the page, click **Export**
**Note:**
Exporting your Page Views Report will notify the owner of the Kajabi account if the owner has selected to receive notifications data is exported from their account. [Learn to update email notification settings](/articles/account-settings/notifications/update-email-notifications).
## Exported data
The following data is exported with the Page Views report:
* Start Date
* View Count
* Unique View Count
# Report: Payment balance summary by month
Source: https://help.kajabi.com/articles/analytics/report-payment-balance-summary-by-month
Starting and ending Kajabi Payments balance by month.
The **Payment balance summary by month** report shows your Kajabi Payments balance for a given month: what it started at, what it ended at, and the activity that moved it between them.
It is built for month-end reconciliation. If you have ever tried to answer "what did I actually earn in April?" by exporting transactions and adding up columns by hand, this is the report that replaces that work.
This report is most useful for:
* Closing out your books at the end of a month or quarter
* Handing a clean summary to a bookkeeper or accountant
* Reconciling fees and refunds against what actually landed in your bank account
* Reviewing balance activity across a custom date range
## Before you begin
The report is only available if your site has an active Kajabi Payments integration.
## Open the report
There are two ways in, and both land on the same report:
### From the Payouts page
1. From your Dashboard, select **Sales** > **Payouts**
2. Click **Balance Report** in the upper right of the All Payouts section
### From Analytics
1. Open the **Analytics** tab from your Dashboard
2. Click **Reports**
3. Select **Payment balance summary by month**
## What the report shows
For each month in the range you select, the report shows your opening balance, your closing balance, and a breakdown of the activity between them, including charges, refunds, fees, and payouts.
**Note on payout schedules:** If you are on a daily payout schedule, your balance is swept to your bank account continuously, so the balance on the first and last day of the month will not tell you much on its own. The activity figures are the meaningful part for you: the number and value of charges, refunds, and fees over the period.
### Filter and export the report
The report includes its own date filtering and download controls. Set the range you need, then download the report to hand off or file.
## Balance report or payout export?
Both tell you about money, and they answer different questions.
| Use this | To answer |
| :----------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------- |
| **Payment balance summary by month** | What did my balance do over this month, and what was the total activity behind it? |
| [**Payout exports**](/articles/sales/kajabi-payments/how-to-view-kajabi-payments-payouts-and-payout-details) | What transactions made up this specific payout, and what were the fees on each one? |
Reach for the balance report when you are closing a period. Reach for a payout export when you are tracing an individual deposit.
## Frequently asked questions
### Does this report include revenue from Stripe or PayPal?
No. This report covers your Kajabi Payments balance only. For revenue across all payment processors, use the [Gross Revenue](/articles/analytics/report-gross-revenue) and [Net Revenue](/articles/analytics/report-net-revenue) reports.
### Why do my balance figures not match my Gross Revenue report?
They measure different things. Gross Revenue counts what you sold. Your Kajabi Payments balance reflects money moving through your Kajabi Payments account, which is affected by processing fees, refunds, disputes, adjustments, and the timing of when funds become available. A sale on the last day of the month may not reach your balance until the next one.
### Can I get this report by week or by day instead?
Use the date filtering inside the report to set a custom range. The report is organized by month.
## Related articles
* [Kajabi Payments payouts](/articles/sales/kajabi-payments/kajabi-payments-payouts)
* [View Kajabi Payments payouts and payout details](/articles/sales/kajabi-payments/how-to-view-kajabi-payments-payouts-and-payout-details)
* [View Analytics reports](/articles/analytics/analytics-reports)
* [Kajabi Payments processing fees](/articles/sales/kajabi-payments/kajabi-payments-processing-fees)
* [Integrate QuickBooks Online with Kajabi Payments](/articles/sales/kajabi-payments/how-to-integrate-quickbooks-online-with-kajabi-payments)
# Report: Payment plan status by offer
Source: https://help.kajabi.com/articles/analytics/report-payment-plan-status-by-offer
Track current payment plan statuses by offer including active, trialing, paused, and past due.
The **Payment plan status by offer** report displays the status of all current payment plans, categorized as Active, Trialing, Paused, Pending Cancellation, or Past Due. Results are grouped by offer. Each count in the table can be clicked to view the corresponding list of payment plans within that offer and status.
This report is most useful for:
* Tracking how many payment plans are **active**, **paused**, or **past due**
* Identifying pending cancellations that may affect future revenue
* Monitoring payment behaviors across specific offers that use payment plans
## Data presented
### Visual charts
* **Bar chart**: Shows the number of payment plans broken down by status (Active, Trialing, Past due, Pending cancellation, Paused)
### Data table
* **Offer name**: The name of the product or service linked to the payment plan
* **Active**: Number of customers actively making payments
* **Trialing**: Number of customers currently in a trial before the plan activates
* **Past due**: Number of customers who have missed payments
* **Pending cancellation**: Number of payment plans scheduled to be canceled
* **Paused**: Number of payment plans currently paused
## How to use the report
You can customize the data displayed in the report using several controls.
### Controls
* **Offer selection**: Choose whether to view data for multiple offers or focus on a specific offer
* **Offer click through**: Each count in the table can be clicked to view the corresponding list of payment plans within that offer and status
## Export information
When you export the **Payment plan status by offer** report, the resulting file will include the same columns and reflect any filters you have applied. This ensures the data in the export matches what is displayed in the report:
* Offer name
* Active
* Trial
* Past due
* Pending cancellation
* Paused
## FAQs
### Does this report include fully completed payment plans?
No. Completed payment plans as well as canceled payment plans are no longer considered "current" and won't appear in this report.
### Can I see which customers are associated with each payment plan status?
Yes. Clicking into the counts within the Data Table lets you view the customer list for that specific status.
# Report: Payments by country and state
Source: https://help.kajabi.com/articles/analytics/report-payments-by-country-and-state
Track payments by geographic location entered during checkout.
**Payments by Country and State** is the report of payments by the country and state entered during checkout.
## View the Payments by Country and State report
To access your Payments by country and state report:
1. Open the **Analytics** tab from your Dashboard
2. Click **Payments by Country and State**
## Understand the Payments by Country and State report
In this report, you can view payments by country and state/province, the zip code purchased from, the net revenue, and the net quantity purchased:
**Note:**
Payment by Country and State data will not be collected unless the Collect Address Form Field is enabled on your checkout page. You can learn how to set up address collection upon checkout [customize your checkout fields](/articles/sales/offers/how-to-customize-your-checkout-fields).
### Using filters
Using the filter bar on the top of the page, you can alter your entire data set by currency, date, and offer:
## Export the Payments by Country and State report
Export your Payments by country and state to share, file, and record Payments by Country and State report.
### Export Payments by Country and State
1. Open the **Analytics** tab from your Dashboard
2. Click **Payments by Country and State**
3. Located toward the top of the page, click **Export**
Access your exported report from the downloaded files on your hard drive.
**Note:**
Exporting this report will notify the owner of the Kajabi account if the owner has selected to receive notifications data is exported from their account. [Learn to update email notification settings.](/articles/account-settings/notifications/update-email-notifications)
## Exported data
The following data is exported with the Payments by Country and State report:
* Country
* State
* Zipcode/Province
* Net Revenue Amount
* Net Revenue Currency
* Net Quantity
**Note:**
The Payments by Country and State report exported data is helpful for tax reporting purposes.
# Report: Payments by offer
Source: https://help.kajabi.com/articles/analytics/report-payments-by-offer
Track gross revenue and quantity of payments by offer to identify top performers.
## Overview
The **Payments by Offer** report displays the gross revenue and quantity of the payments over a selected time frame by each offer.
This report is most useful for:
* Identifying which offers generate the most revenue
* Comparing performance across different offers
* Tracking both the quantity of purchases and associated gross revenue for each offer
## Data presented in this report
### Visual charts
* **Top 10 Offers by Quantity (bar chart)**: Displays the ten most-purchased offers based on quantity
* **Top 10 Offers by Gross Revenue (donut chart)**: Displays the ten offers generating the highest gross revenue
### Data table
* **Offer name**: The specific offer purchased
* **Gross revenue**: The total gross revenue generated by that offer
* **Quantity**: The number of purchases for that offer
## How to use this report
You can customize the data displayed in the report using several controls.
* **Time range**: Filter payments by period (e.g., last 7 days, last 30 days, custom date range)
* **Offer selection**: Choose whether to view data for all, multiple offers, or a specific offer
* **Pricing type filter**: Select one or more pricing types to view (e.g., one-time, subscription, payment plan, pay what you want)
* **Currency selector**: View stats in your preferred currency
## Export information
When you export the **Payments by Offer** report, the resulting file will include the same columns and reflect any filters you have applied. This ensures the data in the export matches what is displayed in the report:
* Offer name
* Gross revenue
* Currency
* Quantity
# Report: Payments by payment method
Source: https://help.kajabi.com/articles/analytics/report-payments-by-payment-method
Track payments by payment method such as credit card, ApplePay, and more.
**Payments by Payment Method** is the report of payments by payment method, showing how customers paid for their purchases, such as credit card, ApplePay, etc.
## View Payments by Payment Method
To access your Payments by payment method report:
1. Open the **Analytics** tab from your Dashboard
2. Click **Payments by payment method**
## Understand the Payments by Payment Method report
### Number of sales by payment method
View your number of sales by payment method.
Each payment type and the number of sales completed by that pricing type will be shown:
### Gross Revenue by Payment Method
Your gross revenue by payment method will be shown in a circle graph form:
### Using filters
Using the filter bar on the top of the page, you can alter your entire data set by currency, date, and offer:
## Export the Payments by Payment Method report
Export your Payments by payment method to share, file, and record your Payments by Payment Method Report.
### Export Payments by Payment Method
1. Open the **Analytics** tab from your Dashboard
2. Click **Payments by payment method**
3. Located toward the top of the page, click **Export**
Access your exported report from the downloaded files on your hard drive.
**Note:**
Exporting this report will notify the owner of the Kajabi account if the owner has selected to receive notifications data is exported from their account. [Learn to update email notification settings.](/articles/account-settings/notifications/update-email-notifications)
## Exported data
The following data is exported with the Payments by Payment Method report:
* Payment method
* Quantity
* Gross revenue currency
* Gross revenue percentage
* Number of customers
# Report: Payments by pricing type
Source: https://help.kajabi.com/articles/analytics/report-payments-by-pricing-type
Track payments by pricing type including one-time, subscriptions, and payment plans.
**Payments by pricing type** is the report of different pricing types upon purchase, including one-time payments, subscriptions, payment plan, free, and pay what you want.
## View Payments by Pricing Type
To access your Payments by pricing type report:
1. Open the **Analytics** tab from your Dashboard
2. Click **Payments by Pricing Type**
## Understand the Payments by Pricing Type report
### Number of sales by pricing type
View your number of sales by pricing type.
Each pricing type and the number of sales completed by that pricing type will be shown:
### Gross Revenue by Pricing Type
Your gross revenue by pricing type will be shown in a circle graph form:
### Using filters
Using the filter bar on the top of the page, you can alter your entire data set by currency, date, and offer:
## Export the Payments by Pricing Type report
Export your Payments By Pricing Type report to share, file, and record your Payments by Pricing Type report.
### Export Payments by Pricing Type
1. Open the **Analytics** tab from your Dashboard
2. Click **Payments By Pricing Type**
3. Located toward the top of the page, click **Export**
Access your exported report from your downloaded files on your hard drive.
**Note:**
Exporting this report will notify the owner of the Kajabi account if the owner has selected to receive notifications data is exported from their account. [Learn to update email notification settings.](/articles/account-settings/notifications/update-email-notifications)
## Exported data
The following data is exported with the Payments by Pricing Type report:
* Pricing Type
* Quantity
* Gross Revenue Amount
* Gross Revenue Currency
* Gross Revenue Percentage
* Number of Customers
# Report: Product progress
Source: https://help.kajabi.com/articles/analytics/report-product-progress
Track your customer's progress through courses, memberships, or products.
Track customer progress through courses, memberships, or products with the Product Progress Report.
The Product Progress Report allows you to track your customer's progress through your Product, number of logins, start date, and date of last login.
This report displays up to 1000 customers at a time. The Product Progress report was redesigned to improve visibility and give you more insight into the progress of each individual customer.
Focus your report by using filters for customer name, customer email, or by [custom segment](/articles/contacts/manage-your-contacts/segment-your-contacts).
Product progress is tracked by progress on the [Video](/articles/products/courses/uploading-videos-to-your-course-product-lessons) or [Assessment](/articles/contacts/create-manage-and-share-assessments/how-to-add-an-assessment-to-your-course-product) uploaded into the Course Lesson, or by [Quiz](/articles/products/courses/course-quizzes) completion. If the Course Lesson does not contain a Video or Assessment, progress can only be tracked if the "Mark as complete" button is clicked.
**Tip:**
If the Product Progress Report fails to update, you may need to [update your Product Template](/articles/website/pages/how-to-update-a-template#product-theme). This can occur if your Product has the "Mark as Complete" button removed instead of hidden. Hiding this button instead of removing it will enable Video Progress tracking.
## View by product
1. Open the **Analytics** tab from your Dashboard
2. Scroll to the bottom of the page and click **Product Progress**
3. Select the **Product** you want to view
4. Then, click **Confirm**
## View by segment
The Product Progress Report displays up to 1000 customers.
Filter your Customer Progress Report by Segment to create meaningful groups of users and narrow your focus:
1. Open the **Analytics** tab from your Dashboard
2. Then, click **View** in the Product Progress card
3. Scroll to the bottom of the page and click **Product Progress**
4. Click on the **Product** you want to view
5. In the right side-bar, search by Segment and click **Apply**
**Note:**
Segmenting your customers will display up to 1000 customers in the Segment. Keep in mind, exporting your Product Progress report will export the customers displayed when filtered or segmented. We encourage you to create Segments to easily share and view your report. Read [How to Segment Your Contacts](/articles/contacts/manage-your-contacts/segment-your-contacts) to create focused Segments and easily track your customers.
## View by customer
To view a specific customer's progress in a Product for each Module and Lesson:
1. Open the **Analytics** tab from your Dashboard
2. Then, click **View** in the Product Progress card
3. Scroll to the bottom of the page and click **Product Progress**
4. Click on the **Product** you want to view
5. In the right sidebar, search the customer by name or email and click **Apply**
6. Then, click on the customer's Name to view their progress report
**Note:**
If a customer is [permanently deleted](/articles/contacts/manage-your-contacts/how-to-delete-a-contact) from your site, all records will be removed including their Product Progress. However, if a customer has been [revoked access](/articles/contacts/manage-your-contacts/revoke-product-access-from-a-customer) to a Product their Product Progress will remain in your Product Progress Report.
### Customer Progress Report
To view your customer's details:
1. Open the **Analytics** tab from your Dashboard
2. Then, click **View** in the Product Progress card
3. Scroll to the bottom of the page and click **Product Progress**
4. Click on the **Product** you want to view
5. In the right sidebar, search the customer by name or email
6. Click on the customer's Name to view their progress report
7. In the Customer Information card, click **launch**
View by Product Module and Product Lesson:
**Note:**
The overall product progress will reflect the sum of the total amount of lessons or quizzes that have been completed divided by the total number of lessons or quizzes in the course. The percent will reflect any lessons that are marked completed, completed quizzes, and any video lessons that have at least 90% of the video played.
## Share the product progress report
### Print
Print your Product Progress Report to add to your records or share in your preferred format.
To print:
1. Open the **Analytics** tab from your Dashboard
2. Then, click **View** in the Product Progress card
3. Scroll to the bottom of the page and click **Product Progress**
4. In the top menu, click **Print**
5. Begin sharing a hard copy of your printed Product Progress Report
### Export
Export your Product Progress Report to add to your records or share as a CSV.
Your exported Product Progress Report will display your customers' Product Progress as a percentage to depict the progress made in a specific Product.
**Note:**
Exporting this report will notify the owner of the Kajabi account if the owner has selected to receive notifications data is exported from their account. [Learn to update email notification settings](/articles/account-settings/notifications/update-email-notifications).
To export:
1. Open the **Analytics** tab from your Dashboard
2. Then, click **View** in the Product Progress card
3. Scroll to the bottom of the page and click **Product Progress**
4. In the top menu, click **Export**
5. Begin sharing an Excel file of your Product Progress Report
**Tip:**
Group your customers with Segments to narrow your focus and easily export specific groups of customers. If your list is greater than 1000, you will receive an email from our support team to download your exported list. Read [How to Segment Your Contacts](/articles/contacts/manage-your-contacts/segment-your-contacts) to create focused Segments and easily track and export your customers from the Product Progress report.
## Exported data
The following data is exported with the Product Progress report:
* Name
* Email
* Product Progress
* Logins
* Start Date
* Last Activity
# Report: Refunds
Source: https://help.kajabi.com/articles/analytics/report-refunds
Track total refunds issued over time including full and partial refunds.
**Refunds Over Time** is the total value of refunds issued over time, including full and partial refunds for paid purchases. Learn how to view your refunds over time.
## View refunds over time
To access your refunds over time report:
1. Open the **Analytics** tab from your Dashboard
2. Click **Refunds Over Time**
## Understand the Refunds Over Time report
### Line graph
View your refunds over time.
Hover over your line graph for more detailed information about your refunds.
### Timeframe
Choose the timeframe of the data set you would like to view from the top dropdown. Select from our presets or choose a custom date range:
### Using filters
Using the filter bar on the top of the page, you can alter your entire data set by currency and offer:
## Export the Refunds Over Time report
Export your Refunds Over Time to share, file, and record your refunds.
### Export Refunds Over Time
1. Open the **Analytics** tab from your Dashboard
2. Click **Refunds Over Time**
3. Located toward the top of the page, click **Export**
Access your exported report from your downloaded files on your hard drive.
**Note:**
Exporting this report will notify the owner of the Kajabi account if the owner has selected to receive notifications data is exported from their account. [Learn to update email notification settings.](/articles/account-settings/notifications/update-email-notifications)
## Exported data
The following data is exported with the Refunds Over Time report:
* Day
* Quantity
* Amount
* Currency
# Report: Subscription metrics
Source: https://help.kajabi.com/articles/analytics/report-subscription-metrics
Track MRR, ARPU, and Churn to understand your subscription-based products.
The Subscription Metrics Report tracks data related to subscription-based products over a given time period. Learn about **MRR**, **ARPU**, and **Churn** and how to read the Subscription Metrics Report to keep track of your subscription-based products.
## View subscription metrics reports
To view your report:
1. Open the **Analytics** tab from your Dashboard
2. Click **View** in the Subscription Metrics card
## Monthly Recurring Revenue (MRR)
### What is MRR and who is it important to?
MRR, or **Monthly Recurring Revenue**, is all of your recurring revenue normalized into a monthly amount.
This report is vital for subscription businesses because revenue and profits trickle in over time. So, it's important to measure growth and revenue in a similar way. MRR provides an easy way to forecast future cash flows.
### Calculate MRR
The best way to calculate MRR is to obtain the average monthly subscription, multiplied by the number of subscription payments, minus any subscription discounts.
MRR = **All subscriptions \* ((monthly average subscription \* number of subscription payments) - subscription discounts))**
### OR
MRR = **Total Monthly Subscription Revenue - Monthly Discounts**
For instance, if you have Customer A paying $150/monthly and Customer B paying $200/monthly, your MRR would be \$350.
## Average Revenue Per User (ARPU)
### What is ARPU?
ARPU, or **Average Revenue Per User**, is especially useful if you have a business with multiple tiers of subscriptions.
Let's say you have a 3-tiered subscription model with plans at $10, $50, and \$80. Understanding ARPU can help you make pricing decisions and understand whether your type of customer skews toward higher or lower pricing plans.
**Tip:**
If you recently increased your prices, compare date ranges in ARPU to see if your ARPU has gone up.
### ARPU calculation
ARPU = **MRR / Active Customers**
### Strategies to increase and optimize ARPU
* Have a clear add-on or upgrade strategy
* Focus on retention
## Churn
### What is Churn?
Churn is a business metric that calculates the number of customers who leave a business or stop paying over a given period of time. Customer churn is important to understand the health and retention of your business.
### Churn Rate Formula
The Churn Rate Formula can be calculated as the number of churned customers divided by the total number of customers:
Churn rate = **(number of churned customers / total number of customers) 100**
## Forecast
### Forecast tool
The **Forecast** tool empowers you to predict and plan for the future of your business by projecting your MRR, ARPU, New Subscriptions, and Churn Rate over the next 6 months. Now you can set tangible, subscription-based goals according to your business needs all within Kajabi.
### Starting MRR
The default value for your Starting MRR is your current MRR data from the last month. Enter a new Starting MRR to visualize the MRR you want in order to hit your goals in a 6-month time frame.
### Starting ARPU
The default value for your Starting ARPU is your current ARPU data from the last month. Enter a new Starting ARPU to estimate the ARPU you need to reach your future income goals in a 6-month time frame.
### New Subscriptions
This field represents the number of monthly new subscriptions. The default value is based on your current number of new subscriptions from the last month. Adjust this variable to strategize your monthly new subscription targets to meet your MRR goals in a 6-month time frame.
### Churned Subscriptions
This field is the rate of churned or canceled subscriptions that are estimated each month of the Forecast. The default value is based on your current churn from the last month. Adjust your Churned Subscriptions value to strategize your 6-months and visualize how a change in your Churned Subscriptions can impact your growth trajectory.
**Note:**
The filters located on the right sidebar will not impact your Forecast tool projections. Additionally, Multiple Payment Offer Types are not included in the calculations when using the Forecast Tool as it is not a subscription, but rather a one-time payment spread out over a specified period of time.
### Use the Forecast tool
Adjust the MRR, ARPU, New Subscriptions, and Churned Subscriptions values and watch as your 6 Month MRR automatically adjusts to reflect your 6-month projection.
* The **Blue bar** in your Forecast tool represents your custom MRR according to your custom values
* The **Grey bar** in your Forecast tool reflects your current MRR based on your last month
**Note:**
Capture your 6-month projection by setting your MRR date range to the current month before clicking the Forecast tab.
Keep an eye on your Dynamic Forecast Statement as well. Your Dynamic Forecast Statement located above the graph will change according to your custom values.
**Tip:**
Hover over your graph to see your projected monthly MRR over the course of the 6-month projection based on your current and custom values.
### Use projections
Use your Forecast tool to clarify your goals and identify your action plans to achieve those goals.
**Note:**
Exporting your Subscription Metrics Report will notify the owner of the Kajabi account if the owner has selected to receive notifications data is exported from their account. [Learn to update email notification settings](/articles/account-settings/notifications/update-email-notifications).
## Exported data
The following data is exported with the Subscription Metrics report:
* Start Date
* Monthly Recurring Revenue
* Monthly Discounts
* Average Revenue Per User
* Active Subscriptions
* New Subscriptions
* Churned Subscriptions
* Churn Rate
# Report: Subscription payment retention over time
Source: https://help.kajabi.com/articles/analytics/report-subscription-payment-retention-over-time
Track the percentage of customers who make each subsequent payment by cohort.
The Subscription Payment Retention report shows the percentage of customers who successfully make each subsequent payment, starting from their first. Results can be grouped by the month, day, or year of the initial purchase. It highlights how many payment cycles customers complete and where drop-off occurs.
This report is most useful for:
* Measuring customer retention through payment behavior across cohorts
* Identifying how many customers continue making payments at each billing cycle
## Data presented in this report
### Data table (heatmap)
The data table provides a detailed cohort breakdown:
* **Month**: The purchase month (or day/year, depending on interval filter)
* **Purchased**: The number of new subscriptions started in that period. The count is based on the original purchase date, regardless of any trial period
* **Retention rate**: The percentage of the original cohort who completed the latest payment
* **PMT 1–24**: Payment percentages after each payment cycle, up to 24. For example, **PMT 1** shows how many customers completed after their first payment, **PMT 2** after their second, and so on
## How to use the report
You can customize the data displayed in the report using several controls.
### Controls
* **Time range**: Select the timeframe for purchase cohorts included in the report (e.g., last 30 days, last 12 months, custom)
* **Interval**: Choose how cohorts are grouped (Day, Month, Year)
* **Offer selection**: View retention across all offers or focus on a specific offer
## Export information
When you export the **Subscription retention over time** report, the resulting file will include the same columns and reflect any filters you have applied. This ensures the data in the export matches what is displayed in the report:
* Month
* Purchased (amount)
* Retention rate
* Payments 1–24
## FAQs
### What does each "PMT" column represent?
Each PMT column shows retention after that number of payments. For example, PMT 3 means the percentage of customers from that cohort who completed their third payment.
### Does retention account for paused subscriptions or only active ones?
The subscription payment retention over time report only considers completed payments. To view subscription churn or growth based on subscription status, refer to the subscription churn rate report.
### Do refunds or chargebacks impact retention?
No. Retention is based only on whether the payment was initially completed. Payments that are later refunded or disputed do not affect the retention rate.
### Does this report include Payment Plans?
No. The subscription payment retention report only includes subscription purchases.
# Report: Subscription status by offer
Source: https://help.kajabi.com/articles/analytics/report-subscription-status-by-offer
Track current subscription statuses by offer including active, trialing, paused, and past due.
Displays the status of all current subscriptions, categorized as Active, Trialing, Paused, Pending Cancellation, or Past Due. Results are grouped by offer. Each count in the table can be clicked to view the corresponding list of subscriptions within that offer and status.
This report is most useful for:
* Getting a snapshot of current subscription counts by status
* Drilling down into key statuses such as Past Due by clicking counts to view the list of individual subscriptions
## Data presented in this report
### Visual charts
* **Subscription status (bar chart)**: Displays the total number of current subscriptions in each status category across all offers
### Data table
The data table provides a detailed breakdown of subscription counts by offer, including:
* **Offer name**: The name of the subscription offer
* **Active**: The number of currently active subscriptions
* **Trialing**: The number of subscriptions currently in a trial period
* **Past due**: The number of subscriptions currently past due
* **Pending cancellation**: The number of subscriptions scheduled for cancellation
* **Paused**: The number of subscriptions that are currently paused
## How to use the report
### Controls
* **Offer selection**: Choose whether to view all offers or limit the results to a specific offer
* **Offer click through**: Each count in the table can be clicked to view the corresponding list of subscriptions within that offer and status
## Export information
When you export the **Subscription status by offer** report, the resulting file will include the same columns and reflect any filters you have applied. This ensures the data in the export matches what is displayed in the report:
* Offer name
* Active
* Trial
* Past due
* Pending cancellation
* Paused
# Report: Top customers
Source: https://help.kajabi.com/articles/analytics/report-top-customers
Identify your highest-value customers ranked by total purchase value.
Displays your top spending customers ranked by total purchase value over the selected date range. Total amounts reflect net spending with any refunds processed during the same period subtracted from customer totals.
This report is most useful for:
* Identifying your highest-value customers
## Data presented in this report
### Data table
* **Customer name**: The name of the customer who made purchases
* **Customer email**: The email address associated with the customer
* **Total offers purchased**: The total number of offers purchased by the customer
* **Total amount spent**: Total amounts reflect net payments with any refunds processed during the same period subtracted from totals
**Note:**
This report shows up to 100 results. To access the full list, export the report.
## How to use this report
You can customize the data displayed in the report using several controls.
* **Time range**: Filter customer data by period (e.g., last 7 days, last 30 days, custom date range)
## Export information
When you export the **Top Customers** report, the resulting file will include the same columns and reflect any filters you have applied. This ensures the data in the export matches what is displayed in the report:
* Customer name
* Customer email
* Total offers purchased
* Total amount spent
* Currency
# Report: Upsell Purchases Over Time
Source: https://help.kajabi.com/articles/analytics/report-upsell-purchases-over-time
*Monitor upsell performance over time to identify trends and measure revenue impact.*
This feature is being rolled out gradually. Some things are still being refined, and more detailed how-to articles are on the way. If you run into anything unexpected, reach out to [**payments.support@kajabi.com**](mailto:payments.support@kajabi.com) and the team will assist.
The Upsell Purchases Over Time report shows how your upsells are performing across all offers and upsell flows. Use it to identify trends, measure revenue impact, and make informed decisions about which upsells to optimize.
Data in this report begins at the launch of Enhanced Upsells in Spring 2026. Upsell activity prior to that date is not included.
This report is most useful for
* Tracking upsell purchase activity over time across all offers.
* Measuring gross revenue generated from upsells.
* Monitoring conversion rate trends to identify which time periods or changes had the most impact.
## Access the Upsell Purchases Over Time report
1. Go to **Analytics** > **Reports**.
2. Search for or select **Upsell Purchases Over Time**.
## Data presented in this report
### Visual chart
**Upsell Purchases Over Time (line chart)**
Displays upsell data over time. Use the chart toggle to switch between the following metrics:
* **Quantity purchased** — total count of accepted upsell purchases within the selected time range. If a single order contains multiple accepted upsells, each counts individually.
* **Conversion rate** — percentage of customers who viewed an upsell and completed the purchase. Calculated as: (number of completed upsell purchases / number of upsells presented) x 100.
* **Gross revenue** — total revenue generated from accepted upsell purchases within the selected time range.
When a comparison period is enabled, the chart overlays the comparison data for the selected metric.
### Data table
The table displays the following columns, broken down by date based on the selected granularity:
| **Column** | **Description** |
| :-------------- | :---------------------------------------------------------------------------------------- |
| Date | The time period, based on the selected granularity (Day, Week, Month, Year) |
| Presented | Number of times an upsell was presented to a customer, aggregated across all upsell flows |
| Conversion rate | The percentage of upsells presented that resulted in a completed purchase |
| Gross revenue | Total revenue from accepted upsell purchases in that period |
| Quantity | Total count of accepted upsell purchases in that period |
Click any column header to sort the table in ascending or descending order.
## Filters
Use the filter bar to customize the data displayed in the report and table. Changing any filter updates both the chart and the table.
* **Timeframe** — defaults to last 30 days. Select a preset range or choose a custom date range.
* **Granularity** — defaults to Day. Choose how data is grouped: Day, Week, Month, or Year.
* **Upsells** — defaults to All upsells. Filter to a specific upsell to see its individual performance.
* **Comparison** — disabled by default. Choose to compare against a past period. When enabled, the chart overlays the comparison period.
* **Currency** — view stats in your preferred currency.
## Export
Exporting the report generates a file that matches the columns currently displayed in the table and reflects any filters you have applied.
Export columns include:
* Date
* Presented
* Conversion rate
* Gross revenue
* Quantity
# Understand elevated 404 page views
Source: https://help.kajabi.com/articles/analytics/why-do-i-have-so-many-views-on-my-404-page
Understand why your 404 page may show a high number of views.
A high Page View count on your [404 page](/articles/website/pages/how-to-build-your-404-page) does not indicate a bug or broken functionality. Bots and automated scripts regularly scan domains for common URLs, and when those URLs don't exist, each request registers as a 404 [page view](/articles/analytics/report-page-views).
This is standard behavior across websites and is not cause for concern.
## FAQs
### Why does my 404 page have so many views?
Bots and automated scripts continuously scan domains looking for common URLs. When those URLs don't exist on your site, each request gets logged as a 404 page view, which inflates the count.
### Should I be concerned about high 404 page views?
No. Elevated 404 page views from bot traffic are normal and do not affect your site performance or visitor experience.
# Generate multiple Assessments from a question list
Source: https://help.kajabi.com/articles/contacts/create-manage-and-share-assessments/can-i-generate-different-assessments-based-on-an-extensive-list-of-questions
Create multiple Assessments with up to 100 questions each in Kajabi.
Yes, you can create multiple Assessments with up to 100 questions for each Assessment created on Kajabi.
[Learn more about Assessments.](../../contacts/create-manage-and-share-assessments/create-and-customize-assessments)
# Include an opt-in with an Assessment
Source: https://help.kajabi.com/articles/contacts/create-manage-and-share-assessments/can-i-include-an-opt-in-with-my-assessment
Assessments on landing pages include a default opt-in form to help build your list.
Yes, by default Assessments on a [landing page](../../website/pages/how-to-add-pages-to-your-website) include an opt-in form to help you build your list.
[Learn to add an Assessment to a Page and grow your list with Kajabi.](../../website/pages/how-to-add-an-assessment-block)
Assessments are a great tool for creating standardized tests and surveys to be used in your Courses and Landing Pages.
**Note:**
The Assessment feature inside of Courses has been sunset. This feature may still appear in older accounts. The [Quizzes](../../products/courses/course-quizzes) feature is available inside of Courses and offers advanced functionality. Assessments can still be added to Web Pages.
When a page visitor completes an Assessment, they are prompted to subscribe to your email list with their name and email address:
**Note:**
The Assessment opt-in displayed at the completion of an Assessment is generated by default and cannot be customized.
**Want to preview the visitor experience with an Assessment?**
Open an incognito window or a separate browser to test the Assessment on a landing page. Then, complete the Assessment to view the opt-in page.
[Learn to preview a page](../../website/pages/preview-your-page).
# Limit Assessment retake attempts
Source: https://help.kajabi.com/articles/contacts/create-manage-and-share-assessments/can-i-limit-the-number-of-times-a-user-can-retake-an-assessment
Assessments do not currently support limiting the number of retake attempts.
At this time, Assessments cannot be customized to limit the number of retake attempts a user can make.
Learn more about [Assessments in Kajabi](../../contacts/create-manage-and-share-assessments/create-and-customize-assessments).
# Create and customize Assessments
Source: https://help.kajabi.com/articles/contacts/create-manage-and-share-assessments/create-and-customize-assessments
Create standardized tests, questionnaires, and surveys.
**Note:**
If you're looking to test your members inside of a Course, we recommend [building Quizzes in place of Assessments](../../products/courses/course-quizzes) to utilize the latest features.
Use Assessments to create engaging exam or questionnaire experiences for your customers and site visitors without the need to create a Product or Offer.
With Assessments, you can:
* Assess your customers' understanding of your content
* Survey site visitors to learn more about their experience and background
* Craft questionnaires to design tailored content for your customers and site visitors
## Create an Assessment
1. Open the **Contacts** tab from the Dashboard.
2. Select **Assessments**.
3. Click **Get started** if this will be your very first Assessment. If not, click **+ New Assessment**.
4. Add a **Title** and **Description**, and choose whether you want to use automatic grading and the value of the passing grade (optional).
[Learn how to share your Assessment with your customers and site visitors](../../contacts/create-manage-and-share-assessments/how-to-share-an-assessment).
## Customize Assessments
**Note:**
Your Assessment will adopt the appearance of the Product or Page Template it is added to. For example, if the Primary Color of your Product Page is set to yellow, and you add an Assessment to your Product, the color of your Assessment's button will be shown as yellow when previewing your Product page. If your Assessment is not added to a Page or Product, the Assessment color scheme will default to Kajabi Blue.
### Assessment details
Within an Assessment's details, you may:
1. Edit the Assessment **Title**.
2. Add a **Description**.
3. Enable or Disable the option to **Automatically grade assessment**. [Learn how to view and grade Assessment results](../../contacts/create-manage-and-share-assessments/view-and-grade-assessment-results).
4. Configure the **Results Breakdown Preference** to choose to display or hide your Assessment taker's results upon completion:
### Language
Change the text displayed to your users when they interact with the Assessment:
* Start text
* Passed text
* Failed text
Customize the text to bold, italicize, underline, and/or hyperlink your text:
### Automations
Navigate to the bottom of the Assessment editor to add Automations. Automations can be used after an Assessment is completed (the "When" trigger) for a variety of actions:
* Grant an offer
* Revoke an offer
* Subscribe to an email sequence
* Unsubscribe from an email sequence
* Register to an event
* Deregister from an event
* Add a tag
* Remove a tag
* Send an email (considered a [Transactional email](../../marketing/email-campaigns/what-are-marketing-and-transactional-emails))
* Send a single-use coupon
Read the [Automations Overview](../../marketing/automations/automations-overview) to learn more about Automations on Kajabi.
## After submission settings
### Set up notification settings to
* Send a completion email with a results link to the contact when they complete the Assessment
* Send a completion email with a results link to your team anytime a contact completes the Assessment
### Set up after submission settings
1. From the Dashboard, open the **Contacts** tab.
2. Select **Assessments**.
3. Click the Title of the Assessment you wish to edit.
4. Navigate to the **After Submission** card on the right.
5. Check the box(es) next to your desired notification settings:
## Share an Assessment
Share your Assessments to quiz or survey your contacts by adding Assessments to:
* [Pages](../../website/pages/how-to-add-an-assessment-block)
* [Products](../../contacts/create-manage-and-share-assessments/how-to-add-an-assessment-to-your-course-product)
[Learn more about sharing Assessments](../../contacts/create-manage-and-share-assessments/how-to-share-an-assessment).
**Note:**
Assessments can only be attached to one Course Lesson. Once there, the assessment will take on the same template coloring of that product. If you are not seeing your Assessment appear when attempting to attach your Assessment, you may first need to create a new Assessment or duplicate an existing Assessment to use in a separate Course Lesson.
See [Duplicate an Assessment](../../contacts/create-manage-and-share-assessments/how-to-duplicate-your-assessment) for details.
## View assessment responses
To view the results of your Assessment:
1. Open the **Contacts** tab from the Dashboard.
2. Select **Assessments**.
3. Click the **Title** of the Assessment you wish to view.
4. Select the **View Results** tab.
5. View each contact's responses by clicking their email or by [exporting the Assessment Results](../../contacts/create-manage-and-share-assessments/view-and-grade-assessment-results#export):
# Add an Assessment to a Course
Source: https://help.kajabi.com/articles/contacts/create-manage-and-share-assessments/how-to-add-an-assessment-to-your-course-product
Attach an Assessment to a Course Lesson to create tests and surveys within Products.
Only one Assessment can be attached to each Course Lesson.
**Note:**
The Assessment feature inside of Courses has been sunset. This feature may still appear in older accounts. The [Quizzes](../../products/courses/course-quizzes) feature is available inside of Courses and offers advanced functionality. Assessments can still be added to Web Pages.
**Note:**
Course Lessons can include either a Video or an Assessment, not both. To add a Video to a Course Lesson, create a Lesson or select an existing Lesson and add your Video. Read [Upload videos to Course Product Lessons](../../products/courses/uploading-videos-to-your-course-product-lessons) for more details.
## Create an Assessment
To create an Assessment:
1. Open the **Contacts** tab from the Dashboard.
2. Select **Assessments**.
3. Click **+ New Assessment**.
4. Choose a title, description, and if you would like Kajabi to grade the Assessment.
5. Click **Save** to begin customizing the Assessment:
[Learn to add questions to an Assessment](../../contacts/create-manage-and-share-assessments/how-to-add-questions-to-your-assessment).
Read [Create and customize Assessments](../../contacts/create-manage-and-share-assessments/create-and-customize-assessments) for more details.
## Add the Assessment to a Course Lesson
**Note:**
If you do not see an Assessment appear when attempting to attach it, you may first need to create an Assessment or duplicate an existing Assessment to use in another Course Lesson. Read [Duplicate an Assessment](../../contacts/create-manage-and-share-assessments/how-to-duplicate-your-assessment) for details.
To add an Assessment to a Course Lesson:
1. Open the **Products** tab from the Dashboard.
2. Select the **Course** you wish to edit or [create one.](../../products/courses/courses-overview)
3. Click the **Lesson** you wish to add the Assessment to or [create a Lesson](../../products/courses/create-a-lesson).
4. In the **Media** section select **Assessment**.
5. In the dropdown menu, select an Assessment or create one.
6. Click **Save** to keep your changes:
**Note:**
Assessments can only be added to Lessons within Courses. Quizzes can be added at the Module level. Don't see Assessments in your account? That's ok! It means you have the latest version of Kajabi, and can use Quizzes in place of Assessments. Learn how to [create and customize Quizzes](../../products/courses/course-quizzes).
# Add questions to an Assessment
Source: https://help.kajabi.com/articles/contacts/create-manage-and-share-assessments/how-to-add-questions-to-your-assessment
Configure up to 100 questions across multiple question types in Kajabi Assessments.
## Add a question
Add up to 100 questions with Assessments on Kajabi to test or survey your site visitors.
To add a question to an Assessment:
1. Open the **Contacts** tab from the Dashboard.
2. Select the Assessment you wish to edit or [create one](../../contacts/create-manage-and-share-assessments/create-and-customize-assessments).
3. Click **Edit Questions** in the top menu.
4. Select **Add Question** in the editor.
5. Select the **Question Type** you wish to add:
Customize your question content based on your chosen question type (multiple choice, paragraph, file upload, or multiple selection) and click **Save** to add your question.
## Assessment question types
### Multiple choice
Users will choose one answer from many possible choices with the Multiple Choice question type.
* Customize the text with bold, italicize, or underline
* Add images to your Assessment
* Add various answers and create [Tags](../../contacts/manage-your-contacts/tags-overview) for each answer. Keep in mind, each site has a total limit of 100 tags per site
* If [automatic grading](../../contacts/create-manage-and-share-assessments/create-and-customize-assessments#creating-an-assessment) is enabled in your Assessment, select the correct multiple choice answer:
### Paragraph
Create a free-form paragraph question for your users to submit.
Use the text editor to:
* Customize the text with bold, italicize, or underline
* Add images to your Assessment:
### File upload
Users can answer the question with a file upload (e.g., homework assignments).
**File upload limit:** Upload a [compatible file type](../../website/pages/what-are-compatible-file-types-i-can-upload-in-kajabi) up to 10MB.
Enter text to inform users of the file to be uploaded.
Then, use the text editor to:
* Customize the text with bold, italicize, or underline
* Add images to your Assessment:
### Multiple selection
Users can choose one or more answers from the Multiple selection list.
* Customize the text with bold, italicize, or underline
* Add images to your Assessment
* Add various answers and create [Tags](../../contacts/manage-your-contacts/tags-overview) for each answer. Keep in mind, each site has a total limit of 100 tags per site
* If [automatic grading](../../contacts/create-manage-and-share-assessments/create-and-customize-assessments#creating-an-assessment) is enabled in your Assessment, select the correct multiple selection answer:
### Section
Include a Section card to separate your Assessment into different sections, begin a series of questions, or provide additional information, text, content, images, and more.
# Duplicate an Assessment
Source: https://help.kajabi.com/articles/contacts/create-manage-and-share-assessments/how-to-duplicate-your-assessment
Copy an existing Assessment for use in multiple locations on your site.
Assessments can be used to create tests and surveys for your Courses and Site Pages.
## Duplicate an Assessment
Duplicate an Assessment to use in various locations on your site:
1. Open the **Contacts** tab from the Dashboard.
2. Click **Assessments**.
3. Locate the Assessment you wish to duplicate or [create one](../../contacts/create-manage-and-share-assessments/create-and-customize-assessments).
4. Navigate to the Assessments tools to the right of the Assessment title.
5. Click the `...` **More Options** icon to the right of the Assessment title, then select **duplicate**.
6. The duplicated Assessment will be titled with the original Assessment title and its Copy Number. For example, "Original Title - Copy 1":
Learn more about [duplicating a Product](../../products/courses/how-to-duplicate-your-course-product). Duplicating a Course will not also duplicate the Assessment attached to that Product — the Assessment will still need to be duplicated.
**Note:**
If you encounter an error when attempting to duplicate an Assessment, check any [Automations](../../marketing/automations/automations-overview) that may be attached to the Assessment to ensure that they are set up correctly. If there is an issue with an Automation (e.g., invalid email address in a "Send an email automation") the Assessment may not duplicate successfully. If you do not see an Assessment appear when attempting to attach it, you may first need to create an Assessment or duplicate an existing Assessment to use in a separate Course Lesson.
**Note:**
The Assessment feature inside of Courses has been sunset. This feature may still appear in older accounts. The [Quizzes](../../products/courses/course-quizzes) feature is available inside of Courses and offers advanced functionality. Assessments can still be added to Web Pages.
# Share an Assessment
Source: https://help.kajabi.com/articles/contacts/create-manage-and-share-assessments/how-to-share-an-assessment
Distribute Assessments built in Kajabi through direct links or custom landing pages.
Assessments in Kajabi are great for creating standardized tests and surveys to share with your audience without the need of a Product or Offer.
Share your Assessments built in Kajabi by copying and pasting the Assessment link in your email campaigns and your social platforms.
## Link directly to an Assessment
If you wish to simply link directly to an Assessment without any customization, copy and paste the Assessment link in your email campaigns or social platforms.
To access the Assessment link:
1. Open the **Contacts** tab from the Dashboard.
2. Select **Assessments**.
3. Locate the Assessment you wish to share.
4. Click the **...** menu to the right of the Assessment.
5. Select **Preview**.
6. Copy the URL link in your browser address bar.
When visitors complete the Assessment, they are automatically prompted to subscribe to your email list with their name and email address:
**Note:**
The Assessment opt-in displayed at the completion of an Assessment is generated by default and cannot be customized.
## Share an Assessment using a custom landing page
Create and design a custom landing page for an Assessment:
Learn to [add an Assessment to a landing page](../../website/pages/how-to-add-an-assessment-block) for details.
After designing a custom landing page, copy and paste the page link to your email campaigns or social platforms to share with your audience. [Learn to copy a page link](../../website/pages/how-to-copy-your-page-link)
When site visitors complete an Assessment on a landing page, they are automatically prompted to subscribe to your email list with their name and email address.
**Note:**
The Assessment opt-in displayed at the completion of an Assessment is generated by default and cannot be customized.
# Send Assessment results to Google Sheets
Source: https://help.kajabi.com/articles/contacts/create-manage-and-share-assessments/send-assessment-results-to-google-sheets
Send results to an external source like Google Sheets using Zapier.
**Note:**
Sending an Assessment to Google Sheets with Zapier does not require a paid Google or Zapier account.
## Test an Assessment
**Note:**
Be sure to enable [automatic grading](../../contacts/create-manage-and-share-assessments/create-and-customize-assessments#h_32f6706b-f7a5-48b9-aa9b-bc145daacdcf) for your Assessment to generate results.
To send Assessment results to an external source like Google Sheets, you first need to create an Assessment and enter test data for [Zapier](https://zapier.com/) to collect.
To create test data:
1. Open the **Contacts** tab from the **Dashboard**.
2. Select **Assessments.**
3. Click the **ellipsis** **…** to the right of the **Assessment** you wish to test.
4. Select the **Preview** icon.
5. In Preview mode, complete and submit your Assessment. Your completed Assessment will create results for Zapier to collect when creating your Zap.
## Create a Zap
Now that you have created test data, create your Zap using [Zapier](https://zapier.com/home).
### Create the Trigger
1. In your **Zapier account**, click [Make a Zap.](https://help.zapier.com/hc/en-us/articles/22234847450893-Zaps-quick-start-guide)
2. Choose **Kajabi** as your trigger app.
3. Select **Assessment Completed** as your Trigger.
4. Click **Continue.**
5. Then, select your **Kajabi** **account**.
See [Use Zapier with Kajabi](../../api-integrations/zapier/use-zapier-with-kajabi#h_52bfa2e9-d7e8-4198-8649-f5d77b870574) to connect your Kajabi Account.
6. After connecting your Account, click **Continue**.
7. Select your Site **Name** and Assessment **Title**.
8. Click **Continue**.
9. Then, click **Test trigger** to find data:
Zapier will test the Trigger by pulling the data created previously.
10. Click **Continue** after Zapier locates data from your Assessment test:
If you receive an error message, learn how to [troubleshoot Zapier](../../api-integrations/zapier/troubleshooting-zapier).
## Set up the Action
Before setting up the Action, create your **Google Sheet**. Learn how to work with [Google Sheets in Zapier](https://zapier.com/help/create/format/work-with-google-sheets-in-zaps).
In this example, we'll send the **Customer Name**, **Email**, and Test Grade to a Google Sheet document named **Assessment Results**.
1. Choose **Google Sheets** as your **Action App**.
2. Select **Create Spreadsheet Row**.
3. Then, click **Continue**:
4. Connect your Google Account and click **Continue**.
5. Skip the **Drive** field.
6. Select the Google Sheet title in the **Spreadsheet** field.
7. Select the **Worksheet** from the dropdown. If you have not changed the worksheet name in your Google Sheet, it will be **Sheet1**.
8. After selecting the Spreadsheet and Worksheet, Zapier will pull the header titles you created in your Google Sheet. Proceed by matching each header title to the appropriate Kajabi data:
9. Click **Continue**.
10. Test your Zap by clicking **Test & Continue**.
11. Testing your Zap will send the sample data to your Google Sheet. Check your Google Sheet to ensure your Zap has been set up correctly.
## Turn on the Zap
After checking your Google Sheet, give your Zap a name and turn it on to begin sending Assessment results to your Google Sheet.
**Note:**
Assessments inside of **Courses** have been sunset. This feature may still appear in older accounts. [Quizzes](../../products/courses/course-quizzes) are available inside of Courses and **Offers'** advanced functionality. Assessments can still be added to **Web Pages**.
# View and grade Assessment results
Source: https://help.kajabi.com/articles/contacts/create-manage-and-share-assessments/view-and-grade-assessment-results
View, grade, and export Assessment results from completed submissions.
## Automatic vs. manual grading
If your Assessment consists of multiple-choice or multiple-selection questions, you have the option to have these questions automatically graded when a user completes the Assessment.
[Learn how to enable automatic grading in an Assessment.](../../contacts/create-manage-and-share-assessments/create-and-customize-assessments#h_32f6706b-f7a5-48b9-aa9b-bc145daacdcf)
**Tip:**
When using automatic grading, send an email to your Assessment submitter with a link to the results of their completed, graded assessment using [After Submission Settings](../../contacts/create-manage-and-share-assessments/create-and-customize-assessments).
For paragraph or file upload Assessment questions, you can view and export the results of a completed Assessment to see the details of each question response.
**Tip:**
If you include more than one question type in your auto-graded Assessment, only the multiple-choice and multiple-selection questions will be automatically graded. Paragraph and file upload questions won't be auto-graded or included in the total percentage completed.
If you choose to create an Assessment that is automatically graded, the results will display a **Passed** status and a **Percentage** value for each Assessment submission. If your Assessment is not set to automatically grade each submission, all results will display as Passed.
**Automatically graded:**
**Manually graded:**
## View Assessment results
To view the results of an Assessment:
1. Open the **Contacts** tab from the Dashboard.
2. Select **Assessments**.
3. Click the **Title** of the [Assessment](../../contacts/create-manage-and-share-assessments/create-and-customize-assessments) you wish to view.
4. Select the **View Results** tab.
5. View each contact's responses by clicking their email address or by exporting the Assessment results:
## Export Assessment results
To export results in CSV format:
1. Open the **Contacts** tab from the Dashboard.
2. Select **Assessments**.
3. Click the title of the **Assessment** you wish to export.
4. Select the **View Results** tab.
5. Click the **Export** button at the top right of the page:
Your exported Assessment results will be sent to the email associated with your Kajabi account. Check your email inbox for an email from our support team with the **Subject line** "Assessment results export completed!".
From that email, download your exported Assessment results (a CSV file) to see more details for each submission.
**Automatically graded:**
**Manually graded:**
**Note:**
Assessments inside **Courses** have been sunset. They may still appear in older accounts. [Quizzes](../../products/courses/course-quizzes) are available inside Courses and **Offers**' advanced functionality. Assessments may still be added to **Web Pages**.
# Compare Quizzes and Assessments
Source: https://help.kajabi.com/articles/contacts/create-manage-and-share-assessments/what-is-the-difference-between-quizzes-and-assessments
Understand the differences between Assessments and Quizzes and when to use each.
Quizzes and Assessments serve different purposes in Kajabi. Quizzes are designed for testing student knowledge within Courses, while Assessments are marketing tools for your Website and Landing Pages.
## Quizzes
Quizzes can be used to test your students' understanding of your Course content, to let them submit files like worksheets or designs, or to simply gain insight into their experience with your Course.
[Learn more about Quizzes and how to add a Quiz to a Course.](../../products/courses/course-quizzes)
## Assessments
Assessments can be added to your Website and Landing Pages to assess your members' prior experience and knowledge, to survey your site visitors, or to gather data to help you better tailor your content. This can be a vital marketing tool to gain a better understanding of your audience and their needs.
[Learn more about Assessments and how to add an Assessment to your site.](../../website/pages/how-to-add-an-assessment-block)
**Note:** Assessments inside Courses have been sunset. This feature may still appear in older accounts. Quizzes are available inside Courses and offer advanced functionality. Assessments can still be added to Website Pages.
## Grading options
Unlike Assessments, Quizzes offer a manual grading option for short-answer and file upload questions, as well as the capability to share feedback on the Quiz results.
While both Quizzes and Assessments can be configured as graded or non-graded, only graded Quizzes let you choose whether or not you want to set a passing grade percentage (this is mandatory for graded Assessments).
# Export product purchase history by customer
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/can-i-export-a-history-of-all-products-bought-by-customer-and-date
Generate an Offers Sold Report showing which products were purchased by each customer and when.
Yes. You can generate an [Offers Sold Report](../../analytics/report-offers-sold) on Kajabi that will show you which of your Products were purchased by each of your customers and when.
# Export registrations for trainings and webinars
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/can-i-export-registrations-for-in-person-trainings-and-webinars-andor-sold-digital-courses-including-product-details-xlsx-or-json
Export Offers sold for in-person trainings and webinars via a CSV file.
Yes, you can export Offers sold for in Person Trainings and Webinars via a CSV file.
# Resubscribe an accidentally unsubscribed contact
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/can-i-resubscribe-a-contact-if-i-accidentally-unsubscribe-them
Recover contacts that were unsubscribed by accident using a Double Opt-in Form.
Accidentally unsubscribed a contact? Accidents happen. Here is how to recover unsubscribed contacts.
## What does it mean to manually resubscribe
Subscribers are contacts that have provided the proper permissions expressing consent to receive your marketing emails. Manually resubscribing a contact after having unsubscribed may result in non-compliance with various electronic communication and/or data privacy laws. If your contact has been unintentionally unsubscribed, it is best to organically allow your contacts to resubscribe to your marketing emails with a Form Submission on your site.
Be sure to consult with legal counsel in your area to familiarize yourself and interpret the various email laws that may be applicable to you and your recipient's country/region before applying the information found in this guide.
**Note:** If a contact is unsubscribed from an [Email Sequence](../../marketing/email-campaigns/how-to-subscribe-contacts-to-an-email-sequence) and resubscribes, they will not receive any emails from the sequence. Our teams are actively working to resolve the issue.
## Resubscribe unsubscribed contacts
To resubscribe a contact that may have been unsubscribed due to a typing error or a change in the email address, complete a Double Opt-in Form for your contact. Using a Double Opt-in Form will require your contact to confirm their desire to subscribe to your marketing emails and can help aid in staying compliant with email laws (see Disclaimer).
First, **[create a Double Opt-in Form](../../marketing/forms/how-to-set-up-a-form-with-double-opt-in)** you wish to use to resubscribe unsubscribed contacts. Be sure to include any applicable [custom Fields](../../marketing/forms/how-to-add-and-edit-fields-on-a-form) to capture additional information associated with your contact(s).
After creating your Double Opt-in Form, complete the Form with your subscriber's correct information:
* Open the **Marketing** tab from the Dashboard.
* Click **Forms**.
* Select the Double Opt-in Form you created to resubscribe unsubscribed contacts.
* Click **Preview** in the top menu.
* Enter the correct contact information in the Form.
* Then, **Submit** the Form.
Because it is a Double Opt-in Form, your contact will be required to confirm their desire to subscribe by clicking **Confirm subscription** in the subscription confirmation email received in their email inbox:
If your contact does not wish to subscribe, they can choose to ignore the email received and remain unsubscribed.
The Double Opt-in Confirmation Email is an automated email sent by your site when double opt-in is enabled on a Form. Read [how to edit the automated emails sent by your site](../../account-settings/notifications/edit-automated-email-notifications) if you wish to customize the text included in your automated email. Locate the Double Opt-In Email to customize.
**Note:** If you [re-import](/articles/contacts/manage-your-contacts/how-to-import-contacts-into-kajabi) a deleted contact, their previous information will not be restored. Attempting to resubscribe a contact by deleting and re-importing will require a double opt-in confirmation from the contact to resubscribe the deleted contact to your marketing emails.
## Disclaimer
*This Article and other materials posted on our website is offered for informational purposes only and is not intended to constitute legal advice. Do not rely on the information found here without consulting a licensed attorney in your location for your specific circumstances. It is ultimately your responsibility, and you hereby release Kajabi from all responsibility, to determine the laws or regulations, including international laws, applicable to you or the emails you send through Kajabi. It is always best to be familiar with ALL opt-in, opt-out, email, and spam legislation that may be applicable to you and your recipient's country/region.*
# Link multiple learners to one customer account
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/can-multiple-learners-be-linked-to-one-customer-account
Each customer requires their own account to access purchased or granted goods and services.
No, each customer will need their own account to access their purchased/granted goods and services.
# Update customer settings
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/customer-update-of-customer-settings
Customers can update their account information, email preferences, billing, and password from their settings.
Your customers can update their own information, including email preferences, contact information, billing information, Tax ID, and password by logging into their account to access their **Customer Settings**.
## Access customer settings
1. After logging in, the customer must click their **Avatar** in the top right corner of the page.
2. Select **Settings** from the dropdown.
3. Here, they can edit their information:
**Note:**
Customers can also access their Settings through their mobile device by following the same steps as shown above. However, a mobile user will not be able to access these settings if the [user menu is removed from the Library page header](../../website/pages/how-to-add-a-user-menu-to-your-page-header).
## Customer settings descriptions
### Contact Information
When your customers update their **Contact Information**, the changes automatically synchronize across your contacts and update their **Receipt** details, including receipts for previous transactions.
* **Full Name**
* **Email**
* **Tax ID**
* **Address**
* **Note**
### Profile Settings
Profile Settings include:
* **Timezone**
* **Notification Preferences**
* **Upload** and **change their Avatar image** (i.e., User Menu Icon)
### Social Profile
Social Profile settings are displayed publicly in your Community and customers can also choose to share it in your customer directory.
* **Bio**
* **Location**
* **Social media links** (Facebook, Instagram, Twitter)
* **Share profile information with other members** toggle
**Note:**
Your customers can choose to opt-in to your customer directory and include their social links with their social profile only if your website pages were built using the [Website Builder](../../website/pages/customizing-your-website-pages-with-the-website-builder).
### Password
Your customer may also update their **Password** in Customer Settings.
## Customer billing information
Your customers may:
* View and update their **Credit Card** Information
* View or cancel their **Active Subscriptions** if enabled:
See [enable customer subscription cancellations](../../contacts/manage-your-contacts/enable-and-disable-customer-subscription-self-cancelations) for more details.
**Note:**
If a customer has an active subscription from a payment processor that you have [detached](../../api-integrations/payment-integrations/detach-stripe-and-paypal-from-kajabi) from Kajabi, the Billing Information section will not be visible or accessible.
Your customers will no longer have the ability to cancel or update their cards if their active subscription was processed through a detached payment processor (i.e., detached PayPal or Stripe). Instead, you will need to [manually cancel or remove their cards from Kajabi](../../contacts/manage-your-contacts/how-to-manage-your-contacts-profiles) or Stripe.
## Customer purchase history
Your customer can view all the **Offers** they have purchased and the **Products** they have been [granted access](../../sales/offers/how-to-grant-an-offer) to.
They can also view and download their **Receipts**:
**Note:**
When a customer updates their Contact Information, the changes will automatically synchronize and update their Receipt details, including Receipts for previous transactions.
# Understand comment retention after revoking access
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/do-comments-in-a-product-remain-for-customers-that-have-their-offer-access-revoked
Customer comments in a Product remain unless the contact or comment is manually deleted.
Comments in a Product made by a customer will remain unless the contact or the comment is deleted.
If you [revoke access to an Offer](../../contacts/manage-your-contacts/revoke-product-access-from-a-customer) for the customer, their comments will still remain in the Product unless deleted.
[Learn to manage comments](../../products/courses/how-to-manage-course-comments).
# Email and contact list enhancement FAQs
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/email-contact-list-enhancement-faqs
Answers to common questions about email and contact list enhancements to improve deliverability.
Have questions about the improvements being made to your email and contact list? Below are the answers to the most common questions about email and contact list enhancements.
## Upcoming changes
Improvements and features are being added to improve your contact list management and boost your email deliverability.
These ensure you have innovative email tools with much-needed protection, reliability, and stability.
These improvements have one simple goal: helping you get more of your emails in more inboxes.
### Summary of changes
* Filter out high-risk contacts during import
* Understand the risk levels of your contacts
* Use reCAPTCHA to prevent abuse
* Protect your lists from suspicious activity
* Identify and exclude inactive contacts from email sending
* Automate spam trap detection
* Operational enhancements for transactional emails
[Learn more about the email and contact list enhancements on the Kajabi blog.](https://kajabi.com/blog/email-deliverability-product-improvements)
## Overall changes FAQs
### How do all these changes benefit me?
These changes and investments are being made because of the important role email plays in helping your business thrive.
Specifically, this set of updates and enhancements to the contact list and deliverability functions of the platform will result in more of your emails in more of your contacts' inboxes.
### Are my contacts being unsubscribed?
No, your contacts are not being unsubscribed as part of this process.
### Do I have to delete my contact list?
No, you will not have to delete your contact list.
However, it is good practice to clean your list regularly.
Kajabi will help you maintain a healthy mailing list by identifying and informing you of any action steps for inactive or high-risk contacts.
[Learn the best practices for growing and maintaining a healthy mailing list.](../../marketing/email-campaigns/best-practices-for-growing-and-maintaining-your-contact-lists)
### Can I opt-out of these changes?
No, these updates are being put in place to strengthen your email deliverability.
With these updates in place, you'll have a higher and more consistent sending reputation.
## Stronger contact import validation
Email validation processes are being enhanced to improve email deliverability and performance.
[Learn more about email address validation.](../../contacts/manage-your-contacts/how-email-address-validation-and-contact-exclusion-helps-you-maintain-a-healthy-mailing-list)
### How will this affect me during the import process?
You may notice that certain contacts do not successfully import.
This is because they are identified as high-risk contacts that may be detrimental to your email deliverability and sender reputation.
If a specific contact is identified as a high-risk contact you will receive an email notifying you of the specific contact and the reason they were not successfully imported.
### Will current contacts be affected by the validation process?
Your current contacts will remain on your list. However, with the latest updates, Kajabi will analyze your contacts and flag high-risk and inactive email addresses and exclude them from receiving your marketing emails. [Learn more about email address validation and contact exclusion.](../../contacts/manage-your-contacts/how-email-address-validation-and-contact-exclusion-helps-you-maintain-a-healthy-mailing-list)
If a high-risk contact is added to your site, but they visibly engage with your emails they will not be excluded from receiving your marketing emails.
## Use reCAPTCHA to prevent abuse
### What is a reCAPTCHA?
The reCAPTCHA is a Google service that will limit automated abuse by protecting your contact lists and business from bots.
Rather than the manual approach of checking boxes with certain images in them, the invisible reCAPTCHA is only invoked when it detects malicious traffic.
### How will reCAPTCHA impact current Forms?
reCAPTCHA has been added to your **Form Settings** to allow you to activate or deactivate reCAPTCHA on Forms that do not use Double Opt-In.
[Learn how reCAPTCHA can help you maintain a healthy mailing list.](../../contacts/manage-your-contacts/how-recaptcha-helps-you-maintain-a-healthy-mailing-list)
### Do I need to add the reCAPTCHA to Forms myself or will they automatically appear?
Your Forms can include a reCAPTCHA if you enable the setting in your **Form Settings**. This will ensure that any Forms that do not use Double Opt-In activate reCAPTCHA if necessary.
[Learn how to activate and deactivate reCAPTCHA.](../../contacts/manage-your-contacts/how-recaptcha-helps-you-maintain-a-healthy-mailing-list)
### Can I disable reCAPTCHA on Forms?
Yes, reCAPTCHA will be available in your **Form Settings** which will allow you to turn it on and off as desired.
[Learn how to activate and deactivate reCAPTCHA.](../../contacts/manage-your-contacts/how-recaptcha-helps-you-maintain-a-healthy-mailing-list)
The reCAPTCHA on opt-in Forms is quickly becoming the industry standard and implementation is being actively informed by your feedback.
For those not interested in reCAPTCHA, you will still have the option to enable double opt-in functionality instead and deactivate reCAPTCHA from your Forms.
[Learn to set up double opt-in on a form.](../../marketing/forms/how-to-set-up-a-form-with-double-opt-in)
### Is my integration affected?
For Forms associated with a third-party integration, the reCAPTCHA will not be affected.
If you are integrated with Zapier, your Zaps will work as intended.
Additional security enhancements are being developed for the future.
## Rate limiting for Forms
### What is rate limiting?
Rate limiting is used to control the rate of web pages that may be requested or submitted by any one person or bot.
### How will this protect me?
Rate limiting can be used to prevent DoS attacks, bots, and limit web scraping.
This will ensure that your forms are protected from bots that attempt to mass submit emails to your site.
## Identify and exclude inactive contacts from email sends
To help improve deliverability, a filtration process is being created to identify and exclude inactive contacts from receiving your marketing emails.
### How do I get contacts off of a suppression?
The team is working on ways for you to re-engage your contacts with an opt-in.
### Will these contacts be suppressed from receiving both transactional and marketing emails?
These specific changes will only impact your marketing email sends.
[Learn more about transactional and marketing emails.](../../marketing/email-campaigns/what-are-marketing-and-transactional-emails)
### How will this impact deliverability?
Identifying and excluding inactive contacts from receiving your marketing emails will help preserve your email deliverability rates to ensure that more of your emails consistently land in your recipients' inboxes.
Sending emails to inactive contacts (contacts that do not open or click your emails) can be detrimental to your email deliverability and sender reputation.
This can put you at risk of being flagged for spam and can result in more emails landing in your recipients' spam folder.
[Learn about sender reputation.](../../marketing/email-campaigns/sender-reputation-guide)
### How are inactive contacts defined?
The engineering team is focused on the precise technical definition for inactive contacts and will share an update once the explicit definition and timing of the feature are in place.
### Will contacts be opted out as a result?
Contacts will not be unsubscribed.
Contacts that are marked as inactive will be excluded from your email sends to keep your [sending reputation](../../marketing/email-campaigns/sender-reputation-guide) high.
### What am I supposed to do with inactive contacts?
Capabilities are being developed to help you safely re-engage and reconfirm opt-in status with your inactive contacts.
## Automated detection of spam traps
### What are spam traps?
Spam traps are email addresses that are created or obtained by spam monitoring organizations to lure and identify senders of unwanted emails.
[Learn more about spam traps.](../../marketing/email-campaigns/spam-traps-what-are-they-and-how-to-avoid-them)
### How will I know if my account has violated too many spam traps?
Our support team will reach out to Heroes who run the risk of too frequently violating spam traps with specific remediation steps.
## Operational enhancements for transactional emails
### What actual work is being done to enhance and protect transactional emails?
The multiple types of transactional emails sent on your behalf are being distinguished, and improved transactional sending domain management is being introduced.
### How does this benefit me?
This will provide a better architecture and protection for your transactional emails to ensure that your most critical messages reach your recipients.
## Additional support
* [Demystifying email deliverability](../../marketing/email-campaigns/demystifying-email-deliverability)
* [Best practices for growing and maintaining contact lists](../../marketing/email-campaigns/best-practices-for-growing-and-maintaining-your-contact-lists)
* [Email metrics overview](../../marketing/email-campaigns/email-metrics-overview)
* [Manage and edit existing email campaigns](../../marketing/email-campaigns/how-to-manage-and-edit-existing-email-campaigns)
# Enable and disable subscription self-cancellations
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/enable-and-disable-customer-subscription-self-cancelations
Control whether customers can cancel their own subscriptions, and offer them a pause or a discount before they do.
This article covers the Customer Payments settings that control how customers cancel a subscription on your site, including the retention options you can add to that flow.
**Note:** These settings apply to subscriptions, not payment plans.
## Decide what your customers can do
Every setting in this article lives in **Settings > Customer Payments**. Start with what you want your customers to be able to do:
| If you want to... | Turn on |
| :------------------------------------------------------ | :------------------------------------------------------------ |
| Let customers cancel without contacting you | Enable customers to self-cancel their subscriptions |
| Give customers a way to take a break instead of leaving | Enable customers to pause their subscriptions |
| Make an offer to customers who are already cancelling | Offer discount before cancellation |
| Keep every cancellation going through your team | Leave self-cancellation off and add cancellation instructions |
### Before you decide
Cancellation rules vary by region, and a few of these choices have legal implications worth checking first:
* **Self-cancellation.** Some jurisdictions require that customers be able to cancel a subscription themselves, without contacting you.
* **Two-step cancellation.** Some jurisdictions don't allow it. Verify the laws in your region before turning it on.
* **Pause without cancellation.** If cancellations need to go through your team, pause gives your customers a self-serve option without opening up self-cancellation.
## Enable subscription self-cancellations
**Note:** Your Personal message and Cancellation reasons appear to customers exactly as you write them — the Language setting under **Settings > Site Details** doesn't auto-translate these fields. If your customers speak a language other than English, write both fields in that language directly.
1. Open the **Settings** tab from your Dashboard.
2. Click **Customer Payments** under the Payment Settings header.
3. Check the box labeled "Enable customers to self-cancel their subscriptions"
4. **Two-step cancellation** is on by default. Toggle it off if you'd rather your customers cancel in a single step.
5. Add a **personal message** to acknowledge your customers and give them a reason to reconsider, or use the default message provided.
6. Create up to 8 **cancellation reasons** for cancelling customers to choose from, or use the set of default cancellation reasons provided.
* This allows you to better understand why customers are cancelling and adjust for better retention
* List one cancellation reason per line
* Click **View cancellation report** to review your customer feedback
7. Click **Save** to keep and apply your changes:
**Tip:** Your personal message is the last thing a cancelling customer reads before they confirm. Use it to point them toward the pause or discount option if you've set one up.
## Add a pause or discount option
Two settings in Customer Payments give cancelling customers something other than a goodbye.
Both settings apply to your entire site, not to individual offers. There's no way to enable pauses or discounts for some offers but not others, and the limits you set apply to every eligible subscription you sell. Keep this in mind if you sell subscriptions on different billing intervals. Pause durations and discount lengths are counted in billing intervals, so one setting lands differently across offers: a maximum pause of 2 means two months on a monthly subscription and two years on an annual one.
### **Let customers pause their subscription.**
A **Pause instead** option appears in the cancellation flow, and customers can also pause directly from their Billing page. Pauses run for a set number of billing intervals and begin at the end of the customer's current billing cycle, so they keep access until then. You can cap how long and how often a customer pauses.
For setup steps, duration and frequency limits, and what your customers see, read [Let customers pause their own subscriptions](/articles/contacts/manage-your-contacts/let-customers-pause-their-own-subscriptions).
### **Offer a discount before cancellation.**
Customers see a discount offer before their cancellation goes through. You set the discount title, message, percentage, and how many billing periods it applies to, and you can restrict it to once per customer per subscription.
For setup steps and how the discount interacts with existing coupons, read [Offer a discount when a customer tries to cancel](#).
**Note:** To offer a discount at cancellation is only available to offers purchased through Kajabi Payments. Customers who paid through Stripe or PayPal will not see this option, even if it's enabled in your settings.
## Disable subscription self-cancellations
To remove your customers' ability to cancel on their own:
1. Open the **Settings** tab from your Dashboard.
2. Click **Customer Payments**.
3. Uncheck the box labeled "Enable customers to self-cancel their subscriptions"
4. Optional step: Include **Cancellation instructions** directing customers on how to cancel.
5. Click **Save** to keep your changes: Your customers will see your cancellation instructions directly below the Active Subscriptions section of their Billing Info:

**Note:** Turning off self-cancellation also turns off the discount offer, since that offer only appears inside the cancellation flow. Customer self-pause will continue working.
## What your customers see when they cancel
**Note:** Self-cancellation is only available through a web browser. Members cannot cancel their subscriptions through the Branded Mobile App or the Kajabi Mobile App. Direct them to log in to your site in a browser and navigate to their Billing settings.
Customers reach their subscriptions by logging in, clicking their avatar in the page header, selecting **Settings**, then clicking **Billing**. From there they click the 3 dots \[...] next to a subscription and choose **Cancel subscription**.
Cancelling customers always see your personal message and your cancellation reasons, whether two-step cancellation is on or off. Once they confirm, they keep access until the end of their current billing cycle.
### With a pause or discount option enabled
Your customers pass through an extra step or two before the cancellation completes.
**Two-step cancellation on:**
1. Your customer sees your personal message, with **Pause instead** at the bottom if pause is enabled.
2. If they continue, the discount offer appears. They can **Accept offer** to stay at the discounted price, or keep going.
3. If they keep going, they choose a cancellation reason and the cancellation completes.
**Two-step cancellation off:**
1. Your customer sees a single form with your personal message and cancellation reasons.
2. If a discount is enabled, a **Claim offer** section appears on that form. Clicking it opens the offer, where they can accept or return to the form.
3. If pause is enabled, **Pause instead** appears at the bottom of the form.
4. Confirming on the form completes the cancellation.
### PayPal subscriptions
PayPal cancellations finish outside of Kajabi, so the flow works differently:
1. Your customer clicks **Cancel subscription** next to the PayPal subscription and sees your personal message and cancellation reasons.
2. They click **Continue to Paypal** and are redirected to PayPal, logging in if prompted.
3. They select the merchant whose agreement they want to cancel.
4. They click **Cancel**.
5. They confirm and click **Cancel Automatic Payments**. Once confirmed, their subscription payments stop and you no longer receive payments for that subscription.
**Note:** The discount offer doesn't appear for PayPal subscriptions. \[VERIFY: whether Pause instead appears for PayPal and Stripe subscriptions, or Kajabi Payments only.]
## After a customer cancels
Your customer keeps access to their Offer subscription until the end of their current billing cycle. They can view the canceled subscription and its access end date in their Billing Information.
## Frequently asked questions
**Do I have to allow self-cancellation to let customers pause?**
No. Customer self-pause is its own setting. Leave self-cancellation off and your customers can still pause from their Billing page.
**Do I have to allow self-cancellation to offer a discount?**
Yes. The offer appears inside the cancellation flow, so it only works when customers can cancel on their own.
**Can customers see both a pause option and a discount offer?**
Yes, if you enable both. They appear at different points in the flow.
**Does the discount offer replace a coupon my customer already has?**
Yes. Accepting a cancellation discount replaces any existing coupon on that subscription completely, even if the coupon would have lasted longer. See [Offer a discount when a customer tries to cancel](#) for details.
**Will my personal message still appear if I set up a discount?**
Yes. Your personal message and the discount copy are separate fields serving different steps of the flow.
**Disclaimer:** This article and other materials posted on our website are offered for informational purposes only and is not intended to constitute legal advice. Do not rely on the information found here without consulting a licensed attorney in your location for your specific circumstances. It is ultimately your responsibility, and you hereby release Kajabi from all responsibility, to determine the laws or regulations, including international laws, applicable to you and your business. It is always best to be familiar with ALL laws, rules, regulations, and legislation that may be applicable to you and your recipients' country/region.
# Maintain a healthy mailing list with auto unsubscribe
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/how-auto-unsubscribe-helps-you-maintain-a-healthy-mailing-list
Auto unsubscribe removes Hard Bounced and Complained contacts to improve deliverability and ensure content reaches inboxes.
Kajabi helps you nurture a healthy contact list by **automatically unsubscribing** Hard Bounced and Complained contacts. The next time you send an email, you can feel confident knowing it will reach its intended destination. Auto unsubscribe improves your deliverability and ensures that your content reaches your subscriber's inbox.
## Understand auto unsubscribing
First, review what a Hard Bounced and Complained email means.
**Hard Bounces** (permanent failures) can occur if:
* The email address no longer exists
* The email address is invalid
* The domain doesn't exist
**Complained** emails are reported when a recipient marks an email campaign as spam.
Kajabi helps you with your [Hard Bounced and Complained Emails](../../marketing/email-campaigns/email-metrics-overview) by automatically unsubscribing the email address from your **Contacts** tab.
If a contact consistently hard bounces on the same site within a 4-day period (at least twice) Kajabi automatically unsubscribes the email address from your **Contacts** tab.
Unsubscribing contacts that have Hard Bounced or Complained reduces future bounce rates, helps maintain a good sender reputation, and helps you keep your contact list clean.
Learn more about [sender reputation](../../marketing/email-campaigns/sender-reputation-guide) for details.
## Review a contact list
Review your list and learn more about the subscription status of your contacts.
### Subscription status
View your contacts' subscription status and locate the contacts that have never subscribed, are subscribed, and have unsubscribed.
Included with the Unsubscribed status is the action that triggered the unsubscribe:
* **Bounced**: If a contact is determined to be permanently undeliverable, the contact is automatically unsubscribed.
**Note:** You may encounter contacts in your hard bounced segment that remain subscribed. Your contacts will remain subscribed unless they are determined to be permanently undeliverable. As such, contacts may not be unsubscribed immediately upon a hard bounce.
* **Manual Unsubscribe**: You or one of your authorized users unsubscribed the contact. Or the contact manually unsubscribed from your email marketing by updating their [email preferences](../../contacts/manage-your-contacts/how-your-customers-can-update-their-email-preferences) from their account.
* **Opted out**: Contact opted out from receiving your marketing emails by clicking unsubscribe in the footer of the email received.
* **Marked spam**: Contact marked the email as spam in their inbox.
* **Never Subscribed**: Contact [added to the Contacts tab](../../contacts/manage-your-contacts/how-to-import-contacts-into-kajabi) without subscribing to marketing emails.
### Contacts view
1. Open the **Contacts** tab from the Dashboard.
2. Click through the Segments in the top menu and filter your contacts.
3. Locate the **Subscription Status** column to quickly view your contact subscription status.
### Contact info view
1. Open the **Contacts** tab from the Dashboard.
2. Search for the contact you wish to view.
3. Select your contact.
4. Open the **Info** tab.
5. Locate the **Subscription Info** header:
## Resubscribe unsubscribed contacts
**Note:** Contacts imported via CSV are not subscribed to marketing emails by default and will show a **Never Subscribed** status, unless you select the **Subscribe to marketing emails** bulk action during import. Without that, imported contacts won't receive broadcasts or sequences until they opt in themselves, such as through a form submission. See [Import contacts into Kajabi](/articles/contacts/manage-your-contacts/how-to-import-contacts-into-kajabi#bulk-actions).
### Quick resubscribe (single contact)
For a single contact, it's often faster to share the link to a page with your Double Opt-in form embedded directly with the contact and have them submit it themselves, rather than completing the form on their behalf using the steps below.
As you maintain and review your **Contacts** tab, you may find emails that have been mistakenly unsubscribed due to a typing error when entering the email address, or a contact may have changed their email address.
To resubscribe a contact that may have been unsubscribed due to a typing error or a change in email address, complete a Double Opt-in Form for your contact. Using a Double Opt-in Form will require your contact to confirm their desire to subscribe to your marketing emails and can help aid in staying compliant with email laws (see Disclaimer).
If your customer wishes to resubscribe to your marketing emails from their account, read [update email preferences](../../contacts/manage-your-contacts/how-your-customers-can-update-their-email-preferences).
First, [create a Double Opt-in Form](../../marketing/forms/how-to-set-up-a-form-with-double-opt-in) to resubscribe unsubscribed contacts. Be sure to include any applicable [custom fields](../../marketing/forms/how-to-add-and-edit-fields-on-a-form) to capture additional information associated with your contact(s).
After creating your Double Opt-in Form, complete the form with your subscriber's correct information:
1. Open the **Marketing** tab from the Dashboard.
2. Click **Forms**.
3. Select the Double Opt-in Form you created to resubscribe unsubscribed contacts.
4. Click **Preview** in the top menu.
5. Enter the correct contact information in the form.
6. Then, **Submit** the form.
Because it is a Double Opt-in Form, your contact will need to confirm their desire to subscribe by clicking **Confirm subscription** in the subscription confirmation email received in their email inbox:
If your contact does not wish to subscribe, they can choose to ignore the email received and remain unsubscribed.
The Double Opt-in Confirmation Email is an automated email sent by your site when the double opt-in is enabled on a form. Read [edit automated email notifications](../../account-settings/notifications/edit-automated-email-notifications) if you wish to customize the text included in your automated email. Locate the Double Opt-In Email to customize.
**Disclaimer:** Manually resubscribing a contact after having unsubscribed may result in non-compliance with various electronic communication and/or data privacy laws. If your contact has been unintentionally unsubscribed, it is best to organically allow your contacts to resubscribe to your marketing emails with a form submission on your site. This article and other materials posted on our website is offered for informational purposes only and is not intended to constitute legal advice. Do not rely on the information found here without consulting a licensed attorney in your location for your specific circumstances. It is ultimately your responsibility, and you hereby release Kajabi from all responsibility, to determine the laws or regulations, including international laws, applicable to you or the emails you send through Kajabi. It is always best to be familiar with ALL opt-in, opt-out, email, and spam legislation that may be applicable to you and your recipient's country/region.
# Understand Kajabi login reminders for customers
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/how-kajabi-reminds-your-new-customers-to-log-in
Kajabi automatically sends login reminders to customers after they purchase or are granted an Offer.
All customers will receive an automated email after purchasing or being granted an Offer with a link to the Login Page of your site.
This link can also be reached with your URL with the addition of **/login**. For example, your login page would be **yourdomain.com/login**.
Depending on how the Customer received access to an Offer will determine the automatic emails they receive.
* **Purchased an Offer**: Your Customer will receive the Purchase Confirmation Email containing a congratulatory message and the link to the Login Page of your site. [View the purchase flow of a Customer](../../sales/offers/what-happens-when-a-customer-purchases-my-offer) for details.
* **Granted an Offer**: Your Customer will receive the Offer Grant Confirmation email containing a congratulatory message and the link to the Login Page of your site and the Customer Welcome email with login credentials. If the Offer is granted to an existing Customer, your Customer will only receive the Offer Grant Confirmation email. [Edit the automated emails sent by your site](../../account-settings/notifications/edit-automated-email-notifications) to customize these messages.
If your Customer has misplaced their login information, [reset a customer's password](../../contacts/manage-your-contacts/how-to-reset-your-customers-password) to restore access.
**Note:** Your Customer may receive additional emails if configured in the [Offer After Purchase Settings](../../sales/offers/how-to-include-additional-settings-for-your-offer).
# Maintain a healthy mailing list with reCAPTCHA
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/how-recaptcha-helps-you-maintain-a-healthy-mailing-list
Validate form submissions and protect your site from spam using reCAPTCHA to build a high-quality contact list.
Kajabi helps you build and maintain a healthy mailing list consisting of high-quality contacts by helping you validate your form submissions.
## What is reCAPTCHA?
To protect your website from spam and abuse, a Google service, reCAPTCHA, ensures that each contact submitted to your site is reputable.
When it comes to protecting your site and designing a frictionless, user-friendly interface we do not take it lightly.
That is why Kajabi has implemented reCAPTCHA to protect your site with the least obtrusive type available.
You may recognize reCAPTCHA from various sites that prompt you to perform the task of selecting images of crosswalks, traffic lights, or cars.
Rather than the manual approach of checking boxes with certain images in them, the invisible reCAPTCHA is only invoked when it detects potentially malicious traffic.
[Learn more about reCAPTCHA](https://developers.google.com/recaptcha/docs/versions).
## How reCAPTCHA helps a business
Forms on Kajabi are set to use double opt-in by default, but if you choose to disable double opt-in, your Forms may be at risk for disreputable submissions.
[What is a double opt-in?](../../marketing/forms/how-to-set-up-a-form-with-double-opt-in#h_01EH2M6P3MQHHQWTZ33B3FND2X)
**This is where reCAPTCHA can help.**
With reCAPTCHA, Forms that do not use double opt-in will still be protected by preventing bots or other potentially malicious individuals from completing your Forms.
With Kajabi, you can feel confident knowing that your site is protected so that you can continue to share the value you have to offer with a healthy mailing list.
## Enable reCAPTCHA
1. Open the **Settings** tab from your Dashboard.
2. Click **Form Settings** under the Site Settings section.
3. Then, click **Add reCAPTCHA to single opt-in forms** to enable.
4. Confirm the prompt to complete the process:
# Cancel a customer's subscription
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/how-to-cancel-your-customers-subscription
End future payments and remove access to the Products included with a customer's subscription.
Keep in mind that deleting a Product or Offer will not cancel a customer's subscription, whereas canceling the subscription will end future payments.
**Note:** Looking to give your customers access to canceling their own subscriptions? [Enable customer subscription self-cancelations](/articles/contacts/manage-your-contacts/enable-and-disable-customer-subscription-self-cancelations) to allow this. You can also give customers something other than a cancellation. If you turn on either option, a customer who starts to cancel is offered it before the cancellation completes, and may take it instead. See [Let customers pause their own subscriptions](/articles/contacts/manage-your-contacts/let-customers-pause-their-own-subscriptions) and [Offer a discount when a customer tries to cancel](/articles/contacts/manage-your-contacts/offer-a-discount-when-a-customer-tries-to-cancel).
**Tip:** If your customer wants a temporary break rather than an ending, pause the subscription instead. A canceled subscription cannot be reinstated and the customer has to purchase the Offer again, while a paused subscription stays in place and resumes. See [Pause a customer's subscription or payment plan](/articles/contacts/manage-your-contacts/pause-your-customers-subscription-or-payment-plan).
## Cancel subscriptions, payment plans, and access
You can end a customer's subscription or payment plan and remove access to the Product(s) included with the Offer for payment plan Offers and recurring subscription Offers.
Canceling payments from the Purchase Information page on Kajabi will end the subscription for payments processed through Kajabi Payments, Stripe, and PayPal.
**Note:** If you are manually upgrading or downgrading a Customer's Subscription, first cancel their original Offer in order for your customers to purchase the upgraded or downgraded Offer.
No further charges will occur if the cancellation is scheduled within the current billing cycle. However, if the cancellation date is set beyond the current billing cycle, the customer will be charged for all billing cycles up to that date, including a prorated amount if it does not align with a full billing cycle. Additionally, any failed payment retries will continue until they are successfully processed or exhausted.
### Cancel payments and product access
1. Open the **Sales** tab from your Dashboard.
2. Select **Payments.**
3. Click **Subscriptions.**
4. Open the **More Actions** menu (…) for the subscription you wish to cancel.
5. Click **Cancel Payments**.
6. Select the date to cancel payments and access:
* **End of the Current Billing Period** - The customer retains access through the remainder of the billing period already paid for. The subscription then ends and no further recurring or scheduled payment will be charged.
* **On a Custom Date**.
* **Cancel Now**.
7. Click **Cancel Payments** to confirm:
**Note:** View the Payments Overview to analyze, manage, and cancel future payments for customer subscriptions and payment plans. [View the Payments page overview](../../sales/offers/the-payments-page-overview) for details.
## Stop a pending cancellation
If a customer would like to resume their subscription and does not want to cancel after all, you can stop the pending cancellation and resume subscription payments. Payments will resume on the previously scheduled subscription date.
**Note:** A pending cancellation is not the same as a pending pause. A pending cancellation ends the subscription at the end of the billing period. A pending pause stops billing temporarily and the subscription resumes later. Stopping a pending cancellation uses the steps below; canceling a pending pause is done by the customer from their Billing page.
### Resume payments after a pending cancellation
1. Open the **Sales** tab from your Dashboard.
2. Select **Payments.**
3. Click **Subscriptions.**
4. Use the **Filter** button to open the filter menu.
5. Under **Status**, uncheck **Active** then check **Pending Cancellation.**
6. Select **Show Results** to filter your subscription list to only show Pending Cancellations.
7. Open the **More Actions** menu (**…**) for the subscription you wish to resume.
8. Select **View Subscription**.
9. On the Subscription page, open the **More Actions** menu (…)
10. Click **Don't Cancel Payments**.
11. Confirm by clicking Don't cancel payments in the pop-up menu:
## Related articles
* [What happens when a customer subscription is canceled](/articles/sales/offers/what-happens-when-a-customer-subscription-is-canceled)
* [Pause a customer's subscription or payment plan](/articles/contacts/manage-your-contacts/pause-your-customers-subscription-or-payment-plan)
* [Enable and disable subscription self-cancellations](/articles/contacts/manage-your-contacts/enable-and-disable-customer-subscription-self-cancelations)
# Change a customer's start date
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/how-to-change-a-customers-start-date
Adjust a customer's start date to grant access to dripped content in a Product.
Changing a customer's start date can be necessary for a variety of reasons. Most commonly, changing the start date may be helpful for granting access to all the content in a Product that is set to drip for a specific customer.
## Change a customer's start date
1. Open the **Contacts** tab from your Dashboard.
2. Select **All Contacts**:
3. Search the Customer's name or email address.
4. Select the **Customer** you want to change to open their profile.
5. Click **Open Full Profile**:
6. Select the **Purchases** tab in the top menu:
7. Click **More Info** next to the Offer you want the change applied to:
8. Click on the `…` icon to open more options.
9. Select **Edit access start date**.
**Note:** Changing the Start Date has no affect on the payment structure set up in the Offer.
# Re-engage inactive subscribers
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/how-to-re-engage-inactive-subscribers
Identify dormant subscribers, send a re-engagement email campaign, and unsubscribe contacts that do not re-engage.
## Re-engaging
Your email list is a crucial asset to your online business. But a large list is not as valuable as a list filled with **active** email subscribers.
Inactive contacts can be detrimental to your sending reputation, disastrous for your email deliverability, and can ultimately decrease your ability to reach your intended audience.
**But instead of tossing them out the door as soon as they identify themselves as inactive, send a re-engagement email.**
Before cleaning out your entire list of inactive contacts, try sending an email broadcast to remind them why they subscribed to your email list in the first place.
Remind your subscribers of the value you have to offer and the relevant content you deliver. With a re-engagement strategy, you can retain subscribers while maintaining a healthy email list.
## Identify inactive subscribers
Begin your re-engagement process by first identifying inactive subscribers to reach out to.
With Kajabi, your Contacts tab contains all the contacts added to your site and can help you easily filter and locate your inactive subscribers.
### To identify inactive subscribers
1. Open the **Contacts** tab from your Dashboard. [Learn more](/articles/contacts/manage-your-contacts/apply-filters-to-your-contacts-tab)
2. Click **Filters**.
3. Select your **Category**, **Conditional**, and **Value**:
* Category: **Email Activity**
* Conditional: **Was delivered**
* Value: **90 days**
4. Click **+ Add filter** to filter your list further.
5. Select your second **Category**, **Conditional**, and **Value**:
* Category: **Email Activity**
* Conditional: **Was not opened**
* Value: **90 days**
6. Before applying, click **+ Add filter** again to add a third filter.
7. Select your third **Category**, **Conditional**, and **Value**:
* Category: **Email Activity**
* Conditional: **Was not clicked**
* Value: **90 days**
8. After adding three filters, click **Apply Filters**:
Kajabi will apply your custom filters to select the contacts that meet your filters. The remaining list will display your identified inactive subscribers.
## Add a Tag to segment inactive subscribers
With your custom filters, you can create a custom Segment to easily email and re-engage your contacts directly from Kajabi.
To send a re-engagement email to your inactive subscribers, you must first create an identifier to segment when preparing your re-engagement email.
In this example, we will add a Tag to easily filter your inactive subscribers when selecting your email recipients in your Email Broadcast.
### To add a Tag
1. First, complete the previous step if you have not already done so.
2. Then, click **Select All** to bulk select.
3. Open the **Bulk Actions** menu.
4. Select **Add tag**.
5. Create an easily identifiable tag (e.g., reengage) by typing your desired tag title and clicking **enter**.
6. Then, click **Submit** to create your tag:
With the created Tag, you are now prepared to send a re-engagement email to your inactive subscribers.
## Create a re-engagement Email Broadcast
Now is your time to shine! Craft a re-engagement email that:
* Explains why they want to re-engage
* Clearly communicates that non-engagement will result in removal
* Includes a [call to action](/articles/marketing/email-campaigns/add-and-customize-sections-in-email-campaigns) with a link or a button that provides value that only you can provide (i.e., a specific landing page, a webinar, pdf resource, etc.)
Add your branding and personality and give them a reason to re-engage.
With Kajabi, you can customize and design your email broadcast to create an engaging email experience.
### To create a re-engagement email
First, select the Email Broadcast Template that works best with your content.
1. Open the **Marketing** tab from your Dashboard.
2. Select **Email Campaigns**.
3. Click **+ New Email Campaign** on the Email Campaigns dashboard.
4. Select **Email Broadcast**.
5. Click **Continue**:
From there, select the email broadcast template that best fits your design and brand.
After selecting your email template begin the email creation process by first selecting your segmented inactive subscribers:
1. Open the **dropdown menu** to select your email recipients.
2. Click **Custom Segment**.
3. Open the **Select filter** dropdown menu.
4. Select **Has any of these tag(s)**.
5. In the next field, select the title of your re-engagement tag completed in the previous step.
6. Then, click **Apply**.
7. And proceed to customize your email by clicking **Save & Continue**:
Now that you have specified your recipients, begin designing your email to re-engage your inactive subscribers! [Learn to design your Email Broadcast with the Email Visual Editor](../../marketing/email-campaigns/email-visual-editor-overview)
**Note:** Add a call to action to encourage your email recipients to engage with your email campaign. This will be required for the next step.
## Create an Automation
Create an Automation in your Email Broadcast to remove your re-engagement tag if they engage with your email.
This will set you up to easily delete or unsubscribe any inactive subscribers that fail to re-engage.
With this example, we will walk you through the steps of creating an Automation that will remove your re-engagement tag when the link (or call to action button) is clicked in your email broadcast.
This will ensure that contacts that were previously inactive, but show interest again are no longer considered part of your inactive contacts.
In the Edit Content step of your Email Broadcast Builder, scroll to the bottom of the page to add an Automation:
Then, complete the pop up to create your Automation:
1. Open the **WHEN** dropdown menu.
2. Select **Link in email broadcast is clicked**.
3. Select your desired link in your email broadcast.
4. Next, open the **THEN** dropdown menu.
5. Select **Remove a tag**.
6. In the next field, select your re-engagement tag.
7. Then, click **Save** to apply:
## Send the email
Now that you have prepped and designed your re-engagement email, it is time to send to your identified recipients!
After sending your re-engagement email we recommend waiting 3-7 days before deleting or removing your remaining inactive subscribers. This will allow your subscribers time to engage with your email and remain on your email list.
## Unsubscribe subscribers that fail to re-engage
After sending your email broadcast and allowing inactive subscribers to re-engage, clean up your mailing list by unsubscribing the remaining inactive contacts that did not engage with your re-engagement email.
### To bulk unsubscribe inactive subscribers
1. Open the **Contacts** tab from the Dashboard.
2. Click **Filters**.
3. Select your **Category**, **Conditional**, and **Value**:
* Category: **# Tags**
* Conditional: **Has any**
* Value: **Your Re-Engagement Tag Title**
4. Check **Select All**.
5. Open the **Actions** dropdown menu.
6. Click **Unsubscribe** or **Delete**.
7. Follow the prompts.
8. Click **Submit**:
## FAQs
### **Why should I send a re-engagement email before removing inactive contacts?**
Inactive contacts hurt your sender reputation and email deliverability, but that doesn't mean they're a lost cause. A re-engagement email gives you a chance to remind them why they subscribed and recapture their interest. Cleaning your list without trying first means leaving potential subscribers on the table.
### **How do I find my inactive subscribers in Kajabi?**
Use the Contacts tab with three stacked filters under Email Activity: contacts who were delivered an email, did not open it, and did not click it, all within the last 90 days. Apply all three filters together and Kajabi will surface your inactive subscriber list.
### **Why do I need to tag inactive subscribers before sending the re-engagement email?**
You need a way to target just those contacts when creating your Email Broadcast. Adding a tag (like "reengage") lets you select them as a Custom Segment during email setup. Without a tag, you cannot easily target that filtered group as recipients.
### **What should my re-engagement email include?**
It should explain why you are reaching out, clearly communicate that non-engagement will result in removal from the list, and include a call to action. This can be a link or button that leads somewhere valuable, like a landing page, webinar, or downloadable resource. The call to action is also required for the automation step.
### **How do I send the re-engagement email only to inactive contacts?**
When building your Email Broadcast, set your recipients to a Custom Segment and filter by the tag you created for inactive subscribers. Go to **Marketing > Email Campaigns**, create a new Email Broadcast, and select your re-engagement tag under "Has any of these tag(s)" in the custom segment filter.
### **What automation should I set up, and why?**
Create an automation inside the Email Broadcast that removes the re-engagement tag when a contact clicks the link in your email. This automatically separates contacts who re-engage from those who do not. When you go to clean your list, anyone who still has the tag is confirmed inactive and safe to remove.
### **How long should I wait before removing contacts who did not re-engage?**
Wait 3 to 7 days after sending your re-engagement email before taking action. This gives subscribers enough time to open and engage. After that window, filter by your re-engagement tag and use the Bulk Actions menu to either unsubscribe or delete contacts who still have the tag.
### **Can I resubscribe a contact that was accidentally unsubscribed?**
Yes, but you will need to use a Double Opt-In Form. Using a Double Opt-in Form will require your contact to confirm their desire to subscribe to your marketing emails and can help aid in staying compliant with email laws. You cannot manually flip a contact back to subscribed directly. Create the form first, then open it via **Marketing > Forms**, click **Preview**, and fill it out with the contact's correct information. [**Learn more about maintaining a healthy mailing list.**](https://help.kajabi.com/articles/contacts/manage-your-contacts/how-auto-unsubscribe-helps-you-maintain-a-healthy-mailing-list#resubscribe-unsubscribed-contacts)
# Reset a customer's password
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/how-to-reset-your-customers-password
Send a password reset link or create a temporary password for a customer from the Contacts tab.
It is important to note that resetting a customer's password can only be done for those who have access to at least one product and login credentials. You can tell if your contact is a customer by the checkmark next to their name or inside their contact profile under the Contact status section.
**Note:** The password reset link will expire after 6 hours and should be reset in a timely manner. However, if the password reset link has expired by the time your Customer clicks the link, simply repeat the steps to send a password reset link.
## Customer can't log into a site
If your Customer forgets their login, they can click **Forgot Password** on the site login page and Kajabi will send a password reset link to their email inbox:
You can [customize the Login Page](../../website/pages/how-to-build-your-login-page) to match your brand and language.
If the user submits an email address matching the email address of a Customer in your Contacts tab, they will receive a reset password instructions email in their email inbox.
Your customer can reset their password by clicking the link in the email:
**Tip:** If your Customer is unable to locate the password reset email, advise them to double-check the spam or junk folder in their email account.
## Send password to customer email
### Manually send a password reset email to a Customer
1. Open the **Contacts** tab from the Dashboard.
2. Select the **Customer's name** to open their Profile.
3. Click **Reset Password**.
4. Confirm by clicking **Send email**:
**Note:** Don't see the Send Password option in your Admin account? This indicates that the Contact is not yet a Customer. [Learn about the difference between a Contact and a Customer.](/articles/contacts/manage-your-contacts/contacts-tab-overview)
Your Customer will receive an email to reset their password containing the link to reset their password:
## Change a customer's password
Provide your Customer with a temporary password to help them log in to your site. Your Customer can then change their password within their Account Settings. Learn how your Customer can [update their account information](/articles/contacts/manage-your-contacts/customer-update-of-customer-settings).
### Manually create a password for a Customer
1. Open the **Contacts** tab from the Dashboard.
2. Select the Customer's name to open their Profile.
3. Click the `…` icon to open **More Actions**.
4. Select **Change Password**.
5. Enter the Customer's temporary password.
6. Click **Save** to apply:
**Note:** Don't see the Change Password option in your Admin account? This indicates that the Contact is not yet a Customer. [Learn about the difference between a Contact and a Customer.](/articles/contacts/manage-your-contacts/contacts-tab-overview)
After creating the Customer's temporary password, send the Customer their temporary login information through your preferred form of communication.
# Troubleshoot "We could not deliver email" message
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/how-to-troubleshoot-we-could-not-deliver-email-message-for-your-customers
Help customers update their email address and understand the behavior causing this delivery error.
Are your customers seeing a "We could not deliver email to [email@example.com](mailto:email@example.com). Click here to update your email address" message? This guide walks through how to help customers update their email address and explains the behavior causing the error.
## What does this message look like?
If your customers encounter this issue they will see a red alert at the top of their library page:
This message will display on the customer's Library page if there are any issues sending emails to their email address.
## What can cause this message to display?
Possible reasons this message may display:
* Invalid email address
* Incorrect email address
* Temporary sending issues
The alert serves as a reminder for the customer to update their email address.
It is important to note that this does not prevent them from receiving further emails from your site on Kajabi. Additionally, emails that are successfully sent to the customer will clear this error message from their library page.
## Fix a customer's email address
Although this message can display if there is an issue with the validation of a customer's email address, this may be a temporary issue.
Follow the steps listed below to troubleshoot the customer's email error.
### Send another email to the email address
First, attempt to send another email to the email address receiving the message. If the email successfully sends to the customer it will resolve the error message displayed in their library.
**To send an email to a specific email address:**
1. Open the **Marketing** tab from your Dashboard.
2. Select **Email Campaigns.**
3. Click **+ New Email Campaign** on the **Email Campaigns** dashboard.
4. Select **Create Email Broadcast**.
5. In Step 1 of creating an Email Broadcast select the **All Contacts** dropdown.
6. Select **Custom Segment**.
7. In the Add Filter dropdown menu, select **Email contains**.
8. Then, enter the email address of the customer you wish to send your email to.
9. Click **Save & Continue** and complete your email broadcast to send to your customer:
### Change the email address
If the indicator persists, your customer can temporarily change their email address to clear the message. This can be done in the customer's account settings.
After the email has been temporarily replaced, your customer can re-enter their original email address.
**To change a customer's email address from the Contacts tab:**
1. Open the **Contacts** tab from your Dashboard.
2. Select the name or email address of the customer you wish to update.
3. Click **Edit Contact**.
4. Place your cursor in the Email field and enter the temporary email address to replace the customer's existing email address.
5. Click **Save** to apply:
To revert the change, simply re-add the customer's original email address through the same methods listed above.
**Note:**
If your customer prefers to change their email address themselves, [learn how customers can update their account information](/articles/contacts/manage-your-contacts/customer-update-of-customer-settings).
# Unsubscribe a contact from marketing emails
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/how-to-unsubscribe-a-contact-from-marketing-emails
Manually unsubscribe contacts from all marketing emails, including Email Broadcasts, Email Sequences, and Event Emails.
**Important:**
Unsubscribing a contact cannot be undone unless the contact resubscribes.
## Unsubscribe contacts
### To unsubscribe a contact
1. Open the **Contacts** tab from your Dashboard.
2. Click the `...` dropdown menu to the right of the Contact and select **View**.
3. Click the **Info** tab.
4. Then, click **Unsubscribe**:
# Manage customer billing and payment methods
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/how-your-customers-can-manage-their-billing-and-payment-methods
Customers can view, update, and manage the payment methods saved to their account, pause a subscription if you allow it, and understand which subscriptions and payment plans are charged to each card.
Everything on the Billing tab sits under **Manage card payments**. Each saved card is listed with the subscriptions and payment plans it bills, along with the next payment amount and date for each. **Edit** and **Remove** act on the card itself. Actions for a single subscription, including changing its card, pausing it, and cancelling it, sit in the **(⋯)** menu on that subscription's row.
## Access billing settings
To manage their payment methods, customers must first log in to their account on your site. Billing settings can be found at: `/settings/cards>`
1. The customer logs in to your site.
2. Click the **User menu** in the top-right corner.
3. Select **Settings**.
4. Click **Billing**.
**Note:** The **Billing** tab may not appear if the customer was granted the Offer, purchased the Offer using PayPal, or if the active subscription was processed through a payment processor that has since been detached (such as a disconnected Stripe or PayPal account).
* Subscriptions purchased through **PayPal** must be managed within the customer's PayPal account.
* If a payment processor is detached, card management must be handled through the payment processor directly.
## Update the card on file
Customers can manage how their subscriptions are billed using the options available within **Manage Card Payments**. Depending on their goal, they may update card details, switch which card is used for a subscription or payment plan, or remove a card that is no longer needed.
### Edit card
The **Edit** option replaces the selected card with updated card details. This means the existing card on file is overwritten rather than creating a saved card.
**Note:** Billing settings are only accessible through a web browser. They are not available in the Branded Mobile App or the Kajabi Mobile App. Members who need to manage their subscriptions — including cancelling, updating their payment method, or pausing — must log in to your site through a web browser.
To edit a card:
1. Go to **Billing**.
2. In **Manage Card Payments**, locate the card tied to the subscription(s).
3. Click **Edit**.
4. Enter the updated card information.
5. Click **Update Card** to save the changes.
When a card is edited, all subscriptions and payment plans currently using that card will continue to charge the updated card details.
## Change payment method
The **Change payment method** option allows customers to switch which saved card is used for a specific subscription or payment plan.
To change the payment method for a subscription:
1. Go to **Billing**.
2. Locate the subscription under its current card.
3. Click the **(⋯)** menu next to the subscription.
4. Select **Change payment method**.
5. Choose another saved card, or add a card.
6. Confirm the change.
All future payments for that subscription will be billed to the newly selected card.
**Note:** Saved cards from **Stripe** and **Kajabi Payments** are not interchangeable. Customers can only select cards that belong to the same payment processor as the subscription.
## Remove card
The **Remove** option allows customers to delete a saved card from their account.
A card can only be removed if **no active recurring payments** are tied to it. If a card is currently being used for an active subscription or payment plan, it cannot be removed. If the **Remove** option is unavailable, it means the card has active recurring payments and must first be replaced with another payment method.
To remove a card:
1. Go to **Billing**.
2. In **Manage Card Payments**, locate the card you want to remove.
3. Click **Remove**.
4. Confirm the removal.
## Pause a subscription
If you've enabled the customer self-pause setting, customers can pause a subscription from their Billing tab. Pausing stops billing temporarily and keeps the subscription in place, rather than ending it.
**Note:** Self-pause only works for subscriptions billed through **Kajabi Payments** or **Stripe**. It does not apply to **PayPal** subscriptions, and — importantly — pausing a Stripe-billed subscription only stops *future* charges. It does not stop Stripe from continuing to retry any invoice that was already past due *before* the pause started. To stop those retries, the site owner must turn off automatic collection on the specific invoice directly in the Stripe Dashboard (**Invoices** > open the past-due invoice > **...** > **Turn off automatic collection**). Kajabi's own "turn off automatic retries" option only affects Kajabi Payments transactions.
**Note:** Customer self-pause is rolling out gradually and is off unless you turn it on. If **Pause subscription** doesn't appear for your customers, check that the setting is enabled in **Settings > Customer Payments**. See [Let customers pause their own subscriptions](/articles/contacts/manage-your-contacts/let-customers-pause-their-own-subscriptions).
For your customers to pause a subscription:
1. From their Library, click on their user icon in the top right corne.
2. Select **Settings**.
3. Go to **Billing**.
4. Locate the subscription.
5. Click the **(⋯)** menu next to the subscription.
6. Select **Pause subscription**.
7. Choose how long to pause for, if a length is offered.
8. Confirm the pause.
Whether step 5 appears depends on the maximum pause duration you set up. If you set one, customers choose a length from a dropdown, counted in the subscription's billing intervals: months for a monthly subscription, weeks for a weekly one. If you didn't set a maximum, the pause is open-ended and the customer resumes it when they're ready.
### What customers see after pausing
When a customer initiates a pause, it does not begin right away. Because the customer has already paid for the billing period they're in, they keep access until it ends.
1. The subscription shows **Pausing on** followed by the date the pause begins. The customer keeps full access until then, and the payment that would have come due is skipped.
2. On that date the pause begins. The subscription shows **Paused**, along with the resume date if the pause has one, and access ends.
### Stop a pause before it starts
While the subscription still shows **Pausing on** followed by a date, customers can cancel the pending pause from the **(⋯)** menu. The subscription returns to active, billing continues on its normal schedule, and the customer is not charged at that moment.
### Resume a paused subscription
A pause with a resume date restarts on its own, and billing continues on the customer's original schedule. An open-ended pause stays paused until the customer chooses **Resume subscription** from the **(⋯)** menu.
Customers can also resume early, before a scheduled pause has ended. Resuming early charges the customer immediately, restores access right away, and moves their billing date to the day they resumed.
### If the pause option isn't available
Customers won't see **Pause subscription** if you haven't enabled customer self-pause, if the subscription is a payment plan rather than a subscription, or if you have limited how many times a customer can pause in a year and they've reached that limit.
### **Can I update a client’s card for them?**
\*\*As an admin, you cannot update a client’s card from your own dashboard.\*\*The card editing flow described in this article (Edit, Remove, Change payment method) is only available inside the **customer’s own account**— they must be logged in to their account on your site to access it.
## Cancel a subscription
Customers can also cancel a subscription from the **(⋯)** menu next to their active subscription in the Billing tab, if you allow self-cancellation. Depending on your settings, they may be offered a pause or a discount before the cancellation completes. See [Enable and disable subscription self-cancellations](/articles/contacts/manage-your-contacts/enable-and-disable-customer-subscription-self-cancelations).
## Related articles
* [Let customers pause their own subscriptions](/articles/contacts/manage-your-contacts/let-customers-pause-their-own-subscriptions)
* [Enable and disable subscription self-cancellations](/articles/contacts/manage-your-contacts/enable-and-disable-customer-subscription-self-cancelations)
* [Offer a discount when a customer tries to cancel](/articles/contacts/manage-your-contacts/offer-a-discount-when-a-customer-tries-to-cancel)
# Customer update of email preferences
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/how-your-customers-can-update-their-email-preferences
Guide customers through updating their email preferences directly from their account settings.
Your customer's **email preferences** control the receipt of [marketing emails](../../marketing/email-campaigns/what-are-marketing-and-transactional-emails) from your site. Marketing emails include all emails created in Kajabi that are sent to your customers i.e. Email Sequences, Email Broadcasts, and Event Emails.
## Update email preferences
1. After your customer logs into their account, they must click their **Avatar** in the top-right corner of the page.
2. Then, select **Settings** from the dropdown menu.
3. Under **Profile Settings**, the customer can toggle on or off email preferences as desired:
## Email preference settings
### Product updates
Disabling product updates will unsubscribe your customer from Product Updates and [Product Announcement](../../products/courses/send-a-product-announcement) notifications in their email inbox.
### Replies to posts and comments
Disabling this setting will unsubscribe your customer from receiving email notifications for replies to their posts or comments within a Product (Course, Coaching, Community, Podcast, or Newsletter).
### Community posts
Disabling this setting will unsubscribe your customers from receiving email notifications when a post is created in a legacy Community Product.
### Offers granted
Disabling this notification setting will unsubscribe your customer from receiving the marketing email, Offer Grant Email.
Your Offer Grant Email is categorized as a bulk email. If your customers have unsubscribed from similar Offer Grant Emails from you in the past, they may not receive the Offer Grant Email.
If you need additional assistance sending your Offer Grant Email to your customers, reach out to our support team.
### Products and promotions
Disabling this setting will unsubscribe your customer from all [marketing emails](../../marketing/email-campaigns/what-are-marketing-and-transactional-emails).
Your customer's subscription status will be displayed as [Manually Unsubscribed](/articles/contacts/manage-your-contacts/how-auto-unsubscribe-helps-you-maintain-a-healthy-mailing-list) in your customer's profile located in the Contacts tab.
If your customer has unsubscribed from your marketing emails and wishes to re-subscribe, they can do so by enabling this email setting.
# Let customers pause their own subscriptions
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/let-customers-pause-their-own-subscriptions
Give customers a self-serve way to pause their subscription instead of cancelling.
Customers who need to step away from a subscription usually have one option, which is to cancel. Most of them don't come back. Customer self-pause gives them a way to take a temporary break instead, without emailing you first.
**Note:** Customer self-pause is available for subscriptions paid through Kajabi Payments and Stripe. Subscriptions paid through PayPal cannot be paused by the customer. Customer self-pause also applies to subscriptions only, not to payment plans.
## What a pause looks like
When customer self-pause is enabled, a customer opens their Billing page, chooses **Pause subscription**, and picks how long to pause for.
A customer's pause does not start on the spot. Because the customer has already paid for the billing period they're in, they keep full access until that period ends. The subscription shows **Pausing on \[Date]** until then. On that date, access stops and billing stops with it. When the pause ends, both start again.
## What pausing means for your revenue and your customers' access
**Payments scheduled during a pause are skipped.** During a pause a customer is not billed and does not make up missed payments when they return. Pausing reduces the revenue you collect from that subscription for the length of the pause.
**Access stops when billing stops.** A paused customer cannot access the products in that subscription while the pause is active. Access returns when the subscription resumes.
**Pause length is counted in billing intervals.** A customer on a monthly subscription pauses in months, a weekly subscription in weeks, an annual subscription in years. If you allow a maximum pause of 2, that means two months for a monthly subscriber and two years for an annual subscriber.
**Pause settings apply to your entire site.** You cannot enable pausing for some offers and not others, and the limits you set apply to every eligible subscription you sell. If you sell subscriptions on more than one billing interval, choose your limits with the longest interval in mind.
## Enable customer self-pause
1. Open the **Settings** tab from your Dashboard.
2. Click **Customer Payments** under the Site Settings header.
3. Check the box labeled **Enable customers to pause their subscriptions**.
4. Optional step: check **Set maximum pause duration** and enter the longest single pause you'll allow, counted in billing intervals.
5. Optional step: check **Limit the number of times a customer can pause their subscription** and enter how many pauses a customer can start in a year.
6. Click **Save** to keep and apply your changes:
**Tip:** Customer self-pause does not require self-cancellation. See [Enable and disable subscription self-cancellations](/articles/contacts/manage-your-contacts/enable-and-disable-customer-subscription-self-cancelations).
## Where your customers pause
Once customer self-pause is enabled, customers can pause from two places:
* **Their Billing page.** The subscription's 3 dots \[...] menu includes **Pause subscription**.
* **The cancellation flow.** If you also allow customers to self-cancel, **Pause instead** appears before the cancellation completes, so a customer who came to cancel is offered a break first. If you set a maximum pause duration, the customer chooses a length from a dropdown running from one interval up to your maximum.
## What happens after a customer pauses
1. The subscription shows **Pausing on \[Date]**. The customer keeps full access until that date, and the payment that would have been due is skipped rather than charged.
2. On that date the pause begins. Access ends, billing stops, and the subscription shows **Paused**, along with the resume date if the pause has one.
3. Any payments scheduled during the pause are skipped.
### Cancel a pause before it starts
A customer whose subscription still shows **Pausing on \[Date]** can cancel the pending pause from their Billing page. The subscription returns to active, billing continues unchanged, and the customer is not charged at that moment.
### Resume a paused subscription
How a paused subscription comes back depends on how it was paused:
* **A pause with an end date resumes on its own.** Access returns and billing continues on the customer's original schedule.
* **An open-ended pause stays paused** until the customer resumes it from their Billing page. A customer can also resume early, before a scheduled pause has ended. Resuming early charges the customer immediately, restores access right away, and moves their billing date to the day they resumed. A pause that resumes on its own does not change the customer's billing date.
## Decide how much pausing to allow
Two optional limits shape how customers use pause. You can set both, one, or neither.
| If you want to... | Use |
| :----------------------------------------------------------- | :---------------------------------------------------------------- |
| Cap how long a single pause lasts | Set maximum pause duration |
| Cap how many times a customer pauses per year | Limit the number of times a customer can pause their subscription |
| Let customers pause open-ended and return when they're ready | Leave maximum pause duration off |
If you set a maximum pause duration, every customer pause has an end date and resumes on its own. If you leave maximum pause duration off, customer pauses are open-ended and stay paused until the customer resumes them.
If you limit how many times a customer can pause per year, a customer who reaches that limit no longer sees the pause option until the limit resets. Capping how long a pause lasts does not cap how often a customer pauses, so consider setting both.
## How customer pauses differ from pauses you start
You can still pause a customer's subscription yourself, and nothing about that has changed. The two work differently in one important way:
* **A pause you start as the site owner takes effect immediately.**
* **A pause your customer starts takes effect at the end of their current billing cycle.** See [Pause a customer's subscription or payment plan](/articles/contacts/manage-your-contacts/pause-your-customers-subscription-or-payment-plan) for pausing a subscription yourself.
## Emails and notifications
* A customer receives a confirmation email when they schedule a pause, including the pause date and the resume date if the pause has one.
* A customer receives a confirmation email if they cancel a pause before it starts.
* You can be notified when a customer pauses. Look for **Notify me when a customer initiates a pause on their subscription** in your Customer Subscription & Payments notification settings. [Learn more](/articles/account-settings/notifications/update-email-notifications).
## Frequently asked questions
**Why don't my customers see the pause option?**
Check that **Enable customers to pause their subscriptions** is on in Settings > Customer Payments and that the subscription is active. Customers who pay through PayPal never see the pause option. Customers who have reached the yearly pause limit you set won't see it again until the limit resets.
**Can customers pause a payment plan?**
No. Customer self-pause applies to subscriptions only. You can still pause a payment plan yourself as the site owner.
**Can I allow a different pause length for different offers?**
No. Pause limits apply site-wide and cannot be set per offer. If your offers use different billing intervals, set your limits with the longest interval in mind.
**When is a paused customer charged again?**
A pause with an end date resumes on the customer's original billing schedule. A customer who resumes early is charged immediately on the day they resume.
**Why did my subscription pause later than I asked?**
A pause a customer requests starts at the end of the billing period they have already paid for, not immediately. Until then the subscription shows **Pausing on** followed by that date, and the customer keeps full access.
# Offer a discount when a customer tries to cancel
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/offer-a-discount-when-a-customer-tries-to-cancel
Give customers who are cancelling a reason to stay.
When a customer starts to cancel a subscription, you have the option to show them a discount before the cancellation goes through. The customer sees a percentage off for a set number of payments, then chooses whether to keep the subscription at the lower price or carry on cancelling.
This article covers what to set, what your customers see, and the limits that keep the offer from being used more than you intended.
**Note:** The cancellation discount is available for subscriptions paid through Kajabi Payments. Customers who paid through Stripe or PayPal never see the offer. The offer also requires that **Enable customers to self-cancel their subscriptions** is turned on, because the offer appears inside the cancellation flow.
## What the offer looks like
A customer starts cancelling a subscription from their Billing page. Before the cancellation completes, the offer appears with the title and message you wrote, showing the discounted price alongside their current price with a line through it.
If the customer accepts, the cancellation stops there and the discount applies starting with their next payment. It stays on for the number of payments you set, then the subscription returns to its regular price on its own. If the customer declines, they continue through the cancellation as normal.
## How the cancellation discount works
**The discount is a percentage, and it applies for a set number of payments.** Set a percentage discount for a specified number of payments and your customer who is intending to cancel will see it. After the discount has run its copurse, the price returns to normal.
**The number of payments is counted in billing intervals.** A discount set to 3 payments runs three months for a monthly subscriber and three years for an annual subscriber.
**The offer applies to your entire site.** You cannot enable the discount for some offers and not others, and there's one configuration for your whole site.
**You can control how often a customer can receive this discount.** You can allow for this discount to only be applied once per customer per subscription or leave it unrestricted so a customer can receive this discount more than once.
**Tip:** If you sell annual subscriptions, set the number of payments with those in mind. A discount meant to last a few months will last a few years on an annual subscription.
## Decide what to offer
Three decisions shape the offer.
**How much to discount.** The percentage comes off the subscription's original price.
**How long it lasts.** Set the number of payments the discount applies to, remembering that this counts billing intervals rather than months.
**Whether a customer can accept it more than once.** Checking **Restrict this to apply once per customer for a subscription** means a customer can receive this discount one time for each subscription. Even with this setting enabled, after they claim this discount for one subscription, they can still receive it on a different subscription they hold with you. Leaving it unchecked means a customer can return to the cancellation flow and take the discount repeatedly.
**Tip:** Restricting the offer to once per customer per subscription is the safer default. Without it, a customer who notices the offer can start a cancellation each billing period to keep the discounted price indefinitely.
## Enable the cancellation discount
1. Open the **Settings** tab from your Dashboard.
2. Click **Customer Payments** under the Payment Settings header.
3. Confirm **Enable customers to self-cancel their subscriptions** is checked. The discount options appear within that section.
4. Check **Offer discount before cancellation**.
5. Enter a **discount title** and **discount message**. This is the copy customers read on the discount itself.
6. Enter the **discount percentage**.
7. Enter the **number of payments the discount applies to**.
8. Optional step: check **Restrict this to apply once per customer for a subscription**.
9. Use the preview to see the discount as your customers will see it, including the discounted price.
10. Click **Save** to keep and apply your changes:
## Where customers see the offer
Where the offer appears depends on whether two-step cancellation is on.
**With two-step cancellation on,** the offer is its own step. After the customer chooses to proceed with cancelling, the offer appears. They can **Accept offer** to keep the subscription, or continue to the cancellation reasons and finish cancelling.
**With two-step cancellation off,** the offer appears as a section within the single cancellation form, with a **Claim offer** button. Clicking it opens the offer, where the customer can accept or return to the cancellation form.
## After a customer accepts
* The customer's Billing page shows the discounted price with their original price struck through.
* Receipts show the discount as its own line in the subtotal, in both the emailed receipt and the PDF.
* The subscription's payment details in your admin show the discount in the payment summary, and the upcoming payment amount updates to the discounted amount.
* After the last discounted payment, the discount comes off and the subscription returns to its regular price without any action from you. Neither you nor the customer sees a running count of how many discounted payments are left.
## How the discount works with coupons
A cancellation discount and a coupon cannot both apply to the same subscription.
**Accepting a cancellation discount replaces an existing coupon completely,** even when that coupon would have lasted longer than the discount. The customer does not get their old coupon back when the discount ends. The subscription returns to its regular, undiscounted price.
The discount is calculated from the subscription's original price rather than stacking on a coupon price. Because of that, customers only see the offer when it would actually lower what they currently pay. A customer whose coupon already beats the discount won't be shown it.
See [Coupons overview](/articles/sales/coupons/coupons-overview) for how coupons behave otherwise.
## Change or turn off your offer
Editing the percentage, the number of payments, or the copy affects only customers who accept the offer after you save. Discounts already running on customers' subscriptions continue on the terms they accepted. Turning the offer off works the same way. No new customers are offered it, and discounts already in progress finish out.
## Frequently asked questions
**Why don't my customers see the offer?**
Check that both **Enable customers to self-cancel their subscriptions** and **Offer discount before cancellation** are on in Settings > Customer Payments. The offer only appears for active subscriptions paid through Kajabi Payments, so customers paying through Stripe or PayPal never see it. Customers won't see it if you've restricted it to once per subscription and they've already been offered it, or if their existing coupon already gives them a lower price than the discount would.
**Can I offer a fixed dollar amount instead of a percentage?**
No. The cancellation discount is percentage-based only.
**Can I set a different discount for different offers?**
No. There's one configuration for your whole site, and it cannot be set per offer.
**Can a customer keep cancelling to get the discount over and over?**
Yes, unless you check **Restrict this to apply once per customer for a subscription**. With that setting on, a customer is offered the discount once per subscription.
**What happens to a customer's existing coupon if they accept the discount?**
The coupon is replaced entirely, even if it would have lasted longer. When the discount period ends, the subscription returns to its regular price rather than to the old coupon price.
**How do I see how much longer a customer's discount lasts?**
That count isn't shown in admin. If you keep the same discount configuration, you can work it out from the date the customer accepted and the number of payments you've set.
# Pause a customer's subscription or payment plan
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/pause-your-customers-subscription-or-payment-plan
Pause billing indefinitely or for a set period of time, with automatic resumption on a date you choose.
Pausing temporarily stops billing on a customer's subscription or payment plan. It is useful when a customer is not available to be billed for a while, for example while they are traveling, between seasons of your program, or working through a hardship, and you would rather hold their spot than cancel and ask them to purchase again.
You can pause indefinitely and resume manually, or set a date and let Kajabi resume billing automatically.
Pausing from Kajabi is available for subscriptions and payment plans processed through Kajabi Payments or Stripe. If your customer paid through PayPal, you will not see the pause option. [Pause a PayPal subscription manually](#pause-a-paypal-subscription-manually) instead.
This article covers pausing a subscription or payment plan yourself. Your customers can also pause their own subscriptions if you enable that, and a pause a customer starts behaves differently. See [How this differs from a pause your customer starts](#how-this-differs-from-a-pause-your-customer-starts).
## Choose indefinite or duration pausing
| Pause type | What happens | When to use it |
| :------------- | :-------------------------------------------------------------- | :------------------------------------------------------------------------- |
| **Indefinite** | Billing stops until you resume it yourself. | You do not know yet when the customer will be ready to start paying again. |
| **Duration** | Billing stops and resumes automatically on the date you choose. | You and the customer have agreed on a return date. |
A set duration pause saves you from tracking the return date yourself and remembering to resume. You can tell the two apart at a glance: a paused subscription or plan shows a **Resuming on** badge with the date when it is a set duration pause. A pause with no resume date shown is indefinite.
## Pause a subscription or payment plan
You can start a pause from any of these places:
* The subscription detail page
* The payment plan detail page
* **Sales** > **Subscriptions**
* **Sales** > **Payment Plans**
### Pause from a customer's profile
1. Open **Contacts** from your Dashboard
2. Select your customer, then **Open full profile**
3. Open the **Purchases** tab
4. Select the subscription or payment plan you want to pause
5. Open the **More Actions** menu (…)
6. Select **Pause Payments**
7. Choose **Pause until you manually resume this subscription** or **Pause until a specific date**
8. If you chose a set period, pick the resume date in the calendar
9. Confirm to apply the pause
## What happens during a pause
A pause you start takes effect immediately. From that point until the pause ends:
* **Payments that come due are voided.** Kajabi does not attempt to charge the customer while the pause is active.
* **Voided payments do not count toward a payment plan's total.** If a customer has a six payment plan and one payment falls inside the pause, they still owe six payments. Only paid installments count, so the plan finishes later rather than for less.
* **The billing date does not shift.** The billing anchor stays where it was, so billing picks up on the customer's normal schedule when the pause ends.
* **There are no catch-up charges.** Nothing is collected retroactively for the paused period. Billing simply resumes.
**Note:** If there is a past due invoice at the time you pause, pausing does not stop that payment from being retried. Pausing only stops future payments that would come due after the pause begins.
**Tip:** If a customer wants to skip a single charge and keep their schedule otherwise, [updating the billing date](/articles/sales/kajabi-payments/how-to-update-the-billing-date-for-kajabi-payments-subscriptions-and-payment-plans) moves the next charge without voiding it. Pausing voids the payments inside the pause window. Pick based on whether you want to collect that payment later or not at all.
## Resume or change a pause
A paused subscription or payment plan gives you two options: resume it now, or change when it resumes.
### Resume now
1. Open the paused subscription or payment plan
2. Open the **More Actions** menu (…)
3. Click **Resume Payments**
4. Confirm to resume
Billing restarts on the customer's normal schedule. This works for both indefinite and set duration pauses, so you can always end a pause early.
### Change the pause duration
If a customer needs more or less time, you do not have to resume and pause again.
1. Open the paused subscription or payment plan
2. Open the **More Actions** menu (…)
3. Click **Resume Payments**
4. In the modal, click **Modify Pause Duration**
5. Adjust the resume date, or switch between indefinite and a set duration
6. Confirm to save
The modal opens with the current pause settings already selected, so you only need to change what is different.
## How this differs from a pause your customer starts
If you turn on customer self-pause, your customers can pause their own subscriptions from their Billing page. The two mechanisms are not interchangeable, and the differences matter when you are looking at a paused subscription and trying to work out what will happen next.
| | A pause you start | A pause your customer starts |
| :------------------- | :---------------------------------------------------- | :----------------------------------------------------------------------- |
| When it takes effect | Immediately | At the end of the customer's current billing cycle |
| Applies to | Subscriptions and payment plans | Subscriptions only |
| Length | Any date you choose, or indefinite | Counted in billing intervals, up to a maximum you set |
| Product access | Your choice on payment plans, using **Revoke access** | Always ends when the pause begins |
| Ending it early | You resume from the More Actions menu | The customer resumes from their Billing page, and is charged immediately |
The effect on your revenue is the same either way: payments inside the pause are voided and never collected.
See [Let customers pause their own subscriptions](/articles/contacts/manage-your-contacts/let-customers-pause-their-own-subscriptions) to turn it on and set limits.
## Notifications
When you pause a subscription or payment plan, the email address on your account receives a notification confirming the pause. For a set duration pause, that email includes the resume date and whether product access was revoked.
Your customer receives the **User Paused Subscription** email when the pause begins and the **User Resumed Subscription** email when billing restarts. For a set-duration pause, these show the resume date. You can customize both templates in your [automated email notification settings](/articles/account-settings/notifications/edit-automated-email-notifications).
Kajabi does not send your customer a reminder before an automatic resume.
A pause your customer starts sends different emails. See [Let customers pause their own subscriptions](/articles/contacts/manage-your-contacts/let-customers-pause-their-own-subscriptions).
## Where paused subscriptions and plans appear
On the subscription or payment plan detail page, a set duration pause shows a badge with the resume date, and the upcoming payment date accounts for the pause. An indefinite pause shows the standard paused status with no resume date.
Paused subscriptions and plans also appear with a Paused status in your **Sales** > **Subscriptions** and **Sales** > **Payment Plans** tables, and in the [Subscription status by offer](/articles/analytics/report-subscription-status-by-offer) and [Payment plan status by offer](/articles/analytics/report-payment-plan-status-by-offer) reports.
## Pause a PayPal subscription manually
PayPal subscriptions cannot be paused from Kajabi. Suspend the subscription in PayPal, then revoke product access in Kajabi if you want to remove access during the pause.
### Suspend the subscription in PayPal
1. Log into your PayPal Business or Premier account
2. Click **Activity** in the top menu
3. Open the **All transactions** dropdown menu
4. Select **Subscription payments**
5. Locate the subscription and click the subscription name
6. Click **Suspend**
7. Confirm and click **Suspend Profile**
[Suspend and reactivate a subscription in PayPal](https://developer.paypal.com/docs/paypal-payments-standard/integration-guide/manage-subscriptions/#) has PayPal's full instructions.
### Revoke product access in Kajabi
Skip this if you want the customer to keep access while billing is suspended.
1. Open **Contacts** from your Dashboard
2. Select your customer, then **Open full profile**
3. Open the **Purchases** tab
4. Select the offer, then click **Revoke all products**
5. Confirm by clicking **Yes, revoke access**
### Reactivate a PayPal subscription
1. Log into your PayPal Business or Premier account
2. Click **Activity** in the top menu
3. Open the **All transactions** dropdown menu
4. Select **Subscription payments**
5. Locate the subscription and click the subscription name
6. Click **Reactivate**
7. Confirm and click **Reactivate Profile**
Then return to the customer's profile in Kajabi and click **Resume all products** to restore product access.
**Tip:** [Use Tags](/articles/contacts/manage-your-contacts/tags-overview) to keep track of customers you have paused in PayPal, so you can find them again when it is time to reactivate.
## Frequently asked questions
### Does pausing cancel the subscription?
No. The subscription or payment plan stays in place and billing restarts when the pause ends. Pausing is the alternative to cancelling for a customer you expect to keep.
### Will my customer owe less on a paused payment plan?
No. Payments voided during a pause do not count toward the plan, so the customer still owes the full number of payments. The plan finishes later than originally scheduled.
### Can I pause a subscription processed through PayPal?
Not from Kajabi. [Suspend it in PayPal](#pause-a-paypal-subscription-manually) instead.
### What happens if I need to extend a pause?
Use **Modify Pause Duration** to move the resume date. You do not need to resume and pause again.
### Why is a subscription paused when I did not pause it?
If you have turned on customer self-pause, your customers can pause their own subscriptions. A pause a customer starts does not begin immediately; it begins at the end of their current billing cycle. See [Let customers pause their own subscriptions](/articles/contacts/manage-your-contacts/let-customers-pause-their-own-subscriptions).
### Can I pause a payment plan on my customer's behalf if they cannot do it themselves?
Yes. Payment plans can only be paused by you. Customer self-pause applies to subscriptions only, so a customer with a payment plan will need to ask you.
## Related articles
* [Cancel a customer's subscription](/articles/contacts/manage-your-contacts/how-to-cancel-your-customers-subscription)
* [Revoke product access from a customer](/articles/contacts/manage-your-contacts/revoke-product-access-from-a-customer)
* [Update billing dates for Kajabi Payments subscriptions](/articles/sales/kajabi-payments/how-to-update-the-billing-date-for-kajabi-payments-subscriptions-and-payment-plans)
* [The difference between revoking an offer and payment cancelations](/articles/contacts/manage-your-contacts/what-is-the-difference-between-revoking-an-offer-and-payment-cancelations)
# Purchase information page overview
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/purchase-information-page-overview
Navigate the Purchase Information Page to view purchase details, revoke Product access, perform refunds, and more.
## What is the purchase information page?
Manage your customer's purchases and granted Offers from your Contacts tab.
On the purchase information page:
* View the overview information for the Offer purchased or granted
* Review any transaction activity such as refunds, subscription charges, and payments if applicable
* Manage Product access for the list of Products that may be included with the Offer purchased or granted
* And manually cancel any future payments and [revoke access](/articles/contacts/manage-your-contacts/revoke-product-access-from-a-customer) from your Customer's Purchase Information Page
## Access the Purchase Information Page
### View a customer's Purchase Information Page
1. Open the **Contacts** tab from your Dashboard.
2. Select the Customer you wish to view.
3. Click into **View More** next to "Total Offers" from the Contact Preview.
4. Locate the Offer you wish to view.
5. Click **More Info** to open the Purchase Information Page for the Offer:
To access the Purchase Information Page, you will first encounter the Purchases tab. This is a great place to view the at-a-glance information about each Offer Purchase before accessing the Purchase Information Page for more info.
The Purchases tab will display:
* Offer title
* Purchase date
* Purchase amount
* Subscription status
* Access status (if access has been [revoked](/articles/contacts/manage-your-contacts/what-is-the-difference-between-revoking-an-offer-and-payment-cancelations))
## Purchase overview
View more information about the purchased or granted Offer in the Purchase Overview.
### The Purchase Overview can include
* Customer's Name
* Customer's Email
* Offer Title and Status: Active, Paid, Completed, Cancelled
* Their [Kajabi Payments](../../sales/kajabi-payments/kajabi-payments-overview) email if applicable
* Stripe Customer ID or PayPal Customer ID if applicable. (Click the View to navigate to your Stripe or PayPal account to view more payment information)
* Purchase Date
* Access Start Date. [View start date details](/articles/contacts/manage-your-contacts/how-to-change-a-customers-start-date)
* Access end date if applicable
* Price of the Offer when purchased
* Payment exchange rate if purchased via [Kajabi Payments](../../sales/kajabi-payments/kajabi-payments-overview)
* Fees if purchased via [Kajabi Payments](../../sales/kajabi-payments/kajabi-payments-overview)
* Net profit if purchased via [Kajabi Payments](../../sales/kajabi-payments/kajabi-payments-overview)
For example, a customer with an active subscription may display the following information in the Purchase Information Overview:
### Granted Offers will display
* Customer Name
* Offer Title
* Purchase Created Date
* Access Start Date
* And the Price will be listed as "granted"
For example, a customer with a Granted Offer will display the following information in their Purchase Information page:
## Transactions
The Transactions tab of your Purchase Information Page will display subscription transactions related to the purchased Offer.
The Transactions tab will record when a subscription payment is successful, for upcoming payments, if a refund is given, failed payments, and the payment exchange rate if applicable.
If you manage transactions from your Stripe or PayPal account, adjusted activity may not be displayed on the Purchase Information Page.
Refer to your Stripe or PayPal account for more detailed information about your customer's transactions.
The Transactions page can also be used to [resend and edit customer receipts](../../sales/offers/how-to-send-receipts-with-kajabi), [refund payments](/articles/contacts/manage-your-contacts/refund-your-customers), as well as [manually retry failed payments](../../sales/kajabi-payments/how-to-manage-failed-payments-with-kajabi-payments) if processed through Kajabi Payments.
**Note:**
The Transaction Activity will not display for Granted Offers and the payment exchange rate will not show for transactions processed before October 27th, 2023.
## Products included in this Offer
View the Offer title and review the Product(s) included with the Offer purchased or granted.
In the Products Included section of your Purchase Information Page, view a brief overview of the Product Access Start Date and your Customer's Product Progress:
If you wish to revoke access to an individual Product for a customer this allows you to gain insight into your Customer's engagement and re-assess before revoking.
## Cancel payments and access
The More Actions menu (`…`) of the Purchase Information Page Overview will vary depending on whether the Offer was purchased or granted.
If the Offer was purchased as a recurring subscription or multiple payments you will have the ability to Cancel Payments and Revoke Access directly from the Purchase Information Page. [Cancel a customer's subscription](/articles/contacts/manage-your-contacts/how-to-cancel-your-customers-subscription)
However, if the Offer was granted or if the Offer does not contain any future payments (i.e., One-Time Payment Offer) you can Revoke Access to the entire Product offering for the Offer purchased or granted. [Revoke product access from a customer](/articles/contacts/manage-your-contacts/revoke-product-access-from-a-customer)
# Refund customers
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/refund-your-customers
Issue full or partial refunds to customers directly from a Kajabi account.
Refund your customers directly from your Kajabi account. If you wish to refund your customers in Stripe or PayPal, read [Cancel and refund a payment in Stripe](../../api-integrations/payment-integrations/how-to-cancel-and-refund-a-payment-in-stripe) or [Cancel and refund a transaction in PayPal](../../api-integrations/payment-integrations/how-to-cancel-and-refund-a-transaction-in-paypal) for details.
## Refund a customer
To perform a full or partial refund for your Customer(s) from the Transactions page:
1. Open the **Sales** tab from the Dashboard.
2. Select **Payments** from the Sales tab.
3. From the Payments page, select **Transactions** to be taken to the Transactions page.
4. Here you can search or filter to find the customer's transaction that you want to refund. [View transaction details](../../sales/kajabi-payments/transactions)
5. Once you have found the payment you wish to refund and select the `…` button for **More Actions**.
6. In the More Actions drop-down menu, select **Refund**.
7. Enter your **Refund amount** and select a reason (optional) for your records.
8. Press **Refund** to complete the Refund process:
Perform a full or partial refund for your Customer(s) from the Contacts page:
1. Open the **Contacts** tab from the Dashboard.
2. Search or Filter your Contacts to locate the Customer you wish to refund.
3. Select the **name** of the Customer you wish to refund.
4. Click **View More** next to "Total Offers".
5. Select **More Info** for the Offer to refund.
6. Open **Purchases**.
7. Select the **Transaction** you wish to refund.
8. In the Transactions tab, click the `…` button for **More Actions**.
9. Select **Refund**.
10. Enter your **Refund amount** and select a reason (optional).
11. Press **Refund** to complete.
### Tax-exclusive refunds
When issuing a refund:
* Enter the refund amount excluding taxes.
* Kajabi automatically calculates the corresponding tax amount.
* The total refund sent to the customer includes both the refund amount and calculated taxes.
Before confirming the refund, you will see a message showing the refund amount, tax amount, and total refund that will be sent.
**Example**
* A partial refund of $4.00** results in **$**4.00 plus applicable taxes** being refunded to the customer.
* Refunding the full $5.00** subtotal results in **$**5.00 plus full taxes**, returning the original total paid.
* Kajabi tracks refunded sales tax, so sales tax reports correctly account for refunded amounts
### Tax-inclusive refunds
For tax-inclusive payments, taxes are already included in the price paid by the customer.
When issuing a refund:
* Enter the total amount you want to refund.
* Kajabi automatically determines how much of that amount is tax.
* The total refund sent to the customer matches the amount you entered.
Before confirming the refund, you will see a message showing how the refund amount is split between subtotal and taxes.
**Example** when tax is included in the offer price:
* Refunding $1.00** results in **$**1.00** being refunded to the customer.
* Kajabi determines the amount of sales tax that was included in the purchase so sales tax reports correctly account for refunded amounts
## Send refund receipts
Once activated, refund receipts will be automatically emailed for all full and partial refunds issued.
The refund receipt message can also be customized to better fit your brand.
To activate refund receipts:
1. From your Kajabi Dashboard, click **Settings**.
2. In Settings, navigate to **Customer Payments**.
3. Turn ON the **Send receipt for refunds** option.
4. Customize your Refund Receipt message. (Optional)
5. Hit Save then preview your Refund Receipt:
**Note:** If you are seeking a refund for an account payment made to Kajabi, please reach out to [our support team](../../resources/support/how-to-contact-kajabi-support).
## **What happens to access after a refund**
Issuing a refund in Kajabi does **not** automatically revoke the customer's access to the product.
To remove their access after refunding, you must manually revoke the offer:
1. Open the **Contacts** tab and find the customer.
2. Click **View More** next to "Total Offers."
3. Find the relevant offer and click **Revoke Access**.
## **Refund time limits**
Refund availability depends on your payment processor:
* **Kajabi Payments:** Refunds are available for up to 180 days from the original transaction date.
* **Stripe:** Refunds are available for up to 180 days. Refund the payment directly in your [Stripe dashboard](https://help.kajabi.com/articles/api-integrations/payment-integrations/how-to-cancel-and-refund-a-payment-in-stripe) if the transaction no longer appears in Kajabi.
* **PayPal:** Refunds are available for up to 180 days from the original transaction date. You can still voluntarily issue a manual refund past 180 days if you choose to. Use the PayPal dashboard for transactions outside this window.
Transactions older than these windows cannot be refunded through Kajabi or the payment processor. In those cases, you would need to issue payment outside of the platform (e.g., bank transfer) and revoke access manually.
## Kajabi Cart refunds
With [Kajabi Cart](../../sales/checkout/kajabi-cart-overview), you can easily issue refunds for entire orders or specific items within an order. Whether you want to refund the full value of a single item or a partial amount for one or more items, the process is straightforward.
To initiate a refund (full or partial) for a [Kajabi Cart](../../sales/checkout/kajabi-cart-overview) order, follow these steps:
1. Open the **Sales** tab from the Dashboard.
2. Select **Payments** from the Sales tab.
3. On the Payments page, choose **Transactions** to access the Transactions page.
4. Use the search or filter options to locate the customer's transaction that you want to refund. [View transaction details](../../sales/kajabi-payments/transactions).
5. Once you have found the transaction you wish to refund, select the … button to open the **More Actions** menu.
6. In the drop-down menu, select **View More Details.**
7. On the Transaction Details page, select **Refund.**
8. Next, you'll be directed to the Cart Refund page. Here you can select the items that you wish to refund by checking the box to the left of the offer.
9. Once the box is checked, enter your **Refund amount** and select a reason (optional) for your records.
10. Decide if you want to send a refund receipt to your customer by selecting the corresponding checkbox.
11. Click **Refund** to complete the process:
# Revoke Product access from a customer
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/revoke-product-access-from-a-customer
Remove a customer's access to a Product after they have finished a course, failed to pay, or failed to comply with terms and conditions.
**Note:**
Customers do not receive a notification after being revoked from a Product.
Remember that revoking access for a recurring subscription or payment plan Offer will not deactivate future payments. Read [Cancel a customer's subscription](/articles/contacts/manage-your-contacts/how-to-cancel-your-customers-subscription) to cancel future payments and revoke access.
## Revoke access to a Product
Revoking access to a Product removes the Product from your customer's Library.
This lets you retain your customer's records (i.e., [Product Progress](../../analytics/report-product-progress)), but prevents them from accessing the revoked content.
**Note:**
You can revoke access to all or multiple customers using Bulk Actions inside the **Contacts** tab. [Learn more](/articles/contacts/manage-your-contacts/perform-bulk-actions-in-the-contacts-tab)
To revoke access:
1. Open the **Contacts** tab from the Dashboard.
2. Select the customer you wish to revoke access for.
3. Click **View More** under **Total products** in the contact preview.
4. Select **More Info** next to a Product you wish to revoke.
5. Click **Revoke Access** next to all Product(s) you wish to revoke.
6. In the popup confirmation, click **Revoke access** to confirm:
Revoking an Offer will display the **Access status** row in the **Purchases** tab with the indicator **Access revoked** and the party responsible for the action (e.g., email of the person or by automation).
The following are revoked indicators that may appear in the **Purchases** tab:
* **Revoked by automation**: An Automation has been set up to revoke the Offer.
* **Revoked by [email@example.com](mailto:email@example.com)**: The person that revoked the Offer is indicated by their email address.
* **Revoked by our support team**: A "@kajabi.com" user has revoked access.
* **Revoked**: The Offer was set to restrict access after a certain number of days or the subscription was set to cancel.
**Note:**
If a customer has access to the Offer, then no access row will be shown.
Deleting an Offer from your **Products** tab will not revoke access to the Products included with the Offer for your existing customers of that Product.
## Pause or suspend a subscription
Pausing or suspending your customer's subscription or payment plan temporarily disables your customer's billing. This can be done in the case that your customer is temporarily unavailable to be billed. For example, your customer may wish to temporarily disable their subscription or payment plan while they are on vacation and resume it when they return. Learn how to [pause your customer's subscription](/articles/contacts/manage-your-contacts/pause-your-customers-subscription-or-payment-plan).
# Transaction details page overview
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/transaction-details-page-overview
Navigate a customer's Transaction Details page to view purchase details, revoke Product access, perform refunds, and more.
The **Transaction Details** page is a unique page created for every transaction that your customers make, allowing you to view all of the meaningful information about a purchase and take action on the transaction if necessary.
On the transaction details page:
* View the overview information for the Offer purchased or granted
* Review any transaction activity such as refunds, subscription charges, and payments if applicable
* View and or send receipts
* Edit receipt Contact info
* Edit access start date
* Revoke all products or individual products
* Refund transactions
* Manage product access to the list of products that may be included with the offer purchased or granted
* Manually cancel any future payments and [revoke access](/articles/contacts/manage-your-contacts/revoke-product-access-from-a-customer) from your Customer's Transaction Details page
* Respond to disputes if applicable. [Explore the Disputes page](../../sales/kajabi-payments/disputes-page-overview)
## Access the Transaction Details page
**To view a Customer's Transaction Details Page:**
1. Open the **Contacts** tab from your Dashboard.
2. Select the Customer you wish to view.
3. Click into **View More** next to "Total Offers" from the Contact Preview.
4. Locate the Offer you wish to view.
5. Click **View Details** to open the Transaction Details Page for the Offer.
6. Click **Transactions** tab (only applicable to Subscriptions and Payment Plans):
To access the Transaction Details Page, you will first encounter the Purchases tab. This is a great place to view the at-a-glance information about each Offer Purchase before accessing the Transaction Details page for more info.
The Purchases tab will display:
* Offer title
* Purchase date
* Purchase amount
* Subscription status
* Access status (if access has been [revoked](/articles/contacts/manage-your-contacts/what-is-the-difference-between-revoking-an-offer-and-payment-cancelations))
## Transaction details
View more information about a purchased or granted Offer on the Transaction Details page. The information displayed on this page may slightly differ based on the offer type, whether it's a one-time purchase, subscription, payment plan, invoice, granted offer, etc.
### Transaction Details page contents
* Customer's Name
* Customer's Email
* Offer Title and Status: Active, Paid, Completed, Cancelled
* Their [Kajabi Payments](../../sales/kajabi-payments/kajabi-payments-overview) email if applicable
* Stripe Customer ID or PayPal Customer ID if applicable
* Purchase Date
* Access Start Date. [Explore access start dates](/articles/contacts/manage-your-contacts/how-to-change-a-customers-start-date)
* **Access end date** (if applicable). To change the access end date, use the **Edit access end date** option in the **More Actions** (...) menu.
* Price of the Offer when purchased
* Coupon code and discount amount, if a coupon was applied to the purchase
* Payment exchange rate if purchased via [Kajabi Payments](../../sales/kajabi-payments/kajabi-payments-overview)
* Fees if purchased via [Kajabi Payments](../../sales/kajabi-payments/kajabi-payments-overview)
* Net profit if purchased via [Kajabi Payments](../../sales/kajabi-payments/kajabi-payments-overview)
* Dispute information and status if applicable. [Respond to a dispute with Kajabi Payments](../../sales/kajabi-payments/how-to-respond-to-a-dispute-with-kajabi-payments)
### Coupons on the Transaction Details page
If a coupon was applied to the purchase, the Transaction Details page shows the coupon code with the discount amount in parentheses. Click the coupon code to open that coupon's detail page.
The page always reflects the coupon as it was at the time of the transaction. If the coupon's code or discount amount was edited afterward, the original code and discount still display here, and the coupon code links to the current version of the coupon.
Bulk coupon codes display an icon next to the code. Hover over it to see which bulk coupon the code belongs to.
If a coupon has been deleted, the code appears grayed out with a tooltip noting the coupon was deleted, and it no longer links anywhere.
### One-time payments
If you are viewing the transaction details page for a [One-Time Payment](../../sales/offers/how-to-create-a-one-time-payment-offer) purchase, the page will show transaction details, customer details, as well as refund info if the payment has been refunded.
### Subscriptions and Payment Plans
Navigating to the transaction details page for a [Subscription](../../sales/offers/how-to-create-a-subscription-offer) or [Payment Plans](../../sales/offers/create-a-payment-plan-offer) purchase will present you with an Overview and Transactions tab.
The Subscription details page will show subscription details and customer details, as well as refund info if any of the subscription payments have been refunded:
The Payment Plans page will show payment plan details, customer details, as well as refund info if any of the payment plan installments have been refunded:
If the purchase is an active Subscription or Payment Plan Offer you can use the "More Actions" (…) menu to update the subscription, pause, or cancel future payments, edit subscription start date, and copy their Kajabi Payments ID:
You can also use the **More Actions** (...) menu to edit access dates for the customer's transaction:
* **Edit access start date:** Changes when the customer's access begins. Changing the start date does not affect the access end date.
* **Edit access end date:** Changes when the customer's access expires. Use this option to extend or shorten a customer's access without modifying their billing.
**To view more in-depth transaction information for a Subscription or Payment Plan purchase:**
1. From the transaction details page, click **Transactions**.
2. Locate the transaction you wish to view, then select the **"More Actions" (…) menu.**
3. Click **view transaction** to view more information about that transaction:
You will then be taken to the individual transaction page where you can view more details.
The Transactions tab will record when a subscription payment is successful, for upcoming payments, if a refund is given, failed payments, and the payment exchange rate if applicable.
If you manage transactions from your Stripe or PayPal account, adjusted activity may not be displayed on the Payment Details Page.
Refer to your Stripe or PayPal account for more detailed information about your customer's transactions.
The Transactions page can also be used to [resend and edit customer receipts](../../sales/offers/how-to-send-receipts-with-kajabi), [refund payments](/articles/contacts/manage-your-contacts/refund-your-customers), as well as [manually retry failed payments](../../sales/kajabi-payments/how-to-manage-failed-payments-with-kajabi-payments) if processed through Kajabi Payments.
### Granted Offers
The Transaction Details page will vary if the Offer was granted instead of purchased.
#### Granted Offers will display
* Customer Name
* Offer Title
* Purchase Created Date
* Access Start Date
* The Payment summary will list the subtotal and total as "free"
For example, a customer with a Granted Offer will display the following information on their Transaction Details page:
### Disputed Offers
When a customer files a dispute, an alert will appear on the Transaction Details page, displaying the dispute status. This banner will update as the dispute progresses and is where you can manage and respond to disputes. [Respond to a dispute with Kajabi Payments](../../sales/kajabi-payments/how-to-respond-to-a-dispute-with-kajabi-payments).
To view and manage all disputes in one place, visit the [Disputes page](../../sales/kajabi-payments/disputes-page-overview).
#### **One-time transaction disputes**
Disputes for **one-time transactions** will be displayed on the **Transaction Details page**:
#### Subscription and Payment Plan transaction disputes
To view disputed **subscription or payment plan transactions**:
1. Go to the **Transaction Details** page.
2. Click **Transactions**.
3. Find the disputed transaction, then select the **More Actions** (…) menu.
4. Click **View transaction** to see more details and respond to the dispute.
### Products included in an Offer
View the Offer title and review the Product(s) included with the Offer purchased or granted.
In the Products Included section of the Transaction Details Page, view a brief overview of the Product Access Start Date and your Customer's Product Progress:
In this menu, you can choose to revoke all products in the offer, or revoke individual products by using the (…) drop-down menu.
### Cancel payments and access
The More Actions menu (…) of the Payment Details Page Overview will vary depending on whether the Offer was purchased or granted.
If the Offer was purchased as a recurring subscription or payment plan you will have the ability to Cancel Payments and Revoke Access directly from the Transaction Details page. [Cancel a customer's subscription](/articles/contacts/manage-your-contacts/how-to-cancel-your-customers-subscription)
However, if the Offer was granted or if the Offer does not contain any future payments (i.e., One-Time Payment Offer) you can Revoke Access to the entire Product offering for the Offer purchased or granted. [Revoke Product access from a customer](/articles/contacts/manage-your-contacts/revoke-product-access-from-a-customer)
# Preview the customer experience
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/what-do-my-customers-see
Create a test customer account to experience your site from a customer's perspective.
Creating a **test customer account** lets you experience your site exactly as your customers do, from logging in to accessing their Library and Products.
## Create a test customer account
With a test customer account you can experience logging in, accessing the Library, viewing Products, and changing customer settings.
To get started, clear your cache and cookies from your browser or open a private/incognito window or use a different browser.
1. Open the **Contacts** tab from your Dashboard.
2. Click **+ Add Contacts**.
3. Select **Add Single Contact**.
4. Enter **First Name**, **Last Name**, and **Email**.
**Note:** You will need to use a valid email where you can receive mail.
5. Check **Grant offers** from the **Extra Actions** dropdown.
6. Select at least one Offer from the Select offers dropdown.
**Note:** We recommend granting all the Offers you wish to test to view the Products in your test customer's Library.
7. Click **Save:**
## Log in as a customer
Your customers will access their Library by logging in through their customer account. As the creator of your site, you can customize your customer's login experience with the Login Page.
[Build a Login Page](../../website/pages/how-to-build-your-login-page)
After you have created your test customer account you can preview the login experience to better understand how your customers access their purchased or granted Products.
### Log in with a test customer account
1. In a private/incognito window open your website.
2. Open the [User Menu](../../website/pages/how-to-add-a-user-menu-to-your-page-header) on your site.
3. Enter your test customer's credentials.
4. Click **Log In**:
## View the customer Library
Logging into your site will bring your customers to their Library page.
The Library page contains all of the Product(s) your customer has purchased or been granted:
After logging into your test customer's account, you will be brought to your test customer's Library page. Your Library may look different from the example above depending on how you choose to design and customize your customer's Library experience.
[Customize a Library page](../../website/pages/customizing-your-library-page)
## View a Product as a customer
With Kajabi you can create various types of Product(s) to best deliver your value: online courses, coaching dashboards, and Podcasts.
Depending on your Product and how you choose to brand and design your Product, your customer's experience with your Product(s) will be unique to your business.
With your test customer account you can experience your Product(s) just as your customers would.
### View a Product with a test customer account
1. In a private/incognito window open your website.
2. Open the login page from your site.
3. Enter your test customer's credentials.
4. Click **Log In**.
5. Select the **Product** you wish to view:
## Change customer settings
Your customers can [view and download purchase receipts](../../contacts/manage-your-contacts/customer-update-of-customer-settings), and update their email preferences, [contact information](../../contacts/manage-your-contacts/customer-update-of-customer-settings), [billing information](https://help.kajabi.com/hc/en-us/articles/360038895373), and password by logging into their account to access their Customer Settings.
### View the customer settings page
1. After logging in, click on the avatar in the top right corner of the page.
2. Select **Settings** from the dropdown.
3. Here you can edit your test customer's information:
[Explore customer settings](../../contacts/manage-your-contacts/customer-update-of-customer-settings)
# Understand subscription status
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/what-does-the-subscription-status-mean
The subscription status indicates whether contacts are subscribed to receive marketing emails.
The subscription status is an important indicator as to whether or not your contacts are subscribed to receive your [marketing emails](../../marketing/email-campaigns/what-are-marketing-and-transactional-emails).
## Subscription status
The subscription status is located in the Email Marketing column in your [Contacts tab](../../contacts/manage-your-contacts/contacts-tab-overview):
A contact is added to your site by [manually adding them to your Contacts tab](../../contacts/manage-your-contacts/how-to-manually-add-a-new-customer-to-your-site) or by subscribing through a [Form](../../marketing/forms/create-and-build-your-form) or [Automation](../../marketing/automations/automations-overview). By subscribing, your contacts give you permission to send email campaigns to their subscribed email address.
With Kajabi, your Contacts tab makes it easy for you to view the contacts that are subscribed or not subscribed.
**Tip:** Use the default segments in your Contacts tab to sort your list by subscribed, ornot-subscribed. [Explore default segments](../../contacts/manage-your-contacts/segment-your-contacts#default-segments).
## Subscribed
Subscribed contacts are subscribed to receive your marketing emails.
Their subscription status will display in your Contacts tab as "Subscribed" under the Email Marketing column:
## Unsubscribed
Unsubscribed contacts will not receive your marketing emails.
There are many ways a contact can be unsubscribed from your marketing emails. To help you understand the unsubscribe action, Kajabi includes the following indicators in the Email Marketing column:
* **Manual Unsubscribe:** You or one of your authorized users unsubscribed the contact. Or the contact manually unsubscribed from your email marketing by updating their [email preferences](../../contacts/manage-your-contacts/how-your-customers-can-update-their-email-preferences) from their account.
* **Opted out:** Contact opted out from receiving your marketing emails by clicking unsubscribe in the footer of the email received.
* **Bounced:** [Automatically unsubscribed](../../contacts/manage-your-contacts/how-auto-unsubscribe-helps-you-maintain-a-healthy-mailing-list) as a result of a hard-bounced email.
* **Marked spam:** Contact marked the email as spam in their inbox.
* **Never Subscribed:** Contact was [added to the Contacts tab](../../contacts/manage-your-contacts/how-to-import-contacts-into-kajabi) without ever subscribing to marketing emails.
**Note:** By default, Forms are set up as a Double-Opt-In. If your contacts have completed an opt-in Form but do not appear in your Contacts tab, they may need to confirm their intention to subscribe from their email inbox. [Enable and disable Double Opt-Ins for Forms](../../marketing/forms/how-to-set-up-a-form-with-double-opt-in#h_abc992f3-09f3-470c-9dd0-47a3e2ca8dc5).
# Distinguish between revoking an Offer and canceling payments
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/what-is-the-difference-between-revoking-an-offer-and-payment-cancelations
Understand the difference between revoking Product access and canceling payments to manage customer subscriptions effectively.
Revoking Product access and canceling payments serve different purposes. Revoking access removes a customer from a Product but does not stop future payments, while canceling payments stops both access and future charges.
## Revoke Product access
Revoking a customer's Product access will not stop any future payments. However, they will no longer have access to the Product and will be removed from that product.
This will allow you to retain your customers' records (i.e., [Product Progress](../../analytics/report-product-progress)), but will not allow them to access the revoked content.
1. Open the **Contacts** tab from your Dashboard.
2. Select an existing **Customer**.
3. Click into **View More** next to "Total Products" from the Contact Preview.
4. Locate the Offer you wish to view.
5. Click **View Purchase Information** to open the Purchase Information Page for the Offer.
6. Select **Revoke Access** or **Revoke Product** for a specific Product:
Revoking an Offer will display the "Access status" row in the Purchases tab with the indicator, "Access revoked" and the party responsible for the action (e.g., email of the person or by automation).
**Note:** If a customer has access to the Offer, then no access row will be shown.
When it is time to reactivate your customer's Product Access:
1. Select the Customer's name.
2. Click into **View More** next to "Total Offers" from the Contact Preview.
3. Select **Purchases**.
4. Click **View Details** to open the Transaction Details page for the Offer.
5. Click **Resume Product** next to the Product(s) you wish to reactivate:
## Cancel payments and access
Canceling payments will stop product access and future payments, such as payment plan or subscription payments. Canceling payments from the Purchase Information page on Kajabi will end the subscription for payments processed through both Stripe and PayPal.
1. Open the **Sales** tab from your Dashboard.
2. Select the **Payments.**
3. Click **Subscriptions.**
4. Open the **More Actions** menu (…) for the subscription you wish to cancel.
5. Click **Cancel Payments**.
6. Select the date to cancel payments and access:
* **End of the Current Billing Period**.
* **On a Custom Date**.
* **Cancel Now**.
7. Click **Cancel Payments** to confirm:
[Cancel payments directly in PayPal](../../contacts/manage-your-contacts/how-to-cancel-your-customers-subscription)
# Troubleshoot customer login issues
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/what-to-do-if-your-customers-cant-log-in
Help customers resolve common login problems with step-by-step troubleshooting.
Are your customers having trouble logging into your site to access their Library and purchased products? Follow these steps to help your customers troubleshoot their login.
**Note:** This article refers to customers having trouble logging in through a web browser. If you are looking to troubleshoot login issues for the Kajabi Mobile App please refer to the [Kajabi App Troubleshooting Guide](../../mobile-apps/kajabi-app/troubleshooting-kajabi-mobile-app-issues).
## Confirm the email address
Is the email address being used to login exactly the same as the email address associated with the customer?
Confirm with your customer that the email address matches the email address associated with their account. Ensure that it is exactly as their email appears in your Contacts tab as the login is case-sensitive.
[Manage Contacts Profiles](../../contacts/manage-your-contacts/how-to-manage-your-contacts-profiles).
## Reset password
Has your customer attempted to reset their password from your [site login page](../../website/pages/what-is-the-link-to-my-login-page)?
If not, try a password reset to see if the reset email is sent to their email address. They can then proceed to reset their password and attempt to log in with their new login credentials.
[Reset a customer's password](../../contacts/manage-your-contacts/how-to-reset-your-customers-password).
## Try a different browser
Has your customer attempted to log in with a different browser? Your customer may be experiencing a browser or caching issue.
If your customer has attempted to log in with a different browser, they may want to consider clearing their browser cache. Here are a few commonly used browsers and their support guides on how to clear their browser cache:
* **Using Google Chrome?** Read [Google's Support Guide](https://support.google.com/accounts/answer/32050?hl=en) on Clearing Cache and Cookies.
* **Using Safari?** Read [Apple's Support Guide](https://support.apple.com/guide/safari/manage-cookies-and-website-data-sfri11471/mac) on Removing Stored Cookies and Data.
* **Using Firefox?** Read [Mozilla's Support Guide](https://support.mozilla.org/en-US/kb/delete-browsing-search-download-history-firefox) to delete browsing, search, and download history.
## **Check for browser extensions and cookie settings**
If switching browsers and clearing cache didn't help, the issue may be caused by an ad blocker, privacy extension, or the browser's tracking-protection settings blocking Kajabi's authentication cookies.
Ask your customer to:
1. Open the login page in an **incognito or private window** and try logging in. If this works, an extension is the cause.
2. Disable any **ad blocker or privacy extension** (e.g. uBlock Origin, Ghostery, Privacy Badger, AdBlock) and reload the page.
3. Enable **third-party cookies** in their browser — see [Resolve login issues across platforms](https://help.kajabi.com/articles/resources/resources/resolving-login-issues-on-kajabi-across-platforms) for browser-specific steps.
### **Wrong login URL?**
Members must use your site's specific login URL (e.g. `yoursite.mykajabi.com/login` or your custom domain). Logging in at `app.kajabi.com` is for **Kajabi account owners and users only** and will not give members access to their library.
# Troubleshoot missing Customer Welcome Emails
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/why-didnt-my-new-customer-receive-an-email-containing-their-login-information
Only customers who are manually added to your site receive an email containing their login information.
Only customers who are manually added to your site will receive an email containing their login information.
[Manually add a customer to your site](../../contacts/manage-your-contacts/how-to-manually-add-a-new-customer-to-your-site).
The email that contains a customer's login information is called the Customer Welcome Email.
The Customer Welcome Email is a system-generated email that contains the customer's username (which is their email address), a system-generated password, and a link to your site's login page.
It is important to keep in mind that customers who are added to your site through an Offer purchase will not receive the Customer Welcome Email.
**Tip:** Ensure that your customer was added to your site manually, rather than through an Offer purchase. If your customer was added to your site manually and is unable to locate the Customer Welcome Email, advise your customer to double-check their email's spam or junk folder.
# Understand customer lifetime access to Products
Source: https://help.kajabi.com/articles/contacts/manage-your-contacts/will-my-customers-have-lifetime-access-to-my-products
Customers retain access to purchased Products as long as specific conditions are met.
Your customers will have access to the Products they purchased as long as you have your Kajabi account active, they do not cancel their subscription, and have not been revoked access to their Offer.
# Media Library overview
Source: https://help.kajabi.com/articles/media-library/media-library-overview
Manage all your video, audio, image, and document files from a single hub — upload once and use across your entire Kajabi site.
**Media Library** is a centralized hub for managing all of your video, audio, image, and document files in one place. Instead of uploading the same file multiple times across your site, you can upload it once to your Media Library and use that asset anywhere — in Courses, Landing Pages, Web Pages, Coaching sessions, Pages, and more.
**Note:** You must be using Builder 2.0 to access Media Library. [Learn how to upgrade to Builder 2.0](/articles/website/pages/whats-new-with-builder-20#h_01JVQE6J6D0GDZJC2ZZ0A9SXME).
## Move existing media into Media Library
If you added videos or audio to Kajabi before Media Library was available, you can bring that older media into your library so everything lives in one place.
**Before you import:** the legacy import tools below only bring in **video and audio**. Photos and graphics are handled separately and are **not** moved by "Add legacy media to library" or "Browse legacy media." If your images don't show up in Media Library, they have not been deleted — they're still displaying normally wherever they're already used (course lessons, pages, etc.). To bring existing images into Media Library, use **Import existing images** from that asset's **Image actions** menu.
If you're still on an older version of the page builder, some images may not sync into Media Library until you upgrade to the current builder first.
### Copy individual videos from legacy media
If you uploaded video files to Kajabi before Media Library was available, you can move them to your library using the **Looking for older files?** option. This appears the first time you open the Media Library picker and lets you browse your recent videos and copy them into the library for centralized management going forward.
1. Go to upload a video and click **Select from media library**.
2. Click **Browse legacy media**.
3. Select your video file and click **Copy to media library**.
### Import all legacy video and audio at once
If you have a lot of older media, you can bring all of your remaining legacy video and audio into Media Library in one action, instead of copying files one at a time.
1. Open your **Media Library**.
2. Click **Add legacy media to library**.
3. In the **Add legacy video and audio to Media Library** window, click **Begin import**.
Your video and audio import in the background, with a progress bar showing how it is going. Imported files are tagged **Imported** so you can find them easily. The **Add legacy media to library** button stops appearing once all of your legacy video and audio has been brought into Media Library.
Files can be added to the Media Library manually. Any files you upload automatically appear in your Media Library and are available for use across your site and products.
## Key features of Media Library
### Upload video and audio files
You can upload video and audio files directly to your Media Library. You can upload up to 10 files at a time using the **Upload media** button at the top of the file listing.
Supported file types:
* **Video** — MP4, MOV, AVI, WMV, FLV, MKV, 3GP, 3G2, M4V, MPG, OGV
* **Audio** — MP3
### Upload and manage images
Media Library supports image files alongside video and audio. Upload, create, and edit images all from one place.
#### Upload images
Upload image files directly to your Media Library. You can upload up to 10 images at a time, just like video and audio.
Supported image formats: JPEG, PNG, GIF, WebP
#### Create images with Adobe Express
Create images without leaving Kajabi using Adobe Express. Two options are available from the **Upload** tab dropdown when adding media:
* **Generate image with AI** — Describe what you want and Adobe Express creates it
* **Start from Adobe Stock** — Browse and select from Adobe's stock image library
#### Edit images with Adobe Express
Edit any image in your Media Library using Adobe Express — crop, resize, add filters, text, and more.
1. Open the image's detail page.
2. Click **Edit image** from the dropdown menu.
3. Make your changes in Adobe Express.
The edited image replaces the original. Tags, locations, and the asset link are all preserved — nothing breaks across your site.
#### Import existing images
Import individual images that are not yet in Media Library by navigating to the **Image actions** menu and clicking **+ Add to Media Library**.
The **Theme Builder** also displays an import banner for bulk importing theme images into your Media Library.
### Upload files and documents
Media Library supports file and document uploads, so you can manage downloads, resources, and supplementary materials alongside your video, audio, and image assets.
Supported formats:
| Category | Formats |
| --------- | ---------------------------------------------------------------------------------------------------------------- |
| Documents | PDF, Word (.doc, .docx), Excel (.xls, .xlsx), PowerPoint (.ppt, .pptx), Keynote (.key), RTF, OpenDocument (.odt) |
| Ebooks | EPUB, MOBI |
| Other | CSV, TXT, ZIP, SRT (subtitles), TTF (fonts) |
**Note:** Text-based files such as PDFs and TXT files display inline in the browser instead of forcing a download.
### Organize with Tags
Create Tags to organize your media assets. You can add multiple Tags to any asset, making it easy to group and find related files. Create, rename, and delete Tags from the **Tags** page.
* **Create Tags** like "Module 1," "Interviews," "Bonus Content," etc.
* **Add or remove Tags** from any asset's detail page or directly from the Media Library
* **Filter your library** by one or more Tags to quickly find what you need
* **Bulk add or remove Tags** with multi-select
### Search and filter
Find exactly what you're looking for with built-in search and filtering:
* **Search by name** — Type in the search bar to find assets by name
* **Filter by type** — Switch between **All**, **Video**, **Audio**, **Image**, and **File** tabs
* **Filter by Tags** — Select one or more Tags to narrow your results
* **Sort** — Sort by name or date added
### Saved Views
Save your current filter and search settings as a named view, like a smart folder for your media. **Saved Views** let you get back to a specific set of filters instantly, without reconfiguring them each time.
* **Save your current filters** as a named view
* **Load a saved view** to instantly apply those filters
* **Rename or delete** saved views at any time
* A visual indicator shows when your current filters match a saved view
### Asset detail page
Click on any asset to open its detail page, where you can see everything about that file in one place:
* **Media preview** (Video and audio files only) — Watch videos or listen to audio directly in the browser
* **Info** — View the **File** **Type**, **Extension**, **Duration** or **Dimensions**, **File size**, and **Created** and **Last updated** dates
* **Analytics** (Vide\`o and audio files only) — Track how your audience engages with this video or audio file across your site
* **Locations** — See every place this asset is currently used across your site, with direct links to each location
* **Crops** — See thumbnails for all cropped versions you've created from this asset. Click a thumbnail to view its Asset detail page.
* **Tags** — Add or remove Tags
* **Actions** — Rename, download the original file, or delete the asset\\
### Transcripts, translations, and dubbing
For video assets, the detail page gives you access to powerful content enhancement tools:
* **Transcripts** — View automatically generated transcripts of your video content
* **Translations** — Access translated versions of your transcript for a global audience
* **Dubbing** — Manage dubbed audio tracks for your videos
* **Chapters** — Add chapters to create navigable sections within your videos, making it easy for your audience to jump to the content they need
### Chapters
Add navigable sections, or **Chapters**, to your videos so viewers can jump directly to the content they need. \
\
From the **Chapters** tab on any video asset's detail page, you can define titled markers throughout your video — similar to chapters on a YouTube video. When enabled, your members see clickable chapter markers in the video timeline during playback on every location where the video is embedded.
* Add up to 20 chapters per video with a **Title** and **Start time** for each
* Chapters appear as clickable markers in the video player timeline for your members
* Enable or disable chapters at any time without losing your work
* Live video preview lets you verify each chapter's timing as you set it up
* Works on both desktop and mobile
As an alternate to adding video chapters one-by-one, save time by **generating chapters with AI,** or paste chapters from software such as [Descript](https://descript.com).\
\
**To add chapters:**
1. Toggle on **Enable chapters**.
2. Move the playhead to go to the first location in the video you would like to add a chapter. Click **+ Add chapter**. The timecode reflected on the button will change as you move through the video.
3. For each timecode, enter a **Chapter title.**
4. To automatically generate chapter timecodes and titles, click **+ Generate with AI**.
**Note:** There is no charge for generating chapters on video with AI.
5. Use **+ Paste chapters** to add chapters from the clipboard of another source.
**Note:** Chapters can only be added to video assets that are in the Media Library.\
\
In order to add chapters, you must first transcribe your video.
### Video and audio analytics
Track how your audience engages with your video and audio content directly from the asset detail page. Analytics data is sourced from Wistia.
#### Video analytics
An **Analytics** card on the video asset detail page shows performance trends at a glance:
* **Metrics** — Total plays, unique plays, unique viewers, play rate, engagement rate, and hours watched
* **Location filtering** — Narrow results to a specific page or site where the video is embedded
* **Time span** — View the last 7, 30, or 90 days with a trend line chart
Click **View full analytics** to open an expanded modal with a custom date range picker. To access the original stats view (engagement chart and per-event play log), use the **View historical insights** button at the bottom of the **Analytics** card.
#### Audio analytics
Click **View analytics** on any audio asset's detail page to open a stats modal showing:
* Average engagement percentage
* Play rate
* Total play count
* Individual play and engagement events with timestamps
### Use media across your site
The real power of Media Library is using your assets anywhere across your Kajabi site. When you're building content in any of the following areas, you can select media directly from your library instead of uploading a file:
* **Course lessons** — Add video, audio, or images to any lesson
* **Blog posts** — Embed video, audio, or images in your Blog content
* **Coaching sessions** — Attach recordings to group or one-on-one sessions
* **Live sessions** — Add video replays
* **Offers and commerce pages** — Include video or images in your Offer pages
* **Pages and themes** — Add video, audio, or images to any page through the **Page Builder** or **Theme editor**
* **Product thumbnails** — Set thumbnails for Courses and other products
* **Coaching programs** — Add media to Coaching program content
* **Affiliate challenges** — Include media in challenge content
* **Creation wizards** — Select media during product creation flows
* **Branding and newsletter settings** — Use images in your brand and Newsletter configuration
When adding media to any of these areas, you'll see the Media Library picker — a modal that lets you browse, search, filter, and select assets from your library without leaving the page you're working on.
### **Add image crops**
When you add an image to your Kajabi site as part of your content creation process, you are prompted to crop it if it does not meet the file dimension requirements for that particular field. You can create additional, different cropped versions of the same parent image by clicking **Crop a new one**. Each crop appears as attached to the parent image's Media Library **Asset detail page**.
## FAQs
### Who can access the Media Library?
Media Library is available to site Admins, including Owners and Assistants. If you have admin access to your Kajabi site, you can manage media.
### What file types are supported?
Media Library supports the following file types:
* **Video** — MP4, MOV, AVI, WMV, FLV, MKV, 3GP, 3G2, M4V, MPG, OGV
* **Audio** — MP3
* **Images** — JPEG, PNG, GIF, WebP
* **Documents** — PDF, Word (.doc, .docx), Excel (.xls, .xlsx), PowerPoint (.ppt, .pptx), Keynote (.key), RTF, OpenDocument (.odt)
* **Ebooks** — EPUB, MOBI
* **Other** — CSV, TXT, ZIP, SRT (subtitles), TTF (fonts)
### Can I organize my files into folders?
Media Library uses **Tags** and **Saved Views** instead of traditional folders. Tags let you group and categorize files, and Saved Views let you save your current filter and search settings as a named view — so you can get back to a specific set of files instantly.
### What happens if I delete an asset that's being used somewhere on my site?
The asset is removed from all locations where it's currently in use. Check the **Locations** section on any asset's detail page to see everywhere it's being used before deleting.
### Is there a limit to how many files I can upload?
You can upload up to 10 files at a time per batch. There is no overall limit to the number of assets in your library.
### Can I download my original files?
Yes. On any asset's detail page, use the **Actions** menu to download the original file.
### Do I need to re-upload files I've already used in my Courses or pages?
No. You can bring existing videos into Media Library using the **Looking for older files?** option in the Media Library picker, which copies a video into your library without affecting where it's currently used.
If the **Add legacy media to library** button is available on your Media Library page, you can also bring in all of your remaining legacy video and audio at once. Until that option reaches your account, audio files you've already used need to be re-uploaded.
### Can I use the same asset in multiple places?
Yes. That's one of the main benefits of Media Library — upload once, use anywhere. The **Locations** card on the detail page tracks every place an asset is being used.
### Do existing images on my site automatically appear in Media Library?
Yes. Images already on your site — from theme settings, blog posts, product thumbnails, and other locations — are automatically imported into Media Library with their original locations tracked. The Theme Builder also shows an import banner for bulk importing theme images.
### Can I edit images in Media Library?
Yes. Click **Edit image** from the dropdown menu on any image's detail page to open it in Adobe Express. You can crop, resize, add filters, text, and more. The edited image replaces the original, and all Tags, locations, and asset links are preserved.
# Access Community from a Branded App
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/accessing-your-community-from-your-branded-app
Open Community directly from a Branded App for seamless navigation.
**Community** is accessible directly from a Branded App, allowing seamless navigation without switching between apps. With a single tap, you or your customers can open Community from inside the Branded App.
## Access Community
**To access Community from a Branded App:**
1. Open the **Branded App**
2. Select **Community** from the navigation menu:
3. The Community will open in a webview:
To return to the Branded App, click either the back arrow or the **X** at the top of the Community webview screen to close the window and return to the app.
# Additional steps to change Google Cloud IAP Policy
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/additional-steps-to-change-google-cloud-iap-policy
Complete these steps if you receive the IAM policy update failed error code.
If you receive the **IAM policy update failed** error code while configuring Google Cloud, follow the steps below to resolve it by updating roles and organizational policies.
## Add another role
1. Make sure that you are logged in with your **Organization Administrator** account
2. Open the **IAM** tab in the left menu:
3. Open the dropdown menu in the top-left corner:
4. Select the organization (the organization will have a building icon next to it):
* If the organization does not show up to be selected, then you must add it first:
* Click **Cancel**
* Open the **Organizations** tab OR the **Identity & Organization** tab *(Google can display this step in either)* from the left sidebar
* Click **Select** next to the organization domain to add it to the project:
* Be sure the organization is now selected in the dropdown and that you are in the **IAM** tab located in the left menu
5. Then, click the pencil icon next to the email account:
6. Click **add another role**:
* Search for the **organization policy administrator** role (you can search for it by typing it in. If you cannot find it, you are likely not logged in with the Organization's Administrator account):
7. Click **Save** to keep and apply the changes:
## Update the organizational policy
1. Open the **Organization Policies** tab from the left sidebar:
2. In the **Organization Policies** page, search for **Domain Restricted Sharing** from the list of constraints, then click **Domain Restricted Sharing**:
3. Click **Manage Policy**:
4. Then, select the **Override Parent's Policy** option:
* Click the **Replace** option, then click on the rule below and change the dropdown to **Allow All**
* Then, click **Done**:
5. Click **Set Policy** to save all changes:
6. Now, return to the **Organizational Policies** tab to open the **Organization Policies** page.
* Search **Disable service account creation** from the list of constraints
* Click **Disable service account creation**:
* You will want to follow these next steps for both links
## Disable service account settings
1. Search **Disable service account key creation** from the list of constraints
2. Click **Disable service account key creation**:
* You will want to follow these next steps for both links
3. Click **Manage Policy**
* Change the **Policy Source** to **Override Parent's Policy**, then click on the **Enforced** rule
* Change the **Enforced** rule to **Off**
4. Then, click **Done**:
5. Click **Set Policy** to save the changes:
* Make sure to repeat these steps for the second **Disable service account key creation** link
## Return to the project
After saving the new role, return to the project:
1. Open the dropdown menu in the top-left corner:
2. Switch back to the project you created (the app name):
## Return to the previous article
Go back to [Add Kajabi as an Admin to your Google Play Console and Project Owner on Google Cloud Console](/articles/mobile-apps/branded-app/how-to-add-kajabi-as-an-admin-to-your-google-play-console-and-project-owner-on-google-cloud-console) and complete Steps 3 and 4.
# Additional verification for the Google Play Console
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/additional-verification-for-your-google-play-console
Verify access to an Android device so you can publish apps on Google Play.
To publish apps on Google Play, you must verify that you have access to an Android mobile device. Verifying the **Google Play Console** with a real device helps improve app quality, protects users from malware, and reduces fraud.
**Note:**
Only the account owner can verify this information.
## Verify the Google Play Console
### Verify the Google Developers Account on an Android device
To verify that you have access to a mobile device you will need to open the Google Play Console app on an Android mobile device. If you don't have the Google Play Console app, go to [Download Google Play Console on an Android device](#download-google-play-console-on-an-android-device).
**Note:**
If you do not have an Android Device, go to [Android device not available](#android-device-not-available).
### Sign in to the Google Console App and verify the account
Sign into the Google Account with the Google Console email address used to sign into the Play Console.
To sign into the Google Developer Account:
1. Click the hamburger icon located in the top-left corner of the mobile device:
2. Click the email address that is currently logged in if it's not the email address you are using on the developer account:
3. Click **Add another account** then add the email address and password:
4. Choose the developer account (the developer name) and click **Verify**:
5. Once verified, you can close the app.
## Download Google Play Console on an Android device
### Option 1. Download from Google Play
If you don't already have the app, download it from Google Play:
[
](https://play.google.com/store/apps/details?id=com.google.android.apps.playconsole\&pcampaignid=web_share)
### Option 2. Scan the QR Code
Scan this QR code on the chosen Android Device to download the app:
## Android device not available
If you don't have a way of accessing an Android device, we are here to help. Please email us at [bma.support@kajabi.com](mailto:bma.support@kajabi.com) and we will assist you with this process.
# Android app transfer process
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/android-app-transfer-process
Set up and gather the information necessary for an Android App transfer.
The **Android app transfer** process requires adding Kajabi as an admin and gathering specific account information. Follow the steps below to prepare for and complete the transfer.
## Add Kajabi as a Google Play Account Admin
Complete the steps discussed in our guide to add Kajabi as an Admin on the Google Play Console.
[Learn to add Kajabi as an Admin](/articles/mobile-apps/branded-app/how-to-add-kajabi-as-an-admin-to-your-google-play-console-and-project-owner-on-google-cloud-console).
## Locate the Developers Account ID
After adding Kajabi as a Google Play Account Admin, you will need to locate the Developers Account ID.
1. Navigate to the [Google Play Console homepage](https://play.google.com/console)
2. Located at the top of the Google Play Console homepage will be the Personal Account ID, this is the Developers Account ID:
## Locate the Payment Transaction ID
After you have located the Developers Account ID, you will also need to provide the Payment Transaction ID.
You will need the Registration Transaction ID for the account and the target account.
1. To find the Transaction ID, search the target account owner's email inbox for **developer registration fee**
However, if you cannot locate the Transaction ID email receipt, you can sign into Google Payments.
2. With the target account owner's email address, [sign in to Google Payments](https://payments.google.com/payments/home)
3. Select **Activity** from the menu:
4. Locate the transaction for the developer account registration in the Activity tab
**Tip:**
Search the transactions for "Google Play Developer." The Transaction ID will be listed near the bottom of the transaction details.
**Note:**
Copy the Transaction Number starting from "PDS." Registration Transaction IDs are typically in one of the following formats: PDS.1234-5678-9012-3456.
## Contact support
After completing the steps above, you will need to reach out to Kajabi at [bma.support@kajabi.com](mailto:bma.support@kajabi.com) to finalize the app transfer.
# Answer Google's closed beta questionnaire
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/answer-googles-closed-beta-questionnaire
Provide proper answers to Google's closed beta questionnaire for a Branded App.
Google asks a series of questions after the **closed beta questionnaire** period has been completed. Use the suggested answers below as a starting point — they can be changed to better fit your business.
## About the closed test
### Question: How did you recruit users for your closed test? For example, did you ask friends and family, or use a paid testing provider?
**Answer:**
In addition to paying for a service that runs QA and beta testing on the app before it goes live, we also asked some of our existing customers to install and run the app:
### Question: How easy was it to recruit testers for your app?
**Answer:**
Easy
### Question: Describe the engagement you received from testers during your closed test
**Answer:**
There was no broken functionality reported, overall. Additionally, customers were able to consume the content without issues:
### Question: Provide a summary of the feedback that you received from testers. Include how you collected the feedback.
**Answer:**
My customers reported a need for cleaner webview navigation. This feedback was reported by multiple users via a community:
## About the app
### Question: Who is the intended audience of your app?
**Answer:**
My audience consists of like-minded individuals who :
### Question: Describe how your app provides value to users.
**Answer:**
My app allows my customers to consume course content on the go and track their progress within the app:
### Question: How many installs do you expect your app to have in your first year?
**Answer:**
Make your best estimate:
## Production readiness
### Question: What changes did you make to your app based on what you learned during your closed test?
**Answer:**
No changes were required, but our roadmap was updated:
### Question: How did you decide that your app is ready for production?
**Answer:**
The app was ready to be used as intended:
# Apply for Apple and Google's 15% commission programs
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/apply-for-apple-and-googles-15-commission-programs-for-your-branded-mobile-app
Reduce in-app purchase commissions by applying for Apple's and Google's 15% programs.
**Apple's Small Business Program** and **Google's Service Fee Tier Program** allow you to reduce the standard 30% commission on in-app purchases down to 15%. You are eligible if you earn less than \$1M (USD) per year with in-app purchases on each platform.
## Apple's application process
1. Review the details of Apple's Small Business Program:
[Learn about Apple's Small Business Program](https://developer.apple.com/app-store/small-business-program/)
2. Log in as the Apple Developer Account Holder and complete the form:
3. Click **Submit**:
## Google application process
### Create a payments profile
If you don't have a payments profile in the Google Developer Console, learn to create a payment profile with [Google's Help Article](https://support.google.com/googleplay/android-developer/answer/7161426).
### Create a developer account group
After creating the payment profile, you will need to create a **Developer Account Group**:
1. Open **Play Console**
2. Go to the Associated Developer Accounts page in the account
3. Click **Create account group**
4. Then, enter the **account group name**. Use the full, legal name of the business. If the account is for personal use, use the developer name.
5. Click **Create account group**:
[Learn more about setting up a Developer Account Group](https://support.google.com/googleplay/android-developer/answer/10627869#account_group_create\&zippy=).
### Enroll for the 15% service fee
When you have finished setting up the Developer Account Group, you will be able to enroll for the 15% service fee on the Associated Developer Accounts page.
1. There will be a banner with the heading, "When you've finished setting up your account group, enroll for the 15% service fee" where you can then click **Review and enroll**.
### Read and accept the Terms of Service
### Enroll
After you have finished accepting and enrolling, view the enrollment status at the bottom of the Associated Developer Accounts page at any time:
## FAQs
### How will non-USD currencies be taken into account?
The \$1M of developer earnings is defined in U.S. Dollars (USD). Any transactions in other currencies will be converted by using the foreign exchange rates that are updated throughout the day.
### On what calendar basis will the annual \$1M USD of developer earnings be determined?
Earnings are calculated on a calendar year basis (i.e., January 1st - December 31st).
# Kajabi Mobile App vs. Branded Mobile App
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/kajabi-mobile-app-vs-branded-mobile-app
Compare the Kajabi Mobile App and Branded Mobile App to choose the right mobile experience.
Kajabi offers two mobile app experiences for delivering content: the **Kajabi Mobile App (KMA)** and the **Branded Mobile App (BMA)**. Both allow members to access courses, coaching, podcasts, and Backstage, but they differ in their level of customization and setup requirements.
## Shared features (KMA & BMA)
Both apps include:
* Member access to **courses, coaching, private podcasts, and Backstage**
* A refreshed course design with **custom thumbnails**
* Updated and **natively integrated community experience**
* Login to the app as an **admin to manage the community** as a founder/admin/moderator
* **Magic-link login** (or 6-digit code)
* Fully native **comment integration**
* **Confetti celebrations** for lesson completion
## Kajabi Mobile App (KMA)
The **Kajabi Mobile App** is free and ready to use without setup.
[**Apple App Store**](https://apps.apple.com/us/app/kajabi/id1485646310)
[**Google Play Store**](https://play.google.com/store/apps/details?id=kajabi.kajabiapp\&hl=en)
### Customization options
* Select brand color (applies throughout the app)
* Update site icon
### Functionality
* Members can access content as soon as they purchase
* Kajabi manages all app updates and maintenance
### Setup & maintenance
* No setup required
* Members simply download the **Kajabi App** from the app store and log in
* Kajabi handles all updates automatically
## Branded Mobile App (BMA)
The **Branded Mobile App** provides a fully customized app experience under your own brand.
* [**Apple example**](https://apps.apple.com/us/app/kajabi-branded-app/id6502643192)
* [**Android example**](https://play.google.com/store/apps/details?id=com.kj2148083404.app\&hl=en)
### Customization options
* Brand colors throughout the app experience:
* Progress bars
* Lesson statuses
* Custom app [**icon**](./how-to-create-a-branded-mobile-app-icon), [**app name**](./how-to-write-and-update-your-app-store-description-for-your-branded-mobile-app), app store description
* Custom screenshots
* Custom screens (welcome, onboarding carousel, links menu)
### Additional functionality
* In-App Offers
* Push Notifications
* Variant screens for segments
* Custom widgets
* External purchase links (U.S. only)
* Full Admin Access via email
### Setup & maintenance
* Requires Apple Developer, Google Developer, Google Cloud Accounts, and DUNS number
* Apple approval: 1–2 weeks
* Google approval: 6–8 weeks (closed testing)
* App submissions may be rejected, sometimes requiring Hero action
## Comparison summary
| Feature | Kajabi Mobile App (KMA) | Branded Mobile App (BMA) |
| ---------------------------- | --------------------------------------------------- | ------------------------------------------------------------------ |
| **Cost** | Free | \$199/mo add-on (included in Pro plan) |
| **Customization** | Brand color, site icon | Full branding, custom screens, icons, screenshots |
| **Additional Functionality** | Admin login for community management | In-App Offers, Push Notifications, Variant screens, Custom widgets |
| **Setup & Maintenance** | No setup required, Kajabi handles all updates | Requires developer accounts, 1-8 weeks for approval |
| **Best For** | Heroes who want a quick, no-setup mobile experience | Heroes who want a fully customized app under their own brand |
# Kajabi Transcripts, Translations, and Dubbing
Source: https://help.kajabi.com/articles/products/media-library/kajabi-transcripts-translations-dubbing
Make video content more accessible and reach global audiences with transcripts, translations, and dubbing.
**Kajabi Transcripts, Translations, and Dubbing** tools make your video content more accessible and help you reach audiences across the globe.
Transcriptions, Translations, and Dubbing features allow you to:
* Automatically generate transcripts for any uploaded video
* Edit transcripts in the interactive editor
* Instantly translate your transcription from 30+ source languages into 70+ languages
* Download and edit SRT files
* Add dubbed voice-over in multiple languages
Repurpose your content for global audiences, enhance accessibility, and make your courses and marketing materials more engaging and inclusive.
Wistia currently supports 70+ languages for translation. To view the list of available languages, visit [Wistia's transcription languages page](https://docs.wistia.com/page/transcription-languages#/).
## AI credits
[AI credits](../../products/ai-credits) power the Transcriptions and Translations feature. Growth and Pro plan users receive a monthly credit allotment. Additional credits are available for purchase on any plan.
Learn more about [AI credits](../../products/ai-credits).
## Use Transcriptions, Translations, and Dubbing
Transcriptions, Translations & Dubbing can be used with any video already uploaded to your Course lesson, course live video, website editor, coaching session, or anywhere else you use a video in Kajabi, as well as with uploaded videos.
**Note:** A transcription, translation, or dub is attached to the video itself in your Media Library — not to a specific lesson, page, or session. Once you add one to a video, it appears everywhere that video is used.
1. [Upload a video](../../products/courses/how-to-bulk-upload-videos-in-a-product) or choose an already uploaded video.
2. Once the video has finished uploading, click **Video Actions**.
3. Select **View in media library**.
4. Select the specific video inside the Media Library.
### Add a transcription
A transcription must exist before you can translate or dub a video. Under **Transcriptions**, choose one of two options.
**Generate a transcript automatically**
1. Click **Generate a transcript**.
2. Select the source language spoken in the video.
3. Kajabi generates the transcript and attaches it to this video. **Upload your own transcription file**
An SRT (SubRip Subtitle) file is a plain-text captions file that pairs blocks of dialogue with timestamps. If you already have a transcript or captions file — exported from a video editor, an external captioning service, or elsewhere — you can upload it directly instead of generating one.
1. Click **Upload a transcription**.
2. Select your `.srt` file from your computer. Already generated a transcript and want to fine-tune it? Download it as an SRT file, edit the text or timing in any text editor or captioning tool, then upload the edited file using the steps above to replace it.
### Translate a video
Once a transcription exists, under **Translations**, use the **Translations** tool to translate your video to a different language:
### Dub a video
Alternatively, under **Dubbing**, use the **Dubbing** tool to generate a video featuring a dubbed voiceover in another language:
## Important notes
**Note:**
* To use the Translations or Dubbing feature, a transcription must be uploaded or created first.
* Coaching live sessions and Cohort live sessions can be used with Transcriptions and Translations, but the Dubbing feature does not currently support Coaching & Cohort live sessions.
* The Dubbing feature may take a few minutes to process. You can safely navigate away after submitting your video, and you'll receive an email notification once the dubbed video is ready.
* Transcriptions, Translations, & Dubbing all require AI credits. Learn more about [AI credits](../../products/ai-credits).
* Wistia currently supports 70+ languages for translation. To view the list of available languages, visit [Wistia's transcription languages page](https://docs.wistia.com/page/transcription-languages#/).
# Connect Google Analytics with Kajabi
Source: https://help.kajabi.com/articles/api-integrations/analytics-integrations/connect-google-analytics-with-kajabi
Integrate Google Analytics with Kajabi to track website traffic, visitor behavior, and conversions.
Kajabi Analytics offers essential data to help you run your online business. Integrate with **Google Analytics** to get even more data, like where your website traffic is coming from, where your page visitors are located, what their online behavior and conversions look like, and more.
**Note:**
If your Google Analytics interface differs in appearance, this guide can still assist you in connecting Google Analytics with Kajabi. However, if you need additional assistance, we recommend that you consult the resources available on [Google's support page](https://support.google.com/analytics/answer/1008015?hl=en) or contact our [support team](/articles/resources/support/how-to-contact-kajabi-support).
## Connect Google Analytics with Kajabi
### Create a universal analytics tracking ID
To connect Google Analytics to Kajabi, you'll first need to set up your Google Analytics account and create a universal analytics (UA) tracking ID:
* Log into your Google Analytics dashboard at [analytics.google.com](https://analytics.google.com/analytics/web/)
* Click the **Start measuring** button
* Enter your desired account name in the **Account name** field
* Adjust your data sharing settings as desired and click **Next**
* Enter your desired analytics property name in the **Property name** field
* Then, select the **Show advanced options** link
* Click the toggle on to **Create a Universal Analytics property**
* Enter your Website URL and click **Next**
* Input your basic business information and click **Create**
* Follow the prompt to accept the Terms of Service
**Note:**
If you've already created a property without enabling the universal analytics tracking ID, you may need to create a new property to properly connect your Google Analytics with Kajabi.
### Copy the Google Analytics UA tracking ID
* Navigate to the top left of your Google Analytics dashboard and click **All accounts**
* Locate your account name in the Analytics Account column
* Then, locate your property in the Properties & Apps column
* Your universal analytics (UA) tracking ID will begin with the letters "UA"
* Copy your UA **Tracking ID**
### Paste the UA tracking ID into Kajabi
* Navigate to your Kajabi Dashboard
* Click **Settings** at the bottom of the left sidebar
* Then, click **Integrations & Webhooks**
* Scroll down to **Google Analytics** and click the toggle **On**
* Paste your universal analytics (UA) tracking ID into the Google Analytics ID field
* Click **Save** to keep and apply your changes
## Understanding the differences between Google Analytics and Kajabi Analytics
### Why are there differences between Google Analytics and Kajabi Analytics?
Most page trackers use cookies, and although they are implemented similarly, the way they track page views may differ.
For example, let's say you refresh a web page multiple times with a few seconds in between each refresh. Depending on how they're configured, one tracker might count each page refresh as a unique page view while another tracker might count the entire event as a single page view.
See below for more information on Google Analytics and Kajabi Analytics.
### Google Analytics
Refer to [Google's documentation](https://support.google.com/analytics/answer/1257084#pageviews_vs_unique_views\&zippy=%2Cin-this-article) for complete information on the functionality of Google Analytics.
### Kajabi Analytics
Unique views are counted per unique person, computer, or mobile device that viewed the page. If the same person/device views the page more than once, it won't be counted as a Unique View.
On Kajabi, Views are the total number of times the page is viewed. This includes multiple visits by the same person, including page refreshes.
## Purchase events in Google Analytics
Google Analytics purchase events fire on the first post-purchase page a customer reaches, such as:
* Login page (for new or returning customers)
* Account creation page (for new customers)
* Upsell page
For extra reliability, the purchase event is also configured to fire on post-purchase thank-you pages, landing pages, and the member library. However, once the purchase event has fired on one page, it will not fire again on subsequent pages.
This ensures that:
* Purchases are tracked as early as possible
* Tracking is consistent, even if a customer does not move through every step of the flow
See the flow chart below for a visual breakdown of where the purchase event fires in [Enhanced Checkout](/articles/sales/checkout/enhanced-checkout-overview), depending on whether the customer is new or returning, and whether returning members are already logged in or not:
If you also use Meta Pixel, see [Meta Pixel with Kajabi](/articles/api-integrations/analytics-integrations/meta-pixel-with-kajabi).
## Additional resources
Additional support for Google Analytics is available for those with advanced knowledge of cross-domain tracking and UTM parameters.
### Cross-domain tracking
* Read [Google's Support Guide](https://support.google.com/analytics/answer/1034342?hl=en\&ref_topic=2772342) for details on using Google Tag Manager for cross-domain tracking
* Read Google's Guide on How to [Deploy Google Analytics with Tag Manager](https://support.google.com/tagmanager/answer/6107124?hl=en) for more details
* After obtaining your Tag Manager code, track purchases by inputting it into the [Checkout Settings](/articles/sales/checkout/how-to-add-a-javascript-tracking-code-to-your-checkout-pages) of your Kajabi account
* Input your Tag Manager code in your site's page scripts
* With the Kajabi Pro plan, [learn to access the code editor](/articles/website/pages/how-to-access-the-code-editor) for your site to add your Tag Manager code to specific pages
### Create UTM Parameters for your links with the Google Analytics URL Builder
* Read [Google's Support Guide](https://support.google.com/analytics/answer/1033867) to learn how to generate custom campaign parameters for your URLs
* Generate your URL with [Google's URL Builder](https://ga-dev-tools.appspot.com/campaign-url-builder/)
# Connect Crazy Egg to Kajabi
Source: https://help.kajabi.com/articles/api-integrations/analytics-integrations/how-to-connect-crazy-egg-to-kajabi
Integrate Crazy Egg heat map analytics with your Kajabi site to track visitor behavior.
**Crazy Egg** is a subscription-based analytics platform that tracks and optimizes website visitor behavior through the use of heat map reports and A/B tests. Connect Crazy Egg to your Kajabi site to visualize how visitors interact with your pages.
## Create a snapshot
To connect Crazy Egg to Kajabi, first you will need to create a Snapshot for your Kajabi website in Crazy Egg. [Learn how to create a Crazy Egg Snapshot](https://support.crazyegg.com/hc/en-us/articles/360055835653-How-to-Create-Your-First-Snapshot).
## Install the Crazy Egg tracking code on Kajabi
After your snapshot has been created, go to the [Crazy Egg manual install page](https://core.crazyegg.com/install/manually) and **copy** the Crazy Egg script to your computer's clipboard:
Next, you will add the Crazy Egg script to Kajabi:
* Go to **Settings**.
* Then, select **Site Details**.
* Scroll down to **Page Scripts**. Page Scripts is where you will paste the Crazy Egg script.
* After pasting the script, remember to click **Save** to keep your changes:
## Check your Crazy Egg installation
Finally, you will want to ensure the Crazy Egg tracking script was installed correctly.
After pasting the code, give it some time to fully install. This can take up to 24 hours. After allowing your setup to fully install, test your installation on Crazy Egg.
To test:
* Click on the **Action** button for that snapshot.
* Then, **Check Installation**.
* Crazy Egg will then test the installation and display the results:
To learn how to manually check your tracking script installation more in-depth, [visit Crazy Egg's Support Guide](https://support.crazyegg.com/hc/en-us/articles/360054296114-Manually-Check-your-Tracking-Script-Installation).
# Integrate GA4 tags with Kajabi
Source: https://help.kajabi.com/articles/api-integrations/analytics-integrations/how-to-integrate-ga4-tags-with-kajabi
Set up Google Analytics 4 (GA4) on your Kajabi site for detailed visitor insights.
**Google Analytics 4 (GA4)** provides powerful insights into how visitors interact with your website. Set up GA4 and connect it to your Kajabi site to track visitor behavior and conversions.
## What is GA4?
GA4 is a kind of analytic property that collects and measures:
* Collects both website and app data to better understand the customer journey
* Uses event-based data instead of session-based
* Includes privacy controls such as cookieless measurement, and behavioral and conversion modeling
* Predictive capabilities offer guidance without complex models
* Direct integrations to media platforms help drive actions on your website or app
[Learn more about what data is collected with Google Analytics](/articles/api-integrations/analytics-integrations/what-data-does-google-analytics-collect).
## Set up GA4
GA4 setup is handled through Google. Once the GA4 tag has been created, it can be added to Kajabi.
[Learn how to create GA4](https://support.google.com/analytics/answer/9304153?sjid=3537790515861172962-NA).
Already have a Universal Analytics (UA) tag set up through Google? Google will convert the UA Tag into a GA4 tag for you automatically.
[Learn more about converting UA to GA4](https://support.google.com/analytics/answer/10759417?sjid=3537790515861172962-NA).
## Integrate GA4 with Kajabi
To integrate the GA4 tag with Kajabi, first, you will need to copy your GA4 tag from [Google Analytics](https://www.google.com/analytics/web).
### Copy the GA4 tag in Google
* In [Google Analytics](https://www.google.com/analytics/web), click [Admin](https://support.google.com/analytics/answer/6132368).
* Make sure you are in the correct account and property.
* In the **Property** column, click Data Streams.
* Click the data stream for which you need the ID.
* In the **Google tag** section, click Configure tag settings.
* In the **Your Google tag** section, copy the ID that starts with "**G**-":
### Enter the GA4 tag into Kajabi
* Navigate to your **Kajabi Dashboard**.
* Click **Settings** at the bottom of the left sidebar.
* Then, click **Third Party Integrations**.
* Scroll down to **Google Analytics** and click the toggle **On**.
* Paste your **GA4 Tag tracking ID** into the Google Analytics ID field.
* Click **Save** to keep and apply your changes:
# Use Kajabi with Segment
Source: https://help.kajabi.com/articles/api-integrations/analytics-integrations/how-to-use-kajabi-with-segment
Connect Segment to your Kajabi site to collect and send customer data to analytics tools.
**Segment** is an API that allows you to collect customer data and send it to hundreds of tools for analytics, marketing, and data warehousing. [Learn more about Segment](https://segment.com/product/?utm_campaign=650073498\&utm_source=adwords\&utm_medium=paid-search\&utm_content=291636242809\&utm_term=segment\&adgroupid=58068309985\&gclid=Cj0KCQiA8f_eBRDcARIsAEKwRGfRPxlIprCPkDVNXa5Yoa8TL_bO5hWPz-eCtrcmylQWJ5CgyAWyajEaAmUHEALw_wcB).
**Note:**
A Segment Project (Legacy Source) should be made for each Kajabi Site.
In Kajabi, Segment can be used to track data on the following actions for logged in customers:
* Viewed Blog
* Viewed Blog Post
* Viewed Categories
* Viewed Category
* Viewed Landing Page
* Viewed Lesson
* Viewed Product
* Viewed Sales Page
## Set up the native Segment integration in Kajabi
To set up the native Segment integration in Kajabi, you'll need to complete the following steps:
* First, head into the **Settings** tab from your dashboard.
* Then, click into **Third-Party Integrations**.
* Toggle **On** the **Segment** integration.
After enabling your Segment integration you will be prompted to enter your Segment **API Key**.
This can be found under the **Settings** for the Project you're setting up.
## Get your Segment API key
To get your API key:
* Click the **Sources** tab.
* Select your **Source**.
* Click the **Settings** tab.
* Then, click the **API Keys** tab.
* Click **Copy** next to the **Write Key** field.
* With your Key copied, head back into your Kajabi Integrations page and paste the key into the **API Key** field and click **Save** at the top.
You will receive confirmation that your integrations were successfully updated, and you'll be ready to start using Segment.
# Meta Pixel enhancements
Source: https://help.kajabi.com/articles/api-integrations/analytics-integrations/meta-pixel-enhancements
Integrate your Kajabi site with the latest Meta Pixel enhancements.
Kajabi supports the latest Meta Pixel enhancements to help ensure your conversion events reach Meta accurately, even as privacy laws and browser tracking restrictions continue to evolve.
## Latest enhancements
As privacy laws and your site visitors' operating systems continue to evolve, they may impact how Meta receives and processes Events from tracking tools like the Meta Pixel.
If you optimize, target, or report on website Events from [Meta Pixel](https://www.facebook.com/business/help/742478679120153?id=1205376682832142) or any of Meta's other business tools, you can take steps to update your Event setup and manage these evolving changes. [Learn more about these changes](https://www.facebook.com/business/help/126789292407737?id=428636648170202).
Kajabi supports [Meta's Conversions API](https://www.facebook.com/business/help/2041148702652965?id=818859032317965) to ensure lead and purchase Events reach Meta, even when the Meta Pixel alone can't.
## Set up the Meta Conversions API
### What is the Meta Conversions API?
Changes to Meta's ability to track Events may impact Kajabi's ability to send conversion Event information that you normally track in your Ads Manager.
[Learn more about these anticipated changes](https://www.facebook.com/business/help/331612538028890?id=428636648170202).
The Conversions API allows Kajabi to send purchase and lead Events that visitors complete on your Kajabi site directly to your Meta Ads Manager instead of relying on the visitor's web browser. [Learn more about Meta's Conversions API](https://www.facebook.com/business/help/2041148702652965?id=818859032317965).
### Send lead and purchase events to Meta
To set up your Meta Conversions API and send lead and purchase events from Kajabi to Meta, you will need two items:
* [Meta Pixel ID](https://www.facebook.com/business/help/952192354843755?id=1205376682832142)
* [API Access Token](/articles/api-integrations/analytics-integrations/meta-pixel-with-kajabi)
Your Pixel ID and Access Token must be added to your Pixel integration in your Kajabi Site Settings.
#### Add Meta Pixel ID and API Access Token to Kajabi
1. From the Dashboard, click **Settings.**
2. Click **Integrations & Webhooks**.
3. Scroll down to **Meta Pixel** and click the toggle to enable it.
4. Enter your Pixel ID in the **Pixel ID** field.
5. Enter your Access Token in the **Access Token** field.
6. Click **Save.**
After setting up your integration, Kajabi can send the following Events to Meta:
* Purchases
* Leads
[Learn how to connect Meta Pixel with Kajabi](/articles/api-integrations/analytics-integrations/meta-pixel-with-kajabi).
## How does this work with existing browser events?
Your current browser events will still send in addition to the server events from the Conversions API.
Meta deduplicates identical events sent through the Meta Pixel and the Conversions API by checking the Event name and ID to determine if there are duplicates.
**Warning:** If you are using a third-party CAPI Gateway such as Stape in addition to Kajabi's API Access Token, you may experience duplicate Purchase events in Meta. This happens because the CAPI Gateway sends its own server-side events independently. Because there is no matching client-side event to pair against, Meta cannot deduplicate them, resulting in inflated Purchase counts and revenue data in your Meta Ads Manager. To avoid this, use either Kajabi's API Access Token or a third-party CAPI Gateway, but not both at the same time. If you are seeing duplicate Purchase events, removing the API Access Token from your Kajabi Pixel settings may resolve the issue.
[Read more about event deduplication](https://developers.facebook.com/docs/marketing-api/conversions-api/deduplicate-pixel-and-server-events).
## Where the purchase event fires
Kajabi sends purchase events to Meta in two ways: through the customer's browser (client-side) and directly from Kajabi's servers (server-side). When both events are sent for the same purchase, Meta automatically deduplicates them using the purchase ID.
Purchase events fire on the first post-purchase page a customer reaches, such as:
* Login page (for new or returning customers)
* Account creation page (for new customers)
* Upsell page
To provide extra reliability, the purchase event is also configured to fire on post-purchase thank-you pages, landing pages, and the member library. However, once the event has fired on one page, it will not fire again on subsequent pages.
This ensures:
* Purchases are captured as early as possible.
* Tracking is consistent, even if a customer does not continue through every step of the flow.
See the flow chart below for a visual breakdown of where the purchase event fires in [Enhanced Checkout](../../sales/checkout/enhanced-checkout-overview), depending on whether the customer is new or returning, and whether returning members are already logged in or not:
**Warning:** Using the Meta Conversions API may require additional review of your compliance obligations under data regulation laws applicable to you and your customers.
## FAQs
### Which events does Kajabi send via the Meta Conversions API?
Kajabi sends two types of events via the Meta Conversions API: **Purchases** and **Leads.** These are sent server-side directly from Kajabi to Meta, in addition to the browser-based client-side events sent through the Meta Pixel.
### Does the Meta Conversions API work with all Kajabi checkout types?
The Meta Conversions API purchase event tracking is supported with [Enhanced Checkout](https://help.kajabi.com/articles/sales/checkout/enhanced-checkout-overview#enhanced-checkout-overview). If you are using Legacy Checkout, purchase event behavior may differ. See the purchase event flow chart in this article for a detailed breakdown of where events fire depending on whether the customer is new or returning.
### How do I know if my events are being deduplicated correctly?
You can verify event deduplication in your Meta Events Manager. Look for events showing as "1 event from 2 sources" — this confirms deduplication is working correctly. If you see duplicate Purchase events, check whether you are using both a third-party CAPI Gateway and Kajabi's API Access Token at the same time. Using both simultaneously prevents Meta from deduplicating events because there is no matching client-side event\_id to pair against the server-side event. [Learn more about event deduplication](https://developers.facebook.com/docs/marketing-api/conversions-api/deduplicate-pixel-and-server-events).
### Can I use a third-party CAPI Gateway like Stape with Kajabi?
Yes, but not at the same time as Kajabi's API Access Token. Using both simultaneously sends duplicate server-side events that Meta cannot deduplicate, resulting in inflated Purchase counts and revenue data. Use either Kajabi's API Access Token or a third-party CAPI Gateway, but not both.
# Meta Pixel with Kajabi
Source: https://help.kajabi.com/articles/api-integrations/analytics-integrations/meta-pixel-with-kajabi
Install and configure Meta Pixel to measure advertising effectiveness on your Kajabi site.
**Meta Pixel** is an analytics tool that allows you to measure the effectiveness of your advertising by understanding the actions people take on your website.
## Install Meta Pixel
### Create a Meta Pixel with Meta Business
* Log in to your [Meta Business](https://business.facebook.com/) account (or create an account).
* Click **Events Manager** in the left sidebar.
* Select **+ Connect Data Sources** from the left sidebar.
* Choose **Web**, and click **Connect**.
* Enter a **Pixel name**, then click **Create Pixel**.
* Input your site URL (i.e., [your custom domain or Kajabi subdomain](../../website/domains/connect-a-custom-domain)) to check your partner integration eligibility, and click **Next**.
* Select the option to connect your website with **Conversions API and Meta Pixel**. [Learn more about Meta's Conversions API](https://www.facebook.com/business/help/2041148702652965?id=818859032317965).
* Click **Next**:
[Learn more about Meta Pixel](https://www.facebook.com/business/learn/lessons/overview-of-how-facebook-pixels-work?course_id=314938442554416\&curriculum_id=726377631115881).
**Tip:**
Verify your Domain in [Business Manager](https://business.facebook.com/) to claim and protect ownership of your website domain name. [Learn more about Meta's domain verification](https://developers.facebook.com/docs/sharing/domain-verification).
### Generate your API Access Token
An **Access Token** is required to send your event data directly from Kajabi to Meta through Meta's Conversions API. [Learn more about Meta's Conversions API](https://www.facebook.com/business/help/2041148702652965?id=818859032317965).
#### Generate an Access Token
* Select **Set up manually** and click **Next**.
* On the Manual Implementation Overview page, click **Continue**.
* Select the [Events](#pixel-events) you want to send through the API, then click **Continue**.
* Next, select the Event Parameters you want to send, and click **Continue**.
* Review your setup details, and click **Continue**.
* On the 'See Instructions' page, click the **Open Implementation Guide** link.
* Navigate to the **Generate an Access Token** section and click **Generate Access Token**.
* Copy your Access Token (note: you'll need your Pixel ID in the next step as well).
* Configure any other settings as desired and click **Finish**:
**Warning:**
Utilizing Meta's Conversions API may require additional review of your compliance obligations under data regulation laws applicable to you and your customers.
### Connect your Meta Pixel to your Kajabi site
After generating your Access Token, complete your Meta Pixel integration by adding your **Pixel ID** and **Access Token** to your Kajabi site.
#### Add Meta Pixel and Access Token to Kajabi
* Click open **Settings** at the lower left of your Kajabi dashboard.
* Select **Integrations & Webhooks**.
* Scroll down to Facebook Pixel and click the toggle to **On**.
* Enter your Pixel ID in the **Pixel Id** field.
* Then, enter your Access Token in the **Access Token** field.
* Click **Save** to complete your integration.
For users who prefer not to use Kajabi's native integration, Meta Pixel can also be added via manual script embedding. Navigate to `Settings > Site Details > Page Scripts`, paste the Meta Pixel code provided by Meta into the `Header Page Script` section, and save your changes. This method ensures site-wide tracking for those who require specific customization.
If you are using the Meta Pixel and the [cookie consent script](../../website/pages/cookies-and-cookie-disclaimers), you will need to enable the Meta Pixel consent mode:
**Tip:**
After connecting your Meta Pixel, test to verify that everything has been set up correctly. Using Chrome? Check out the [Pixel Helper extension from Meta](https://chrome.google.com/webstore/detail/facebook-pixel-helper/fdgfkebogiimcoedlicjlajpkdmockpc?hl=en) to test your Pixel implementation. Testing can also be done using the Meta Ads Test Events tool.
When testing your Meta Pixel, ensure that you have placed the script in the correct location. Avoid inserting it in CSS or unintended script areas. Use only designated headers or page scripts. For advanced needs, check the configuration within Meta Ads to ensure all expected events are being tracked.
## Pixel events
With Meta Pixel, **Events** are the actions visitors take on a website, such as viewing a page, submitting a form, or making a purchase.
In your ads reporting dashboard, the **Events** you can track include:
* **Lead** - When a site visitor submits information with the understanding that your business may contact them at a later date.
* **Initiate Checkout** - When a site visitor begins a checkout process, such as by clicking a Checkout button.
* **Purchase** - When a site visitor completes a purchase and triggers some type of confirmation or transaction receipt.
* **View Content** - When a site visitor views a web page you care about. This event indicates that someone has visited a page URL but provides no data on what they saw or did thereafter.
* And many more. [Learn more about Meta Pixel Events](https://www.facebook.com/business/help/402791146561655?id=1205376682832142).
## Where the purchase event fires
Kajabi sends purchase events to Meta in two ways: through the customer's browser (client-side) and directly from Kajabi's servers (server-side). When both events are sent for the same purchase, Meta automatically deduplicates them using the purchase ID.
Purchase events fire on the first post-purchase page a customer reaches, such as:
* Login page (for new or returning customers)
* Account creation page (for new customers)
* Upsell page
To provide extra reliability, the purchase event is also configured to fire on post-purchase thank-you pages, landing pages, and the member library. However, once the event has fired on one page, it will not fire again on subsequent pages.
This ensures:
* Purchases are captured as early as possible.
* Tracking is consistent, even if a customer does not continue through every step of the flow.
See the flow chart below for a visual breakdown of where the purchase event fires in [Enhanced Checkout](../../sales/checkout/enhanced-checkout-overview), depending on whether the customer is new or returning, and whether returning members are already logged in or not:
## Additional resources
* [How to Set Up and Install a Meta Pixel](https://www.facebook.com/business/help/952192354843755)
* [Best Practices for Meta Pixel Setup](https://www.facebook.com/business/help/218844828315224?id=1205376682832142)
* [About Meta Pixel Standard and Custom Events](https://www.facebook.com/business/help/964258670337005?id=1205376682832142)
* [How to Capture Events](https://www.facebook.com/business/learn/lessons/how-to-capture-events-with-facebook-pixel)
# Google Analytics data collection
Source: https://help.kajabi.com/articles/api-integrations/analytics-integrations/what-data-does-google-analytics-collect
Understand the types of data Google Analytics tracks and how purchase events work with Kajabi.
**Google Analytics** tracks important visitor information to help you understand your audience. Explore what data is collected and how purchase events are tracked on your Kajabi site.
## Data collected by Google Analytics
Google Analytics tracks some of the following information when enabled:
* Device type
* Operating system
* Browser type
However, Google Analytics does not allow you to track personally identifiable information (PII). PII may include things like email, name, company, credit card number, drivers license, and more. For more information, please refer to [Kajabi's Privacy Policy](https://kajabi.com/policies/privacy). Google also provides [resources](https://support.google.com/analytics/answer/7686480?hl=en) about what they consider PII, and what is acceptable to collect.
In an effort to avoid collecting PII, you may use tools such as Google Tag Manager. This will allow you to set up conditions to filter out any potentially sensitive data.
Additional resources about data collection can be found in [Google's Help Center](https://support.google.com/analytics/?hl=en\&sjid=8177823884974561655-NA#topic=14090456).
## Purchase events in Google Analytics
Google Analytics purchase events fire on the first post-purchase page a customer reaches, such as:
* Login page (for new or returning customers)
* Account creation page (for new customers)
* Upsell page
For extra reliability, the purchase event is also configured to fire on post-purchase thank-you pages, landing pages, and the member library. However, once the purchase event has fired on one page, it will not fire again on subsequent pages.
This ensures that:
* Purchases are tracked as early as possible.
* Tracking is consistent, even if a customer does not move through every step of the flow.
See the flow chart below for a visual breakdown of where the purchase event fires in [Enhanced Checkout](../../sales/checkout/enhanced-checkout-overview), depending on whether the customer is new or returning, and whether returning members are already logged in or not:
# Connect Kajabi to Claude or ChatGPT
Source: https://help.kajabi.com/articles/api-integrations/connect-kajabi-to-claude-or-chatgpt
Set up the Kajabi MCP server to manage Courses, Offers, Contacts, and more from Claude, ChatGPT, and other AI tools.
**Kajabi MCP** is a Model Context Protocol server that connects your Kajabi account to AI tools like Claude and ChatGPT. Once connected, you can ask the AI to list Courses, draft Email Broadcasts, search Contacts, create Offers, and more, all from a single conversation.
## How it works
Using Kajabi MCP follows three steps:
1. **Ask:** Describe what you want in plain language.
2. **Build:** Kajabi MCP constructs pages, emails, Offers, or other content based on your request, usually in under a minute.
3. **Review:** Open the draft in the Kajabi admin UI to make final edits and publish.
For example, instead of building pricing variations, drafting an announcement email, and updating a landing page across three separate tools, you can ask:
*"Create a 30% off Offer for my Photography Fundamentals Course running next Tuesday, draft an email broadcast announcing the sale, and update the Course landing page to mention the discount."*
Kajabi MCP creates the draft Offer, broadcast, and landing page edits in seconds. Open each in the Kajabi admin UI to fine-tune the copy and publish when ready.
## What's possible
* **Browse and inspect**: List and fetch Sites, Courses, Products, Offers, Contacts, Forms, Landing Pages, Blog posts, Email Broadcasts and Sequences, Coaching products, and themes. Search Contacts and Products by text.
* **Create drafts**: New Blog posts, Courses (with modules and lessons), Coaching products, Offers with pricing, Landing Pages, Email Broadcasts, and Email Sequences with scheduled emails.
* **Edit existing content**: Update Course structure, Coaching metadata, Blog post body, SEO, tags, Form fields and settings, and theme content.
* **See who's who**: Contact profiles with tags, purchases, and access; tag and segment lists.
* **Work with your Media Library**: Browse and search library assets, inspect where an asset is used, add new media through Kajabi's uploader, place an asset onto a supported page, crop an asset to fit a slot, and replace one asset with another everywhere it appears.
**What it won't do:** Take actions on behalf of customers, process payments, send email blasts, surface analytics, or touch account settings.
## Before you begin
**Server URL:** [https://mcp.kajabi.com/mcp](https://mcp.kajabi.com/mcp)
Before you start: log into the correct Kajabi account in your browser. The OAuth approval uses that session.
## Choose what your AI tool can do
When you authorize access to Kajabi, you choose which actions your AI tool can take on your behalf. Each permission can be turned on or off independently, so you can grant only what you need.
| **Permission** | **What it allows** |
| :----------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------- |
| **Read your Kajabi data** | View contacts, products, content, and analytics. |
| **Create and edit blog posts, landing pages, newsletters, forms, and courses** | Draft and update these content types. |
| **Create and edit offers, products, coaching, and events** | Draft and update commerce and coaching items. |
| **Create and edit contact tags and segments** | Organize contacts with tags and saved segments. |
| **Send DMs, post in community channels, and edit community settings** | Take community actions on your behalf. |
| **Create and edit broadcasts, sequences, and newsletter posts** | Draft and update email content. |
| **Publish or unpublish content** | Change the publish state of content. Only takes effect when paired with a **Create and edit** permission above. |
| **Edit theme content, custom JavaScript, and custom CSS** | Update theme code and styling. Changes take effect immediately on published pages. |
| **List and add account users** | View the users on your account and add new ones. Turned off by default. |
**Warning:** Editing theme code and adding account users can make changes that are hard to undo. Only grant these to an AI tool you trust.
## Claude on the web ([claude.ai](http://claude.ai))
Requires a paid Claude plan (Pro, Max, Team, or Enterprise).
1. Go to [claude.ai](http://claude.ai) and sign in.
2. Click your profile **→ Settings → Connectors**.
3. Click the **Add custom connector** button at the bottom of the page.
4. Enter **Kajabi** as the **Name.**
5. Enter `https://mcp.kajabi.com/mcp` as the **URL.**
6. Click **Add**, then approve the Kajabi consent screen in your browser.
7. In a new chat, enable the **Kajabi** connector via the **tools/attachments** menu.
**Verify:** Ask *"List my Kajabi sites."*
## Claude Desktop
1. Open **Claude Desktop**.
2. Go to **Settings → Connectors → Add custom Connector**.
3. Enter **Kajabi** as the **Name.**
4. Enter `https://mcp.kajabi.com/mcp` as the **URL.**
5. Click **Add** and approve the consent screen in your browser.
**Verify:** Start a new conversation and ask *"List my Kajabi sites."*
## Claude Code (CLI)
```bash theme={null}
claude mcp add kajabi --transport http https://mcp.kajabi.com/mcp
```
Claude Code opens your browser for OAuth automatically. Approve the consent screen and you're connected.
**Verify:**
```bash theme={null}
> List my Kajabi sites
```
## ChatGPT
Custom MCP connectors require **Developer Mode**, which exposes the full MCP tool surface (read + write). Only enable it for servers you trust — Kajabi is yours.
**Note:** On Business, Enterprise, or Edu workspaces, an admin may need to enable custom connectors first, before any team member can add one. If you do not see the option to create a custom connector, check with your workspace admin.
To enable custom connectors as an admin: go to **Workspace Settings → Permissions & Roles → Connected Data**, and turn on **Create custom MCP connectors.**
### Enable Developer Mode (one-time)
1. Open ChatGPT → **Settings → Connectors → Advanced**.
2. Toggle **Developer mode** on.
3. Read and accept the warning about write-enabled tools.
**Note:** Developer Mode is available on ChatGPT **Plus** and **Pro** plans, but those plans grant **read and fetch permissions only**. To use write and modify actions, including creating Pages, Offers, Email Sequences, and similar content, you need a ChatGPT **Business**, **Enterprise**, or **Edu** plan. If you do not see **Settings > Connectors > Advanced** in your ChatGPT account, your current plan may not include Developer Mode access.
### Add the Kajabi connector
1. Open **Settings → Plugins→ Browse plugins**, and click the **+** button.
2. Enter **Kajabi** as the **Name.**
3. Enter `https://mcp.kajabi.com/mcp` as the **MCP Server URL.**
4. Set **Authentication** to **OAuth.**
5. Click **Create**, then approve the Kajabi consent screen in your browser.
**Note:** ChatGPT's connector menu has changed names in the past and may do so again. If you do not see **Plugins** under Settings, check under **Connectors** or **Apps & connectors** instead.
## Cursor
1. Open Cursor and go to **Settings → MCP → Add new MCP server**.
2. Set the **Type** to **Remote (HTTP)**
3. Enter **Kajabi** as the **Name.**
4. Enter `https://mcp.kajabi.com/mcp` as the **URL.**
5. Approve the consent screen in your browser.
## Tips
* **Always start with kjb\_list\_sites**: Most tools need a site\_id.
* **Writes may create drafts or publish content:** If drafting the content is an option in Kajabi, the MCP can create a draft for you. This is true for content such as Offers, Pages, and Emails. If it is not possible to create a draft in Kajabi, then the MCP will publish the content you request. This is true for content like Community Posts and Forms.
* **Tokens refresh automatically:** If you hit "Unauthorized," remove the connector and re-add it.
## Troubleshooting
| **Issue** | **Fix** |
| :----------------------------------------- | :------------------------------------------------------------------------------- |
| "I don't see any Kajabi tools" | Confirm MCP is enabled on your account. Reply to this article and we will check. |
| ChatGPT: "Custom connectors not available" | Enable Developer Mode in Settings **→** Connectors **→** Advanced. |
| Consent screen won't load / auth fails | Log into the right Kajabi account in your browser first, then retry. |
## Full list of tools
| **Category** | **Tool** | **What it does** |
| :--------------- | :------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Core | list\_sites | Lists all Kajabi sites the authenticated user can access. Call this first to discover site IDs. Each site row includes a community sub-object when the site has a Kajabi Community. |
| Core | get\_site\_summary | Returns a detailed summary of a site including settings, locale, contact info, and the site theme's active\_theme\_id. |
| Core | ping | Smoke test that confirms the MCP server is running and reachable. |
| Blog | create\_blog | Create the blog on a site. Required once before any blog posts can be created. Each site can have at most one blog. |
| Blog | list\_blog\_posts | List blog posts with optional filtering by status (draft/published/scheduled) and tags. Paginated. |
| Blog | get\_blog\_post | Get full HTML content, SEO metadata, tags, and timestamps. |
| Blog | create\_blog\_post | Create a draft blog post. Always created as a draft. |
| Blog | update\_blog\_post | Update content, tags, SEO metadata, or publish state. Pass published\_at to publish now or schedule; pass null to unpublish. |
| Courses | create\_course | Create a course. Supports evergreen (self-paced) and cohort (scheduled). |
| Courses | get\_course | Get the full module/lesson tree with publishing states. |
| Courses | get\_lesson | Get full detail for a single lesson, including title, body HTML, publishing state, position, and parent module/submodule context. |
| Courses | search\_course\_content | Search lesson bodies for matching text. Useful for locating template markers, legacy formatting, or broken embeds during course migrations. |
| Courses | update\_course | Update title, description, or thumbnail. Cannot change publish status. |
| Courses | update\_course\_content | Add or update modules, submodules, and lessons. Supports reordering, publish/unpublish, drip scheduling, and prerequisite gating. |
| Coaching | create\_coaching | Create a coaching product. Supports 1:1 and group coaching. |
| Coaching | get\_coaching | Get program details including outline sessions or groups, client count, and scheduling config. |
| Coaching | update\_coaching | Update title, description, coach info, and scheduling settings. |
| Coaching | list\_coaching\_sessions | List sessions for a coaching program (1:1) or coaching group. Paginated. |
| Coaching | get\_coaching\_session | Get details for a single 1:1 or group session. |
| Coaching | create\_coaching\_session | Create an ad-hoc 1:1 or group session, including scheduled time, duration, timezone, and location. |
| Coaching | update\_coaching\_session | Update an existing session's title, description, or scheduling fields. |
| Communities | list\_members | List community members with filters (role, joined-after, at-risk, onboarding status) and sort options. |
| Communities | get\_member | Full dossier on a single member — points, engagement, onboarding progress, recent RSVPs and challenge entries. |
| Communities | list\_channels | List community channels with filters for access group, privacy, and type (feed/chat). |
| Communities | list\_access\_groups | List access groups (the gating layer above channels) with member, post, and last-post-at rollups. |
| Communities | list\_posts | List posts across one or all channels with thread-aware filters. Use parent\_post\_id or root\_post\_id to navigate comment/reply threads. |
| Communities | get\_post | Full post body, rich-text data, author, reactions, engagement counts, and inline poll detail. |
| Communities | create\_post | Create a root post, comment, reply, or poll in a channel. Authored as the connected user. |
| Communities | update\_post | Edit an existing post's body. |
| Communities | get\_community | Show a community's title, description, and owner. |
| Communities | get\_metrics | High-level engagement metrics (active users, new members, messages, RSVPs, challenges joined) over a date window. |
| Communities | list\_announcements | List a community's announcements with filters by channel and date window. |
| Communities | create\_announcement | Publish a pinned banner, home-sidebar, or channel-scoped announcement. |
| Communities | update\_announcement | Edit an existing announcement's name, text, subtitle, or placement. |
| Communities | list\_challenges | List community challenges with filters by time (scheduled/active/expired), series, access group, and free-text search. |
| Communities | get\_challenge | Full challenge detail including scheduling, prize, status, engagement counts, series, and gating. |
| Communities | list\_challenge\_series | List a community's challenge series (curator groupings of related challenges). |
| Communities | list\_challenge\_entries | List submissions to a single challenge, or check whether a specific user submitted. |
| Communities | list\_challenge\_entry\_comments | List comments on a single challenge entry. |
| Communities | list\_meetups | List community meetups (events) with time, channel, creator, access group, and date-range filters. |
| Communities | get\_meetup | Full meetup detail including scheduling, location, channel scoping, creator, gating, and RSVP counts. |
| Communities | list\_meetup\_rsvps | List the RSVP roster for a single meetup, or check whether a specific user RSVPed. |
| Communities | send\_dm | Send a one-off direct message to a single community member, authored as the connected user. |
| Newsletters | get\_newsletter | Get newsletter details including its 10 most recent posts. |
| Newsletters | get\_newsletter\_post | Get a newsletter post's draft content, publish status, and email subject. |
| Newsletters | create\_newsletter | Create a newsletter product (also creates its paired opt-in form). |
| Newsletters | create\_newsletter\_post | Create a draft newsletter post. |
| Newsletters | update\_newsletter\_post | Update draft content. |
| Email broadcasts | list\_broadcasts | List broadcasts with optional filtering by status (draft/scheduled/delivering/delivered). |
| Email broadcasts | get\_broadcast | Get subject, body, recipient filters, and engagement stats (opens, clicks, bounces, rates). |
| Email broadcasts | create\_broadcast | Create a draft broadcast in either the new drag-and-drop builder or the classic HTML editor. Sending happens in the admin UI. |
| Email sequences | list\_sequences | List active sequences with email count and subscriber count. |
| Email sequences | get\_sequence | Get the sequence's emails with drip timing, publication status, and engagement stats. |
| Email sequences | create\_sequence | Create a sequence with title and default send timing. Add emails with add\_sequence\_email. |
| Email sequences | add\_sequence\_email | Add an email to an existing sequence with a day offset and optional send time. |
| Events | list\_events | List events with optional filter by type. Paginated. |
| Events | get\_event | Get event details including upcoming occurrences. |
| Events | create\_event | Create an event. Returns the event and a link to the admin editor. |
| Forms | list\_forms | List forms with submission counts. Paginated. |
| Forms | get\_form | Get current fields, available site fields that can be added, and submission count. |
| Forms | create\_form | Create a form with default name and email fields. Optionally attach existing site fields or create new custom fields. |
| Forms | update\_form | Update settings, attach existing site fields, or create-and-attach new custom fields. |
| Forms | remove\_form\_field | Remove a field from a form. The site field is preserved and can be re-added later. |
| Forms | list\_form\_submissions | List submissions for a specific form. Submitted data is in the custom\_fields JSONB column. |
| Pages | list\_landing\_pages | List standalone landing pages with optional filtering by status. Excludes funnel/pipeline step pages. |
| Pages | get\_landing\_page | Get SEO metadata, publish status, form count, URLs, and the page's active\_theme\_id (page content lives entirely in the theme). |
| Pages | create\_landing\_page | Create a draft landing page. Optionally specify a theme preset slug. |
| Pages | update\_landing\_page | Update title, slug, SEO metadata, or publish state. Pass publish\_at to publish or schedule; null to unpublish. |
| Pages | list\_website\_pages | List website pages with optional filtering by status. Paginated from the active theme. |
| Pages | get\_website\_page | Get SEO metadata, publish status, and URLs for a website page. |
| Navigation | list\_navbars | List navigation menus, categorized as default (main-menu, footer, member-menu, about-menu) or custom. |
| Navigation | get\_navbar | Get a menu and its ordered list of links, including each link's type and target. |
| Navigation | create\_navbar | Create a new custom navigation menu. Populate it via create\_navbar\_link. |
| Navigation | update\_navbar | Rename an existing navigation menu (default or custom). |
| Navigation | create\_navbar\_link | Add a new link to a navigation menu. |
| Navigation | update\_navbar\_link | Update an existing navigation menu link. |
| Navigation | delete\_navbar\_link | Remove a single link from a navigation menu. |
| Navigation | reorder\_navbar\_links | Reorder all links inside a menu in a single call. |
| Commerce | list\_offers | List offers with optional filtering by status. Includes pricing summary and product count. |
| Commerce | get\_offer | Get pricing breakdown, variants, linked products, and the offer's checkout-page active\_theme\_id. |
| Commerce | create\_offer | Create a draft offer. Supports free, one-time, subscription, and payment plan pricing. |
| Commerce | update\_offer | Update an offer's details, pricing, or publish state. Pass publish\_at to publish or schedule; null to unpublish. |
| Commerce | list\_offer\_purchases | List purchases with optional filtering by member, offer, or date range. |
| Commerce | get\_offer\_purchase | Get pricing breakdown, billing status, member details, product access, and subscription info. |
| Products | search\_products | Search products by title with optional filtering by product type and sellable status. |
| Products | get\_product | Get product type, description, linked offers, and the product's consumption-side active\_theme\_id. |
| Contacts | search\_contacts | Search and filter contacts by name/email plus tags and segments. |
| Contacts | get\_contact | Get contact profile including tags, custom fields, purchases, product access, and admin notes. |
| Contacts | list\_tags | List contact tags with contact count per tag. |
| Contacts | create\_tag | Create a new contact tag. |
| Contacts | tag\_contact | Add a tag to a contact. Idempotent. |
| Contacts | untag\_contact | Remove a tag from a contact. Idempotent. |
| Contacts | list\_segments | List dynamic contact segments (filter queries, not static lists). |
| Contacts | create\_segment | Create a saved segment with a title and filter map. Use to target broadcasts or search contacts. |
| Contacts | update\_segment | Update a segment's title and/or filters. Filters are a full replacement when provided. |
| Themes | get\_theme\_content | Get theme settings and section types for any themed page (site, course, landing page, offer, email, coaching). |
| Themes | update\_theme\_content | Update theme settings on any themed page. Changes take effect immediately on published pages; there is no draft layer. |
| Media Library | list\_media | List and filter Media Library assets by name, tag, recency, and in-use status. Sort by newest, name, size, or usage. Covers all media types. |
| Media Library | get\_media | Get an asset's name, type, dimensions, file size, tags, a viewable link, alt text, and everywhere it is used. Covers all media types. |
| Media Library | place\_media | Place a library asset into a slot on a themed or fixed-slot surface. Covers images today, with file, video, and audio support on select surfaces. Aspect-locked slots auto-crop to fit. |
| Media Library | crop\_media | Crop an image to a target size, saved as a new asset. Images only. The original is untouched. |
| Media Library | add\_media | Open Kajabi's uploader, pre-set to the right media type, so you can add new media. Covers all media types. |
| Media Library | replace\_media | Swap one asset for another everywhere the original is used, in a single action. Neither asset is deleted. Covers all media types. |
| Downloads | create\_download | Create a draft digital download collection. Files and an offer are added in the admin UI. |
| Account users | list\_account\_users | List non-owner users on the account. Admins/owners only. |
| Account users | add\_account\_user | Add a Support Specialist or Assistant. Admins/owners only. |
| Analytics | get\_contacts\_analytics | Contacts analytics for a site over a date window. |
| Analytics | get\_revenue\_analytics | Revenue analytics for a site over a date window. |
| Analytics | get\_revenue\_by\_offer | Revenue broken down by offer, showing which products and offers are generating the most revenue. |
| Analytics | get\_subscriptions\_mrr | Monthly recurring revenue for a site's subscriptions. |
| Analytics | get\_subscription\_analytics | Subscription analytics for a site over a date window. |
## FAQs
### Which Kajabi plans include MCP?
MCP is currently included with all Kajabi plans. Future limits may apply.
### Do I still have access to Cofounder if I connect Claude or ChatGPT?
Yes, you continue to have access to Cofounder alongside other connected AI tools.
### Can I connect Claude or ChatGPT to multiple Kajabi accounts?
A single Claude or ChatGPT connection links to one Kajabi account at a time. To switch accounts, disconnect your existing connection in Kajabi, log into the Kajabi account you want to use, and then reconnect from your AI tool.
### Can my team members use Claude or ChatGPT with our Kajabi account?
Yes. Each team member connects their own AI tool to Kajabi using their own Kajabi login. What they can do through the AI is limited by their Kajabi user role — for example, only Admin and Owner users can manage account users.
### Why do I have to keep reconnecting Claude or ChatGPT to Kajabi?
A few different things can cause repeat reconnects:
* For security, connections that go unused for a period of time will expire on their own
* The authorization link you click during the connect flow expires after a short window, so long pauses mid-flow will require you to start over
* Your Claude or ChatGPT desktop app may need a restart after a Kajabi update before it can reconnect cleanly
* The connect flow uses whichever Kajabi account is the active browser session. If another Kajabi tab is the active one (such as a partner site you help manage), the connection can fail or attach to the wrong account
If reconnects keep happening, sign into the correct Kajabi account in your browser, restart your AI tool, and try once more. If the issue continues, contact Kajabi Support.
### Why don't I see all of my Kajabi tools in Claude or ChatGPT?
Not every Kajabi feature is available through the connection yet. The connection currently supports the most common workflows — managing contacts, courses, products, offers, pages, emails, and forms — and we are adding coverage to more features over time.
You may also see fewer tools than another user on your account because what you can do through the AI is limited by your Kajabi user role.
If a Kajabi feature you rely on is missing, let us know. Your feedback shapes what we build next: [https://feedback.kajabi.com/feature-request?selectedCategory=mcp](https://feedback.kajabi.com/feature-request?selectedCategory=mcp)
### Why don't reports from Claude or ChatGPT match my Kajabi dashboard?
Small differences usually come from one of three things:
* The connection returns data in UTC, while your dashboard may use your local time zone
* The connection may include all billing statuses, while your dashboard filters some out by default
* Different definitions of "this week", such as Sunday-start vs. Monday-start, for example
For an exact match, ask your AI tool to re-run the query with a specific date range, such as "show me completed purchases from May 1st, 2026 through May 7th, 2026."
### Where do I see or remove the AI tools connected to my account?
In Kajabi, go to **Settings → Integrations & Webhooks → AI Assistants** . You will see each connected AI tool along with the date it was authorized. Use the Disconnect option next to any tool to revoke its access.
### Why can't Claude or ChatGPT upload my media files directly?
The connection has no way to move a file off your device on its own, so your AI tool cannot upload media for you. Instead, when you ask it to add an image, video, audio file, or PDF, it hands back a link to Kajabi's uploader, already set to the right type of media. Open that link, choose your file, and the upload finishes inside Kajabi, the same way you would add media in your Media Library normally. This applies to every media type the connection supports: images, videos, audio, and files like PDFs.
# 3 considerations for Creator.io chatbot setup
Source: https://help.kajabi.com/articles/api-integrations/creatorio/3-things-to-consider-when-setting-up-your-creatorio-chatbot
Maximize your Creator.io chatbot by understanding your business goals, content types, and optimal placement.
[**Creator.io**](http://creator.io/) offers a customizable chatbot that is simple to set up and custom-tailored to your business on Kajabi. Creator.io is not built into the Kajabi platform but has a simple-to-use API connection to quickly import your course content and help you gather leads, support your customer questions, and engage your students.
[Learn more about Creator.io](https://creator.io/#faq).
## Top 3 things to consider
Maximize your Creator.io Chatbot by first considering the following:
### What is your ultimate business outcome
Perhaps your goal is to build a contact list, answer a few FAQs, or save time engaging with your existing clients.
Understanding your goal will help you set up your Creator.io chatbot.
* If you want to build a contact list, select the "Lead generation template"
* If you want to answer FAQs, select "Customer support"
* If you want to save time engaging with your clients, select "Teaching assistant"
### What types of content do you create?
Identify and collect all the content you create, then add any relevant content to your bot. In this stage, you want to consider the questions that are likely to be asked and the content that you have already created to answer those questions.
### Where do you want your customers to interact with the bot?
Your chatbot can displayed anywhere on your site, but where can it make the biggest impact? What is the most relevant?
By understanding where you want your customers or visitors to interact with the bot on your site, you can select the chatbot that best suits your desired placement.
* Linkin bio or landing page - choose "Lead generation template"
* In a course - choose "Teaching assistant"
* In a Community Product - choose "Customer Support"
* On a Sales Page - choose "Customer Support"
# Creator.io settings
Source: https://help.kajabi.com/articles/api-integrations/creatorio/creatorio-settings
View usage limits, manage your account, and upgrade or downgrade your Creator.io plan.
View your usage limits, manage your account, and adjust your **Creator.io** plan from your Account Settings and Subscription Settings.
## Account settings
Not sure what Creator.io is and how it can help you? [Learn more here](./how-to-create-a-custom-chatbot-with-creatorio)
### Access Creator.io account settings
* Log into your [Creator.io](http://creator.io) account
* Navigate to the top-right corner to your user icon
* Select your user icon to open your Account Settings:
## Plan summary
### Chatbots
Chatbots are calculated by the total number of chatbots you have in your account.
### Contacts
Contacts are calculated by the total number of contacts all of your chatbots have captured all time.
### Transcription minutes
Transcription minutes are calculated based on the total number of minutes of video that are uploaded as training material to your chatbots. Youtube videos do not count towards your transcription minute counts.
### Total resources used
Resources are calculated by the total number of files, web pages, Youtube vidoes, or course lessons you've uploaded to all of your chatbots combined.
### Total messages used
Total messages used are calculated by the total number of messages all of your chatbots have answered in a billing month. GPT4turbo uses 10 messages per response, GPT3.5 turbo uses 1 message per response.
## Personal info
Update your Creator.io Profile information including your profile picture, first name, last name, and email address.
## Integrations
Integrate your Creator.io Chatbots with third-party applications to help train your chatbots.
For example, you can integrate your Creator.io Chatbots with Kajabi to train your chatbots on specific courses.
## Upgrade/Downgrade
Upgrade or downgrade your plan by visiting your [Subscription and billing](#subscription-and-billing) tab and selecting your desired plan or by clicking **Upgrade** from your Plan Summary:
## Subscription and billing
**How to access your Creator.io subscription and billing section:**
* Log into your [Creator.io](http://creator.io) account
* Navigate to the top-right corner to your user icon
* Select your user icon to open your Account Settings
* Then, open the **Subscription and billing** tab:
## Plan selection
View the available Creator.io plans to select the plan that best fits your business needs. After reviewing the usage limits and features available with each plan, you can select your desired plan directly from your Creator.io account to upgrade or downgrade your current plan.
## Add-ons
Enhance your Creator.io plan with add-ons:
* **Extra message credits**: Purchase additional message credits per month to increase the number of messages allotted for your chatbots
* **Extra resources**: Purchase additional space to upload resources to train your chatbots
* **Remove 'Powered by Creator.io'**: Purchase the ability to remove the Creator.io branding from your chatbot
* **Extra transcription minutes**: Purchase additional transcription minutes per month for video transcriptions uploaded to train your chatbots
## Billing preferences
Update or change your payment method and view your invoices by opening your Billing preferences and invoices.
## Cancel your Creator.io subscription
To cancel your Creator.io subscription:
1. Click on your name on the top right > **Subscription settings**
2. Click **Cancel plan** next to your current plan
3. Click **Confirm cancellation**
# Create a custom chatbot with Creator.io
Source: https://help.kajabi.com/articles/api-integrations/creatorio/how-to-create-a-custom-chatbot-with-creatorio
Provide 24/7 customer support and gather leads with a Creator.io chatbot on your Kajabi site.
Gathering leads, supporting customer questions, and engaging students are crucial to your business. [**Creator.io**](http://creator.io/) offers a customizable chatbot that is simple to set up and custom-tailored to your business on Kajabi. Creator.io is not built into the Kajabi platform but has a simple-to-use API connection to quickly import all of your course content.
[Learn more about Creator.io](https://creator.io/#faq).
## Set up your chatbot
### Set up Creator.io
* Open your Kajabi account
* Locate your API credentials. [Learn more](../../api-integrations/zapier/how-to-locate-your-kajabi-api-key-and-api-secret)
* Open [Creator.io](http://creator.io/) in a new tab or window
* Click **Connect to Kajabi**
* Add your Kajabi API credentials
* Then, follow the on-screen instructions to complete your setup
After setting up your Creator.io chatbot, your chatbot will learn and adapt to your content to provide your customers with 24/7 support and help you gather leads.
## Install your chatbot
After setting up your chatbot with Creator.io, you can install your chatbot to your site including your website pages, landing pages, and product pages.
Use the Embed link to add a chat bubble to the bottom right area of your page or use the iframe embed code to add the chatbot inline anywhere on your site.
### Embed link
### Iframe embed
**Note:** The Iframe embed code cannot be added to a Product page built with Momentum. However, the Iframe embed code can be added to your Product pages built with the Premier theme within the Welcome Body of a Product page and the Post Body in a Product Post page. [Learn to customize our Course Product With Premier](/articles/products/courses/how-to-customize-your-course-product-with-premier).
### Website pages
To install your chatbot to your website pages:
* Open your chatbot
* Copy the **Embed link** to add a chat bubble or the **Iframe embed** to add the chatbot inline anywhere on your page:
* Log into your Kajabi account
* Open the **Website** tab from your Dashboard
* Then, open **Pages**
* Click the **Website** tab
* Then, select your desired Website page
* Click **Add Section** or locate a section to add a [**Block**](../../website/pages/add-blocks-to-your-page)
**Tip:** Add the custom code block to your Page Header.
* Click **Custom Code**
* Paste your chatbot embed code into the "Code" field
* Click **Save** to keep and apply your chatbot:
### Landing pages
To install your chatbot to your landing pages:
* Open your chatbot
* Copy the **Embed link** to add a chat bubble or the **Iframe embed** to add the chatbot inline anywhere on your page:
* Log into your Kajabi account
* Open the **Website** tab from your Dashboard
* Then, open **Pages**
* Click the **Landing** tab
* Then, select your desired Landing page
* Click **Add Section** or locate a section to add a [**Block**](../../website/pages/add-blocks-to-your-page)
* Click **Custom Code**
* Paste your chatbot embed code into the "Code" field
### Product pages
**Note:** Custom Chatbots with Creator.io are only compatible with Course Products on Kajabi.
To install your chatbot to your product pages:
* Open your chatbot
* Copy the **Embed link** to add a chat bubble or the **Iframe embed** to add the chatbot inline anywhere on your page:
* Log into your Kajabi account
* Open the **Products** tab from your Dashboard
* Select the Product you wish to install your chatbot to
* Open the **Customize** tab
* Click **Customize** for your product theme
* Open **Settings**
* Click **Custom Code**
* Paste your chatbot embed code into the "Embedded Scripts" field
* Click **Save** to keep and apply your chatbot:
**Note:** Adding your chatbot embed link to your Course Product Theme is available with Momentum 6.5.0 or newer and Premier 7.4.0 or newer. The Iframe embed is only available on Premier at this time.
## FAQs
### Do I have to create a chatbot first to connect to Kajabi?
Yes, you will need to create a chatbot to connect to your site on Kajabi. You will follow the on-screen instructions from Creator.io to configure your chatbot and be directed to add your Kajabi API keys during the setup process. After configuring your chatbot, you will be able to copy the embed code to add to any of your desired products or pages on your website on Kajabi.
### How do I use the bot?
Creator.io provides chatbot templates to help you create the chatbot that best suits your goal.
With Creator.io, you can create a chatbot for:
* Lead generation
* Teaching assistant
* Customer Support
[Learn to identify the chatbot that best fits your needs](./3-things-to-consider-when-setting-up-your-creatorio-chatbot).
### Can I use one bot across multiple products (courses or community)?
Yes, but this is utilized best when multiple products are connected to a single Offer.
If your bot is trained on all of your course content, your visitors may be unable to access the answers pertaining to specific courses they do not have access to.
### How can the bot answer questions about info outside of its embedded page?
Create a separate doc or resource that you can upload to your chatbot. We recommend formatting it as a Q\&A doc. [Learn more about the resources you should upload to your chatbot and how to format your Q\&A doc](./what-resources-should-i-upload-to-creatorio).
### How can I recommend products with the bot?
To implement links in your chatbot responses to recommend your Kajabi Products:
* Log into your creator.io account
* Open your chatbot
* Click **Settings**
* Then, update your **Base Prompt** setting with additional instructions for your chatbot.
Example instructions to recommend your Kajabi Products: "If asked about what products you offer, recommend that the customer buy \[Product Name]. The product can be purchased here: \[Product Offer Page URL]. Make sure you share the link directly with the customer."
* After inputting your additional instructions, click **Save** to keep and apply your changes:
# Create a sales chatbot with Creator.io
Source: https://help.kajabi.com/articles/api-integrations/creatorio/how-to-create-a-sales-chatbot-with-creatorio
Scale your business with Creator.io chatbots by leveraging the Sales Template.
**Creator.io** offers customizable chatbots that are simple to set up and custom-tailored to your business on Kajabi. Set up a Sales chatbot with Creator.io to drive your website visitors to your Offers and encourage purchases and increase engagement with your products and services.
[Learn more about Creator.io](https://creator.io/#faq).
By creating a sales chatbot, you can let AI do the selling for you. With Creator.io it is easy to set up your Sales chatbot to stand as your front-of-line sales effort for your business.
## Create a sales chatbot
To create a sales chatbot, you can use the Sales Template available with Creator.io:
* Open your Creator.io account
* Click **+ Create new** from your Creator.io Dashboard
* Select the **Sales** template
* Then, follow the on-screen instructions to set up your Sales Chatbot:
**Tip:** Optimize your chatbot's responses that promote your products by completing your product information with the same information displayed in your Offer page (i.e., Title, Description, and Price). Copy and paste the product description and value props from your Offer page directly into the Product Description text box.
# Use Creator.io chat records to improve site FAQs
Source: https://help.kajabi.com/articles/api-integrations/creatorio/how-to-use-creatorio-chat-records-to-improve-your-sites-faqs
Review chatbot conversations to build relevant FAQs for your site.
[**Creator.io**](http://creator.io/) offers a customizable chatbot that is simple to set up and custom-tailored to your business on Kajabi. Creator.io is not built into the Kajabi platform but has a simple-to-use API connection to quickly import your course content and help you gather leads, support your customer questions, and engage your students.
[Learn more about Creator.io](https://creator.io/#faq).
## What are FAQs?
FAQs are Frequently Asked Questions that can help you proactively provide answers for leads and existing customers alike. By providing relevant FAQs, you can help reduce the number of support questions you receive and provide a better user experience to your site's visitors.
## Use your chat records
Creator.io saves a chat record of all conversations with customers and visitors. By reviewing these records, you can see which questions are most commonly asked. These questions are a great starting point for creating your website's FAQs.
[Learn more about the resources you can upload to your chatbot](./what-resources-should-i-upload-to-creatorio)
### Configure your chatbot
To configure your chatbot:
* Log into your Creator.io account (or create an account if you haven't already)
* Click **+ Create new** from your Creator.io Dashboard
* Select your chatbot template. [Learn more](./3-things-to-consider-when-setting-up-your-creatorio-chatbot)
* Complete the prompts to share key information about yourself and your business or click **skip for now** if you do not want to share
* Customize your chatbot by editing the Chatbot name and selecting your chatbot colors
* Train your chatbot by selecting your Kajabi courses, adding URLs, and uploading files
**Note:** Integrate Creator.io with your Kajabi site after creating your first chatbot. After integrating Creator.io and Kajabi, Creator.io will be able to pull information from your Kajabi courses to train your chatbot.
### Access your chat records
**To access your chat records:**
* [Log into your Creator.io account](https://app.creator.io/login?form=1)
* Open your desired chatbot
* Click **Activity**
* Select your desired chat history to review the conversation:
# Use freebies to improve lead capture
Source: https://help.kajabi.com/articles/api-integrations/creatorio/how-to-use-freebies-to-improve-lead-capture
Encourage site visitors to share contact information and grow your list with freebies.
A **freebie** is also referred to as a lead magnet or a service or product given free of charge. Giving your visitors a "taste" of your product will help you grow your email list and can be the first step to converting them into paying customers.
Freebies can be anything from a [PDF in a confirmation email](../../sales/offers/how-to-send-a-pdf-to-a-customer-after-a-purchase) to a link to a [free Offer](../../sales/offers/how-to-create-a-free-offer).
## Freebies & Creator.io
Combine the power of AI and Freebies by uploading your free content to your [Creator.io Chatbot](https://creator.io/#faq). By using Freebies, you can grow your list when visitors to your site engage with your customized chatbot.
[Learn to create a custom chatbot with Creator.io](./how-to-create-a-custom-chatbot-with-creatorio).
### Upload a freebie to Creator.io
* Open your Creator.io account
* Navigate to your **chatbot settings**
* Toggle on **collect email address** and **include a freebie with email submission**
* Update your **thank you default message** and include a link for **resource download**:
# Upload resources to Creator.io
Source: https://help.kajabi.com/articles/api-integrations/creatorio/what-resources-should-i-upload-to-creatorio
Maximize your Creator.io chatbot by uploading essential content like Q&A documents, videos, and courses.
[**Creator.io**](http://creator.io/) is an AI chatbot tool developed for all creators by a team of Kajabi product designers. Creator.io is designed to quickly import your course content and help you gather leads, support your customer questions, and engage your students.
[Learn more about Creator.io](https://creator.io/#faq).
## Uploading resources
Creator.io is an AI chatbot that can help you answer your customers' questions, capture leads, and engage your students. By uploading resources to your Creator.io chatbot, your chatbot will have a wealth of knowledge to support your visitors and customers.
Resources to upload:
* YouTube videos
* YouTube channels
* PDF and TXT documents
* Link Kajabi courses
* Q\&A documents
Q\&A documents are one of the best resources you can upload to equip your Creator.io chatbot. By providing your chatbot with the knowledge of frequently asked questions and the answers to those frequently asked questions, your chatbot can answer those questions for you on your site.
### Create a Q\&A document
* Open up a word document like Microsoft Office or Google Docs
* Enter the question
* Then, in the line below, enter the answer to the question
* Create a distinguishable space
* Then, repeat with a line for a question and a line for the answer:
[Learn to use your Creator.io chatbot records to build stronger, more relevant FAQs](./how-to-use-creatorio-chat-records-to-improve-your-sites-faqs).
# Use ActiveCampaign with Kajabi
Source: https://help.kajabi.com/articles/api-integrations/email-integrations/how-to-use-activecampaign-with-kajabi
Send Kajabi form submissions to ActiveCampaign for email marketing and automation.
**ActiveCampaign** is an email marketing, marketing automation, sales automation, and CRM software platform for small to mid-sized businesses. Connect ActiveCampaign and Kajabi to send your ActiveCampaign emails to contacts submitting your Forms in Kajabi.
Connecting ActiveCampaign and Kajabi will send your contacts name and email address collected from your Form to your connected ActiveCampaign account.
If you wish to send additional information including tags to your List in ActiveCampaign, read [How to Use Zapier with Kajabi](../zapier/use-zapier-with-kajabi).
Learn more about Kajabi's [Email Campaigns](../../marketing/email-campaigns/email-campaigns-overview) to create and design engaging emails to send directly to your List right from your Kajabi site.
**Note:** If a contact declines to subscribe to your email marketing they may appear in your Contacts tab on Kajabi, but may not populate in ActiveCampaign. This can occur if a [purchase is made without subscribing](../../sales/checkout/how-to-change-checkout-page-opt-in-settings) to your email marketing or a [Double Opt-in Form](../../marketing/forms/how-to-set-up-a-form-with-double-opt-in) is completed without confirming their intention to subscribe from their email.
## Enable ActiveCampaign on Kajabi
### Connect ActiveCampaign to Kajabi
* Open the **Settings** tab from your Dashboard.
* Select **Third Party Integrations**.
* **Turn on** the **ActiveCampaign** integration:
### Find the API URL and API Key
* Log in to your Active Campaign account.
* Click the **Settings** tab at the bottom left of the dashboard.
* Select the **Developer** section.
* Copy and Paste the **API URL** and **API Key** into the corresponding fields in Kajabi:
Click **Save** and your ActiveCampaign integration should be active.
## Set up a list in ActiveCampaign
### Create a list in ActiveCampaign
* Log in to **Active Campaign**.
* Open the **Lists** tab.
* Click **Add New List**.
* Select the List after it has been created and copy the **List ID** from the **URL**:
In this example the List ID is "1"
## Add the List ID to a Kajabi Form
### Add the List ID to a Kajabi Form
* Open the **Marketing** tab from your Dashboard.
* Then, select **Forms**.
* Create a new **Form** or edit an existing one.
* Check the box next to "**Send the contact to a third party email provider**".
* Select **ActiveCampaign**.
* Paste the **List ID** from the **URL** in step 2:
* Click **Save** at the top right of the page.
Your contact's information will now be sent to your List in ActiveCampaign when the contact submits the Form.
**Note:** If you wish to send a Customer's information to ActiveCampaign after an Offer is purchased read [How to Set Up After Purchase Settings](../../sales/offers/how-to-include-additional-settings-for-your-offer) for details. Keep in mind, if an [Offer is granted](../../sales/offers/how-to-grant-an-offer), the Customer's information will not be sent to your third-party email provider.
# Use AWeber with Kajabi
Source: https://help.kajabi.com/articles/api-integrations/email-integrations/how-to-use-aweber-with-kajabi
Send Kajabi form submissions to your AWeber list.
**AWeber** is an email marketing service provider that helps you keep in touch with your mailing list subscribers. You can integrate AWeber with Kajabi to have Kajabi form submissions added to your AWeber list.
## Activate the AWeber integration
To activate your AWeber integration:
* From the dashboard, open the **Settings** tab.
* Select **Third Party Integrations**.
* Click the **Connect** button and sign in to your AWeber account in order to allow Kajabi to access your AWeber account.
After allowing Kajabi to access your AWeber account, you will be redirected back to the Integrations page with three fields visible under your AWeber integration.
The tokens created here won't need to be used later, this just lets you know your account is properly linked to Kajabi.
## Create a list in AWeber
Next, log in to AWeber to create a List to use with the integration:
* Click **List Options** in the left-hand menu.
* Copy the **List ID**:
## Add the List ID to a Kajabi Form
In your Kajabi admin:
* Create a new **Form** or edit an existing one.
* Check the box next to "**Send the contact to a third party email provider**".
* Select **AWeber**.
* Paste the **List-ID**.
Click **Save** at the bottom of the page. Submissions through that Kajabi Form will be added to your **List** in AWeber.
# Use ConvertKit with Kajabi
Source: https://help.kajabi.com/articles/api-integrations/email-integrations/how-to-use-convertkit-with-kajabi
Send Kajabi form submissions to ConvertKit for email marketing and automation.
**ConvertKit** is an email marketing service for running email marketing campaigns. With ConvertKit, create opt-in forms, tag subscribers, set-up automation, and send email follow-up messages.
Connect ConvertKit and Kajabi to send your ConvertKit emails to contacts opting into your Forms on Kajabi. If you wish to send additional information including tags to ConvertKit, read [Use Zapier with Kajabi](../zapier/use-zapier-with-kajabi).
Learn more about Kajabi's [Email Campaigns](/articles/marketing/email-campaigns/email-campaigns-overview) to create and design engaging emails directly from your Kajabi site.
## Activate the ConvertKit integration
### Get the ConvertKit API Key
1. Go to **Account Settings**.
2. Copy the **API Key**:
### Activate the ConvertKit integration in Kajabi
1. Open the **Settings** tab.
2. Select **Third Party Integrations**.
3. Toggle **On** the **ConvertKit** integration.
4. Paste the **ConvertKit API Key**.
5. Click **Save.**
## Add the ConvertKit Form ID to a Kajabi Form
### Get the ConvertKit Form ID
1. Create a new **Form.**
Enable [double opt-in on your ConvertKit Form](https://help.convertkit.com/en/articles/2971364-the-all-important-double-opt-in).
2. Copy the **Form ID** from the Form page URL.
**Tip:** If double opt-in is enabled on both ConvertKit and Kajabi, your form submitters will receive two emails asking to confirm their intention to subscribe to your list. Be sure to disable double opt-in from your Kajabi Form to avoid duplicates.
### Add the Form ID to Kajabi
1. Create a new **Form** or edit an existing one.
Disable [double opt-in from your Kajabi Form to avoid duplicate emails](/articles/marketing/forms/how-to-set-up-a-form-with-double-opt-in).
2. Check the box next to **Send the contact to a third party email provider**.
3. Select **ConvertKit**.
4. Paste the **Form ID**.
5. Click **Save** at the top right of the page.
Submissions through that Kajabi Form will be added to your Form in ConvertKit.
**Tip:** Test your integration by completing and submitting your Form with a valid email address.
If you wish to send a Customer's information to ConvertKit after an Offer is purchased read how to [set up post-purchase settings](/articles/sales/offers/create-an-offer#post-purchase).
Keep in mind, if an [Offer is granted](/articles/sales/offers/how-to-grant-an-offer), the Customer's information will not be sent to your third-party email provider.
# Use Drip with Kajabi
Source: https://help.kajabi.com/articles/api-integrations/email-integrations/how-to-use-drip-with-kajabi
Connect Kajabi Forms to Drip to send opt-ins directly to your Drip account.
**Drip** is an ecommerce CRM designed for building personal and profitable relationships with your customers at scale. Connect your Kajabi Forms to Drip to send opt-ins directly to your Drip account.
## Activate your Drip integration
### Activate Drip integration
* Open the **Settings** tab from your Dashboard.
* Open **Third Party Integrations**.
* Click the toggle to blue to enable the **Drip** integration:
## Configure the Drip integration
The first step to configuring the integration is to add your **API** and **Account ID**.
* [Click this link to find your API Key](https://www.getdrip.com/user/edit).
* [Click this link to find your Account ID](https://www.getdrip.com/settings/general).
* Next, add both entries to the **Integration Settings**.
## Connect Drip to a Form
Once your configuration is complete, the last step is to associate the Drip integration to a **Form**.
This will send opt-ins to your list in **Drip**.
The same will apply if the form is used anywhere within your site or if it's embedded.
### Connect Drip to a Form
* Open the **Marketing** tab from your Dashboard.
* Click **Forms**.
* Select the Form you want to integrate Drip with.
* In the After Submission section, select **Send the contact to a third-party email provider**.
* Then, click **Save** to keep and apply your changes:
**Note:** You can also add tags. This gives you the ability to send your opt-ins to a specific list within Drip.
# Use MailChimp with Kajabi
Source: https://help.kajabi.com/articles/api-integrations/email-integrations/how-to-use-mailchimp-with-kajabi
Integrate MailChimp with Kajabi to send form submissions to your email marketing lists.
**MailChimp** is a web-based email marketing service to help you design email newsletters, share them on social networks, and integrate with services you may already use and track your results.
Mailchimp enables people interested in your work or products to subscribe and unsubscribe to email marketing lists through opt-in forms.
Connect Mailchimp and Kajabi to send your Kajabi Form submissions to your list in MailChimp. This allows you to send your MailChimp emails to contacts submitting your forms in Kajabi.
If you wish to send additional information or perform actions in MailChimp, read [How to Use Zapier with Kajabi](../zapier/use-zapier-with-kajabi).
Learn more about Kajabi's [Email Campaigns](../../marketing/email-campaigns/email-campaigns-overview) to create and design engaging emails to work seamlessly within your Kajabi site.
## Enable the MailChimp integration
To connect MailChimp to Kajabi:
* Open the **Settings** tab from your Dashboard.
* Select **Third Party Integrations**.
* Turn **On** the **MailChimp** integration:
To obtain the **API Key** key:
* Click the **API Key link**.
* Log in to **MailChimp**.
* Copy the **API Key** and paste it in Kajabi.
* Click **Save**:
## Create a list in MailChimp
In order to integrate with a Form, you will need to create a List in MailChimp:
[Learn how to find your MailChimp audience ID](https://mailchimp.com/help/find-audience-id/)
## Add the List ID to a Kajabi Form
In your Kajabi admin:
* Open the Marketing tab from your Dashboard and click **Forms**.
* Create a new **Form** or edit an existing one.
* Check the box next to "**Send the contact to a third party email provider**".
* Select **MailChimp**.
* Paste the **List-ID**:
* Click **Save** at the bottom of the page. Submissions through that Kajabi Form will be added to your list in MailChimp.
**Note:** If you wish to send a Customer's information to MailChimp after an Offer is purchased read [How to Set Up After Purchase Settings](../../sales/offers/how-to-include-additional-settings-for-your-offer) for details. Keep in mind, if an [Offer is granted](../../sales/offers/how-to-grant-an-offer), the Customer's information will not be sent to your third-party email provider.
# MailChimp behavior on subscription cancellation
Source: https://help.kajabi.com/articles/api-integrations/email-integrations/if-a-member-cancels-their-subscription-will-they-be-removed-from-my-mailchimp-lists
Understand how the MailChimp integration handles subscription cancellations in Kajabi.
No, the [**MailChimp** integration](/articles/api-integrations/email-integrations/how-to-use-mailchimp-with-kajabi) with Kajabi applies to Opt-ins and Offer Purchases only. Subscription cancellations are not automatically synced to MailChimp.
This means that when a contact submits a Form to opt-in to your marketing emails or purchases an Offer, their information is sent to your designated MailChimp List.
After their information is captured in MailChimp, you can manage your MailChimp List in a way that best fits your business.
If a Member cancels their subscription or you manually unsubscribe them in Kajabi, you will need to perform your desired actions for that contact within your MailChimp account.
# Migrate contacts and Automations from Kit (ConvertKit)
Source: https://help.kajabi.com/articles/api-integrations/email-integrations/migrate-contacts-and-automations-from-kit-convertkit
Import Kit subscribers, tags, and custom fields into Contacts, then trigger Email Sequences and Automations.
**Kit** (formerly ConvertKit) exports cleanly into Kajabi. One CSV carries your subscribers, their tags, and your custom fields into Contacts, and [Kajabi Automations](/articles/marketing/automations/automations-overview) pick up from there; the same tags that drove your Kit automations become triggers here.
This page covers the entire process: preparing the export, building the Automation to greet visitors, running the import, and setting up the Automations that will continue to run your list. Your Kit account will still be available while you build and test in Kajabi.
## Before you begin
* **Export your subscribers from Kit as a CSV**, including tags and any custom fields you want to keep. [Kit's own documentation](https://help.kit.com/en/articles/2502489-how-to-export-subscri) covers the current export path.
* **Choose a Tag to mark this batch**, such as `kit-import`. Kajabi applies it to every contact in the file, and it becomes the trigger for the Automations you set up.
* **Decide which Email Sequence new visitors should receive.** Create it first if it does not exist yet, so the Automation has something to point at. Email Sequences require a paid plan, and trial accounts can send Email Broadcasts.
## Prepare the Kit export
1. Put all of a contact's tags in one column headed **`Tags`**, separated by commas.
2. Combine **First** and **Last Name** into a single **Name** column, since Kajabi stores one name per contact. [Use Google Sheets to combine first and last name](/articles/contacts/manage-your-contacts/how-to-use-google-sheets-to-combine-first-and-last-name).
3. Give every column a distinct header, because duplicate headers stop the mapping step.
4. Save the file as a `.csv` no larger than 30 MB.
Keep any custom field columns in your file. Kajabi maps the ones it recognizes and offers to create the rest during the import, so a Kit field like **`Purchase Source`** becomes a Kajabi custom field you can filter and segment on.
## Build the welcome Automation before importing
The **Tag is added** trigger fires the moment a tag lands on a contact. Build this Automation first, and every contact in your file enters the Email Sequence as they import: each one picks up the Tag, the Automation fires, and the sequence starts sending on its schedule.
### Build the Automation on the canvas
1. From the Dashboard, go to **Marketing** > **Automations**.
2. Click **+ New automation**, then select **Or, start from scratch**.
3. Click **+ New trigger** and select **Tag**.
4. Under **When**, select **Tag is added**, then choose the tag you will use when importing contacts.
5. Click **Done**.
6. Click **+ Then** and select **Subscribe to an email sequence**.
7. Under **Email sequence**, choose the sequence you want to send.
8. Click **Done**, then **Save** the Automation.
### Build the Automation in the original Automations experience
1. From the Dashboard, go to **Marketing** > **Automations**.
2. Click **+ Add Automation**.
3. Under **When**, select **Tag is added**, then choose the tag you will use when importing contacts.
4. Under **Then**, select **Subscribe to an email sequence**, then choose the sequence you want to send.
5. Click **Save**.
[Create an Email Sequence](/articles/marketing/email-campaigns/create-an-email-sequence)
### Subscribe contacts who are already imported
If your import has already run, subscribe that batch directly from the Contacts tab.
1. From the Dashboard, open the **Contacts** tab.
2. Click **Filters**, and in the first dropdown, select **Tags**.
3. In the **Conditional** dropdown, choose **Has any**.
4. Under **Value**, select the **Tag** used during import.
5. Click **Apply Filters**.
6. Check **Select All**, then open the **Bulk Actions** dropdown.
7. Choose **Subscribe to Email Sequence**, choose the email sequence you want to use, and click **Submit**.
The same bulk actions grant Offers, register people for Events, and add or remove Tags across a filtered list, which makes them useful for tidying up any batch after it lands.
[Perform bulk actions in the Contacts tab](/articles/contacts/manage-your-contacts/perform-bulk-actions-in-the-contacts-tab)
## Import contacts and tags into Kajabi
1. From the Dashboard, open the **Contacts** tab.
2. Select **All Contacts**.
3. Click **+ Add contacts**.
4. Select **Import CSV**, then click **Upload File**.
5. Choose your `.csv`, then click **Continue to Upload**. To paste rows in directly instead, select **Copy/paste from file** and click **Continue to Import Actions**.
6. Next, under **Map Columns**, review how Kajabi matched each column header. Confirm your tag column is mapped to **Tags**, and use **Existing Field**, **New Field**, or **Skip Column** to place anything else.
7. Under **Bulk Actions**, use **Add tags** to apply your batch tag to everyone in the file. **Grant offers** gives access to an Offer at the same time, and **Subscribe to marketing emails** adds contacts to your marketing list.
8. Review the summary under **Confirm** and start the import.
**Warning:** Only check **Subscribe to marketing emails** for contacts who explicitly agreed to hear from you. Importing a list as subscribed without that permission puts you outside [CAN-SPAM](/articles/marketing/email-campaigns/what-is-can-spam) and the other laws that apply to your business.
Kajabi emails you when the import finishes, with a count of contacts created and updated and a link to a file listing any rows it could not accept and why. Contacts are matched on email address, so running the import again updates the people already there instead of duplicating them.
**Note:** You can import up to 40,000 contacts per day. Split a larger list into daily batches, each carrying the same batch tag.
[Import contacts into Kajabi](/articles/contacts/manage-your-contacts/how-to-import-contacts-into-kajabi)
## Recreate Kit automations with Kajabi triggers and actions
Your tags arrive on the right contacts, so the logic you ran in Kit has the same signals to work from in Kajabi. An Automation pairs a **When** trigger with a **Then** action, and an **Only if** condition narrows when it runs. The patterns most Kit accounts depend on each map to one pairing:
| Goal | When | Then |
| :-------------------------------- | :----------------------------------- | :--------------------------------- |
| Tag someone who opts in | Form is submitted | Add a tag |
| Start a welcome series from a tag | Tag is added | Subscribe to an email sequence |
| Stop a series when someone buys | Offer is purchased | Unsubscribe from an email sequence |
| Clear a tag when a series ends | Email sequence is completed | Remove a tag |
| Re-engage a quiet contact | Person has been inactive for 30 days | Send an email |
Tags are only the entry point. Automations also trigger:
* Form submissions
* Offer purchases and grants
* Email opens and link clicks
* Quiz and Assessment results
* Lesson completions
* Event registrations
* Contact inactivity at 7, 30, 60, or 90 days
Alongside tagging and sequence subscriptions, the actions available include:
* Sending an email or an SMS
* Granting or revoking an Offer
* Sending a single-use coupon
* Sending a certificate
* Adding someone to a private Community channel
**Note:** **Only if** conditions are available on the Growth and Pro Plans. On the Basic Plan, an Automation pairs one **When** trigger with one **Then** action. Build Automations from **Marketing** > **Automations**, or from inside the Form, Offer, Email Campaign, or Course Lesson each one belongs to.
[Automations overview](/articles/marketing/automations/automations-overview)
### Branching and multi-step Automations
Kajabi's upgraded Automations experience builds on a visual canvas, where one Automation holds multiple actions, branching logic, and wait steps, so a Kit automation that sends buyers one way and everyone else another becomes a single flow.
On the original experience, chain Automations together with Tags. A **Tag is added** trigger paired with an **Add a tag** action hands a contact from one Automation to the next, which covers most branching.
[Explore the upgraded Automations experience](/articles/marketing/automations/whats-new-with-kajabi-automations)
## Keep Kit connected during the migration
Kajabi integrates with Kit directly, so your Kajabi Forms can keep feeding your Kit list while you build. The integration is labeled **ConvertKit** in Kajabi.
1. Open the **Settings** tab and select **Third Party Integrations**.
2. Toggle on **ConvertKit** and paste your **API Key**.
3. On any Kajabi Form, check **Send the contact to a third party email provider**, select **ConvertKit**, and add your Form ID.
Submissions to that Form reach both platforms, which lets you verify your Kajabi Automations against live traffic before Kit comes offline.
**Note:** If double opt-in is on in both platforms, submitters receive two confirmation emails. Turn it off on one side while you run both. [Use ConvertKit with Kajabi](/articles/api-integrations/email-integrations/how-to-use-convertkit-with-kajabi)
## FAQs
### Does migrating from Kit break tagging and automation workflows?
No. Tags import alongside your contacts and land on the right people, so your segmentation arrives intact and every Automation you set up in Kajabi has the same signals to fire on. Kajabi covers the tag-driven logic Kit accounts run on with the trigger **Tag is added** and the actions **Add a tag**, **Remove a tag**, **Subscribe to an email sequence**, and **Unsubscribe from an email sequence**.
### Do custom fields in Kit migrate to Kajabi?
Yes. Keep the columns in your CSV and map them on the **Map Columns** step. Kajabi matches the fields it recognizes and prompts you to create the rest as new custom fields, which are then available for filtering, segmenting, and **Only if** conditions.
### Should the Automation in Kajabi be built before or after the import?
Before. The **Tag is added** trigger fires as each tag is applied, so an Automation saved beforehand catches the whole batch as it imports. If the import already ran, filter the Contacts tab by that tag and use the **Bulk Actions** dropdown to subscribe everyone to the Email Sequence at once.
### Where does email content go when migrating from Kit to Kajabi?
Email content is created in Kajabi as Email Sequences for anything on a schedule and Email Broadcasts for one-off sends, both from **Marketing** > **Email Campaigns**. Copy your Kit copy into the Kajabi editor, then point your Automations at the sequences you build.
### How many contacts can be imported at once?
A CSV can be up to 30 MB, and up to 40,000 contacts can be imported per day. Split larger lists into daily batches.
### Can Kit keep running during the migration?
Yes. An import to Kajabi changes nothing in your Kit account, and the ConvertKit integration keeps Kajabi Forms feeding your Kit list while you build and test.
# Kajabi MCP Security and Privacy
Source: https://help.kajabi.com/articles/api-integrations/kajabi-mcp-security-and-privacy
MCP permissions and limitations, how account information is protected, and how data moves through the MCP to an AI provider
The [Kajabi MCP](https://help.kajabi.com/articles/api-integrations/connect-kajabi-to-claude-or-chatgpt) is secure and safe to use. Below, we clearly and transparently break down how the MCP works with your data and the customer data you control, so you can decide what’s right for your business with confidence.
The short version: We’ve applied best practices to secure the Kajabi MCP, and ensure that you control what your AI tool can and can’t do with it.
## What is an MCP?
**MCP** stands for **Model Context Protocol**. It's a shared standard that lets an AI tool, like Claude, ChatGPT, or Cursor, connect directly to another piece of software and do real work inside it.
We built the Kajabi MCP so you can point an AI tool at your Kajabi account and have it make actual changes for you: drafting and editing emails, building out pages, updating products and offers, organizing contacts, and working across the other features you already use.
That's genuinely powerful, and it's also why we take the security side seriously. Giving an AI tool the ability to make changes in your account means giving it access and reach, so we've done a lot of work to keep you in control of exactly what it can and can't do. Here's how that works.
## Decide what the AI can access through the MCP
When you connect an AI tool (Claude, ChatGPT, Cursor, or another), [you approve each permission individually](https://help.kajabi.com/articles/api-integrations/connect-kajabi-to-claude-or-chatgpt#choose-what-your-ai-tool-can-do). Your connection starts read-only, and you grant access from there.
If you would like the AI to draft your emails but never touch your contacts you may grant the one, and skip the other. The riskiest permissions, like editing your theme code or adding account users, stay off until you deliberately turn them on. Anything you haven't granted isn't available to that connection at all, so there's nothing for the AI to work around.
## Review what the AI does with the MCP
You stay in control of the MCP at two points, and both are yours to set.
First, by default, your AI tool asks for your permission before it takes any action (making a change, pulling data, anything). Claude, ChatGPT, and Cursor all offer an “auto-approve” mode you can turn on to stop those prompts, but we'd recommend against it, including when you're working with the Kajabi MCP. Leaving approvals on means you're always asked before anything happens.
Second, not every action works the same way in the MCP. Many changes are saved as drafts for you to review and publish when you’re ready. Others take effect right away. You have a moment to check which kind it is before you approve an action.
## How we protect your account
We built in a lot of safeguards around the MCP. A few key ones are:
* **The MCP can't exceed your own access:** The MCP is limited to what your user role allows, and it's locked to your account. It can't reach anyone else's. You can always set up a specific user account for the MCP to have more granular controls over its access.
* **Automated disconnection:** Remove any tool in one click under **Settings → Integrations & Webhooks**. Connections you stop using expire on their own.
* **Protection against prompt injection:** Content your customers enter is treated as information, not as instructions the AI should follow.
* **It was independently tested:** In addition to our own rigorous testing, we had the MCP put through independent security testing before launch and addressed what we found.
## Data & privacy
When you let an AI tool read your Kajabi data through the MCP, that data goes to the AI provider you picked (Anthropic, OpenAI, or another) under their terms, not ours. The MCP never sends your data to an AI on its own. It only happens when you connect a tool and ask it to. You pick the tool, you set the permissions, and you decide what it can see.
As always with Kajabi, you remain in control of your customers' data. If you use the MCP to process your customers' personal information, the AI tool you connect to is a vendor you've chosen, and you can disclose that vendor to your customers based on your privacy compliance needs.
## In summary
The MCP is one of the most useful tools we've shipped, and we want you to use it knowing exactly what you've allowed and what you haven't. If you have questions we haven't answered in this article, please let us know by [contacting Support](https://help.kajabi.com/articles/resources/support/how-to-contact-kajabi-support) or posting in the [Kajabi Hero Community](https://university.mykajabi.com/products/communities/v2/khc/home).
# Check out as a guest through PayPal
Source: https://help.kajabi.com/articles/api-integrations/payment-integrations/can-you-checkout-as-a-guest-through-paypal
Learn when customers can use a guest checkout versus a required PayPal account.
**PayPal** offers guest checkout options for certain payment types, allowing your customers to pay without logging into a PayPal account. This flexibility depends on the type of Offer you're selling.
## Guest checkout for one-time payments
For [one-time payment](../../sales/offers/how-to-create-a-one-time-payment-offer) Offers, customers can check out as a guest with PayPal without needing a PayPal account. Customers are redirected to the PayPal checkout window, where they can click **Pay with Debit or Credit Card** to complete the purchase without a PayPal account.
**Note:** The guest checkout option in PayPal may vary depending on your country, the customer's country, and PayPal's current settings. If the **Pay with Debit or Credit Card** option is not visible, the customer may need to create or log into a PayPal account to complete the purchase. This is controlled by PayPal and cannot be changed in Kajabi.
## Account required for recurring payments
For [payment plan](../../sales/offers/create-a-payment-plan-offer) or [recurring subscription](../../sales/offers/how-to-create-a-subscription-offer) Offers, customers must log into an existing PayPal account or create a new one to complete the purchase.
## FAQs
### Can I disable PayPal guest checkout?
No. Whether PayPal guest checkout is available is controlled by PayPal and depends on the type of Offer, the customer's country, and PayPal's current settings. This cannot be changed from within Kajabi.
### What happens if a customer does not have a PayPal account?
For one-time payment Offers, customers can use the **Pay with Debit or Credit Card** option to check out as a guest without a PayPal account. For payment plan or subscription Offers, customers must create a PayPal account to complete the purchase since PayPal requires an account to manage recurring billing.
### Is PayPal guest checkout available in all countries?
No. PayPal guest checkout availability varies by country and is determined by PayPal. If a customer in a specific country cannot see the guest checkout option, they will need to log into or create a PayPal account to complete their purchase.
# Connect a third-party payment gateway to Kajabi
Source: https://help.kajabi.com/articles/api-integrations/payment-integrations/connect-a-third-party-payment-gateway-to-kajabi
Connect third-party checkout software and payment gateways to accept payments on Kajabi.
**Kajabi** offers a native integration for [Kajabi Payments](../../sales/kajabi-payments/kajabi-payments-overview). However, you also have the ability to connect third-party checkout software to collect payments. This allows you to use payment gateways like Stripe or PayPal.
## PayPal
PayPal is a service that enables you to pay and accept payments. PayPal uses data encryption and anti-fraud technology to help keep your information secure, reducing the risk of online fraud.
[Learn to connect PayPal to your Kajabi Account.](./connect-paypal-to-kajabi)
## Stripe
Stripe is an American technology company operating in over 34 countries that allows both private individuals and businesses to accept payments over the Internet. Stripe focuses on providing the technical, fraud prevention, and banking infrastructure required to operate online payment systems.
[Learn to connect Stripe to Kajabi to begin accepting payments with Stripe.](./connect-stripe-to-kajabi)
## Find a third-party checkout software
If you do not wish to use PayPal or Stripe as your third-party payment gateway, you do have other options.
First, research third-party checkout software to find the best software to suit your needs.
To help you get started, here are a few examples:
* [Shopify](https://www.shopify.com/)
* [WooCommerce](https://woocommerce.com/)
After you have found your preferred software, you will need to determine the software that is available in your region/country.
After you have determined the Payment Software that you wish to use, you are ready to connect through a Webhook URL or Zapier.
**Note:**
You will not receive automatic [Hero reward milestone](https://help.kajabi.com/hc/en-us/articles/360037241714) emails from Kajabi if you are using a third-party payment system other than Stripe or PayPal. See instructions on [how to claim Hero rewards if you use a third-party payment system.](https://help.kajabi.com/hc/en-us/articles/360037241714#h_f92e9662-0484-46a3-89aa-e8536b0a26f1)
## Connect to Kajabi Offers using webhook URLs or Zapier triggers
You will need to connect your payment gateway to Kajabi, specifically to grant your customers access to one of your Offers if they purchase through your third-party checkout software. Each product in your checkout software should correspond to an Offer on Kajabi.
### Zapier
* Choose your checkout software as the trigger app (e.g., Shopify) and the event should be related to a new order or purchase:
* Add a filter to run this zap only if it applies to a specific product. In the trigger event, you can choose how to filter this (e.g., product ID):
* Add an action and select Kajabi as the app. For the event, choose "Grant Access to an Offer":
* Then, repeat these steps for all your Offers.
**Note:**
If you are selling a subscription product, you will need to create another zap. When the subscription is canceled, you will need to revoke access to the Offer on Kajabi.
### Webhooks
You can use inbound webhooks on your Offer.
**Activation URL** - This will grant access to your Offer.
* Send data when a new Offer is purchased with your third-party checkout software.
**Deactivation URL** - This will revoke access to your Offer.
* Send data when a subscription Offer is canceled via your third-party checkout software.
[Learn more about Webhooks.](../../api-integrations/webhooks/webhooks-explained)
**Note:**
Webhooks on Kajabi are exclusively accessible for Heroes on our Growth or Pro Plans. Learn how to upgrade your Kajabi subscription plan [here.](../../account-settings/billing/manage-your-subscription)
## Link or embed checkout software
On your third-party checkout software, you should have a checkout page link for each of your Products.
On Kajabi, you can link to these pages with call to action (CTA) buttons.
[Learn how to use a Call to Action.](../../website/pages/how-to-use-a-call-to-action)
Some third-party checkout software may give you the option to embed your Products on your Kajabi site. In this case, you can use a custom code section on your site pages to add the embed code.
Example embed code section:
**Important:**
Introducing custom code to your site can open you up to vulnerabilities and potential malware attacks. We recommend using vulnerability tools like [VirusTotal](https://www.virustotal.com/gui/home/url) or [Snyk](https://snyk.io/) to scan any custom code that you intend to use and apply certain [best practices](../../website/domains/code-based-customizations) to help reduce potential impact.
[Learn how to add custom code to your page.](../../website/pages/add-custom-code-to-pages)
# Connect PayPal to Kajabi
Source: https://help.kajabi.com/articles/api-integrations/payment-integrations/connect-paypal-to-kajabi
Connect a PayPal account to Kajabi to accept payments securely.
**PayPal** is a service that enables you to pay and accept payments. PayPal uses data encryption and anti-fraud technology to help keep your information secure, reducing the risk of online fraud.
**Tip:**
Interested in using an all-in-one payment solution with exclusive features designed specifically for the Kajabi platform instead? Check out [Kajabi Payments](../../sales/kajabi-payments/kajabi-payments-overview).
## Connect PayPal to Kajabi
### Connect PayPal to Kajabi
* Open the **Settings** tab from your Dashboard.
* Click **Integrations & Webhooks** in Site Settings.
* Locate the **Third-party payment method** section
* Then, click **Connect** next to PayPal to begin the connection process:
After completing the connection, you will receive a confirmation email. However, if there is a problem with the connection, you will see a notification about the issue with your connection on the Payment Integration page.
Repeat the process to integrate PayPal into your Kajabi account if your connection is unsuccessful.
## PayPal receipts
When a Member purchases an Offer with a PayPal account, they will automatically receive a digital receipt in the email inbox associated with their PayPal account or the email address used when checking out as a guest with PayPal:
## Connect a different PayPal account
Connected the wrong account, or do you need to change the PayPal account connected to Kajabi?
Detach your PayPal account from Kajabi to connect a different account. [Learn more](./detach-stripe-and-paypal-from-kajabi)
# Connect Stripe to Kajabi
Source: https://help.kajabi.com/articles/api-integrations/payment-integrations/connect-stripe-to-kajabi
Connect a Stripe account to Kajabi to accept payments.
If your business operates in any of the following regions, you can leverage [Kajabi Payments](../../sales/kajabi-payments/kajabi-payments-overview) to simplify setup and streamline payment management directly within Kajabi. You'll also unlock exclusive features, including [Apple Pay and Google Pay](../../sales/kajabi-payments/how-to-enable-apple-pay-and-google-pay-on-kajabi-payments-offers), [Buy Now Pay Laters (Afterpay and Klarna)](../../sales/kajabi-payments/buy-now-pay-later-methods-with-kajabi-payments), Kajabi's [Sales Tax](../../sales/kajabi-payments/kajabi-payments-sales-tax-overview) feature, seamless integration with accounting software including [QuickBooks](../../sales/kajabi-payments/how-to-integrate-quickbooks-online-with-kajabi-payments) and [Xero](../../sales/kajabi-payments/how-to-integrate-xero-with-kajabi-payments), and more.
* Australia
* Canada
* United Kingdom
* United States
* United Arab Emirates
* European Union countries (Austria, Belgium, Croatia, Cyprus, and more)
## Connect to Stripe
Connect Stripe to your site on Kajabi to begin accepting payments through the Stripe payment provider. [Learn about Stripe.](../../sales/kajabi-payments/transactions#h_80edf9e0-aedf-4550-b664-6238b5a2bbb8)
**Note:**
To connect Stripe to your site you must be signed into Kajabi as the account owner. If you are an account user, you will not be able to connect to Stripe. [Learn more about account user roles.](../../account-settings/users/account-users)
### Connect Stripe
* Open the **Settings** tab from your Dashboard.
* Click **Integrations & Webhooks** in Site Settings.
* Locate the **Third-party payment provider** section
* Select "**View third-party payment provider**"
* Select "**Connect**" to begin the Stripe integration:
## Connect a Stripe account
After clicking **Connect** from your Kajabi account you will be prompted to complete the setup with an existing Stripe Account or with a new Stripe Account:
* [I have a Stripe Account](#if-you-have-an-existing-stripe-account)
* [I don't have an Account with Stripe](#if-you-dont-have-a-stripe-account)
## If you have an existing Stripe account
If you already have an existing Stripe account, you can connect it to your site on Kajabi.
However, if your existing Stripe account is already connected or has existing transactions (e.g., another Kajabi site, third-party software) you may see the error message "Looks like this account has been connected to another Kajabi Site."
If you receive this message, you will need to create a new account within your existing Stripe account. You can use your same Stripe email login credentials for this new account.
To connect your Stripe account, start by logging into your Stripe account from the Stripe integration on Kajabi.
### Log in to Stripe
* Click **Log in to Stripe**.
* Enter the email address associated with your Stripe Account.
* Enter your password for your Stripe Account.
* Select the account you'd like to connect to Kajabi.
* Then, click **Connect**.
* If your Stripe Account is currently connected to another site on Kajabi, you will need to create a new account. Simply click **Create a new account** to get started. [Learn how to create and manage multiple Stripe accounts](https://stripe.com/docs/multiple-accounts).
* Then, complete the prompts to create your new Stripe Account.
**Note:**
You can create additional Stripe Accounts under the same email address if you already have an existing Stripe Account.
If you need to create a new account, Kajabi will help you create a new account with Stripe to easily connect to Kajabi. To set up a new account, follow the on-screen instructions provided by Kajabi's integration with Stripe.
## If you don't have a Stripe account
If you don't have a Stripe account but wish to integrate Kajabi with Stripe, create a Stripe account directly through Kajabi's integration with Stripe:
* Select **Create Stripe account**.
* Enter your desired Stripe account credentials (email and password).
* Click **Continue**.
* Then, follow the on-screen instructions to set up your account:
After completing the connection process, Kajabi will prompt you to review your details.
* Be sure to complete any missing required information.
* After reviewing your details, click **Submit**:
After successfully connecting your Stripe account, you will be redirected back to your Payments page on Kajabi.
## Remove a Stripe account
Did you connect the wrong account, or need to change the Stripe account connected to Kajabi?
Detach your Stripe account from Kajabi to connect a different account. [Learn more](./detach-stripe-and-paypal-from-kajabi)
# Detach Stripe and PayPal from Kajabi
Source: https://help.kajabi.com/articles/api-integrations/payment-integrations/detach-stripe-and-paypal-from-kajabi
Disconnect your Stripe and PayPal payment processors from Kajabi and understand the impact on existing subscriptions and transactions.
If you want to detach your **Stripe** and/or **PayPal** accounts from Kajabi, follow the instructions in this guide.
## Detach Stripe
### What happens when you detach Stripe from Kajabi?
* **Integrate with another Stripe account.** Detaching a Stripe account from Kajabi allows you to connect a different Stripe account.
* **Payment records remain visible.** All payment records and analytics from detached Stripe integrations stay visible in Kajabi.
* **Coupons carry over.** Existing coupons will function and will be recreated in the new Stripe integration.
* **No new payments on the detached account.** After detaching a Stripe account, the detached account will no longer accept new payments. However, Kajabi will continue to listen for updates to past payments and subscriptions.
* Refunds, cancellations, and pausing/resuming actions can still be done from Kajabi for a detached Stripe account.
* **Automations continue.** All automations will continue to trigger for purchases made through the detached Stripe account.
* **Billing Info may become inaccessible.** If your customer has an active subscription from a payment processor that you have detached from Kajabi, the [Billing Info section](../../contacts/manage-your-contacts/customer-update-of-customer-settings#h_01EJY97R9CMWW6YA395V63ZCY0) in their customer portal will not be visible or accessible. Your customers will no longer have the ability to cancel or update their cards if their active subscription was processed through a detached payment processor (i.e., detached PayPal or Stripe). Instead, you will need to [manually cancel or remove their cards from Kajabi](../../contacts/manage-your-contacts/refund-your-customers) or Stripe.
### Detach a Stripe account from Kajabi
1. Open the **Settings** tab from your Dashboard.
2. Click **Integrations & Webhooks** in Site Settings.
3. Locate the **Third-party processor** section.
4. Select **View third-party processor**.
5. Click **View details** from the Stripe card.
6. Click **Detach Stripe Integration**.
7. Confirm your desire to disconnect your Stripe account by completing the prompt and selecting **Delete Stripe Integration**:
**Warning:**
Do not revoke access to your detached Kajabi account via the Stripe Dashboard. Revoking access severs ties between Stripe and Kajabi, and you will no longer be able to take actions on purchases in Kajabi. Learn more about the implications of revoking access in [Stripe's Support Documentation](https://support.stripe.com/questions/disconnect-your-stripe-account-from-a-connected-third-party-platform#:~:text=You%20can%20revoke%20the%20access,with%20the%20platform%20before%20disconnecting.).
If your Kajabi account is deactivated and you need to remove the Kajabi/Stripe integration inside of Stripe, refer to [Stripe's Support Documentation](https://support.stripe.com/questions/disconnect-your-stripe-account-from-a-connected-third-party-platform).
## Detach PayPal for upgraded accounts
You can manually disconnect your PayPal account from Kajabi if you want to move forward with detachment.
**Note:**
The following steps are only available if you have the latest version of PayPal. [Learn to upgrade your PayPal account](./how-to-upgrade-your-paypal-account).
### Detach a PayPal account from Kajabi
1. Sign into your connected PayPal account.
2. Go to **Account Settings**:
3. Navigate to **Account Access**:
4. Click **Change** next to "Log in with PayPal".
5. Click **Delete** for the option tied to Kajabi:
## What happens when you detach a non-upgraded PayPal account from Kajabi?
Consider your detachment request carefully with the following points in mind:
* **Refunds stop processing.** Refunds for purchases made under the current PayPal account will no longer be able to process once detached.
* **Subscription-based Offers disconnect.** Subscription-based Offers will disconnect from Kajabi and any updates or changes will not reflect in Kajabi. However, subscription payments will continue and be reflected in your PayPal account. Be sure to prepare your customers' future payments before detaching PayPal from Kajabi.
* **Coupons stop working.** Coupons created in Kajabi will disconnect and will no longer function properly.
* **Affiliate tracking ends.** All purchases made through Affiliates under the current PayPal account will no longer be tracked.
* **Payment records become invisible.** All payment records and analytics (i.e., Sales) from detached PayPal integrations will no longer be visible in Kajabi.
* **Reconnection is not possible.** Once detached, the same PayPal account cannot be reconnected back to the Kajabi site.
If you have upgraded your PayPal account, none of the above disclaimers apply to you.
Learn more about [upgrading your PayPal account](./how-to-upgrade-your-paypal-account).
**Tip:**
Toggle off PayPal for specific Offer Checkout Pages instead of detaching your PayPal accounts from Kajabi. [Learn to disable PayPal as a payment method for specific Offers](../../sales/offers/how-to-turn-on-a-payment-provider-for-your-offers).
## Request a detachment for a non-upgraded PayPal account with transactions
If you want to move forward with the detachment process, reach out to our [support team](../../resources/support/how-to-contact-kajabi-support#h_a291dc3c-38b1-4199-b868-300d6ee075a1).
**Note:** To request a PayPal detachment, you must be the Account Owner.
To proceed with the detachment process, copy and complete the following information in your request to our support team:
**I have read the [disclaimers](#what-happens-when-you-detach-a-non-upgraded-paypal-account-from-kajabi) listed in the Kajabi Help Center article, [Detaching a non-upgraded PayPal account](#what-happens-when-you-detach-a-non-upgraded-paypal-account-from-kajabi), and I agree to continue with the payment processor detachment with this information in mind. Here are the details of my request:**
* What is your **Site URL**?
* What is your **Site Title**?
* What is your **Reason for Detachment**?
* Are you the **Account Owner**?
* What is your **Contact Email**?
To proceed with the detachment process, our support team must receive confirmation that you understand the ramifications of this action as listed above, and you must be the Account Owner.
# Send a receipt with PayPal
Source: https://help.kajabi.com/articles/api-integrations/payment-integrations/how-do-i-send-a-receipt-with-paypal
PayPal automatically sends receipts to customers after purchase.
When customers purchase your Product via [**PayPal**](../../sales/offers/how-to-turn-on-a-payment-provider-for-your-offers), they will automatically receive an electronic receipt from PayPal in their email inbox:
[Learn more about PayPal seller tools](https://www.paypal.com/us/smarthelp/article/how-do-i-send-an-email-receipt-to-buyers-\(virtual-terminal-transaction\)-faq2929).
Looking to send a receipt with Stripe? [Learn more](./how-to-send-a-receipt-in-stripe)
# How Kajabi supports payment authentication
Source: https://help.kajabi.com/articles/api-integrations/payment-integrations/how-kajabi-supports-payment-authentication
Comply with authentication guidelines like SCA and customize the purchase experience for your customers.
**Kajabi** helps you comply with authentication guidelines such as Strong Customer Authentication (SCA) and provides options to customize your customers' purchase experience. Whether you use Kajabi Payments, Stripe, or PayPal, your checkout process is built to meet authentication requirements.
## What is payment authentication?
Payment authentication is the process of confirming a customer's identity to successfully process a transaction:
* First, a purchase is initiated.
* Then, the customer authenticates the transaction.
* After authentication is successful, the purchase is completed.
Payment authentication requirements come in many forms, such as Strong Customer Authentication (SCA).
### Strong Customer Authentication
The Strong Customer Authentication (SCA) is a European regulatory requirement designed to reduce fraud and make online payments more secure.
Transactions that don't follow the SCA authentication guidelines may be declined by your customers' banks.
[Learn more about SCA from Stripe](https://stripe.com/guides/strong-customer-authentication).
**Not sure if your business is affected by SCA?**
[Learn about businesses affected by SCA](https://support.stripe.com/questions/businesses-affected-by-strong-customer-authentication-sca-regulations).
### Is Kajabi compliant?
As authentication requirements evolved, Kajabi worked to ensure that knowledge entrepreneurs had the tools necessary to meet these changes.
This requirement drove proactive change and Kajabi has supported authentication from the start.
Kajabi Payments and partnerships with Stripe and PayPal provide the necessary tools to comply with various authentication requirements without any extra setup or work for you.
## How Kajabi supports authentication
With Kajabi, you can feel confident knowing that your checkout process meets authentication requirements without needing to lift a finger.
Kajabi Payments ensures that transactions on your site have the required authentication. And with Kajabi's strong partnerships with Stripe and PayPal, you can feel confident that transactions on your site have the required authentication.
**With PayPal, authentication is done for you.**
If authentication is required, PayPal completes the authentication process separately from Kajabi.
[Learn how PayPal handles authentication](https://www.paypal.com/uk/webapps/mpp/psd2)
**What about Stripe?**
Kajabi works closely with Stripe to ensure that your site complies with authentication requirements by using [Stripe's 3D Secure](https://stripe.com/guides/3d-secure-2).
If a customer is required to complete authentication to process their transaction, they are immediately prompted to authenticate their payment through their bank before proceeding.
Customers with an off-session or offline payment that must be authenticated outside of the checkout process (like a recurring payment) will receive an email prompting them to authorize the transaction.
## What will my customers see?
If a transaction occurs on your site that requires authentication, your customer's experience will vary depending on:
* The financial institution of the card used for payment (the card Issuing Bank)
* And the status of the transaction when authentication is required (i.e., in-checkout or off-session)
A transaction that occurs during the checkout process is referred to as the in-checkout experience whereas the transaction that occurs outside of the checkout process is referred to as the off-session experience.
The in-checkout or off-session status will determine your customers' experience if authentication is required.
With Kajabi, your customers that require authentication are given every opportunity to authenticate their transactions to continue accessing the value you offer.
### In-checkout experience
If your customer requires authentication during the checkout process, they will be prompted to authorize the transaction immediately following the completion of the Offer Checkout Page.
**Note:**
This step will vary depending on your customers' bank.
There, your customer will be asked to verify their identity by the method their bank requires.
Once verified, your customer will continue with the checkout process to access their purchased content.
[Learn more about the checkout process on Kajabi](../../sales/offers/what-happens-when-a-customer-purchases-my-offer)
### Off-session experience
A financial institution can request authentication for a transaction outside the checkout process.
This is referred to as the off-session experience.
This can occur if a customer requires authentication for transactions outside of the checkout page, such as a recurring subscription.
If authentication is required outside of the checkout process, both you and your Member will receive an email notification to inform you that authentication is required.
Email notification:
After receiving the email notification, your Member has a specified number of days to authenticate their payment to maintain their subscription.
**Note:**
Your Stripe setup will determine the specific number of days your Member is allotted.
If the subscription has been fully canceled, the Offer access will be revoked at the end of the current billing cycle.
If your Member attempts to log into their Library page while the authorization is pending they will be directed to complete authentication immediately after logging in.
### Can I change the email copy sent to my customers?
Yes, you can edit the automated emails sent by your site to best represent your language and brand.
[Learn how to edit automated emails](../../account-settings/notifications/edit-automated-email-notifications)
To edit the email notification sent to your customers that require authentication:
* Open the **Settings** tab from your Dashboard.
* Select the **Email Templates** card from your Site Settings.
* Then, click **Member Payment Action Required** to begin editing:
### Don't want to be notified every time a customer requires authentication?
[Update email preferences](../../account-settings/notifications/update-email-notifications):
## What do I need to do?
If you choose to process payments through Kajabi Payments or PayPal, authentication is automatically handled for you, so you don't have to do anything.
Similar to PayPal, Kajabi's integration with Stripe automatically handles authentication for you.
However, with Stripe, you have the ability to customize your Stripe account to modify your 3D Secure settings such as:
* The length of time before Stripe performs an action if authentication is incomplete
* The action Stripe should perform at the conclusion of your selected time period
[Learn more from Stripe](https://stripe.com/docs/billing/automatic-collection#emails-3)
In short, no matter which payment processor you choose (Stripe or PayPal), you can feel confident knowing that with Kajabi your checkout process is built to protect your business.
# Cancel and refund a payment in Stripe
Source: https://help.kajabi.com/articles/api-integrations/payment-integrations/how-to-cancel-and-refund-a-payment-in-stripe
Cancel subscriptions and process refunds directly in Stripe.
Like any business, there will be an occasion when your customers may want to cancel their subscription and ask for a refund. This guide walks you through performing these actions directly in **Stripe**.
## Cancel a subscription in Stripe
* Log into your Stripe account.
* Open the **Customers** tab.
* Search the **customer's** email address in the search bar.
* Click on their **Stripe** profile.
* Scroll to **Subscriptions**.
* Click `x` on the right side of the Subscription that you wish to cancel.
* Then, select **Cancel subscription**.
* In the prompt, select the date of the cancellation.
* Click **Cancel subscription** to apply:
## Refund a payment in Stripe
* Log into your Stripe account.
* Open the **Customers** tab.
* Search the **customer's** email address in the search bar.
* Click on their **Stripe** profile.
* Scroll down to **Payments**.
* Click `…` on the right side of the Payment that you wish to Refund.
* Then, click **Refund payment**.
* Complete the prompt and select **Refund**:
# Cancel and refund a transaction in PayPal
Source: https://help.kajabi.com/articles/api-integrations/payment-integrations/how-to-cancel-and-refund-a-transaction-in-paypal
Process refunds and cancel subscriptions through your PayPal dashboard.
When you need to process refunds or cancel subscriptions for your customers, **PayPal** provides straightforward tools to handle these transactions. This guide walks you through refunding transactions, canceling subscriptions, and setting up automated notifications for your team when cancellations occur.
## Refund a transaction in PayPal
To refund a transaction in your PayPal dashboard:
* Go to the **Activity** tab in the header
* Select **Refund** next to the transaction you'd like to refund
[Learn more with PayPal](https://www.paypal.com/ca/smarthelp/article/how-do-i-issue-a-full-or-partial-refund-faq780).
## Cancel a subscription in PayPal
### Cancel a customer subscription
* Log into your PayPal account
* Click **Sales** in the top menu
* Select **Subscriptions** under the "Sales Channels" section
* On the Manage Subscriptions page, select **Subscriptions** from the left sidebar
* Select the customer whose subscription you'd like to cancel
* Click the `…` menu and select **Cancel Subscription**
* Confirm that you would like to cancel the subscription
**Note:** After your customer cancels their subscription through PayPal, PayPal will notify you of the cancellation.
## Send a custom email notification to your team for cancellations
The email address associated with your Kajabi account will receive a notification email from PayPal if a customer cancels their subscription.
If you wish to notify your team of cancellations, create an Automation:
### Add an Automation
1. From your dashboard, navigate to **Sales** > **Pricing** > **Offers**.
2. Select the offer you want to create the notification for.
3. Click the **Purchase flow** tab.
4. Scroll to the **Automations** section and click **+ Add Automation**.
### Configure the Automation
* Under When, click **Offer subscription payment canceled**
* Under Then, select **Send an email**
* Then, select **To my team**
* Enter your team email addresses that you wish to be notified in the **Recipients** field
* Be sure to click `tab` or `enter` after each recipient entered
* Edit the **Subject** and the **Body** of the email sent to your team
* Click **Save** to keep your changes
# Manage failed payments in PayPal
Source: https://help.kajabi.com/articles/api-integrations/payment-integrations/how-to-manage-failed-payments-in-paypal
Monitor and locate failed payments in PayPal.
Failed payments processed through **PayPal** must be monitored directly through PayPal. Unlike Stripe, PayPal payment failures won't appear in your Kajabi dashboard. This guide shows you how to locate and manage failed payments in your PayPal account.
## PayPal
For payments processed with PayPal, you will need to monitor your payments through [PayPal](https://www.paypal.com/).
If a payment fails with PayPal, you will not be able to see the failure in Kajabi. Any upcoming payments will have the status as "Upcoming," and the overall subscription status will remain as "Active."
## PayPal retries
If a payment fails, PayPal attempts to retry the payment every 5 days up to twice per billing cycle. However, if the second retry fails, PayPal counts it as a payment failure, and the failed payment amount will be added to the outstanding balance for the next billing cycle.
## View failed payments in PayPal
### View a failed payment
* [Log into your PayPal account](https://www.paypal.com/signin)
* Navigate to the **Home** tab of your PayPal account
* Click **Recurring Payments** under "Quick Links"
* Navigate to your list of payments
* Filter by **Outstanding Payments**
You can click on individual customers for more information about their outstanding payment(s).
# Best practices for launching a Branded App
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/best-practices-for-launching-your-branded-app
Grow engagement and create a seamless experience across all channels when launching a Branded App.
Once a **Branded App** is live in the App Store, a strong launch strategy helps drive downloads, engagement, and long-term retention. The practices below cover everything from soft launches to ongoing marketing.
## Build excitement with early adopters
Soft launch with a select group of 15-20 customers and give them exclusive early access to the app to try it out and provide any feedback. You may consider giving them a special discount or access to exclusive content to encourage them to use the app, share a testimonial, and write an App Store review.
## Create anticipation before the launch
Build excitement around the launch by teasing the app's features and benefits through social media, email newsletters, and website banners.
## Shout it from the rooftops on launch day
Make a big splash across all channels by launching the app to customers and prospective customers. Consider launching it in parallel to a course or a community to drive people to start engaging in the app.
## Gamify the launch
Offer a reward or incentive to the first customers that download the app (e.g., The first 25 customers who download the app get a \$25 credit for the next course). You can ask them to share a screenshot of their app on social channels or in a community to show proof of download and generate buzz.
## Drive engagement with push notifications
[Push notifications](/articles/mobile-apps/branded-app/how-to-create-branded-app-push-notifications) are a powerful marketing channel that typically sees an average click rate of 28%, compared to email marketing at 1-2% ([Business of Apps](https://www.businessofapps.com/marketplace/push-notifications/research/push-notifications-statistics/)). Be sure to leverage this channel to encourage members to engage with the app. These can be targeted, scheduled, and sent to specific audiences.
## Make the app easy to find with always-on marketing
Add links to download the app in the footer of emails, website and social channels so members can easily find the app from anywhere. We also suggest adding a call to action to download the app in customer onboarding, course content, and in a community.
## Monitor usage to help inform future growth
You can check how the App is performing in the [App Analytics section of your Apple Developer Account](https://developer.apple.com/help/app-store-connect/measure-app-performance/overview-of-reporting-tools/) or the [App Statistics section of your Google Play account](https://support.google.com/googleplay/android-developer/answer/139628?hl=en\&co=GENIE.Platform%3DDesktop). This can help you understand traffic sources, downloads, and engagement, as well as how the app benchmarks against other similar apps.
# Branded Mobile App naming guidelines
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/branded-mobile-app-naming-guidelines
Name a Branded Mobile App according to Apple and Google naming guidelines.
Naming a **Branded Mobile App** correctly is essential for getting approved by Apple and Google. Following these guidelines will help you avoid rejection and ensure the app is easy for customers to find.
## Tips for naming an app
Avoid the issues, time, and resources expended that follow a rejection from Apple or Google by following these tips:
* Create a unique name that describes the app and its content accurately and clearly
* Make sure that the name is easy and simple for visitors and users to remember
* Showcase the app's core features in the app name
* Be sure to check the availability of the mobile app name, including any social media handles and domain names
## Things to avoid
When naming a Branded Mobile App, avoid the following:
* Prices or pricing information (e.g., Free)
* Popular names, references to other apps, or existing names
* Inappropriate or irrelevant content
* Trademarked names or information
* Special characters or emojis
* Names over the limit of 30 characters
**Note:**
Keep in mind that the name you choose for the app that shows up on the device does not have to match the name of the app in the store(s). We do have character limitations for the app on the device, and those are different than the rules guiding naming on the storefront pages.
# Branded Mobile App resources
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/branded-mobile-app-resources
Find all the resources you need to build, customize, and manage a Branded Mobile App.
Below is a collection of resources covering every aspect of the **Branded Mobile App** journey, from initial setup to ongoing management.
## Best practices
* [Kajabi Branded App Overview](/articles/mobile-apps/branded-app/kajabi-branded-app-overview)
* [Kajabi Branded App FAQs](/articles/mobile-apps/branded-app/kajabi-branded-app-faqs)
* [Best Practices for Launching Your Branded App](/articles/mobile-apps/branded-app/best-practices-for-launching-your-branded-app)
## Building a Branded App
* [How Do I Get Started Creating My Own Branded App?](/articles/mobile-apps/branded-app/how-do-i-get-started-creating-my-own-branded-app)
* [How to Create an Apple Developer Account and Join the Apple Developer Program](/articles/mobile-apps/branded-app/how-to-create-an-apple-developer-account-and-join-the-apple-developer-program)
* [How to Create a Google Developer Account](/articles/mobile-apps/branded-app/how-to-create-a-google-developer-account)
* [How to Verify Your Google Developer Account](/articles/mobile-apps/branded-app/how-to-verify-your-google-developer-account)
* [How to Verify Your Website For Your Google Play Console](/articles/mobile-apps/branded-app/how-to-verify-your-website-for-your-google-play-console)
* [How to Add Kajabi as an Admin to Your Google Play Console and Project Owner on Google Cloud Console](/articles/mobile-apps/branded-app/how-to-add-kajabi-as-an-admin-to-your-google-play-console-and-project-owner-on-google-cloud-console)
# Enter trader status and contact info in App Store Connect
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/entering-your-trader-status-and-contact-info-in-app-store-connect
Add trader status and contact information in App Store Connect to comply with the EU Digital Services Act.
Apple has introduced [requirements](https://developer.apple.com/help/app-store-connect/manage-compliance-information/manage-european-union-digital-services-act-compliance-information/) for apps made available in the European Union (EU) to comply with the EU's [Digital Services Act](https://commission.europa.eu/strategy-and-policy/priorities-2019-2024/europe-fit-digital-age/digital-services-act_en). **App Store Connect** includes fields for entering trader status and contact details so that your app meets these requirements.
These requirements apply to any "trader", which is "any natural person, or any legal person irrespective of whether privately or publicly owned, who is acting, including through any person acting in his or her name or on his or her behalf, for purposes relating to his or her trade, business, craft or profession".
If you're not sure if this definition of a trader applies to you, we recommend that you consult with a legal professional.
Apple asks traders to provide a business address, phone number, and email address to be posted on the App Store product page. We recommend that you avoid providing personal information and specifically provide business information only.
## What if I don't have a business address / phone number / email address?
Setting up contact accounts for a business is fairly easy. This could include:
* Obtaining a P.O. Box address through your local Post Office or using a business address service
* Registering a business phone number through an online number service
* Creating a new email account with your preferred email provider
# Examples of good and bad Branded Mobile App logos
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/examples-of-good-and-bad-branded-mobile-app-logos
Design choices that make a Branded Mobile App logo effective or ineffective.
A well-designed **logo** has a significant impact on how an app appears on mobile device screens. The examples below highlight effective and ineffective design choices for Branded Mobile App logos.
## Elements of a good mobile app logo
**Logos that work best for mobile apps tend to have:**
* High image quality/resolution
* Little or no text
* A simple design
* Identifiable even when small
**Conversely, logos that tend to render poorly have:**
* Low image quality/resolution
* A large number of text characters
* A complex design
* Degraded appearance at small file sizes
**Tip:**
The app will have a white background. We recommend using a logo image with a transparent background that will be visible when overlaid on the color white.
## Good mobile app logo example
Here's an example of an effective mobile app logo. This logo has a simple design that looks good at a small file size, and no text:
App load screen:
App login screen:
App home screen:
## Bad mobile app logo example
Here's an example of an ineffective mobile app logo. This logo has too much text and doesn't look good at a small file size:
App load screen:
App login screen:
App home screen:
## Specifications
* JPG or PNG
* Minimum 300 x 300px
Learn to [update the app logo for iOS and/or Android](/articles/mobile-apps/branded-app/how-to-update-your-branded-app-brand-assets-or-terms-privacy-links) for more details.
# Google photo and video permissions declaration instructions
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/google-photo-and-video-permissions-declaration-instructions
Complete the Google photo and video permissions declaration in the Play Console.
Google requires you to declare how a Branded App uses **photo and video permissions**. Follow the steps below to complete the declaration in the Google Play Console.
## Complete the declaration
To get started:
1. From the Google Play Console, navigate to **Policy and Programs** and then **App Content**
2. From there, you will see a **declaration requirement**:
3. Click on **Start Declaration**
4. Next, you will see 2 fields in which you can enter information
5. In the **Read Media Images** box, please use the following response:
* ***My customers can, if they choose to give permission to access photos, upload photos and media content within the application.***
6. In the **Read Media Video** box, please use the following response:
* ***My customers can, if they choose to give permission to access videos, upload video and media content within the application.***
7. After you click **Save** in the bottom right corner, you will be asked to go to the Publishing Overview
8. Go to the **overview** page, then click on **Send For Review**:
# Get started creating a Branded App
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-do-i-get-started-creating-my-own-branded-app
Set up a Branded App subscription and begin the onboarding process with Kajabi.
**Branded Apps** are white-labeled mobile apps customized with your own branding, built and maintained for you by Kajabi. Instead of directing members to download the Kajabi app, they can download the app by searching for your name in the app store. Brand the app with your own logo and color, and increase customer engagement with on-demand push notifications.
## Add an app to the subscription plan
To get started creating a Branded App, you'll first need to add a Branded App to the Kajabi subscription plan. You can add a Branded App featuring Courses, Coaching Programs, Podcasts, and Kajabi Community for an additional \$199/month above the base plan cost.
**Note:** If you have multiple sites in the Kajabi account, the Branded App will be attached to the site you are on when you confirm the add-on. Make sure you go to the desired site for the app before confirming subscription changes.
**To add a Branded App to the plan:**
1. From the Dashboard, select **Branded Mobile App**.
2. Click **Get Started**:
3. On the next screen, you'll be able to interact with the App Builder. You can select a template to start with by clicking **Start with this design** or click **Start with blank**:
After working with the App Builder and saving progress, you'll be taken to a screen with 5 onboarding steps:
1. Design the app (the App Builder you were just interacting with).
2. App name & logo.
3. Developer accounts.
* Create an Apple developer account ([Learn how](/articles/mobile-apps/branded-app/how-to-create-an-apple-developer-account-and-join-the-apple-developer-program)).
* Create a Google developer account ([Learn how](/articles/mobile-apps/branded-app/how-to-create-a-google-developer-account)).
* Add Kajabi as an Admin to the Google Play Console and Google Cloud Console ([Learn how](/articles/mobile-apps/branded-app/how-to-add-kajabi-as-an-admin-to-your-google-play-console-and-project-owner-on-google-cloud-console)).
4. Start your plan.
5. Book a call.
**Note:** You must complete the first 4 steps, including starting the Branded Mobile App plan, in order to book a call.
Once you are ready to add the Branded Mobile App to the Kajabi subscription, click on **Start your plan**.
1. On the next screen, review the changes to your subscription and billing.
2. Click **Confirm** to approve the changes:
## Book the onboarding call
Once you have completed the first 4 onboarding steps, you will unlock the ability to book an onboarding call with Kajabi Support.
On this call, we will review accounts to make sure we have everything needed to start building apps directly in the developer accounts. Once apps are live, you will be notified by the team.
After the app is live, the Branded App tab in the Kajabi account will be updated. You can set up the welcome screen, add an onboarding carousel, customize the home screen, add custom links, and/or update app settings on the Branded App **Design** page.
## FAQs
### Will the app add-on subscription be prorated?
If you're on a monthly Kajabi base plan subscription, you'll be charged a prorated amount for the remaining time left in the current billing cycle when you sign up for the app add-on.
If you're on an annual Kajabi base plan, the app will be added on as a monthly subscription and the billing month for the app will begin right away (the base plan billing cycle will not be affected).
### What if I want to cancel the app add-on?
You can cancel the Branded App subscription at any time. From the Dashboard, go to **Settings**. Under **Account settings**, click **Subscription & Billing**, then the [Paid Extras](https://app.kajabi.com/admin/settings/subscriptions/paid_extras) page. If you have any questions or need assistance, please contact [bma.support@kajabi.com](mailto:bma.support@kajabi.com).
### Can I switch the Kajabi base plan if I have an app add-on?
You can still change the base plan in the Kajabi Billing Settings.
### What if I have an app add-on and I want to park the plan?
If you choose to park the Kajabi base plan, the Branded App add-on will be canceled. To park the Kajabi plan and cancel the Branded App add-on, please contact [bma.support@kajabi.com](mailto:bma.support@kajabi.com).
# Accept the closed testing invite and install the app
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-accept-the-closed-testing-invite-to-download-and-install-the-app
Accept a closed testing invite, then download and install a Branded App for testing.
After setting up closed track testing and sending out invites, testers can follow the steps below to accept the **closed testing invite**, download the app, and install it.
## Accept the internal test invite
Once you have received an invite to test an app, follow these steps to accept the invite:
1. First, make sure you are logged into the correct email on both the Play Store application and the email application (e.g., Gmail):
2. Click on the image in the top right corner and make sure you are selecting the account you want to accept the invite from:
3. Next, click on the invite email you received for the closed testing invite and click on **Become a Tester**:
**Note:**
If you see this screen, you are not logged into the correct Gmail account:
To switch the account, click on the square in the top right corner where the red arrow is pointing, then switch to the appropriate account.
## Install the internal test app
1. Once you have accepted the invite, click on the **Install the public version on Google Play** hyperlink text as shown in the screenshot above
**Note:**
If you load into a completely blank screen that does not do anything:
This is usually caused by being logged into the wrong Play Store email. Press back to exit out of the invite page, press the home button, then open up the Play Store from the app drawer. Once opened, change to the correct account.
2. If all goes well, you should be directed straight to the app download page. Install it, log in with your credentials, and you can test away.
# Add an onboarding carousel to a Branded App
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-add-an-onboarding-carousel-to-your-branded-app
Provide a premium welcome experience with a carousel of images the first time users log in.
An **onboarding carousel** displays a series of rotating images the first time a user logs into a Branded App. Use the carousel to increase first-time user engagement by previewing the app experience, highlighting benefits, and greeting users with custom imagery and messaging.
## What is an onboarding carousel?
An onboarding carousel is a series of images that rotate into view in a carousel motion the first time a user logs into the app. Choose up to 5 images to include in a Branded App onboarding carousel.
**Note:**
The onboarding carousel will only appear the first time a user logs into the app. When a user returns to the app, they'll no longer see the carousel.
## Add an onboarding carousel to the app
**Note:**
If you published your Branded App prior to January 30th, 2024 and haven't updated your app since that date, you'll need to update your app in order to add this feature. [Learn how to update your Branded App](/articles/mobile-apps/branded-app/how-to-update-your-branded-app-in-the-apple-app-store-and-google-play-store).
**Important:**
Your carousel images will automatically be pushed out to your live app as you upload them. Please confirm that you're ready for each image to appear in the live app prior to uploading it in the carousel editor.
To add an onboarding carousel to a Branded App:
1. Select **Branded Mobile App** from your Kajabi dashboard
* If you've fully completed your [app setup](/articles/mobile-apps/branded-app/how-do-i-get-started-creating-my-own-branded-app), you should see your app Design settings
2. Select the **Design** tab
3. Click **Customize**:
4. Open the **phone icon**:
5. Navigate to **System Screens**
6. Select **Onboarding**:
7. The carousel editor will open on the right side of the page
8. In the editor, click **+ Add image**:
9. Follow the prompts in the file uploader to upload your image
10. We recommend using images with a 9:16 aspect ratio for best results
## Update or delete carousel images
Want to remove or replace images in the onboarding carousel? Follow the steps below to update or delete images. Changes will automatically be pushed to the live app (i.e., you don't need to submit a new app build to the Apple App and Google Play stores).
### Delete an image
To remove an image from the onboarding carousel:
1. Select **Branded Mobile App** from your Kajabi dashboard
* If you've fully completed your [app setup](/articles/mobile-apps/branded-app/how-do-i-get-started-creating-my-own-branded-app), you should see your app Design settings
2. Select the **Design** tab
3. Click **Customize**:
4. Open the **phone icon**:
5. Navigate to **System Screens**
6. Select **Onboarding**:
7. Locate the image you want to remove and click the **x symbol** to the right of the image:
A modal popup will appear asking you to confirm the deletion.
8. Click **Delete** to remove the image from the carousel
**Tip:**
Want to remove the onboarding carousel from the app entirely? Delete all of the images in the onboarding carousel editor. Once all of the images are deleted, the carousel will be disabled in the app.
# Add app reviewer notes for Apple
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-add-app-reviewer-notes-for-apple
Provide clear notes for Apple's app reviewers to help a Branded App pass the review process.
When submitting a Branded App to the Apple App Store, providing clear **reviewer notes** helps Apple's team understand the app's functionality. This increases the likelihood of a smooth approval process.
## Add reviewer notes
To add reviewer notes:
1. Inside the app, scroll down to the **App Review Information** section
2. Add the text below the following image to the **Notes** input field:
Copy and paste the following text into the **Notes** box. If the line breaks are stripped out while pasting, add them back in for readability.
**Important:**
Replace the sample text inside both sets of \< > symbols with your own website information.
\---start of text---
**BACKGROUND AUDIO**
**We have declared support for audio in the UIBackgroundModes key because it allows a user playing a video to lock their device and to continue listening to the audio content of the video in the background.**
**You can locate this usage of background audio support by clicking through the app until you reach a thumbnail towards the top. Click on that thumbnail to load the video player controls and hit play. Then lock the device and audio from the video will continue to play in the background.**
**SIGN-UP vs SIGN-IN**
**This app offers sign in if a user has already previously been gained access to content. The signup option will display if and only if we are offering content for free for new signups. Your account has been granted access to content already.**
\---end of text---
Don't forget to replace the sample text inside both sets of arrow symbols with your own website information.
Return to the next step of the intake process.
# Add custom links to a Branded App
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-add-custom-links-to-your-branded-app
Include a floating action button with a menu of custom page links in a Branded App.
The **floating action button** adds a round, clickable shortcut to the lower right corner of Branded App home, library, and custom screens. Tapping it opens a menu of up to five custom page links, giving members quick access to important pages, offers, or external content.
## What is the floating action button?
The floating action button is a round clickable button in the lower right corner of a Branded App home, library, and custom screens. The button uses the brand color selected in app settings:
When a user clicks the button, a menu of up to five custom page links appears. For example, you can choose to link out to product offers or upsells, a blog, a podcast, or social media sites:
## Add a floating action button with custom links to the app
**Note:**
If you published your Branded App prior to December 20th, 2023 for iOS or January 12th, 2024 for Android and haven't updated your app since those dates, you'll need to update your app in order to add this feature. [Learn how to update your Branded App](/articles/mobile-apps/branded-app/how-to-update-your-branded-app-in-the-apple-app-store-and-google-play-store).
To add a floating action button with a menu of custom page links to a Branded App:
1. Select **Branded Mobile App** from your Kajabi dashboard
* If you've fully completed your [app setup](/articles/mobile-apps/branded-app/how-do-i-get-started-creating-my-own-branded-app), you should see your app Design settings
2. Select the **Design** tab
3. Click **Customize**:
4. Open the **phone icon**:
5. Toggle on **Custom Links**:
6. Then, click **+ New link**:
A link settings menu will appear on the right side of the page:
7. Enter a **Title** for the link
8. Next, click the URL dropdown menu and select an **icon** for the link
9. Enter the **URL address** for the link
10. Click **Save** to add the link to the floating action button in the app
## Update or delete button links
### Update a link
To update a page link in the floating action button menu:
1. Select **Branded Mobile App** from your Kajabi dashboard
* If you've fully completed your [app setup](/articles/mobile-apps/branded-app/how-do-i-get-started-creating-my-own-branded-app), you should see your app Design settings
2. Select the **Design** tab
3. Click **Customize**
4. Open the **phone icon**:
5. Navigate to **Custom Links**
6. Select the link you wish to update
A link settings popup menu will appear.
7. Edit the link **Title**, **icon** and/or **URL address** as desired
8. Click **Save** to apply changes to the floating action button in the app:
### Delete a link
To delete a page link from the floating action button menu:
1. Select **Branded Mobile App** from your Kajabi dashboard
* If you've fully completed your [app setup](/articles/mobile-apps/branded-app/how-do-i-get-started-creating-my-own-branded-app), you should see your app Design settings
2. Select the **Design** tab
3. Click **Customize**
4. Open the **phone icon**:
5. Navigate to **Custom Links**
6. Click the **X icon** next to the link you wish to delete:
A confirmation popup will appear.
7. Click **Delete** to remove the link from the floating action button in the app
**Tip:**
Want to remove the floating action button from the app entirely? Delete all of the links from the button menu in the Custom Links settings. Once the link menu is empty, the button will no longer appear in the app.
# Add external purchase links to a Branded App
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-add-external-purchase-links-to-your-branded-app
Place web-based offer links in buttons, images, galleries, custom links, and push notifications.
**External purchase links** let members buy directly from web-based offer pages without leaving the app. Place these links in buttons, images, galleries, custom links, and push notifications to create a friction-free purchasing experience.
**Note:**
This feature is currently only available to US-based Heroes.
## Getting started
Before linking offers throughout a Branded Mobile App, make sure you have the following completed:
1. Have the **URL** of the offer page you want to promote
2. Select **Branded Mobile App** from your Kajabi dashboard
* If you've fully completed your [app setup](/articles/mobile-apps/branded-app/how-do-i-get-started-creating-my-own-branded-app), you should see your app Design settings
3. Click on the **Design** tab
**Tip:**
Use Kajabi Payments and enable Apple Pay/Google Pay in order to increase checkout conversion.
Now it's time to pick how to incorporate offer links in the Branded Mobile App.
## Link a button widget
From the **Design** tab under **Branded Mobile App**, click **Customize**:
1. Click **Screens** to select an existing screen or create a new one:
2. Once you are on the screen you'd like to edit, navigate to the **Widgets** editor and drag a **Button** widget onto the screen:
3. In the right-hand settings panel, paste the **offer URL** into the **Link** field
4. Set **Open link** to **In-App Browser** for a seamless experience
5. Click **Save**
Learn to [customize widgets on Branded App Screens](/articles/mobile-apps/branded-app/how-to-customize-widgets-on-your-branded-app-screens) for more details.
## Link an image gallery item
1. In the **Widgets** editor, drag a **Gallery** widget onto the screen:
2. Upload your images
3. Select an image, choose **Action → Web address**, and paste the **offer URL**
4. Repeat for any other images that should link out
5. Click **Save** and **Publish** to push the change live
## Link a single image widget
1. In the **Widgets** editor, drag an **Image** widget onto the screen:
2. Upload a graphic, product shot, or banner for the offer
3. In **Action → Web address**, paste the **offer URL**
4. Click **Save** and **Publish** to push the change live
**Tip:**
A large hero image with a "Tap to buy" caption works well here.
## Add a custom link in the menu
1. In the **Screens** editor, scroll down until you see **Custom Links**
2. Click **+ New link**:
3. Enter a **Title** members will recognize (e.g., *Course Offer*)
4. Paste the **offer URL**
5. Click **Save** and **Publish** to push the change live
Learn to [add custom links to a Branded App](/articles/mobile-apps/branded-app/how-to-add-custom-links-to-your-branded-app) for more details.
## Promote the link with a push notification
1. From your Kajabi dashboard, select **Marketing**
2. Then, select **Push notifications**
3. Click **+ New notification** at the top right of the page:
4. Choose to send the notification to **Everyone who allows notifications** or to a **Custom segment**
5. Enter a **Title** and write a concise **Message** (e.g., *"Limited-time bundle—tap to unlock"*)
6. Choose **Web address** under **Link to** and paste the **offer URL**
7. Schedule or send immediately
Learn to [create Branded App Push Notifications](/articles/mobile-apps/branded-app/how-to-create-branded-app-push-notifications) for more details.
## Best practices
* **Keep buyers inside the app.** Use the in-app browser unless your checkout requires a full browser
* **Use clear calls to action.** "Buy Now," "Unlock Discount," or "Start My Trial" convert better than generic text
* **Track performance.** Add UTM parameters to each URL to see which placement drives the most sales
# Add Kajabi as an admin to Google Play Console and Google Cloud Console
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-add-kajabi-as-an-admin-to-your-google-play-console-and-project-owner-on-google-cloud-console
Grant Kajabi admin access to Google Play Console and project owner access on Google Cloud Console for a Branded Mobile App build.
For Kajabi to build an Android Branded App, you need to grant **admin access** to both Google Play Console and Google Cloud Console. The steps below cover inviting Kajabi to both consoles, creating a cloud project, and enabling the required APIs.
**Note:**
If you are logged into Google with more than one Gmail account where one of them is not the account owner email listed on the developer account, you may experience errors. We recommend logging in through an incognito or private window to ensure that you are logged into a single email.
## Add Kajabi as a Google Play account admin
Grant the Kajabi team admin access to Google Play Console to allow Kajabi to access and create the Android App.
1. Log into your [Google Play Console](https://play.google.com/console) and make sure that you are not clicked into a specific app.
2. Click **Users and Permissions** in the sidebar menu.
3. Then, click **Invite New Users**:
4. In the email address field, input: **[Creative.Coder@oc-corpeng.com](mailto:Creative.Coder@oc-corpeng.com)**
5. Then, select the **Admin** checkbox under **Account permissions**.
6. Click **Invite User**:
## Add Kajabi as a Google Cloud account admin
**Note:**
If you do not have a Google account currently, please follow [these instructions](https://support.google.com/accounts/answer/27441?hl=en) to create one.
Grant the Kajabi team Owner access to Google Cloud Console to allow Kajabi access and create the API key for the Android App(s).
1. Log into the [Google Cloud Console](https://cloud.google.com/console/).
2. Ensure that you are logged into the correct account as the account owner:
3. Then, agree to the terms and conditions:
4. In the top left corner, click the dropdown menu to **Select a Project**:
5. When the next dialog box appears, select **New Project**:
6. Enter the Project name and click **Create**:
**Note:**
Be sure to use the App Name as the Project Name.
The creation process will take a moment to complete.
7. After the project has been created, click the **Select Project** link in the notification window located at the top-right section of the window:
## Locate API credentials
**Important:**
If your organization was created on or after May 3rd, 2023, you will receive the error "IAM policy update failed" when trying to invite Kajabi to Google Cloud. If you are encountering this issue, [click here to follow these additional steps first](/articles/mobile-apps/branded-app/additional-steps-to-change-google-cloud-iap-policy).
1. On the left-side panel, click **IAM & Admin**:
2. Click **Grant Access**:
3. There will be a pop-up menu on the left side panel under **New principals**. Add the following email address: [Creative.Coder@oc-corpeng.com](mailto:Creative.Coder@oc-corpeng.com)
4. Navigate to **Step 2: Assign Role**.
5. Then, click **Select a role**.
6. Select **Basic** as the access type and **Owner** as the role type.
7. Click **Save**:
## Enable the API
### Enable the Google Publisher API
1. Navigate to the [Google Publisher API Settings](https://console.cloud.google.com/apis/library/androidpublisher.googleapis.com).
2. Ensure that you are logged into the correct account as the account owner:
3. Then, click **Enable**:
A progress spinner will appear after a moment or so, then you will be redirected to a page. At this point the API has been properly enabled.
One additional API that needs to be enabled is Firebase.
### Enable Firebase
1. Navigate to the [Firebase Management API - Google Cloud Console](https://console.cloud.google.com/apis/library/firebase.googleapis.com).
2. Ensure that you are logged into the correct account as the account owner:
3. Then, click **Enable**:
After completing these steps, you do not need to contact Kajabi unless you are experiencing issues. We will email you with a confirmation that we have successfully been invited to the account within 1-2 business days.
# Complete the iOS app transfer process
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-complete-the-ios-app-transfer-process
Transfer an iOS app into an Apple Developer account and update Kajabi settings.
If an iOS app was initially built under a different Apple Developer account, you need to complete a **transfer process** to move it into your own account. The steps below cover preparing account info, completing the transfer in App Store Connect, and updating Kajabi settings.
## Prepare app account info
You'll need to submit the following account information to complete the app transfer process:
* Full name
* Email address
* Phone number
* Support URL
* Marketing URL
* Privacy policy
Make sure the email address and privacy policy URL you submit match those listed in the Branded App branding settings in Kajabi.
**To open the Branded App branding settings:**
1. Log into your [Kajabi account](https://app.kajabi.com/login).
2. Select **Settings** at the lower left corner of the Kajabi dashboard.
3. Then, select **Branded Mobile App Settings**:
4. Navigate to Brand Assets and click **Revisit Branding**:
5. Select **Terms & Privacy**:
## Complete the transfer in App Store Connect
Once you have your account information ready, complete the app transfer process in App Store Connect.
**To transfer the app:**
1. Log into your [App Store Connect](https://appstoreconnect.apple.com/) account.
2. You should see a yellow notification banner at the top of the page stating that you have an app transfer request pending acceptance.
3. Click on **Agreements, Tax, and Banking**:
4. Under **App Transfers**, verify that you see the pending app transfer request.
5. In the **Action** column at the far right of the App Transfer record, click **Review**:
6. Scroll down the page to **New App Metadata**.
7. Enter your metadata information. Be sure to include https\:// at the front of each URL:
* Support URL
* Marketing URL
* Privacy Policy URL
8. Next, enter your contact information:
* First name
* Last name
* Phone number
* Email
**To verify that the app transfer has completed successfully:**
1. Click the **App Store Connect** logo:
2. Then, click **Apps**:
3. If you don't immediately see the app icon for the Branded App on the **Apps** page, keep refreshing the browser page until you see the app icon.
## Update Branded App info in Kajabi
After transferring the app into your own Apple Developer account, you'll need to update a few pieces of information in Kajabi Branded App settings.
**Important:**
If you don't update the Branded App info in Kajabi after transferring the app, the app cannot be updated and push notifications will stop working.
[Click here for the final steps to complete the app transfer process](/articles/mobile-apps/branded-app/what-to-update-in-kajabi-for-your-ios-app).
# Create a Branded Mobile App icon
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-create-a-branded-mobile-app-icon
Design an effective app icon that meets Apple App Store and Google Play Store requirements.
The **app icon** is the graphic image that appears alongside the app name in the Apple App Store, the Google Play Store, and on users' device home screens. This page covers what makes an effective app icon and the technical specifications needed.
## What makes a good mobile app icon?
While an app icon may look similar to a business logo, the icon and logo are two different assets with distinct requirements.
**Effective mobile app icons:**
* Are designed as a full bleed square-shaped image.
* Have a simple, uncluttered design and bold color(s).
* Are easily recognizable as your unique brand.
* Avoid using text or photo elements.
* Don't contain any transparent pixels.
* Are high-resolution and scale down well to smaller sizes.
* Don't use copyrighted material owned by others.
* Are optimized for use with both the [iOS](https://developer.apple.com/design/human-interface-guidelines/app-icons) and [Android](https://developer.android.com/studio/write/create-app-icons) platforms.
## Platform considerations
An icon measuring 1024 x 1024 pixels is required to get started on the Apple App Store, and a 512 x 512 pixel icon must be submitted to the Google Play store. These large icons will be scaled down as needed to fit each device screen.
When you create the app with Kajabi, you'll need to upload a 1024 x 1024 pixel icon image file in either PNG or JPG format. The Kajabi team will handle resizing the image file to additional sizes.
Apple and Android both provide icon templates and resources for designers:
[Apple icon design resources](https://developer.apple.com/design/resources/).
[Android icon design resources](https://developer.android.com/studio/write/create-app-icons).
## Specifications
**Requirements for iOS:**
* JPG or PNG
* 1024 x 1024px
* Must not have transparent pixels
**Requirements for Android:**
* JPG or PNG
* 512 x 512px
Learn to [update the app logo for iOS and/or Android](/articles/mobile-apps/branded-app/how-to-update-your-branded-app-brand-assets-or-terms-privacy-links) for more details.
# Create a Google API key for a Branded Mobile App
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-create-a-google-api-key-for-the-branded-mobile-app-intake-process
Generate an API key to connect a Branded App to Google Play Console.
An **API key** is required to connect a Branded App to Google Play Console. The steps below cover creating a Google Cloud project, generating API credentials, and enabling the necessary APIs.
## What is an API key?
API stands for Application Programming Interface. APIs provide the means for different software applications to communicate with each other.
An API key is a unique string of letters and numbers used to identify a software app when it tries to communicate with another app. When a Branded App reaches out to the Google Play Console to exchange data, Google uses the API key to confirm identity. Without an API key, Google won't be able to recognize the app.
## Create the Google API key
**Tip:**
You must be logged into a single Gmail / Google account to successfully complete all of the following steps. We recommend completing the steps in an incognito browser window to ensure you aren't logged into more than one Google account.
### Create a Google Cloud project
1. Log into the [Google Cloud Console](https://console.cloud.google.com/) (you must be logged in as the account owner) and agree to the terms and conditions:
2. In the top left corner, click on the dropdown menu to **Select a Project**:
3. When the next dialog box appears, select **New Project** in the top right corner:
4. Enter the Project name and click **Create**:
5. It will take a moment to complete. Once it does, click the **Select Project** link in the notification window at the top right:
### Locate API credentials
1. Click on **APIs & Services** in the left menu.
2. Then, select **Credentials**:
3. When the next page loads, if it's not already selected, click on **Credentials** again:
4. Locate the project dropdown menu at the top left next to **Google Cloud** and make sure the project is selected.
(In the screenshot below, the project name displays as *My PGMacDesign Project.* Your project name will be different.)
### Create API credentials
1. With the project selected, make sure you're on the **Credentials** tab on the left.
2. Click **+ Create Credentials**.
3. Select **Service account**:
4. Navigate to "Step 1: Service account details".
5. Enter a **Service account name** of your choice (for example, your business name).
6. The **Service account ID** will be created automatically.
7. Enter a short **Service account description** (for example, "Service account for my Android app").
8. Click **Create and Continue**:
9. Navigate to "Step 2: Grant this service account access to project".
10. Click **Select a role.**
11. Select **Basic** as the access type and **Owner** as the role type.
12. Click **Continue**:
13. Skip "Step 3: Grant users access to this service account".
Leave this section blank.
14. Click **Done** to continue:
### Create an API key
You should now see a Service Account listed on the Credentials page under **Service Accounts**:
1. First, copy the **Service Account Email Address** and set it aside for now as you'll be using it in a later step.
2. Then click on the **Service Account Email Address** to open the account.
3. Select the **Keys** tab.
4. Click **Add Key**.
5. Select **Create new key:**
6. When prompted to select the key type for download, select **JSON**.
You must select the JSON option for this step.
7. Click **Create**:
The JSON file will download to your computer locally (you'll typically find it in your Downloads folder). This is the file you'll need to upload to Kajabi during the intake process.
### Enable the API
Next, you'll need to enable the API within the Google Cloud Console.
**To enable the API:**
1. Click this link: [https://console.cloud.google.com/apis/library/androidpublisher.googleapis.com](https://console.cloud.google.com/apis/library/androidpublisher.googleapis.com)
2. Then, click the blue **ENABLE** button:
A progress spinner will appear for a minute or so, then you'll be redirected to a page. At this point the API has been properly enabled.
One additional API that needs to be enabled is Firebase.
3. Go here: [Firebase Management API - Google Cloud Console](https://console.cloud.google.com/apis/library/firebase.googleapis.com)
4. Then, click **Enable**:
The page should automatically redirect you. To confirm it was successfully enabled, click on the [same link](https://console.cloud.google.com/apis/library/firebase.googleapis.com) and the screen should now look like this:
Confirm that you see **API Enabled** on the right side.
### Add an authorized user
1. Navigate to the [Google Play Console](https://play.google.com/console) and make sure you're not clicked into a specific app.
2. Click on **Users and permissions** in the menu at the left of the screen.
3. Then, click the blue **Invite new users** button:
4. Paste in the **Service Account Email Address** you just copied in the previous step.
5. Then select the **Admin** checkbox under **Account permissions**.
6. Click **Invite User**:
# Create a Google Developer account
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-create-a-google-developer-account
Set up a Google Developer account in Google Play Console to publish a Branded App on Android.
To publish a Branded App on Android, you need a **Google Developer account** in the Google Play Console. A \$25 registration fee is required to create an account, so have your credit card details handy.
**Tip:**
We require you to create an organizational developer account for Google to speed up the Android app build process. With an organizational account, we can generally get the Android app up in 6-8 weeks, if not sooner, but with an individual account, it can be upwards of 12-16 weeks given Google's strict enforcement of the internal testing requirement.
## Set up the account
**To create the account:**
1. Navigate to: [https://play.google.com/apps/publish/signup](https://play.google.com/apps/publish/signup)
2. Sign into your Google account.
(Or create a Google account if you don't already have one).
3. If prompted, turn on two-step verification for the account (required). If you already have two-step verification set up, move on to the next step.
4. For Kajabi to assist with the app build, we require you to create an account for an organization.
5. Click **Get started**:
6. Review the information on the next screen and click **Continue**:
7. Enter a publicly visible **Developer name**. This can be any name you want. For example, "\[My Business Name] Developer Account."
8. Click **Next**:
9. Next, click **Create or select payments profile** to link a Google payments profile to the account:
After creating a Google Developer Account, you must verify your Google Play Console. [Learn more](/articles/mobile-apps/branded-app/additional-verification-for-your-google-play-console).
**Note:**
Before Google approves your app to be published, Google requires closed testing during the build process with at least 20 of your customers. [Learn more](/articles/mobile-apps/branded-app/how-to-publish-your-branded-app-to-the-closed-testing-track-in-the-google-play-store).
# Create an Apple Developer account and join the Apple Developer Program
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-create-an-apple-developer-account-and-join-the-apple-developer-program
Set up an Apple Developer account, enroll in the Apple Developer Program, and add Kajabi as an admin to publish a Branded App on iOS.
To publish a Branded App on iOS, you need an **Apple Developer account** and membership in the Apple Developer Program. The steps below cover account creation, program enrollment, and adding Kajabi as an admin.
## Create an Apple Developer account
First, create an Apple Developer account.
**To create the account:**
1. Navigate to: [https://developer.apple.com](https://developer.apple.com)
2. Select **Account** from the top navigation menu:
3. Enter your **Apple ID** and click the arrow to submit:
(Or, if you don't yet have an Apple ID, click **Create yours now** and complete the form to create an ID. After creating your ID you'll automatically be directed to the Apple Developer Agreement.)
4. Submit your two-factor authentication code if/when prompted.
5. Review the Apple Developer Agreement.
6. Check the **checkbox** confirming that you agree to the terms and conditions.
7. Click **Submit**:
The account has now been created. On the next screen you'll see an option to join the Apple Developer Program.
## Join the Apple Developer Program
Next, sign up for the Apple Developer Program to access the resources you'll need to create the iOS app. The Program has a membership fee of \$99/year, so have your credit card details handy.
**To sign up**:
1. Locate **Join the Apple Developer Program** on your [Apple Developer Account](https://developer.apple.com/account) page and click the **Enroll today** button (if you just created the Developer Account, you should already be on this page):
2. Click **Continue enrollment on the web** (Or, if you prefer, you can download the Apple Developer app and enroll via the app instead. In this guide, we'll walk you through enrolling via the web.):
3. Complete the personal information form by inputting your first and last name, phone number, and address as instructed.
4. Click **Continue**:
5. Click into the dropdown menu and select your **entity type**. For Kajabi to assist with the app build, we require you to create an account for an organization (You'll need to have or apply for a [DUNS number](/articles/mobile-apps/branded-app/how-to-set-up-your-d-u-n-s-number-for-your-branded-app).)
Within the next 24 hours you should also receive a second email asking you to complete an identity verification check. Please complete the ID verification as soon as possible.
**Note:**
You may be asked to submit a different type of documentation, especially if you registered as an entity type other than "Individual / Sole Proprietor". Please follow the instructions sent to you by Apple and submit the documents they require in your case.
**To complete the ID verification:**
1. Take a picture of your government issued photo ID (or whichever document(s) Apple requested in your case) and save it to your device.
2. Open the ID confirmation email you received.
3. Click **Upload ID**:
4. The Apple Developer sign-in page will open. Sign into your account.
You'll be directed to a document upload form.
5. Click **Browse** and upload your document(s).
6. Click **Continue**:
7. Click **Submit** on the popup modal to confirm the ID submission:
You'll see a confirmation message that your documents are being processed.
You'll receive an email notification when your membership has been activated.
If you don't receive your activation notice and access to App Store Connect within five business days, please [contact Apple Support](https://developer.apple.com/contact/submit/).
## Add Kajabi as an account admin
Once the Branded App is built, you'll receive an email notification from Kajabi letting you know it's time to submit the app for review and publication.
First, grant the Kajabi team admin access to the App Store Connect account so we can help ensure that the app submission goes as smoothly as possible.
**To give the Kajabi team access to the account:**
1. Click this link to open the **Users and Access** page in App Store Connect: [https://appstoreconnect.apple.com/access/users](https://appstoreconnect.apple.com/access/users)
(If you're not logged into the account, you'll be prompted to log in).
2. Then, click the blue **+** sign to add a user:
A popup modal will appear with a New User input form.
3. In the **First Name** field, input: **Vinay**
4. In the **Last Name** field, input: **Mysoor**
5. In the **Email** field, input: **[bma@kajabi.com](mailto:bma@kajabi.com)**
6. Under **Roles**, select the checkbox next to **Admin**
7. Click the **Invite** button:
Repeat the process to add **[Agile.Server@oc-corpeng.com](mailto:Agile.Server@oc-corpeng.com)** as another admin user to the account.
You can now continue with the Branded App intake process.
# Create App Offers for a Branded App
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-create-app-offers-for-your-branded-app
Enable Branded App members to purchase courses through in-app purchases.
**App Offers** enable Branded App members to make in-app purchases directly from their mobile devices. This page covers creating, editing, and managing App Offers, plus best practices for maximizing in-app sales.
## What is an App Offer?
An App Offer is the mechanism through which Branded App members can make in-app purchases. App Offers are different from Offers created for products on a Kajabi website and must be created separately from [website Offers](../../sales/offers/offers-overview).
### How will members experience App Offers?
App Offers will be featured on the app [home screen](/articles/mobile-apps/branded-app/how-to-create-custom-screens-for-your-branded-mobile-app). When a member clicks to open an App Offer, they'll see a custom title, description, and price information. They can then click the **Pay** button to purchase the course(s) included in the offer:
After clicking their device side button to confirm the purchase, the course(s) will appear in the member's course library:
## Create an App Offer
**Note:**
Before offering in-app purchases, you'll need to set up your banking and tax information with [Apple](/articles/mobile-apps/branded-app/how-to-set-up-your-banking-and-tax-info-with-apple) and [Google](/articles/mobile-apps/branded-app/how-to-set-up-a-merchant-account-for-google-in-app-purchases).
**To create an App Offer:**
1. Select **Branded Mobile App** from your Kajabi dashboard.
If you've fully completed your [app setup](/articles/mobile-apps/branded-app/how-do-i-get-started-creating-my-own-branded-app), you should see the App Offers subpage in your app navigation menu.
2. Select **App Offers**.
3. If this is your first App Offer, click **Get started**.
If you've created an offer before, click **+ New App Offer** at the top right:
4. Next, enter an **Offer Title** to display on the offer.
5. Use the **Product(s) in this app offer** dropdown menu to select one or more products to include with the App Offer.
6. Only course and community products are available to select at this time.
7. Click **Save and continue**:
8. Choose to create either a **Free** or **Paid** offer.
9. Use the toggles to choose your app **platform(s)**.
10. If you create a Paid offer, input your **Payment frequency** and **Currency** settings.
You can select **one-time payment** or **subscription** under frequency.
11. Enter the **Price** for the offer.
**Note:**
If this is your first subscription iOS App Offer or first iOS App Offer in general, make sure to follow [these steps](/articles/mobile-apps/branded-app/how-to-create-your-first-paid-apple-app-offer-for-approval) to submit to Apple.
If there are additional steps identified when trying to submit your offers to the respective app stores, you will see a window appear with the necessary information to finish the in-app offer submission. If the system encounters an error, you may be asked to start over and resubmit.
### Add courses on the Branded App home screen
[Customize the Branded App home screen](/articles/mobile-apps/branded-app/how-to-create-custom-screens-for-your-branded-mobile-app) to display the courses available with the in-app offer.
Wait 10-15 minutes for Kajabi to automatically finish up the app build.
### What if this is a first paid iOS App Offer?
If this is your first paid App Offer for the iOS platform, you'll need to complete a one-time extra step in App Store Connect to [submit the first paid Apple App Offer for approval](/articles/mobile-apps/branded-app/how-to-create-your-first-paid-apple-app-offer-for-approval).
## Edit or remove an App Offer
Ready to change the details for an existing offer, or remove it entirely? No problem.
**To open an existing App Offer:**
1. Select **Branded Mobile App** from your Kajabi dashboard.
2. Select **App Offers**.
3. Then, click the **Title** of the offer you want to update:
### Edit App Offer details
On the **Details** page, update the offer Title, Description, Products, and/or thumbnail image as desired. Click **Save** to apply changes:
### Deactivate an App Offer
Deactivating an App Offer will remove it from the in-app purchase offers listed on the Branded App home screen. Members who've already purchased the offer will retain access to the attached course(s), but members who haven't purchased the offer will no longer see it.
In Kajabi Branded Mobile App settings, deactivated offers will appear under the **Deactivated** tab on the App Offers page:
To deactivate an offer, click to open the offer for editing, scroll to the bottom of the **Details** page and click **Deactivate App Offer**:
### Delete an App Offer
To delete an App Offer from Kajabi Branded Mobile App settings entirely:
1. Navigate to **App Offers**.
2. Click the three dot menu to the right of the offer you wish to delete.
3. Select **Delete**:
## App Offer best practices
Here are a few tips for optimizing App Offers to encourage in-app purchases:
### Leverage the Branded App signup tag
When someone submits the app Sign Up form on the [welcome screen](/articles/mobile-apps/branded-app/how-to-set-up-a-branded-app-welcome-screen-where-new-users-can-create-an-account), the member will automatically be assigned a "Branded App signup" tag on their contact record in Kajabi. Use this tag to easily segment your mobile audience for App Offer promotions.
### Set up push notifications
Create [push notifications](/articles/mobile-apps/branded-app/how-to-create-branded-app-push-notifications) for app members highlighting App Offers. Segment the notifications to send them specifically to members, or strategically schedule them around course launch dates.
### Manage refunds
Refunds for purchases made in-app are different from refunds issued for purchases made through the website's checkout on Kajabi. In order for customers to request a refund for a purchase made in-app, they will need to go through Google or Apple.
[Learn to manage refunds for purchases made in a Branded App](/articles/mobile-apps/branded-app/managing-refunds-for-in-app-purchases).
### Utilize automations
Automations can assist with admin processes, such as automatically subscribing a customer to a welcome email sequence when they purchase an in app offer.
[Learn more about setting up automations in Kajabi.](../../marketing/automations/automations-overview)
**Important:**
In-App Purchase refunds are handled differently from traditional Kajabi offer refunds because of some nuanced rules with Apple and Google. **Specifically, when a refund occurs, the default behavior is that access to the content is immediately revoked.** If you would like to re-grant this offer to your customer, you are absolutely welcome to do so, but keep in mind that refunds can trigger without your knowledge by Google or Apple due to them being the arbiter of any and all refunds or disputes.
**Tip:**
Have questions about selling products on Apple and Google? See the [Selling FAQs](/articles/mobile-apps/branded-app/kajabi-branded-app-faqs).
# Create Branded App push notifications
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-create-branded-app-push-notifications
Send targeted push notifications to Branded App members to drive engagement.
**Push notifications** are messages that pop up on app users' device screens, linking to a specific app page or web URL when tapped. Use them to send timely updates, share announcements, and encourage engagement with courses directly on member devices.
## What are push notifications?
Push notifications are messages that pop up on app users' device screens. If a user clicks on the notification, it will open a specific app page or web URL:
Sending app users push notifications is a great way to stay top-of-mind, share important announcements, advertise what's available in a Course, and more.
When you create a Branded App with Kajabi, you can send customers push notifications from the app whenever you like. Choose which segment of app users to notify, specify a date and time to send the notification, and select which page will open when someone clicks.
**Note:**
Community Push Notifications are available. Check out [this article](../../products/community/how-to-customize-your-community-notifications) to learn how to set up community push notifications.
## Push notification best practices
Here are some best practices to follow when sending push notifications to Course customers.
### Push notification length
The number of text characters visible in a push notification varies by device. That said, many readers won't hang around to read the max character count.
In most cases, push notification content should be very short and to the point (i.e. one concise sentence).
Example: "Just dropped: Course bonus material"
### Push notification content
The notification message should be relevant to all recipients and make clear what action they should take.
**Use push notifications to share this type of content:**
* Advertising the release of a Course Lesson
* Announcing an update to existing Course content
* Reminding about an upcoming Course activity or event
* Sharing a relevant and interesting fact or action tip
* Asking a thoughtful question related to a Course topic
**Avoid using push notifications for:**
* Sending messages that may be irrelevant for some customers
* Advertising something unrelated to the Course
* Spammy-sounding promotions
### Push notification timing
Sending push notifications is a great way to encourage customers to stay engaged with a Course. But you also don't want to overwhelm people with too many notifications or they might turn them off.
How often you should send notifications depends on your target audience and the reason. If you plan to send notifications at regular intervals, start with a few notifications per week, ask for customer feedback, and adjust as needed.
Also consider what time of day you send notifications. It's generally best to avoid sending anything out during nighttime hours for the majority of your customer base.
## Create a push notification
To create a push notification for Branded App members:
1. From your Kajabi dashboard, select **Marketing**.
2. Then, select **Push notifications**.
3. Click **+ New notification** at the top right of the page:
4. Choose to send the notification to **Everyone who allows notifications** or to a **Custom segment**.
5. If you choose to notify a custom segment of members, use the **Category**, **Conditional**, and **Value** dropdown menus to create one or more filters specifying who will receive the notification:
6. Enter a notification **Title** up to 28 characters in length.
7. Then, enter **Message** content up to 150 characters in length:
**Tip:**
Want to add emojis to push notifications to make them more eye-catching? Open the emoji picker on Mac using control + command + spacebar, or open the emoji picker on PC using Windows key + period key. Select the emoji and close the picker to add it to the notification.
8. Next, select which page to open when someone clicks on the notification: the product **Library** page, a **Course** page, or a custom **Web Address**.
9. If you choose Course or Web Address, a second input field will appear allowing you to specify the desired Course or URL:
10. Finally, choose to either **Send now** or **Schedule a time** to send the notification.
(Or, click **Save draft** at the top right of the page to return and finish later).
11. To send the notification now, click **Send Now** at the top right of the page.
12. To schedule the notification for a future time:
* Select **Schedule a time**.
* Click into the date/time field, select the desired send date and time from the calendar, and click **Apply**.
* Click **Schedule** at the top right of the page:
**Note:**
When a push notification is sent, it can take up to 10 minutes before it reaches devices as it needs to route through both Apple and Google's servers.
## View and edit push notifications
Push notifications you've drafted, scheduled, or sent will appear on the Push notifications page (located under the Marketing tab). You can also view how many app users the notification was sent to, and how many times it was opened:
Use the **Filter by status** and **Search push notifications** fields to locate and view specific notifications:
Notification statuses available in the filter menu include:
* Draft
* Scheduled
* Sent
* Sending
* Failed
Click the `…` icon to the far right of a notification to open the Editing Options menu:
In the Editing Options, choose to:
* Edit, duplicate, or delete a notification in Draft status.
* Duplicate, unschedule, or delete a Scheduled notification.
* Duplicate or delete a Sent notification.
(Deleting a notification that has already been sent will only delete the notification from the Push notifications page, it will not remove the notification from app users' devices.)
## FAQs
### Can I see which members have push notifications enabled?
No. Whether push notifications are turned on is a device-level setting each member controls in their phone's operating system settings. Kajabi has no visibility into it, and Apple and Google do not share that data. When you send a notification, you can target **Everyone who allows notifications**, but you cannot view or export a list of exactly who that includes.
### Can members turn their push notifications on or off?
Yes. Members manage push notifications in their device settings at any time. For details, see [Manage push notifications in the Kajabi Mobile App](/articles/mobile-apps/kajabi-app/can-users-enable-and-disable-push-notifications-from-the-kajabi-mobile-app).
# Create custom screens for a Branded Mobile App
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-create-custom-screens-for-your-branded-mobile-app
Customize app screens with widgets to enhance navigation, showcase products, and engage members.
**Custom screens** let you shape every page of a Branded App — from a home dashboard to a product showcase. Customize screens with widgets to enhance navigation, highlight products, and engage members with tailored content.
## What screens can I create?
In a Branded App, screens function as individual pages that display content, guide users, or provide interactive features. By creating and customizing screens, you can enhance navigation, showcase products, and offer unique experiences tailored to your audience.
Here are just a few ideas to get you started:
* **Home Screen**: Use the app home screen to welcome members and visitors, highlight and recommend courses, provide valuable information about your business, and more.
* **Custom Product Offering Pages**: Showcase Products and Services in a custom page.
* **Introductions/About You**: Create a personalized custom page that highlights who you are and your mission.
* **Additional Resources**: Provide information and resources to assist customers as they engage with your business.
By leveraging custom screens, you can tailor the app experience to better serve your audience, improve engagement, and enhance usability.
## Add a screen
1. Select **Branded Mobile App** from your Kajabi dashboard.
You should see your app Design settings if you've fully completed your [app setup](/articles/mobile-apps/branded-app/how-do-i-get-started-creating-my-own-branded-app).
2. Select the **Design** tab.
3. Click **Customize**.
4. Click **Screens** to view existing screens and create ones.
5. Select **+ New screen**.
6. Enter the title of the screen.
7. Select the icon to display for the screen.
8. Then, click **Save & Publish**:
The newly created screen will initially display an **Add Widgets** button to get you started with building out the custom screen.
## Create "other" screens
In addition to main screens, you can create "other" screens that serve as hidden or future-use pages within the Branded App. These screens can be used in a variety of ways, such as building out content that you plan to release later or creating dedicated spaces that aren't directly accessible through the app's main navigation.
To create an "other" screen, follow the same process as creating a screen, then move the screen under the **Other screens** section:
Here's how you can use "other" screens effectively:
1. **Create Hidden Landing Pages:** Build a landing page that's only accessible via a button link. Once the user clicks the button, they'll be directed to this screen, offering them a unique experience that isn't visible from the app's main navigation.
2. **Add Widgets to Other Screens:** You can customize these other screens with all the available widgets (like images or buttons). Use these screens to showcase specific promotions or custom offers, and point users to them via strategically placed buttons or actions.
3. **Utilize "Other" Screens as Lead Magnets:** Create screens that provide value, such as free previews or exclusive content, and direct users to them through button links or gallery widget actions. This approach allows you to capture leads or create engagement without making the content permanently visible in the app's navigation.
4. **Future Content Planning:** If you're preparing screens, you can start building the content on "other" screens now and then move them to the main navigation once you're ready to launch.
By using "other" screens strategically, you can expand the flexibility and functionality of the app, enabling you to test, plan, and offer customized content at your own pace while keeping the user experience smooth and engaging.
## Customize a screen
Once you've created a screen, customize it with widgets to enhance its functionality.
### Available screen widgets
**Product Widget**: Display featured courses, community access, or digital products.
**Button Widget**: Add call-to-action buttons that direct users to other screens, websites, or resources.
**Image Widget**: Upload visuals that can be static or linked to additional content.
**Gallery Widget**: Showcase multiple images in a slideshow or grid format.
**Text Widget**: Insert text sections for descriptions, welcome messages, or important announcements.
**Video Widget**: Embed videos with customizable preview images to engage users.
**Embed Widget**: Paste in any HTML code to display additional content.
**Note:**
We recommend the following criteria for media content: Video resolution should not exceed 1280x720 px or 720x1280 px if vertical and image files should not exceed 2MB.
### Edit screen content
To modify an existing screen:
1. Select the **Screen** you want to edit from the Screens tab.
2. Click **Add Widgets** to open the editor.
3. Add or adjust widgets by dragging and dropping them onto the screen layout.
4. Configure each widget by updating text, images, links, or videos as needed.
5. Click **Save & Publish** to make changes live in the app:
### Reorder and manage screens
#### Reorder screens
Drag and drop screens in the dashboard to adjust their order. This determines how they appear in the app's navigation:
#### Delete screens
Click the **X** icon next to a screen to remove it from the app:
## Customize navigation
Change the order of bottom navigation tabs, customize the navigation names and icons, and customize the screens displayed in the navigation tabs.
### Reorder navigation tabs
1. Select **Branded Mobile App** from your Kajabi dashboard.
You should see your app Design settings if you've fully completed your [app setup](/articles/mobile-apps/branded-app/how-do-i-get-started-creating-my-own-branded-app).
2. Select the **Design** tab.
3. Click **Customize**.
4. Select the **Screens** tab from the top-left corner.
5. Then, under **Navigation Menu** drag and drop the screens that you want to be displayed in the bottom navigation tabs.
6. Click **Save & Publish** to make changes live in the app:
### Rename and customize navigation tab icons
1. Select **Branded Mobile App** from your Kajabi dashboard.
You should see your app Design settings if you've fully completed your [app setup](/articles/mobile-apps/branded-app/how-do-i-get-started-creating-my-own-branded-app).
2. Select the **Design** tab.
3. Click **Customize**.
4. Select the **Screens** tab from the top-left corner.
5. Then, under **Navigation Menu** select the screen you want to customize.
6. On the right, you can enter a custom Tab Title and select the desired icon from Kajabi's icon library:
# Create a first paid Apple App Offer for approval
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-create-your-first-paid-apple-app-offer-for-approval
Submit a first paid Apple App Offer from a Branded Mobile App for Apple's review.
The first time you create a **paid App Offer** for the iOS version of a Branded App, you need to complete an extra step inside App Store Connect. The steps below cover setting up banking info, creating the offer, and submitting it for Apple's approval.
## Set up banking and tax info
Before creating in-app purchase offers in a Branded App, you will need to provide Banking and Tax information with Apple and Google.
Learn to [set up banking and tax info with Apple](/articles/mobile-apps/branded-app/how-to-set-up-your-banking-and-tax-info-with-apple) and [how to set up a merchant account for Google in-app purchases](/articles/mobile-apps/branded-app/how-to-set-up-a-merchant-account-for-google-in-app-purchases).
## Create the first paid in-app offer
After setting up banking and tax information, you can begin to create the first paid in-app offer. [Learn to create a paid in-app offer](/articles/mobile-apps/branded-app/how-to-create-app-offers-for-your-branded-app).
## Add courses on the Branded App home screen
[Customize the Branded App home screen](/articles/mobile-apps/branded-app/how-to-create-custom-screens-for-your-branded-mobile-app) to display the courses available with the in-app offer.
Wait 10-15 minutes for Kajabi to automatically finish up the app build before moving on to the next step.
## Submit the first paid Apple App Offer for approval
The first time you create a paid [App Offer](/articles/mobile-apps/branded-app/how-to-create-app-offers-for-your-branded-app) for the iOS version of a Branded App, you'll need to complete an extra step inside App Store Connect. After that, you'll be able to conveniently create all additional App Offers from within Kajabi.
**To submit the first paid App Offer to Apple:**
1. Log into your [App Store Connect](https://appstoreconnect.apple.com/) account.
2. Click the blue **+** button at the top left to create a version of the app:
A modal popup will appear where you can enter the New Version number.
3. Enter the next number in the app version sequence. This can be any number, though we recommend numbering each version one increment higher than the last (example: 5.0.2).
4. Click **Create**:
A version of the app will be created.
5. Next, scroll down to the **What's new in this version** field.
6. Enter a short description of what's new (example: bug fixes and optimizations):
7. Scroll down the page to the **Build** section and click **Add Build**:
8. Select the latest build version from the popup modal (the latest build version will have the highest version number).
9. Click **Done**.
10. Scroll up and click **Save** at the top right of the page.
11. Click **Add for Review**.
12. Then, click **Submit to App Review** to submit the app for review.
## FAQs
### Why is the in-app purchase pending approval?
If you see the App Offer status listed as "Pending Submission" in Kajabi Branded App settings, this means that Apple has yet to approve the in-app purchase submission.
Apple reviews all first-time in-app purchase submissions to ensure that they comply with Apple's terms and conditions. This process usually takes a few days, and may take longer in some cases. Please check back in a few days for a status update.
# Customize widgets on Branded App screens
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-customize-widgets-on-your-branded-app-screens
Add and configure widgets including products, buttons, images, galleries, text, videos, and embed codes on Branded App screens.
**Widgets** let you customize Branded App screens with various content types including products, buttons, images, galleries, text, videos, and embed codes. This page covers adding, editing, and managing widgets on app screens.
## What is a screen?
The screens are like pages in a Branded App that members will see after they log into the app via the [welcome screen](/articles/mobile-apps/branded-app/how-to-set-up-a-branded-app-welcome-screen-where-new-users-can-create-an-account) or login screen (after viewing the [welcome carousel](/articles/mobile-apps/branded-app/how-to-add-an-onboarding-carousel-to-your-branded-app), if that feature has been added). If a member is already logged in, this will be the first thing they see when they reopen the app. You can learn more about custom screens [here](/articles/mobile-apps/branded-app/how-to-create-custom-screens-for-your-branded-mobile-app).
There are a variety of widgets you can use to customize these screens and enhance the experience of your customers.
## Add a widget to a screen section
To add a section to an app screen:
1. Select **Branded Mobile App** from your Kajabi dashboard.
If you've fully completed your [app setup](/articles/mobile-apps/branded-app/how-do-i-get-started-creating-my-own-branded-app), you should see your app Design settings.
2. Select the **Design** tab.
3. Click **Customize**:
4. Make sure that you are open to the **Widgets** editor and select the appropriate screen from the drop down:
### Available widgets
* **Product** widgets allow you to feature courses, coaching, product and community products members own, even if they are not included in an [app offer](/articles/mobile-apps/branded-app/how-to-create-app-offers-for-your-branded-app)
* **Button** can be used to link to pages, blog posts, or URLs
* **Image** can add further customization while also acting as a button that links to pages, blogs or URLs
* **Gallery** enables you to upload and display multiple images as a gallery
* It is recommended that the uploaded image dimension matches the selected ratio. For example -1260x720 for 7:4, 1080x1080 for 1:1, and 720x960 for 3:4
* **Text** sections can be added throughout the home screen
* **Video** widgets allow you to add videos directly to the home screen with customizable cover images
* **Embed Code** widgets give you the opportunity to paste in any HTML code to display additional content
### Drag and drop widgets
The widget editor will open on the page's right side, allowing you to further customize the widget's title, text, images, etc.
A carousel section will automatically rotate each image or course into view, while a horizontal scrolling section will allow app members to scroll through images or courses at their own pace.
For most of the widgets, you can toggle on or off the Section's title and select the desired alignment.
**Note:**
The Product Widget can be used to display courses, coaching, podcast and community products. If a displayed product is not part of an app offer or is not owned by the member, then it will not appear on their screen.
## Edit a screen section
Customize section titles and content for each widget added to a screen.
**To edit a widget on a screen:**
1. Select **Branded Mobile App** from your Kajabi dashboard.
If you've fully completed your [app setup](/articles/mobile-apps/branded-app/how-do-i-get-started-creating-my-own-branded-app), you should see your app Design settings.
2. Select the **Design** tab.
3. Click **Customize**:
4. Make sure that you are open to the **Widgets** editor and select the appropriate screen from the drop down:
5. Select the widget section that you wish to edit on the home screen:
Reorder images and products you've added to a widget by pressing and holding the **six dots to the left** of each in the widget editor, then dragging and dropping as desired:
If you change your mind about including a widget, click the **x** icon to the right to remove it.
When you're done, click **Save & Publish** at the top right to publish screen updates to the live app.
### Reorder screen sections
Change the order of screen sections on a Branded App page.
To reorder screen sections, select the widget section that you wish to rearrange and click the up or down arrow to move to the desired location:
### Delete a screen section
To delete a screen section, select the widget section that you wish to delete and click the trash icon:
# Customize a Branded App
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-customize-your-branded-app
Design a Branded App with customizable onboarding, welcome screens, widgets, and more.
With Kajabi, you can design your **Branded App** directly from your Kajabi account by utilizing the Design tab. Create a seamless, branded experience for your mobile users with customizable onboarding, welcome screens, widgets, and more.
## Branded App design
With Kajabi, you can design your app directly from your Kajabi account by utilizing the Design tab.
### Customize the Branded App
1. Open the **Branded App** tab from the Dashboard.
2. Click **Design**.
3. Select **Customize**:
## Branded App customizations
Create a seamless, branded experience for your mobile users.
Customize the Onboarding and Welcome experiences, add custom links, and add Product widgets to the Branded App.
### Onboarding
Create a welcome carousel for customers. When they first open the app, they can view a carousel of images to onboard them to the app. [Learn more](/articles/mobile-apps/branded-app/how-to-add-an-onboarding-carousel-to-your-branded-app).
### Welcome
Customize the welcome screen with your own branding and enable users to create a member account directly from the welcome screen. [Learn more](/articles/mobile-apps/branded-app/how-to-set-up-a-branded-app-welcome-screen-where-new-users-can-create-an-account).
### Custom links
Add a floating action button to the Branded App to include a menu of custom page links. [Learn more](/articles/mobile-apps/branded-app/how-to-add-custom-links-to-your-branded-app).
### Widgets
Add widgets to the Home screen to enhance the customer experience with the app. [Learn more](/articles/mobile-apps/branded-app/how-to-create-custom-screens-for-your-branded-mobile-app).
# Edit app store listings
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-edit-your-app-store-listings
Update app name, description, icon, screenshots, keywords, and more on the Apple App Store and Google Play Store.
The **app store listing** is the digital front door for a Branded App. Update what your audience sees when they search for the app on the Apple App Store and Google Play Store.
## What you can edit on app store listings
The app listing in the Apple App Store and Google Play Store is prime real estate—it's where first impressions happen.
For app store pages, you are able to edit:
* **App name & description**
* **App icon & logo**
* **Screenshots**
* **Categorization, Metadata, & Keywords (Apple only)**
* **Support, terms, and privacy links**
* **Localization**
* **App Developer Name**
## App name & description
**What the app name is**: The name of the app as it appears in the store and on users' devices.
**Best practice**: Keep it short, brand-relevant, and recognizable (e.g., *"The Yoga Studio by Jane Doe"*).
Apple limits app names to 30 characters. Google allows up to 50.
**What the app description is**: The overview of what the app offers, shown to potential users in both stores.
**Best practice**: Speak directly to your ideal audience. Highlight transformation, benefits, and what they'll unlock by downloading the app. Use short paragraphs, bullets, and a motivating tone. [Learn How to Write an App Store Description for Your Branded Mobile App](/articles/mobile-apps/branded-app/how-to-write-and-update-your-app-store-description-for-your-branded-mobile-app)
**Apple**: Only shows the first few lines unless the user expands it—make them count.
**Google**: Includes a short (80-character) *"Short Description"* plus a full-length version.
**For Apple (iOS)** you can update the app name and description with this article: [How to Update your Brand Assets](/articles/mobile-apps/branded-app/how-to-update-your-branded-app-brand-assets-or-terms-privacy-links). Apple typically reviews app changes in 24-48 hours.
**For Google (Android)** you can simply login to [Google Play Console](https://play.google.com/console), click on the app, navigate to **Grow Users**, click on **Store Presence**, click on **Store Listings**, and edit the **Default Store Listing** to change the app name and description.
Once you've made updates, you can click save and send the change for review. Google typically reviews changes in 24-48 hours.
## App icon & logo
**What it is**: The icon is the image that appears on the user's phone and in the app store listing. The logo is what shows inside of the app.
**Best practice**: Keep it simple, high contrast, and readable at small sizes. Often, your logo (or an abstract element of it) works best.
You can update the app icon and logo with this article: [How to Update your Brand Assets](/articles/mobile-apps/branded-app/how-to-update-your-branded-app-brand-assets-or-terms-privacy-links)
## Screenshots
**What it is**: Visual previews of the app's experience—these are front and center in the listing.
**Best practice**: Use clean, branded screenshots that show real in-app features like:
* Welcome screen or homepage
* Course library or lesson view
* Community or discussion areas
* Coaching features (e.g., calendar, check-ins)
Use captions on screenshots to guide the viewer and reinforce value.
You can update screenshots with this article: [How to Update Your Branded App Screenshots](/articles/mobile-apps/branded-app/how-to-update-your-branded-app-screenshots)
## Categorization, metadata, and keywords
**What it is**: Metadata that helps the app appear in search results in the App Store.
**Best practice**: Think like your audience—what terms would they search to find an app like yours? Use relevant keywords, separated by commas (no spaces), and avoid duplicates.
* **Primary & Secondary Category**: Helps with store discoverability (e.g., Education, Health & Fitness)
* **Keywords (Apple only)**: Search terms to help the app appear in App Store search results. Example: fitness,workouts,home yoga,coaching,wellness
* **Tags (Google Play)**: Help with app classification
### For Apple (iOS)
1. **Log in to App Store Connect**
Go to [https://appstoreconnect.apple.com](https://appstoreconnect.apple.com) and sign in with your Apple Developer account.
2. **Select the app**
From the **My Apps** dashboard, click on the app.
3. **Choose or create a new version**
* Under the **App Store** tab, click on the app version currently in **Prepare for Submission** (or create a new version if you're updating).
* If no version is available for editing, you'll need to click the blue **+** button to create one. Type in the next version number up from the current live version number.
4. **Scroll to the Keywords section**
In the version details, find the **Keywords** field.
5. **Edit the keywords**
### For Google (Android)
1. **Log in to Google Play Console**
Go to [https://play.google.com/console](https://play.google.com/console) and sign in with the developer account.
2. **Select the app**
On the dashboard, click the app you want to update.
3. **Navigate to Store Settings**
In the left-hand menu, go to:
Grow > Store Presence > Main Store Listing
4. **Edit metadata fields**
Update any of the following fields:
* **App Name** (max 30 characters): The title shown on the app's store listing.
* **Short Description** (max 80 characters): A quick value-packed summary that appears in search results.
* **Full Description** (max 4,000 characters): A more detailed overview of the app's features, benefits, and unique value.
* **Graphic Assets** (scroll down): Add or update screenshots, promo video links (YouTube), and the app icon.
5. **Save and submit**
Click **Save** at the top-right.
Then go to **Publishing overview** to submit changes for review (if required).
**Tip:**
* Use keywords naturally in the **Full Description**—Google Play uses this content to power search rankings.
* Keep the **Short Description** benefit-focused: What transformation will the app help users achieve?
* Regularly update metadata to reflect features or seasonal offerings.
## Support, terms & privacy info
You can update links with this article: [How to Update your Brand Assets or Terms and Privacy Links](/articles/mobile-apps/branded-app/how-to-update-your-branded-app-brand-assets-or-terms-privacy-links)
## Localization (Optional)
**Localization** means adapting the app's listing to different **languages and regions**, so people around the world can find, understand, and engage with the app—**in their native language**.
This includes:
* Translated **app name**
* Custom **screenshots**
* Region-specific **descriptions** and **keywords**
* Localized **date, time, number, and currency formats** (in-app)
Apps with localized listings often get **significantly higher downloads** in non-English-speaking markets.
### Edit localization
#### For Apple (iOS)
1. **Log in to App Store Connect** → [https://appstoreconnect.apple.com](https://appstoreconnect.apple.com)
2. Select **My Apps** > Click on the app
3. Under **App Information**, click **+ Add Localization**
4. Choose a language (e.g., Spanish, French, Japanese)
5. Enter localized versions of:
* **App name**
* **Subtitle**
* **Keywords**
* **Description**
* **Promotional Text**
6. Upload **localized screenshots** (optional but impactful)
7. Click **Save** and repeat for each language you'd like to support
#### For Google (Android)
1. **Log in to Google Play Console** → [https://play.google.com/console](https://play.google.com/console)
2. Select the app
3. Navigate to **Store Presence > Main Store Listing**
4. On the top right, click **Add translations**
5. Choose from:
* **Machine translation (free)**
* **Professional translation (paid via Google partner)**
## Update the app developer name
Below are the exact steps for updating the **Developer Name** in both the **App Store (Apple)** and **Google Play Console (Android)**.
### For Apple (iOS)
**Important:**
Apple does *not* allow you to edit the developer name in App Store Connect directly. It's tied to the **Apple Developer account name**.
1. **Check the account type**
* If you have an **Individual account**, the **personal name** will appear as the developer name.
* If you want a **business name** to display, you must have an **Organization Account**.
2. **Contact Apple Support**
If you're switching from an individual to an organization account, contact Apple Support to help migrate the app(s):
[Contact Apple Developer Support](https://developer.apple.com/contact/)
Once approved, the **organization name** will appear as the developer on the App Store.
### For Google (Android)
1. **Login to Google Play Console**
[https://play.google.com/console](https://play.google.com/console)
2. **Open Developer Account settings**
In the left menu, click:
Developer Account > Account Details
3. **Edit Developer Name**
* Find the **Developer Name** field
* Enter the updated name (business, brand, or personal—your choice)
4. **Save changes**
Click **Save** at the bottom of the screen.
The developer name will appear on the app's store listing shortly after you save.
# Publish a Branded App to the Apple App Store
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-publish-your-branded-app-to-the-apple-app-store
Submit the iOS version of a Kajabi Branded App to the Apple App Store for review and publication.
Once the **Branded App** is built, you'll receive an email notification from Kajabi letting you know it's time to submit the app for review and publication. The steps below cover adding Kajabi as an admin, verifying reviewer notes, attaching the build file, and submitting the app.
## Add Kajabi as an account admin
First, grant the Kajabi team admin access to the App Store Connect account so we can help ensure that the app submission goes as smoothly as possible.
**To give the Kajabi team access to the account:**
1. Click this link to open the **Users and Access** page in App Store Connect: [https://appstoreconnect.apple.com/access/users](https://appstoreconnect.apple.com/access/users)
(If you're not logged into the account, you'll be prompted to log in).
2. Click the blue **+** sign to add a user:
A popup modal will appear with a New User input form.
1. In the **First Name** field, input: **Patrick**
2. In the **Last Name** field, input: **MacDowell**
3. In the **Email** field, input: **[Agile.Server@oc-corpeng.com](mailto:Agile.Server@oc-corpeng.com)**
4. Under **Roles**, select the checkbox next to **Admin**
5. Click the **Invite** button:
## Verify reviewer notes
Next, check and confirm that you've already added notes for the app reviewers to help the app pass the review process. If you've not yet completed this step, follow the guide on [How to Add App Reviewer Notes for Apple](https://help.kajabi.com/hc/en-us/articles/18200683097755) and return here when you've finished adding the notes.
**To verify reviewer notes:**
1. Go to the main dashboard of the [App Store Connect](https://appstoreconnect.apple.com/) account.
2. Click the **My Apps** icon:
3. Click the Branded App icon to open the app details:
4. Scroll down to the **App Review Information** section.
5. Confirm that you've added the notes you were given by Kajabi during the intake process to the **Notes** input field:
If you've already added the notes, continue on to the next section. If the Notes box is empty, follow the guide on [How to Add App Reviewer Notes for Apple](https://help.kajabi.com/hc/en-us/articles/18200683097755) and return here when you've finished adding the notes.
## Attach the app build file
After adding reviewer notes, attach the app build file to the app submission.
**To attach the build file:**
1. Scroll up to the **Build** section.
2. If you don't immediately see an **Add Build** button, click to expand the section.
3. Click **Add Build**:
A popup modal will appear displaying a list of app build files.
4. Select the build file with the largest build number and click **Done**.
(The largest build number should be the first one in the list. It may be a different number than 17.):
The app build file will now appear in the **Build** section of the dashboard:
## Submit the app
Once the build file is attached, you can submit the app to the App Store for review.
**To submit the app to the App Store:**
1. Scroll up to the top of the page.
2. Click **Save** at the top right.
3. Click **Add for Review**:
4. Click **Submit to App Review** at the top right:
When Apple approves the app, you'll receive an email confirming that the app has been approved and published to the App Store.
### What if the app isn't approved?
If you receive a rejection notice instead of an approval, the Kajabi team will review the issue. The expert team at Kajabi will determine what action is needed to correct the problem. [Click here to submit our help request form](https://help.kajabi.com/hc/en-us/requests/new?ticket_form_id=17085198502555) and we'll be in touch.
# Publish a Branded App to the closed testing track in Google Play Store
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-publish-your-branded-app-to-the-closed-testing-track-in-the-google-play-store
Test the Android version of a Branded App by publishing it to the closed testing track.
Google requires personal developer accounts created after November 2023 to complete **closed testing** before publishing to production. Create a closed test with at least 12 testers for at least 14 days to gain production access.
## Why do I need to create a closed test?
Since December 11, 2024, [Google updated their rules and regulations](https://support.google.com/googleplay/android-developer/answer/14151465#overview) to require anyone with a newly created personal developer account to run a closed app test with at least 12 testers who've been opted-in for at least 14 days in order to gain production access to publish an app to the Google Play Store.
This means you'll need to create a closed test in Google Play if you created your personal Google Developer account after November 1, 2023, or if you see an error message that "you don't have access to production yet" when trying to publish your app into production:
## Create a closed test
To release the app to a closed test, first upload the application file (.aab file) to the Google Play Store.
**To upload the AAB file:**
1. Log into the [Play Console](https://play.google.com/console/u/developers) and select the app you want to work on:
2. Once you've loaded the specific app, navigate to the **Release** section in the left dashboard menu.
3. From the menu options under **Testing**, select **Closed testing**:
4. On the closed testing page, click the dark blue button at the top right labeled either **Manage track** or **Create track**:
5. Select the **Testers** tab:
6. Add the name and email address of at least 12 people who will test the app before it goes live (i.e. yourself, members of your team, etc.):
In order to be approved for the Play Store and production, you will need at least 12 beta testers to opt-in and download the app. It is highly recommended to add 15–20 testers as a good buffer in case testers opt out.
7. Scroll down and click **Copy link** to copy the testing link and keep it handy:
8. At the top right corner of the page, select **Create New Release** (if there is already a release in progress, the button text will say **Edit Release** instead).
9. Navigate to the **App bundles** section.
### Adding the build - Option 1
If you've previously uploaded the AAB file, or if Kajabi has successfully sent the build to the Store automatically:
1. Click the **Add from library** link:
2. Choose the **newest** build that was uploaded. (The newest build will have the highest version code):
Once the build file is added, continue on to add release notes.
### Add the build - Option 2
If the build wasn't automatically uploaded, follow these steps to do it manually.
1. If you haven't downloaded the AAB file yet, follow [these instructions](/articles/mobile-apps/branded-app/how-to-publish-your-branded-app-to-the-google-play-store) to download it. If you already have the AAB file, move on to the next step.
2. Drag and drop the downloaded AAB file onto the box that says **Drop app bundles here to upload**. Or, click **Upload** and select the AAB file:
It may take a few minutes for the AAB file to upload. Once the file is uploaded, continue on to add release notes.
### Add release notes
Once you've completed either Option 1 or Option 2 and added the AAB file:
1. Scroll down to **Release details** and confirm that you see two input fields, **Release name** and **Release notes**:
2. A **Release name** will populate automatically after the AAB file upload completes. You can update it if desired.
3. Add any **Release notes** you'd like to share with app users. We recommend keeping initial release notes simple, such as "Welcome to the app."
**Note:** Don't mention anything about users purchasing content in the Release notes section.
If you'd like to support multiple languages in release notes, include the [language reference codes](https://support.google.com/googleplay/android-developer/table/4419860?hl=en) for those languages. Here's an example of using language reference codes for multiple languages:
4. After entering Release notes, click **Next** at the lower right.
5. Click **Save**.
You can now access the closed testing app at the testing link you copied above.
Once the app has been downloaded and opted into by [at least 12 people for at least 14 days](https://support.google.com/googleplay/android-developer/answer/14151465#overview\&zippy=%2Csummary-of-testing-requirements-per-track), you can apply for production access.
## Android app submission process
The steps below walk you through submitting the Android app for approval and publishing it.
### Submit the app for approval
1. **Log in to the developer account:** Go to the Google Play Console. Sign in with the Google Developer account credentials.
2. **Select the app:** Click on the name of the developer account. Select the app from the list (e.g., "Kajabi Branded App").
3. **Initiate production submission:** On the dashboard, find the option to apply the app for production:
4. **Complete the Closed Beta Questionnaire:** You will be redirected to Google's Closed Beta Questionnaire. **Answers can be updated if necessary based on your business needs.**
**Note:** We recommend following the response guide provided via email from [bma.support@kajabi.com](mailto:bma.support@kajabi.com). If you have not received a guide or need help with these responses, please reach out to us.
5. **Await review and response:** After submitting the Closed Beta Questionnaire, the app will undergo another review by Google. Google will either approve and publish the app or request additional information. If further questions arise, the Kajabi Branded App team will handle them.
By following these steps, you'll ensure that the app is properly submitted for review and publication on the Google Play Store.
## Publishing the production app
To publish the app once the production app has been approved:
1. Log into the [Google Play Console](https://play.google.com/console/u/developers).
2. In the left dashboard menu, navigate to the **Release** section.
3. From the menu options under **Testing**, select **Closed testing**. (Or, if you used a different Testing option, such as **Internal testing**, select that option.)
4. At the middle of the page, click **Promote Release**.
5. Select **Production**:
You'll be directed to a **Production** page with the app file already copied over:
6. Fill out release notes in the **Release details** section like you did above.
7. Click **Next** at the lower right.
8. On the next page, confirm that there are no [errors](/articles/mobile-apps/branded-app/how-to-publish-your-branded-app-to-the-google-play-store).
9. Click **Save** at the lower right.
Finally, you'll see a popup asking if you want to navigate to the **Publishing overview**:
10. Click **Go to overview**.
11. Click **Send changes for review** to submit the app.
# Publish a Branded App to the Google Play Store
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-publish-your-branded-app-to-the-google-play-store
Download the AAB file, upload it to Google Play Console, and submit a Branded App for review.
After completing the **Branded App** onboarding process and setting up the Google Play Console developer account, a few final steps are needed to publish the app to the Google Play Store. The steps below cover downloading the AAB file, uploading it to Google Play, and submitting the app for review.
## Publishing an AAB file
You'll first download an AAB (Android App Bundle) file from the Kajabi account. This file contains the code for the Android app.
Next you'll add the Kajabi team as a Google Play account admin, upload the AAB file to the Google Play Console, and publish the app to the Play Store. Once the app is published, customers will be able to download it onto their mobile devices (they'll only need to download the app once to receive all future updates).
## Download the AAB file from Kajabi
When the Kajabi team finishes building the app, the app code will be packaged into an AAB (Android App Bundle) file which you can download from the settings.
**To download the AAB file:**
1. Log into the [Kajabi account](https://app.kajabi.com/).
2. Click the **Settings** tab at the lower left of the dashboard.
3. Select **Branded Mobile App Settings**.
4. Navigate to the Android section and click **Download AAB file**.
The AAB file will download to your computer locally:
## Add Kajabi as a Google Play account admin
Next, grant the Kajabi team admin access to the Google Play Console and enable email notifications so we can help ensure that the app submission goes as smoothly as possible.
1. Log into the [Google Play Console](https://play.google.com/console) and make sure you're not clicked into a specific app.
2. Click on **Users and permissions** in the menu at the left of the screen.
3. Click the blue **Invite new users** button:
4. In the **Email address** field, input: **[Creative.Coder@oc-corpeng.com](mailto:Creative.Coder@oc-corpeng.com)**
5. Select the **Admin** checkbox under **Account permissions**.
6. Click **Invite User**:
## Upload the AAB file to Google Play
After downloading the AAB file, upload it to the Google Play Console.
### Production access error
Before proceeding with the steps below, please note that if you created a personal Google Developer account after 12/1/23, you'll likely see an error message that "you don't have access to production yet" if you try to publish the app into production without first releasing it for closed testing:
If you encounter this error, [follow the steps to publish the app to the closed testing track next](/articles/mobile-apps/branded-app/how-to-publish-your-branded-app-to-the-closed-testing-track-in-the-google-play-store).
**To upload the AAB file:**
1. In the Google Play Console, select the app you want to publish:
2. Once you've loaded the specific app, navigate to the **Release** section in the left dashboard menu.
3. From the Release menu options, select **Production**.
4. At the top right corner of the page, select **Create new release**:
5. Navigate to the **App bundles** section.
6. Drag and drop the downloaded AAB file onto the box that says "Drop app bundles here to upload."
Or, click **Upload** and select the AAB file:
It may take a few minutes for the AAB file to upload.
7. Once the AAB file uploads, scroll down to **Release details** and confirm that you see two input fields, **Release name** and **Release notes**:
### Advertising ID error
You may see an error message about an advertising ID:
*"Your app targets Android 13 (API 33) or above. You must declare the use of advertising ID in Play Console."*
**To resolve an advertising ID error:**
1. Click **Complete declaration** just below the error message:
2. On the next page, navigate to "Does your app use advertising ID?"
3. Select **No**:
4. Click **Save** at the lower right.
5. Press the **back arrow** at the top left to return to the prior page.
6. Click **Next**.
### Debug Symbols warning
You may also see a warning that the App Bundle contains native code and it's recommended that you upload debug symbols. It's ok to simply ignore this warning:
7. Click **Save**.
You'll see a popup asking if you want to navigate to the **Publishing overview**:
8. Click **Go to overview**.
(If you accidentally click "Not now" or don't see the popup, you can easily get to the Publishing overview page on the left menu near the top.):
## Publish the app to Google Play
Now that you've created a production release, it's time to send it for app review.
**To submit the app:**
1. First, get to the **Publishing overview page** using one of the options described at the end of the previous section:
On the right side of the page, you'll see a button with the text **Send *x* changes for review**.
2. Confirm that you don't have any errors.
3. Click **Send *x* changes for review**. There may be multiple changes even if you're doing the initial launch because Google reviews multiple things. For example, the privacy policy page, and verifying they can successfully log into the app:
4. When prompted, confirm the submission.
The app has been submitted to the Google Play Store for review.
You'll receive an email notification when the app is approved, and it will be published to the general public shortly after. Please note that if you enable *Managed Publishing*, you'll need to manually release the app once it's approved.
### What if the app isn't approved?
If you receive a rejection notice instead of an approval, the Kajabi team will review the issue. The expert team at Kajabi will determine what action is needed to correct the problem. Email us at [bma.support@kajabi.com](mailto:bma.support@kajabi.com) and we'll be in touch.
## Troubleshooting
If you see a message about an advertising ID error, follow the steps above.
### Invalid Data Safety Form
If you receive an email that indicates, "Data safety section in Google Play User Data policy: Invalid Data safety form", it likely means that a step was missed during the intake process.
In this case, follow the steps outlined [here](/articles/mobile-apps/branded-app/what-to-select-for-branded-app-data-types-and-data-safety-for-google-play-store) to complete the data safety form. Make sure to get all the way to the end and press **Save** before moving on.
### Version Code Has Already Been Used
While trying to upload the app, you may see this error: "Version code *X* has already been used. Try another version code."
If you see this, there are 3 actions you can take to resolve it:
1. First, when you are creating a build in the **Production** tab:
Make sure to select "Add from library" and choose the **highest build number** as your option.
For example, in the image below, the highest build number is **38**:
2. Make sure you only have **1** build listed. If you see more than 1 build, delete all but the highest number (i.e. the most recent) build:
3. If you don't see any options in the library, you can also download the AAB file directly from the Branded App Settings page and upload it by selecting the **Upload** button.
**Note:**
If none of those actions work and you are still seeing the same issue, please reach out to our support team and ask us to generate a build for you so that the next app will have a higher version number.
### No Countries Or Regions Have Been Selected
When going through the app release process, you may encounter this error:
*"No countries or regions have been selected for this track. Add at least 1 country or region to roll out this release."*
**To resolve a 'no countries or regions' error:**
1. In the left menu, select the type of release you are setting up:
**Production** means the app is going to the Store for the entire world to see.
**Open testing** means the app is going to the Store for the entire world to see but it will have a "beta" label on it. This is used by companies that want to have an open beta.
**Closed testing** means that you invite specific people to test the app and you control who has access to it.
**Internal testing** means the app is still in the initial testing phase and only you (and/or select members of the team) are testing it to make sure it works properly.
After selecting the release type, you'll see this window pop up:
2. Click **Add countries / regions.**
You'll see a full list of countries in which the Play Store operates.
3. Select the country or countries where you want the app to be available.
## Want to test the app first?
In order to test the app before submitting it for review to the Play Store, you'll need to utilize the different testing tracks.
**To upload the AAB file:**
Log into the [Play Console](https://play.google.com/console/u/developers) and select the app you want to work on:
1. Once you've loaded the specific app, navigate to the **Release** section in the left dashboard menu.
2. From the menu options under **Testing**, select **Internal testing**:
3. Select the **Testers** tab.
4. Add the name and email address of anyone who will test the app before it goes live (i.e. yourself, a member of your team, etc.):
5. Scroll down and click **Copy link** to copy the testing link and keep it handy:
6. At the top right corner of the page, select **Create New Release.**
7. Navigate to the **App bundles** section.
### Option 2
If you've already uploaded the AAB file previously and Kajabi has successfully sent the build to the Store:
1. Click the **Add from library** link:
2. Choose the **newest** build that was uploaded.
(The newest build will have the highest version code.):
### AAB file is added
Once you've completed either Option 1 or Option 2 and added the AAB file:
1. Scroll down to **Release details** and confirm that you see two input fields, **Release name** and **Release notes**:
2. A **Release name** will populate automatically after the AAB file upload completes. You can update it if desired.
3. Add any **Release notes** you'd like to share with app users. We recommend keeping initial release notes simple, such as any functionality or features being added or upcoming milestone updates for your products. *Don't mention anything about users purchasing content in the Release notes section*.
If you'd like to support multiple languages in release notes, include the [language reference codes](https://support.google.com/googleplay/android-developer/table/4419860?hl=en) for those languages. Here's an example of using language reference codes for multiple languages:
4. After entering Release notes, click **Next** at the lower right.
5. Click **Save**.
You can now access the internal testing site at the testing link you copied above.
Once you've finished testing the app, follow these steps to release it to a live audience on the Google Play Store.
**To publish the app:**
1. Log into the [Google Play Console](https://play.google.com/console/u/developers).
2. In the left dashboard menu, navigate to the **Release** section.
3. From the menu options under **Testing**, select **Internal testing**.
(Or, if you chose a different Testing option, select that option.)
4. At the middle of the page, click **Promote Release**.
5. Select **Production**:
You'll be directed to a **Production** page with the app file already copied over:
6. Fill out release notes in the **Release details** section like you did above.
7. Click **Next** at the lower right.
8. On the next page, confirm that there are no errors.
9. Click **Save** at the lower right.
# Redirect users to download an app from the app store
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-redirect-users-to-download-your-app-from-the-app-store
Add device-based app store redirection to a Kajabi Landing Page.
Create a **Landing Page** that automatically detects the visitor's device and redirects them to the appropriate app store. This ensures iOS users go to the Apple App Store, Android users go to Google Play, and desktop users are directed to a fallback page.
## Create a Landing Page
1. Log into the Kajabi Dashboard.
2. Navigate to **Website**.
3. Then, **Landing Pages**.
4. Click **New Landing Page**:
5. Select a template (a simple/blank template works best for redirect pages).
6. Name the page and click **Create**.
## Design the Landing Page
Tips for designing the Landing Page:
1. Keep the design minimal since users will be redirected quickly.
2. Add a simple heading (e.g., "Welcome")
3. Add a short message (e.g., "Preparing to redirect you to the appropriate destination...")
[Learn more about creating pages](../../website/pages/pages-explained).
## Add the redirect code
After designing the Landing Page, you will need to add the redirect code:
1. Click the **Settings** tab in the sidebar editor.
2. Select **Custom Code**:
3. Locate the **Custom Javascript** section:
4. Copy and paste the following code block and replace the URLs with your own:
```javascript theme={null}
// Wait for the page to load
document.addEventListener('DOMContentLoaded', function() {
// Detect device
const userAgent = navigator.userAgent || navigator.vendor || window.opera;
// Set up the redirects
if (/iPhone|iPad|iPod/i.test(userAgent) && !window.MSStream) {
// iOS device
window.location.href = "https://apps.apple.com/gb/app/kajabi-branded-app/id6502643192";
} else if (/android/i.test(userAgent)) {
// Android device
window.location.href = "https://play.google.com/store/apps/details?id=com.kj2148083404.app&hl=en_US";
} else {
// Desktop or other devices
window.location.href = "https://kajabi.com/features/branded-app";
}
});
```
**Note:**
The example code above is built into this landing page and has the working code above, check it out [here](https://kajabibrandedapp.mykajabi.com/redirect-5979a06e-1d76-42e8-ba7c-ad16d826d3e5).
## Save and publish
1. Click **Save** to keep and apply the changes.
2. Click **Publish** to make the page live.
Now, this Landing Page link could be used behind a call to action like "Download my app" and it will redirect to the appropriate app store for app downloads.
# Set up a Branded App welcome screen
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-set-up-a-branded-app-welcome-screen-where-new-users-can-create-an-account
Customize a welcome screen where app users can create a member account or log in.
The **welcome screen** is the first thing users see when they open the app. Customize it with your branding and enable account creation to grow your audience directly from the Branded App.
## What is the welcome screen?
The app welcome screen is the first screen an app user will see after they download and open the app. It provides users with the option to either sign up for a member account or log into an existing account.
Enhance the Branded App user experience and grow your audience by customizing the welcome screen with your own branding and enabling users to create a member account directly from the welcome screen.
**Note:**
The welcome screen feature is disabled by default. If you choose not to set up a welcome screen for the Branded App, then only existing members will be able to log into the app (they'll see the default login screen instead).
## Set up the welcome screen
**Note:**
The **Sign Up** button on the welcome screen will only be enabled if you've added at least one widget to the custom home screen. This prevents people who sign up for the app from seeing an empty state in the app. To remove the **Sign Up** button, you must remove all widgets from the home screen. [Learn how to customize the Branded App home screen](/articles/mobile-apps/branded-app/how-to-create-custom-screens-for-your-branded-mobile-app).
To enable and customize the app welcome screen:
1. Select **Branded Mobile App** from the Kajabi dashboard.
If you've fully completed the [app setup](/articles/mobile-apps/branded-app/how-do-i-get-started-creating-my-own-branded-app), you should see the app Design settings.
2. Select the **Design** tab.
3. Click **Customize**:
4. Open the **phone icon**:
5. Navigate to **System Screens**.
6. Select **Welcome**:
The Welcome screen editor will open on the right side of the page:
7. Enter a **Title** and **Subtitle** to display on the welcome screen.
8. Under **Background Image**, click **Select file**.
9. Follow the prompts to upload the desired Background image.
We recommend using an image file size of 1284 x 2778 px (3 MB max file size).
10. Review the changes on the preview.
## FAQs
### What happens when a user taps the "Sign Up" button?
After tapping the Sign Up button, the user will be presented with a form to enter their name, email and password in order to create a member account. Upon form submission, the member will automatically be assigned a "Branded App signup" tag in the Kajabi account.
### What will users see if the welcome screen is not enabled?
If you choose not to enable the welcome screen feature for the app, users who download and open the app will see the default login screen for existing members. Users without an existing account won't be able to log in or create an account.
### How can a member delete their account?
An app member can delete their account by opening their account settings and selecting **Delete Account**.
# Set up a merchant account for Google in-app purchases
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-set-up-a-merchant-account-for-google-in-app-purchases
Create a payments profile in Google Play Console to enable in-app purchases for the Android Branded App.
To enable in-app purchases in the Android Branded App, you need to create a **payments profile** in Google Play Console. The steps below walk you through creating the profile and completing the required fields.
**To set up a merchant account:**
1. Log into the [Google Play Store publisher console](https://play.google.com/console/).
2. Click on **Settings** near the bottom left:
3. Scroll down to the bottom of the page and select **Payments profile**:
4. Click **Create payments profile**:
5. If you see a profile you've already created, you can select the existing profile.
Otherwise, create a payments profile.
6. Complete all required fields on the profile form (Business location, Account type, Name and address, Primary contact info, Public business info, etc.):
7. When you've completed the form, click **Submit**:
**Tip:**
Click the link on the final Payments profile page to enroll in [Google's program for a reduced 15% service fee](https://support.google.com/googleplay/android-developer/answer/10632485?sjid=6616978774795914322-NC).
# Set up banking and tax info with Apple
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-set-up-your-banking-and-tax-info-with-apple
Configure banking and tax information in App Store Connect to sell in-app purchases through a Branded App on iOS.
To sell in-app purchases through a Branded App on iOS, you must configure **banking and tax information** in App Store Connect. The steps below walk you through accepting the Paid Applications Agreement and connecting a business entity.
**To set up banking and tax info:**
1. Sign in to [The Apple Developer Console](https://developer.apple.com/account) and select **Account**.
2. You may see a notification banner with bold lettering near the top of the screen notifying you of required documents that need to be signed. If so, first sign these documents.
3. Scroll down to the **Program resources** section.
4. Under **App Store Connect**, select **Business**:
You'll be auto-directed to the **Business** page in [App Store Connect](https://appstoreconnect.apple.com/business).
5. Navigate to **Agreements** and locate the **Paid Applications Agreement**:
6. Click **View Terms**. (If you don't see a link to view the terms, you may need to update the account information or accept additional agreements first. Check the top of the page for notifications of other outstanding items).
7. Review the terms of the agreement and click **Agree** to accept.
# Set up a D-U-N-S number for a Branded App
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-set-up-your-d-u-n-s-number-for-your-branded-app
Apply for a D-U-N-S Number required to create an Apple Developer account for organizations.
A **D-U-N-S Number** is required to create an Apple Developer account for organizations. This page covers what a D-U-N-S Number is, how to check for an existing number, and how to complete the application process.
## What is a DUNS number?
DUNS or D-U-N-S is the Data Universal Numbering System developed and managed by Dun & Bradstreet.
This number identifies business entities on a location-specific basis by using a unique nine-digit number.
The D-U-N-S Number is the legal, standard business identifier to identify and track a business. It is used to check the identity and legal entity status of an organization.
[Learn more about the D-U-N-S Number](https://www.dnb.com/duns).
## Set up a D-U-N-S number
**Tip:**
Be sure to use a [supported browser](https://docs.dnb.com/supplier/en-US/system-req) to complete the D-U-N-S request to ensure a smooth application process.
### Check for an existing number
If you purchased a business, you may already have a registered number. Before completing the application process, be sure that you have not already been assigned a D-U-N-S number.
To search for the company, visit [https://www.dnb.com/duns-number/lookup.html](https://www.dnb.com/duns-number/lookup).
### Collect the information needed to apply
As you go through the application process, you will discover that you need the details of the business handy. Prep for the application by gathering all the information beforehand.
For the D-U-N-S application, you will need:
* The legal name of the business
* The business address (If you have multiple locations, you will need to apply for a separate D-U-N-S Number for each location)
* Contact information for the business including a main telephone number
* The name of the business owner, president, or CEO
* The legal structure of the business
* The year the business was created
* The primary business industry
* The total number of full- and part-time employees
### Complete the application
Obtaining a D-U-N-S Number is free and can be accomplished directly through Dun & Bradstreet.
To begin the application process and to learn more about how to get a D-U-N-S Number, visit [https://www.dnb.com/duns/get-a-duns.html](https://www.dnb.com/duns/get-a-duns).
**Note:**
If the company is based outside of the US, you can still register through the same website. Just be sure to select the country that the business is based out of.
## Maintaining the account
After obtaining a D-U-N-S Number, you will need to monitor and update business information as needed.
To maintain and update business information, visit [https://www.dnb.com/duns/duns-manager.html](https://www.dnb.com/duns/duns-manager).
# Update Branded App brand assets or terms and privacy links
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-update-your-branded-app-brand-assets-or-terms-privacy-links
Update app name, logo, accent color, icon, terms of service URL, and privacy policy URL from Kajabi settings.
Keep the **Branded App** aligned with an evolving brand by updating the app name, logo, accent color, icon, terms of service URL, and privacy policy URL directly from the Kajabi settings.
## Access brand settings
**To open Branded App branding settings:**
1. Select **Settings** at the lower left corner of the Kajabi dashboard.
2. Select **Branded Mobile App Settings**:
3. Navigate to Brand Assets and click **Revisit Branding**:
## Update branding info
Once you've opened the branding settings, navigate to the specific setting you want to update and make the desired adjustments.
### Brand assets
**To update the app name, logo, accent color, and/or icon:**
1. Select **Brand Assets** from the left menu.
2. Add the asset(s) as desired:
3. Click **Save & Exit** at the top left corner of the screen.
(Or, continue on to the steps below to update the Terms & Privacy links.)
### Terms & privacy
**To update the terms of service URL and/or privacy policy URL:**
1. Select **Terms & Privacy** from the left menu.
2. Add the link(s) as desired:
3. Click **Save & Exit** at the top left corner of the screen.
## Request an app build
Next, let the Kajabi team know you're ready for an app build so you can push the changes out to the live app(s).
**To request an iOS app build:**
1. Navigate to iOS in the Branded App Settings.
2. Click **Build iOS App**:
**To request an Android app build:**
1. Navigate to Android in the Branded App Settings.
2. Click **Build Android App**:
It will typically take between 30 minutes and 8 hours for the build process to complete.
## Update the app in the app store(s)
You'll receive an email notification when the build is completed. After you receive the email confirmation, follow the steps [in this article](/articles/mobile-apps/branded-app/how-to-update-your-branded-app-in-the-apple-app-store-and-google-play-store) to submit an app update to Apple and/or Google.
# Update a Branded App in the Apple App Store and Google Play Store
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-update-your-branded-app-in-the-apple-app-store-and-google-play-store
Trigger a build in Kajabi and submit updates to the Apple App Store and Google Play Store.
Keep the **Branded App** current by publishing updates to both the Apple App Store and Google Play Store. The steps below cover triggering a build in Kajabi and submitting updates to both platforms.
## Triggering an app build in Kajabi
To update the app, first trigger an app build for each app store in the Kajabi Branded Mobile App Settings.
**To trigger an app build:**
1. Click **Settings** at the lower left of the Kajabi dashboard.
2. Select **Branded Mobile App Settings**.
3. Click both the **Build iOS App** and **Build Android App** buttons.
This will trigger an app build that includes all the latest features:
It will typically take between 30 minutes to 8 hours for the build process to complete and show up in Apple/Google.
Follow the steps below to submit an app update to Apple and Google.
## Update the iOS app
After triggering an app build and waiting for the build to show up, you can update the iOS app.
**To update the app in the Apple App Store:**
1. Log into [App Store Connect](https://appstoreconnect.apple.com/).
2. Click on **My Apps**:
You should see the Branded App on the following screen.
3. Click on the title of the **Branded App** to open it for editing.
4. Inside the app, navigate to the top of the left sidebar menu.
5. Click the **blue + icon** next to "iOS App":
A "New Version" modal popup window will appear.
6. Enter a **Store Version Number**.
This can be any number, but it should be larger than the previous version number (for example, if the prior app version was 1.1, you could input 1.2).
7. Click **Create**:
If you see an error message about an incomplete form field, search the page for that field name, complete the necessary field, then click **Save** and **Add for Review** again.
8. On the next page, confirm that you see the text "Ready for Review" at the top left just below "Confirm Submission".
9. Click **Submit to App Review** at the top right of the page:
You should see a confirmation message that "Your submission has been submitted to App Review":
You'll also receive an email notifying you that the submission is under review, then another email after the review process is complete notifying you that the app is ready for sale.
## Update the Android app
After triggering an app build and waiting for the build to show up, you can update the Android app.
**To update the app in the Google Play Store:**
1. Log into [Google Play Console](https://play.google.com/console).
(We recommend logging in via an incognito browser window. If you're logged into more than one Gmail account in the same browser window, you'll encounter trouble completing the update procedure).
2. Click the title of the **Branded App** to open it for editing:
3. Inside the app, navigate to the **Release** section of the left navigation menu.
4. Click **Production**:
5. Click **Edit release** at the top right of the page (or, click **Create release** if you see that text on the blue button instead):
**Note:**
If you don't see an app bundle listed, download the AAB file from the Branded App Settings of the Kajabi account, then click the **Upload** link under **App bundles** and upload the AAB file. [Learn more about how to download the AAB file from Kajabi](/articles/mobile-apps/branded-app/how-to-publish-your-branded-app-to-the-google-play-store).
6. Scroll down to the **Release details**.
7. A release name will be generated automatically. We recommend that you keep the suggested release name.
8. Enter a note in between the language tags in the **Release notes** field:
Avoid mentioning any specific features here to avoid a potential rejection of the app. We strongly recommend only adding a simple comment like "Bug fixes and optimizations".
9. Click **Next** at the lower right corner of the page.
On the following page, you'll see information about supported devices and release delivery details. If you see a warning message at the top of the page, it can be ignored (any error messages will need to be addressed).
10. Scroll down to the **Staged roll-out** section at the bottom of the page and confirm that the **Roll-out percentage** is set to 100%:
11. Click **Save** at the lower right corner of the page.
If you don't see the popup, or you accidentally close out of it, you can also navigate to the Publishing overview page by clicking **Publishing overview** in the left navigation menu.
12. Click **Send 1 change for review** at the right side of the Publishing overview page:
13. When prompted, click **Send changes for review** to confirm the submission:
14. To verify that the app is in review, click **Releases overview** in the left navigation menu.
15. Confirm that the latest release has a release status of **In review**:
# Update Branded App screenshots
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-update-your-branded-app-screenshots
Enhance Branded App screenshot designs and update them for the Apple App Store and Google Play Store.
**Branded App screenshots** are one of the first things potential users see in the app stores. Enhance screenshots with professional design elements to make a strong first impression and encourage downloads.
## Enhance screenshot designs
During the Branded App intake process, Kajabi provides you with a set of screenshots from the app. You'll receive screenshots of the login page, library page, a course page, and a lesson page, in various sizes to meet the app store requirements.
### iOS specifications
Screenshots for the 6.5" and 5.5" iPhone models have the following dimensions:
* 1284 x 2778 px
* 1242 x 2208 px
iPad specifications for the 13" and 12.9" models have the following dimensions:
* 2048 x 2732 px
### Android specifications
Screenshots for Android phones meet the following criteria:
* 320 px minimum & 3840 px maximum
* 16:9 ratio
### Design options
While the basic screenshots provided by Kajabi are sufficient to meet app store requirements, you can choose to enhance them by adding additional eye-catching design elements such as a colored background, digital phone skin, and/or marketing copy.
**Note:**
Apple takes a firm stance on the fact that screenshots need to match what is in the app; screenshots need to better reflect that if you plan to use custom images. We recommend updating custom screenshots to include more in-app screenshots so as to increase the chances for approval. You should avoid using screenshots of the community as that tends to lead to a rejection.
For example, here are some enhanced screenshots of the Kajabi app:
### Design resources
Many software tools can help you enhance screenshot designs. For example, a graphic design software like [Canva](https://www.canva.com/) can be used to add design elements to screenshots.
There are also design tools specifically made for enhancing app screenshots. Here are a few examples:
* [AppLaunchpad](https://theapplaunchpad.com/)
* [AppMockUp](https://app-mockup.com/)
* [Appure](https://appure.io/)
* [AppScreens](https://appscreens.com)
* [Screenshot Creator](https://screenshotcreator.com/)
* [StoreShots](https://www.storeshots.net/)
## Update iOS screenshots
### Create a version of the app
1. Go into the [App Store Connect](https://appstoreconnect.apple.com/) account.
2. Click the **blue + button** to create a version of the app:
A pop-up modal will appear.
3. Enter a version number for the app in the **Store Version Number** textbox.
If the prior version number was 1.0, choose 1.1 as the version number (if you're already past version 1.1, continue on in sequence: 1.2, 1.3, 1.4, etc.):
### Update the app in the app store(s)
Follow the steps [in this article](/articles/mobile-apps/branded-app/how-to-update-your-branded-app-in-the-apple-app-store-and-google-play-store) to submit an app update to Apple and/or Google.
## Update Android screenshots
1. Go into the [Google Play Console](https://play.google.com/console).
2. Choose the app you want to edit.
3. On the side panel menu, navigate to the **Grow Users** section.
4. Click **Store presence > Store Listings**:
5. Edit **Default Store Listing**:
6. Scroll down to the **Phone** section.
7. In the box next to **Phone screenshots**, click **Upload**:
8. Select and upload the screenshot.
9. Once the screenshot is updated, click **Save**.
10. You'll see a pop-up modal asking you if you want to publish the changes. Confirm the changes.
# Use the paywall feature in a Branded App
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-use-the-paywall-feature-in-your-branded-appmember-app
Require users to purchase access before viewing restricted courses and posts in a mobile app.
The **paywall** feature in the Kajabi mobile app allows you to monetize premium content by requiring users to purchase access before viewing restricted courses and posts. This feature works in both branded mobile apps (BMA) and the consumer member app variant, seamlessly integrating with existing product offerings and providing a smooth upgrade experience for members.
## What is the paywall feature?
The paywall feature creates access restrictions for premium content in the mobile app. When users encounter locked content, they'll see an upgrade prompt that directs them to purchase the required product to unlock access.
The paywall automatically appears when users try to access:
* **Restricted courses** - Courses that require a specific product purchase
* **Premium posts** - Individual posts within courses that are locked
* **Protected content** - Any content configured with access restrictions
## How the paywall works
When members encounter restricted content, they'll see one of two paywall screens depending on where they are:
**On Course Overview Pages:** A paywall section appears at the bottom showing "Upgrade to unlock" with a description and "Upgrade now" button
**When Navigating to Locked Content:** A full-screen modal appears with a dollar sign icon and upgrade messaging, plus the option to dismiss
**Note:**
The Paywall feature currently only supports web offers. If you connect a Course with a Paywall to an In-App Offer for the Branded App, the Paywall will not be supported and the member will gain full access to the Course.
## The purchase experience
When members tap **Upgrade now**:
1. They're taken to Safari to complete the secure checkout process
2. After a successful purchase, they're automatically returned to the app
3. The app navigates them directly to the content they wanted to access:
The system remembers exactly what content triggered the paywall, so members can pick up right where they left off after purchasing.
## Current limitations
**Fixed Messaging:** Paywall text and descriptions cannot be customized - they display standard messages
**Course Content Only:** Paywalls currently work with course-based content and posts
**External Checkout:** Purchase process opens in external browser, then returns to the app; in app purchases are not currently supported
**Automatic Placement:** Paywall location is determined based on where you place it inside the course
## FAQs
### What happens if a user closes the paywall modal?
Users can dismiss the paywall modal at any time and continue browsing available content. The paywall will reappear when they try to access restricted content again.
### Can users preview locked content?
The paywall appears before users can access restricted content, so they cannot preview locked posts or courses. Consider providing clear descriptions and previews in course overviews.
### How does the app handle multiple restricted products?
Each paywall is specific to the content being accessed. If a user tries to access different restricted products, they'll see separate paywalls for each product.
### What if the purchase process fails?
If the external checkout process fails or is cancelled, users are returned to the app and can retry the purchase process. The app handles various error scenarios gracefully.
### Can I customize the paywall appearance?
No, the paywall appearance cannot be customized. It automatically uses the app's accent colors and typography, but the messaging is fixed and uses predefined localized strings that cannot be changed.
# Use Variants to personalize pages in a Branded App
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-use-variants-to-personalize-pages-in-your-branded-app
Create different versions of custom pages in your Branded App and display them to specific member segments.
With **Variants**, you can create different versions of any custom page in your branded app and display them only to specific member segments. This helps you personalize the experience based on what your members have purchased, their tags, or any segment you've defined.
## What are Variants?
Variants are alternate versions of a custom app page that only display to members who match specific targeting conditions. The system evaluates each member's profile and automatically shows them the most relevant variant.
For example, you can create variants based on:
* **Products owned** — Target members who have purchased specific products
* **Offers purchased** — Target based on specific offer purchases (owned or not owned)
* **Tags** — Use member tags for personalization
* **Custom segments** — Leverage pre-defined member segments from your contact management
**Important:**
Only custom screens can have variants. System screens (Home, Library, Community) cannot be used as parent screens for variants.
## Create a Variant
1. From the Mobile App Builder, go to the **Screens** tab.
2. Open the custom page you want to create a variant for (variants are only available for custom screens).
3. Click **Select screen variant** in the top-right corner.
4. In the drop down menu, click **+ Add a variant**:
5. Customize an **Internal Title** for your variant — this helps you manage multiple variants.
6. The variant will be an exact widget copy of your original page that you can customize (screen name, icon, widgets can all be customized):
**Note:**
Each parent screen can have up to 20 variants by default.
## Target a Variant to a segment
1. While viewing your variant, select the drop down **Show page to:**
2. Choose your targeting method:
* Products owned
* Offers purchased
* Tags
* Custom contact fields
* Email activity
* Marketing status and other attributes
* Existing Segment: Select from pre-configured contact segments
3. Configure your targeting conditions.
4. Click **Save and Publish**.
### When a member views the page, the system:
1. Evaluates each variant's targeting conditions against the member's profile
2. Returns the first matching variant in order
3. Falls back to the default page if no variants match
## Edit Variant content
1. After creating your variant, click on the **Widgets** tab, then use the second drop down menu to select your variant:
2. Customize the layout, widgets, text, images, and other content as needed.
3. Your edits will only apply to this variant, not the original page or other variants.
4. Click **Save and Publish** when you're ready.
5. Use the variant dropdown at the top of the editor to switch between different variants.
Here is an example of a Default Custom Screen vs a Variant Custom Screen:
**Content Independence:** Each variant maintains its own widget configuration and content, completely independent of the parent screen and other variants.
### Current limitations
* **Custom screens only** — Variants can only be created for custom screens, not system screens
* **No nested variants** — Variants cannot have their own variants
* **Maximum variants** — The default limit of 20 variants is per parent screen
* **Order dependency** — Variant matching follows the order in which they appear in the list
### Best practices
* **Clear naming** — Use descriptive internal titles to manage multiple variants
* **Specific targeting** — Create focused targeting conditions to avoid overlapping matches
* **Test thoroughly** — Verify variant targeting with different member profiles
* **Fallback content** — Ensure the default page provides a good experience for unmatched members
## FAQs
### What happens if a member qualifies for multiple Variants?
The system evaluates variants in the order they are displayed and shows the first matching variant. If you have overlapping targeting conditions, the variant positioned higher in the list takes precedence.
### What if a member doesn't match any Variants?
If a member does not match any variants, they will see the default version of the page (the original parent screen).
### Can I create Variants for system screens like Home or Library?
No, variants can only be created for custom screens. System screens (Home, Library, Community) cannot be used as parent screens for variants.
### How many Variants can I create per page?
You can create up to 20 variants per parent screen by default. This limit is configurable by system administrators.
### Can I create Variants of Variants?
No, the system prevents nested variants. Only parent screens can have variants; variants themselves cannot have child variants.
### How does targeting work with custom segments?
When you select a custom segment, the system stores the segment\_id in the targeting filters. At runtime, it resolves the segment's conditions and applies them to determine if a member matches.
### What happens if I delete a parent screen that has Variants?
All variants associated with the parent screen will be automatically deleted as well, since variants cannot exist without their parent screen.
### Can I reorder Variants to change their priority?
No, not at this time.
# Verify a Google Developer account
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-verify-your-google-developer-account
Complete the Google Developer account verification process for a Branded Mobile App.
Google requires you to verify a **Google Developer account** by providing information related to how it was originally registered. If you registered as an individual, you will be required to provide contact information, identity documents, and verify your email and phone number. If you registered as an organization, you will need to provide the same items listed as an individual as well as documents verifying the business validity.
## Watch for the email
Google will email you with an email that indicates, "Verify your developer account by ". You can also [log into the developer account](https://play.google.com/console/) directly and you will see the following verification request:
**Note:**
You may need to select an app before this will appear or it may appear on the account-level page.
## Start the process
1. [Log into the developer account](https://play.google.com/console/) where you can see the verification request
2. Click **Get Started**
3. You will be taken to a screen that indicates the process involved:
4. Check whether you want to verify this as an organization account or as a personal account:
**Note:**
If you select an organization account, you are required to provide the DUNS number during the verification process. [Learn to set up a D-U-N-S number](./how-to-set-up-your-d-u-n-s-number-for-your-branded-app).
**The remainder of this guide will be following the steps under the assumption you are verifying the developer account as an organization account as it is more complex and has more steps, but the majority of the steps are similar for the individual verification**.
## Create or link a Payments Profile
1. If you have not already done so, you will be requested to set up or link a **Payments Profile** before you can continue:
2. Select **Create or Select Payments Profile** on the page
If you already have one set up, like in the screenshot below, you can use it. If not, you will need to create one:
## Enter the DUNS number
Next, you will be redirected to a page where you enter in the [DUNS number](./how-to-set-up-your-d-u-n-s-number-for-your-branded-app).
You should see the following:
1. Click **Confirm** and you will see this completion page:
## Enter organization or personal information
1. Enter in the information that pertains to the organization or personal account:
2. After this, you will be asked to enter information that requires you to verify what is entered:
3. You will see a **Verify email address** text on the screen. When you enter in the email, you will be required to verify it by reading a code from the email and entering it:
**Note:**
You will have to do the same for a phone number in this process as well.
## Update Payments Profile
It is very likely at this point that you will see the following error:
1. If you see it, complete this section. If not, move on to the next section
2. You will be asked to verify the identity within the payments profile:
3. You will then be asked to upload at least 2 documents that verify the identity
Please see this list of authorized documents Google permits you to use for verification:
4. After you have verified the information requested, you will see this notification:
When you see the above notification, you have completed all the steps required to verify the account.
Now, all you need to do is wait for Google to complete the verification process on their end.
# Verify a website for Google Play Console
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-verify-your-website-for-your-google-play-console
Add a TXT record to DNS settings to verify domain ownership for a Google Developer account.
**Website verification** is a common issue with Google Developer accounts when the connected site is not verified. To resolve this, you need to add the TXT record provided by Google to the organization's DNS settings.
## Google Play Console account
1. [Log into the Google Play Console account](https://play.google.com/console/)
If website verification is required for the Developer account, a notification will appear.
2. Click the **View Details** button to proceed:
You will be redirected to a page providing detailed instructions on how to complete the website verification process.
3. Click the blue link labeled **Learn More** to access further guidance:
You will be taken to a page where you can add a website property.
4. Scroll down to find the option **Add a new Property**
5. Then, under the first step, click the blue text link labeled **Click Here** to proceed
6. You will be redirected to **Google Search Console** where you will be prompted to select a property type
7. Locate the designated field where you need to enter the custom domain
## Kajabi account
To enter the custom domain, you will need to open a web browser window or tab and log into the [Kajabi account](https://kajabi.com/login).
Then, navigate to the Domain settings:
1. Navigate to **Settings** from the Kajabi Dashboard:
2. Within the **Settings** menu and select **Domain**:
Now, you will need to copy the custom domain:
3. Identify the custom domain in the Domain settings
4. Be sure to include "www" when copying the custom domain:
## Verify domain ownership via DNS record
1. Paste the custom domain into the custom domain field:
After entering the domain you can proceed to verification.
2. Click **Continue** to initiate the domain verification process
A pop-up window will appear prompting you to verify domain ownership through a DNS record:
3. In the first step of the pop-up, select TXT from the dropdown menu
4. Then, copy the **TXT record** provided in the third step for later use:
### If you manage domain settings in Kajabi
You will need to access the DNS Settings in Kajabi:
1. Return to the Kajabi account
2. Navigate to the **Domain Settings**
3. Then, select **DNS Settings**:
4. Click **+ Custom Record**
5. Select **TXT Record**:
Add the copied TXT Record by inputting the following details:
* **Name:** "@"
* **TXT Record Value:** Paste the TXT record you copied from Google Search Console:
6. Click **Add** after entering the above details
7. Navigate back to Google Search Console to the Verify domain ownership pop-up
## Verify website in Google Play Console
You will then need to return to the Google Play Console tab.
1. Click **Verify Website** to proceed:
After verification, you will be redirected to the Account Details page.
2. Scroll down to the **Organization Website** section and confirm that the custom domain is listed
3. Then, click **Send Verification Request** to finalize the process:
**Note:**
While the verification process may often complete instantly, there are instances when an email will be sent to the Developer account email address requesting you to verify the domain from there. In such cases, you will need to return to Google Search Console and repeat the domain verification steps. This scenario is particularly common for custom domains that utilize Path B in Kajabi. Below is a sample email you may receive regarding this verification:
## Confirmation of website verification
Once the website is verified, a confirmation message will appear on the Account details page under the Organization Website section:
Now you can return to the homepage of the Google Play Console.
The notification for website verification should now be cleared, indicating successful verification.
## If domain settings are managed through a domain provider
After obtaining the TXT record, you will need to add the TXT record to the domain provider's DNS Records.
**Note:**
Refer to the domain provider's help resources for adding TXT records.
1. Navigate back to the **Verify domain ownership via DNS record** tab
2. Click **Verify**:
Then follow the verification steps above to complete the process.
# Write and update an App Store description for a Branded Mobile App
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/how-to-write-and-update-your-app-store-description-for-your-branded-mobile-app
Craft a compelling App Store description that markets a Branded Mobile App and meets Apple's requirements.
The **App Store description** is a key marketing tool for a Branded Mobile App. A well-crafted description helps potential users understand the value of the app and encourages downloads.
## Formatting and technical specifications
Readers will only be able to view approximately the first 1-2 sentences of the app description on the preview screen before having to tap a link to read the rest.
It's essential to **use the opening sentence to hook the reader's attention**. State the main value proposition or unique differentiator first:
The full app description can contain a **maximum of up to 4000 characters**. It should be formatted as a single introductory paragraph followed by a feature list.
Use bullet point formatting for the feature list so it's easy to read. And don't overwhelm readers with an exhaustive feature list. Focus on highlighting the app's most important or interesting features here:
## Brand voice and writing style
**Use the brand voice and tone** when writing the app description. If you have a playful brand, feel free to use emojis.
Every word is important. **Be engaging but concise**. When editing the description, consider whether there are any sentences where you could say the same thing using less words.
Make sure you write at the reading level of the target audience. Simple language is usually most effective, unless you're writing for a sophisticated reader about a specialized topic.
If you have an international customer base, avoid using idioms or other nuanced language that may be difficult for people from other cultural backgrounds to understand.
## What to include in a description
**Showcase the most valuable features of the app**. Highlight what's unique about the app and how using it will help the reader solve a problem or improve their life in a desirable way.
Consider including an accolade like an award or a rave review at the end of the description. You can also include social media links or a contact email if desired.
Adding search keywords to app descriptions isn't likely to affect ranking in the App Store, though it could provide some boost in Google Play. Use natural language and include keywords only when they make sense to a human reader.
Avoid including any prices in the description. Also, make sure not to add any notes about the app being in a testing or beta state, as such language is likely to be rejected by reviewers.
## Update a description
### Update an iOS description
1. Create a version of the app by logging in to the [App Store Connect](https://appstoreconnect.apple.com/) account
2. Click the blue + button to create an app version:
3. A pop-up modal will appear
4. Enter a version number for the app in the **Store Version Number** textbox. If the prior version number was 1.0, choose 1.1 as the version number (if you're already past version 1.1, continue on in sequence: 1.2, 1.3, 1.4, etc.):
5. Click **Create**
6. Update the text in the description box, click **Save**, then **Add for Review**:
Apple typically takes 24-48 hours to review any changes.
### Update an Android description
1. Login to the [Google Play Console](https://play.google.com/console) account
2. Click on the app you want to edit
3. On the left side panel menu, navigate to the **Grow Users** section
4. Click **Store presence > Store Listings > Edit Default Store Listing**
5. Edit the short and full descriptions
6. Click **Save**
You'll have the opportunity to update the app description each time you submit a version of the app. Plan to go back and optimize the description later as you add features or earn accolades.
Google Play offers a helpful [store listing experiments tool](https://play.google.com/console/about/store-listing-experiments/) that you can use to A/B test different app descriptions.
# Kajabi Branded App FAQs
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/kajabi-branded-app-faqs
Find answers to frequently asked questions about Kajabi Branded Apps.
The **Branded App** is a white-labeled mobile app customized to your brand and pre-loaded with your Kajabi content. Below are frequently asked questions organized by topic.
## Getting a Branded App
### What is a Branded App?
Branded App is a white-labeled mobile app that is customized to your brand and pre-loaded with your Kajabi evergreen courses, cohort courses, coaching programs, podcasts, community and Backstage. You will have your very own app(s) on the Apple App Store and Google Play store, all customized with your own branding and content. It is your own app with zero Kajabi branding.
### What are the benefits of launching a Branded App?
The benefits of launching a Branded App are that you will have one place to engage your members in your products and content on mobile. You can acquire customers through the app and sell them products via in-app purchases, or engage existing members through a seamless mobile experience.
Push notifications also open up a whole marketing channel for your business. You can target, schedule, and send notifications to drive people to your app or any landing page - similar to how you might use email marketing.
### How much does a Branded App cost?
The Branded App is included at no extra cost on the Pro plan. For Basic and Growth, available as \$199/mo add-on.
### Can I create multiple Branded Apps for my different Kajabi sites?
If you have multiple accounts with Kajabi, you can create one Branded App for each account. However, we don't currently support the ability to create a Branded App for more than one site within the same Kajabi account.
### How does a Branded App compare to building my own custom app?
With a Branded App, you can get your own mobile app for a fraction of the time and cost of a custom app. A custom app typically costs between 30-60k and takes 6-12 months to build. With a Branded App from Kajabi, your app goes live in weeks and you can get an app starting at just 199/mo.
### How does the Branded App compare to the free Kajabi course app?
The Kajabi course app requires customers to download the Kajabi app from the App Store and then log in to your brand. With your Branded App, you will have your own App Store listing with your logo and name, so your members will easily be able to find you.
The Branded App also has several features that are not available on the Kajabi Course app. You get a range of customization options like custom home screens, welcome and onboarding screens, custom links, and more. Plus, you can set up in-app purchases to be able to sell products and acquire customers in your app, making it a growth channel for your business. The Branded App also comes with targeted and customizable push notifications to help you in your marketing efforts.
### Does Kajabi cover app maintenance and updates?
Yes, the app is fully built and maintained by Kajabi. We will continue to improve the app experience and you will get access to any features or updates automatically. You can make changes to your branding and design at any time from your Kajabi account, and updates automatically update in the app.
### What type of maintenance does Kajabi perform for my app?
In addition to building features, we perform ongoing maintenance to keep the app secure, compliant, and compatible with frequent Apple and Google updates. This includes handling breaking changes, updating deprecated code, monitoring performance and crashes, and responding quickly to major regulation or policy shifts. Our engineering and customer experience teams also stay ahead of review best practices to maximize app approval success.
### Do I need to be a Kajabi customer to get a Branded App?
Yes, currently the Branded App is available only as an add-on to any Kajabi plan. The app is built to include your existing course, coaching, podcast, community and Backstage products within Kajabi.
### Is there a trial period so I can test the Branded App before signing up?
You can view a limited preview by navigating to Branded App > Design within the Kajabi Dashboard. However, you must purchase the Branded App add-on (or be on the Pro plan) before Kajabi begins building a working version of your Branded App.
## Branded App setup
### How long does it take to get an app published once I purchase the add-on?
The time frame for publishing an app once you purchase the add-on typically ranges from 6-8 weeks, depending on the review processes conducted by Apple and Google. It's possible for apps to be rejected during these reviews, necessitating follow-up action from our team. However, you don't need to worry about these steps—our team will handle all initial approvals and ensure that the app is ready for launch as smoothly and quickly as possible.
### Why do I need to create Apple and Google Developer Accounts?
Creating your own Apple and Google Developer Accounts is essential for a few reasons. Firstly, it allows you to manage and create in-app purchases directly, giving you full control over this aspect of the app. Secondly, you can manage and respond to app reviews, which can significantly impact the app's reputation and user feedback. Thirdly, having the app listed under your own brand and name not only enhances your brand's visibility but also aids in driving organic downloads through effective App Store Optimization (ASO) strategies.
### Can I use my Kajabi login to get into the app?
Yes, by logging into the app with your Kajabi account email, you will be logged in as an admin. If the Branded App has access to the Community Product, then you will be able to interact with the Community as an admin/moderator.
**Note:** In order to see your courses, coaching programs, or podcasts, you will still need to be granted access. Follow the steps in this help article to grant your admin email member access to your products: [What do my Customers see?](../../contacts/manage-your-contacts/what-do-my-customers-see)
### Do we need to create a certificate if it expires?
No action is needed as our system will automatically handle the certificate renewal.
## Account creation
### How does the Create Account feature work for Branded App?
To set up the Create Account feature for the Branded App, at least one evergreen course should be prominently featured on the home screen. This setup ensures that members, who have not previously purchased any products, are welcomed with a meaningful home screen experience. The presence of a course on the home screen is a condition for enabling the **Create Account** button to enhance this initial interaction.
### Can I disable the ability for users to create an account using the Branded App?
Yes, you can prevent account creation in the Branded App. If you don't utilize the home screen customization option, the feature that allows users to create an account will not be activated. This ensures that account creation is tied directly to how you choose to customize the app's home screen.
### Do members who create an account count against my Kajabi limits?
Yes, every member who creates an account through the Branded App is counted as a customer contact within the Kajabi CRM system. These signups are tagged as 'branded app signup,' allowing you to set up targeted automations specifically for users who join through the app, enabling effective retargeting and engagement.
## Selling on Apple and Google
### How do Apple and Google app offers work?
Creating app offers for Apple and Google involves setting up a distinct offer from your existing ones within the Branded App section. You must be aware that pricing these offers will include a fee imposed by Apple and Google, generally ranging from 15% to 30%. Currently, the system supports one-time purchases and subscriptions.
### What are the requirements for selling through Apple and Google?
To sell offers through Apple and Google, you must first set up the necessary banking information for these platforms. You need to create and get approval for each app offer and in-app purchase, a process that involves Apple's approval for app builds and specific in-app purchases. Following the creation of the first app offer, the course should be featured on the home screen as this is required by Apple to test and ensure the functionality of in-app purchases. The final step is submitting the app's latest build and the in-app purchases to App Store Connect for approval. Google does not have such restrictions, as they do not require approvals for either the app or any in-app purchases created.
### What countries will my in-app purchases sell in?
We will automatically publish in-app purchases through Apple and Google to 175 countries globally. Apple and Google will manage all aspects of currency conversions. To see more accurate revenue numbers, you can check revenue reports in the respective platforms.
### Why can I only choose specific pricing increments for Apple and Google offer prices?
The pricing increments available for offers within the Apple and Google platforms are set by these companies. Kajabi has no control over these increments; however, they are generally flexible enough to allow you to find an appropriate price point for your offers.
### Can I update in-app purchase prices at any point once I create an app offer?
No, unfortunately, you cannot edit pricing for existing Apple and Google app offers. We recommend creating an in-app purchase offer by setting up Apple and Google app offers. You can always disable any existing in-app purchase pricing offers if needed.
### How does the in-app purchase approval process work?
For Apple, every offer that includes an in-app purchase must be approved. When you create an offer in Kajabi, an in-app purchase is automatically created and sent to Apple for approval, typically within a few business days. Google, on the other hand, does not require a similar approval process, and in-app purchases for Google offers are instantly approved through the Google Console. However, Apple's process includes a review, and it's possible for in-app purchases to be rejected with reasons provided, requiring follow-up for approval.
### Can I sell existing offers to my Branded Mobile App audience?
Yes, you can effectively sell existing offers to the app audience using several methods. One approach is to add direct links to the offers within the app using the 'Links' feature, which can be particularly effective for higher-priced offers. Another method is to create a mini-course within the app, offered for free or at a low entry price, and use the final module to upsell to a more expensive offer. Additionally, you can utilize the fact that Kajabi tags each mobile signup with a "Branded app sign up" tag to identify app sign-ups, which in turn allows you to trigger targeted email automations, such as welcome emails and promotional offers, to upsell and engage these users effectively.
### What kind of products can I currently sell inside of the Branded Mobile App?
At the moment, the Branded Mobile App supports the sale of Courses and Community Products.
### What happens if an Apple or Google member requests a refund?
When a refund is issued by Apple or Google, you will receive a notification about this transaction. Functionality is available that will automatically revoke access to any offers that the refunded members had previously accessed.
### I noticed a member that signed up through the app is no longer in my contacts tab, but I didn't delete it. What happened?
This is a requirement from Apple and Google that is only available for members who sign up for content for the first time through the app. Apple and Google require the ability for members to delete their information, so if they proceed with this process then their information will be removed from the **Contacts** tab in Kajabi as well. You can read more about this requirement from Apple [here](https://developer.apple.com/support/offering-account-deletion-in-your-app).
If someone signs up for content outside of the app, then they will not have this option. You will maintain that information in the **Contacts** tab.
## Feature and content visibility
### Why are some of my members not seeing the latest features in the branded app?
Members might not see the latest features for a few reasons. It could be because the latest build that includes these features hasn't been approved by Apple and Google yet, or it hasn't been submitted to the App Store and Google Play Store. Another common reason is that the member hasn't updated their app to the latest version available.
### Can I block certain courses from showing up on the mobile app?
At present, it is not possible to block specific courses from appearing in the Courses tab of the mobile app. All evergreen courses owned by a member will be accessible regardless of other settings.
### Can I offer a preview of a paid Course in the app?
There isn't a separate preview mode for a paid Course. To let members sample your content before they buy, use the built-in **Course paywall**: members can open the lessons you leave unlocked, then see an upgrade prompt when they reach premium content. You can also publish a free Course as a standalone preview, but the paywall is the best option and is natively supported in the app. Learn how to [use the paywall feature in a Branded App](/articles/mobile-apps/branded-app/how-to-use-the-paywall-feature-in-your-branded-appmember-app).
## App customization and features
### I would like to add my own custom modifications to the app. Is this possible?
No, unfortunately, at this time we do not support coding customizations of the app. However, we are planning to develop customizable widgets in the future, which you will be able to integrate optionally into the app. These widgets are designed to address some of the most common pain points for members.
### Why don't my website customizations show up in the Branded App?
The Branded App does not currently support the integration of customizations made on the website, as there is no mechanism to automatically transfer these changes. The app is primarily designed for general product consumption with limited customization options, though we are planning to expand these capabilities to include more personalized adjustments to the product section in future updates.
### What kind of customizations can I do inside the app at the moment?
Currently, you can customize the Welcome Screen, Onboarding Carousels, and Home Screen within the app. You can set up multiple carousels on the Home Screen to feature specific products, which facilitates an engaging onboarding experience for members. We plan to introduce more comprehensive customization options in the future to further enhance user engagement and app personalization.
### What does the little crown mean showing up on the carousel?
The crown icon displayed on a course within the carousel signifies that the course is not yet owned by the member. This course may be available for free through an app offer or as a paid option through an in-app purchase. Once the course is purchased, the crown icon will disappear, indicating that the member now owns the course and can access it through both the carousel and the Course tab in the app.
### Where do members find their favorite lessons?
Members can favorite individual lessons in an evergreen Course by tapping the heart icon, then find them in that Course's Favorites list from the top bar. Favorites works the same in the Kajabi Mobile App and the Branded App. Learn more about [using Favorites in the mobile apps](/articles/mobile-apps/kajabi-app/use-favorites-in-the-mobile-apps).
### Will my existing community work inside of the Branded App?
Yes, if you have an existing community within Kajabi, it will be compatible with the Branded App. Members will be able to access the community through a Communities tab. Community is available with the Branded Mobile App Premium Plan (\$199/mo) or included in the Pro plan.
### What languages are supported on the app?
Currently, there are 5 languages available on the iOS and Android apps. These include English, Spanish, French, German, and Italian.
## Replacing my current app
### I currently have an app with someone else. Can I replace that app with a Kajabi Branded Mobile App?
Yes, it is entirely feasible to replace an existing app with a Kajabi Branded Mobile App. Once you make this transition, members will see the Kajabi app replacing the previous app on their devices following the next update. It is important to note that members will need to either create an account if they don't already have one linked to Kajabi offerings, or they can log in using their existing Kajabi credentials. They will not be able to continue using the same credentials that were valid with the previous app provider.
## Push notifications
### What kind of things can I do with push notifications?
Push notifications are an effective tool for engaging with members. You can target notifications based on specific segments you have created within Kajabi, or send them to all members. These notifications can be scheduled or sent in real-time, and the content of the notification is fully customizable. Additionally, notifications can direct members to various destinations, such as a specific product or an external URL, enhancing the interactive capabilities of the app.
### Am I limited on the number of push notifications I can send?
No, you are not limited on the number of push notifications you can send in a given month.
## Canceling the app or site
### What is the cancellation policy for Branded App?
The Branded App subscription will automatically renew at the end of each billing cycle unless you cancel the account before the end of the billing cycle. You may cancel the subscription at any time, in which case the subscription will continue until the end of that billing cycle before terminating. View the full [Branded App Terms & Conditions](https://legal.kajabi.com/policies/branded-app).
### What happens to my app if I archive or delete my site?
Archiving or deleting a site will disable the data feed for an app connected to that site. Customers will still see the app on their phone and in the app store, but it will no longer be functional.
### If I have multiple sites and I delete the site my app is assigned to, will I be asked to reassign the app to another site?
No, you will not be asked to transfer the app to another site after you delete the site.
### What happens to my app if I park my site?
When you are looking to Park a Kajabi Account, you will first need to reach out to [bma.support@kajabi.com](mailto:bma.support@kajabi.com) to cancel the Branded Mobile App add-on subscription. We can reactivate the app in the future if you choose to continue with the Branded Mobile App after upgrading the account from Parked.
### Will my app start working again if I reactivate my parked site?
Yes, the data feed from the site to the app will also reactivate as long as the app store account is still active and customers still have the app on their phones. Customers may need to update the app to the latest version.
# Kajabi Branded App overview
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/kajabi-branded-app-overview
Build a branded mobile app with Kajabi to increase brand authority and customer engagement.
**Branded Apps** are mobile product apps customized with your own branding, built and maintained for you by Kajabi. When you create your own app, you'll be able to:
* Brand the app with your own logo, icon, and accent color
* Open Evergreen and Cohort Courses, Coaching Program, Podcasts, Community and Backstage from inside the app
* Schedule and send push notifications to customers or a specified customer segment, and choose which page opens when they click
* Offer in-app purchases of products
## Adding an app to a Kajabi plan
You can add one Branded App that includes the Community feature to any Kajabi plan for an additional \$199/month above the base plan cost.
Have questions? Check out the [Kajabi Branded App FAQs](./kajabi-branded-app-faqs).
## Customer app experience
Once you create and publish the app in the Apple App Store and Google Play, customers will be able to download the app through either store:
When a customer downloads the app, the custom branded icon will appear on their mobile device screen. And when they open the app, they'll be able to engage with any products in which they're enrolled:
They can even open Community from within the same app:
You can also choose to allow members to sign up for an account. All app members can easily discover content when you enable the custom home screen feature and they can conveniently purchase products directly from the app:
# Manage refunds for in-app purchases
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/managing-refunds-for-in-app-purchases
Handle refunds for purchases made through Apple and Google in a Branded Mobile App.
**Refunds** for purchases made in-app are different from refunds issued for purchases made through the website checkout on Kajabi. In order for customers to request a refund for a purchase made in-app, they will need to go through Google or Apple.
Resources for customers to request a refund:
* [Requesting Refunds to Android In-App Purchases](https://support.google.com/googleplay/answer/2479637?hl=en)
## Google: Manage product access with Google refunds
Product access will have to be managed manually when a refund occurs in Google. In order for Kajabi to track and revoke product access, you will need to provide Kajabi with some information.
1. Log in to the [Google Play Console](https://developer.android.com/distribute/console)
2. Click **Order Management**:
3. Open the order marked as "refunded" by clicking the **blue right arrow**
4. Click **Copy Purchase Token** near the center of the screen:
5. Then, [submit a Branded App ticket](https://help.kajabi.com/hc/en-us/requests/new?ticket_form_id=23471936330779\&tf_24157948672411=bma-intake-form_support) with Kajabi and include the purchase token ID for Kajabi to identify the customer and revoke product access.
**Important:**
In-App Purchase refunds are handled differently from traditional Kajabi offer refunds because of some nuanced rules with Apple and Google. **Specifically, when a refund occurs, the default behavior is that access to the content is immediately revoked.** If you would like to re-grant this offer to the customer, you are absolutely welcome to do so, but keep in mind that refunds can trigger without your knowledge by Google or Apple due to them being the arbiter of any and all refunds or disputes.
# Manual vs. automatic updates in the Branded App
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/manual-vs-automatic-updates-in-the-branded-app
Identify which Branded Mobile App features update automatically and which require manual updates.
Some features in the **Branded Mobile App** are automatically updated, while others require a manual update. Understanding the difference helps you plan when changes will take effect.
## Automatically updated
These features are automatically updated and do not require a manual update:
* **All course content** including courses and added modules/lessons/quizzes
* **All community content** including circles, meetups, challenges, and custom pages
* All [customizations](./how-to-customize-your-branded-app) made in the **Branded App Design** tab including welcome screen, onboarding carousel, home page, and custom links
* Any [**in-app offers**](./how-to-create-app-offers-for-your-branded-app) created after the first one has been approved by Apple
## Requires a manual update
These updates require a manual app update to process the changes:
* Changes to [**Brand Assets**](./how-to-update-your-branded-app-brand-assets-or-terms-privacy-links) including app name, app icon, app logo, and app accent color
* Changes to the **App store page** including [App Store Description](./how-to-write-and-update-your-app-store-description-for-your-branded-mobile-app) and [Screenshots](./how-to-update-your-branded-app-screenshots)
* [Terms of Service and Privacy Policy links](./how-to-update-your-branded-app-brand-assets-or-terms-privacy-links)
# Update the target API level for a Branded App
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/update-your-target-api-level-for-your-branded-app
Meet Google's target API level requirements for an Android Branded App.
If you are receiving the notification that you need to update the **target API level**, Google has identified that the app is targeting an old version of Android:
Google requires all apps to meet the most up-to-date target API level requirements.
## Update the app
[Learn to update the Android App via the Branded App Settings page](./how-to-publish-your-branded-app-to-the-google-play-store).
Make sure there are no outstanding requirements from Google in the Developer Console in the **App Content** section after clicking into the app:
**Note:**
These warnings may remain after you have updated the app.
If you need any additional support from the Kajabi Branded App team, please [contact us here](https://help.kajabi.com/hc/en-us/requests/new?ticket_form_id=23471936330779).
# Use universal links (deep links) in a Branded App
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/using-universal-links-deep-links-in-your-branded-app
Configure deep links so a Branded App opens directly to the correct screen from emails, texts, and other apps.
**Universal links** (also known as deep links) allow a Branded App to automatically open and navigate to the correct screen when a user taps a link from email, text messages, other apps, or a mobile web browser.
Kajabi's Branded App fully supports universal links for a wide range of Community, Course, and Product experiences. The following sections describe which deep links are supported and how to enable Associated Domains to ensure the app can use Universal Links.
## What types of deep links are supported?
### Community links
**Posts & Discussions**
* Direct links to individual community posts
* Links to posts within a specific channel
* Links to channel/circle pages
**Community Features**
* Community home page
* Meetups and events
* Individual meetup pages
* Resources
* Live events
* Leaderboards
* Challenges
**Email Notifications**
Links inside these emails will open directly in the app:
* Community mention notifications
* Reply notifications
* Direct message notifications
### Course & product links
Universal links are supported for:
* Direct links to specific courses or products in the user's library
* Direct links to individual lessons within a course
## Where universal links work
Universal links work across the following surfaces:
* Email clients (Gmail, Apple Mail, Outlook, etc.)
* SMS/text messages
* Other apps that render clickable URLs
* Safari and Chrome mobile browsers
* Push notifications (when the link is included in the payload)
## Enable universal links for an iOS Branded App
### Open Apple Developer identifiers
1. Log in to the Apple Developer account
2. Visit: [https://developer.apple.com/account/resources/identifiers/list](https://developer.apple.com/account/resources/identifiers/list)
3. You'll see a list of all app identifiers
### Select the app
1. Click the **Identifiers** tab
2. Select the app from the list to open its capability settings
### Enable Associated Domains
1. Scroll through the list of capabilities
2. Locate **Associated Domains**
3. Toggle it **on**
4. Click **Save** to apply the changes
This enables the app to handle Universal Links:
### Update Kajabi Branded App settings
1. Return to the Kajabi dashboard
2. Go to **Settings** > **Branded App Settings**
3. Click **Revisit Apple**, then navigate to the **App ID** section
### Confirm the capability is enabled
1. Check the box confirming you have enabled the **Associated Domains** capability in Apple
2. Click **Continue** and save the changes throughout the flow
### Trigger a build update
After this has been enabled, you need to submit a build update to the respective app stores for approval. [Learn how to update the Branded App in the Apple App Store and Google Play Store](./how-to-update-your-branded-app-in-the-apple-app-store-and-google-play-store).
### **Use universal links in Email Campaigns (iOS)**
If you have a Branded Mobile App and include universal links in your Kajabi Email Campaigns, those links may open in Safari on iOS instead of deep-linking directly into your app. This breaks the experience for your members.
Follow the steps below to disable Kajabi’s click tracking and allow iOS to handle the link as a true universal link and open it in your Branded Mobile App.
**Important:** This workaround applies only to Heroes with a Branded Mobile App who include universal links in Email Campaigns and it only affects iOS.
Applying **disable-tracking="true"** will disable click tracking for any link where it is used.
**Add disable-tracking to a link in an Email Campaign**
1. Open the Marketing tab and click Email Campaigns from the Dashboard.
2. Select the email you would like to edit.
3. Navigate to the email’s text field.
4. Click the Source Code button inside the toolbar.
5. Locate the \ tag for the universal link. It will look similar to:
```text theme={null}
Link text
```
6. Add disable-tracking="true" inside the \ tag, like this:
```text theme={null}
Link text
```
7. Click Ok to save your changes.
## Enable universal links for an Android Branded App
There are no additional steps required to support universal links in an Android Branded App. You just need to make sure the app is on the latest version.
# Prevent or resolve a Branded App rejection from the App Store or Google Play
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/what-should-i-do-if-my-branded-app-is-rejected-by-the-app-store-or-google-play
Best practices to improve the app submission and approval process.
If you receive a rejection notice after you submit a **Branded App** to the [Apple App Store](https://appstoreconnect.apple.com/login) or [Google Play](https://developer.android.com/studio/publish), the expert team at Kajabi will review the issue and determine what action is needed to correct the problem and create a successful resubmission.
If you added us as an account admin during the intake process, the Kajabi team should also see the rejection notice and reach out to you via email with next steps. If you don't receive a follow-up email from Kajabi, please email the dedicated team at [bma.support@kajabi.com](mailto:bma.support@kajabi.com).
## Pre-launch checklist
### Best practices for a successful app approval
To ensure a smooth submission process and minimize the risk of rejection from Apple and Google, adhere to the following guidelines:
* **Maintain BMA legal pages:** Do not unpublish or delete the Branded Mobile App Privacy Policy or Terms of Service pages created by our team. These pages are mandatory for App Store compliance.
* **Preserve the V1 Test Product:** Do not delete the "V1 Test Product," as it is essential for the initial build and verification process.
* **Protect reviewer access:** Do not edit, customize, or remove the (hidden) BMA app reviewer test contact. This account is specifically used by App Store reviewers to verify your app's functionality.
* **Do not alter the review Offer:** Avoid modifying or deleting the "Branded Mobile App Review Access" Offer. This ensures reviewers have the correct permissions to access and test your content.
* **Use original assets:** Ensure all metadata — including logos, graphics, and icons — is original and complies with copyright standards.
* **Avoid external payment links:** Do not add or customize external payment mechanisms (such as third-party checkout links) while the app is in the approval phase. These often lead to immediate rejection.
* **Adhere to professional content standards:** Ensure your app name, description, and graphics do not contain profanity or offensive terms.
* **Provide substantial content:** To ensure reviewers can fully test the app's functionality, your app should contain at least one Course product with 3–5 modules and at least 3–5 videos.
* **Include a "Contact Us" page:** Both Apple and Google review your linked website to ensure members have a clear way to reach you. Maintaining a dedicated "Contact Us" page is a requirement for approval.
# Address a Google Play Console termination warning
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/what-to-do-if-your-google-play-console-warns-that-your-app-is-at-risk-of-being-terminated
Complete the required action items to prevent a Google developer account from being closed.
If the **Google Play Console** displays a warning that a developer account is at risk of being terminated or closed, you need to address the action items to avoid losing the account.
## Google Play Console warning
If you are receiving the following notification due to inactivity ("Your developer account is at risk of being closed because it's not being used"), you will need to address the action items that require attention in the Google Play Console account:
## Log into Google Play Console
1. Log into the [Google Play Console](https://play.google.com/console) and make sure that you are not clicked into a specific app.
## App content
1. Navigate to the App Content page located in the left sidebar of the Google Play Console:
## Address the action items
1. Follow the on-screen instructions to complete any action items that require attention.
For example:
If you need any additional support from the Kajabi Branded App team, please [contact us here](https://help.kajabi.com/hc/en-us/requests/new?ticket_form_id=23471936330779).
# Select Branded App data privacy options for Apple App Store
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/what-to-select-for-branded-app-data-privacy-for-apple-app-store
Submit data collection and privacy information for an iOS Branded App in App Store Connect.
Customers need to know how you'll handle their personal **data privacy** information prior to downloading the app. All app providers are required to provide this information when submitting their app for publication. The following sections walk through how to share the types of data an iOS app will collect.
## Why am I being asked to provide data safety information?
Customers need to know how you'll handle their personal data prior to downloading the app. All app providers are required to provide this information when submitting their app for publication.
## Complete the form to submit the data
Enter the selections into the **App Privacy** information form in the App Store dashboard as directed in this guide. Any options not listed here can be left unchecked.
**To complete the App Privacy form:**
1. Under **Trust & Safety** in the left menu, click **App Privacy**.
**Note:**
If you're not already logged into [App Store Connect](https://appstoreconnect.apple.com/), first login and select the Branded App icon to get to the App Privacy menu.
2. Then, click **Get Started**:
On the Data Collection popup modal that appears:
3. Select **Yes, we collect data from this app**
4. Click **Next**:
You'll be presented with a page of additional Data Collection information:
Scroll down to the **Contact Info** section.
### Contact Info
Check the checkbox next to:
* **Email Address:**
Skip past the next few sections and continue to scroll down the list to the **Identifiers** section.
### Identifiers
Check the checkbox next to:
* **User ID**
Skip down to the **Usage Data** section next.
### Usage Data
Check the checkbox next to:
* **Product Interaction**
### Diagnostics
Check the checkboxes next to:
* **Crash Data**
* **Other Diagnostic Data**
The remaining checkboxes can be left unselected.
5. Click **Save**:
An "Additional Setup Required" notification will pop up to inform you that you'll finish setting up the data types on the following page.
6. Click **OK** to close the notification popup. You're already on the correct page.
The additional questions you'll need to answer can be accessed by clicking into a set of gray boxes under **Data Types**. First, locate the gray box beneath Data Types > Contact Info > Email Address:
### Contact Info
#### Email Address
1. Click **Set Up Email Address**:
2. Check the checkbox next to **App Functionality**
3. Click **Next**:
4. Select **Yes, email addresses collected from this app are linked to the user's identity**
5. Click **Next**:
6. Review the information about Tracking and Third-Party Data and click **Next**
7. Review the tracking examples and click **Next**
8. Select **No, we do not use email addresses for tracking purposes**
9. Click **Save**:
Scroll down to the **Identifiers** section.
### Identifiers
#### User ID
1. Click **Set Up User ID**:
2. Check the checkbox next to **App Functionality**
3. Click **Next**:
4. Select **Yes, user IDs collected from this app are linked to the user's identity**
5. Click **Next**:
6. Select **No, we do not use user IDs for tracking purposes**
7. Click **Save**:
Scroll down to the **Usage Data** section.
### Usage Data
#### Product Interaction
1. Click **Set Up Product Interaction**:
2. Check the checkbox next to **Analytics**
3. Check the checkbox next to **App Functionality**
4. Click **Next**:
5. Select **No, product interaction data collected from this app is not linked to the user's identity**
6. Click **Next**:
7. Select **No, we do not use product interaction data for tracking purposes**
8. Click **Save**:
Scroll down to the **Diagnostics** section.
### Diagnostics
#### Crash Data
1. Click **Set Up Crash Data**:
2. Check the checkbox next to **App Functionality**
3. Click **Next**:
4. Select **No, crash data collected from this app is not linked to the user's identity**
5. Click **Next**:
6. Select **No, we do not use crash data for tracking purposes**
7. Click **Save**:
#### Other Diagnostic Data
1. Click **Set Up Other Diagnostic Data**:
2. Check the checkbox next to **App Functionality**
3. Click **Next**:
4. Select **No, other diagnostic data collected from this app is not linked to the user's identity**
5. Click **Next**:
6. Select **No, we do not use other diagnostic data for tracking purposes**
7. Click **Save**:
8. Scroll up to the top right corner of the page and click **Publish** to save the data privacy information
9. Click **Publish** again in the popup modal to confirm
You can now return to the Kajabi app and click **Complete** to finish the iOS app intake process.
# Select Branded App data types and data safety for Google Play Store
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/what-to-select-for-branded-app-data-types-and-data-safety-for-google-play-store
Upload a CSV file to Google Play Console to submit Android data safety information for a Branded App.
Customers need to know how you'll handle their personal data prior to downloading the app. All app providers are required to provide **data safety** information when submitting their app for publication. The following sections walk through how to upload a CSV file to Google Play Console to submit Android data safety information.
## Why am I being asked to provide data safety information?
Customers need to know how you'll handle their personal data prior to downloading the app. All app providers are required to provide this information when submitting their app for publication.
## Import data safety information
Download a CSV file of data using the link provided in this guide and then upload the file on the **Data safety** page in Google Play Console.
**Note:**
We strongly recommend double checking to verify that everything looks correct to you and is accurate for the specific business before submitting.
**To download the CSV file:**
1. First, click here to open the CSV file in a different browser tab: [**Data Types CSV File**](https://drive.google.com/file/d/1WmpkqhRtNWtCVHSof-X8TviBzUvM_l9i/view)
2. Click the **Download** icon at the top right of the CSV preview screen. The CSV file will download to the computer locally.
**To import the CSV file:**
1. On the [Google Play](https://play.google.com/console) dashboard, expand the tasks under "Set up your app." Or, navigate to **Policy and programs** > **App content** in the left menu.
2. Select **Data safety**
3. An overview tutorial will appear in a popup modal. Click **Next** at each prompt, then click **Start** to exit the overview.
4. On the **Data safety** page, click **Import from CSV** at the top right:
5. Upload the CSV file and click **Save**
6. Press **Next** each time you're prompted until you see the final confirmation page:
7. Confirm that all of the information is correct, then click **Save**:
Return to the Google Play dashboard to continue the next steps of the app intake process.
# Update Kajabi settings for an iOS app transfer
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/what-to-update-in-kajabi-for-your-ios-app
Update Team ID, App ID, Push Notification Key, and API Key in Kajabi after transferring an iOS app.
After completing the [**iOS app** transfer process](/articles/mobile-apps/branded-app/how-to-complete-the-ios-app-transfer-process) to an Apple Developer account, the following Kajabi settings need to be updated.
## Update the Team ID
First, update the Team ID in the Branded App iOS settings.
**To open the Branded App iOS settings:**
1. Log into the [Kajabi account](https://app.kajabi.com/login)
2. Select **Settings** at the lower left corner of the Kajabi dashboard
3. Then, select **Branded Mobile App Settings**:
4. Navigate to iOS and click **Revisit iOS**:
5. Select **Team ID** from the left navigation menu
6. Then, log into [The Apple Developer Site](https://developer.apple.com/account) in a different browser tab (keep this tab open)
7. Scroll down the page to "Membership details"
8. Copy the Team ID and paste it into the **Team ID** field in Kajabi:
## Update the App ID
Next, add an identifier and add the bundle ID:
1. Select **App ID** from the left navigation menu
2. Then, [log into Apple Identifier](https://developer.apple.com/account/resources/identifiers/list) using a different browser tab (keep this tab open)
3. Click on **Identifiers** in the middle column under **Certificates, IDs, & Profiles**
4. Follow the steps on the screen to create the identifier
**Note:**
Description: The App name. Bundle ID: you should have the unique ID on the screen.
## Update the Push Notification Key
Next, add a Push Notification Key and upload the Push Notification Key file:
1. Select **Push Notification Key** from the left navigation menu in Kajabi
2. Follow the steps on the screen to create and download the key file in App Store Connect
3. Then, click **Upload Push Notification Key** and select the APNS Key file:
## Update the API Key
Update the API Key ID and Issuer ID, and upload the API Key:
1. Select **API Key** from the left navigation menu in Kajabi
2. Follow the steps on the screen to create and download the key in App Store Connect
3. Copy the Issuer ID and paste it into the **Issuer ID** field in Kajabi
4. Then, copy the Key ID and paste it into the **Key ID** field in Kajabi
5. Finally, click **Upload API Key** and select the API Key file:
## Add the In-App Purchase API Key
Finally, you'll also need to upload an In-App Purchase API Key for the app.
**To create the In-App Purchase API Key:**
1. Log into the [App Store Connect](https://appstoreconnect.apple.com/) dashboard in a separate browser tab
2. Select **Users and Access**
3. Select **Integrations**
4. Select **In-App Purchase**
5. Click the blue "+" sign to create an API Key:
6. Enter any **Name** for the key, then click **Generate**:
7. Next, click **Download In-App Purchase Key** to download the key:
8. Click **Download** again to confirm. You can only download the key once, so make sure to store it in a secure location:
9. Navigate back to the Kajabi Branded App settings
10. Select **In App Purchase Key** from the left navigation menu
11. Copy the Issuer ID and paste it into the **Issuer ID** field
12. Copy the Key ID and paste it into the **Key ID** field
13. Click **Upload In-App Purchase Key** and select the key file
# Branded Mobile App community updates
Source: https://help.kajabi.com/articles/mobile-apps/branded-app/whats-new-with-the-branded-mobile-app
Explore the latest updates to the Branded Mobile App community experience.
The **Branded Mobile App** includes major updates to the Community experience. The following sections cover the latest improvements and upcoming features.
## Recent updates
The native Community experience offers major design and performance improvements. You will see improved performance in the following areas:
* **Feed Browsing and Engagement:** Browse the main community feed and view all post types with author names, timestamps, live reaction counts, and pinned posts
* **Post Creation and Editing:** Create posts with images or videos, text formatting, and @-mentions. You can edit posts anytime without losing content
* **Comments and Threaded Replies:** Maintain full conversations with support for images and videos in comments and replies
* **Rich-Media Rendering:** Experience improved link previews, swipeable photo/video carousels, and inline video playback
* **Navigation:** Improved menu navigation
* **Notification Inbox:** Click into the Bell icon to see unread notifications. You also have the ability to filter and view past notifications
* **Circle Browsing & Engagement:** Engage in specific circles with the same tools as the main feed
* **Direct Messaging:** Send private messages to other members, with deep links to specific conversations
* **Admin Login:** Use Kajabi login credentials to manage Community as a founder, admin, or moderator
**Note:**
The following features are coming soon and will roll out over the upcoming weeks and months. Apps must be on version 4.0.3 or higher to see these updates.
## What's next
* Dark Mode
* Search functionality
# Manage push notifications in the Kajabi Mobile App
Source: https://help.kajabi.com/articles/mobile-apps/kajabi-app/can-users-enable-and-disable-push-notifications-from-the-kajabi-mobile-app
Enable and disable push notifications from the Kajabi Mobile App through phone settings.
Yes, customers can enable and disable **push notifications** from the Kajabi Mobile App directly through their phone settings.
For more information on enabling and disabling push notifications through phone settings, refer to the following guides:
* Apple's guide on how to [Change notification settings on iPhone](https://support.apple.com/guide/iphone/change-notification-settings-iph7c3d96bab/ios)
* Google's guide on how to [Control notifications on Android](https://support.google.com/android/answer/9079661?hl=en)
# Customize the Kajabi Mobile App
Source: https://help.kajabi.com/articles/mobile-apps/kajabi-app/customizing-the-kajabi-mobile-app
Add a custom icon and color scheme to reflect your personal branding in the Kajabi Mobile App.
Adding a custom icon and color scheme to reflect your personal branding creates a consistent and fluid user experience for your customers. Follow this guide to customize your **Kajabi Mobile App**.
## Change the site icon for the mobile app
1. Click **Settings** from the Dashboard
2. Click into **Mobile App Settings**
3. In the **Mobile Icon** section, click **Select Image**
4. Upload the desired image and click **Save**
5. Your icon will then be displayed in the site drawer of the Kajabi Mobile App:
## Select the mobile app color palette
To customize your Mobile App Colors, log into your Kajabi Account to access your Mobile App Settings in a web browser:
1. Open the **Settings** tab from the Dashboard
2. Select **Mobile App Settings**
3. Navigate to the **App Colors** section
4. Select the color palette that best fits your design vision
5. Click **Save** to apply
6. Once logging in to your Product on the Mobile App, you will see the selected color scheme:
**Tip:**
If you are not seeing the color scheme in your Mobile App, try refreshing the app or closing the app and reopening it.
## Color palette options
Select one of the created color schemes to be applied to all your Products in the Kajabi Mobile App to further your branding and tone.
## FAQs
### Why can't I customize the color scheme?
The Mobile App Color Palette is designed according to the [Web Accessibility Guidelines](https://www.w3.org/WAI/fundamentals/components/), ensuring that content is accessible to everyone, regardless of disability or user device. Each color includes a primary and a secondary color that can be previewed when customizing your App Colors in a web browser.
# Download and log in to the Kajabi Mobile App
Source: https://help.kajabi.com/articles/mobile-apps/kajabi-app/downloading-logging-in-to-the-kajabi-mobile-app
Access all of your Kajabi Courses in one convenient place.
The **Kajabi Mobile App** lets you keep watching your content even away from your computer. Access all of your Kajabi Courses in one convenient place, no matter which expert you are learning from.
Download the Kajabi Mobile App for free and experience the ease of one-touch access for yourself.
**Note:**
Looking for the Kajabi app to manage your own site? Learn more about the [Creator app](../../mobile-apps/kajabi-creator-app/kajabi-creator-mobile-app).
**Note:**
Changes have been made to the interactive features of the Kajabi iOS mobile app that affect the Community, post comments, and assessments. [Learn more about the Kajabi iOS mobile app changes and what they mean for you](../branded-app/kajabi-branded-app-overview).
## Log in to the Kajabi Mobile App
1. Open the Kajabi Mobile App and click **Get Started**
2. Enter the email address used at checkout. You will then be directed to confirm your account via email. Open the email on the **same device** where you're using the Kajabi app. The subject of the email is **Confirm your email address with Kajabi**.
3. Confirm your account on your device by clicking **Confirm Email Address**. Alternatively, copy the six-digit code in the email and paste it into the Kajabi App. The link and code will expire after 2 hours.
4. Once the email is confirmed, click **Open Kajabi App**
5. You will then see your library. Select the Courses you wish to use on the mobile app
6. Once it has finished loading, you can use the mobile app for your selected Courses:
**Tip:**
If you are experiencing issues logging in, see the [Kajabi App troubleshooting guide](./troubleshooting-kajabi-mobile-app-issues).
# Get started with the Kajabi Mobile App
Source: https://help.kajabi.com/articles/mobile-apps/kajabi-app/getting-started-with-kajabi-mobile-app
Understand the benefits of the Kajabi Mobile App compared to mobile browser access.
The **Kajabi Mobile App** provides your customers with a superior experience compared to accessing content through a mobile browser. The app enhances the way your customers experience your content in an easy-to-use, engaging, and on-the-go design.
## Access content with one touch
When trying to access your content with a mobile browser, your customers need to remember the URL of your Course and the login they created when they purchased.
Your customers might have those bookmarks saved on their computer at home, but that doesn't help when they want to pull up your Course to listen to while riding the train or driving long commutes.
The Kajabi Mobile App puts your content one tap away, with no logins to remember.
When your customers download the app, they sign in once using a "magic link" and then they never have to worry about typing in a URL or password ever again.
Just one tap to open the app — that's it.
**Tip:**
You can include a link pointing to **kajabimobileapp\://** on your website. This will open the Kajabi Mobile App on a person's device if they have it installed.
## Enable push notifications for instant engagement
Push notifications are perhaps the biggest engagement win inside the app vs. using the mobile browser experience.
They put your important updates front and center on the screen your customers look at the most so that they're received as quickly as a text message.
With push notifications, you are never more than an arm's length away from engaging with your customers on the go.
# Download files on Kajabi Mobile App (iOS)
Source: https://help.kajabi.com/articles/mobile-apps/kajabi-app/how-to-download-files-on-kajabi-mobile-app-ios
Save files from the Kajabi App to an iOS device.
iOS devices allow you to download PDFs, Word, Excel, PowerPoint, .zip, .txt, .mp3, .M4a, .wav, .mov, and more. Follow these steps to download a file from the **Kajabi App** to your iOS device.
**Note:**
The current Kajabi App does not preview downloadable files, but downloading files to your iOS device is still possible by following the steps below.
## Download content from inside the Kajabi App
1. Click the content you would like to download from inside the **Downloads** section of a lesson. In this example, we are downloading a PNG file:
2. Next, you will have the available options for how you can save the file. This will vary by file type, but we recommend choosing **Save to Files**:
3. At this point, you may rename the file and select a specific location before saving it. Once you're done, click **Save**:
4. Your saved downloaded file can then be found in the folder or application you chose. In this example, because we saved our downloaded content to Files, it will be found in the **Files** app:
# Preview the Kajabi Mobile App
Source: https://help.kajabi.com/articles/mobile-apps/kajabi-app/how-to-preview-the-kajabi-mobile-app
View Products from the perspective of customers in the mobile app.
As a Kajabi Admin, you can preview how your Products appear to customers in the **Kajabi Mobile App**. This requires creating a test Contact with an alternate email address.
## Create a test Contact
To view your Product in the mobile app from the perspective of your customers, create a Contact with an alternate email address to your admin login and grant yourself an Offer.
1. Select the **Contacts** tab from your Dashboard
2. Click **Add Contacts**
3. Add yourself using an alternate email address to your admin login. If you don't have one, it only takes a few minutes to create and verify an email address
4. Once you have added yourself as a Contact, grant that Contact an Offer. [Learn more about granting an Offer](../../sales/offers/how-to-grant-an-offer)
5. You will then receive a [Grant Confirmation email](../../account-settings/notifications/edit-automated-email-notifications). Follow the instructions in the email to verify your account:
## Log into the Kajabi Mobile App
Using that alternate email account, log in to the Kajabi Mobile App:
1. Open the Kajabi Mobile App. Use your test Contact email in the **Email Address** field after pressing **Get Started**
2. This will send you through the email verification process. You can now see your Products from the perspective of your customers
3. You and your members are able to access Courses, Coaching, private Podcast, and Backstage products from the Kajabi Mobile App
# Resolve access issues with the Kajabi Mobile App
Source: https://help.kajabi.com/articles/mobile-apps/kajabi-app/how-to-resolve-access-issues-with-the-kajabi-mobile-app
Troubleshoot and resolve common access issues with the Kajabi Mobile App.
If you are having difficulty accessing your Kajabi account through the **Kajabi Mobile App**, the steps below cover the most common fixes, including clearing your cache to resetting your password.
**Tip:** Learn more about what the Kajabi Mobile App supports and how it works. [View the Kajabi Mobile App overview](https://help.kajabi.com/articles/mobile-apps/kajabi-app/getting-started-with-kajabi-mobile-app).
## Clear cache and reinstall the app
Clearing the cache and reinstalling the app can resolve many access issues.
### For iOS
1. Press and hold the **Kajabi** app icon on your home screen, then tap **Remove App** and confirm.
2. Restart your device by going to **Settings** > **General** > **Shut Down**, then turn it back on.
3. Go to the **App Store**, search for **Kajabi**, and reinstall the app.
### For Android
1. Go to **Settings** > **Apps** > **Kajabi** > **Uninstall**.
2. Restart your device using your device's power menu.
3. Open the **Google Play Store**, search for **Kajabi**, and reinstall the app.
## Verify email and confirm access
If you have not yet verified your email address, follow these steps to confirm access.
1. Log into the email account using a web browser.
2. Check for a confirmation email from Kajabi with a subject like "Confirm Your Email Address."
3. Open the email and click the **Confirm Email Address** button.
4. After confirming, tap **Open Kajabi App** in the email to access the account.
## Reset the password
If you are unable to log in, resetting your password may resolve the issue.
1. Go to the [**Kajabi login page**](https://app.kajabi.com/).
2. Click **Forgot Password?** and enter the email address, then submit the form.
3. Check the email inbox for a password reset email from Kajabi.
4. Follow the instructions in the email to create a password.
5. Try logging in again using the email and password in the Kajabi Mobile App.
## Troubleshoot app freezing
If the Kajabi Mobile App is freezing or becoming unresponsive, try the following steps:
1. Close the app completely by swiping it away from your recent apps, then reopen it.
2. Check your internet connection. Switch between Wi-Fi and mobile data to see if the issue persists.
3. Check if a Kajabi app update is available in the **App Store** or **Google Play Store** and install it.
4. Clear the app cache and reinstall the app following the steps in the [Clear cache and reinstall the app](#clear-cache-and-reinstall-the-app) section above.
5. If the issue continues, check the [Kajabi status page](https://status.kajabi.com) for any ongoing platform issues.
## FAQs
### Which version of the Kajabi Mobile App is supported?
Always use the latest version of the Kajabi Mobile App for the best experience. Check the **App Store** or **Google Play Store** for available updates and install them regularly.
### Can I access my Kajabi admin dashboard from the mobile app?
No. The Kajabi Mobile App is designed for your customers to access the content they have purchased. To manage your Kajabi account, log in at [app.kajabi.com](https://app.kajabi.com) using a desktop or mobile browser.
### What should I do if none of these steps resolve my issue?
If you have tried all the steps above and are still experiencing issues, contact Kajabi Support for further assistance. [Learn how to contact Kajabi Support](https://help.kajabi.com/articles/resources/support/how-to-contact-kajabi-support#contact-kajabi-support).
# Update the Kajabi Mobile App
Source: https://help.kajabi.com/articles/mobile-apps/kajabi-app/how-to-update-the-kajabi-mobile-app
Keep the Kajabi Mobile App current with the latest version on iOS and Android.
Keeping the **Kajabi Mobile App** updated ensures you have access to the latest features and bug fixes. Use this guide to update the app on both iOS and Android devices.
## Manually update the app on an Apple device
To update the Kajabi Mobile App manually on an iOS device:
1. Open the **App Store.**
2. Tap your **profile icon** at the top of the screen.
3. Pull down to refresh this page.
4. Scroll to see the pending Kajabi app update. Tap **Update** next to the Kajabi app to update the app.
## Manually update the app on an Android device
Depending on mobile device settings, apps may update automatically or can be updated manually.
To update the Kajabi Mobile App manually on an Android device:
1. Open the **Google Play Store** app.
2. Tap the **Menu** icon.
3. Tap **My apps & games.**
4. Locate the Kajabi app under the **Updates pending** section.
5. Tap **Update**.
**Note:** If you do not see the Kajabi Mobile App in the list of updates pending, you may have the latest version installed and may not require an update.
## Enable automatic updates
To avoid manually updating the app each time a new version is released, you can enable automatic updates on your device.
**On iOS:**
1. Open your device **Settings.**
2. Tap **Apps**, then tap **App Store.**
3. Under **Automatic Downloads**, toggle on **App Updates.**
**On Android:**
1. Open the **Google Play Store** app.
2. Tap your **profile icon.**
3. Tap **Settings**, then tap **Network preferences.**
4. Tap **Auto-update apps** and select your preferred option.
# Troubleshoot Kajabi Mobile App issues
Source: https://help.kajabi.com/articles/mobile-apps/kajabi-app/troubleshooting-kajabi-mobile-app-issues
Find solutions for common Kajabi Mobile App problems and errors.
The **Kajabi Mobile App** may occasionally behave unexpectedly due to outdated versions, confirmation link issues, or account-level problems. Use this guide to diagnose and resolve the most common issues on both iOS and Android devices.
**Note:**
If your mobile device is using a developer, beta, or otherwise early-access operating system version such as those available through Android Beta or Apple's iOS Public Beta, you may encounter errors when using the Kajabi App. These alternative versions are often unfinished or used as testing grounds for platform-specific bugs that can affect third-party applications.
## Resolve an unresponsive app or unexpected quitting
If the Kajabi Mobile App is unresponsive or quitting unexpectedly, you may need to update the app to the latest version, force close the app, or restart your device.
### iOS devices (iPhone)
#### Update the app
If you haven't updated the Kajabi Mobile App in a while, your app may not operate as expected. Follow Kajabi's guide on [how to manually update the Kajabi Mobile App on your iOS device](./how-to-update-the-kajabi-mobile-app#manually-update-the-app-on-an-apple-device).
If you need further assistance, refer to [Apple's guide for updating your Apple apps](https://support.apple.com/en-us/HT202180).
#### Force close the app to reset and clear its memory
If your Kajabi Mobile App is updated to the latest version and continues to remain unresponsive, the app may be stuck or overloaded.
See [Apple's guide for force closing apps](https://support.apple.com/en-us/HT201330) to force close the app to reset and clear its memory.
#### Restart the iOS device
Follow [Apple's guide on how to restart your iPhone](https://support.apple.com/en-us/HT201559).
#### Log in using a mobile web browser
Logging in to a customer account using a device's mobile web browser will help determine if the issue is specific to the Kajabi Mobile App or if there is an issue with the customer account.
If you are able to log in using the device's mobile web browser but are still experiencing mobile app issues, [contact our support team](../../resources/support/how-to-contact-kajabi-support).
### Android devices (Galaxy, Pixel, etc.)
#### Update the app
First, check that the Kajabi App is up to date with the latest version in the Google Play app:
1. Open the **Google Play app**
2. Click the **three horizontal lines** at the top of the screen
3. Select **My apps & games**
4. Choose to **Update all**, or go through each app and update only the ones needed
If you need further assistance, refer to [Google's guide for updating your Android apps](https://support.google.com/googleplay/answer/113412?hl=en).
#### Force stop the app to reset and clear its memory
If your Kajabi Mobile App is updated to the latest version and continues to remain unresponsive, the app may be stuck or overloaded.
Force stop the app to reset and clear its memory:
1. Open **Android Settings**
2. Scroll down and open **Apps** or **Application Manager**
3. Locate Kajabi in the list of apps
4. Select **Kajabi**
5. Click **Force Stop**
If you need further assistance, refer to [Google's guide on force stopping an Android app](https://support.google.com/android/answer/2668665?hl=en#zippy=%2Cforce-stop-the-app).
#### Restart the Android device
Since restarting an Android device varies by device, research the specific Android device online or contact the device's manufacturer for further instructions on how to restart the device.
#### Log in using a mobile web browser
Logging in to a customer account using a device's mobile web browser will help determine if the issue is specific to the Kajabi Mobile App or if there is an issue with the customer account.
If you are able to log in using the device's mobile web browser but are still experiencing mobile app issues, [contact our support team](../../resources/support/how-to-contact-kajabi-support).
## Locate a missing confirmation email
After a customer's email address has been entered in the Kajabi Mobile App, they will be prompted to open their device's email app to confirm the email address. The subject line of the email is **Confirm your email address with Kajabi**.
In order for the Kajabi Mobile App to connect to the customer's email address, the link must be clicked on the device with the Kajabi Mobile App installed.
Example confirmation email:
If the email address entered into the Kajabi Mobile App is not connected to the mobile device's email app, the confirmation email may not appear on the device.
If this is the case, forward the email from our support team to the email address connected to the mobile device.
**Note:**
The confirmation link is a single-use link and will expire after the first click. Forward the email before clicking **Confirm Email Address** to ensure that the link does not expire.
### Check spam or junk mail folders
Sometimes the confirmation email sent by Kajabi can end up in spam or junk mail folders.
Be sure to double check spam or junk mail folders to ensure the confirmation email has not been overlooked.
If you are still unable to locate the confirmation email in spam or junk mail folders, [contact our support team for further assistance](../../resources/support/how-to-contact-kajabi-support).
**Note:**
Be sure to check the email inbox frequently to avoid the 2-hour link expiration. If the link expires before confirmation, reinstall the app to re-enter the email address and receive a link.
## Resolve an expired confirmation link
### The link has exceeded the 2-hour expiration time
If the link has passed its expiration time, uninstall and reinstall the app to enter the email address again.
Then, return to the email inbox to open the confirmation link.
**Tip:**
Remove previous confirmation emails to ensure that the correct confirmation link is clicked.
### The link has already been clicked
The confirmation link is a single-use link. If you are receiving this message within the 2-hour time frame, the link may have already been clicked.
Return to the email inbox and delete the confirmation email. This will help avoid any confusion when receiving a confirmation email.
After removing previous confirmation emails, uninstall and reinstall the Kajabi Mobile App to re-enter the email address. A link will then be sent.
Proceed to confirm the email address from the device used to install the Kajabi Mobile App.
## Resolve repeated email confirmation prompts
If you have clicked the **Confirm Email Address** button on a mobile device and are redirected back to the Kajabi Mobile App and asked to confirm the email address again, follow these steps:
1. Press and hold the **Confirm Email Address** button (1-2 seconds) in the email app until the option appears to open the link in a browser
2. Open the link in the browser and click **Open Kajabi App**:
You should no longer be prompted to confirm the email address in the Kajabi Mobile App.
## Help customers use the mobile app
In order to assist your customers, it is important to understand how your customers log in to the Kajabi Mobile App.
Start by reviewing Kajabi's guide on [downloading and logging in to the Kajabi Mobile App](./downloading-logging-in-to-the-kajabi-mobile-app).
### If a customer is unable to log in to the Kajabi Mobile App
Since the Kajabi Mobile App is designed for customer use only, it is important to verify the email address entered into the Kajabi Mobile App matches an email address associated with a valid customer account.
As an Admin, you can assist your customer by confirming they are using a valid customer email address.
Start by asking your customer to confirm the email address they are using to log in to the Kajabi Mobile App.
Then:
1. Navigate to the **Contacts** tab from your Dashboard
2. Locate the email address your customer provided you in your list
3. Ensure there is a checkmark icon attached to their avatar:
**Tip:**
Customers can test their email address by [logging into your site with a web browser](./troubleshooting-kajabi-mobile-app-issues) (e.g., Safari, Chrome, Firefox, etc.) on their mobile device. If the email address is not accepted through the web browser they may be using incorrect login information.
### If a customer is able to log in but has no digital Products
Has your customer successfully logged into the Kajabi Mobile App, but there are no digital Products?
As an Admin, you can confirm the Products that your customer should have access to in your Contacts Profile.
Start by asking your customer to confirm the email address they are using to log in to the Kajabi Mobile App.
Then:
1. Navigate to the **Contacts** tab from your Dashboard
2. Locate the email address your customer provided you in your list
3. Click on the customer's name
4. Select the **Products** tab
5. View the Products your customer should have access to:
**Note:**
If you are an Admin of your Kajabi site and you are looking to test the Kajabi Mobile App with your Products, follow our guide on [preview Products on the Mobile App](./how-to-preview-the-kajabi-mobile-app).
## Resolve Community access issues on the Kajabi Mobile App
Legacy Communities are not available in the Kajabi Mobile App. If you are using the latest version of Kajabi Communities, check that customers have been granted the Offer that includes your Community.
# Use Favorites in the mobile apps
Source: https://help.kajabi.com/articles/mobile-apps/kajabi-app/use-favorites-in-the-mobile-apps
Save evergreen Course lessons to a per-Course Favorites list in the Kajabi Mobile App and the Branded App.
**Favorites** let members bookmark the lessons they want to return to. Tapping the heart icon on a lesson adds it to a Favorites list for that Course, so members can jump straight back to key material instead of scrolling through modules.
Favorites works the same way in both the Kajabi Mobile App and the Branded App, and a member's favorites stay in sync across their devices and both apps.
**Note:**
Favorites is available for lessons in evergreen Courses only. It is not available in Cohort Courses, Coaching, or Podcasts.
## Favorite a lesson
A member can favorite any lesson in an evergreen Course, regardless of whether the lesson is audio, video, or text.
To favorite a lesson:
1. Open a **Course** in the Kajabi Mobile App or the Branded App.
2. Go to the lesson you want to save.
3. Tap the **heart icon** to add the lesson to Favorites.
Tap the **heart icon** again at any time to remove the lesson from Favorites.
## View favorite lessons
Favorites are organized by Course, so each Course keeps its own list.
To view favorite lessons, open the Course and select **Favorites** from the top bar. The list shows every lesson favorited in that Course.
## FAQs
### Do favorites sync across devices and apps?
Yes. Favorites sync across all of a member's devices and between the Kajabi Mobile App and the Branded App. A lesson favorited on one device appears everywhere the member is signed in.
### Can members favorite a whole Course, Podcast, or Coaching session?
No. Favorites applies to individual lessons within an evergreen Course. It isn't available for Cohort Courses, Coaching, or Podcasts.
### Where do members find their favorite lessons?
Members open the Course and select **Favorites** from the top bar. Each Course keeps a separate Favorites list.
# Email address limits in the Kajabi Mobile App
Source: https://help.kajabi.com/articles/mobile-apps/kajabi-app/what-is-the-limit-to-the-number-of-emails-a-user-can-add-to-the-kajabi-mobile-app
Understand the number of email addresses customers can add to the Kajabi Mobile App.
There is no limit to the number of email addresses a customer can add to their **Kajabi Mobile App**.
This allows customers that may have purchased multiple Products with different email addresses to access every Product purchased through a single mobile app.
**Note:**
If a customer adds two different email addresses to their Kajabi Mobile App and both email addresses have purchased the same Product, the progress and info associated with the Product will be connected to the last email address added to the app.
# Explore Kajabi Mobile App features
Source: https://help.kajabi.com/articles/mobile-apps/kajabi-app/whats-new-with-the-kajabi-mobile-app
Discover the features available in the Kajabi Mobile App for your members.
The **Kajabi Mobile App** gives your members on-the-go access to Courses, Coaching, Community, Podcasts, and Backstage from a single, native experience. Each feature below is designed to increase engagement and make content consumption effortless.
## Access the native Community experience
The native Community experience offers major design and performance improvements. You will see faster performance across posting, commenting, and engaging in channels.
This update also brings the ability for you to log in as a Community Admin through the Kajabi Mobile App. To do so, make sure you log in to the app with your admin email. Then you will be able to interact with your Community as an admin.
To access this update, make sure that:
* Your app is on version 4.0.2 or higher
* You have access to the Community, either through a free or paid Offer that includes a Community Access Group
If you don't see the Community in the Kajabi Mobile App, confirm that your app version is current and that your account has Community Access as a member.
## View refreshed Course design and thumbnails
Your website logo will be visible for your members using the Kajabi Mobile App. They will also experience a refreshed UI for Courses and other products in the app.
## Resume where you left off
A **Resume Button** helps your members pick up right where they left off. With just one tap, they are taken directly to their most recently viewed lesson:
## Comment directly in the app
The commenting experience is built directly into the mobile app. Members can view and reply to comments in a streamlined, in-app experience without leaving their Course content:
## Celebrate lesson completion
When members complete a lesson, a confetti animation plays to mark their progress and maintain high motivation:
## Access Coaching sessions on the go
Members can view their Coaching products right from the app, including:
* Upcoming and past Coaching sessions
* Session details and calendar invites
* Resources or replays shared by the coach
This enables your members to stay on track with their Coaching journey at any time, from anywhere:
## Stream Podcast episodes in the app
The Podcast experience is fully integrated into the Kajabi Mobile App. Members can:
* Stream episodes directly from their device
* View episode notes and descriptions
* Track their listening progress
* Resume where they left off
Perfect for listening while commuting, exercising, or multitasking:
## Keep the app updated
To experience these features, ensure your members are using the latest version of the Kajabi Mobile App from the [App Store](https://apps.apple.com) or [Google Play Store](https://play.google.com).
# Add a video to a lesson with the Creator app
Source: https://help.kajabi.com/articles/mobile-apps/kajabi-creator-app/how-to-add-a-video-to-a-lesson-with-the-kajabi-creator-app
Record or upload a video using the Kajabi Creator mobile app and add it to a lesson.
With the **Kajabi Creator app**, you can record or upload a video and add it to a lesson.
If you don't see the **Create** tab, visit the [App Store (iOS)](https://www.apple.com/app-store/) or the [Play Store (Android)](https://play.google.com/store/apps) and select **Update** to get the latest features.
## Add a video to an existing lesson
To add your video to an existing lesson using the mobile Creator app:
1. Log into the Kajabi [Creator mobile app](/articles/mobile-apps/kajabi-creator-app/kajabi-creator-mobile-app)
2. From the Dashboard, tap **Create**
3. Choose to either **Record a video** or **Upload a video**
4. Record or select your video and use the **Play** icon to preview. (Optional) Tap **Edit** at the top right to trim your video
5. Tap **Save and continue** to save your video
6. Tap **Search lessons** to find an existing lesson
7. Tap the **Draft** button to toggle to viewing lessons in **Published** status
8. Tap the button displaying a Course title to select a different Course
9. Select the lesson where you wish to add your video
10. Tap **Publish** to add your video to the lesson
## Add a video to a lesson
To add your video to a lesson using the mobile Creator app:
1. Log into the Kajabi [Creator mobile app](/articles/mobile-apps/kajabi-creator-app/kajabi-creator-mobile-app)
2. From the Dashboard, tap **Create**
3. Choose to either **Record a video** or **Upload a video**
4. Record or select your video and use the **Play** icon to preview. (Optional) Tap **Edit** at the top right to trim your video
5. Tap **Save and continue** to save your video
6. Tap **Create a lesson**
7. Tap the **Select course** dropdown menu to select your Course
8. Use the **Select module** dropdown to select your Module
9. Enter a title in the **Enter lesson title** field and tap **Create**
10. Tap **Publish** to add your video to the lesson
## Troubleshooting
### Seeing your video in low resolution?
When you record or upload your file, Kajabi's video partner Wistia encodes the video in various formats to be delivered to all types of devices with varying internet speeds.
It can take up to several minutes for Wistia to finish encoding your video files at high quality. If your video doesn't immediately appear in high resolution, wait about 15 minutes and check again.
### Having trouble uploading a video?
[Check if your video format is supported](../../products/courses/video-formats-supported-by-kajabi) by Kajabi. The maximum file size for video uploads is 4GB. If your video file size is larger than 4GB, use a video file compression tool such as [Handbrake](../../website/pages/how-to-compress-a-video-file-using-handbrake).
# Explore the Kajabi Creator mobile app
Source: https://help.kajabi.com/articles/mobile-apps/kajabi-creator-app/kajabi-creator-mobile-app
Manage your Kajabi site from anywhere — track performance, review transactions, manage contacts, and create content on the go.
The **Creator mobile app** lets you manage your site from anywhere. As long as you have your mobile device, you can track performance, review recent transactions, manage contacts, update your account, add a video to a lesson, and more.
## Dashboard
### Analytics
When you log into the Creator mobile app, you see an overview of the following analytics to easily track site performance:
* **Offers sold** — The number of Offers sold during your selected time frame
* **Net revenue** — The total amount of money generated by your business after refunds and discounts have been deducted
* **New customers** — The number of customers on your site within your selected date range
* **Opt-ins** — The number of people who opted into receiving communications from you within your filtered time frame
* **Total views** — The total number of times your site has been viewed within your filtered time frame
* **Unique views** — The total number of times your site has been viewed by a unique user during your filtered time frame
Filter your date range to view analytics based on your selected time frame (e.g., the last 30 days).
### Transactions
View information about your site's recent transactions by tapping **Transactions** from the Creator mobile app Dashboard:
## Notifications
Open **Notifications** to view your recent notifications. You may be notified of the following actions:
* A purchase has been processed
* A payment has been received
* A payment has failed
* A payment has been refunded
* A contact has opted-in (or subscribed) to receive your marketing emails
* A customer has enrolled to your Offer
## Create content
Use the **Create** feature to record or upload a video and add it to a lesson. Create Course material on the go with this mobile experience. [Learn how to add a video to a lesson](/articles/mobile-apps/kajabi-creator-app/how-to-add-a-video-to-a-lesson-with-the-kajabi-creator-app)
To add your video, open the **Create** tab:
## Account management
Open **Manage** to switch to another website connected to your account (only available if you have more than one website), configure push notifications, manage contacts, view additional analytics, adjust account information, view Kajabi's Policies, and visit Kajabi University or the Help Center.
### Push notifications
Control your push notifications (i.e., pop-up banner notifications) by toggling on the actions you want to be notified about and toggling off the notifications you wish to ignore or pause:
### Contacts
Within the **Manage** tab, you can create, view, and edit a contact's information.
Open **Contacts** to view, filter, and sort your list. Locate a contact and update their contact information, add notes, create tags, and grant or revoke Offers:
## Download the Kajabi Creator app
No matter where you are, you can access your site as long as you have your mobile device. Download the Creator mobile app and build your business from anywhere.
[
](https://apps.apple.com/vc/app/kajabi-creator/id1636547076)
[
](https://play.google.com/store/apps/details?id=com.kajabi.creator)
# Authentication
Source: https://help.kajabi.com/api-reference/authentication
The `/v1/oauth/token` endpoint supports `client_credentials` grant type (OAuth 2) to request an `access_token`.
This requires your `client_id` and `client_secret` which are available on the [Public API](https://app.kajabi.com/admin/settings/public_api) settings page of the Kajabi Dashboard.
* Custom User API Keys can be created with specific permissions.
* Click the "Create User API Key" button, enter a name (e.g. "My project"), select the user and permissions, and click "Create".
* For security purposes, you may "Delete" or "Rotate" the api credentials at any time; which will invalidate any access tokens granted with the credentials.
# Get access token
Source: https://help.kajabi.com/api-reference/authentication/get-access-token
/openapi.yaml post /v1/oauth/token
## Request `access_token` and `refresh_token`
There are three ways to exchange parameters for tokens
1. Provide client credentials `client_id` and `client_secret`
2. Provide a `refresh_token`
3. Provide `username` and `password` (client credentials is preferred)
### Using grant_type=client_credentials
Only include params: `client_id`, `client_secret`, and `grant_type`.
* The `grant_type` param value must be: `client_credentials`
### Using grant_type=refresh_token
Only include params: `refresh_token` and `grant_type`.
* The `grant_type` param value must be: `refresh_token`
* The `refresh_token` must be a unexpired JWT token, from a prior client credential token grant.
### Using username and password
Only include params: `username` and `password`.
## Response
A successful response will provide `access_token` and `refresh_token` values.
* Use the `access_token` in your `Authorization` header as a "Bearer" token to make authenticated requests to the API. E.g. `GET https://api.kajabi.com/v1/me`
* Store the `refresh_token` to exchange for a new `access_token` when it expires.
* Tokens may be invalidated using the `v1/oauth/revoke` endpoint to "log out".
### Attributes
* `access_token` (string) - The access token for the API session
* `refresh_token` (string) - The refresh token for the API session
* `token_type` (string) - The type of token, always `Bearer`
* `expires_in` (integer) - The number of seconds the access token will be valid for
# Revoke a token
Source: https://help.kajabi.com/api-reference/authentication/revoke-a-token
/openapi.yaml post /v1/oauth/revoke
## Revoke an `access_token` and `refresh_token`
Either token may be provided to "log out" of the API session. Both tokens we be invalidated.
* Only include param: `token` with your `access_token` or `refresh_token`
* Requires an `Authorization` header as `Bearer access_token` to authenticate the request.
## Response
* A successful response will have an empty body
* An error response will include a JSON body with error details.
# Blog post details
Source: https://help.kajabi.com/api-reference/blog-posts/blog-post-details
/openapi.yaml get /v1/blog_posts/{id}
Shows details of a blog post
## Blog Post Attributes
* `title` (string) - Title of the blog post
* `url` (string) - URL of the blog post
* `content` (string) - Content of the blog post
* `slug` (string) - Slug of the blog post
* `page_title` (string) - Page title of the blog post
* `page_description` (string) - Page description of the blog post
* `published_at` (string) - Date and time the blog post was published
* `created_at` (string) - Date and time the blog post was created
* `updated_at` (string) - Date and time the blog post was updated_at
* `image_url` (string) - URL of the image associated with the blog post
* `image_alt_text` (string) - Alt text for the image associated with the blog post
* `tags` (array) - Tags associated with the blog post
## Sparse Fields
### Only return title attribute
* `GET /v1/blog_posts/123?fields[blog_posts]=title`
Response will only include requested fields
```json
{
"data": {
"id": "123",
"type": "blog_posts",
"attributes": {
"title": "Announcing New Course"
}
}
}
```
# List blog posts
Source: https://help.kajabi.com/api-reference/blog-posts/list-blog-posts
/openapi.yaml get /v1/blog_posts
Returns a list of blog posts which the current user may access
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/blog_posts[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/blog_posts[number]=2&page[size]=25`
## Sparse Fields
Use the `fields[blog_posts]` parameter to request only specific attributes:
### Only return title attribute
* `GET /v1/blog_posts?fields[blog_posts]=title`
## Sorting
Use the `sort` parameter to sort the results:
### Sort by published_at in descending order
* `GET /v1/blog_posts?sort=-published_at&fields[blog_posts]=title`
## Filters
Use the `filter[site_id]` parameter to get blog posts for a specific site:
### Get blog posts for site with ID 123
* `GET /v1/blog_posts?filter[site_id]=123`
List of attributes that may be used to filter: title, content, slug, page_title, page_description, published_at, created_at, updated_at, image_url, image_alt_text, tags
The filter param uses the following syntax: `filter[attribute_name_suffix]` with suffix for comparison:
* `eq` for equals
* `cont` for contains
* `not_eq` for not equals
* `not_cont` for not contains
* `start` for starts with
* `end` for ends with
For example:
* `GET /v1/blog_posts?filter[title_start]=Announcing`
* `GET /v1/blog_posts?filter[title_cont]=Announcing`
# Changelog
Source: https://help.kajabi.com/api-reference/changelog
Added a `purchases` relationship to the transactions endpoint, listing the offer purchase(s) a transaction covers. A transaction covers multiple offer purchases when several offers are bundled into a single charge, which can occur when a checkout includes multiple order bumps, or for Cart or Invoice orders.
Deprecated the singular `offer` relationship — it remains populated for single-offer transactions, but returns `null` for bundled transactions; use `purchases` instead.
Added product-ownership filters to the contacts and customers endpoints: `filter[has_product_id]`, `filter[has_active_product_id]`, `filter[has_no_product_id]`, and `filter[previously_owned_product_id]`.
Added `filter[exclude_product_types][]` to the products endpoint to exclude products by productizable type.
Removed the `filter[is_suppressed]` contacts search filter.
Deleting a contact that has active Kajabi Payments subscriptions or payment plans now returns a `422 Unprocessable Entity` error instead of deleting the contact.
Fixed documented path for hook-related endpoints v1.0.1
Update openapi.yaml to OAS v3.1.1
Improved transactions endpoint documentation
Clarified the webhooks create endpoint docs for use of resource\_id attribute Removed docs for price\_description from offers endpoint, it is not supported General improvements for security and stability, refactored code
Added filter\[customer\_id] to purchases, orders, and transactions endpoints Added transactions filter\[name\_or\_email] parameter
Added /v1/purchases/:id/cancel\_subscription endpoint
Added /v1/contact\_notes endpoints: list, show, create, update, delete
Added outbound webhooks using /v1/hooks endpoints
Added orders endpoints for list and details
Added order\_items endpoints for list and details
Added form\_submissions endpoints for list and details
Add/remove parameters for searching contacts and customers
Improve search performance for contacts and customers
Add endpoints for purchases, list, details, reactivate, and deactivate
Add endpoints for website pages, blog posts, and landing pages
Add url attribute to products and forms resources
Bugfix: delete a contact then recreate with same email
Add currency attribute to offer
Sort contacts by created\_at
New developer site [https://developers.kajabi.com](https://developers.kajabi.com)
Add resource attribute definitions to docs
Improve docs with comprehensive response examples using a variety of request parameters
Add checkout url to offer resource
Add endpoints for forms, including form submission
Contacts related offers are linked by url vs listed by id
Add publishing\_option to module/lesson public api
Add internal\_title and payment info attributes to offer serializer
Add refresh\_token to oauth/token response
Add transactions endpoints
Add lessons.media relationship for courses
Add oauth revoke endpoint
Improve docs for oauth token credential grant
Add contacts filter params: search, has\_product\_id, has\_tag\_id, has\_offer\_id
Add customers endpoints
Add courses endpoints
Add example responses to docs for page and filter parameters
Improve docs for success responses
Add forbidden error response examples
Improve docs for granting and revoking offers
Credential exchange using Kajabi account api key/secret
Add contacts offers relation endpoints to grant/revoke offers
Add contacts relationship to offers
Add products relationship to offers
Add products endpoints
Add offers endpoints
Add contact tag endpoints
Add contacts tag relation endpoints to add/remove tags
Document /contacts/?include= parameter with tags example
Add /api/v1/custom\_fields endpoint
Add clarify filters for contacts in the openapi spec
Add sorting to contacts
Add sparse fields to contacts
Add filters to contacts list endpoint
Add contacts endpoints
Add sites endpoints
Add me endpoint for current user
Add version endpoint
Add oauth/token endpoint to authenticate with username/password
# Contact note details
Source: https://help.kajabi.com/api-reference/contact-notes/contact-note-details
/openapi.yaml get /v1/contact_notes/{id}
Returns a single contact note by ID.
**Attributes:**
- `body` (string) - The note content
- `created_at` (datetime) - When the note was created
- `updated_at` (datetime) - When the note was last modified
**Relationships:**
- `contact` - The contact this note belongs to
# Create contact note
Source: https://help.kajabi.com/api-reference/contact-notes/create-contact-note
/openapi.yaml post /v1/contact_notes
Creates a new contact note.
**Required Attributes:**
- `body` (string) - The note content
**Required Relationships:**
- `contact` - The contact this note belongs to (resource identifier)
# Delete contact note
Source: https://help.kajabi.com/api-reference/contact-notes/delete-contact-note
/openapi.yaml delete /v1/contact_notes/{id}
Deletes a contact note by ID. This action is permanent and cannot be undone.
# List contact notes
Source: https://help.kajabi.com/api-reference/contact-notes/list-contact-notes
/openapi.yaml get /v1/contact_notes
Returns a paginated list of contact notes. This endpoint supports filtering, sorting, and pagination.
**Sorting:**
- `created_at` (default: descending)
**Filtering:**
- `filter[contact_id]` - Filter notes for a specific Contact
- `filter[site_id]` - Filter notes for a specific Site
**Pagination:**
- Use `page[number]` and `page[size]` parameters
- Default page size is 20, maximum is 100
# Update contact note
Source: https://help.kajabi.com/api-reference/contact-notes/update-contact-note
/openapi.yaml patch /v1/contact_notes/{id}
Updates an existing contact note. Only the note body can be updated.
**Updatable Attributes:**
- `body` (string) - The note content
Contact relationship cannot be changed after creation.
# Contact tag details
Source: https://help.kajabi.com/api-reference/contact-tags/contact-tag-details
/openapi.yaml get /v1/contact_tags/{id}
## Contact Tag Attributes
* `name` (string) - The name of the contact tag
## Contact Tag Relationships
The contact tag belongs to a site
# List contact tags
Source: https://help.kajabi.com/api-reference/contact-tags/list-contact-tags
/openapi.yaml get /v1/contact_tags
Tags (not archived) for a site
## Contact Tag Attributes
* `name` (string) - The name of the contact tag
## Pagination
Use the `page[number]` and `page[size]` query parameters to paginate results:
### Get first page of 10 items
* `GET /v1/contact_tags?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/contact_tags?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/contact_tags?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/contact_tags?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/contact_tags?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/contact_tags?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/contact_tags?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Filter by Site ID
Use the `filter[site_id]` parameter to get contact tags for a specific site:
### Get contact tags for site with ID 123
* `GET /v1/contact_tags?filter[site_id]=123`
Response will only include contact tags for that site
```json
{
"data": [{
"id": "456",
"type": "contact_tags",
"attributes": {
"name": "Source"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Filter by Name Contains
Use the `filter[name_cont]` parameter to find contact tags where the name contains specific text:
### Get contact tags with names containing "vip"
* `GET /v1/contact_tags?filter[name_cont]=vip`
Response will include contact tags with matching names
```json
{
"data": [{
"id": "456",
"type": "contact_tags",
"attributes": {
"name": "VIP Customer"
}
}]
}
```
## Using Multiple Parameters Together
You can combine pagination, sorting, sparse fields and filtering in a single request:
### Get page 2 of contact tags for site 123, sorted by name descending
* `GET /v1/contact_tags?page[number]=2&page[size]=10&sort=-name&filter[site_id]=123`
Response will include only requested fields, sorted and paginated
```json
{
"data": [{
"id": "456",
"type": "contact_tags",
"attributes": {
"name": "Webinar Attendee"
}
}, {
"id": "789",
"type": "contact_tags",
"attributes": {
"name": "VIP Customer"
}
}],
"links": {
"self": "https://api.kajabi.com/v1/contact_tags?page[number]=2&page[size]=10&sort=-name&fields[contact_tags]=name,handle&filter[site_id]=123",
"first": "https://api.kajabi.com/v1/contact_tags?page[number]=1&page[size]=10&sort=-name&fields[contact_tags]=name,handle&filter[site_id]=123",
"prev": "https://api.kajabi.com/v1/contact_tags?page[number]=1&page[size]=10&sort=-name&fields[contact_tags]=name,handle&filter[site_id]=123",
"next": "https://api.kajabi.com/v1/contact_tags?page[number]=3&page[size]=10&sort=-name&fields[contact_tags]=name,handle&filter[site_id]=123",
"last": "https://api.kajabi.com/v1/contact_tags?page[number]=5&page[size]=10&sort=-name&fields[contact_tags]=name,handle&filter[site_id]=123"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
# List contacts
Source: https://help.kajabi.com/api-reference/contacts/list-contacts
/openapi.yaml get /v1/contacts
List of contacts, we recommended filtering by site.
## Filtering
Use the `filter[site_id]` parameter to filter contacts by site:
### Get contacts for site with ID 123
* `GET /v1/contacts?filter[site_id]=123`
Response will include only contacts for the specified site
```json
{
"data": [{
"id": "456",
"type": "contacts",
"attributes": {
"name": "John Smith",
"email": "john@example.com",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Search Filter
Use the `filter[search]` parameter along with `filter[site_id]` to search contacts by name or email:
### Search for contacts containing "smith" in site with ID 123
* `GET /v1/contacts?filter[site_id]=123&filter[search]=smith`
Response will include only matching contacts for the specified site
```json
{
"data": [{
"id": "456",
"type": "contacts",
"attributes": {
"name": "John Smith",
"email": "smith.john@example.com",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Search
Use the `filter[search]` parameter along with `filter[site_id]` to search contacts.
### Search for contacts containing "smith" in site with ID 123
* `GET /v1/contacts?filter[site_id]=123&filter[search]=smith`
Response will include matching contacts
```json
{
"data": [{
"id": "456",
"type": "contacts",
"attributes": {
"name": "John Smith",
"email": "smith.john@example.com",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Using Pagination with Site Filter
Use the `filter[site_id]` parameter along with pagination parameters `page[number]` and `page[size]` to get paginated results for a specific site:
### Get page 2 of contacts from site with ID 123, with 10 items per page
* `GET /v1/contacts?filter[site_id]=123&page[number]=2&page[size]=10`
Response will include paginated contacts for the specified site along with pagination metadata
```json
{
"data": [{
"id": "456",
"type": "contacts",
"attributes": {
"name": "John Smith",
"email": "smith.john@example.com",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}],
"links": {
"self": "https://api.kajabi.com/v1/contacts?filter[site_id]=123&page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/contacts?filter[site_id]=123&page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/contacts?filter[site_id]=123&page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/contacts?filter[site_id]=123&page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/contacts?filter[site_id]=123&page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Using Sort with Site Filter
* The default Sorting is by created_at in descending order (newest first)
Sorting by created_at in ascending order (oldest first)
* `GET /v1/contacts?filter[site_id]=123&sort=created_at`
Use the `sort` parameter along with `filter[site_id]` to get sorted results for a specific site:
### Get contacts from site with ID 123, sorted by name in ascending order
* `GET /v1/contacts?filter[site_id]=123&sort=name`
### Get contacts from site with ID 123, sorted by email in descending order
* `GET /v1/contacts?filter[site_id]=123&sort=-email`
Response will include sorted contacts for the specified site
```json
{
"data": [{
"id": "456",
"type": "contacts",
"attributes": {
"name": "Alice Smith",
"email": "alice@example.com",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Using Sparse Fields with Site Filter
Use the `fields[contacts]` parameter along with `filter[site_id]` to get specific fields for contacts in a site:
### Get only name and email fields for contacts from site with ID 123
* `GET /v1/contacts?filter[site_id]=123&fields[contacts]=name,email`
Response will include only requested fields for contacts in the specified site
```json
{
"data": [{
"id": "456",
"type": "contacts",
"attributes": {
"name": "Alice Smith",
"email": "alice@example.com"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Filtering by Site and Offer
Use the `filter[site_id]` parameter along with `filter[has_offer_id]` to get contacts who have been granted a specific offer
### Get contacts from site with ID 123 who have been granted offer with ID 789
* `GET /v1/contacts?filter[site_id]=123&filter[has_offer_id]=789`
Response will include only contacts from the specified site who have been granted the offer
```json
{
"data": [{
"id": "456",
"type": "contacts",
"attributes": {
"name": "Alice Smith",
"email": "alice@example.com",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Filtering by Site and Tag
Use the `filter[site_id]` parameter along with `filter[has_tag_id]` to get contacts who have a specific tag
### Get contacts from site with ID 123 who have tag with ID 456
* `GET /v1/contacts?filter[site_id]=123&filter[has_tag_id]=456`
Response will include only contacts from the specified site who have the tag
```json
{
"data": [{
"id": "789",
"type": "contacts",
"attributes": {
"name": "Bob Jones",
"email": "bob@example.com",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Using Multiple Parameters Together
You can combine multiple parameters to filter, search, paginate and format the response:
### Get paginated contacts from site 123 with tag 456, searching for "smith", using indexed data and sparse fields
* `GET /v1/contacts?filter[site_id]=123&filter[has_tag_id]=456&filter[search]=smith&=true&page[number]=1&page[size]=10&fields[contacts]=name,email`
Response will include paginated contacts matching all filters with only requested fields
```json
{
"data": [{
"id": "789",
"type": "contacts",
"attributes": {
"name": "John Smith",
"email": "smith.john@example.com"
}
}],
"links": {
"self": "https://api.kajabi.com/v1/contacts?filter[site_id]=123&filter[has_tag_id]=456&filter[search]=smith&=true&page[number]=1&page[size]=10&fields[contacts]=name,email",
"first": "https://api.kajabi.com/v1/contacts?filter[site_id]=123&filter[has_tag_id]=456&filter[search]=smith&=true&page[number]=1&page[size]=10&fields[contacts]=name,email",
"prev": null,
"next": null,
"last": "https://api.kajabi.com/v1/contacts?filter[site_id]=123&filter[has_tag_id]=456&filter[search]=smith&=true&page[number]=1&page[size]=10&fields[contacts]=name,email"
},
"meta": {
"total_pages": 1,
"total_count": 1,
"current_page": 1
}
}
```
# Introduction
Source: https://help.kajabi.com/api-reference/introduction
Server URL `https://api.kajabi.com`
* Endpoint paths are prefixed with `/v1`
* Version endpoint `GET https://api.kajabi.com/v1/version`
* Try the demo [Postman collection](https://www.postman.com/kajabi-apis/workspace/kajabi-public-api-v1)
Download OpenAPI specification
* Right click the openapi.yaml link below to "Save Link As..."
Get Help:
[support@kajabi.com](mailto:support@kajabi.com)
Video Walkthroughs
* [Capabilities](https://drive.google.com/file/d/1Puc9B2sSdA-RQb7YMxmUXg4FVoEXytoc/view?usp=sharing)
* [Getting Started](https://drive.google.com/file/d/1hbGRShkxven_QMWvgYrerHKURbcZrnvJ/view?usp=sharing)
* [Error Examples](https://drive.google.com/file/d/1i0wQK71I1jpaZVsxYwsn62gVj40S_E7Y/view?usp=sharing)
* [External Contact Form](https://drive.google.com/file/d/1HqpULXvan5TOK3LvM7nILCuCkCaX0kFT/view?usp=sharing)
# Manage failed payments in Stripe
Source: https://help.kajabi.com/articles/api-integrations/payment-integrations/how-to-manage-failed-payments-in-stripe
Learn how to configure Stripe's failed payment settings, set up retry schedules, and view or export failed payments in Kajabi.
Failed payments processed through **Stripe** can be customized to specify the number of retry days before your customer's subscription is canceled. This guide covers how to configure Stripe's Smart Retries, set up custom retry schedules, enable auto revoke/grant features, and view failed payments in Kajabi.
## Manage failed payments in Stripe
In your Stripe Account, you can customize how potential failed payments are handled when processed in Stripe:
* Customize Stripe's **Retry schedule** if a payment failure occurs.
* Create [**Customer emails**](./how-to-set-up-automated-emails-with-stripe-when-payments-fail) to send when a card payment fails.
* Adjust the **Subscription status** to determine the action that occurs if all retries for a payment fail.
## Stripe's smart retries
Stripe uses machine learning algorithms that train on data collected across the Stripe network to optimize retry timing. This means that amount of time between payment retries changes each time based upon Stripe's machine learning algorithms.
If you would like to disable this feature and set up your custom retry schedule, learn more in the section below.
Check out Stripe's documentation on [Smart Retries](https://stripe.com/docs/billing/automatic-collection#smart-retries).
## Use custom retry schedule
Select **Use custom retry schedule** to create your very own retry schedule within Stripe.
1. Log into your Stripe account at [stripe.com](http://stripe.com).
2. Click the **Settings** tab.
3. Under the **Billing** card, click **Subscriptions and emails.**
4. In the **Manage failed payments** section, configure the steps to take when a payment method fails.
5. Click **Use custom retry schedule** to configure your retry rules, including the time between each charge attempt and the number of attempts before the subscription is automatically canceled.
6. Click **Save**.
## Auto revoke/auto grant after failed payment
If you want to revoke product access after the first failed payment for a subscription or payment plans, and then have access auto-granted back to your customer once the payment has succeeded, this setting can now be turned on from your **Customer Payments** setting page. This feature is exclusively available to Kajabi Payments and Stripe.
To turn on Auto Revoke/Auto Grant:
1. From the Dashboard, click **Settings.**
2. Click **Customer Payments.**
3. Toggle on the setting under the **Revoke and grant access** section.
4. Click **Save.**
**Note:** The auto revoke/grant feature does not trigger grant automations.
## View Stripe failed payments in Kajabi
To view failed payments processed through Stripe directly in your Kajabi dashboard:
1. From the Dashboard, click **Sales.**
2. Click **Payments**, then click **Transactions.**
3. Click **Filters.**
4. Set **Status** to **Failed.**
5. Set **Payment method** to **Stripe.**
6. Click **Show results.**
7. Click the **more actions (...)** icon on any transaction to view more details.
8. Click **Export** to download the filtered list as a CSV file.
### Understanding statuses
* When a subscription or payment plan fails, the billing status will be **Past due.**
* In the transactions tab, you can see which transactions are **Retrying** and when they are scheduled to be tried.
* When a failed payment reattempt is successful, the billing status returns to **Active** and future payments are collected on the next billing cycle.
* If all retries fail, the subscription or payment plan is updated based on the settings configured in Stripe.
# Send a receipt in Stripe
Source: https://help.kajabi.com/articles/api-integrations/payment-integrations/how-to-send-a-receipt-in-stripe
Send receipts to individual customers or configure automatic receipts for every successful Stripe payment.
**Stripe** provides flexible options for sending receipts to your customers. You can manually send receipts for individual transactions or configure automatic receipts for every successful payment. This guide covers both methods.
## Send a receipt or invoice manually
* Locate the Stripe profile of your customer in the **Customer** tab
* Navigate to the desired payment
* Click **Send receipt**
## Configure automatic receipts in Stripe
* Log into your Stripe account
* Select **Settings** in top right corner of your Dashboard
* Navigate to your **Business settings**
* Open **Emails**
* Toggle on **Successful payments**
* Click **Save** to apply
Learn more about [email receipts in Stripe](https://stripe.com/docs/receipts).
# Set up automated emails in Stripe for failed payments
Source: https://help.kajabi.com/articles/api-integrations/payment-integrations/how-to-set-up-automated-emails-with-stripe-when-payments-fail
Configure Stripe to automatically email customers when a payment fails.
When a customer's payment fails, automated emails can help recover the payment by prompting them to update their payment method. **Stripe** allows you to configure these emails to include a payment invoice, making it easy for customers to complete their payment.
## Set up automated emails for payment failures
* Log into your Stripe account
* Click the gear icon to open your **Settings**
* Under the Billing section, select **Subscriptions and Emails**
* Then, toggle on **Send emails to customers to update failed card payment methods**
*Click image to enlarge*
* Customize your email template by clicking the **eye** symbol
Read [Stripe's Support Guide](https://stripe.com/docs/invoicing/send-email) for details.
# Upgrade a PayPal account
Source: https://help.kajabi.com/articles/api-integrations/payment-integrations/how-to-upgrade-your-paypal-account
Upgrade your PayPal account to continue accepting payments and receive better support from the Kajabi team.
Upgrading your **PayPal** account ensures you can continue accepting payments without interruption. The latest version of PayPal provides improved payment processing, better support from the Kajabi team for troubleshooting, and enhanced security and reliability.
## Why do I need to upgrade my PayPal account?
The latest version of PayPal will help improve your experience of accepting payments through PayPal.
Upgrading your PayPal account will you give you the following:
* Ability to keep accepting payments via PayPal
* Better support from the Kajabi team to troubleshoot issues that you might run into
* More security
* More reliability
Continue accepting payments and avoid any interruptions with PayPal by upgrading your PayPal account.
**Note:** If you don't have the option to upgrade your PayPal account, your account is successfully connected to the latest version of PayPal and does not require an upgrade.
## Upgrade a PayPal account
If you have an existing PayPal account connected to Kajabi, you can upgrade your PayPal account from your Kajabi account:
### To upgrade your PayPal account
* [Log into your Kajabi account](https://app.kajabi.com/login)
* Open the **Settings** tab from your Dashboard
* Click **Third Party Integrations**
* Next to PayPal, click **Upgrade**
* Log into your PayPal account with your PayPal credentials
If you have more than one PayPal account, make sure to log into the PayPal account you've already connected to Kajabi.
* Follow the on-screen instructions to complete the upgrade
# View all transactions in PayPal
Source: https://help.kajabi.com/articles/api-integrations/payment-integrations/how-to-view-all-transactions-in-paypal
View PayPal transactions directly in your PayPal account for complete transaction records.
All **PayPal** transactions that take place within Kajabi are tracked through both Kajabi and PayPal. If you wish to view your PayPal transactions directly in PayPal, you can do so by logging into your PayPal account.
## View transactions in PayPal
* Log into your PayPal business account
* Click the **Activity** tab in the header
* Then, select **All Transactions**
**Tip:** Unfortunately, PayPal doesn't automatically update changes made to Offer Titles in customer invoices. Consequently, if the title of your offer is changed, the former title will still be shown on the invoice. Because of this issue, we recommend creating a new offer with the new title to ensure consistency for your customer purchases and invoices.
# Payment options available with Kajabi
Source: https://help.kajabi.com/articles/api-integrations/payment-integrations/payment-options-available-with-kajabi
Kajabi offers three payment gateways—Kajabi Payments, Stripe, and PayPal—to collect payment for the value you offer your audience.
**Kajabi** also supports a variety of advanced payment features, including digital wallets like Apple Pay and Google Pay, and buy now, pay later options such as Klarna and Afterpay. These additional options provide flexibility for customers and align with Kajabi's mission to enhance user experiences.
## Kajabi Payments
Kajabi Payments is an all-in-one solution purpose-built for Kajabi Heroes — giving you everything you need to accept customer payments, oversee purchases, manage refunds, initiate payouts, and more, all from your Kajabi dashboard. It also unlocks exclusive payment methods like Apple Pay, Google Pay, Afterpay, and more:
With Kajabi Payments, your Checkout page enables customers to purchase your Offers effortlessly. They can either enter their credit card information directly on the page or choose from the additional payment methods you've selected. The payments are then processed and collected into your connected bank account, incurring a small fee that's equivalent to major payment providers. [Learn more](../../sales/kajabi-payments/kajabi-payments-processing-fees).
Kajabi Payments is currently available to Kajabi customers whose businesses are based in the US, Australia, the UK, Canada, and select European countries.
**Tip:** [Learn how to set up Kajabi Payments](https://help.kajabi.com/articles/sales/kajabi-payments/kajabi-payments-overview).
## PayPal
PayPal is a worldwide online payment system that allows you to pay, send money, and accept payments with a [small fee](https://www.paypal.com/us/webapps/mpp/paypal-fees).
**Note:** Unlike other popular platforms for creators, Kajabi never takes a percentage of your revenue. That's just not our style. Only PayPal fees will be applied when using PayPal.
PayPal uses data encryption and anti-fraud technology to help keep your information secure, reducing the risk of online fraud.
PayPal is a well-trusted platform that services 200+ countries. Find out if PayPal is available in your country [here](https://www.paypal.com/us/webapps/mpp/country-worldwide).
With PayPal, your customers can purchase your Offers with their personal PayPal accounts or by creating a guest PayPal account.
If you choose to connect PayPal to your Kajabi account, your customers can purchase your Offers using PayPal:
**Tip:** [Learn how to connect PayPal to your Kajabi account](https://help.kajabi.com/articles/api-integrations/payment-integrations/connect-paypal-to-kajabi) and begin pricing your Offers with PayPal.
**Tip:** Connect Kajabi Payments or Stripe in addition to PayPal to give your customers the option to select their preferred payment method. [Learn more](../../sales/offers/how-to-turn-on-a-payment-provider-for-your-offers)
## Stripe
Stripe is an American technology company operating in over 34 countries that allows both private individuals and businesses to accept payments over the Internet with a [small fee](https://stripe.com/pricing).
Stripe focuses on providing the technical, fraud prevention, and banking infrastructure required to operate online payment systems. Find out if Stripe is available in your country [here](https://stripe.com/global).
With Stripe, your Checkout page will give your customers the ability to purchase your Offers by simply entering their card information directly onto your Checkout page and processing the payments into your connected bank account.
By entering their valid payment information, your customers can complete their purchase.
**Tip:** [Learn how to connect Stripe to your Kajabi account](https://help.kajabi.com/articles/api-integrations/payment-integrations/connect-stripe-to-kajabi) and begin pricing your Offers with Stripe.
**Tip:** Connect both Kajabi Payments, or Stripe, and PayPal to give your customers the option to select their preferred payment method. [Learn more](../../sales/offers/how-to-turn-on-a-payment-provider-for-your-offers)
If Kajabi Payments, Stripe, or PayPal do not work for you, [learn to connect a third-party payment gateway](./connect-a-third-party-payment-gateway-to-kajabi).
# PayPal integration troubleshooting
Source: https://help.kajabi.com/articles/api-integrations/payment-integrations/paypal-integration-troubleshooting
Troubleshoot common PayPal integration issues with this guide.
If you are having trouble connecting your Kajabi account with **PayPal**, you may be experiencing one or more of these issues. This guide covers common PayPal integration problems and their solutions.
## API credentials
A crucial step in setting up your PayPal integration is making sure you are using the Live API Credentials and not the Sandbox API Credentials. The Live API Credentials will be used for your PayPal integration. It will not be possible to integrate successfully when using the Sandbox API Credentials.
## Create app button is greyed out
Sometimes the Create App button will be unclickable or greyed out for a period of time after creating your PayPal Business account.
The **Create App** option becomes available within 24 hours of creating your PayPal Business account.
Please reach out to PayPal support if you have further issues with this. You can reach them here: [https://www.paypal.com/us/smarthelp/contact-us](https://www.paypal.com/us/smarthelp/contact-us).
## Sandbox account status error
You will need to have an active Sandbox Account in order to complete the PayPal integration.
### Fix
There is not currently a way to fix this on our end.
You will need to reach out to PayPal customer support in order to resolve this issue. You can reach them here: [https://www.paypal.com/us/smarthelp/contact-us](https://www.paypal.com/us/smarthelp/contact-us).
## CANNOT\_FIND\_PROFILE\_DESC error
The `CANNOT_FIND_PROFILE_DESC` error is triggered by an outdated Offer. This error usually comes up when using an Offer that was created before we released our native PayPal integration. The error will look like this:
### Fix
An easy fix for this issue would be to recreate or **Duplicate** the offer giving you the error. Learn [how to duplicate an offer](../../sales/offers/how-to-duplicate-an-offer). Use the freshly duplicated Offer on your sales pages and your users should be able to complete their purchase without issue.
If this does not help solve the issue, reach out to [our support team](../../resources/support/how-to-contact-kajabi-support#submit_a_request).
## PayPal payment modal disappears
This error has to do with how you have your PayPal account set up. This is usually caused by not having subscriptions enabled in your PayPal business account.
### Fix
You'll need to go to this link: [https://developer.paypal.com/developer/accountstatus](https://developer.paypal.com/developer/accountStatus) and enable subscription payments in your account.
If enabling subscriptions does not keep the payment modal from disappearing, you will need to reach out to PayPal customer support in order to resolve this issue. You can reach them here: [https://www.paypal.com/us/smarthelp/contact-us](https://www.paypal.com/us/smarthelp/contact-us).
## PayPal seller protection
Learn what is covered and what is not covered under PayPal's seller protection plan here: [https://www.paypal.com/us/webapps/mpp/security/seller-protection](https://www.paypal.com/us/webapps/mpp/security/seller-protection).
Intangible purchases like services, digital goods, etc. are not covered by PayPal.
**Tip:** Unfortunately, PayPal doesn't automatically update changes made to Offer Titles in customer invoices. Consequently, if the title of your offer is changed, the former title will still be shown on the invoice. Because of this issue, we recommend creating a new offer with the new title to ensure consistency for your customer purchases and invoices.
# View a customer's next billing date in Stripe
Source: https://help.kajabi.com/articles/api-integrations/payment-integrations/where-to-view-your-customers-next-billing-date-in-stripe
Stripe allows you to see your customer's payment information, including their next billing date.
**Stripe** provides detailed information about your customer's subscriptions, including when they will be charged next. This guide shows you how to locate the next billing date for any customer in your Stripe dashboard.
## View a customer's next billing date
### To view the next billing date for a customer
* Log into your Stripe account
* Search the email address of the customer and open their Stripe profile
* Locate the **Subscriptions** section
* Under Active Subscriptions, you can take note of the exact date your customer will be charged next
# Use Kajabi's public API
Source: https://help.kajabi.com/articles/api-integrations/public-api/using-kajabis-public-api
Create API keys and access documentation for Kajabi's public API.
**Kajabi's public API** allows you to build custom integrations and automate workflows. This article walks you through creating API keys and accessing the API documentation.
## Before you begin: confirm API access is active
The Public API is included with the **current Pro plan**. If you're on a **legacy Pro plan** (an older Pro subscription), API access is *not* included by default — you'll need to either upgrade to the current Pro plan or add the **\$25/month Public API add-on**.
## API keys
To create an API key:
1. From the Kajabi Dashboard, go to Settings > [Public API](https://app.kajabi.com/admin/settings/public_api) (under Account Settings)
2. Click **Create User API Key.**
3. Enter a **name** for your key.
4. Select the account user and permissions.
5. Click **Create.**
**Important:** Only Owners and Subowners can create API Keys.
**Note:** For security purposes, you may "Delete" or "Rotate" the API credentials at any time. This will invalidate any access tokens granted with those credentials.
### Using Zapier or a third-party integration
The credentials created here (OAuth client ID and client secret) are for the Kajabi Public API and are not the same as the API Key and API Secret used for Zapier and other native integrations.
If you're connecting Kajabi to Zapier, see [Locate the Kajabi API key and API secret](https://help.kajabi.com/articles/api-integrations/zapier/how-to-locate-your-kajabi-api-key-and-api-secret) instead.
## API limits and availability
* Rate limits: The Kajabi Public API enforces rate limits to protect platform stability. For current rate limit values, refer to the [API documentation](https://help.kajabi.com/api-reference) or contact [Kajabi Support](https://help.kajabi.com/articles/resources/support/how-to-contact-kajabi-support).
* Data availability: Not all data visible in your Kajabi dashboard is available via the Public API. If a specific field or metric you need is absent from the API reference, it is not currently exposed via the API — please submit a feature request through the [feedback portal.](https://feedback.kajabi.com/)
* IP allowlisting: Kajabi does not currently publish an IP allowlist for API access. If your environment requires allowlisting, contact support for current guidance.
## Webhooks vs. Public API: which do you need?
| | **Public API** | **Webhooks** |
| :------------ | :---------------------------------------------------- | :------------------------------------------------------------------------ |
| What it does | Pull or push data programmatically via REST endpoints | Receive real-time event notifications from Kajabi to your system |
| Direction | Two-way (read & write) | Primarily outbound (Kajabi → your endpoint); inbound also available |
| Best for | Custom integrations, bulk data access, building apps | Event-driven automations (e.g. trigger a workflow when a purchase occurs) |
| Plan required | Pro (included) or \$25/mo add-on | Available on Growth and Pro plans |
[Learn how to use Webhooks with Kajabi](../webhooks/webhooks-explained)
## Troubleshooting authentication errors
If you receive a 401 Unauthorized or 403 Forbidden error after generating a token:
1. Check key permissions: When creating your API key, you must explicitly select the permission scopes your integration needs. A token generated from a key with insufficient scopes will be rejected on protected endpoints even if the token itself is valid. Delete and recreate the key with the correct permissions.
2. Confirm access is active: If API access was recently enabled on your account, allow up to 10 minutes for the change to propagate before testing.
3. Check your request headers: Ensure you're passing the token as a Bearer token in the Authorization header — not as a query parameter.
## API documentation
For detailed information about endpoints, request parameters, and examples, visit the **Kajabi Public API Documentation**:
* [help.kajabi.com/api-reference](https://help.kajabi.com/api-reference)
This documentation provides a comprehensive guide on how to use various endpoints, error handling, and best practices for integrating with the public API.
## Get help
If you encounter a possible bug or have questions about the functionality of the Kajabi public API, [contact our support team](../../resources/support/how-to-contact-kajabi-support).
Kajabi is not able to support inquiries specific to custom coding. If you need assistance implementing or troubleshooting custom code with the API, we recommend seeking guidance from an expert or developer.
# Third party integrations
Source: https://help.kajabi.com/articles/api-integrations/webhooks/third-party-integrations
Connect Kajabi with third-party platforms to extend your site's functionality with email, analytics, and payment integrations.
**Third-party integrations** allow external platforms to work hand-in-hand with Kajabi. Connect your favorite tools for email marketing, analytics tracking, and payment processing to create a seamless experience for your business.
## Email integrations
Using the Email Integrations in Kajabi allows you to send contact information to these platforms when a site visitor fills out a Form or purchases an Offer:
* [Aweber](../../api-integrations/email-integrations/how-to-use-aweber-with-kajabi)
* [Mailchimp](../../api-integrations/email-integrations/how-to-use-mailchimp-with-kajabi)
* [Drip](../../api-integrations/email-integrations/how-to-use-drip-with-kajabi)
* [ConvertKit](../../api-integrations/email-integrations/how-to-use-convertkit-with-kajabi)
* [ActiveCampaign](../../api-integrations/email-integrations/how-to-use-activecampaign-with-kajabi)
## Analytics
The Analytics Integrations can help automate the process of measuring the performance of your site by using tracking code from these apps in the header and footer of your pages:
* [Segment](../../api-integrations/analytics-integrations/how-to-use-kajabi-with-segment)
* [Google Analytics](../../api-integrations/analytics-integrations/connect-google-analytics-with-kajabi)
* [Facebook (Meta) Pixel](../../api-integrations/analytics-integrations/meta-pixel-with-kajabi)
**Note:** These are Kajabi's native analytics integrations. Each one connects via a toggle and an account ID or tracking ID. If you want to add a custom tracking script that is not listed here (for example, Microsoft Clarity, Hotjar, or TikTok Pixel), add it to **Settings** > **Site Details** > **Page Scripts** > **Header Page Scripts**. Code added there loads in the `` tag on every page of your site, except Offer checkout pages.
## Third-party payment methods
* [PayPal](../../api-integrations/payment-integrations/connect-paypal-to-kajabi)
## Third party processor
* [Stripe](../../api-integrations/payment-integrations/connect-stripe-to-kajabi)
# Troubleshoot webhooks
Source: https://help.kajabi.com/articles/api-integrations/webhooks/troubleshooting-webhooks
Resolve common webhook payload errors and learn best practices for connecting webhooks in Kajabi.
**Webhooks** in Kajabi are URLs that link two apps together, automatically triggering an action in an app after completing an action in another app. For example, adding a contact to InfusionSoft using an Activation Webhook URL for a specific Offer in your Kajabi account will automatically grant the Contact access to that Offer in Kajabi.
**Note:**
Webhooks on Kajabi are exclusively accessible for Heroes on our Growth or Pro Plans. Learn how to upgrade your Kajabi subscription plan [here](../../account-settings/billing/manage-your-subscription).
## Common payload errors
When troubleshooting Kajabi Webhooks, you may encounter the following payload errors:
* **email:** can't be blank
* **name:** can't be blank
* **email:** is invalid
Often, the solution is verifying that both the name and email are included on the Webhook.
It is also good practice to confirm the email is valid.
**Follow this chart to successfully troubleshoot your Webhooks error:**
## Additional information when troubleshooting webhooks
* Webhooks always require the name, email, and external\_user\_id. All values should be lowercase.
* The external\_user\_id will be prioritized over email.
* The easiest way of making the email and external\_user\_id match is to use the email address as the external\_user\_id. If you need assistance updating your existing users' external\_user\_ids to be the email address, [reach out to Support](../../resources/support/how-to-contact-kajabi-support).
* Make sure the required Key-Value Pair/payload is on the top-level. If it's nested underneath it will not work and will give you the "Email can't be blank and Name can't be blank" error as shown below.
### Sample payload comparing top level payload & nested objects payload
# Webhook workflows
Source: https://help.kajabi.com/articles/api-integrations/webhooks/webhook-workflows
Grant Offer access from a third-party Stripe checkout, revoke it on cancellation, and send Kajabi purchase and Form data to outside tools.
A **webhook** is a message one app sends another the moment something happens. In Kajabi, webhooks run in both directions: an **inbound webhook** lets an outside tool grant or revoke access to an Offer, and an **outbound webhook** pushes purchase or Form data out to the tools you already use.
**Note:** Webhooks are available on the Growth and Pro plans. Learn how to [change your Kajabi subscription plan](/articles/account-settings/billing/manage-your-subscription).
## Before you begin
* Create the [Offer](/articles/sales/offers/offers-overview) that customers should get access to
* Confirm your plan includes webhooks
* Get admin access to the outside tool sending or receiving the webhook
* For Stripe workflows, choose a connector such as Zapier, Make, or your own server
## Copy an Offer's Activation and Deactivation URLs
Every Offer has its own pair of inbound webhook URLs. The Activation URL grants access to every Product in that Offer, and the Deactivation URL revokes it.
1. From the Dashboard, click **Sales**, then **Pricing**.
2. Select your Offer.
3. Click **More**, then select **Webhooks**.
4. Copy the **Activation URL**, the **Deactivation URL**, or both.
Each URL contains a secret token unique to that one Offer, so copy it from this window rather than typing it out.
**Warning:** Anyone who has an Activation URL can grant free access to your Offer. Store it like a password and never publish it in client-side code or a public repository.
### Required parameters
Every request to an Activation or Deactivation URL must include three values:
| Parameter | What to send |
| :----------------- | :-------------------------------------------------------------------- |
| `name` | The customer's full name |
| `email` | The customer's email address |
| `external_user_id` | A stable ID for the customer, most often their email address repeated |
Send them as a POST request, with all three at the top level of the payload:
```json theme={null}
{
"name": "Jordan Lee",
"email": "jordan@example.com",
"external_user_id": "jordan@example.com"
}
```
**Note:** Kajabi reads these three values only at the top level. If your connector nests them inside another object, the request fails with an `email can't be blank` or `name can't be blank` error.
## Grant access after a Stripe purchase on a third-party site
If you sell on your own website — WordPress, Shopify, or a custom checkout — and take payment through Stripe, you can have Kajabi create the customer's account and unlock their Products the moment Stripe confirms the payment.
Stripe cannot call the Activation URL on its own. Stripe wraps the buyer's name and email inside its own event object, and Kajabi reads those values only at the top level of the payload. Put a connector between the two to reshape the data: Zapier, Make, or a small script on your own server.
### Connect Stripe to Kajabi with Zapier
Zapier has a built-in Kajabi action, so this route needs no code.
1. Create a Zap with **Stripe** as the trigger app, and choose the Stripe event that fires when a payment completes.
2. Add **Kajabi** as the action app, then select **Grant Access to an Offer**.
3. Connect your Kajabi account and select the **Site** and **Offer** to grant.
4. Map the buyer's details from Stripe into the **Customer Name**, **Email**, and **External User ID** fields.
5. Run a test payment through Stripe to confirm the grant lands, then turn the Zap on.
For the full connection walkthrough, see [Use Zapier with Kajabi](/articles/api-integrations/zapier/use-zapier-with-kajabi).
### Call the Activation URL from your own server
Use this route if you already run a server that listens to Stripe events.
1. Subscribe your server to the Stripe event that fires when a payment completes.
2. Read the buyer's name and email address out of the Stripe event.
3. Send a POST request to the Offer's **Activation URL** with `name`, `email`, and `external_user_id` at the top level of the payload.
4. Treat a `{"status":"OK"}` response as a successful grant, and log every other response for review.
**Tip:** Use the buyer's email address as the `external_user_id` unless you already have a stable customer ID. Kajabi matches on `external_user_id` first, and reusing the email keeps activation and deactivation pointed at the same person.
## Control the emails Kajabi sends when a webhook grants an Offer
What the customer receives depends on whether they already have an account on your site.
* **New customers** get a welcome email with their sign-in details, because Kajabi creates the account and generates a password for them
* **Existing customers** get nothing by default, because the Offer Grant email is off for webhook grants
To send the Offer Grant email as well, add `?send_offer_grant_email=true` to the end of the Activation URL:
```text theme={null}
https://checkout.newkajabi.com/webhooks/offers/XXXXXXXX/000000/activate?send_offer_grant_email=true
```
## Revoke access when a customer cancels or refunds
Access granted by webhook does not end on its own. If a subscription lapses in Stripe, or you refund an order, send a second request to remove the customer's access.
1. Subscribe your connector to the Stripe event that fires on a cancellation, failed payment, or refund.
2. Send a POST request to the Offer's **Deactivation URL** with the same `name`, `email`, and `external_user_id` you sent when granting the Offer.
3. Confirm the customer lost access to every Product in that Offer.
In Zapier, use the **Revoke Access to an Offer** action instead of building the request yourself.
**Note:** Deactivation finds the customer by `external_user_id` alone. If you send a different value than you sent on activation, or leave it blank, the request returns a `Not found` error and the customer keeps access.
## Send purchase data to another tool when an Offer sells
Use an outbound webhook on a single Offer when only that Offer needs to notify an outside tool — a fulfillment service for a physical bonus, for example, or a spreadsheet tracking one launch.
1. Click **Sales** in your Kajabi Dashboard, then select your Offer.
2. Click **More**, then select **Webhooks**.
3. Paste the receiving URL into the **Purchase Webhook URL** field under **Outbound Webhooks**.
4. Click **Save**.
5. Click **Send Test**, which appears beside the field once a URL is saved, to send sample data to your endpoint.
To see which fields arrive at your endpoint, see the [Outbound webhook data reference](/articles/api-integrations/webhooks/what-information-is-sent-with-outbound-webhooks).
## Send site-wide payment events to another tool
Use a site-wide webhook when an outside system needs every payment, not the sales of one Offer — an accounting tool or an internal dashboard, for example.
1. Go to **Settings** > **Integrations & Webhooks**.
2. Click **Create webhook**.
3. Select **Payment Succeeded** or **Cart Purchase** from the **Event** list.
4. Enter your endpoint in the **Endpoint URL** field.
5. Click **Add webhook**.
Each webhook you create is listed with its event and URL, and you can delete any webhook you no longer need.
**Note:** The endpoint must use HTTPS and support TLS 1.2. Kajabi rejects any other URL when you save the webhook.
## Send Form submissions to another tool
Send opt-ins straight into a CRM or email platform as they come in, without exporting a list.
1. Open the Form you want to send submissions from.
2. Click the more options (...) menu, then select **Webhooks**.
3. Enter the URL that should receive the submission data.
4. Click **Save**.
A **Send Test** link appears beside the field once a URL is saved. Use it to check that your endpoint accepts the data before you rely on live submissions. To build the Form itself, see [Create and build your Form](/articles/marketing/forms/create-and-build-your-form).
## Confirm a webhook worked
Every request to an Activation or Deactivation URL is recorded, whether it succeeded or failed. Check the log first whenever a customer says they did not get access.
1. Click **Sales** in your Kajabi Dashboard, then select your Offer.
2. Click **More**, then select **Webhooks**.
3. Click **View your webhook log entries** beneath the **Deactivation URL**.
4. Filter by status, or search the parameters for a customer's email address.
Entries are marked `pending`, `processing`, `complete`, or `error`. An `error` entry shows the values that arrived and the reason the request was rejected, which is usually enough to spot a missing or misspelled parameter.
## Troubleshooting
* **`invalid webhook token`** — the token in the URL is wrong or was cut off in a copy and paste. Copy the URL again from the Offer's **Webhooks** window.
* **`Not found`** — the Offer is archived, the Offer ID in the URL is wrong, or the request was sent to a deactivation without a matching `external_user_id`.
* **A 404 page in your browser** — Activation and Deactivation URLs accept POST requests only, so opening one in a browser always returns a 404. Test with your connector or a tool that can send a POST request.
* **`can't be blank`** — one of the three required parameters is missing, or the payload nests them inside another object instead of sending them at the top level.
* **The grant fails for a repeat purchase** — a customer who already has active access to an Offer cannot be granted it a second time.
For payload-level errors and a full diagnostic chart, see [Troubleshoot webhooks](/articles/api-integrations/webhooks/troubleshooting-webhooks).
## FAQs
### Can I use webhooks with a payment processor other than Stripe?
Yes. Kajabi's Activation and Deactivation URLs do not know or care which processor took the payment. Any tool that can send a POST request with `name`, `email`, and `external_user_id` at the top level can grant or revoke access, including PayPal, a membership plugin, or your own checkout.
### Will my customer get an email when a webhook grants them an Offer?
A customer who is new to your site gets a welcome email with sign-in details. A customer who already has an account gets nothing unless you add `?send_offer_grant_email=true` to the end of the Activation URL.
### Can one Activation URL grant more than one Offer?
No. Each Offer has its own Activation and Deactivation URLs with its own token. To grant several Offers to the same customer, send a separate request to each Offer's Activation URL.
### Do I need a developer to connect Stripe to Kajabi?
No. Zapier's **Grant Access to an Offer** action handles the connection without code. A developer is only needed if you want your own server to call the Activation URL directly.
### What is the difference between an Offer webhook and a site-wide webhook?
An Offer's **Purchase Webhook URL** fires only when that one Offer sells. A webhook created under **Settings** > **Integrations & Webhooks** fires for the event you chose across your whole site.
# Use webhooks with Kajabi
Source: https://help.kajabi.com/articles/api-integrations/webhooks/webhooks-explained
Learn how to use Inbound and Outbound Webhooks to automate communication between Kajabi and other applications.
**Webhooks** are a means of automatic communication between applications, allowing your online accounts to "communicate" to each other by giving and receiving information triggered by an action. Use Inbound and Outbound Webhooks to connect Kajabi with your favorite third-party tools.
Important: If your account has Multiple Order Bumps available (currently in Beta), the behavior of the **Payment Succeeded** and **Purchase Created** webhooks has changed. One-time primary offers and one-time order bumps are now grouped into a single transaction, which affects how many events fire and what the payloads contain. Review [Webhook Changes with the Introduction of Multiple Order Bumps](https://help.kajabi.com/articles/api-integrations/webhooks/webhook-changes) to understand what's different and confirm your automations continue to work as expected.
**Note:** Webhooks on Kajabi are exclusively accessible for Heroes on our Growth or Pro Plans. Learn how to upgrade your Kajabi subscription plan [here](../../account-settings/billing/manage-your-subscription).
## Access webhook URLs
Each [Offer](../../sales/offers/offers-overview) has an Activation and Deactivation Webhook URL.
### Locate Offer Activation and Deactivation webhook URLs
* Open the **Sales** tab from the Dashboard.
* Then, select your **Offer**.
* Click the **More Actions** dropdown.
* Select **Webhooks**:
Enter your Purchase Webhook URL for individual Offers to send information from individual Offers to your third-party application.
### Locate the Purchase webhook URL
* Open the **Settings** tab from the Dashboard.
* Click **Checkout Settings**.
* Navigate to **Webhooks**:
Enter your Purchase webhook URL in your checkout settings to send information from every Offer on your site to your third-party application.
## Inbound webhooks
An **Inbound Webhook** allows your Kajabi site to collect information from an outside application.
On Kajabi, you can choose between an **Activation Webhook** and a **Deactivation Webhook**.
### Activation Webhook URL
The activation webhook will trigger access to Kajabi based on an action made in an outside application.
The most common use for this webhook is granting an Offer to a customer when the offer was purchased through a payment processor other than Stripe or PayPal.
### Deactivation Webhook URL
If the Deactivation Webhook URL of a specific Offer is used, it will revoke access to all Products associated with that Offer.
This Webhook is most commonly used when a customer of a subscription Offer stops making payments through a payment processor other than Stripe or PayPal.
### Required parameters
Kajabi requires that the received information from connected third-party apps include these Parameters to trigger Activation or Deactivation: **Name, Email Address, and External\_User\_ID** (in many cases, the external\_user\_id will be the email address repeated).
### View webhook log entries
Once you have connected your webhook, you can view your webhook log entries.
To view your webhook log entries, click into the link beneath the Deactivation URL.
There you will find your connected webhooks with data including ID, Status, Request UUID, Params, Errors, and It's created at time and date.
## Outbound webhooks
An **Outbound Webhook** can be used when you would like to send information to a third-party application. [Learn more](../../api-integrations/webhooks/what-information-is-sent-with-outbound-webhooks).
On Kajabi, you have the option to enable a **Purchase Created** webhook, a **Purchase Succeed** webhook, and a **Cart Purchase** webhook.
## Purchased Created webhook
Purchase Created webhooks are used to keep track of successful purchases on Kajabi.
For this webhook, third-party apps will provide a **Purchase Webhook URL**.
This webhook sends information to connected third-party applications when a customer purchases a one-time offer or for their first payment of a subscription or payment plan offer. Please note that this does not include purchases made through Kajabi Cart.
To set up the Purchase Create webhook:
1. You'll need to obtain the Purchase Webhook URL for the third-party application you would like to connect. Once you've obtained the Purchase Webhook URL from the third-party application, from your Kajabi Dashboard, navigate to the **Sales** tab.
2. Next, click on **Offers**.
3. Select which offer you would like to set up the Purchase Created Webhook on.
4. Now, click on the "**...**" menu, and then select **Webhooks.**
5. Under **Purchase Webhook URL** enter the third-party application URL.
6. Click **Save** to finish setting up the Purchase Created webhook:
**Note:** The Purchased Created Outbound Webhooks are triggered only upon the purchase of an Offer and will not be triggered if an Offer is [granted](../../sales/offers/how-to-grant-an-offer), or for subsequent transactions related to a payment plan or subscription offer.
## Cart Purchase webhook
Cart Purchase webhooks are used to keep track of the total sales of your Kajabi Cart orders.
This webhook sends information to a connected third-application when a new Cart order is successful.
To set up the Cart Purchase Webhook:
1. From your Kajabi Dashboard, navigate to **Settings**.
2. In Settings, click **Third Party Integrations and Webhooks**.
3. Select the **Webhooks** tab.
4. Click **Create Webhook**.
5. In Create Webhook, select the **Cart Purchase** event.
6. In the **Endpoint URL** tab, enter your third-party application URL.
7. Click **Add Webhook** to finish setting up the Cart Purchase Webhook:
## Payment Succeeded webhook
Payment Succeeded webhooks are used to keep track of total sales on your Kajabi site.
This webhook sends information to a third-party application whenever a sale is made. This includes successful purchase offers, as well as subsequent successful payments for subscription and payment plan offers. Cart orders are also included.
To set up the Payment Succeeded webhook:
1. From your Kajabi Dashboard, navigate to **Settings**.
2. In Settings, click **Third Party Integrations and Webhooks**.
3. Select the **Webhooks** tab.
4. Click **+Create Webhook**.
5. In +Create Webhook, select the **Payment Succeeded** event.
6. In the **Endpoint URL** tab, enter your third-party application URL.
7. Click **Add Webhook** to finish setting up the Payment Succeeded Webhook:
## Form webhooks
A Form Webhook will allow you to gather information and trigger an automation when a [Form](../../website/pages/how-to-add-a-form-to-your-page) is submitted.
Once you have set up a Form Webhook in a third-party application, such as [Zapier](../../api-integrations/zapier/use-zapier-with-kajabi), you will need the webhook URL.
### To find the webhook URL in Zapier
1. Select the **webhook** you want to attach to your Form.
2. Select the **share** button in the upper right corner.
3. Copy this **webhook URL**:
### Add the webhook URL to the Kajabi Form
1. Open the **Marketing** tab from your Dashboard.
2. Select the **Forms** tab.
3. Click into the **Form** you wish to add the Webhook URL to.
4. Select the **More Actions menu** (`…`), and select **Webhooks**.
5. Paste your **Webhook URL** into the field.
6. Remember to press **Save** to keep and apply your changes:
## Offer grant confirmation
Normally, when you grant an Offer to a user it will send them an Offer Grant Confirmation email if the customer is subscribed to your marketing emails.
This is an email automatically sent by Kajabi letting the user know what they have purchased or been granted.
However, this email will not automatically send when the Offer is granted via the Activation Webhook URL.
In order to send the Offer Grant Confirmation email when using the Activation Webhook URL, simply add this text to the end of your Activation Webhook URL: `?send_offer_grant_email=true`.
Here's an example:
`https://checkout.newkajabi.com/webhooks/offers/XXXXXXXXX/00000/activate?send_offer_grant_email=true`
An example payload would look like:
`{ "name": "John Doe", "email": "jdoe@example.com", "external_user_id": "ext_123", }`
## Troubleshooting webhooks
If you are having an issue connecting your webhook, follow along with our troubleshooting webhooks guide: [Troubleshooting Webhooks](../../api-integrations/webhooks/troubleshooting-webhooks).
# Outbound webhook data reference
Source: https://help.kajabi.com/articles/api-integrations/webhooks/what-information-is-sent-with-outbound-webhooks
Reference the fields sent to third-party applications when using Kajabi Outbound Webhooks.
**Outbound Webhooks** send information to third-party applications when specific actions occur in Kajabi. This article covers all the fields sent for Purchase Created, Payment Succeeded, Cart Purchase, and Form Submission webhooks.
**Note:**
Webhooks on Kajabi are exclusively accessible for Heroes on our Growth or Pro Plans. Learn how to upgrade your Kajabi subscription plan [here](../../account-settings/billing/manage-your-subscription).
## Outbound webhooks
What are outbound webhooks? An Outbound Webhook sends information to a third-party application when an action occurs in Kajabi.
An Outbound Webhook can be used when you would like to send information (including name, email, and transaction information) to a third-party application after a purchase has been made in Kajabi.
[Learn how to use webhooks on Kajabi](../../api-integrations/webhooks/webhooks-explained).
## Purchase Created webhooks
The following fields are sent to your third-party applications when a customer purchases a one-time offer, their first payment for a subscription, or a payment plan offer. Please note that this does not include purchases made through Kajabi Cart. For cart orders, please refer to the Cart Purchase Webhooks section below.
### ID
* **id** - Unique Identifier for the transaction.
### Offer
Offer information associated with the payment at the time of the transaction.
* **id** - Unique Identifier for the Kajabi offer
* **title** - The title of the Kajabi Offer that was purchased
### Member
Contact information associated with the payment at the time of transaction.
* **id** - Unique Identifier for the customer's contact record who made a payment transaction
* **email** - The contact record's email address at the time of the payment transaction
* **name** - The contact record's full name at the time of the payment transaction
* **first\_name** - The contact record's first name at the time of the payment transaction
* **last\_name** - The contact record's last name at the time of the payment transaction
### Extra contact information
Additional contact details collected at the time of the transaction, if enabled in the Offer settings.
* **address\_line\_1** - Customer's address line 1 (e.g., street, PO Box, or company name), if collected at the time of checkout
* **address\_line\_2** - Customer's address line 2 (e.g., apartment, suite, unit, or building), if collected at the time of checkout
* **address\_city** - Customer's city, district, suburb, town, or village, if collected at the time of checkout
* **address\_country** - Customer's two-letter country code, if collected at the time of checkout
* **address\_country\_name** - Customer's full name of country, if collected at the time of checkout
* **address\_state** - Customer's state, county, province, or region, if collected at the time of checkout
* **address\_zip** - Customer's ZIP or postal code, if collected at the time of checkout
* **phone\_number** - Customer's phone number, if collected at the time of checkout
* **business\_number** - Customer's business/tax number, if collected at the time of checkout
* **custom\_fieldname** - Custom form fields and submitted values at the time of checkout (e.g., custom\_1, custom\_2, etc.)
## Payment Succeeded webhooks
### Attributes
* **id** - Unique identifier for the event.
* **Event** - String representing the event type. For example, "payment.succeeded" occurs whenever a payment is successful.
### Offer (won't show for orders with multiple Offers)
Offer information associated with the payment at the time of the transaction.
* **id** - Unique Identifier for the Kajabi offer.
* **title** - The title of the Kajabi Offer that was purchased.
* **internal\_title** - The internal title of the Kajabi offer that was purchased.
* **type** - Kajabi Offer type. Can be one-time, subscription, payment plan, or free.
### Member
Contact information associated with the payment at the time of transaction.
* **id** - Unique Identifier for the customer's contact record who made a payment transaction.
* **email** - The contact record's email address at the time of the payment transaction.
* **name** - The contact record's full name at the time of the payment transaction.
* **first\_name** - The contact record's first name at the time of the payment transaction.
* **last\_name** - The contact record's last name at the time of the payment transaction.
### Payment transaction
Payment information associated at the time of transaction.
* **id** - Unique identifier for the transaction.
* **created\_at** - Date and time at which the transaction was created.
* **payment\_processor** - Processor used for the transaction (e.g., "Kajabi Payments", "Stripe").
* **payment\_method** - Payment method used for the transaction.
* **currency** - Three-letter ISO currency code.
* **coupon\_code** - Coupon code used, if applicable.
* **subtotal** - Order subtotal, in currency's smallest unit, before discounts and taxes.
* **discount\_amount** - Total discount amount for the order, in currency's smallest unit.
* **sales\_tax** - Total sales tax for the order, in currency's smallest unit.
* **amount\_paid** - Total amount paid after discounts and taxes, in currency's smallest unit.
## Cart Purchase webhooks
### Order
Order information associated with the cart purchase.
* **id** - Unique identifier for the order.
* **source** - The origin of the order (e.g., "cart").
* **order\_number** - The order number assigned to this cart order.
* **order\_items** - An array of items included in the cart order. Each order item contains the following fields:
* **type** - The type of item (e.g., "Offer").
* **id** - Unique identifier for the item (e.g., the Offer ID).
* **title** - The title of the item at the time of purchase.
* **internal\_title** - The internal title of the item, if set.
* **quantity** - The quantity of this item purchased.
* **unit\_cost** - The unit price of the item, in currency's smallest unit (e.g., cents).
* **unit\_cost\_decimal** - The unit price of the item. Formatted with decimal places if applicable.
* **subtotal** - The line item subtotal (unit cost × quantity), in currency's smallest unit, before discounts and taxes.
* **subtotal\_decimal** - The line item subtotal. Formatted with decimal places if applicable.
* **discount\_amount** - The discount applied to this line item, in currency's smallest unit.
* **discount\_amount\_decimal** - The discount applied to this line item. Formatted with decimal places if applicable.
* **sales\_tax** - Sales tax for this line item, in currency's smallest unit.
* **sales\_tax\_decimal** - Sales tax for this line item. Formatted with decimal places if applicable.
* **total\_amount** - The total for this line item after discounts and taxes, in currency's smallest unit.
* **total\_amount\_decimal** - The total for this line item. Formatted with decimal places if applicable.
### Payment transaction
Transaction details for the cart purchase.
* **id** - Unique identifier for the transaction.
* **created\_at** - Date and time at which the transaction was created.
* **payment\_processor** - Processor used for the transaction (e.g., "Kajabi Payments", "Stripe").
* **payment\_method** - Payment method used for the transaction. For Kajabi Payments, this is more granular (e.g., visa, mastercard, apple\_pay, etc.).
* **payment\_method\_country** - Two-letter country code of the payment method, if available.
* **currency** - Three-letter ISO currency code.
* **coupon\_code** - Coupon code used, if applicable.
* **subtotal** - Order subtotal, in currency's smallest unit, before discounts and taxes.
* **subtotal\_decimal** - Order subtotal. Formatted with decimal places if applicable.
* **discount\_amount** - Total discount amount for the order, in currency's smallest unit.
* **discount\_amount\_decimal** - Total discount amount. Formatted with decimal places if applicable.
* **sales\_tax** - Total sales tax for the order, in currency's smallest unit.
* **sales\_tax\_decimal** - Total sales tax. Formatted with decimal places if applicable.
* **amount\_paid** - Total amount paid after discounts and taxes, in currency's smallest unit.
* **amount\_paid\_decimal** - Total amount paid. Formatted with decimal places if applicable.
* **receipt\_number** - General receipt/invoice ID for the transaction.
### Kajabi Payments fields (if applicable)
These fields are only included when Kajabi Payments is the payment processor:
* **fee\_amount** - Processing fees, in currency's smallest unit (cents).
* **fee\_amount\_decimal** - Processing fees. Formatted with decimal places if applicable.
* **net\_amount** - Net amount after fees, in currency's smallest unit (cents).
* **net\_amount\_decimal** - Net amount after fees. Formatted with decimal places if applicable.
### Settlement fields (if applicable)
These fields are only included when a cross-currency settlement exists (Kajabi Payments):
* **settlement\_currency** - The currency code of the settlement/transfer.
* **settlement\_amount** - Settlement amount in the settlement currency's smallest unit.
* **settlement\_amount\_decimal** - Settlement amount. Formatted with decimal places if applicable.
* **settlement\_net\_amount** - Net settlement amount after fees, in the settlement currency's smallest unit.
* **settlement\_net\_amount\_decimal** - Net settlement amount. Formatted with decimal places if applicable.
### Invoice fields (if applicable)
* **invoice\_number** - Only included for invoice-based orders.
### Member
Contact information associated with the payment at the time of the transaction.
* **id** - Unique identifier for the customer's contact record.
* **email** - The contact record's email address at the time of the transaction.
* **name** - The contact record's full name at the time of the transaction.
* **first\_name** - The contact record's first name at the time of the transaction.
* **last\_name** - The contact record's last name at the time of the transaction.
### Extra contact information
Additional contact details collected at the time of the transaction, if enabled. Only fields with values are included.
* **address\_line\_1** - Customer's address line 1 (e.g., street, PO Box, or company name), if collected at checkout.
* **address\_line\_2** - Customer's address line 2 (e.g., apartment, suite, unit, or building), if collected at checkout.
* **address\_city** - Customer's city, district, suburb, town, or village, if collected at checkout.
* **address\_country** - Customer's two-letter country code, if collected at checkout.
* **address\_country\_name** - Customer's full country name, if collected at checkout.
* **address\_state** - Customer's state, county, province, or region, if collected at checkout.
* **address\_zip** - Customer's ZIP or postal code, if collected at checkout.
* **phone\_number** - Customer's phone number, if collected at checkout.
* **business\_number** - Customer's business/tax number, if collected at checkout.
* **custom\_fieldname** - Custom form fields and submitted values at the time of checkout (e.g., custom\_1, custom\_2, etc.).
## Form Submission webhooks
The following fields are sent to your third-party applications (e.g., Zapier) when a customer submits a form.
### Base fields
* **id** - Unique identifier for the form submission
* **form** - Information about the form that was submitted:
* **id** - Unique identifier for the form.
* **title** - The title of the form.
* **custom\_fields** - An object containing all custom field values, keyed by the custom field's title rather than its handle.
### Default Form fields
These fields appear at the top level of the payload only if the corresponding field is configured on the form.
* **name** - The submitter's full name
* **email** - The submitter's email address
* **phone\_number** - The submitter's phone number
* **mobile\_phone\_number** - The submitter's mobile phone number
* **address\_line\_1** - Address line 1 (e.g., street, PO Box, or company name)
* **address\_line\_2** - Address line 2 (e.g., apartment, suite, unit, or building)
* **address\_city** - City, district, suburb, town, or village.
* **address\_state** - State, county, province, or region
* **address\_country** - Two-letter country code
* **address\_zip** - ZIP or postal code
* **business\_number** - Business/tax number
### Parsed name fields
If the form has a name field configured, the following additional fields are included:
* **first\_name** - The submitter's first name, parsed from the name field.
* **last\_name** - The submitter's last name, parsed from the name field.
### Custom Form fields
* **custom\_1** through **custom\_150** - Custom field values, keyed by their internal handle (e.g., custom\_1, custom\_2, etc.). These appear at the top level only if the corresponding custom field is configured on the form. The value is whatever the submitter entered.
# Create a certificate with Google Slides
Source: https://help.kajabi.com/articles/api-integrations/zapier/how-to-create-a-certificate-with-google-slides
Send your customers a personalized Certificate of Completion using Google Slides and Zapier when they complete your Course.
Create a seamless experience for your customers with Zapier by automatically sending a customized certificate of completion when a customer completes your Course Product in Kajabi. This guide walks you through designing your certificate in **Google Slides**, building a Zap with Zapier, and creating an Automation to streamline the process.
**Note:**
This guide requires an upgraded Zapier account to build a Multi-Step Zap. If you wish to send a certificate directly from Kajabi read [How to Send a Certificate of Completion with Automations](../../marketing/automations/how-to-send-a-certificate-of-completion-with-automations).
## Prepare the site
First, set up your site in Kajabi by creating an Automation to add a Tag.
When your custom Tag is added to a customer's Profile, Kajabi will notify Zapier that your customer has completed a course and Zapier will send a personalized Certificate of Completion to your customer's email inbox.
Create an Automation to add a Tag when your customer clicks **Mark as Complete** in the Lesson or **Passes an Assessment**:
* Open the **Product** tab from the Dashboard.
* Select the Course your Certificate of Completion will be connected to.
* Click the **Lesson** that will trigger the sending of your certificate.
* Navigate to the bottom of the Editor.
* Click **+ Add Automation**.
* Select **Add a tag** in the Then dropdown.
* Enter your Tag name. We recommend naming your Tag with keywords to help you easily identify the meaning of your Tag.
* Click **Save** to apply your changes:
Read [Automations in Course Lessons](../../marketing/automations/automations-in-course-lessons) to learn more.
**Note:**
The Lesson is considered complete when your customer selects the **Mark as Complete** button located at the bottom of the Lesson.
**Note:**
The Assessment feature inside of Courses has been sunset. This feature may still appear in older accounts. The Quizzes feature is now available inside of Courses and offers advanced functionality. Assessments can still be added to Web Pages. [Customize your Quiz Settings](../../products/courses/course-quizzes#h_01G16CT90ZYCJFKEYEC4BTSTD4) to add an automation when a Quiz is passed or completed.
The next step depends on your Kajabi Plan and your vision for your Certificate. Read [Basic vs. Advanced Automations](../../marketing/automations/basic-vs-advanced-automations) to learn more about Automations in Kajabi.
### If you have a Kajabi Basic Plan
Your Automation will add a Tag when a customer completes the Lesson. Click **Save** to keep your changes and skip to [create the certificate](#create-a-certificate-of-completion-template-in-google-slides).
### If you have a Growth or Pro Plan
You have the option to automatically add a Tag when your customer **completes the Lesson**:
* Click **Save** to keep your changes and skip to [create the certificate](#create-a-certificate-of-completion-template-in-google-slides).
Or automatically add a Tag when your customer **passes** or **completes an Assessment**:
* Click **Add Condition**.
* Open the **Select filter** dropdown menu.
* Select your desired conditional filter: **Completed** or **Passed any of these assessments(s)**.
* In the next field, select your Assessment and click **Apply**.
* Click **Save** to keep your changes:
Learn to [create an Assessment and add it to your Course Lesson](../../contacts/create-manage-and-share-assessments/how-to-add-an-assessment-to-your-course-product).
## Create a certificate of completion template in Google Slides
The first step to creating a Certificate of Completion with Google Slides is to create and design your Certificate Template.
For the purpose of this Guide, we will use a standard template:
* Open the standard template from Google Slides [**here**](https://docs.google.com/presentation/u/1/d/1LdzFssNUfc1yg88ZA9KU9XWAPP5Ws1AY6egA9_DzSlI/template/preview?usp=drive_web#).
* Follow along with this template by clicking **USE TEMPLATE** in the top right corner of the screen:
### Edit the template
Next, customize the design of the certificate template to fit your brand and language. Then, specify the information you want added to your certificate. Typically, certificates include:
* Student name
* Course name
* Issuing date
For Google Slides to recognize your specifications as variables and not simply text, wrap each variable name with two curly braces. For example, `{{name}}`.
**Note:**
The variable name specified in your Google Slide Template has nothing to do with the variable name in Kajabi. For example, using `{{name}}` or `{{student_name}}` or `{{user_name}}` will not make a difference.
After customizing your certificate, title your Google Slide to easily identify later. Simply click on the title in the top left corner and enter your title.
## Set up a Zap to automatically create certificates
Make a Zap with [Zapier](https://zapier.com/app/dashboard) to automatically create and send certificates of completion based on your students' actions on your site. Read [How to Use Zapier with Kajabi](./use-zapier-with-kajabi) for details.
* Create a new Zap by clicking **Make a Zap**:
First, select the Trigger App: Kajabi
* Select **Kajabi** for the App.
* Then, select **Tag Added** for the Trigger Event.
* Click **Continue**:
Zapier will ask you to connect your account in the next step if it isn't already connected. Read [How to Use Zapier with Kajabi](./use-zapier-with-kajabi#step-3-connect-zapier-to-your-kajabi-account) for details.
After selecting your account, complete the **Customize Tag** step:
* First, select your Site in the second dropdown menu or you will receive an error that your Tags are not available.
* Then, select the Tag created with your Automation.
* Click **Continue**.
* Then, click **Test & Continue**:
**Note:**
The Test & Continue step requires data to successfully perform the test. Therefore, there must be a Tag in your site. If you haven't created a Tag, refer back to the Setting up your Site step. Read [Zapier's Guide](https://zapier.com/help/create/basics/change-the-sample-data-in-your-zap-trigger) if you wish to change the sample data.
Next, configure the Action App: Google Slides
* Select **Google Slides** for the App.
* Select **Create Presentation From Template** for the Action Event.
* Click **Continue**:
Zapier will ask you to connect your Google Slides account in the next step if it isn't already connected. Select **Sign in to Google Slides**. Then, select your account from the popup. Click **Continue** to set up your Google Slides.
Set up Google Slides Presentation:
* Give your certificate a unique name in the **Title of New Presentation** field. This title will display for your customer. Personalize the title with a combination of the Contact Name variable and custom text for the title. To do so, click the field and select **Contact Name**. Then, enter your remaining title text.
* If you wish to allow your customers to download the Certificate, select **yes** in the **Is Shared?** field.
* In the **Template Presentation** dropdown, select your Certificate of Completion title.
Now you will see all the variables you defined in Step 1. Proceed by matching each variable to the appropriate Kajabi data:
* In the Name field, select **Contact Name**.
* In the Course\_name or custom variable created in the Google Slide, enter your Product Title.
* In the Issuing date field, enter `{{zap_meta_human_now}}` into the field to pass the date to your certificate. If you wish to modify it, check out [Zapier's Guide](https://zapier.com/help/create/customize/insert-the-time-your-zap-runs-into-a-field).
* After matching each variable, click **Continue.**
After completion, your setup should look similar to the screenshot below:
* Once you have completed the setup, click **Continue**.
## Modify the Zap to send to customers
After creating your certificate in Google Slides and setting up your Zap with Zapier, modify the Zap to automatically send to your students upon completion of the Course.
In the same Zap you created, add another Action App, **Email by Zapier**:
For the Additional Action step:
* Select **Email by Zapier** for the App:
* Keep the default setup **Send Outbound Email** as the Action Event.
* Click **Continue**:
Then, set up the email template:
* Pass the customer's email address from your Trigger App into the **To** field.
* Enter your desired Subject Line in the **Subject** field.
* Complete the **Body** of your Email Template. Use variables to personalize your email.
* Then, copy and paste `Export Links Application/pdf` into the **Attachment** field.
* Select the matching file object: **Export Links Application/pdf**. This will provide a PDF copy of the certificate to your customer.
If your email address in the **To** field contains a customer's email address, it will send a test email to that customer's email inbox.
Create a [test account in the Contacts tab](../../contacts/manage-your-contacts/how-to-manually-add-a-new-customer-to-your-site) of your site with your test email address and read [Zapier's Guide](https://zapier.com/help/create/basics/change-the-sample-data-in-your-zap-trigger) to change the sample data in the Trigger App step to receive your Test Certificate Email:
After successfully testing your Zap, be sure to turn your Zap **On**:
Remember, you can always return to the Zap to modify your certificate template and email template.
## Customer experience
With your Zap turned on, Zapier will create and send an automated certificate to your customers upon completion of your Course.
Now, when your customer clicks **Mark as Complete** in the Course Lesson you specify or **passes the Assessment** you set, the Tag you created will be added to your customer's profile on your site.
Once added, Kajabi will notify Zapier to trigger your Zap and send your Google Slide Certificate of Completion to your customer's email inbox:
Your customer can now download, print, view the Certificate as with any PDF file:
# Locate the Kajabi API key and API secret
Source: https://help.kajabi.com/articles/api-integrations/zapier/how-to-locate-your-kajabi-api-key-and-api-secret
Find your Kajabi API Key and API Secret to connect your site to third-party applications.
The **API Key** and **API Secret** are used to integrate two applications together. On Kajabi, the API Key and API Secret are commonly used to create integrations between third-party applications and Kajabi through Zapier.
**Note:** This article covers the API Key and API Secret used for Zapier and third-party integrations — these are not the same as Public API credentials. If you're building a custom integration using Kajabi's Public API, see [Use Kajabi's public API](https://help.kajabi.com/articles/api-integrations/public-api/using-kajabis-public-api) instead.
## Use the API Key and API Secret
The API Key and API Secret are used to integrate two applications together.
On Kajabi, the API Key and API Secret are commonly used to create integrations between third-party applications and Kajabi through Zapier.
Learn [How to Use Zapier with Kajabi](./use-zapier-with-kajabi) for details.
## Access the API Key and API Secret
### Access API credentials
1. Open **Settings** from your Dashboard.
2. Click **Account Details**.
3. Navigate to **API Credentials** to copy your API Key and API Secret:
# Send certificates of completion with Accredible
Source: https://help.kajabi.com/articles/api-integrations/zapier/how-to-send-certificates-of-completion-with-accredible
Automatically send certificates of completion by connecting Kajabi and Accredible with Zapier.
With Zapier, you can create third-party integrations with various apps like **Accredible**. This guide walks you through the process of setting up both your Kajabi and Accredible to automatically send certificates to your customers when they reach the final Course Lesson and submit a Form.
**Tip:**
Looking for more ways to create and send a certificate of completion? Learn to create a certificate of completion with [Google Slides](./how-to-create-a-certificate-with-google-slides) or [Automations](../../marketing/automations/how-to-send-a-certificate-of-completion-with-automations).
With the many customizable options available in both Kajabi and Accredible, be sure to check out the different features available in each to see how you can create a unique certificate that best fits your brand and business.
Learn more about [Forms in Kajabi](../../marketing/forms/create-and-build-your-form) and check out [Accredible's learning center](https://help.accredible.com/quick-start-guide-1-setting-up-a-certificate-design) to find out how you can customize your certificate.
### What happens after a customer completes the final Course Lesson with this setup?
After your customer reaches the final Lesson in your Course, they will be required to complete and submit a Form:
This will trigger your Zap to send the certificate of completion to the customer. Your customer will receive the certificate of completion at the email address submitted in the Form.
To view and share their certificate, your customer will simply click **View my certificate**:
*Preview example certificate:*
## Prepare the site in Kajabi
Before creating your Zap with Zapier, prepare your Form and Product in Kajabi.
With this setup, your customers must complete a Form in the final Lesson of your Course Product to receive their certificate of completion.
### 1. Create the Form
First create your Form:
* Open the **Marketing** tab from the Dashboard.
* Click **Forms**.
* Create a new **Form**. [Learn more](../../marketing/forms/create-and-build-your-form)
After creating your Form, set up your Embed Form:
* Click **Embed** in the top menu.
* Customize the settings of your embed form to change the appearance.
* Then, copy the **Embed Code** for the Form:
### 2. Embed the Form into the final Course Lesson
To include your Form in your final Course Lesson, you must embed the Form into the body of your Lesson:
* Open the **Products** tab from the Dashboard.
* Select the **Course Product** you wish to use to send a certificate to your customers.
* Open the **Lesson editor** for the final Course Lesson.
* Paste the embed code into the source code (source code icon) of the final Lesson.
* Click **Ok** to apply.
* Click **Save** to keep your changes:
**Note:**
In the Course Lesson editor, your embedded Form will not display in the body editor. Preview the Lesson to see how your Form will display for your customers.
### 3. Prepare for the Zap by completing and submitting the Form
The Test & Continue step in Zapier requires data to successfully perform the test. Therefore, there must be a Form Submission in your Form.
To create a test form submission:
* Click **Preview** in the top menu.
* Complete and submit your Form:
## Prepare the certificate in Accredible
After preparing your site, set up your certificate of completion with [Accredible](https://www.accredible.com/).
Already have your Accredible certificate and group set up? [Skip to Create the Zap](#create-the-zap) to set up your Zap.
### 1. Create and design the Accredible certificate
Accredible is a third-party app specialized in creating and sending digital certificates or badges.
With the powerful pairing of Kajabi and Accredible through Zapier, you can create professional, streamlined certificates to award your customers.
[Learn to create your certificate in Accredible](https://help.accredible.com/quick-start-guide-1-setting-up-a-certificate-design)
*Example certificate design:*
### 2. Create a group
After creating and designing your Accredible certificate, create a group for your certificate:
Creating a group is necessary for creating your Zap.
When you create your Accredible action event with Zapier, your group will be used to complete the cohort field.
[Learn to create your group in Accredible](https://help.accredible.com/how-do-i-create-a-group)
## Create the Zap
After preparing your Kajabi site and Accredible certificate, set up your Zap with Zapier.
Begin by setting up your trigger app to trigger the Accredible certificate when a new Kajabi Form is submitted.
Make a Zap with [Zapier](https://zapier.com/app/dashboard) to automatically create and send certificates of completion when your customer completes your Course Product and submits the Form.
* Create a new Zap by clicking **Make a Zap**:
Read [How to Use Zapier with Kajabi](./use-zapier-with-kajabi) for more details.
### 1. Select the Trigger App: Kajabi
For the Trigger App & Event:
* Select **Kajabi** for the App.
* Then, select **New Form Submission** for the Trigger Event.
* Click **Continue**:
Zapier will ask you to connect your account in the next step if it isn't already connected:
* Connect your Kajabi account by copying and pasting your [API Key and Secret](./how-to-locate-your-kajabi-api-key-and-api-secret) into Zapier.
Read [How to Use Zapier with Kajabi](./use-zapier-with-kajabi#step-3-connect-zapier-to-your-kajabi-account) for more details.
After selecting your account, complete the **Customize Form Submission** step:
* First, select your Site in the second dropdown menu.
* Then, select the Form created in Step 1.
* Click **Continue**:
* Then, click **Test trigger**:
**Note:**
The Test & Continue step requires data to successfully perform the test. Therefore, there must be a Form Submission. If you haven't created a Form Submission, refer back to the Prepare for your Zap step. Read [Zapier's Guide](https://zapier.com/help/create/basics/change-the-sample-data-in-your-zap-trigger) if you wish to change the sample data.
### 2. Configure the Action App: Accredible
For the Action App & Event: **2. Do this...** connect your Accredible to create a new credential when your Form in Kajabi is submitted.
For the Action App & Event: **2. Do this...**
* Select **Accredible Certificates** for the App.
* Select **Create Credential** for the Action Event.
* Click **Continue**:
Zapier will ask you to connect your Accredible account in the next step if it isn't already connected. Select **Sign in to Accredible**. Then, paste your Accredible API into the popup. [Learn to find your Integration API](https://help.accredible.com/how-do-i-find-my-integration-api-key)
Then, click **Continue** to set up your Accredible Action Event.
### Customize credential
* In the Cohort Name field, select the name of your group created in Step 2 of creating your certificate group:
Proceed through the Customize Credential step by matching each variable to the appropriate Kajabi data:
* In the Name field, select **First Name** (or **Name** if you wish to display the full name).
* In the Recipient Email field, select the **Email** data.
* In the Course Name field, enter the **name of your Product or the achievement** the certificate is for.
* In the Course Description field, **type a brief description** of the Course or achievement.
* (optional step) If you have any additional attributes set up in your Accredible certificate, match the attribute to the data pulled from your Form in Kajabi.
After completing this part of the setup, your fields should look similar to the screenshot below:
* Then, in the Publish Credential field, be sure to select **True** to publish your credential when the Form is submitted.
The Test Certificate will pull data from the Trigger App Test according to your Accredible set up.
Navigate to your Accredible account and open **Credentials** to view the Test Credential:
## Turn on the Zap
After successfully testing your Zap, be sure to turn your Zap **On**:
Turning on your Zap will finalize and enable the connection between Kajabi and Accredible to ensure that your future Form submitters in the final Lesson of your Course Product receive their published certificate.
Remember, you can always return to the Zap to modify your setup.
# Troubleshoot Zapier
Source: https://help.kajabi.com/articles/api-integrations/zapier/troubleshooting-zapier
Resolve common issues when creating integrations between Kajabi and Zapier.
**Zapier** is an online automation tool that allows you to connect two or more applications to automate repetitive tasks without coding or relying on developers to build an integration. If you encounter issues while creating an integration between Kajabi and Zapier, refer to this troubleshooting guide.
## Troubleshoot Zapier with Kajabi
## Zapier field errors
When creating an integration between Kajabi and Zapier, you may encounter the following field errors:
* **is invalid:** The email being used is likely invalid
* **Find Data (error):** Zapier may be unable to pull sample data.
* **Required field** "Customer Name" (name) is missing.
* **Required field** "Email" (email) is missing.
* **Required field** "External User ID" (external\_user\_id) is missing.
Often, the solution to resolving field errors is to verify the name, email, and external\_user\_id are all included on the Zap. Confirm the email address used is valid.
## Common Zapier error messages
The following is a list of the checkout error messages you may encounter. Click to learn more about each error:
* [uoffer: uhas already been granted to this customer](#uoffer-uhas-already-been-granted-to-this-customer)
* [uemail: uis already taken](#uemail-uis-already-taken)
### uoffer: uhas already been granted to this customer
*the u before "offer" and "has" is there on the actual error*
This means the user already owns the Offer being granted. Offers can only be granted once per user. In other words, an existing user **using the external\_user\_id used on the zap**, already owns the Offer being granted.
**Solution:**
* Make sure that the existing user is using the same external\_user\_id and email as the zap.
* Edit the external\_user\_id of the existing user or change the external\_user\_id on the zap.
### uemail: uis already taken
*the u before "email" and "is" is there on the actual error*
This means there is an existing user in the system using the same email but is using a different external ID (different from the external ID used in the Zap).
**Solution:**
* Make sure that your Zaps are set up in a way where the external user ID will be unique for each individual user. Make sure that the existing user is using the same external\_user\_id and email as the Zap.
**Note:**
Zapier is case sensitive. When troubleshooting your Zaps, be conscious of the capitalized and non capitalized letters in your form fields.
## Data retrieval issues
Zapier may be unable to pull sample data from the apps you wish to integrate. If you are unable to pull sample data go ahead and skip the test. Preview the sample data later in the flow.
Before integration, be sure to have at least one purchase, form submitted, or assessment completed on your site depending on the connection you wish to create with Kajabi and Zapier. This will enable Zapier to pull sample data from your site to test the connection.
If you are still having trouble retrieving data, try the steps below:
* Clear your browser's cache. Here are a few commonly used browsers and their support guides on how to clear their browser cache:
* **Using Google Chrome?** Read [Google's Support Guide](https://support.google.com/accounts/answer/32050?hl=en) on Clearing Cache and Cookies.
* **Using Safari?** Read [Apple's Support Guide](https://support.apple.com/guide/safari/manage-cookies-and-website-data-sfri11471/mac) on Removing Stored Cookies and Data.
* **Using Firefox?** Read [Mozilla's Support Guide](https://support.mozilla.org/en-US/kb/delete-browsing-search-download-history-firefox) to delete browsing, search, and download history.
* Try using an alternate browser to help isolate the issue (e.g., if you are using Safari, try using [Google Chrome](https://www.google.com/chrome/)).
## Offer Grant Confirmation email isn't sending
* Double-check that the Zap has the "Send Offer Grant Email?" setting for Kajabi set to "Yes".
* Make sure your [**Marketing Contact Address is set**](https://help.kajabi.com/articles/marketing/email-campaigns/how-to-customize-your-marketing-settings) under Marketing Settings.
* The "Send Offer Grant Email?" setting is located in your Zap configuration in Zapier, in the Action portion of the Zap:
**Note:**
New customers who are granted an Offer via a Zap will also receive the Member Welcome Email. [Learn more about automated emails sent by your site](../../account-settings/notifications/edit-automated-email-notifications#overview-of-each-email-template).
## Get more help
Still having trouble? Take a screenshot or screen recording of the issue you are experiencing and [Contact Support](../../resources/support/how-to-contact-kajabi-support). Our support team is happy to help.
# Use Zapier with Kajabi
Source: https://help.kajabi.com/articles/api-integrations/zapier/use-zapier-with-kajabi
Connect Kajabi to various third-party apps using Zapier with outbound and inbound webhooks.
Use the [Kajabi Zapier integration](https://zapier.com/zapbook/kajabi/) to integrate your favorite third-party applications with Kajabi. Connecting Kajabi to third-party apps with **Zapier** can be accomplished by sending outbound webhooks and inbound webhooks.
**Note:** Webhooks on Kajabi are exclusively accessible for Heroes on the Growth and Pro subscription plans. Learn how to upgrade your Kajabi subscription plan [here](../../account-settings/billing/manage-your-subscription).
## Connect Kajabi to Zapier apps (outbound)
Send data to a third-party application when an action occurs on your Kajabi site by creating an Outbound integration with Zapier.
For example, send contact information when a Form is submitted on Kajabi to a third-party application.
### Prep for outbound integration
Before integration, be sure to have at least one purchase, form submission, or completed assessment on your site depending on the connection you wish to create with Kajabi and Zapier.
This will enable Zapier to pull sample data from your site to test the connection.
To make a test purchase, submit a form, or complete an assessment:
1. Copy the link to the page containing you**r Offer**, **Form**, or **Assessment**. [Learn more](../../website/pages/how-to-copy-your-page-link).
2. Then, open a different browser or an incognito window and paste the link.
3. Complete the action (e.g., purchase the **Offer**, submit the **Form**, complete the **Assessment**) as your visitors would.
Now that your site has been prepped, refer to the guides below to begin connecting Zapier with Kajabi.
### Connect Kajabi to Zapier apps
Kajabi can send **Outbound Webhooks** every time someone submits an Opt-in Form, purchases an Offer from your Site, or completes an Assessment.
[Zapier](http://www.zapier.com/) listens for these webhooks, and in turn creates or updates a contact in a third-party system:
1. Create a **Zap** and set **Kajabi** as the trigger app:
2. Choose a **Trigger**.
3. Select **New Purchase** to get user data for new purchases from your Site.
4. Select **Cart** Purchase to receive user data when a customer completes a purchase through Kajabi Cart on your site.
5. Select **New Form Submission** to get user data when a user submits through an Opt-in Form on your Site.
6. Select **Assessment Completed** to trigger an action once an Assessment is completed in Kajabi:
### Connect Zapier to the Kajabi account
After selecting your trigger, you'll need to connect to your **Kajabi** account.
If you're connecting for the first time, you'll be asked for your account **API Key** and **Secret** located in your [**Account Settings**](https://app.newkajabi.com/admin/settings/account).
1. From the Kajabi Dashboard, click **Settings**.
2. Under the **Account Settings** section, select **Account Details.**
3. Copy the **API Key** and **API Secret**.
4. Then, paste each into the appropriate Zapier field and click **Yes, continue** at the bottom.
5. Select a **Site** and **Offer** to link to your Zap and proceed with testing to make sure things are working.
You can now connect another Zapier App to use the data sent from Kajabi!
**Tip:** If you are unable to pull sample data, go ahead and skip the test. You can preview the sample data later in the flow.
## Connect Zapier apps to Kajabi (inbound)
Kajabi supports Inbound Webhooks to trigger an action on Kajabi after receiving data from a third-party application.
Inbound integrations include actions like creating Contacts or granting access to Offers after an external event occurs (e.g., successful payment in a third-party payment provider).
[Zapier](http://www.zapier.com/) listens for these webhooks from a connected data source and sends the data to your Kajabi account.
### Select the third-party application as the trigger app
In this step, you will:
* **Select your trigger app:** the Zap will be triggered by an event that occurs in this app
* **Select your trigger event:** this will be the event that occurs in the selected app that triggers the Zap
* **Select your app account:** select or connect the specific app account to use in the Zap trigger
* **Customize your trigger:** customize your trigger options to fit your needs
* **Test your trigger:** test your trigger to see if it pulls in the right data
When your trigger is set up successfully, a green checkmark icon will appear in the top left of the step: Learn more about [setting up your Zap trigger](https://zapier.com/help/create/basics/set-up-your-zap-trigger).
### Select Kajabi as the action app
1. Create a Zap according to your third-party system provider's guide and set it as the trigger app.
2. Select **Kajabi** as your Action app:
3. Select an **Action**:
4. Select **Grant Access to an Offer** to grant a new or existing customer access to an Offer and its Products. Your customer will only receive the Granted Offer Email if they are subscribed to receive Granted Offer Emails.
Your Offer Grant Email is categorized as a bulk email. If your customers have unsubscribed from similar Offer Grant Emails from you in the past, they may not receive the Offer Grant Email.
If you need assistance sending your Offer Grant Email to your customers, reach out to [Support](../../sales/offers/what-is-the-difference-between-an-upsell-and-order-bump).
1. Select **Revoke Access to an Offer** to revoke access to an Offer for the specified customer.
2. Select **Create Form Submission** to have your information automatically populate your Kajabi Opt-in Form.
**Note:** It isn't possible to deactivate/reactivate an Offer through Zapier.
### Connect Zapier to the Kajabi account
Once you've selected your action, you'll need to connect to your Kajabi account.
If you're connecting for the first time, you'll be asked for your account **API Key** and **API Secret** located in your [**Account Settings**](https://app.newkajabi.com/admin/settings/account).
1. From your **Account Settings**, select **Account Details.**
2. Copy the **API Key** and **API Secret**.
3. Then, paste each into the appropriate Zapier field and click **Yes, continue** at the bottom.
4. Select your **Site** and **Offer** and match the required parameters for **Customer Name, Email and External User ID** with merge fields from your data source.
**Note:** Kajabi has several different parameters that are sent out when using Zapier integrations: `name` `email` `offer` `external_user_id` `ip_address`
### Turn on the Zap
1. Proceed with testing to make sure things are working.
2. Then, **turn on** your Zap:
## Webhook / Zapier 400 error
You may run into a **400 Error** when testing your Zaps. It could be that your data source (cart or another system) is sending the same data. Once a user has been granted an Offer, it cannot be granted again. Instead, generate new data from the data source to pass the info to Zapier and then to Kajabi.
## Troubleshoot Zapier
If you are experiencing errors when using Zapier with Kajabi, refer to the [Troubleshoot Zapier](./troubleshooting-zapier) guide.
# Foundations: Start here
Source: https://help.kajabi.com/articles/get-started/foundations/foundations-start-here
Plan, launch, and scale your business on Kajabi with this step-by-step guide.
Your path to building a successful online business starts here. This guide walks you through the essential steps to get your Kajabi site up and running — from validating your idea to testing the purchase experience.
Follow these steps, in order, to plan, launch, and scale your business:
1. **[Validate your idea](/articles/get-started/foundations/step-1-validate-your-idea)** — Poll your family, friends, and existing network to validate product market fit
2. **[Customize brand settings](/articles/get-started/foundations/step-2-customize-your-global-branding-settings)** — Update site settings with your brand colors to establish and align your brand's visual identity across the platform
3. **[Add instructor details](/articles/get-started/foundations/step-3-add-your-instructor-details)** — Add an instructor name, a brief biography, and upload a photo to personalize your site
4. **[Build a waitlist](/articles/get-started/foundations/step-4-build-a-waitlist)** — Import contacts or build a waitlist funnel to begin promoting your product
5. **[Connect payment integrations](/articles/get-started/foundations/step-5-connect-payment-integrations)** — Connect payments to enable transactions from the start
6. **[Create a product](/articles/get-started/foundations/step-6-create-a-product)** — Create your first product to sell to your audience
7. **[Price a product](/articles/get-started/foundations/step-7-price-your-product)** — Create an Offer to monetize your product
8. **[Design a website](/articles/get-started/foundations/step-8-design-your-website)** — Customize your website and refine the customer experience
9. **[Test the journey](/articles/get-started/foundations/step-9-test-the-journey)** — Experience firsthand what your customers will see by testing the purchase flow
# Step 1: Validate an idea
Source: https://help.kajabi.com/articles/get-started/foundations/step-1-validate-your-idea
Confirm product market fit before building by polling your existing network.
**Validating your idea** before you start building saves time and ensures you create something your audience actually wants. A quick survey on social media can reveal exactly what your network is willing to pay for.
Sometimes what you *assume* your audience might be interested in purchasing might not be what they *actually* will purchase.
Let's use Shelly as an example. Shelly is a personal trainer looking to start a few online courses for her clients. She regularly teaches her clients about nutrition and weight-bearing exercises. Shelly thinks her clients would like a mini-course about at-home weight-bearing exercises. However, when she talks to her clients, most express interest in meal prepping and fast, healthy recipes.
This should be the topic for Shelly's first course. Shelly's glad she asked her clients so she could create a course that would be the most helpful and relevant for them.
## Validate an idea with a social media survey
Validating your idea is easier than you think. Post a survey on one social media platform and get feedback in real-time.
1. **Select a social media platform** — Choose the social media platform you use the most often and feel most comfortable with. Don't worry about using a business social media account yet. It will take some time to build up a following of people you don't know. The best way to validate your idea and get started is to leverage the existing network on your personal platforms.
2. **Choose one social platform where you have the biggest personal audience**, such as:
* Facebook
* Instagram
* LinkedIn
* X (formerly Twitter)
3. **Post a survey** — Many social platforms allow you to include a survey (sometimes called a poll) directly on your post. Using your personal account, post a survey to ask your current audience what mini-course topic they'd be most likely to purchase from you.
## Survey post template
Hi everyone! As some of you know I'm starting my business on \[business topic or theme]. I'm currently working on creating my first mini-course and need your help!
Which one of the following mini-course topics would you be most likely to purchase?
* Topic 1
* Topic 2
* Topic 3
* Topic 4
Leave a comment if you have another topic you'd be interested in.
## FAQs
### What if I don't use any social media?
That's okay. Create a one-question survey using a free service like Google Forms and email it to your contacts with a note like the one above.
### How do I choose the right topics for a mini-course survey?
A mini-course is a shallow dive into a specific topic. Typically, a mini-course is one module containing no more than 5 lessons. A lesson usually consists of a video anywhere from 5 to 15 minutes long. For a mini-course, don't include PDF attachments or quizzes unless you feel they're absolutely necessary.
Consider the customer problem you will solve with your mini-course. If the solution is five steps or less, that's a great topic for a mini-course.
### What are some examples of topics that are specific enough for a mini-course?
**Good example:** Shelly and her meal-prepping or at-home weight-bearing exercise mini-course topics.
**Bad example:** Using Shelly again, a bad topic (because they're too broad) would be "improving your food habits" or "how to get fit".
# Step 2: Customize global Branding Settings
Source: https://help.kajabi.com/articles/get-started/foundations/step-2-customize-your-global-branding-settings
Adjust fonts, colors, and logos to create a cohesive, professional brand experience across your Kajabi site.
**Branding Settings** let you control fonts, colors, logos, and social links from one place so every page on your Kajabi site reflects a consistent identity. Changes apply globally — across Website pages, Landing pages, Courses, Newsletters, Coaching programs, and Email templates — so you only need to set them once.
## Customize Branding Settings
1. Sign in to your Kajabi account and make sure you're on the main dashboard.
2. From the dashboard menu, select **Settings**.
3. Click **Branding** to access all available customization options.
4. Within the **Branding** section, you can update:
* **Favicon** — Upload a file or select a recent file
* **Logo** — Upload a file or select a recent file
* **Typography** — Choose a heading font and a paragraph font
* **Colors** — Brand, Accent, Global Color Palette
* **Social Media Links** — Twitter, Instagram, LinkedIn, etc.
5. Use the real-time preview to see how your updates will look before saving.
6. Click **Save** to apply your selections across your platform.
**Note:** Brand changes will update items where the default global brand settings are used. Any themes or blocks that you have already customized will not change. Instead, go into those areas and sync the branding with these global settings. To hide or remove social links from one specific page instead, edit the **Connect/Social links** block on that page directly. See [Edit blocks on a page](/articles/website/pages/editing-blocks-on-your-page).
## Preview changes in real time
Kajabi's real-time preview allows you to see how font and color updates will appear before you save them. This makes it easy to experiment and fine-tune your branding without committing to changes right away:
## Sync style elements with Branding Settings
While working within your individual pages, you may notice an unlink icon on certain style elements. If you decide to change an individual element linked to your **Branding Settings**, clicking this icon resets the Style Guide element to the default Branding Settings:
# Step 3: Add instructor details
Source: https://help.kajabi.com/articles/get-started/foundations/step-3-add-your-instructor-details
Add an instructor name, biography, and photo to personalize Course and Lesson pages.
**Instructor details** — your name, photo, and professional background — appear on Course and Lesson pages and help build credibility with your customers. Add this information once in **Site Details** settings, and it links automatically to the Instructor Block on Course and Lesson page templates.
To add instructor information to a Course template or site page without a built-in Instructor Block, use sections and blocks in the Page Builder.
## Update instructor info in Site Details settings
When you create a Course using the Premier, Creative, or Prosper template and add an Instructor Block to your Product Sidebar, your information is pulled in automatically:
**Note:**
An Instructor image and name are required when linking the Instructor Block to your site settings. If those values are not completed, the Instructor Block will not display in your preview or for your course members.
1. Open the **Settings** tab from your Dashboard.
2. Click **Site Details**.
3. Navigate to the **Instructor** section.
4. Upload an **image** of the instructor.
5. Enter the **instructor's name**.
6. Include the **instructor's title**.
7. Add the **instructor's bio**.
8. Click **Save** to keep and apply your changes.
**Note:**
Adding instructor info in **Site Details** will not retroactively update your info in any pre-existing Courses. If you have already created a Course using a template with a built-in Instructor Block, update your information directly on the Course and Lesson templates.
# Step 4: Build a waitlist
Source: https://help.kajabi.com/articles/get-started/foundations/step-4-build-a-waitlist
Capture interested customers before an Offer launches by creating a waitlist form and landing page.
A **waitlist** lets people who are interested in your Products opt in and purchase your Offer when it becomes available.
## Create a waitlist form
Create a Form on Kajabi to collect contact information from prospective customers who want to join your Offer waitlist.
1. Open the **Marketing** tab from the Dashboard.
2. Select **Forms**.
3. Navigate to the top right corner of the page and click **+ New Form**.
4. Enter the **Title** for your Form.
5. Click **Save**.
6. Customize your Form as desired. [Learn more about creating and building a Form](/articles/marketing/forms/create-and-build-your-form).
## Build a waitlist landing page
After creating your Form, build and customize the Landing Page that will contain your Form and communicate to your page visitors that the Offer has already reached capacity.
[Learn to add a Form to a page](/articles/website/pages/how-to-add-a-form-to-your-page).
# Step 5: Connect Kajabi Payments
Source: https://help.kajabi.com/articles/get-started/foundations/step-5-connect-payment-integrations
Connect Kajabi Payments or PayPal to start collecting payments for your Offers.
Connecting Kajabi Payments and/or PayPal ensures you can collect payment for the value you offer your audience, from the start.
## Kajabi Payments
Kajabi Payments is an all-in-one solution that gives you everything you need to accept customer payments, oversee purchases, manage refunds, initiate payouts, and more — all from your Kajabi dashboard.
Kajabi Payments is purpose-built to support an all-in-one experience. It includes exclusive features like additional payment methods such as Apple Pay, Google Pay, Afterpay, and more:
With Kajabi Payments, your Checkout page enables customers to purchase your Offers effortlessly. They can either enter their credit card information directly on the page or choose from the additional payment methods you've selected. The payments are then processed and collected into your connected bank account, incurring a small fee that's equivalent to major payment providers. [Learn more about processing fees](/articles/sales/kajabi-payments/kajabi-payments-processing-fees).
Kajabi Payments is currently available to businesses registered in the United States, Canada, Australia, the United Arab Emirates, the United Kingdom, and select European countries.
[Learn more about Kajabi Payments](/articles/sales/kajabi-payments/kajabi-payments-overview).
## PayPal
PayPal is a worldwide online payment system that allows you to pay, send money, and accept payments with a [small fee](https://www.paypal.com/us/webapps/mpp/paypal-fees).
PayPal uses data encryption and anti-fraud technology to help keep your information secure, reducing the risk of online fraud.
PayPal is a well-trusted platform that services 200+ countries. Find out if [PayPal is available in your country](https://www.paypal.com/us/webapps/mpp/country-worldwide).
With PayPal, your customers can purchase your Offers with their personal PayPal accounts or by creating a guest PayPal account.
If you choose to connect PayPal to your Kajabi account, your customers can purchase your Offers using PayPal:
[Learn how to connect PayPal to your Kajabi account](/articles/api-integrations/payment-integrations/connect-paypal-to-kajabi) and begin pricing your Offers with PayPal.
**Tip:** Connect Kajabi Payments in addition to PayPal to give your customers the option to select their preferred payment method. [Learn more about enabling payment providers for Offers](/articles/sales/offers/how-to-turn-on-a-payment-provider-for-your-offers).
If Kajabi Payments or PayPal do not work for you, [learn how to connect a third-party payment gateway](/articles/api-integrations/payment-integrations/connect-a-third-party-payment-gateway-to-kajabi).
# Step 6: Create a product
Source: https://help.kajabi.com/articles/get-started/foundations/step-6-create-a-product
Build a Course, Community, Newsletter, Podcast, or Coaching product on Kajabi.
With your idea validated and a waitlist building anticipation, it's time to create your first **Product**. Kajabi supports several Product types, each designed for a different way to deliver value to your audience.
## Course
Offering online Courses allows you to share your expertise with a global audience, delivering valuable content digitally while scaling your business. With an online Course, you can monetize your knowledge and position yourself as an authority in your field.
1. Open the **Products** tab from your Dashboard.
2. Click **Get Started** (or, if you've already created a Product, click **+ New Product**).
3. Select the **Course** Product.
4. Click **Get Started**.
5. Complete the on-screen instructions to create your Course details.
## Community
Building a Community fosters deeper relationships with your audience, encouraging long-term engagement and loyalty, which can lead to higher customer retention and organic growth. Create a space for your community to connect via discussion circles, challenges, meetups, direct messaging, and live events.
1. Open the **Products** tab from your Dashboard.
2. Open **Community**.
3. Click **New Community**.
4. Add the name/title, description, and image for your Community.
5. Add the name of your first Community Access Group.
6. Select **Free** or **Paid** to create a free or paid Community.
7. Click **Save and Finish**.
## Newsletter
A Newsletter serves as a direct communication channel, allowing you to consistently nurture your audience, promote your offerings, and keep them updated with valuable content that drives ongoing interest. Kajabi gives you the option of offering a free or paid Newsletter, enabling you to monetize your content.
1. Open the **Products** tab from your Dashboard.
2. Select **All products** or **Newsletters**.
3. Click **+ New Product** or **New Newsletter**.
4. After clicking **+ New Product**, select the **Newsletter** Product.
5. Click **Get Started**.
6. Complete the on-screen instructions to create your Newsletter.
## Podcast
Launching a Podcast gives you a unique platform to reach a wider audience, share your message in a more personal way, and expand your influence by featuring guests and addressing industry-relevant topics.
1. Open the **Products** tab from your Dashboard.
2. Select **Podcast**.
3. Click **Get Started**.
4. Make sure Podcast is selected as the Product type, and click **Get Started** again.
## Coaching
A Coaching Program allows you to reach your customers in an engaging, one-on-one or group, interactive setting.
Coaching Programs can:
* Help your customers absorb your content
* Support a sense of connection to your brand and business
* Reach your customers at a personal level
With the Coaching Product on Kajabi, you can build, manage, and develop your coaching program. [Learn how to create a Coaching product on Kajabi](/articles/products/coaching/how-to-create-a-coaching-product).
# Step 7: Price a product
Source: https://help.kajabi.com/articles/get-started/foundations/step-7-price-your-product
Create an Offer and set pricing to monetize a product on Kajabi.
Your Product is ready to go and it's time to get paid. Create an **Offer** to set pricing and start monetizing your knowledge.
## Tips for pricing an Offer
Pricing your services and Products is crucial to the success of your business because it impacts profitability, defines perceived value, and influences marketing positioning. Get it right — or at least get as close as possible and iterate as needed.
* **Understand your value proposition** — Before setting a price, clearly define the unique value your Product or service offers. Consider what problems it solves or what benefits it provides to your target audience. The more unique and valuable your offering, the higher you can price it. Make sure to communicate this value in your marketing.
* **Research the market** — Conduct thorough market research to understand how similar Products are priced. This includes analyzing competitors' pricing strategies and understanding the expectations of your target customers. Pricing too high may deter potential buyers, while pricing too low might make your Product seem less valuable.
* **Consider a tiered pricing model** — Implementing a [tiered pricing model](/articles/sales/offers/create-multiple-pricing-options-for-legacy-checkout) can cater to different customer segments. Offer basic, standard, and premium versions of your Product with varying features or levels of access. This strategy maximizes revenue and provides options for customers with different budgets and needs.
## Create an Offer
1. From your Kajabi dashboard, select **Sales**.
2. Navigate to **Pricing**.
3. Click **+ New Offer** to enter the Offer Creation Flow.
4. Enter an **Offer Title** and choose the **Product(s)** to sell with this Offer.
5. Set a price for your Offer.
6. Select **Save and Finish** to complete creating your Offer.
## Customize the Offer Checkout Page
Design the customer experience by customizing the Offer Checkout Page after configuring the details of your Offer:
1. Open the **Sales** tab from your Dashboard.
2. Click **Pricing**.
3. Select the **Offer** you wish to edit.
4. In the top menu, click **Edit Checkout**.
[Learn more about editing the Offer Checkout Page](/articles/sales/checkout/customize-your-checkout-page).
# Step 8: Design a website
Source: https://help.kajabi.com/articles/get-started/foundations/step-8-design-your-website
Customize a website and refine the customer experience using Kajabi's Website Builder.
Customize your website and refine the experience your customers go through before and after they purchase. Your website can be designed with Kajabi's highly customizable page templates and streamlined templates built to help you get started fast. The **Website Builder** gives you full control over layout, branding, and content across every page.
## Get started with the Website Builder
Select a template that best fits your design vision. Kajabi provides you with an ever-growing list of basic streamlined pages and premium-designed pages to help you get started:
After selecting the template for your website, customize your Global Page Settings before diving into the individual design of your standard website pages.
[Learn more about global settings](/articles/website/pages/how-to-use-your-style-settings-with-the-website-builder).
This will help set up the foundation for your brand on all of your standard website pages before you begin designing and adding your content.
[Learn to install and activate the Website Builder](/articles/website/pages/how-to-make-the-switch-to-the-new-website-builder).
## Build website pages
Before you begin building your website pages with the Website Builder, understand the structure of your page.
Pages built with the Website Builder and Kajabi Pages are made up of:
* **Blocks**
* **Sections**
Each Section of your page is made up of specific Blocks.
For example, the Offer Section includes an Offer Block and a Text Block:
Kajabi provides you with preset Sections containing specific Blocks to streamline the process of designing your page.
Each section is customizable. Regardless of the Section you choose, you can always remove, add, and edit the Blocks within your chosen Section to create a page that best fits your brand and business.
## Customize a homepage with the Website Builder
Design a homepage custom-tailored to represent your brand and online presence. When visitors enter your URL, this is the page that will appear unless you have changed your settings in **Site Details**.
With the Website Builder, create a homepage that is uniquely yours.
### Access the home editor
1. Open the **Website** tab.
2. Click the **Pages** tab.
3. Locate the **Home** page in your list of Website pages.
4. Select the **Home** page to begin customizing.
# Step 9: Test the journey
Source: https://help.kajabi.com/articles/get-started/foundations/step-9-test-the-journey
Experience what your customers will see by making a test purchase of an Offer.
With a strong foundation in place, it's time to experience firsthand what your customers will see. Test the **customer journey** as if you were a customer by utilizing [Test Checkout](https://help.kajabi.com/articles/sales/offers/creating-a-test-purchase-in-kajabi#about-test-checkout) mode.
[**Test Checkout**](https://help.kajabi.com/articles/sales/offers/creating-a-test-purchase-in-kajabi#start-a-test) lets you move through your live checkout exactly as a customer would, without processing a real transaction. Nothing is charged, no member or contact is created, and no emails, automations, or webhooks fire. When you reach the end, Kajabi shows you a summary of everything that would have happened, with shortcuts to the relevant settings so you can make adjustments as needed.
[Test Checkout](https://help.kajabi.com/articles/sales/offers/creating-a-test-purchase-in-kajabi#start-a-test) gives you a safe way to see exactly what a real purchase would set in motion. When you finish the flow, the summary reports every action the purchase would have triggered:
* The order bumps and upsells that were accepted or declined
* The offers the customer would get access to, and when access starts
* The confirmation, gift, and receipt emails that would be sent
* The automations that would run
* The outbound webhooks that would fire, and where they’d send
You’ll see your real checkout page, using the template you’re testing. Everything on the page behaves normally, so you can:
* Fill in contact information and any custom fields
* Apply a coupon code
* Select order bumps
* Change quantity
* Purchase as a gift, if the offer is giftable
# Increase engagement and sales with email strategies
Source: https://help.kajabi.com/articles/resources/business-guides/3-effective-email-strategies-to-increase-engagement-and-boost-sales-in-kajabi
Build effective email campaigns that nurture leads, inspire action, and convert subscribers into customers.
## Overview
Building an effective email campaign is essential for thriving in online business. Email campaigns nurture, inspire, and ultimately convert leads into customers. These three strategies help you create campaigns that drive engagement and sales.
## Method 1: Create a guided journey
A guided journey takes leads from initial interaction—like a landing page opt-in or social media post—through a structured path that builds anticipation for future emails and next steps.
With this method, leads sign up for free training or a free challenge, and your email sequence delivers content that follows a specific path. This creates structure for engaging your entire campaign.
**Tip:** While delivering your guided journey campaign, add small teasers to your offers and previews of your programs. This approach converts leads into sales naturally.
A great example is the [Product Launch Funnel](../../marketing/funnels/funnel-templates), which takes potential customers from opt-in through a value-add journey leading to your offering.
## Method 2: Welcome sequence
The welcome sequence works when someone opts in as a subscriber, purchases an introductory offer, or joins your list in any way. Its purpose is to build a relationship with prospects and establish trust while gently exposing them to your offerings.
### Trigger and craft a welcome sequence
Trigger your welcome sequence by setting up an automation in [Forms](../../marketing/forms/create-and-build-your-form) or [Offers](../../sales/offers/offers-overview). A well-crafted welcome sequence nurtures relationships, builds trust, and drives action.
Here's a strategic breakdown:
1. **Email 1: Welcome + Reintroduce the Offer** — Welcome your subscriber or customer. Reintroduce the offer they opted into and highlight your value proposition—what makes your solution unique and why it matters.
2. **Email 2: Share Your Brand Mission and Story** (Sent 24 hours later) — Build a personal connection by sharing your mission and story. Show your "why" and let your audience know what drives you.
3. **Email 3: Showcase Social Proof** — Reinforce trust by sharing customer success stories, testimonials, or other proof. Demonstrate real-world results and the impact of your product.
4. **Email 4: Address Their Pain Points** — Focus on challenges your audience faces. Provide a clear product breakdown and explain how your offer solves their specific problems.
5. **Email 5: Add Value with Data and Insights** — Build credibility by sharing data, research, or educational content. Link to a relevant blog post or resource that supports your solution.
## Method 3: Newsletter
Make your newsletter memorable by giving it a unique title. Instead of "XYZ Newsletter," try something engaging like **"Weekly Wisdom"** or **"Tips and Tricks for \[Your Niche]."** A well-named newsletter sets the tone and communicates value from the inbox.
### Launch a successful newsletter subscription
Ready to add a newsletter to your business? Learn the key steps to launching a successful newsletter subscription.
[Read more](../../products/newsletters/how-to-launch-a-successful-newsletter-subscription)
### Best practices for an effective newsletter
* **Re-use emails and make seasonal content** — Recycle content from past campaigns or blog posts, especially evergreen pieces. Tailor content to fit current seasons or trends. A fitness brand could repurpose workout tips into a "New Year, New You" theme for January.
* **Use AI to produce email content** — Leverage AI tools to brainstorm ideas, craft subject lines, or write first drafts. AI helps maintain consistency and saves time. Always add your personal touch to keep content authentic.
* **Keep it useful, educational, entertaining, and relevant** — Your audience opens your newsletter because they expect value. Include how-to guides, industry news, or stories related to your niche. Make every piece actionable, informative, or enjoyable.
* **Use simple formatting with a consistent look and feel** — Visual consistency reinforces brand recognition. Choose a clean layout with white space for easy reading. Stick to consistent colors, fonts, and logo placement.
## Build meaningful connections
Effective email campaigns create meaningful connections, deliver value, and guide your audience toward action. Whether you're nurturing leads through a value-packed journey, building trust with a warm welcome, or maintaining relationships through newsletters, your efforts translate into lasting customer relationships and increased conversions.
Stay relevant, authentic, and customer-focused. Take these strategies, adapt them to your unique brand and audience, and start building email campaigns that truly resonate.
# Run a successful challenge to grow a business
Source: https://help.kajabi.com/articles/resources/business-guides/3-tips-for-running-a-successful-challenge-to-grow-your-business
Engage your audience and create momentum for your business with a well-planned challenge.
Challenges are a powerful way to engage your audience, showcase your expertise, and create momentum for your business. Whether you're launching a product, building your email list, or growing your community, a well-planned challenge can make a significant impact.
## Set clear goals and define your audience
Every great challenge starts with a clear purpose. Are you looking to attract leads, convert followers into customers, or increase community engagement? Once you've identified your goal, define your ideal participant. Understanding their needs, interests, and challenges helps you create content that resonates.
**Tip:** Use [Kajabi's landing page builder](../../website/pages/create-a-lead-generation-landing-page) to create a compelling signup page. Highlight what participants will gain and include testimonials or social proof if available.
## Plan engaging and achievable content
Challenges are most effective when they balance inspiration with actionable steps. Break your challenge into daily or weekly tasks that feel doable and rewarding. The content should align with your business niche while addressing your audience's pain points.
**Tip:** Pre-schedule your challenge content in Kajabi. Use [automated emails](../../marketing/email-campaigns/create-an-email-sequence), videos, or a dedicated [course product](../../products/products-overview/kajabi-products-overview) to deliver materials. This keeps participants on track and ensures consistent communication.
## See a challenge built on Kajabi
This sample challenge was built using a [landing page](https://hc1.mykajabi.com/free-challenge-set-your-2025-goals-in-5-days), [custom thank you page](https://hc1.mykajabi.com/2025-challenge-thank-you), and follow-up email sequence.
**Note:** This challenge is for inspiration only. While you can sign up via the opt-in page, the email sequence is only a template.
[View the challenge](https://hc1.mykajabi.com/free-challenge-set-your-2025-goals-in-5-days)
## Offer a next step to sustain engagement
Your challenge shouldn't end when the event is over. Keep momentum going by offering a next step that aligns with your audience's journey. This could be a paid membership for ongoing support, a discounted coaching session, or an upsell to one of your products.
**Tip:** Kajabi makes it easy to offer [upsells](/articles/sales/offers/upsells-overview) or post-challenge programs. Use upsells to streamline the purchase process and continue building customer relationships.
## Choose a compelling name for a challenge
The name of your challenge is the first thing potential participants see, so make it catchy and goal-oriented. Aim for a title that highlights the outcome they'll achieve or the journey they'll embark on.
For example, a 5-day challenge could be called "5 Days to Kickstart Your Fitness Journey," while a 7-day challenge might be "7 Days to Transform Your Morning Routine." A great name sets the tone and generates excitement.
### 5-day challenge ideas
* **5 Days to a Stronger \[Skill/Outcome]** (e.g., "5 Days to a Stronger Online Presence")
* **5-Day \[Theme] Reset** (e.g., "5-Day Mindset Reset")
* **Master \[Skill] in Just 5 Days** (e.g., "Master Crochet Basics in Just 5 Days")
* **The 5-Day Quickstart to \[Goal]** (e.g., "The 5-Day Quickstart to Healthy Eating")
* **5 Days to Kickstart Your \[Outcome]** (e.g., "5 Days to Kickstart Your Writing Habit")
### 7-day challenge ideas
* **7 Days to \[Outcome] Success** (e.g., "7 Days to Social Media Success")
* **Your 7-Day \[Skill] Journey** (e.g., "Your 7-Day Productivity Journey")
* **7 Days to Transform Your \[Theme]** (e.g., "7 Days to Transform Your Morning Routine")
* **The 7-Day \[Outcome] Sprint** (e.g., "The 7-Day Fitness Sprint")
* **7 Days to Build Your \[Skill/Outcome]** (e.g., "7 Days to Build Your Brand Voice")
By setting clear goals, delivering engaging content, and offering a path for continued growth, a challenge can become a cornerstone of your business strategy.
# Brainstorm a product
Source: https://help.kajabi.com/articles/resources/business-guides/brainstorm-your-product
Position your expertise into a product your audience will find valuable by defining benefits, scope, and structure.
## Overview
This is where you start serving your niche and deciding what to offer. A "product" in this context means the item you're offering customers in exchange for money.
These steps help you position your expertise into a product your audience will find valuable.
## Step 1: Define the product benefit
The goal of a product is simple—answer one question: "What is the fastest and most likely way to provide the desired outcome for your customer, getting them from their current state to their desired state?"
Here's an example:
**How to run a marathon** — What's the fastest and most effective method to improve someone's ability to prepare for, compete in, and finish a marathon?
## Step 2: Determine product scope
That marathon idea can be built into multiple, more specific products:
**How to run your first marathon**
* Helps someone who's never run a marathon
* Likely a larger course with multiple parts
**How to improve your marathon time by 30 minutes, guaranteed**
* Targets current runners or marathon runners wanting to improve
* Likely a larger course with multiple parts
**Ten stretching exercises every marathon runner needs to prevent injury**
* Helps new or existing runners
* Could be a free lead magnet or low-price download
**30 must-eat meals for marathon runners to have boundless energy**
* Helps new or existing runners
* Could be a small-price PDF cookbook, medium-price product with cooking technique videos, or premium-price product with videos plus a custom nutrition strategy session
## Step 3: Structure the product
Your product structure is only limited by creativity, but here are four common approaches:
1. **Digital Download** — A single tactic or outcome
2. **Online Course** — Bigger outcome with multiple parts to achieve it
3. **Coaching/Consulting** — Combination of course content with personal interaction and customization
4. **Subscription/Membership** — Courses or downloads offered on a regular basis (e.g., monthly)
When starting out, choose one structure you like most and begin building where you feel most comfortable.
Some people prefer higher price points and coaching/consulting products because they enjoy the interaction and it serves their niche best. How do you know if it's best for your niche? Ask yourself: Is it the fastest and most likely path to deliver them from their current state to their desired state?
In Kajabi, you can create many product types for different niches. But the key to getting going is getting started—and that takes focus.
## Brainstorming questions
Use these questions to spark ideas about what you can offer your market:
* What have you bought in your niche where you thought, "I can do this better"?
* When have you felt frustrated or lost because you couldn't find the answers you needed to achieve an outcome?
* What are the common questions you get about your area of knowledge, experience, or passion? (e.g., what exercises should I do to lose weight)
* What questions do you wish people were asking so they'd get better results? (e.g., how can I change my diet to lose weight whether I exercise or not?)
* What transformation are most people in your niche seeking? For example:
* Weight loss
* More energy
* Faster Pinewood Derby car times
* Better tennis forehand
* Living without lower back pain
* Bigger arms or six-pack abs
* Eating vegan and knowing how to cook vegan
* Feeling confident giving a toast in front of strangers
## Final checklist and next steps
Now that you've identified:
* The current state of your market
* The desired state you're going to get them to
* The breadth of product needed to help them achieve it
* The format you feel best delivering it in
You're ready to start building.
# Choose a niche
Source: https://help.kajabi.com/articles/resources/business-guides/choosing-your-niche
Define which market you want to serve using your existing knowledge and passions.
Your niche is the specific group of people you're going to serve. It's the foundation for everything else in your business. Identifying and selecting this group is your first step.
Don't overthink this as a permanent decision. You may serve many kinds of markets over the life of your business—today's goal is to choose your first niche.
## Start with an exercise
For each question below, make a list of potential niches. Write down as many as you can—the descriptions and ideas are meant to spark your creativity.
## Identify knowledge and life experience
### Career
Your career likely represents a significant portion of your life, and you're probably an expert at what you do. You've found ways to achieve results faster and help others do things better with less stress. There's opportunity to re-engineer your work experience into knowledge people would gladly purchase.
### Education
Look back at your time in school. Were there subjects that excited you but fell to the wayside as you jumped into your career? Were there areas of education that shaped your career path and could be reawakened to serve a niche?
### Experience
Which experiences stand out as potential niches you could be passionate about? Do friends and family ask you for insights and wisdom in certain areas? Did experiences like traveling, brewing craft beers, fishing, or hiking awaken intense interest?
An often overlooked area is when things went wrong. Did you face tremendous challenges or hardships that gave you insights you wish you'd had earlier? Can you turn those low points into resources for others experiencing the same challenges?
## Identify passions and interests
### Hobbies
Hobbies are a treasure trove of niche ideas—and you've already got the passion built in. Whether it's pinewood derby racing techniques, cookie recipes, fitness, or sports, countless areas can build a great niche. You likely already know where fellow hobbyists hang out and what they're willing to buy.
### Side-jobs or projects
Think about projects you pursue with a profit motive—developing software in the evening, woodworking and selling creations on Etsy, or similar endeavors. These could become the foundation for your niche.
## Choose passion over perceived profit
Whether you choose your niche based on life experience or an area of interest, successful people share one thing in common: they're excited about what they're building.
It may seem smart to choose a niche you see as lucrative, even without genuine interest—like weight loss or making money online because others have found success there. But your excitement over your niche is the ultimate advantage. It's what keeps you going through the tough days of building an online business.
## Get help choosing a niche
If you're struggling to find a niche or have too many ideas to choose from, connect with other Heroes in the [Kajabi Hero Community](https://university.mykajabi.com). Thousands of active Kajabi users are there to support each other in selecting niches and building businesses.
Once you pick your niche, the fun is just beginning.
# Copy snippets to captivate an audience
Source: https://help.kajabi.com/articles/resources/business-guides/copy-snippets-to-captivate-your-audience-in-seconds
Marketing copy templates you can customize for your website and sales pages to connect with your audience and drive conversions.
## Overview
Effective copy connects with your audience by showing them you understand their needs. These snippets provide a starting point for key sections of your website and sales pages. Copy and customize them to fit your style and voice.
Good copy isn't just about selling—it's about making your audience feel understood and showing them what's possible.
## Hero section: Homepage
Your homepage hero section creates the first impression. Visitors should understand what you do and why it matters within 5 seconds.
* **Headline:** I help \[Your Avatar] achieve \[Outcome/Benefit] with \[Your Service].
* **Subheadline:** Whether you're \[Situation/Challenge], I provide \[Service/Solution] to help you \[Result]
## About me section
The About Me section shows you're human and builds trust. Use this template whether it's a standalone page or part of your sales page:
Hi, meet me \[Your Name], and \[your area of expertise] really makes me love my work. That is why I started \[company name]. Seeing \[Your Avatar] \[achieve a benefit] through \[your approach] makes me do a happy dance. But I'll be honest—it did not happen overnight.
A few years back, I was... \[tell your story]
But then, I stumbled upon \[specific method/or mentor etc], and let me tell you—it was like flipping a switch. Suddenly, things started to click, and I couldn't believe how much easier life became once I had this \[method/trick/approach] in my corner.
That was the moment I poured my heart into refining this process and helping others find their groove and help them from \[where they are now] to \[where they want to be]
Here's a little something extra about me: I'm a sucker for \[hobby]. My happy place? Definitely \[favorite travel destination]. When I'm not working, you'll likely find me \[activity you enjoy].
**Tip:** Adding personal, fun touches to your communication builds rapport with your audience. Mentioning hobbies or interests often becomes a conversation starter during calls.
## Hero section: Sales page
Your sales page hero section hooks your audience. You have just 5 seconds to capture attention and make an impact.
### Headline options
* Tired of \[Common Problem]? Let's turn that frown upside down with \[Solution/Benefit].
* Want to \[Reach a Specific Goal] without feeling like you're pulling teeth?
* Ready to \[Achieve an Outcome] but feeling like you're spinning your wheels?
### Short trigger description
Discover how \[Your Avatar] can \[Benefit or Learn Something Valuable] with \[Brief Description of Solution]. Whether you're \[Starting Out/Experienced], you'll find the roadmap to \[Achieve a Specific Outcome] right here.
This approach focuses on the reader's emotions and benefits, laying the groundwork for trust and connection.
## Benefit section
Before introducing your product, paint a picture of the life your audience dreams about. An "Imagine If" section works well right before your pitch.
**Note:** Focus on emotions here—no course selling yet.
Imagine if you could finally \[e.g., "kick your financial stress to the curb"]. Picture yourself mastering \[skill] that lets you \[positive outcome] with ease, giving you more \[benefit]. Think about the confidence you'd gain to \[specific action], allowing you to focus on what truly lights your fire.
Imagine the relief of starting each day with a clear \[your solution], knowing you're the captain of your own ship when it comes to \[area of life]. Picture the success rolling in as you hit your goals with \[less effort/more satisfaction]. Envision a future where you feel \[emotion], empowered to \[specific outcome] without breaking a sweat.
## Introduce your course
When introducing your course, keep copy short and direct:
**Introducing: NAME COURSE**
The X step course where you will learn X and achieve Y.
With this course, you will not only learn how to \[the solution you offer] but you will have lifetime access and finally feel \[Desired outcome]
By the end of \[COURSE NAME], you'll know how to \[use a bullet point list of things they normally struggle with and now finally know how to change]
## Before writing
These snippets are starting points for your homepage or sales page. Your page will need additional copy, but these templates help you write content that converts.
Make it fun. Let your personality shine through, keep it real, and show your audience why you're the breath of fresh air they've been searching for.
Now go grab another coffee and start drafting your copy.
## About the author
Stephanie is a course marketing expert with a strong focus on creating effective marketing copy. With a background in the arts and a marketing degree from the University of Applied Sciences in Amsterdam, she combines creativity with strategy to craft content that connects with audiences.
[Visit Just Know How Course Boutique Online](https://www.justknowhow.net/)
*This content was provided by Kajabi Expert Stephanie Steggehuis and is offered for informational and educational purposes only and not as expert advice. If you would like further information on this topic or to work with Stephanie Steggehuis, please contact them via their profile in the Kajabi Experts Directory at [https://experts.kajabi.com/stephanie](https://experts.kajabi.com/stephanie).*
# Get started with SEO
Source: https://help.kajabi.com/articles/resources/business-guides/get-started-with-seo
Learn the basics of search engine optimization to improve your site's visibility and attract more visitors.
## Overview
SEO (Search Engine Optimization) helps put your business at the forefront of search engines like Google. Optimizing your website can help you rank higher in search results for keywords related to your business, increasing traffic and visibility.
## What is SEO?
SEO stands for Search Engine Optimization—the practice of optimizing your website to rank higher in search engine results.
When users search for a keyword, search engines display a series of results. Each result typically contains:
* URL
* Page title
* Description
**Note:** Search engine results pages may also include paid ads at the top or bottom of the results.
The higher you rank in search results, the more likely someone will click through to your website. SEO helps you optimize your content to achieve better rankings for keywords relevant to your business.
Every page and blog post on your Kajabi site has an SEO and Sharing section where you can set a page title, description, and image.
## Page title
You can set a page title in the SEO and Sharing section of any page or blog post. Depending on the search engine, your page title may display below the URL breadcrumb on results pages and on browser tabs.
**Note:** Search engines may display relevant text from your page instead of your custom title.
### Improve page titles for SEO
* Describe your page content in less than 70 characters
* Include a relevant keyword when it makes sense
* Use unique titles for each page
### Pages
### Blog
## Page description
Set a page description in the SEO and Sharing section of a page or blog post.
**Note:** Search engines may display relevant text from your page instead of your custom description.
### Improve page descriptions for SEO
* Summarize your page content in 1-2 sentences
* Include a relevant keyword
* Use unique descriptions for each page
### Pages
### Blog
## Page URL
Set a page URL in the General section of a page or the SEO and Sharing section of a blog post. This URL displays in search results and is the link users click to access your page.
### Improve page URLs for SEO
* Keep it short
* Avoid vague URLs (e.g., page-123)—briefly describe the page instead
* Use hyphens to separate words, not underscores
* Use lowercase letters
* Include a relevant keyword when appropriate
### Pages
### Blog
The title in the General section is an internal title, while the Page Title in the SEO and Sharing section is visible to users. The same applies to blog posts. [Learn more about the SEO and Sharing section](../../website/pages/seo-and-sharing).
## Header tags
Header tags structure your page content for both users and search engines. Use Kajabi's text editors to select heading tags that organize your content.
### To view header tag options
1. Open the **text editor** for your desired text section
2. Click **Formats**
3. Select **Heading**
### Heading hierarchy
* **Heading 1:** The title of your page
* **Heading 2:** Subheadings
* **Heading 3-6:** Further subheadings for your content
### Improve headings for SEO
* Use only one H1 tag per page
* Include a relevant keyword in your H1 tag
* Add keywords to other header tags when appropriate
## Images
Good filenames and alt text for images improve your SEO. Alt text describes an image for screen readers and search engines. You can find this field in the Image Block in the website or page builder.
### Improve images for SEO
* Avoid vague filenames (e.g., image123.png)—briefly describe the image instead
* Use hyphens to separate words in filenames, not underscores
* Reduce image file size using tools like [Squoosh](https://squoosh.app/)
* Add alt text that briefly describes each image
* Include relevant keywords in filenames and alt text when appropriate
## Text
Quality written content on your pages and blog posts supports better SEO performance.
**Note:** AI-powered search tools like ChatGPT, Perplexity, and Google AI Overviews rely on readable text content to surface your pages. Text written directly on your pages is more accessible to both search engines and AI tools than text embedded in images. For best results, avoid placing important content inside images.
### Improve text for SEO
* Write longer content (over 2,000 words) when appropriate
* Include relevant keywords throughout your content, but don't overdo it
* Use descriptive link text instead of phrases like "click here"
## Sitemap
A sitemap helps search engines index the pages on your website. While not required to get listed on search engines, submitting your sitemap to Google and Bing can be helpful.
Submitting your sitemap to Bing also submits it to Yahoo. DuckDuckGo references Bing's search results. Depending on your location, you may also want to submit to Yandex or Baidu.
### Google
#### Submit a sitemap to Google
1. Log in to [Google Search Console](https://search.google.com/search-console/welcome) (requires a Google account)
2. In the **URL Prefix** field, enter your full domain name (e.g., [https://www.example.com](https://www.example.com))
3. Click **Continue**
There are several ways to verify your domain. This example uses the HTML tag method.
#### To use the HTML tag method
1. Click **HTML tag**
2. Copy the Meta tag provided
Open a separate browser tab and navigate to your Kajabi account.
#### To add the Meta tag in Kajabi
1. Open the **Settings** tab from your Dashboard
2. Click **Site Details**
3. Scroll to **Page scripts**
4. Paste in your copied Meta tag
5. Click **Save**
#### To complete verification in Google Search Console
1. Click **Verify**
2. Click **Go to Property**
3. Select **Sitemaps**
4. Enter **sitemap.xml** in the text field
5. Click **Submit**
### Bing
#### Submit a sitemap to Bing
1. Open [Bing Webmasters Tools](https://www.bing.com/webmasters)
2. Click **Get started** or **Login** (requires a Microsoft, Google, or Facebook account)
3. In the "Add your site manually" field, enter your full domain name (e.g., [https://www.example.com](https://www.example.com))
4. Click **Add**
You can import your site from Google Search Console, but this example covers manual setup using the HTML Meta Tag method.
#### To use the HTML Meta Tag method
1. Click **HTML Meta Tag**
2. Copy the Meta tag provided
Open a separate browser tab and navigate to your Kajabi account.
#### To add the Meta tag in Kajabi
1. From the Dashboard, open the **Settings** tab
2. Click **Site Details**
3. Scroll to **Page scripts**
4. Paste the Meta tag into the Header Page Scripts field
5. Click **Save**
#### To complete verification in Bing Webmaster Tools
1. Click **Verify**
2. When "Site addition successful" appears, click **Done**
3. Click **Sitemaps** in the left sidebar
4. Click **Submit sitemap**
5. Enter your full domain name with **/sitemap.xml** at the end (e.g., [https://www.example.com/sitemap.xml](https://www.example.com/sitemap.xml))
6. Click **Submit**
# Build an automated sales funnel for course sales
Source: https://help.kajabi.com/articles/resources/business-guides/how-to-build-an-automated-sales-funnel-to-increase-your-course-sales-on-kajabi
Learn how to create an automated sales funnel that generates consistent course sales while you focus on what you love.
## Overview
By Brandon Trentalange, [Millennial Marketer](https://www.millennialmktr.com/)
Creating an online course is no small feat. If you've successfully built and uploaded your course to Kajabi, you've already tackled one of the most challenging parts of the process. But building a course is just the beginning. To achieve consistent sales, you need an effective, automated system that works tirelessly in the background—even when you're not. That's where a sales funnel comes in.
The following steps cover building an automated sales funnel tailored for Kajabi course creators. Whether you're just starting or optimizing an existing funnel, these practical strategies help increase sales and streamline your business.
## What is a sales funnel, and why do you need one?
A sales funnel is a structured journey that guides potential customers from discovery to purchase. Imagine having a system that nurtures leads, builds trust, and converts browsers into buyers—without needing you to be involved at every step. That's the power of an automated sales funnel. Not only does it free up your time, but it also ensures your sales process is consistent and scalable.
## Step 1: Choose the right value vehicle
Every successful sales funnel starts with an irresistible *value vehicle*. This is the free content or resource you offer in exchange for a prospect's email address, serving as the entry point to your funnel. Think of it as your opening handshake—a way to show your audience you understand their challenges and can provide solutions.
### Popular options for Kajabi course creators
1. [**Ebook**](../../sales/offers/how-to-sell-an-ebook): Use Kajabi's intuitive landing pages to offer a downloadable PDF packed with actionable insights or a preview of your course material.
2. [**Webinar**](../../marketing/funnels/how-to-set-up-a-zoom-webinar-funnel): Host a pre-recorded training session on Kajabi. A well-crafted webinar builds trust and positions you as an authority.
3. [**Free mini-course**](../../products/courses/courses-overview): A bite-sized version of your course is a great way to showcase the transformation you can deliver.
**Tip:**
Your value vehicle should solve a specific problem that's relevant to your audience while hinting at the more comprehensive solutions found in your paid course.
## Step 2: Build funnel pages in Kajabi
Kajabi provides everything you need to build and connect each page of your funnel. Let's break down the key pages:
### 1. Opt-in page
**Purpose:** Capture your audience's email addresses in exchange for your value vehicle.
**Best practices:**
* Use a Kajabi Landing Page and a Form to capture your lead
* Set up the form to go to their next step—either a webinar watch room or thank you page that tells them how they will receive their freebie
* Use a compelling headline that highlights the benefits (e.g., *"Get My Free Guide to Building a Profitable Online Course"*)
* Include a simple, eye-catching form
* Add a clear and enticing call-to-action (CTA)
### 2. Freebie delivery
**Purpose:** Fulfill the promise made on the opt-in page and encourage further engagement.
**Best practices for webinars:**
* Add your webinar to a Kajabi landing page so your audience can watch your pre-recorded training
* Include a CTA button below the video for those who would like to take the next step in enrolling in your course
**Best practice for other freebies:**
* Use a Kajabi Landing Page to create a custom thank you page that tells your lead to check their email to receive their freebie
* Include contact information or a way for them to engage further with you on the page
### 3. Sales page
**Purpose:** Convert leads into paying customers by showcasing your course.
**Best practices:**
* Use a Kajabi landing page and focus on only selling 1 offer on the page
* Focus on the transformation your course provides
* Use testimonials and case studies to build credibility
* Address objections with FAQs, guarantees, or bonuses
* Add CTA buttons throughout the page so your leads can purchase as soon as they make a decision
### 4. Checkout page
**Purpose:** Simplify the purchasing process.
**Best practices:**
* Display a clear summary of the offer
* Include multiple payment options
* Offer a satisfaction guarantee to reduce risk for buyers
## Step 3: Automate nurturing with email campaigns
Not everyone will buy immediately, which is why follow-up is critical. Kajabi's built-in email marketing tools allow you to automate nurturing sequences that keep your leads engaged and interested.
Make sure to create this using an email sequence. Your subscribe trigger is the completion of the form on your opt-in page and the unsubscribe trigger is the purchase of your offer.
### Example 14-day email sequence
* **Day 1:** Deliver the promised freebie with a warm introduction.
* **Day 3:** Share a helpful tip or story related to their pain point.
* **Day 5:** Highlight testimonials from successful students.
* **Day 7:** Offer a bonus, like an additional resource or checklist.
* **Day 10:** Create urgency with a limited-time offer or discount.
* **Day 14:** Make a final, compelling pitch, emphasizing the transformation they'll experience.
**Tip:**
Use Kajabi's analytics to monitor open rates and tweak your sequence as needed.
## Step 4: Drive traffic to the funnel
Without traffic, even the most well-designed funnel will fail. The goal is to attract your ideal audience and direct them to the top of your funnel. This means reaching the people who are most likely to benefit from your course.
### Effective traffic sources for course creators
* **Social media:** Platforms like Instagram, LinkedIn, and YouTube are excellent for sharing educational and engaging content that links to your Kajabi opt-in page.
* **Partnerships & affiliates:** Collaborate with influencers or other course creators in your niche. Kajabi's affiliate tracking makes this seamless.
* **Paid advertising:** Running targeted ads on Facebook, Google, or YouTube can help you generate traffic quickly. Start small, test your messaging, and scale your budget once you identify what works.
## Step 5: Optimize the funnel with analytics
Your first funnel likely won't be perfect, and that's okay. [Kajabi's analytics tools](../../analytics/analytics-overview) provide valuable insights into what's working and where you can improve.
### Key metrics to track
* **Opt-in rate:** If this is low, test new headlines, images, or CTAs on your opt-in page.
* **Engagement:** Monitor how much of your webinar or video content people are watching.
* **Conversion rate:** Analyze your sales page and offer to see what might be causing hesitation.
## The benefits of an automated funnel
An automated sales funnel doesn't just save time—it transforms your business. With a system running 24/7, you can focus on creating new courses, serving your students, or even taking a well-earned break.
### What becomes possible
* Waking up to new sales notifications
* Spending more time on creative projects
* Watching your business grow without constant hustle
Building an automated sales funnel in Kajabi is one of the smartest moves you can make as a course creator. By focusing on value, nurturing leads, and leveraging Kajabi's powerful tools, you can create a sales system that works for you. Start small, stay consistent, and refine as you go—you'll soon have a funnel that generates consistent, scalable income while you focus on what you love most: teaching and transforming lives.
# Create a profitable Kajabi sales page
Source: https://help.kajabi.com/articles/resources/business-guides/how-to-create-a-profitable-kajabi-sales-page
Learn how to craft a high-converting sales page with persuasive copy, clear offers, and effective design.
## Overview
Crafting a high-converting sales page starts with one crucial step: nailing the persuasive sales copy. The essentials of creating an outline for your sales page that not only engages your audience but also compels them to take the next step are covered below.
## Step 1: Create an outline with persuasive sales copy
One of the most important components of your sales page is your sales page copy. If you're unfamiliar with the term "copy", it refers to the text on your sales page including your headlines and body text.
Your sales page copy should include the following:
* **Compelling headings** that are scannable and will stop people in their tracks
* **The "why"** — the reason they need what you're selling based on their pain points or desires
* **The "what"** — this includes the duration of the offer, downloads, etc
* **Social proof** like testimonials, case studies, or success stories
* **A little about you** including your story, experience, or qualifications
* **Enticing offer(s)** with a clear outline of what's included and what they'll receive
* **Incentives or scarcity** including upgrade bonuses, "fast-action bonuses", or limited-time discounts with a countdown timer (optional)
## Step 2: Present clear, valuable offers
### Minimize the number of offers
Have you ever heard the saying, "if you give them too many choices, they'll often choose nothing"? Having too many choices can often lead to customer confusion or they may fear making the wrong choice. In either case, they may abandon your sales page or your checkout altogether.
Here's how to reduce option overwhelm:
* **Consider how you can eliminate unnecessary choices or options.** This can be by combining offers or offering some things as bonuses with a purchase. Not everything has to be its own offer.
* **Provide a default or suggested option that makes it easy for them to choose.** For example, use a "most popular" badge on pricing tiers to encourage easy decision-making. Use the Kajabi Pop-Up Checkout with easy payment options. Adding unnecessary pages or making checkout difficult can slow their checkout and reduce conversions.
* **Offer value-added bonuses.** Along with your irresistible product or service offer, consider offering added value with bonuses, potentially for a limited time or a limited quantity. A value-add encourages visitors to purchase or upgrade to a higher tier.
**Examples of value-added bonuses include:**
*A free or discounted download or digital product*
*A live private or group coaching call*
*A physical gift sent in the mail*
*Access to a private community*
[Learn how to set a limit on your available bonus offers](../../sales/offers/how-to-set-an-offer-quantity-limit).
**Tip:**
Consider duplicating your sales page and adapting the content based on the traffic source. For example, a sales page for social media promotions versus a sales page used for your appearances, like speaking at conferences or as a guest on podcasts, may have different messaging or promotional offers.
## Step 3: Choose a sales page template or start designing from scratch
You can find free Kajabi Sales Page templates to get you started by:
* Navigate to your Kajabi Dashboard
* Select **Website** from the left-hand menu
* Select **Landing Pages**
* Click the **New Landing Page** button
Alternatively, you have the option of purchasing an Expert-designed Kajabi Sales Page Template from the [Templates Store](https://templates.kajabi.com/).
**Tip:**
If you get stuck on the design, consider hiring a Kajabi Expert from the [Experts Marketplace](http://experts.kajabi.com). Experts can help you create professionally designed sales pages as well as provide best practices to potentially increase sales conversions.
**Things you may want to avoid on your sales page:**
* Difficult to read fonts or small font sizes
* Unnatural stock photography
* Colors that are too bright or too muted, making it difficult to read or view
* Too many offers or unclear offers
* The ability for visitors to click a link or button that navigates them away from your page
**Tip:**
Simplify your website and sales page to reduce friction. If your end goal is to get them to purchase your product or service, don't send them to a free download, subscribe to your newsletter, follow you on social media, or read a blog post. Make their path clear and straightforward.
## Step 4: Test, test, and test again
Before you promote your sales page, here is a checklist to ensure everything is working correctly:
* Review your page on both desktop and mobile to ensure legibility and navigability
* Click all buttons and links on both desktop and mobile to ensure they are working correctly
* Check all copy spelling and grammar using a tool like [Grammarly](https://www.grammarly.com/)
* Create a coupon giving you 100% off the purchase price to test your checkout, ensuring you receive your purchase confirmations
* Review your page URL and SEO settings under **Page Details** so that your page displays correctly when shared
## Get started
If you're just getting started, don't get caught in the weeds with your design. Remember, done is better than perfect. Put something out into the world, gain data and feedback, and iterate as needed.
## About the author
Afton is a Digital Strategist and has over a decade of hands-on experience with some of the biggest thought leaders online. Her gifts in design and strategy have helped her clients and students to grow profitable and influential businesses online. She believes everyone has something amazing to teach the world and is capable of becoming a thought leader in their own right - and she would love to show you how. You can learn more about Hero Afton Negrea on her website, [https://www.aftonnegrea.com/](https://www.aftonnegrea.com/).
This content was provided by Kajabi Expert Afton Negrea and is offered for informational and educational purposes only and not as expert advice. If you would like further information on this topic or to work with Afton Negrea, please contact them via their profile in the Kajabi Experts Directory at [https://experts.kajabi.com/aftonnegrea](https://experts.kajabi.com/aftonnegrea).
# Strategies to engage and motivate affiliates
Source: https://help.kajabi.com/articles/resources/business-guides/strategies-to-engage-and-motivate-your-affiliates
Build a strong affiliate community that enhances performance and drives business success.
## Overview
Affiliate marketing is a powerful and often overlooked strategy for expanding reach and driving sales. However, an affiliate program's true potential hinges on your affiliates' engagement and motivation. Only when affiliates feel valued, equipped, and supported will they effectively promote your products and achieve meaningful results.
Essential strategies can elevate your affiliate program by engaging and motivating affiliates effectively. A strong community enhances affiliate performance and drives business success.
## Know your people
To effectively engage and motivate your affiliates, it's crucial to understand who they are and what motivates them. Here are two key areas to focus on:
### Consider affiliate avatars
Begin by collecting data on your affiliates and creating profiles, or avatars. This will help you spot patterns and preferences, allowing you to segment them into relevant groups. Some affiliate programs consist mainly of existing customers, while others involve strategic partnerships with businesses in similar fields. By understanding each avatar's unique goals, you can effectively tailor your approach to meet their specific needs.
**Affiliate avatar example: The passionate promoter**
* **Name:** Emily, The Enthusiastic Educator
* **Background:** Emily is a content creator and online coach specializing in personal development. She's a long-time user of your product, having built her own business with it.
* **Goals:** Emily wants to earn additional income by promoting tools she genuinely believes in, while continuing to provide value to her audience. She also sees affiliate marketing as a way to deepen her expertise and credibility in her niche.
* **Preferred marketing channels:** Email newsletters, Instagram stories, and live webinars.
* **Challenges:** Emily struggles to find the time to create promotional materials and often needs ideas for how to showcase products in an authentic way.
* **How to engage & motivate:** Provide Emily with pre-designed templates, social media assets, and a clear affiliate toolkit. Offer regular webinars or Q\&A sessions for affiliates to build community and provide insights.
### Tailor your engagement strategies
Once you have a clear picture of your affiliates, customize your communication and support accordingly. For strategic partners, provide co-marketing opportunities and collaborative content highlighting mutual benefits. For existing customers, offer personalized promotions and resources that encourage them to share their experiences. By aligning your strategies with the specific interests and motivations of each group, you'll foster stronger connections and drive better results.
## Communicate effectively
Effective communication is key to keeping your affiliates engaged and informed. Here's how to enhance your communication strategy:
### Set up communication channels
Establish clear and accessible communication channels, such as an email newsletter or even a community. This will allow you to share important updates, new product launches, and promotional opportunities in real time. Make it easy for affiliates to reach out with questions or feedback, fostering an open dialogue that encourages collaboration.
### Importance of transparency
Regularly updating your affiliates about program changes, performance metrics, and upcoming initiatives helps build trust and loyalty. Transparency creates a sense of partnership, making affiliates feel valued and informed. Consider sharing performance reports that highlight not only their individual contributions but also the overall success of the affiliate program. This insight can motivate affiliates to improve their efforts and engage more actively with your business.
## Develop incentives
Creating effective incentives is crucial for motivating your affiliates and encouraging them to perform at their best. Here's how to structure your incentive program:
### Types of incentives
Consider a mix of monetary and non-monetary incentives to appeal to different affiliate motivations. Monetary incentives might include tiered commission structures, where affiliates earn higher percentages as they reach specific sales milestones. Non-monetary incentives could involve exclusive products, recognition in newsletters, or participation in special events. Offering a variety of incentives ensures that there's something for everyone, catering to diverse preferences.
### Examples of successful incentive programs
Look to successful companies for inspiration on effective incentive strategies.
For example, some brands **run contests** that reward top performers with cash bonuses or gift vouchers, creating excitement and competition. Others may **implement loyalty programs** that reward affiliates for long-term engagement and consistent performance. By showcasing real-world examples, you can illustrate how well-designed incentive programs can increase motivation and better results for your affiliate network.
## Equip affiliates
Providing your affiliates with the right tools and resources is essential for their success. Here's how to ensure they're well-equipped:
### Provide tools and resources
Supply affiliates with high-quality marketing materials, such as banners, product images, and ready-to-use copy for email and socials. This makes it easier for them to promote your products effectively. Additionally, consider creating an affiliate resource hub where they can access these materials anytime. The easier you make it for affiliates to find and use resources, the more likely they are to engage actively with your brand.
### Deliver education and support
Investing in your affiliates' education is a great way to boost their performance. Offer training sessions, webinars, and guides that cover best practices, marketing strategies, and product information. By providing ongoing support and education, you empower your affiliates to become more knowledgeable and effective marketers, ultimately benefiting your affiliate program as a whole.
## Measure and adapt
Regularly assessing your affiliate program is key to its ongoing success. Here's how to implement an effective measurement strategy:
### Key performance indicators to track
Identify and track key performance indicators (KPIs) such as:
* Conversion rates
* Sales volume
* Traffic generated by affiliates
These metrics provide valuable insights into which affiliates are performing well and which may need additional support.
### How to adjust strategies based on data
Use the data collected to make informed decisions about your affiliate program. If certain affiliates are underperforming, reach out to offer assistance or additional resources. Conversely, you can recognize and reward high-performing affiliates with enhanced incentives. By continually analyzing performance and adjusting your strategies, you can optimize your affiliate program for maximum impact.
## Build a thriving affiliate network
Motivating and engaging your affiliates is key to a successful program. By understanding your audience, offering effective incentives, equipping affiliates, fostering community, and tracking performance, you'll build a thriving network. Implement these strategies to boost both affiliate and business success.
# Master the 5 stages of a Kajabi sales funnel
Source: https://help.kajabi.com/articles/resources/business-guides/the-5-key-stages-of-a-successful-kajabi-sales-funnel-and-how-to-master-each-one
Optimize the five essential stages of an effective sales funnel for maximum conversions.
## Overview
Building an effective sales funnel is essential for thriving in the competitive world of online business. A sales funnel is much more than a series of steps; it's a strategic path designed to engage potential customers, nurture their interest, and guide them toward a purchase decision. Here are the five key stages of a successful Kajabi sales funnel with insights on mastering each one.
## Stage 1: Raising awareness about your brand and offerings
The first step in any sales funnel is creating awareness about your brand and offerings. This stage involves capturing the attention of potential customers who may not yet know they need your product. Think of this as planting the seeds of interest.
### Mastering awareness
* **Content marketing:** Leverage [newsletter](../../products/newsletters/how-to-launch-a-successful-newsletter-subscription)/blog posts, videos, and social media to deliver valuable content that resonates with your target audience.
* **SEO optimization:** Ensure that your content is [keyword-optimized](/articles/resources/business-guides/get-started-with-seo) to improve visibility in search engine results.
* **Engaging designs:** Create visually appealing content that stands out and grabs the attention of potential customers.
## Stage 2: Sparking genuine interest
Once you have caught the attention of your audience, the next step is to spark genuine interest. At this stage, it's crucial to provide more detailed information about what you're offering.
### Mastering interest
* **Email campaigns:** Use targeted email sequences to nurture leads and provide them with additional information and resources.
* **Personalization:** Utilize data to tailor your messaging and offers to address specific needs and preferences of different audience segments.
* **Webinars and live demos:** Consider hosting interactive sessions where potential customers can see your product in action and ask questions.
## Stage 3: Highlighting the unique benefits and value of your offers
In the decision stage, prospects are weighing their options and considering whether your offering meets their needs. It's time to highlight the unique benefits and value of your product.
### Mastering decision
* **Detailed sales pages:** Use Kajabi's robust tools to create [comprehensive sales pages](/articles/resources/business-guides/how-to-create-a-profitable-kajabi-sales-page) that clearly articulate the value proposition and features of your product.
* **Case studies and testimonials:** Provide social proof through customer success stories that demonstrate the real-world benefits of your product.
* **Risk reversal offers:** Offer money-back guarantees or free trials to alleviate potential buyers' concerns and overcome objections.
## Stage 4: Ensuring the purchase process is seamless and intuitive
The action stage is where prospective customers are compelled to make the decision to purchase. At this point, clarity and ease of transaction should be your primary focus.
### Mastering action
* **Clear calls-to-action (CTAs):** Use strong, compelling CTAs throughout your sales pages to encourage users to make a purchase.
* **Streamlined checkout process:** Ensure the purchasing process is seamless and intuitive to prevent cart abandonment.
* **Limited time offers:** Create urgency with time-sensitive promotions to motivate buyers to act quickly.
## Stage 5: Retaining customers and turning them into advocates for your brand
It's important to remember that the journey doesn't end with a sale. Retaining customers and turning them into advocates for your brand is essential for long-term success.
### Mastering retention and advocacy
* **Follow-up:** Use Kajabi's automation tools to send follow-up emails that nurture and engage customers post-purchase.
* **Soliciting feedback and reviews:** Actively seek feedback to improve your offerings and encourage satisfied customers to share their experiences.
* **Loyalty programs:** Introduce rewards or discounts for repeat purchases to increase customer loyalty.
## Drive sustained growth with a strong funnel
Creating a successful Kajabi sales funnel requires understanding the nuances of each stage and applying strategies to effectively guide potential customers through their journey. By mastering these five key stages, you'll be well-equipped to convert clicks into committed, enthusiastic buyers, ensuring sustained growth and profitability for your business.
# Understand the psychology of selling
Source: https://help.kajabi.com/articles/resources/business-guides/understanding-the-psychology-of-selling
Create sales pages that connect with the audience on a psychological level and drive conversions.
## Overview
The truth is, there is no single answer or strategy for effective sales, but when you understand the psychology of selling, you will be better equipped to develop more effective sales pages. Designing a sales page is more than the colors, fonts, and images that you use; it's about deeply resonating with your potential customers and allowing your sales page to speak to them when you can't be there in person.
## The value is in the why
Although it may seem that the more you offer, the more valuable your product or service may be, overwhelming your customers with inclusions could deter them from purchasing. Rather than focusing on the "what" (e.g. the number of lessons, downloads, or hours of work ahead), instead focus on the "why". Remember: *they buy because of their why.*
Here are some psychological reasons why people buy:
* **Pain:** This could include physical discomfort or mental discomfort. Consider how you can address and resolve a pain point that they're experiencing.
* **Profit:** This could be a monetary profit or even a non-monetary result or a revelation that can help them in their life or business.
* **Popularity:** As we know from influencers, many people will purchase based on social influence. This could also be with the help of influencers, affiliates, media exposure, or by use of social proof.
## Consider attention spans
You're not only competing with your competitors for the attention of your customers, but you're also competing with every other source of distraction online including social media, streaming services, and apps that your customers are using. It's crucial to take advantage of every second you have their attention.
In her book, "Attention Span", psychologist [Gloria Mark](https://gloriamark.com/attention-span/) wrote that the first attention span study in 2004 showed an average attention span for screens was two and a half minutes. Another study from 2012 found it was as low as 75 seconds. The most recent study shows it's only 47 seconds.
***If you only had 47 seconds to tell someone about what you're selling, what would you say?***
What would be the most important points you'd want them to understand? And how would you guide them to purchase? The next time you speak with an existing or potential customer, pay attention to what piques their interest. What questions are they asking? What easy-to-understand terms can you use to illustrate your value?
## Create a digestible sales page
If you've ever used a visitor recording tool like [Hotjar](https://www.hotjar.com/) or reviewed Google Analytics to understand the average time a visitor spends on your page, you may have noticed that people scan a page very quickly and leave. People are skiing quickly through your website, often noticing only the large things like headlines, images, bullet points, and pricing.
When [designing your sales page](/articles/resources/business-guides/how-to-create-a-profitable-kajabi-sales-page), it's important to draw focus and attention to the things that you want them to notice most, including the value you'll bring to their life or business.
**Things you'll want them to focus on include:**
* *Compelling headlines*
* *Their deeply resonating "why"*
* *Visuals that provide context or convey a feeling*
* *Your offer and value-added bonuses*
Additionally, making your website scrollable on both desktop and mobile devices is key to a great user experience and potentially higher conversions. [Google reports](https://www.thinkwithgoogle.com/marketing-strategies/app-and-mobile/mobile-web-traffic-statistics/) that an average of 50% of traffic to a website is from mobile devices. If your sales page is too long, making it difficult to scroll on mobile devices, your visitors could miss important information or simply lose interest and leave.
## Connect with the audience to convert
Creating an effective sales page is about much more than design aesthetics; it's about connecting with your audience on a psychological level. By focusing on the "why" behind their purchase decisions and addressing their core needs—whether it's alleviating pain, generating profit, or gaining popularity—you can create a more meaningful connection. At the same time, understanding the limitations of attention spans in our digital age means you must communicate your value swiftly and clearly. By ensuring your sales page is digestible, mobile-friendly, and strategically focused on the key elements that matter most to your audience, you'll be well on your way to converting visitors into loyal customers.
## About the author
Afton is a Digital Strategist and has over a decade of hands-on experience with some of the biggest thought leaders online. Her gifts in design and strategy have helped her clients and students to grow profitable and influential businesses online. She believes everyone has something amazing to teach the world and is capable of becoming a thought leader in their own right - and she would love to show you how. You can learn more about Hero Afton Negrea on her website, [https://www.aftonnegrea.com/](https://www.aftonnegrea.com/).
This content was provided by Kajabi Expert Afton Negrea and is offered for informational and educational purposes only and not as expert advice. If you would like further information on this topic or to work with Afton Negrea, please contact them via their profile in the Kajabi Experts Directory at [https://experts.kajabi.com/aftonnegrea](https://experts.kajabi.com/aftonnegrea).
# Value-driven branding to build trust and engagement
Source: https://help.kajabi.com/articles/resources/business-guides/value-driven-branding-connect-with-your-audience-to-build-trust-and-boost-engagement
Build authentic connections with the audience through value-driven branding that prioritizes purpose over aesthetics.
## Overview
In today's world, compelling branding matters more than ever. It's not just about having a cool logo or an edgy color scheme; it's about building a real connection with your audience. When you connect authentically, you earn their trust and loyalty. Here, we will explore how to think about branding differently, emphasizing a value-driven approach that prioritizes audience connection over superficial elements.
## What is branding?
While the aesthetic elements of branding are essential, these choices remain subjective and are just one piece of a much larger puzzle. A common mistake in branding is failing to communicate value. The words you choose matter; they should express the deeper purpose behind your brand. Good branding requires creating a clear identity that resonates with your audience. It goes beyond visuals to convey your message effectively. Your brand should connect you and your experience with the problems your customers face.
When asked about branding and ways to optimize it within Kajabi, we often point people to [Donald Miller's book, Building a StoryBrand](https://www.amazon.com/Building-StoryBrand-Clarify-Message-Customers/dp/0718033329). Miller stresses that before you talk about your product, you need to identify and connect with the problem your customer is facing. We particularly resonate with this takeaway: focus on your clients and their needs before you start selling.
## Connect authentically with the audience
So, how do you authentically connect with your audience? First, recognize why they are coming to you in the first place. Typically, they are grappling with a problem that requires a solution. Yet, many businesses tend to start with the solution rather than addressing the underlying problem. This approach can lead to disengagement and missed opportunities.
Value-driven branding centers on understanding your customers' challenges and aspirations.
It's crucial to ask yourself:
* *What difficulties do my customers face?*
* *What problems are they experiencing?*
Addressing these challenges directly will demonstrate empathy and significantly strengthen your relationship with your audience.
Tapping into your own lived experiences can enhance this connection even further.
### Emotional connections often lead to deeper engagement and loyalty
Customers who feel a genuine connection with you or your brand are likelier to choose you over competitors who may not resonate with them as deeply.
Consider *your* journey as a business owner or creator. What is your "why"? What motivated you to start your business? Sharing this motivation with your audience is essential; it forms the core of your brand narrative. Perhaps you were inspired by a harrowing experience, such as a challenging job, a divorce, or a profound loss. Or maybe you have years of experience in a misunderstood industry and want to share your insights with others. Whatever your story, your "why" will resonate emotionally with your customers, leading to deeper engagement and loyalty.
## Optimize the above-the-fold section
One of the most critical aspects of your branding is the Above-the-Fold section of your website. This is prime real estate; visitors should quickly grasp what you do and how you solve their problems without scrolling. Your copy must be concise and engaging in a world where information is consumed in rapid bursts.
The copy in your Above-the-Fold section should include the following:
* **Focused messaging:** Highlight key points that differentiate your brand while addressing your audience's needs. Avoid expert jargon, which may overwhelm new visitors and drive them away.
* **The "who," "why," and "how":** Define your customer, the problem they are experiencing, and how you solve it. Demonstrate an understanding of their aspirations, challenges, and desires.
* **A hook:** The goal of your Above-the-Fold content is not necessarily to make a sale right away but to entice visitors to keep scrolling. Use a compelling call-to-action (CTA) that encourages them to learn more about your offerings and guides them further into your site.
### Remember, the above-the-fold section often gives visitors a first impression of your brand. Make it count.
## Maintain consistency in messaging
Once you've established your brand identity and story, it's vital to maintain consistency in your messaging across all platforms. This consistency builds recognition and reinforces trust. Ensure your tone, voice, and visuals align across your website, social media, and marketing materials.
Consider creating a physical brand style guide outlining your messaging strategy, including tone, key messages, and visual guidelines. This document can be a valuable resource for anyone creating content for your brand, ensuring that your messaging remains cohesive.
## Build lasting audience connections
Creating an effective brand is more than design aesthetics; it's about authentically connecting with your audience. You can build trust and boost engagement by focusing on your customers' problems, understanding their needs, sharing your purpose, and consistently communicating your value.
Embrace this holistic approach to branding, and watch as it transforms your relationship with your audience. This transformation can lead to long-term success for your brand, creating a loyal customer base that believes in your mission and values.
Successful brands prioritize genuine connections and offer value in an increasingly crowded marketplace. Take the time to understand your audience, craft your story, and communicate your brand's purpose. By doing so, you'll stand out from the competition and foster a community of loyal customers who resonate with your vision.
# Create custom campaign links
Source: https://help.kajabi.com/articles/resources/kajabi-partner-program/creating-custom-campaign-links-as-a-kajabi-partner
Use any URL as a trackable Kajabi Partner link with custom campaign links.
**Custom campaign links** drive traffic to any content you've created on your own website or any content Kajabi has published, from blog posts to webinars. You receive credit for any referrals who click your link and sign up for Kajabi within a 30-day period.
## How do custom campaign links work?
Kajabi Partner Links (including custom campaign links) place a 30-day tracking cookie on the link clicker's browser. This means that when someone clicks on your Partner link and signs up for Kajabi within 30 days of clicking the link, you will receive credit for the referral. Once the referral becomes a paying Hero, they are considered an "active referral." As a Kajabi Partner, you will begin earning commissions for your Active Referrals.
## Create a custom campaign link
### Navigate to the Kajabi Partner Dashboard
1. From the Kajabi Dashboard, click your account icon in the top right corner.
2. Select **Partner Program** to open the Kajabi Partner Dashboard.
* If you do not have a Kajabi account, log in [here](https://kajabi.com/partnerprogram)
3. In your Partner Dashboard, navigate to **Campaigns** in the left side bar.
4. Click the **Create a campaign** button.
5. Locate the **Custom Campaign** card.
6. Click **Create Campaign**.
### Create the custom campaign link
To create a custom campaign link:
* Give it a title. A great title to use for a Custom Campaign would be the URL's Page Name. For example, if you were to generate a Custom Campaign from a blog post URL, use the title of the blog post.
* Copy and paste the URL you'd like to use for your Custom Campaign.
* Next, title the link you're generating for your Custom Campaign. You can re-use this campaign's title, or if you plan on promoting the link in different places or channels, we suggest adding the channel's name to the link's title. That way, you can create additional links for each channel under this campaign and see which channel is converting best.
Once you've completed the Custom Campaign Link form, Kajabi will take the URL you inputted and generate a URL that has your 30-day tracking cookie attached for you to go out and share.
A custom campaign link might look like this:
```
https://app.kajabi.com/r/abcD3FGHi/t/jklmnopq
```
**Note:**
Although your custom campaign link may be formatted to look similar to the link above, it will still direct your visitors to the URL you input. Test your custom campaign link by copying and pasting it into your browser to confirm that it leads to the correct page.
# FTC guidelines
Source: https://help.kajabi.com/articles/resources/kajabi-partner-program/ftc-guidelines
Understand FTC disclosure requirements for Kajabi Partners and endorsers.
Kajabi welcomes recommendations and endorsements from Heroes. **FTC disclosure rules** apply when you participate in this kind of marketing as a Kajabi Partner or paid endorser, and you must follow them to stay compliant.
## What is the FTC?
The Federal Trade Commission, or FTC, is an independent agency of the United States government whose mission is to protect consumers from anticompetitive, misleading, deceptive, and unfair business practices.
The FTC wants to make sure that consumers are able to differentiate between ad content and organic content. This has become an increasing focus of the FTC especially given the rise of the use of endorsements in social media marketing. Over the past few years, the FTC has expressed growing concern over the lack of transparency in endorsements and partner content. According to the FTC, the increased use of endorsements in social media has led to widespread and pervasive deceptive advertising.
According to the FTC's rules, paid influencers, endorsers, and partners must disclose the nature of their relationships with the brands within their content. Your audience needs to understand whether what they're seeing is an ad or a genuine endorsement, with no monetary gain in it for you. When you are paid or receive free or discounted products or services from Kajabi (for example as a paid partner or endorser) these rules apply to you, and even if you're not from the United States, they may still apply.
Violating the FTC's rules can result in penalties, fines, and even legal fees. Unfortunately, just claiming that you didn't know the rules or you had no intent to violate the rules, is not an argument to avoid these penalties.
## Key requirements
Reading and understanding the FTC's guidelines can be complicated, which is why we've provided a summary of the key requirements you must meet as a Kajabi partner or paid endorser.
**Note:**
This summary is based on our understanding of the FTC rules and is not legal advice. Contact your legal counsel if you have questions or concerns.
* Disclosure language must be placed **before** your link in any and all placements, regardless of the format of the content. It's best practice to place your disclosure above your links at the beginning of your content or as close to the links as possible. Disclosure language must not be avoidable or hard to miss.
* Disclosures need to be **clear and apparent** to the reader. In other words, you shouldn't have to search or click on a link in order to see it. For example, although placing your disclosure in your website footer meets the requirement of having one, it may be hard to find and thus will not meet the requirement of being displayed clearly and conspicuously.
* If you include your endorsement and/or link in any social media posts, **you must include the FTC disclosure**. You can use hashtags to disclose your relationship like #KajabiPartner or #Ad.
* If you are reposting a video, you must make sure the subsequent videos also include the required disclosures.
* If using video, the disclosure should be present in **both audio and written form**, and not just in the text description.
* Disclosures should **always** be added, even in cases where space is limited.
* Disclosures should be in the **same language** as the endorsement.
* If posting from outside the United States, U.S. law applies if it's reasonably foreseeable that the post will affect U.S. consumers. Foreign laws might also apply, please consult counsel in your local jurisdiction.
## FTC disclosure examples
If you're not sure what to put as your disclosure, here are some examples you can use:
* "I partner with Kajabi and may receive a commission if you sign up through my link."
* "This post contains affiliate links."
* "Paid partnership with Kajabi."
Here are a few "Do's" and "Don'ts" from the FTC:
* Do clearly disclose when you have a financial or family relationship with a brand.
* Do ensure your sponsorship is hard to miss.
* Do treat sponsored tags, including tags in pictures, like any other endorsement.
* On image-only platforms like Snapchat, do superimpose disclosures over the images.
* Don't assume followers know about all your brand relationships.
* Don't assume disclosure built into social media platforms is sufficient.
* Don't use ambiguous disclosures like "Thanks," #collab, #sp, #spon, #affiliate or #ambassador.
* Don't rely on disclosures that people will see only when they click "more".
When in doubt, visit the following links or reach out to the FTC directly:
* [FTC Endorsement Guidelines](https://www.ecfr.gov/cgi-bin/text-idx?SID=701066299822530421fece37367c91d3\&mc=true\&node=pt16.1.255\&rgn=div5)
* [The FTC's Endorsement Guides: What People Are Asking](https://www.ftc.gov/business-guidance/resources/ftcs-endorsement-guides-what-people-are-asking#social)
* [Disclosures 101 for Social Media Influencers](https://www.ftc.gov/business-guidance/resources/disclosures-101-social-media-influencers)
* [FTC Online Advertising Disclosure Guidelines](https://www.ftc.gov/sites/default/files/attachments/press-releases/ftc-staff-revises-online-advertising-disclosure-guidelines/130312dotcomdisclosures.pdf)
# Tips for Kajabi Partners
Source: https://help.kajabi.com/articles/resources/kajabi-partner-program/helpful-tips-for-kajabi-partners
Discover effective strategies for promoting Kajabi and earning referral commissions.
Whether you're recommending Kajabi to your audience or embedding it into client work, these tips help you promote with purpose and earn commission while doing it.
## Tips for referring someone to Kajabi
### Easy ways to share
* [Host an interactive Q\&A](../../products/community/host-live-rooms-and-events-in-your-community) focused on building or scaling an online business with Kajabi. Top-performing partners use live demos or screen shares to visually showcase Kajabi in action—helping their audience quickly understand the power of the platform. For best results, highlight just one or two key features to keep the message clear and avoid overwhelming your viewers.
* **Add Kajabi to your "Tools I Use"** or "Resources" page and include a short description of how it helps your business run.
* [Share your Partner link](./how-to-create-share-partner-campaign-links) as part of the tools and resources you recommend.
* **Add your partner link** to the [Premier sidebar of your Course Products](/articles/products/courses/how-to-customize-your-course-product-with-premier).
* **Include your partner link** in the signature line of your emails with a call-to-action like "Curious how I run my business? Kajabi is the platform I use."
* **Talk** with clients, friends, or peers who are ready to take the leap into digital business and recommend Kajabi one-on-one.
* **Repost Kajabi's social media posts.** Get your community excited about the platform:
* [Facebook](https://www.facebook.com/kajabi)
* [Twitter](https://www.twitter.com/kajabi)
* [Instagram](https://www.instagram.com/kajabi)
Head to your Partner Dashboard to grab your unique referral link and start sharing today:
[Take me to my Partner Dashboard](https://app.kajabi.com/admin/kajabi_partner_dashboard)
## Social media
Social media is where visibility meets authenticity—and that's where your Kajabi story shines.
Here are a few modern social strategies that work well for affiliates and service providers alike:
* **Create a Mini-Series or Content Pillar.** Build a repeatable series—like "Business Tools I Love" or "How to Launch a Digital Product"—and mention Kajabi naturally throughout. Use Reels, carousels, or short videos to walk through features and link out with a CTA.
* **Go Behind-the-Scenes:** People love seeing what platforms others actually use. Give a tour of your Kajabi setup or share a "day in the life" of building a site or launching a course.
* **Pin It & Highlight It:** Pin a Kajabi-focused post to the top of your feed or create a permanent "Kajabi" highlight on Instagram. Use this space to answer FAQs and show how people can get started.
* **Livestream or Host AMAs:** Answer common creator questions live and use it as an opportunity to mention Kajabi and how you support clients or your audience through it.
**Tip:**
Make your referral link accessible in your:
* Instagram Link in Bio (e.g. Linktree, Kajabi landing page)
* YouTube video descriptions
* LinkedIn profile link
* TikTok bio
Ready to start sharing? Head over to your Partner Dashboard to grab your partner link:
[Take me to my Partner Dashboard](https://app.kajabi.com/admin/kajabi_partner_dashboard)
## Email marketing
If you're already leveraging email marketing in your business, then you're just a few clicks away from increasing your referral income.
### Email strategies to get started
* **Mention Kajabi casually in newsletters** where you talk about how you run your business, launch products, or manage clients. Sprinkle in mentions of the ways Kajabi helps you.
* **Build an evergreen email funnel** around "How to Start a Digital Business" and position Kajabi as the platform to do it with. Offer exclusive bonuses—like a free resource, private training, or onboarding guide—for subscribers who sign up through your link.
* **Use automations** to send your Kajabi link after someone downloads a freebie, attends a webinar, or expresses interest in building an online business.
### Add referral links to email touchpoints
Add your Kajabi referral link to:
* Email footers and signature lines
* Launch sequences and nurturing campaigns
* Welcome sequences for new members
Start sharing now—get your referral link from the [Partner Dashboard](https://app.kajabi.com/admin/kajabi_partner_dashboard)
[Don't have an email list? Learn how to build one here.](../../marketing/email-campaigns/how-to-subscribe-contacts-to-an-email-sequence)
# Access managed sites in the Partner Dashboard
Source: https://help.kajabi.com/articles/resources/kajabi-partner-program/how-to-access-managed-sites-in-your-partner-dashboard
View and manage all Kajabi sites where you are a collaborator from the Partner Dashboard.
The **Managed Sites** section gives you a centralized view of all the Kajabi sites you actively manage as a service provider. Whether you support clients with web design, development, marketing, or platform setup, this section helps you stay organized and quickly access your clients' sites.
## Access managed sites
1. From your Kajabi Dashboard, click your account icon in the top right corner.
2. Select **Partner Program** to open your Kajabi Partner Dashboard.
3. Select **Sites** from the navigation side menu.
4. Here, you'll be defaulted into the **Managed Sites** tab.
5. This is where all sites will be listed where you've been added as a **Collaborator.**
This section is updated automatically as you gain or lose access to client sites.
## What you'll find in managed sites
The **Managed Sites** section is designed to streamline how you view and access client projects within Kajabi. Here's what you'll find:
* **Site Name**: The name of each Kajabi site you're managing.
* **Site Owner**: The client who owns the site.
* **Role**: Your assigned role (Collaborator).
* **Status**:
* **Active**: 90 days remaining
* **Pending**
* **Deactivated**
* **Archived**
* **Log In**: Use this button to instantly log into your client's site.
* **Request access or build site**: Use this button to request access to a client's site.
* You can filter your list of client sites via Active, Pending, Deactivated & Archived.
## FAQs
### How do I get a site to show up in this section?
You must be added as an Administrator on the client's Kajabi site. Click the **Request access** or **build site** button. Input the email address associated with your client's Kajabi account and personalize the message.
### Can I remove a site from this list?
If you no longer manage a site, you can use the "..." to remove access. Once removed, it will no longer appear here.
# Become a Kajabi Partner
Source: https://help.kajabi.com/articles/resources/kajabi-partner-program/how-to-become-a-kajabi-partner
Apply for the Kajabi Partner Program and start earning commissions by referring Heroes.
The Kajabi Partner Program lets you earn commissions by referring Heroes to Kajabi. Share proven marketing campaigns with your audience, and get paid when they sign up and stay.
[Learn more about the commission structure](./partner-program-overview).
## Application
If you are an existing Kajabi Hero (you have an active Hero account): Apply to be a Kajabi Partner directly from your account:
1. Open your **User Menu** by clicking the account icon located in the top right corner of your Kajabi Dashboard.
2. Select **Partner Program.**
3. Complete and submit the application.
**Note:**
Read the [Kajabi Partner Program Agreement](https://kajabi.com/policies/partner-program-terms) for full program terms. Applications are accepted only from Kajabi Heroes with an active account.
## Partner dashboard
After signing up for the Partner Program, you'll be sent to your Partner Dashboard:
In your Partner Dashboard, you can review the Partner Leaderboard, view your Partner Status, create Partner Campaigns to share with your audience, and track your referrals and payouts.
[Learn more about your Partner Dashboard](./how-to-view-your-partner-dashboard)
## Partner payouts
When signups occur, there is a 60-day hold starting on the date of the referral's payment. Then, once the 60 days have passed, the commission is paid out on the next 25th of the month (or the next business day if the 25th falls on a weekend or holiday).
# Create a development site in the Partner Dashboard
Source: https://help.kajabi.com/articles/resources/kajabi-partner-program/how-to-create-a-development-site-in-your-partner-dashboard
Build, test, and showcase client work using development sites in the Partner Dashboard.
**Development sites** give Kajabi Partners a free space to experiment with features, build templates, and demo potential client solutions, all without affecting a live site. Sites remain in development until transferred to the Hero who will own them.
Use development sites to:
* **Build Client Prototypes**: Create mockups or templates to share with leads.
* **Test New Features**: Try out platform updates before using them on client sites.
* **Develop Efficient Workflows**: Build and refine your internal processes.
**Note:**
You will not be able to collect contacts or emails, access the branded app or analytics, or sell products from a development site. You will also not be able to access certain settings.
## Access development sites
1. Log in to your Kajabi Partner account.
2. Select **Sites** from the navigation side menu.
3. Click **Development** to view your Development sites.
4. Click **Create** to create a development site.
## Key details
* **Free Access**: Development Sites are free for Partners and do not expire.
* **No Selling**: These sites are for demo and development purposes only—selling products or collecting payments is not allowed.
* **Status**:
* In Development: Currently building a site
* Pending: Sites that are waiting for the client to accept the site transfer. Once transferred, the site cannot be returned again.
* Transferred: Sites that have been successfully transferred to a client.
* **Edit**: Use this button to instantly log into your development site. You will know it's in development by a blue banner at the top.
* **Request access or build site**: Use this button to build a site.
* You can filter your list of client sites via In Development, Pending & Transferred.
* You can also search by development site title as well.
## FAQs
### Can I upgrade a Development Site to a full Kajabi plan?
As a Kajabi Partner/Agency, you can transfer ownership to:
* Clients who do not have a Kajabi account, however, they will have to create an account before they can accept the site transfer
* Clients with a Kajabi account, but they will need to be within their plan limits
When a site transfer is initiated by a Kajabi Partner, the future owner of the site (aka your client) will receive an email with instructions to accept the transfer.
### Can I use these sites to run my own business or sell products?
No, Development Sites are strictly for demo and development purposes. Selling products is not permitted on those sites. Development sites can be/are built to be sold and transferred to clients.
# Create a referral signup email
Source: https://help.kajabi.com/articles/resources/kajabi-partner-program/how-to-create-a-referral-signup-email
Send an automated welcome email to people who sign up for Kajabi using your Kajabi Partner referral link.
The **Referral Sign up Email** is automatically sent to someone who creates a new Kajabi account using your Partner referral link. Use it to welcome your new Kajabi referral and deliver any promised bonuses, such as a downloadable file, Offer access, or a webinar link. This email is sent on your behalf and is separate from any emails you send to your own customers or contacts.
Add a personalized welcome message and a link to your bonus content. The system sends the email automatically on your behalf.
## Create a referral signup email
Welcome and deliver your promised bonuses to your Kajabi referrals by creating your referral signup email.
### Navigate to the Partner Dashboard
1. Open your User Menu by clicking the account icon located in the top right corner of your Kajabi Dashboard.
* If you do not have a Kajabi account, log in [here](https://kajabi.com/partnerprogram).
2. Select **Partner Program**.
### Create the referral signup email
1. Navigate to **Campaigns** from the left sidebar
2. Select a Campaign to edit or [create a new Campaign](./how-to-create-share-partner-campaign-links).
3. Locate **Sign up Emails** towards the top of the page under the Campaign title
4. Click **New Sign up Email**.
5. Select your **Campaign Link** to connect your signup email to a specific [campaign](./how-to-create-share-partner-campaign-links).
6. Enter your email **Subject** line.
7. Enter your message into the **Body** of your email.
8. Enter **CTA text** and **CTA link** if you would like a button to be included:
After creating your Referral Signup Email, referrals from your campaign will receive your signup email automatically.
## Delete a referral signup email
1. Open your **Partner Dashboard**.
2. Navigate to **Campaigns** from the left sidebar
3. Select the **Campaign** with the email you wish to edit
4. Locate **Referral Sign up Emails** towards the top of the page under the Campaign title
5. Click the (…) next to the **email** you wish to remove.
6. Click **Delete email.**
7. Confirm the permanent deletion.
# Create and share Partner Campaign links
Source: https://help.kajabi.com/articles/resources/kajabi-partner-program/how-to-create-share-partner-campaign-links
Generate campaign links, personalize referral funnels, and track campaign performance from the Partner Dashboard.
**Partner Campaigns** drive traffic to gain and track active referrals in your Partner Dashboard. This article covers how to create campaign links, personalize your campaigns, and track campaign performance.
## Partner Campaigns
The Campaigns tab in the Partner Dashboard provides a clear and organized way to track your performance as a Kajabi Partner.
At the top, it highlights key metrics that summarize your overall progress, including total clicks, trial sign-ups, active referrals, and total earnings. These give you a quick snapshot of how your promotional efforts are performing.
Beneath that, there's a searchable and sortable list of all your individual campaigns. Each campaign is displayed with:
* **Campaign title & preview image** – making it easy to identify at a glance.
* **Performance columns** – showing clicks, trials, activations, and earnings per campaign.
* **Links count** – indicating how many links are associated with each campaign.
* **Status badge** – marking whether a campaign is currently active or not.
You also have the option to filter campaigns by status (Active, Closed, or All), and there's a button to create a new campaign whenever you're ready to launch something new.
This layout makes it easy to manage multiple campaigns and quickly understand what's working and where improvement is needed.
## Create Partner Campaigns
To start sharing your Partner link for a specific campaign:
1. Open the Partner Dashboard and click **Campaigns** from the left sidebar.
2. Choose a Campaign that fits your audience best and click **Create Campaign** (Partners always have access to an extended 30-day trial).
3. Title your Campaign and click **Save**
4. Create a **bonus sign-up email**
5. Click **Copy Link** to grab your unique tracking URL.
6. Share your link in content, emails, or onboarding docs!
**Note:**
A campaign is subject to close or change at any time at the discretion of the Kajabi team.
**Tip:**
Use campaign-specific links to track where your referrals are coming from.
## Personalize Partner Program campaigns
The **Personalization Funnel** lets you customize your referral campaigns to highlight your story, achievements, and expertise. This builds trust with your audience and helps increase conversion rates and sign-ups.
**Note:**
We reserve the right to remove anything deemed offensive or discriminatory per our [Acceptable Use Policy](https://legal.kajabi.com/policies/aup) and [Partner Program Agreement](https://legal.kajabi.com/policies/partner-program-terms).
## Access the Personalization Funnel
1. Log in to your **Partner Program site**.
2. In the left-hand navigation menu, click **Campaigns**.
3. Select the **Personalization Funnel** tab.
4. Toggle ON **Enable Personalization Funnel.**
5. Begin uploading and creating content that highlights you in your referral funnel:
## Customizable pages
### Landing page
A top banner will be displayed at the top of your landing page, which can be customized.
On the landing page, you can:
* Upload a profile image or avatar
* Add your name
* Include your title
* Add a testimonial or quote.
### Checkout page
The right side section on the checkout page can be designed for your personalized content, such as:
* Up to three **Success Tips** (bullet points) can be added.
* All landing page personalization options are also available:
All fields are mandatory before saving. This ensures a complete, polished experience for your audience.
Currently, you may customize two campaigns:
* **Free 30-Day Trial**
* **Kajabi Homepage**
## What your audience will see
Your personalized content will appear:
* At the top of your landing page banner
* In the right section of the checkout page
This creates a cohesive, branded experience for your referrals.
## Campaign stats
When you click into a campaign, for example, "Kajabi Homepage", you will be taken to a detailed view that breaks down the performance of each individual campaign link associated with it.
At the top, you'll see the same summary-style metrics as the main dashboard, specific to that campaign:
* Total Clicks
* Trialing Referrals
* Active Referrals
* Lifetime Earnings
This gives you a glance at how well that campaign is doing overall.
Below that, there's a breakdown of all the custom links created under this campaign. Each row includes:
* **Link Title:** what you named the link (e.g., "Facebook group" or "Instagram post").
* **Clicks:** how many times that specific link has been clicked.
* **Trials:** how many trial sign-ups it generated.
* **Activated:** the number of users who became active referrals.
* **Link Icon:** for quickly accessing or copying the URL.
* **(⋯):** an option to edit the title of a link.
You can export the data of a specific campaign by clicking on **Export** in the top right corner:
# Track Partner referrals
Source: https://help.kajabi.com/articles/resources/kajabi-partner-program/how-to-track-your-partner-referrals
View all referred creators and their current status from the Partner Referral page.
The **Partner Referral** page shows all the creators you have referred to Kajabi and their current status. Use this page to track your referrals and monitor their progress from trial to active status.
## Access the Partner Referral page
The Partner Referral page is the best place for you to view your referred creators and check their current status.
To navigate to the Partner Referral page:
1. From the Kajabi Dashboard, click your **account icon** in the top right corner.
2. Select **Partner Program** to open your Kajabi Partner Dashboard.
* If you do not have a Kajabi account, login [here](https://kajabi.com/partnerprogram)
3. In the Partner Dashboard, click **See Referrals** to view your referrals and their statuses:
## Referral page
On the Referral page, you can view all your referrals along with their current status:
* **Trialing** – The referral is currently in their Kajabi trial period.
* **Active** – The referral has completed their trial and is now an active Kajabi user.
* **Cancelled** – The referral has cancelled their Kajabi subscription and is no longer active.
You can also customize your view on the Referral page by applying filters.
Available filter options include:
* Referral Signup Date
* Campaign
* Earnings
* GMV Tier
* Current Plan
* Products Created
## View referral details
To view more information about a specific referral:
1. Search for a specific referral by name using the search bar, or select the referral from the **Referral** page.
2. Click the **More Actions** button (**…**) next to their name.
You'll be able to see the following details:
* **Name** – The referral's full name.
* **Referral Date** – The date they signed up through your referral link.
* **Campaign** – The specific campaign they came from, if applicable.
* **Earnings** – The total amount you've earned from this referral.
* **Creator Earnings** – The referral's GMV (Gross Merchandise Value).
* **Current Plan** – The Kajabi subscription plan that the referral is currently on.
* **Status** – The referral's current status: *Trialing*, *Active*, or *Cancelled*:
## Refer someone
To refer someone to Kajabi right from the Partner Referral Page:
1. Click the **Refer Someone** button.
2. A pop-up menu will appear with everything you need to share your referral link.
In the pop-up, you can:
* Select the **Campaign** you want to use.
* View the **unique link** associated with that campaign.
* Easily **copy** the referral link to share with others:
# View the Partner Dashboard
Source: https://help.kajabi.com/articles/resources/kajabi-partner-program/how-to-view-your-partner-dashboard
Track referrals, view earnings, manage campaigns, and monitor partner tier status from the Partner Dashboard.
The **Partner Dashboard** is your central hub for managing your Partner Program activities. Here you can track referrals, view earnings, manage campaigns, and monitor your partner tier status.
## Access the Partner Dashboard
* Open your **User Menu** by clicking the account name located in the top right corner of your Kajabi Dashboard.
* If you do not have a Kajabi account, log in at [kajabi.com/partnerprogram](https://kajabi.com/partnerprogram).
* Select **Partner Program**.
**Note:**
The Partner site has a refreshed look. For any questions about the previous version, contact [partners@kajabi.com](mailto:partners@kajabi.com).
To return to your main Kajabi dashboard, click **Go back to Kajabi** at the bottom of the left sidebar.
## Partner Tier
The first card welcoming you to your Partner Dashboard, next to the Leaderboard, will indicate your Partner Tier within the commission structure.
This card will display your current **Partner Tier** and how many more users you need to refer until you reach your next tier. You will also see your cliff date:
**Note:**
A cliff is the inactivity threshold for partners. You must have at least 1 referral within a rolling 12 months of the cliff date to remain eligible for payouts.
## Referral stats
* **Total Clicks:** The number of visits that have been generated through your partner link.
* **Trialing Referrals:** Any user who is currently trialing and is NOT paying for their Kajabi subscription.
* **Active Referrals:** Any user who has completed their trial and is paying for their Kajabi subscription.
* **Churned Referrals:** Any user who has cancelled their Kajabi subscription and no longer has an active account.
Learn more about your [Referrals](/articles/resources/kajabi-partner-program/how-to-track-your-partner-referrals).
## Earnings
* **This month so far** – The sum of your earnings for \[current month] that are yet to be finalized. Earnings are paid out 2 months in arrears.
* **Last month** – The sum of your earnings from \[month] that are yet to be finalized. Earnings are paid out 2 months in arrears.
* **Next payout** – Your next payout will be on \[Month] 25th for transactions from \[Month]. Payouts are paid 2 months in arrears. See terms for more details.
* **Lifetime earnings** - The total amount of earnings you have been paid out by Kajabi.
Learn more about [Payouts](/articles/resources/kajabi-partner-program/partner-payout-report-partner-transaction-report).
## Most recent campaigns
Drive traffic to Kajabi with **Campaigns** and start gaining active referrals in your Partner Dashboard.
From your dashboard, you can see the data and results of your most recent campaigns. You can quickly grab referral links for your most recent campaigns or grab a general referral link from the top right corner of your Partner Dashboard:
Each campaign will come with a **Campaign Brief** which will contain:
* Commission breakdown
* Benefits for joining the campaign
* Sample email copy
* Creative assets to use for ads and other promotional pieces
* Kajabi Style Guide
Learn to [create your Campaign Link](/articles/resources/kajabi-partner-program/how-to-create-share-partner-campaign-links) to begin sharing with the world.
**Note:**
A campaign is subject to close or change at any time at the discretion of the Kajabi team.
# Kajabi Partner Program FAQs
Source: https://help.kajabi.com/articles/resources/kajabi-partner-program/kajabi-partner-program-faq
Find answers to common questions about partner tiers, commissions, payouts, and account eligibility.
Tier rules, commission rates, payout timing, and eligibility for the Kajabi Partner Program are explained below. For full program terms, see the [Partner Program Agreement](https://kajabi.com/policies/partner-program-terms).
## General
### What is a Kajabi Partner?
As a Kajabi Partner, you refer clients to Kajabi and provide them with the tools they need for their online business.
The Kajabi Partner Program offers a scalable commission structure based on your impact and engagement. As your referrals grow, so does your earning potential.
### Do I need to be a Kajabi customer to become a partner?
Yes. At this time, the partner program application is only open to Kajabi Heroes.
### What if I believe I've been incorrectly deactivated or underpaid?
Please contact [partners@kajabi.com](mailto:partners@kajabi.com). We'll review your account and help resolve any issues.
## Tiers & commissions
### What are the different partner tiers?
Partners can earn increasing commissions as they move up tiers based on the number of active referrals. [See the tier breakdown here](/articles/resources/kajabi-partner-program/partner-program-overview).
### How is my tier determined?
Your tier is based on how many active referrals you have. An active referral is a Hero who:
* Completed their trial
* Has an active, paid subscription
* Is not on a parked plan or experiencing payment issues
### Do tiers change automatically?
Yes. Your tier will automatically update as referrals activate or churn. When it's time for payouts, we look at the tier you were in *during the month the transaction occurred*, not your current tier. For example, payouts in June are based on your tier from April.
## Inactivity cliff
### What is the "cliff"?
If you go 12 months without generating 1 *new* referral (not reactivation), you'll hit the inactivity cliff.
### What happens when I hit the cliff?
You'll lose eligibility to earn commissions. If you're a grandfathered partner, you'll also lose your 30% legacy commission rate and move into the tiered structure.
### Can I reactivate my partner status after hitting the cliff?
Yes. To reactivate, you must refer a *new* Hero—someone who has never been referred to Kajabi before. This does not include Heroes who were previously referred and later reactivated, or who moved from a parked to an active subscription. Once reactivated, your tier will be based on your current count of active referrals.
## Grandfathered partners
### What happens if I cancel my Kajabi subscription but still want to be a partner?
You'll need to email [partners@kajabi.com](mailto:partners@kajabi.com) to switch to the standalone partner program.
**Note:**
You will no longer receive the 30% grandfathered commission, and this change is not retroactive. You won't receive 30% on past or future transactions once the switch is made, even if they occurred while you were still eligible.
## Payouts
### When are payouts made?
Payouts are reviewed between the 19th–23rd of each month and are typically issued by the 25th. They cover transactions from roughly 60 days prior.
For example, you'll receive your April payout around April 25th for transactions that occurred in February.
### What do partners earn commission on?
Only on active base plan subscriptions. Add-ons, Kajabi Payments, or Feature Limit Increases (FLIs) are excluded. Parked is not considered an *active* base plan and, therefore excluded from payouts.
### What if my tier changes before a payout?
You'll be paid based on the tier you were in during the referral month, not the payout month.
If your active referral count drops halfway through the month, we will default to the higher tier for that month to ensure you're paid fairly.
### What happens if I referred someone in the past who reactivated their subscription?
You won't be reactivated unless you refer someone *new*. Renewals of old referrals don't count for reactivation or cliff extensions.
### What if my PayPal email is incorrect?
You'll need to correct this ASAP. If we can't pay you within 90 days, your payout will be forfeited to prevent long-term liability.
Learn how to [update your PayPal email here](/articles/resources/kajabi-partner-program/updating-your-partner-paypal-email).
### My referral forgot to use my Partner link when they signed up, how do I get credit for them?
You can advise them to send an email to [partners@kajabi.com](mailto:partners@kajabi.com) requesting that you receive credit for their account. The Partner team will then be able to look into manually associating them with your account.
### Does my commission change if my referral upgrades their Kajabi Subscription from monthly to annual?
Your commission rate stays the same. It's still your tier's percentage (10%, 15%, or 20%), applied to each subscription payment your referral makes. Switching between monthly and annual only changes how often that commission is paid out:
* **Annual plan:** When your referral pays for an annual plan, you receive your tier's percentage of that single payment, paid out once per year.
* **Monthly plan:** When your referral pays monthly, you receive your tier's percentage of each monthly payment, paid out each month.
You do not receive the full annual subscription amount. You receive your tier's percentage of it.
If you're a Starter Partner earning a bounty (rather than recurring commission), the bounty equals 100% of the referral's first month of subscription payment. For an annual referral, the bounty equals one month of that annual plan's value, not the full annual amount.
### Will Kajabi send me tax forms for my Partner payouts?
No, Kajabi does not provide tax forms for your Partner payouts. Since Kajabi uses PayPal to send Partner payouts, questions regarding tax forms should be directed to PayPal.
Visit [PayPal's Help Center](https://www.paypal.com/us/smarthelp/home) for more information.
### Will Kajabi send me receipts or invoices for Partner Payments?
No, Kajabi does not send receipts or invoices for Partner payouts. Depending on your account settings in PayPal, you may receive emails or notifications when you receive payments from Kajabi. Visit [PayPal's Help Center](https://www.paypal.com/us/smarthelp/home) for more information.
## Bounty vs. commission
### What is a "bounty"?
A bounty is a one-time payment for a qualifying new referral when the partner is in the Starter tier and not yet earning ongoing commissions. The bounty equals **100% of the referral's first month of subscription payment**. If the referral is on an annual plan, the bounty equals one month of that annual plan's value, not the full annual subscription amount.
### Can I earn a bounty *and* commission on the same referral?
No. Once a bounty or commission has been paid for a referral, that referral is no longer eligible for another payout type.
# Partner Payout Report and Partner Transaction Report
Source: https://help.kajabi.com/articles/resources/kajabi-partner-program/partner-payout-report-partner-transaction-report
Track monthly earnings and understand payout statuses using the Partner Payout and Transaction Reports.
The **Partner Payout Report** and **Partner Transaction Report** give you complete transparency into your Partner earnings. Use them to review monthly payout summaries and drill down into the details of individual transactions.
## Payout Report overview
There are 2 reports related to your Partner payout information:
1. **Payout Report:** Provides a summary of monthly earnings, including payout dates and the status of each month's earnings.
2. **Transaction Report:** Offers a detailed view of all successful transactions for a specific month.
These reports are designed to help you track your progress, understand the status of each payout, and build confidence in the payout process.
## Access the Payout Reports
1. Log in to your Kajabi Partner account.
2. If you do not have a Kajabi account, log in [here](https://kajabi.com/partnerprogram)
3. Select **Payouts** from the main navigation menu.
Within the Payouts section, you'll find:
* The **Payout Report** with summary tiles and a monthly summary table.
* By clicking into a specific month you will see the **Transaction Report**.
Each report is designed for ease-of-use, with tooltips providing additional context for each statistic (e.g., "Next Payout" explains that payouts are issued on the 25th of each month for transactions from two months prior).
## Payout Report
The Partner Payout Report summarizes your monthly earnings and payout statuses in an easy-to-read format.
**Note:**
The Payouts tab only shows reports from February 2025 onward.
### What it shows
The summary tiles include:
* **Next payout** – Your next payout will be on \[Month] 25th for transactions from \[Month]. Payouts are paid 2 months in arrears. See terms for more details.
* **This month so far** – The sum of your earnings for \[current month] that are yet to be finalized. Earnings are paid out 2 months in arrears.
* **Last month** – The sum of your earnings from \[month] that are yet to be finalized. Earnings are paid out 2 months in arrears.
* **Lifetime earnings** – The total amount of earnings you have been paid out for by Kajabi.
Each month's summary includes:
* **Transaction Month:** The month during which the transactions occurred.
* **Payout Date:** The scheduled date when payouts are processed (typically the 25th of the month).
* **Total Transactions:** The number of qualifying transactions for that month.
* **Tier & Commission:** Your current tier and the total commission earned.
* **Status:** The payout status for the month.
### Status definitions
The status of each month's earnings can be one of the following:
* **Pending:** Transactions are still in the mandatory waiting period and have not finalized.
* **Holding Period:** Your Partner tier is locked, but the transaction waiting period hasn't yet elapsed.
* **Pending Payout:** The waiting period has cleared, and the payout is finalized but awaiting processing.
* **Paid:** The payout has been successfully processed and sent.
## Transaction Report
### What it shows
For each transaction in a selected month, the report displays:
* **Referral Name:** The name of the person who made the purchase.
* **Transaction Date:** When the transaction occurred.
* **Subscription Cost:** The cost of the referral's subscription.
* **Commission %:** Your commission percentage.
* Note that the commission percent is tied to your partner tier for the month that the transaction occurred.
* **Commission Amount:** The dollar amount earned for that transaction.
* **Status:** The current status of the transaction, which may be:
* **Pending:** The transaction is still within the mandatory waiting period.
* **Approved:** The waiting period has passed and the commission is confirmed.
* **Refunded:** The referral has received a full or partial refund.
**Note:**
The report only includes successful, paid transactions from referrals who were active during that month. It does not display parked transactions or purchase amounts of Add-ons or Feature Limit Increases.
# Partner Program overview
Source: https://help.kajabi.com/articles/resources/kajabi-partner-program/partner-program-overview
Explore commission tiers, partner types, and program benefits available through the Kajabi Partner Program.
The **Kajabi Partner Program** gives content creators, freelancers, and agencies the tools and support to grow their businesses through referrals and commissions. Whether you're recommending Kajabi through your content or building client sites directly, you can customize how you share Kajabi based on your audience, services, or business goals.
**Note:** Looking to connect with vetted third-party Kajabi service providers to help you with your Kajabi site, email campaigns, and more? Check out [Kajabi Experts](https://contra.com/kajabi?view=people).
## What kind of partner are you?
Kajabi supports two types of partners: **Affiliates** and **Agencies/Freelancers**. Here's how they differ:
### Affiliates
Affiliates share Kajabi with their audiences through content, courses, or social channels. This is a great fit if you're a creator, educator, or influencer who wants to generate passive income by recommending a tool you believe in.
#### **Best for:**
* YouTubers, podcasters, and bloggers
* Coaches, educators, and course creators
* Influencers with engaged digital communities
#### **How you earn:**
* Share Kajabi using your referral link
* Earn recurring commissions when someone you refer becomes a paying Kajabi Hero
#### **What you get:**
* Partner Dashboard to track referrals and commissions
* Promo assets and branded Kajabi campaigns
* Ongoing commission as long as you and your referral remain active
### Service Providers - Agencies and Freelancers
Agencies and freelancers work hands-on with clients to build, launch, and grow their Kajabi sites. This track is ideal if you offer services like web development, digital marketing, funnel strategy, or business coaching.
**Best for:**
* Web developers, funnel builders, brand strategists
* Consultants, instructional designers, and SEO specialists
* Agencies managing multiple Kajabi clients
**How you earn:**
* Refer clients to Kajabi using your unique link
* Earn recurring commissions as clients stay active
* Offer your own paid services (e.g. site builds, coaching, marketing)
**What you get:**
* Partner Dashboard to manage projects and track commissions
* Developer accounts to build and hand off client sites
## Partner commission
The Kajabi Partner Program offers a scalable commission structure based on your impact and engagement. As your referrals grow, so does your earning potential.
### Commission tiers
| Tier | # of Active Referred Heroes | Earnings type | Commission rate | Applies to |
| ----------------------- | --------------------------- | ---------------------------- | ---------------------------------------------------------- | ----------------------------- |
| **Starter Partner** | 1-4 | One-time bounty per referral | 100% of the referral's first month of subscription payment | Each new active referred Hero |
| **Builder Partner** | 5-24 | Recurring commission | 10% of each subscription payment | All active referred Heroes |
| **Accelerator Partner** | 25-49 | Recurring commission | 15% of each subscription payment | All active referred Heroes |
| **Premium Partner** | 50+ | Recurring commission | 20% of each subscription payment | All active referred Heroes |
**Note:** The Starter Partner bounty equals 100% of the referral's first month of subscription payment. For referrals on an annual plan, the bounty equals one month of that annual plan's value, not 100% of the full annual subscription. Once a referral has earned a bounty or commission, that referral is not eligible for the other payout type.
#### Bounty payments (Starter tier)
If you're in the Starter Partner tier, you earn a **one-time bounty payment** for each referral who becomes an active Kajabi Hero. The bounty equals 100% of the referral's first month of subscription payment. If the referral is on an annual plan, the bounty equals one month of that annual plan's value, not the full annual amount.
For full program terms, see the [Partner Program Agreement](https://kajabi.com/policies/partner-program-terms).
#### Recurring commission (Builder tier and beyond)
Once you reach the Builder tier and beyond, you'll earn a **percentage of every subscription payment** your referred Hero makes, at the rate listed in the table above, for as long as the referral and your partner account remain active.
## Key Partner Benefits
The Kajabi Partner Program is designed to help you thrive. As a partner, you'll have access to exclusive tools, resources, and opportunities tailored to your unique business model.
* Recurring commission on every active referral
* Partner Dashboard to manage referrals, earnings, and client projects
* Developer accounts to build and transfer Kajabi sites seamlessly
* Ready-to-use marketing campaigns and branded assets to make promotion easy
* Ongoing support and recognition from Kajabi as a key player in the ecosystem
## Join the Partner Program
Whether you're sharing Kajabi with your audience or building digital businesses for clients, the Kajabi Partner Program is designed to help you grow and earn.
Sign up today to get access to your Partner Dashboard, marketing tools, and everything you need to start referring, managing, and earning.
[**Apply to become a Kajabi Partner**](https://app.kajabi.com/admin/kajabi_partner_signup)
# Partner Terms and Services FAQs
Source: https://help.kajabi.com/articles/resources/kajabi-partner-program/updated-partner-terms-services-faqs
Find answers to common questions about how the Partner Program Terms and Services affect you and your business.
The **Kajabi Partner Program Terms and Services** outline rules for commissions, advertising, and account status. Below are answers to common questions about how these terms affect you and your business.
## FAQs
### What will happen to my existing commissions under this agreement?
You'll still receive the commission through PayPal after the 60-day hold.
### Is all paid advertising now off-limits to me as a partner?
No, you can still run paid ads under the agreement. But there are restrictions: You can't link directly to any Kajabi-owned site. You also can't run ads that include your direct partner link or use any Kajabi keywords.
Here's an example of a paid media campaign you could run: Sending paid traffic to your own page titled "How to choose the right online course platform for you" and including your Kajabi partner link inside that page.
### So if I have a blog with my Partner link on it, can I still run ads to it?
Yes, as long as you're not using Kajabi in the keywords and the page you're running ads to is your own.
### If I cancel my own Kajabi account, can I still get commissions as a Partner? What happens if I cancel and reactivate?
No, you must maintain an active Kajabi account to make referrals and get commissions as a partner. If you cancel your account, you forfeit any further commissions. If you re-activate later, you'll be starting from scratch as a Partner.
### What happens if one of my active referrals cancels their account and then signs up again later?
It depends on how they sign up. If your referral cancels and reactivates their existing account, you will get a commission. However, if your referral cancels and signs up with a new account you will not get the commission. To receive the commission for a referral that cancels and signs up with a new account, your referral will need to sign up with one of your Partner links again.
### What happens if one of my active referrals is past due on their Kajabi subscription payments?
If there is a delay in a referral's Kajabi subscription payment, there will also be a delay in the Partner commission.
### What are the specific "Kajabi Keywords" that I cannot use in an ad campaign?
You cannot use the word Kajabi when bidding for keywords. For example: "Kajabi courses" would not be allowed but "online course builder" would be.
# Update the Partner PayPal email
Source: https://help.kajabi.com/articles/resources/kajabi-partner-program/updating-your-partner-paypal-email
Change the PayPal email associated with Partner payouts to receive commissions at a different PayPal account.
Partner commissions are received through the PayPal email associated with your Kajabi account. You can update this email at any time to receive payouts to a different PayPal account.
**Note:**
Updating the PayPal email is only available to the account owner. [Learn more about Account User Roles and Permissions](/articles/account-settings/users/account-users#admin-roles).
## Change the PayPal email
1. Open the **Settings** tab from the Dashboard.
2. Scroll down to the **Account settings** section.
3. Click **Account Details**.
4. Locate the **PayPal email**.
5. Enter your preferred PayPal email address.
6. Click **Save** to keep your changes:
# Use the Template Store and upload a template
Source: https://help.kajabi.com/articles/resources/kajabi-templates/how-to-use-kajabis-template-store-upload-your-template
Browse the Template Store for professionally designed templates and upload them to your Kajabi site.
## Overview
The Template Store helps you get a jumpstart with your business by providing beautiful, functional, and ready-to-launch templates tailored to your needs.
## Template Store
The templates available in the Template Store are created and designed by Kajabi Experts to give you beautiful designs to engage your site visitors and customers. Every template in the Template Store is vetted and approved by Kajabi to ensure compatibility and safety on your site.
Every template comes with an accompanying PDF with the resources needed and the template vendor's contact information for your convenience.
## Navigate the Template Store
To access the Template Store:
1. Open **Store** from your Kajabi Dashboard.
2. Select **Custom Templates**.
3. Browse the Template Store to find the template that best fits your vision:
## Upload a template
After purchasing your template, upload it to your site:
1. Click the link in your "Downloads is Ready" email.
2. Click **download now** once the page opens.
3. Go to your "Downloads" folder.
4. Double-click the zip file to enter your download. This will populate another folder.
5. Click into that folder to find the zip file you will upload into the customize section of your product on Kajabi:
# Template customer FAQs
Source: https://help.kajabi.com/articles/resources/kajabi-templates/template-customer-faqs
Frequently asked questions about purchasing and using templates from the Template Store.
## Overview
Have questions about the Template Store? Here are answers to frequently asked questions if you are purchasing a template.
## FAQs
### How do I upload my template?
[Learn to navigate the Template Store and upload your template](./how-to-use-kajabis-template-store-upload-your-template).
### Do I need to know how to code to install a template?
No, you do not need to know any coding. Simply upload the .zip file and make any edits as you would on a normal Kajabi page or product.
### How will I get the template to upload to my Kajabi site?
When you purchase the template, you will be emailed with instructions on how to download the template.
### How many templates can I purchase for my Kajabi site?
You can purchase as many templates as you wish to accomplish the look and feel of your desired Kajabi landing page, website, or product.
### Who do I contact if I need support on my template?
You can message the template developer from whom you purchased the template for additional support:
### Will there be additional template categories released in the future?
Yes, as the Template Store continues to build its offerings, additional categories, such as funnels, bundles, and more, will be available.
### What if the template I purchased has a bug or needs updating?
You can message the template developer from whom you purchased the template for additional support.
### Can I get a refund on a website template I purchased?
No. Due to the digital nature of website templates, **all sales are final**. Once the template files have been delivered, refunds, exchanges, or cancellations cannot be offered.
# Template developer FAQs
Source: https://help.kajabi.com/articles/resources/kajabi-templates/template-developer-faqs
Frequently asked questions about providing templates to the Template Store.
## Overview
Have questions about providing templates to the Template Store? Here are answers to frequently asked questions to help you get started.
## FAQs
### What is the benefit of selling on the Kajabi Template Store?
Selling on the Kajabi Template Store:
* Gets you more visibility
* Puts more eyes on your designs and business
* Places you in front of an ideal audience
### What is the take rate of the Template Store?
The take rate is 10% + transaction fees on each template sale.
### What type of templates can I sell in the store?
You can submit:
* Landing page
* Website theme
* Product theme
### What are the requirements for the templates?
The requirements for templates can be found in [Template tips for template developers](./template-tips-for-template-developers).
### Who is responsible for the customer service of each template?
The template developer is responsible for any bugs or customer service needs that may arise with the purchase of their template.
###
# Create standout Template Store templates
Source: https://help.kajabi.com/articles/resources/kajabi-templates/template-tips-for-template-developers
Apply best practices and meet submission requirements for templates that Heroes love.
## Overview
Providing templates in the Template Store? These tips help you create templates that stand out, meet approval criteria, and deliver real value to the Heroes who use them.
## Understand what Heroes look for
Heroes purchasing templates want a simple solution to their tough design challenges. Many know how they want their brands to look but cannot achieve it with their current level of design skills. This is where you come in.
**Note:**
As a template provider, you are responsible for answering customer questions and fixing any bugs that may arise.
## Template criteria
When a template is submitted, the Approval team looks for the following requirements:
* Template is uploadable
* **Documentation link** - Include documentation within the template upload if your template needs extra instructions
* Ability for video/audio upload
* **Editor buttons** - Undo, redo, save, preview
* Global settings
* Image upload
* Video/audio upload
* Section/block reordering and cloning
**Important:**
It does not matter where you build the template, whether in the Kajabi Code Editor, a separate text editor, or a builder. However, each template must have updated settings information. See the steps below to update your template settings information.
### Update template settings information
1. Open the Code Editor for your template type (e.g., Website, Landing, or Product Page). [Learn to access the Code Editor](../../website/pages/how-to-access-the-code-editor).
2. Open the **Config** folder.
3. Locate the **Theme Name**, **Author information**, **Documentation link**, and **Support URL** to update:
4. Click **Save** to keep and apply your changes.
If you have additional materials, provide documentation to support the customer during the install of your template.
**Note:**
Make sure that all images are royalty-free and you have the rights to use them within your template.
## Template type requirements
### Website
If you are providing a Website template, ensure that your template includes the following:
* Ability to add website pages
* Page navigation
* Pages that show as System or Draft/Published
### Product
If you are providing a Product template, ensure that your template includes the following:
* Page navigation
* Library navigation
* User settings navigation
## Third-party theme upgrade via zip
**Note:**
This feature is currently in beta and is being tested by a select group of Heroes. If you have questions or concerns about this feature, reach out to [support@kajabi.com](mailto:support@kajabi.com).
This feature allows Heroes who have purchased third-party themes to update their themes with .zip files you provide, without reinstalling or copying over settings via the Code Editor. The following guidelines outline how this feature works:
* Any custom code installed through the [Kajabi Code Editor](../../website/pages/how-to-access-the-code-editor) will not be copied over
* Any custom code installed through the Kajabi Builder will be copied over
* Any settings in .json, such as fonts, style guides, etc. will be copied over
* Any previous changes to sections and blocks will be copied over
* Ensure you upload the same theme file, or your file may be corrupted. For example, upload the same website theme, landing page theme, etc. for updates. Do not mix and match these files.
**Note:**
If you are currently using the standard theme update process to let customers who purchased your themes update them, you do not need to change your workflow.
Follow the naming convention best practices below to enable Heroes who have purchased your theme to update their themes.
### Configure your theme file for update from zip
To trigger the Update from Zip feature, use the guidelines below for two key elements stored in the settings\_schema.json portion of your theme file. The combination of correct "theme\_name" and "theme\_version" triggers the update from zip UI for your customers.
### theme\_name
If you want to trigger an upload from zip UI, do not use the following names in your "theme\_name" in the settings\_schema.json file of the theme.
**Website:**
* Encore
* Premier
**Product:**
* Momentum
* Premier
* Lagunita
* Warren
* Taylor
* Mist
* Classic
* Dive
* Derby
* Primo
* Slate
* Next
**Landing Page:**
* Encore
* Premier
### theme\_version
If you want to trigger an upload from zip UI, use the following naming rules for "theme\_version":
* **Landing Pages** - Text + Your Version Number (do not use version numbers listed below)
* **Web** - Text + Your Version Number (do not use version numbers listed below)
* **Product** - Text + Your Version Number (do not use version numbers listed below)
These are the rules as they relate to "theme\_version" that are used for showing the internal theme update flow. If you want your theme to show the update from zip flow, make sure your theme *does not* satisfy these rules:
**Website:**
* Encore - "0.4.0", "0.4.1", "1.0.0", "1.0.0-gm", "1.0.1", "1.1.0", "1.1.1", "1.1.2","1.1.3", "1.2.0", "1.2.1","1.3.0", "1.3.1","1.3.2","1.3.3", "1.4.0","1.4.2", "1.4.3","1.0.0-GM","1.5.0","1.5.1","1.5.3", "1.5.4", "1.5.5", "1.5.6", "1.6.0", "1.7.0"
* Premier - "6.1.4", "6.2.0"
**Product:**
* Momentum - "6.1.1", "6.1.2", "6.1.3", "6.1.4", "6.2.0", "6.3.0", "6.4.0", "6.5.0", "6.5.1", "6.5.2", "6.6.0", "6.6.1"
* Premier - "7.0.0", "7.1.0", "7.2.0", "7.3.0", "7.4.0", "7.4.1", "7.5.0"
**Landing Page:**
* Premier - "6.1.3", "6.2.0"
* Encore - "1.2.4", "2.0.0", "2.0.1", "2.0.2", "2.0.3", "2.1.0", "2.3.0", "2.3.1", "2.3.2", "2.3.3", "2.4.0", "2.4.2", "2.4.3", "2.5.3", "2.5.5", "2.6.0", "2.7.0"
If your current theme\_versions do not include any text, that is ok. Just make sure that your theme version does not fall within the range of version numbers outlined above.
### Examples of theme\_name and theme\_version combinations
**Example 1 Web: Triggers Update from Zip**
* Theme\_name: Custom Theme
* Version\_number: 2.1.1
Why: The theme\_name does not match an existing canonical
**Example 2 Web: Triggers Update from Zip**
* Theme\_name: Encore
* Version\_number: Custom Name 1.7.0
Why: The theme\_version does not match an expected version number based on theme\_name
**Example 3 Web: Triggers Standard Update Flow**
* Theme\_name: Encore
* Version\_number: 1.7.0
Why: The theme\_version and theme\_name matches an expected version number and theme\_name for this theme type (web).
**Example 4 Web: Triggers Update from Zip**
* Theme\_name: Momentum
* Version\_number: 1.7.0
Why: The theme\_name does not match an expected theme\_name for this theme type. Momentum is an expected Product theme, not a web theme.
### User experience and entry points
If a theme is named correctly using the above naming rules, the following UI will show:
If a theme is not named correctly and includes a Kajabi internal "theme\_name" and a recognized "version\_number", the standard upgrade flow will be shown. Using Kajabi internal "theme name" for theme upgrades is not recommended unless you are only selling presets of existing Kajabi themes without any additional code or enhancements.
The entry points that your customers use to access this feature are the same as before; however, the logic outlined above dictates which of the two update UIs are shown.
**Landing Pages:**
**Website:**
**Product:**
## Tips to make templates stand out
Create based on the customer's aesthetic:
* Feminine
* Fitness
* Masculine
* Business
* Real Estate
* Memberships
Create specific pages:
* Link in bio pages
* Sales pages for specific sales goals/events
* Community pages
* Coming Soon pages
* Media pages
# Content safety and security
Source: https://help.kajabi.com/articles/resources/resources/can-you-guarantee-my-content-is-safe-and-securely-stored
Understand Kajabi's commitment to protecting and securing your information.
At Kajabi, we take our responsibility to protect and secure your information seriously. See our [Data Protection Addendum](https://assets.website-files.com/5db0d55a083f4b7cd59d2e42/6231593210fd2d9ffe15db07_Kajabi-%20DPA%20March%202022.pdf) to learn more.
# EU GDPR compliance in Kajabi
Source: https://help.kajabi.com/articles/resources/resources/does-kajabi-contain-all-the-necessary-tools-to-be-eu-gdpr-compliant
Understand how Kajabi helps you comply with GDPR and other privacy regulations.
Yes, Kajabi is designed to help you comply with privacy regulations including GDPR.
[Learn how Kajabi helps you with privacy regulations](/articles/marketing/email-campaigns/how-kajabi-helps-you-with-privacy-regulations).
# Kajabi sales calls and demos
Source: https://help.kajabi.com/articles/resources/resources/does-kajabi-offer-sales-calls-or-demos
Explore available resources to evaluate Kajabi, including the free trial.
Kajabi does not currently offer sales calls. However, you can learn the [ABCs of Kajabi from our Demo page.](https://www.kajabi.com/demo)
## Start a free trial
Head to the [pricing page](https://www.kajabi.com/pricing) and click **Choose Plan** to get started.
## Explore our additional resources
Watch video guides and attend live webinars
Take courses and learn from industry experts
Share feedback and see what Kajabi is working on
Stay up to date with Kajabi and connect with other Heroes
Hire a Partner to build your Kajabi site
# Access Kajabi University
Source: https://help.kajabi.com/articles/resources/resources/how-to-access-your-kajabi-university
Explore multimedia business and marketing courses hosted by Heroes.
[Kajabi University](https://university.mykajabi.com) provides courses designed to help you build and grow your online business on Kajabi.
Explore free multimedia courses, including [The Course Creator Roadmap](https://university.mykajabi.com/products/how-to-launch-a-profitable-digital-course-in-less-than-30-days) and [The Expert Operating System](https://university.mykajabi.com/offers/6RHtzD8s/checkout), hosted by eight-figure Kajabi Heroes **One Peak Creative** and **Justin Welsh**.
**To access Kajabi University:**
1. From the Dashboard, click your **Account Name** in the top right corner.
2. Select **Kajabi University**.
3. Or, go directly to [https://university.mykajabi.com](https://university.mykajabi.com).
4. Click **Courses** in the top navigation to view the full course library, or **Webinars & Guides** to register for live training events or watch individual video guides on a variety of topics.
# Design logos and graphics with Canva
Source: https://help.kajabi.com/articles/resources/resources/how-to-design-logos-and-graphics-with-canva
Use Canva to create images, logos, and graphics for your Kajabi courses and business.
## Overview
Canva is a great, nearly free tool that allows you to create all the images, logos, and graphics you need for a consistent look across your Kajabi courses and business.
## Create a Canva account
Set up an account at [Canva.com](http://www.canva.com/) using Facebook, Email, or other social media accounts. If you choose not to use your social media account, you will need to wait for and click on a verification email.
1. Once you have created your account you will see this header:
## Choose a template for a graphic or logo
Choose what type of graphic you are going to create, whether it is a logo for your business or courses, a poster for a live event, or a header for your Facebook account. Canva has templates for every occasion. If you cannot find a template that fits your idea, create a custom dimension by clicking on the box in the upper right corner:
## Design a logo
Once you select a logo from the business section of templates, you will see a variety of layouts, elements, and options:
## Customize a logo or graphic
1. Select a template and click **UPLOADS** to add your own photos such as a headshot or any other images you may want to include on the logo:
2. Add elements such as grids, charts, and icons by clicking the **ELEMENTS** tab:
3. Canva also offers stock images and illustrations that you can buy for \$1 when you search for a term in the search bar:
4. Once you have experimented with different layouts and elements, added your own text including your brand name, and set the background to your desired color, save and download your logo.
## Download and share a logo
Save your logo by clicking **File** then **Save**. While Canva does auto-save every few minutes, make sure you save your work each time you exit the program or after making changes.
To download your logo:
1. Click **Download** in the top right corner.
2. Select your preferred file format (PNG recommended for logos).
3. Click **Download** to save the file to your computer.
You can then upload your logo to Kajabi for use on your website, courses, and marketing materials.
# Submit a translation request
Source: https://help.kajabi.com/articles/resources/resources/how-to-make-a-translation-request
Request corrections for grammatical errors or inaccurate wording in the Kajabi app.
## Overview
We do our best to catch grammatical errors or inaccurate wording in our app, but we can't catch everything — especially in languages other than English.
Currently, there is no option for you to make changes directly. To submit a formal request to change any particular wording, reach out to our support team.
## Information to provide
Include the following information when you submit your request:
* The URL
* A screenshot of the translation error/request
* The word or phrase you would like changed
* The word or phrase you would like us to use instead
## Requests that are typically approved
* Grammatical errors
* Typos
**Note:**
Info/warning/error messages still appear in English and cannot be changed at this time.
# Submit product feedback and ideas
Source: https://help.kajabi.com/articles/resources/resources/how-to-submit-product-feedback-and-ideas
Use the Kajabi Ideas Portal to share feedback, submit feature requests, and influence the product roadmap.
## Overview
The Kajabi Ideas Portal (**[feedback.kajabi.com](https://feedback.kajabi.com/))** allows Heroes to submit feature requests, vote on ideas, and track product roadmap updates. Keeping everything in one place helps our teams understand your ideas, prioritize improvements, and communicate updates more effectively. You automatically receive email notifications as updates occur on posts you have created, voted for, or commented on.
## Access the Kajabi Ideas Portal
The Kajabi Ideas Portal can be accessed by visiting **[feedback.kajabi.com](https://feedback.kajabi.com/).**
1. Click the **Log in** button in the upper right corner.
2. Enter your Kajabi credentials.
3. Once logged in, you will see the product roadmap, which provides a transparent view of where each idea is in the development process.
## Submit ideas and feedback
The Kajabi Ideas Portal is designed to make sharing ideas and feedback fast and easy.
### Choose which board to submit to
* **Feature Request**: Something you wish Kajabi could do. If there is a capability or tool you wish existed inside Kajabi, add it here. Tell us what outcome you are trying to create.
* **Unclear Design**: Something that exists today but feels confusing, slow, or harder than it should be. Share the exact moment where the workflow breaks, feels clunky, or makes you hesitate. This helps us remove friction and simplify the experience.
* **Lack of Guidance**: Something you are trying to do but feel stuck, unsure, or unclear about. If you are not sure which step to take, how to structure something, or what best practice to follow, tell us. This feeds improvements to coaching, onboarding, and product guidance.
* **Bug Reports**: If you are experiencing a bug that is not critical to your business, share it here. If a bug is blocking you from critical actions (such as your checkout not working), contact us through [support@kajabi.com](mailto:support@kajabi.com) or the conversation widget in your account.
### Submit an idea
1. Start typing your idea in the **Details** section. If there is already a similar post, other posts will automatically be recommended for you.
2. If you see your idea already listed, **upvote** that post instead.
3. If not, continue creating your post by selecting the **Category** and **Impact on Business**.
4. If you have a current workaround for the requested feature, include it in the **current workaround** field.
5. Click **Submit Idea** once you are satisfied with your request.
**Note:** If your feedback is similar to an existing post, it may be merged to keep related ideas together.
## Vote on a post
To support an existing idea by upvoting:
1. Click the **upvote arrow** found to the right of any post to add your vote.
2. Click the same arrow again to remove your vote if you change your mind.
## Comment on a post
Add comments to share more details, context, or examples to strengthen your feedback.
1. Click into the post you wish to comment on.
2. Enter your comment, then click **SUBMIT** to post your comment.
# Kajabi Glossary
Source: https://help.kajabi.com/articles/resources/resources/kajabi-glossary
Explore Kajabi features, terminology, and how they are used within the platform.
## Overview
This glossary covers the different features, Kajabi terminology, and how they are used in Kajabi.
**Tip:**
Search for terms by holding **CMD**+**F** on a Mac or **CTRL**+**F** on Windows. Enter the term you are searching for and click **Enter** until you locate it.
## Dashboard terms
**Dashboard** is your home base. This is the screen you see each time you log into your Kajabi account. Read [Navigate the Dashboard](/articles/account-settings/my-kajabi/dashboard-explained) for details.
### Stat cards
**Opt-Ins** are the number of people that have opted into a form over the last 30 days. This indicator allows you to see at a glance how many subscribers have been added to your list.
**Sales** reflect, as a whole, how much money you have made on Kajabi in the past 30 days. Read [Analytics overview](/articles/analytics/analytics-overview) for more details.
**Comments** allow you to see how many comments you have received on all products and on all lessons. Read [Manage Course comments](/articles/products/courses/how-to-manage-course-comments) for details.
**Customers** reflect the number of people who have been granted or have purchased an offer over the past 30 days. Read [Explore the Contacts tab](/articles/contacts/manage-your-contacts/contacts-tab-overview) for details.
## Product terms
### Products
**Products** are a digital service that can be delivered online. A product is most commonly a course, a membership, a community, a resource center, or a webinar replay. Read [Create a Product](/articles/products/courses/courses-overview) for details.
**Membership** is a Product where you can add content on a pre-agreed basis where customers pay you a recurring fee in exchange for access to your membership content. Read [Create a Product](/articles/products/courses/courses-overview) for details.
**Community** is where your customers can virtually connect and discuss mediated and unmediated topics. A Kajabi **Community**, like a Facebook group, allows you to add customers to interact with one another. As the administrator, you can build an interactive and engaging space with your customers. Create topics, organize groups of people, and assign access to your Community members. [Learn more about Kajabi Communities](/articles/products/community/build-kajabi-communities).
**Template** is a pre-built template with a product outline already created as a guide. While templates are pre-built, you can edit them in any way you see fit. You can add modules, lessons, and assessments as needed. The template acts as a guide.
Read [Create a Product](/articles/products/courses/courses-overview) for details on different Product Templates, creating your Product, and Memberships and Communities in Kajabi.
**Product Outline** is where you can organize and add content to your Product. Read [View a Product Outline](/articles/products/courses/how-to-view-your-course-outline) for details.
**Module** is a way to break up your content so your customers can easily see the different topics available to them in your Product. Read [Create a Module](/articles/products/courses/course-modules) for details.
**Lesson** is the home for each individual piece of your content. A lesson is where you can add your videos, text, downloadable files, automations, and an image. The lessons are the individual sections within a certain module. Read [Create a Product Lesson](/articles/products/courses/create-a-lesson) for details.
**Quiz** allows you to test your Course customers' learning at any point in your Course using a variety of different question types. Learn more about [Quizzes in Kajabi](/articles/products/courses/course-quizzes).
**Assessment** is a test or a survey that allows you to gather information from your customers before, during, or after the course is complete. Learn more about [Assessments in Kajabi](/articles/contacts/create-manage-and-share-assessments/create-and-customize-assessments).
**Product Preview** is the view of your Product your customers will see. Read [Preview a Product](/articles/products/courses/how-to-preview-your-product) for details.
**Drip** allows you to release modules of content X number of days after your customer has purchased your Offer. When adding in Drip days, add onto the original number. For example, 7, 14, 21 days for dripped modules. Read [Use Drip content to release Product Lessons over time](/articles/products/courses/schedule-and-drip-content-in-courses) for details.
**Lock** is a release option that allows your content to be released after your customer has completed your specified lesson. Read [Lock content from a Course Outline](/articles/products/courses/lock-content-in-your-course-product) for details.
**Draft** is a release feature that allows you to hide your content from your customers as you build the lesson in your Product. Read [Create a Product Lesson](/articles/products/courses/create-a-lesson) for details on lesson states and visibility.
### Offers
**Offer** is the price tag and the vehicle for delivering your Product. This means having the ability to provide your customers with different payment options for services and products you provide. Read [Create an Offer](/articles/sales/offers/create-an-offer) for details.
**Upsell** is a feature to encourage an additional sale. An Upsell presents an additional purchase opportunity after checkout. Upsell pages are built using the same Builder as your site and checkout pages and can be reused across multiple Offers. If they choose to purchase the Upsell Offer, it is processed as a separate transaction from the original Offer purchase. Read [Add and edit an Upsell](/articles/sales/offers/upsells-overview) for details.
**Order Bump** can be used as a way to advertise another offer directly from the checkout page. A customer goes through the checkout sequence and sees a simple option to add another Offer to their checkout right below the payment information. If you wish to include an Order Bump, when writing the description, keep in mind that it should refer to the Offer getting bumped. Read [Add an Order Bump](/articles/sales/checkout/how-to-add-an-order-bump-to-your-offer) for details.
**Single Use Coupon** is a single coupon that can be used for launches or special deals. This is where you can create a code like `BLACKFRIDAY` and every time this code is entered there is a percent off (example: 20% off) discount applied. Read [Create a Coupon](/articles/sales/coupons/how-to-create-a-coupon) for details.
**Bulk Coupon Code** is for when you want to provide a limited amount of coupons with unique links and upload them to a site like Groupon. Read [Generate Coupon Codes in bulk](/articles/sales/coupons/creating-coupon-codes-in-bulk) for details.
**Product Access** allows the customers that purchase your Offer to gain access to the Product(s) included with the Offer on your specified day within the Product Access option. Read [Give access to a Product on a specific date](/articles/sales/offers/how-to-give-access-to-your-product-on-a-specific-date) for details.
**Restrict Access** removes your customer from the Product(s) after your specified number of days. This means your customer no longer has access to the Product(s) of your Offer from their Library. Read [Restrict Product access to a specific number of days](/articles/sales/offers/how-to-restrict-product-access-to-a-specific-amount-of-days) for details.
## Website terms
### Design
**Design** is a section of the Website tab where you can design your Library, Store, Login, Static, Thank You, and Blog Pages along with your Pages containing your Blog Posts and Blog Search bar.
**Template Home** is the homepage that your settings are defaulted to when you create your Kajabi account. When visitors enter your URL in their browser, this is the page that appears if you have not changed your settings in your Site Details. Read [Build a Homepage](/articles/website/pages/how-to-build-your-custom-homepage) for details.
**Navigation** is where you add specific links that you want your visitors to access in the header of your site. The links in this navigation can include links on Kajabi and from other site pages. It can be any link you can copy and paste into your Navigation menu. Keep in mind, most of the time when creating your navigation menu, select **link** as the option. Read [Add a menu to your page header](/articles/website/pages/how-to-add-a-menu-to-your-page-header) for details.
**Manage Templates** allows you to select from a variety of different templates that carry through your Design tab Pages. Read [Customize a Website Template](/articles/website/pages/how-to-upload-a-new-website-template) for details.
### Page Builder
**Pages** allow you to build individual landing pages to direct traffic. Your Pages can be used as opt-in pages, homepages, video players, and more. The various templates allow you to create different pages for different purposes with ease. Read [Create a Page](/articles/website/pages/how-to-add-pages-to-your-website) for details.
**Standalone Pages** are not attached to any marketing funnel flows.
**Funnel Pages** in the Pages tab are folders containing all of the Pages that exist in your funnel(s).
### Blog
**Blog Posts** are articles or videos that make up the content on your blog. Read [Customize a Blog](/articles/website/pages/how-to-design-your-blog-homepage) to edit and customize all of your blog pages and blog post layouts.
## Marketing terms
### Funnels
**Funnels** bring marketing and sales together through the power of Automations. A funnel drives traffic to your opt-in page to capture lead information and send follow-up information to ultimately convert leads into paying customers.
**Legacy Funnels** are used more for the purpose of offer conversion, rather than lead generation and offer conversion.
### Email Campaigns
**Email Broadcast** is one email sent out. This is most commonly used as an announcement or newsletter email. Read about [Email Broadcasts](/articles/marketing/email-campaigns/email-campaigns-overview#email-broadcast) in Kajabi to learn more.
**Email Sequence** is an email or a list of emails that can be sent out after a trigger has been completed on your site. Read about [Email Sequences](/articles/marketing/email-campaigns/email-campaigns-overview#email-sequence) in Kajabi to learn more.
**Email Stat: Bounced** is when an email to a recipient fails, usually due to the recipient's email not existing.
**Email Stat: Clicked** is when your email recipient clicks any of the links included in your email.
**Email Stat: Opened** emails occur when an email campaign has been delivered and viewed by the recipient.
Read [Email Metrics overview](/articles/marketing/email-campaigns/email-metrics-overview) for more details.
### Types of emails
**Marketing Emails** are emails sent to your email list subscribers. These emails include Email Broadcasts, Email Sequences, and Event Emails. If they are not subscribed and have not approved to be sent marketing emails, they will not receive these types of emails. Read the [Email Campaigns overview](/articles/marketing/email-campaigns/email-campaigns-overview) to learn more.
**System Generated Emails** are emails sent regardless of whether or not your users are subscribed to marketing emails, as they alert them that an action has occurred within the app such as a purchase confirmed, Product access granted, and more. Read [Edit the automated emails sent by a site](/articles/account-settings/notifications/edit-automated-email-notifications) for details.
**Event Emails** have the same permissions as Marketing emails. Event emails are sent on a time-specific schedule before, during, and after your event. Read [Create an Event](/articles/marketing/events/how-to-create-an-event) for details.
Read [Understanding the difference between Marketing and Transactional emails](/articles/marketing/email-campaigns/what-are-marketing-and-transactional-emails) for further detail.
### Automations
**"When" Trigger** is the signal that fires off an action when triggered.
**"Then" Trigger** is the action that occurs after the "When" trigger has fired.
**Condition** is an additional "only if" condition in the Automations infrastructure to allow you to filter your automation. For instance, say you want to add a tag to all users who have submitted a specific Form, but only if they answered a specific question on that Form with a specific answer. Read about [Automations](/articles/marketing/automations/automations-overview) in Kajabi to learn more.
### Events
**Events** in Kajabi represent a date and time that can be surrounded by emails and automated actions. People can be registered to an Event by completing a Form, purchasing a Product, and many other Automations. This feature gives you the option to create marketing campaigns based on a time instead of explicitly creating marketing campaigns based on sign-up or purchase dates. Read [Create an Event](/articles/marketing/events/how-to-create-an-event) for details.
### Forms
**Double Opt-In** is a feature for your Forms. The Double Opt-In automatically sends a confirmation email to the address inputted on the Form. This email prompts your subscriber to confirm that they would like to be added to your list and receive your marketing emails. By using a Double Opt-In, you can improve the quality of leads you are receiving. When a lead confirms they want to remain a contact on your list, it shows they are interested in your business and have a higher likelihood of becoming a customer. Making a Double Opt-In a requirement also reduces the chances of your marketing emails being flagged as spam. Read [Set up a Form with a Double Opt-In](/articles/marketing/forms/how-to-set-up-a-form-with-double-opt-in) for details.
## Contacts terms
### All Contacts
**Subscriber** is a contact (name and email) who has signed up to receive marketing emails. This can be done by agreeing to receive marketing emails when purchasing an Offer or by submitting a Form to be subscribed to your list.
**Customers** are anyone who has purchased or has been granted access to an Offer. Customers have a blue checkmark icon on their avatar when scrolling through the All Contacts tab.
**Tags** allow you to separate your list to easily target specific groups of contacts and perform a variety of actions such as setting up Automations with a Tag and sending Emails to specific contacts with your specified Tag(s).
**Lifecycle** shows the amount of time a contact has been added as well as the transactions and interactions that have taken place since the contact joined your list or purchased an Offer.
**Grant Offer** is an option to provide access to a Product and bypass needing payment. Read [Grant an Offer](/articles/sales/offers/how-to-grant-an-offer) for more details. Granting an Offer sends a system-generated email, the Offer Grant Email. Read [Edit the automated emails sent by a site](/articles/account-settings/notifications/edit-automated-email-notifications) for details on editing your system-generated email.
### Assessments
**Assessment** is a test or a survey that allows you to gather information from your customers before, during, or after the course is complete. Read [Assessments in Kajabi](/articles/contacts/create-manage-and-share-assessments/create-and-customize-assessments) for details.
### Affiliates
**Affiliates** consist of people selling/marketing your course on your behalf while receiving a commission from you in the process. This is a scalable way to maximize revenue. Read the [Affiliate overview](/articles/sales/affiliates/affiliates-overview) for details.
## Settings terms
**Payment Integrations** are where you can connect Stripe and/or PayPal to your site. Read [Connect Stripe to Kajabi](/articles/api-integrations/payment-integrations/connect-stripe-to-kajabi) and [Connect PayPal to Kajabi](/articles/api-integrations/payment-integrations/connect-paypal-to-kajabi) for details.
**Email Templates** are system-generated emails that get sent out when something happens within your Kajabi account. Review these templates and make any changes you wish to fit your brand and language. Read [Edit the automated emails sent by a site](/articles/account-settings/notifications/edit-automated-email-notifications) for details.
**Domain** is the address for your website such as `example.com`. Domains can be registered from domain registrars such as GoDaddy or Google Domains and connected to your Kajabi site to replace the default Kajabi subdomain given to you. Learn to [purchase a domain](/articles/website/domains/how-to-purchase-a-domain-name) for more details.
Want to connect your custom domain? Learn to [connect a custom domain](https://help.kajabi.com/hc/en-us/articles/360036668374) to Kajabi.
**Subdomain** is the beginning portion of your website address such as [www.example.com](http://www.example.com) or courses.example.com ("www" and "courses" are the subdomains). Kajabi provides you with a default Kajabi subdomain for your site to help you get started.
**Account Users** come with different permissions depending on their Admin Roles. Read [Add Admin Users for a site](/articles/account-settings/users/account-users) for details.
## Kajabi extras
**Hero**: A [Kajabi Hero](https://pages.kajabi.com/heroes) is a person who is committed to the path of turning their passion into profit and has taken the leap to begin their online business with Kajabi. From the day you sign up, you are on your way to making your first $1,000, then $100,000 and eventually \$1 million, all of which are accomplishments worth celebrating. No matter how big or small, each step is important and potentially life-changing. With Kajabi, you are the hero of your own story.
**Partner**: A Kajabi Partner refers Kajabi to their audience or clients and earns commission on active referrals. Tier-based commission rates and one-time bounty options are described in the [Partner Program overview](/articles/resources/kajabi-partner-program/partner-program-overview). Read [Become a Kajabi Partner](/articles/resources/kajabi-partner-program/how-to-become-a-kajabi-partner) for details on how to apply.
# Kajabi Hero Community (KHC)
Source: https://help.kajabi.com/articles/resources/resources/kajabi-hero-community-khc
Access and interact with the community built for Kajabi Heroes.
The **Kajabi Hero Community** exists to empower, educate, and connect Heroes with each other and with Kajabi employees — so you can build and grow with confidence. This is a trusted space for accurate Kajabi info, product updates, best practices, and Hero wins that help others see what's possible.
The community is a positive, supportive, and focused environment where Heroes can connect, learn, and grow together. Community guidelines reflect our core values and goals to ensure the best experience for everyone.
**Note:** The Kajabi Hero Community is a built-in feature of Kajabi and is no longer hosted on Facebook. Access it directly at [here](https://university.mykajabi.com/products/communities/v2/khc/home) or through your Kajabi Dashboard.
### Key benefits
* A space designed around the Hero journey, not algorithms or outside agendas
* Purposeful channels based on where you are in your business journey and what you are building
* A clutter-free environment that respects your time, energy, and attention
* A community rooted in Kajabi itself, with the same clarity and care we put into the product
* A faster-improving product, because we use the Community right alongside you — every friction point becomes a fix, and the whole experience evolves faster for everyone
## Access the KHC
1. Log in to your Kajabi account.
2. From your **Dashboard**, click your name in the upper right corner.
3. Select **Kajabi Community**.
## KHC Channels
In the **Community sidebar**, you will find several Channels listed that you may post in, each with a unique purpose.
General posts about Kajabi products or topics belong in the **Discussions** channel. Feel free to introduce yourself — what are you building and where are you in your journey?
Share celebrations and Kajabi milestones in the **Wins** channel, find answers and inspiration in the **Resources** channel, and share your product feedback, ideas, and bug reports through the [Kajabi Ideas Portal](/articles/resources/resources/how-to-submit-product-feedback-and-ideas).
Post often — questions, roadblocks, and victories are welcome, but discuss only Kajabi product-related topics within KHC channels. This ensures the community remains a valuable resource and prevents the group from becoming overwhelmed with unrelated content.
### Product Updates Channel
This Channel contains posts written by Kajabi staff and is the source for feature announcements, performance improvements, and tips on getting the most out of releases.
### Submit feedback and ideas through the Kajabi Ideas Portal
To share product feedback/ideas or to report a functionality issue, select either **Feedback Portal** or **Bug Reports** in the **KHC sidebar**.
**Note:** Clicking either **Feedback Portal** or **Bug Reports** opens the portal in a separate window.
The [Kajabi Ideas Portal](/articles/resources/resources/how-to-submit-product-feedback-and-ideas) gives Heroes the power to influence feature ideas and product roadmaps. Keeping everything in one place helps our teams understand your ideas, prioritize improvements, and communicate updates more effectively. By posting in the portal, you automatically receive email notifications as updates occur on posts you have created, voted for, or commented on.
Directing feedback to the portal ensures your suggestions and concerns are properly reviewed and considered by the right product team. [Learn more about the Portal](/articles/resources/resources/how-to-submit-product-feedback-and-ideas).
# Kajabi Labs
Source: https://help.kajabi.com/articles/resources/resources/kajabi-labs
Test Kajabi features in development and provide feedback to help shape the platform.
## Overview
Kajabi Labs is your workshop to test Kajabi features while they are still in development. Work side-by-side with our team, provide feedback, and help shape the platform for all Heroes.
### Key benefits
* **Test features early**: Build your business with features as soon as they become available, before the official release
* **Provide direct feedback**: Your experience is invaluable and helps us develop a better platform for all Heroes
* **Customize your experience**: Try out the features you are most interested in and turn off the ones you do not need
**Note:**
Features in Kajabi Labs are in the final stages of development. As part of the development process, bugs and other unforeseen issues may arise.
## Locate Kajabi Labs
1. Open the **Settings** tab from your Dashboard.
2. Select the **Labs** card under Site Settings.
## Manage features
Activate and deactivate features in Kajabi Labs to control which features you want to test.
### Turn on a feature
1. Open the **Settings** tab from your Dashboard.
2. Select the **Labs** card under Site Settings.
3. Click the toggle for the feature you wish to test. The feature is on when the toggle turns black.
# Kajabi swag shipment changes
Source: https://help.kajabi.com/articles/resources/resources/kajabi-swag-shipment-changes
Understand EU VAT rules and how they impact Kajabi swag shipments.
## Overview
The European Union implemented changes to value-added tax (VAT) rules that affect how Kajabi swag shipments are handled for EU recipients.
## EU VAT rule changes
As of July 1st, 2021, the European Union requires VAT on all orders, regardless of value.
## Impact on swag shipments
VAT is collected after import and prior to delivery by the shipment carrier (i.e. your local postal service).
If you qualify for Kajabi swag, you are responsible for paying these VAT fees to receive your swag box. The fees are based on the value of the item(s) being shipped and are roughly 21% of the total item value.
**Warning:**
If the fees are not processed and successfully paid for by the recipient, the shipment will be returned to the sender.
# Kajabi's Data Protection Addendum and Standard Contractual Clauses
Source: https://help.kajabi.com/articles/resources/resources/kajabis-updated-data-protection-addendum-for-the-new-standard-contractual-clauses
Answers to frequently asked questions about Kajabi's Data Protection Addendum and Standard Contractual Clauses.
## Overview
Have questions about Kajabi's Data Protection Addendum (DPA)? This article covers frequently asked questions to help you understand the changes.
## FAQs
### Why has Kajabi updated the Data Protection Addendum (DPA)?
We revised our [Terms of Service Agreement](https://kajabi.com/policies/terms) and Data Protection Addendum (DPA) to include the Standard Contractual Clauses (SCCs) as published by the European Commission on June 4th, 2021.
### How does this change impact me?
The updates to the DPA are only applicable if you use Kajabi to process European Economic Area (EEA) data or data within the [jurisdictions outlined](https://assets.website-files.com/5db0d55a083f4b7cd59d2e42/61524b42156de002fe9cdfb9_Kajabi-%20DPA%20September%202021.pdf) in the agreement.
### What do I need to do?
If you are subject to our DPA, no additional action is required. The DPA automatically becomes part of your agreement with us effective September 27th, 2021.
### When is the DPA effective?
The DPA was automatically effective on September 27th, 2021 for all Heroes who have agreed to our Terms of Service Agreement. All contracts made after September 27th, 2021 must use the SCCs. Pre-existing contracts automatically transitioned to the SCCs starting December 22nd, 2022, where applicable.
### Will there be any other changes to the DPA?
We have made changes to the DPA for the benefit of our global Heroes. We work to consistently stay abreast of all domestic and global regulations relating to data protection and make updates as deemed necessary.
### What changes do the EU's SCCs contain?
The European Commission updated the SCCs to address additional structures of processing activities that exist in today's world, including the GDPR and the Schrems II decision. These requirements apply additional transparency and notification controls.
The SCCs are modular, enabling them to be tailored to the specific type of transfer. The clauses have been expanded to include controller-to-controller, controller-to-processor, processor-to-processor, and processor-to-controller transfer, which align better to transfer paradigms in use globally today.
### How are the SCCs applicable to me?
If you are using Kajabi to transfer personal data originating from the EEA, the UK, and/or Switzerland, then the SCCs are the valid transfer mechanism to make these transfers.
If you have a global membership, these updates allow for better alignment to your responsibilities of compliance under GDPR and other data protection regulations globally.
# Resolve login issues across platforms
Source: https://help.kajabi.com/articles/resources/resources/resolving-login-issues-on-kajabi-across-platforms
Identify and fix common login challenges on desktop, mobile app, and web browser environments.
Login issues can differ between desktop, mobile app, and web browser environments. This article walks through common challenges and how to resolve them.
## Understand roles: admin login vs. member login
Kajabi has two distinct roles, and knowing which one applies to you is essential for logging in correctly:
* **Kajabi Site Owners/Admins**: Use the general Kajabi login portal at [app.kajabi.com](https://app.kajabi.com). Admins manage site settings and content and cannot access courses through standard member login portals.
* **Members/Customers**: Access courses exclusively through the specific site of the Hero whose content you purchased. For web login, always use the specific URL provided by the course creator (e.g., \[SITE].mykajabi.com). Avoid using the admin portal.
**Note:** Using the admin login URL for member or course access will not work and may display an error like *account blocked*. Always confirm you are entering credentials on the correct platform.
## Common login problems and resolutions
### Log in from a web browser
#### Issue
You cannot log in from a desktop browser even though you are successfully logged in on the Kajabi app.
#### Solutions
* Visit the specific course provider's website and log in using your member credentials.
* If you have forgotten the password, use the **Forgot Password** link on the course site, complete the email-based password reset process, and log in.
* Avoid using the admin portal ([app.kajabi.com](https://app.kajabi.com)) for member logins.
### Log in from the Kajabi mobile app
#### Issue
You cannot log in to the Kajabi mobile app even though you are successfully logged in on the web.
#### Solutions
* Confirm you are using the correct login credentials for the specific course provider's site.
* If you have forgotten the password, reset it through the course provider's website before attempting to log in again on the mobile app.
* Make sure the app is updated to the latest version.
## Troubleshooting
Work through these steps in order. The incognito test in step 1 is the fastest way to identify the cause.
1. **Test in an incognito or private window.** Open the login page in a private/incognito window and try logging in. Usually, browser extensions are disabled in private/incognito windows. If the login page works in private/incognito, it's likely that a browser extension is causing an issue. If it works in incognito, go to step 2. If it still fails, go to step 3.
2. **Disable ad blocker or privacy extension.** Common culprits: uBlock Origin, Privacy Badger, Ghostery, AdBlock, AdBlock Plus, and the built-in filtering in Brave. Disable the extension, reload the page, and try again. If this fixes it, add your Kajabi site's domain to the extension's allowlist.
3. **Enable third-party cookies.** Kajabi requires third-party cookies for authentication.
* **Chrome:** Settings > Privacy and Security > Third-party cookies > select *Block third-party cookies in Incognito* only.
* **Firefox:** Settings > Privacy & Security > set Enhanced Tracking Protection to *Standard* (not Strict).
* **Safari:** Safari > Settings > Privacy > uncheck *Prevent cross-site tracking*.
4. **Clear browser cache and cookies**, then reload and try again.
5. **Try a different browser** to rule out a browser-specific configuration issue.
6. **Check for VPN or firewall interference.** Some VPNs block scripts or alter cookies. Temporarily disable your VPN and try again.
**Issue only on your custom domain (not on [yoursite.mykajabi.com](http://yoursite.mykajabi.com))?** This may indicate a DNS or Cloudflare configuration issue rather than a browser problem. Contact Kajabi Support.
# What is Kajabi
Source: https://help.kajabi.com/articles/resources/resources/what-is-kajabi
Learn what Kajabi is, who it's for, what you can build, and how it compares to other creator platforms.
**Kajabi** is the operating system for human expertise: an all-in-one platform where coaches, educators, creators, and service professionals build, market, sell, and deliver their work. Creators use Kajabi to run Courses, Coaching programs, memberships, Communities, and digital products from a single connected system with no revenue sharing.
[Explore Kajabi plans and pricing](https://www.kajabi.com/pricing)
## FAQs
### What is Kajabi?
Kajabi is an all-in-one platform for experts who turn knowledge into a business. It combines course creation, coaching tools, community spaces, email marketing, websites, payments, and analytics in one system, so creators can build, market, sell, and deliver their work without stitching together separate tools or paying revenue share.
### Who is Kajabi for?
Kajabi is for experts whose knowledge comes from real experience: coaches, educators, course creators, practitioners, clinicians, consultants, and service professionals. It supports both early-stage creators launching their first product and established business owners scaling memberships, communities, or coaching programs to thousands of customers.
### What can I build on Kajabi?
Kajabi supports online Courses, group Coaching programs, 1:1 Coaching engagements, paid and free Communities, membership sites, digital downloads, podcasts, newsletters, and full creator websites. You can also bundle products into Offers, launch sales funnels, and run high-value client experiences from a single platform.
### What makes Kajabi different from other platforms?
Kajabi replaces a patchwork of marketing, sales, and delivery tools with a single connected system, so creators don't pay for or maintain separate platforms for courses, email, payments, and websites. Kajabi also takes no revenue share on plan pricing, unlike marketplace-style competitors, and gives creators full ownership of their audience, branding, and customer data.
### How does Kajabi help experts grow their business?
Kajabi helps experts grow by connecting product creation, audience building, marketing automation, and customer delivery in one workflow. Built-in tools for landing pages, email campaigns, sales funnels, and analytics let creators attract leads, convert customers, and increase retention without external software. Cofounder, Kajabi's AI assistant, suggests next steps based on real business data.
### Can I sell digital products on Kajabi?
Yes. Kajabi gives creators a complete system for selling digital products including ebooks, downloads, templates, audio files, and video content. Built-in checkout, subscription billing, upsells, and order bumps support both one-time purchases and recurring revenue, with no transaction fees beyond standard payment processing.
### Can I sell coaching or expert services on Kajabi?
Yes. Kajabi supports 1:1 Coaching, group Coaching, and high-touch client engagements with scheduling, session notes, client dashboards, and integrated payment plans. Coaches can deliver private or group sessions, sell coaching packages, and combine coaching with Courses or Community access in a single Offer.
### Is Kajabi good for beginners who want to grow into a larger business?
Yes. Kajabi is designed to scale with creators from their first product to a multi-million-dollar business. Beginners can launch a single Course or Coaching package quickly using built-in templates, then expand into Communities, memberships, and advanced funnels as their audience grows, without switching platforms or migrating data.
### Does Kajabi take a percentage of sales?
No. Kajabi does not take a percentage of creator sales on any plan. Creators keep 100% of their revenue after standard payment processor fees through Stripe or PayPal. This differs from marketplace platforms and some learning platforms that charge transaction fees of 5% to 10% on every sale.
# Explore available CRM tools
Source: https://help.kajabi.com/articles/resources/resources/which-human-resource-hr-tools-are-provided
Track your customers, contacts, and site performance using Kajabi's built-in CRM tools.
Although Kajabi does not provide HR tools (like payroll, time tracking, etc.), you have access to customer relationship management (CRM) tools to track your customers, contacts, and overall site performance.
Explore the following guides for more information:
* [Contacts](/articles/contacts/manage-your-contacts/contacts-tab-overview)
* [Analytics](/articles/analytics/analytics-overview)
# Check Kajabi service status and subscribe to updates
Source: https://help.kajabi.com/articles/resources/support/check-kajabi-service-status-and-subscribe-to-updates
Monitor Kajabi platform performance and get notified when an incident is created, updated, or resolved.
The **Kajabi Status Page** at [status.kajabi.com](https://status.kajabi.com/) is where Kajabi publishes real-time and historical data on system performance. When something is not working as you expect, such as a page that will not load or a checkout that will not complete, or you receive an error message, check the Status Page first to see whether Kajabi has already identified or is working on an issue.
Subscribing to updates means incident notifications reach you by email, text message, Slack, or webhook without needing to visit the Status Page. You choose which updates to subscribe to on the Status Page itself.
## System status and incident history
The top of the Status Page shows the current status of the platform as a whole, followed by the uptime recorded over the past 90 days. Click **View historical uptime** to see uptime beyond that window.
### Components
Status is reported for each part of the platform and its sub-components:
* **App Availability** — The general uptime of Kajabi, including the admin panel and access to product sites.
* **Admin** — Coupons
* **API** — Inbound Webhooks from external services used for granting Offers.
* **Checkout** — Offer Checkout, both multi-step and seamless Checkout and forms, Affiliate tracking, Upsells, Order bump, Coupon, and Webhooks
* **Email** — Automated Site Emails (Email Templates and delivery of automated messages), Custom Email Domain Setup (CEDS), Marketing Email Editing and Scheduling (Creating and editing of Email Broadcasts, Email Sequences, or Event Emails)
* **Sites** — Page rendering of customer sites and rich email content
* **Support** — Kajabi Signups
### Status indicators
Every component reports one of five states:
* **Operational** — The component is working as expected with no known issues.
* **Degraded Performance** — The component is functioning, but is slower or less reliable than normal.
* **Partial Outage** — A subset of the component is broken, whether that involves functionality, regions, or some percentage of accounts.
* **Major Outage** — The component is fully down for everyone.
* **Maintenance** — Planned, scheduled work is taking place for the component.
### Past Incidents
The **Past Incidents** section lists recent days and anything reported on them. Kajabi posts progressive updates inside an incident, and each update is labeled with its stage:
* **Investigating** — The issue has been reported and Kajabi is looking into it
* **Identified** — The cause is known and a fix is underway
* **Monitoring** — A fix has been applied and Kajabi is watching for stability
* **Resolved** — The incident is closed
Click **Incident History** to browse incidents older than the ones listed on the main page.
## Status Page notification channels
To open the subscription options, go to the **Kajabi Status Page** at [status.kajabi.com](https://status.kajabi.com/) and click **Subscribe to Updates**. Each channel covers a different set of events, so pick the one that matches how closely you need to follow an incident.
### Subscribe by email
Email notifications are sent whenever Kajabi creates, updates, or resolves an incident.
1. Select the **email icon**.
2. Enter your **Email address**.
3. Enter the **one-time passcode** sent to that address to confirm your subscription.
**Note:** A short countdown runs before a replacement code can be sent. If the passcode does not arrive, wait for the countdown to finish and then click **Resend OTP**.
### Subscribe by text message
Text message notifications are sent whenever Kajabi creates or resolves an incident. This is the narrowest option, since it skips the interim updates posted while an incident is being worked on.
1. Select the **text message icon**.
2. Choose your **Country code**.
3. Enter your **Phone number**.
4. Enter the **one-time passcode** sent to that number to confirm your subscription.
**Important:** Message and data rates may apply.
### Subscribe in Slack
Slack delivers incident updates and maintenance status messages into a channel in your workspace.
1. Select the **Slack icon**.
2. Click **Subscribe via Slack**.
3. Complete the authorization in Slack.
### Subscribe by webhook
Webhook notifications are sent whenever Kajabi creates, updates, or resolves an incident, or changes a component status. Use this option to feed status events into your own monitoring or alerting tools.
1. Select the **webhook icon**.
2. Enter the **Webhook URL** the notifications should be sent to.
3. Enter an **Email address**. Kajabi emails this address if your endpoint fails.
### Follow the Atom or RSS feed
The Status Page also publishes an [Atom feed](https://status.kajabi.com/history.atom) and an [RSS feed](https://status.kajabi.com/history.rss) you can add to a feed reader.
## FAQs
### Which channels include maintenance updates?
The Slack subscription covers incident updates and maintenance status messages. Email covers incidents that Kajabi creates, updates, or resolves. Text message covers incidents that Kajabi creates or resolves. Webhook covers all three incident events plus component status changes.
### Does unsubscribing from Kajabi marketing emails stop Status Page notifications?
No. Status Page notifications are managed on [status.kajabi.com](http://status.kajabi.com), separately from the marketing email preferences in your Kajabi account. Unsubscribing from marketing email under **Settings > Notifications & Privacy** does not cancel a Status Page subscription.
### Where can I find older incidents?
The main page lists only recent days. Click **Incident History** to browse past incidents, or **View historical uptime** to see uptime beyond the 90 days shown on the page.
# Dedicated Customer Success Manager (CSM)
Source: https://help.kajabi.com/articles/resources/support/dedicated-customer-success-manager-csm
Accelerate business growth with a dedicated strategic partner inside Kajabi.
## Overview
A **Dedicated Customer Success Manager (CSM)** is your primary point of contact inside Kajabi. This trusted partner works alongside you to accelerate growth and help you unlock the full potential of your business.
A Kajabi CSM proactively partners with you to guide strategy, uncover opportunities, and remove roadblocks — enabling you to scale with confidence.
## What a Dedicated CSM provides
Your CSM acts as an extension of your team, providing:
* **Tailored insights** based on Kajabi's first-party data
* **Strategic recommendations** to guide business decisions and drive revenue growth
* **Hands-on support** to remove obstacles and keep you focused on your goals
With a CSM, you gain clarity, strategic direction, and a trusted partner for your business journey on Kajabi.
## How the program works
If you are on Kajabi's **Pro Plan**, you are eligible to work directly with a Dedicated CSM. Here is what to expect:
### 1:1 Kickoff call
Your CSM will schedule a live kickoff session to understand your business, align on goals, and identify immediate growth opportunities.
### Ongoing strategic guidance
You will have access to your CSM through:
* **Email support** for quick questions, strategic guidance, or escalations
* **Ad hoc check-ins** for live interactions around big moments for your business, such as a launch, site review, and more
## When you will hear from a CSM
Your journey with a CSM begins after onboarding:
### Step 1: Onboarding and launch programming
Start with [curated live webinars](https://learn.kajabi.com/webinars), guided content, and [launch programming](https://learn.kajabi.com/downloads) to help you reach your first dollar quickly.
### Step 2: Introduction to a CSM
After you have had a chance to explore Kajabi and begin building your business, your CSM will reach out to officially kick off your dedicated partnership.
If you would like to get connected sooner, email us at [success@kajabi.com](mailto:success@kajabi.com).
## Why a Dedicated CSM is different
A CSM is not just support — they are a proactive strategic consultant inside Kajabi. Their role is to:
* Understand the ins and outs of your business
* Provide clarity and confidence in your next steps
* Partner with you to unlock sustainable growth
## Get a Dedicated CSM
Dedicated Customer Success Managers are a key benefit of the [Kajabi Pro Plan](https://kajabi.com/pricing#:~:text=NEW-,Pro,-Expand%20your%20business). They combine Kajabi's powerful data with personalized guidance to help you scale confidently.
If you would like access to a Dedicated CSM, upgrade to the **Pro Plan** in the **Billing** tab of your account settings.
# Migrate a website and content to Kajabi
Source: https://help.kajabi.com/articles/resources/support/does-kajabi-offer-migration-services
Move your website design, pages, and content from another platform or a different Kajabi site, since Kajabi does not convert designs automatically.
Kajabi does not currently offer free in-house migration services from other platforms, and moving a website from another platform does not automatically convert its design. If you are migrating content from an outside platform, or moving content from one Kajabi site to another, the process is manual.
## Move a website from another platform
Your existing website design and formatting does not transfer automatically. You will need to manually rebuild your content using Kajabi's Website Builder, including its Sections and Blocks. [Learn how to set up your site with Kajabi](https://help.kajabi.com/articles/get-started/foundations/foundations-start-here#foundations-start-here).
If you want to transfer your existing customers to Kajabi, you will need to import them as contacts. [Learn how to import contacts into Kajabi](https://help.kajabi.com/articles/contacts/manage-your-contacts/how-to-import-contacts-into-kajabi#import-contacts-into-kajabi).
**Tip:** If you want to keep your third-party website active while using Kajabi for your Products and checkout, you do not have to migrate your whole site at once. Link your existing website to your new Kajabi Pages using buttons, CTAs, or your navigation menu, so visitors can move between your original site and your Kajabi Pages. [Learn how to copy a page link](https://help.kajabi.com/articles/website/pages/how-to-connect-your-landing-pages-to-your-website#connect-landing-pages-to-a-website).
## Move content from another platform
If you are moving from another platform, these Help Center articles can guide you through the process:
* [Migrate to Kajabi from Podia](../../resources/support/migrate-to-kajabi-from-podia)
## Move content between Kajabi sites
If you are moving from one Kajabi site to another, these articles can guide you through the process:
* [Duplicate a Page](https://help.kajabi.com/articles/website/pages/duplicate-a-page#duplicate-a-page)
* [Export a Landing Page](https://help.kajabi.com/articles/website/pages/how-to-export-a-landing-page)
* [Export contacts](https://help.kajabi.com/articles/contacts/manage-your-contacts/how-to-export-your-contacts#export-contacts)
* [Import contacts](https://help.kajabi.com/articles/contacts/manage-your-contacts/how-to-import-contacts-into-kajabi#import-contacts-into-kajabi)
## FAQs
### Will my website design convert automatically when I move to Kajabi?
No. Kajabi does not convert an existing site's design or formatting automatically, regardless of the platform you are moving from. You will rebuild your pages using Kajabi's Website Builder.
### How is my new Kajabi website connected to my Courses, Coaching, Community, Newsletter, or Podcast?
Your website and its Pages are separate from your Products. Products hold your actual content, while your Pages link visitors to the Offers that unlock those Products. [See how Kajabi content connects](../../get-started/abcs-of-kajabi/how-kajabi-content-connects) for a full breakdown of how these pieces fit together.
# Contact Kajabi Support
Source: https://help.kajabi.com/articles/resources/support/how-to-contact-kajabi-support
Learn how to start a support conversation and how support works
## Start a conversation
Kajabi offers two support channels: **chat** and **email**.
When you start a conversation, usually our AI Agent, Fin, will respond first. Fin can answer questions about Kajabi, help you get access to your account, and assist with billing. If necessary, Fin will loop in a team member to assist.
**Tip:** When you start a conversation, provide a **detailed description** of what you need help with. It also may be helpful to include a screenshot.
### Chat
1. From the Kajabi dashboard, click your name on the top-right.
2. Click **Contact support**.
3. The conversation widget will open on the help center.
4. Click **Start a conversation**.
**Tip:**
* In a chat, you can drag and drop or attach images, videos, or files. You can click the icon to transcribe your voice, if you prefer not to type.
If there is a queue to connect to a team member, you can see your position in the queue.
Team members will typically handle chats live, so you can expect quick responses after you're connected.
If your conversation is related to certain teams, your chat will not be handled live. Fin or a team member will inform you if this is the case. Feel free to step away from the chat and you'll be notified via email when there is a response.
If you're unable to see the conversation widget, make sure you're not blocking cookies or using an ad/script blocker browser extension.
#### How Kajabi verifies your account in chat
When you start a chat from inside Kajabi, we automatically verify you using the account you're logged into. This helps us to identify you.
**To chat under a different account:**
1. If necessary, log into the Kajabi account.
2. From the Kajabi dashboard, click your name on the top-right.
3. Click **Contact support**.
4. The conversation widget will open on the help center.
5. Click **Start a conversation**.
### Email
Choose an email below based on what you need help with.
| **Team** | **Email** | **When** | **Hours (PT)** |
| ----------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- |
| **Technical Support** | [support@kajabi.com](mailto:support@kajabi.com) | You need help using Kajabi | 24/7 |
| **Billing** | [billing@kajabi.com](mailto:billing@kajabi.com) | You need help with billing for your Kajabi subscription | 24/7 |
| **Kajabi Payments** | [payments.support@kajabi.com](mailto:payments.support@kajabi.com) | You need help with [Kajabi Payments](https://help.kajabi.com/articles/sales/kajabi-payments/kajabi-payments-overview) or [Cart](https://help.kajabi.com/articles/sales/checkout/kajabi-cart-overview) | Weekdays: 12am–5:30pm / Weekends: 10:30am–7pm |
| **Branded Mobile Apps** | [bma.support@kajabi.com](mailto:bma.support@kajabi.com) | You need help with your [branded mobile app](https://help.kajabi.com/articles/mobile-apps/branded-app/kajabi-branded-app-overview) | Weekdays: 9am–5:30pm |
**Note:** All times above are Pacific Time.
***
## View conversations
On the **Messages** tab of the conversation widget, you'll find a link to the customer portal. On this portal, you can view conversations you've started with Kajabi Support.
You can access the portal directly at this link:
[https://support.kajabi.com/en/tickets-portal?view\_type=conversations](https://support.kajabi.com/en/tickets-portal?view_type=conversations)
**Notes:**
* The customer portal is available for owners and users of active Kajabi accounts.
* Owners can view all conversations started by owners/users within their account.
* If you're seeing a message that you're not logged in, then follow the steps to start a chat conversation above. Then, click the customer portal link again.
# Send a screenshot to support
Source: https://help.kajabi.com/articles/resources/support/how-to-send-a-screenshot-to-support
Capture and share a screenshot with our support team to help troubleshoot issues faster.
## Overview
Our support team may request a screenshot to gain a better understanding of the issues you are experiencing on Kajabi. Use the built-in tools on your device to capture the issue, then share the image with our support team.
## Take a screenshot
Depending on your device, you have different options for taking a screenshot.
### With Windows
Use the Snipping Tool app included by default with Windows.
[Learn how to use the Snipping Tool app](https://support.microsoft.com/en-us/windows/use-snipping-tool-to-capture-screenshots-00246869-1843-655f-f220-97299b865f6b).
When you capture a snip, it is automatically copied to the Snipping Tool window where you can make changes, save, and share.
To save a snip from the Snipping Tool window:
1. Select the **Save Snip** button after capturing a snip.
2. Enter a file name, location, and type in the **Save As** box, then select **Save**.
### With Mac
Use the Screenshot app included on macOS.
[Learn how to use the Screenshot app](https://support.apple.com/en-us/HT201361).
By default, screenshots save to your desktop with the name "Screen Shot \[date] at \[time].png."
### With an iPhone
[Learn how to take a screenshot with an iPhone](https://support.apple.com/en-us/HT200289).
To find saved screenshots on your phone:
1. Open **Photos**.
2. Go to **Albums** > **Media Types** > **Screenshots**.
## Share a screenshot with support
After capturing a screenshot, send the image directly through the [chat widget to contact our support team](/articles/resources/support/how-to-contact-kajabi-support).
# Send a video to support
Source: https://help.kajabi.com/articles/resources/support/how-to-send-a-video-to-support
Record and share a video with our support team to help troubleshoot issues faster.
## Overview
Our support team may request a video to gain a better understanding of the issues you are experiencing. Use a screen recording tool to capture the issue, then share the recording link or file with our support team.
## Record a video
Use a screen recording tool like [Loom](https://www.loom.com/screen-recorder) or [Vimeo](https://vimeo.com/features/screen-recorder) to record a video and generate a shareable link.
For more information on recording and sharing a video, refer to these guides:
* [Record and share a video with Loom](https://support.loom.com/hc/en-us/articles/360015714197-Getting-Started-Video-Tutorials)
* [Record and share a video with Vimeo](https://vimeo.zendesk.com/hc/en-us/articles/360046142052-Vimeo-Record-Chrome-extension#h_01FKRGM867JDHVBJATFE9NMB63)
**Tip:**
If you are using a Mac, you can use the Screenshot app or QuickTime Player included with macOS. [Learn how to use the Screenshot app or QuickTime Player](https://support.apple.com/en-us/HT208721).
## Share a video with support
### Send a video link
If you used a screen recording tool like [Loom](https://www.loom.com/screen-recorder) or [Vimeo](https://vimeo.com/features/screen-recorder), copy and paste your video link into the [support chat widget](/articles/resources/support/how-to-contact-kajabi-support).
### Send a video file
If you recorded a video on your computer and need to share a file, drag and drop the video directly into the [support chat widget](/articles/resources/support/how-to-contact-kajabi-support).
# Migrate to Kajabi from Podia
Source: https://help.kajabi.com/articles/resources/support/migrate-to-kajabi-from-podia
Move Podia contacts, Courses, and Downloads to Kajabi, grant customers access on import, and migrate Stripe subscriptions.
Moving your business from [**Podia**](https://www.podia.com/) to Kajabi is a **manual migration**; export your contacts and files from Podia, then rebuild your products and pricing in Kajabi. There is no automated Podia importer, so plan the work in stages rather than expecting a one-click transfer.
Kajabi's Contact Importer tool can grant an Offer while it imports, so your Podia customers arrive with their content already unlocked. And, because Podia processes every recurring payment through your own Stripe account, your active subscriptions may be eligible to move into [Kajabi Payments](https://help.kajabi.com/articles/sales/kajabi-payments/kajabi-payments-overview) without customers re-entering card details. Eligibility is decided case by case.
Migrate in this order: export from Podia, rebuild your Products, set up pricing and payments, import contacts and grant access, then migrate your email. Point your domain to Kajabi last — once DNS updates, traffic lands on your Kajabi site, so everything needs to be ready before you make the switch.
## Before you begin
* Start a paid Kajabi subscription. The Kajabi Contact Importer tool is unavailable during a trial.
* Export your Podia contacts and each product's customer list to grant the right access
* Gather your original course videos and files, not Podia's processed copies
* Confirm you can edit DNS at your domain registrar
* Note which Podia products were paid, and at what price, so you can rebuild each Offer
## Export your content and contacts from Podia
### Export your contacts
1. In Podia, click your **site name** and select **Admin** from the dropdown menu.
2. Click **Audience** in the sidebar, then choose **Contacts**.
3. Select the checkbox next to the number of people shown to select everyone.
4. Click the **Actions** drop-down and choose **Export**.
5. Click **Export people** to confirm.
6. Check your email. Podia sends the `.csv` file once the export generates.
### Export each product's customer list
Click **Products** in the sidebar, open the product, click the **more options (...) icon**, and choose **Export customers**. Do this for each paid product.
These per-product lists help you grant the right Kajabi Offers to the right customers. A single combined contact export tells you who your audience is, but not what each person already paid for.
### Download your course files
Download your videos, audio, and attachments from Podia's Files Library so you have local copies to upload to Kajabi.
**Note:** Podia does not store the original files you uploaded. Downloads give you the compressed version it created for streaming. Upload your own master files to Kajabi wherever you still have them, so you are not re-encoding an already-compressed video.
## Rebuild your Products in Kajabi
Every Podia product type has a Kajabi equivalent:
| In Podia | In Kajabi |
| :--------------- | :-------- |
| Online course | Course |
| Digital download | Downloads |
| Community | Community |
| Coaching | Coaching |
In Kajabi, a [**Course**](/articles/products/courses/courses-overview) contains **modules** that group **lessons**, and each lesson holds your text, video, and files. Recreate your Podia course outline as modules and lessons, then upload the content you downloaded.
Learn how to [create and sell downloadable files as a Product](../../products/downloads/create-sell-downloadable-files-as-a-product) for anything that was a Podia digital download.
## Set up pricing and payments
### Connect a payment provider
Connect a payment provider before building Offers, since an Offer needs one to take payment. Kajabi Payments is available to businesses registered in the United States, Canada, Australia, the United Arab Emirates, the United Kingdom, and select European countries.
See [getting started with Kajabi Payments](https://help.kajabi.com/articles/sales/kajabi-payments/kajabi-payments-overview#supported-countries) for your region.
### Create an Offer for each paid product
An **Offer** is what customers actually buy. It packages a Product with a price and a Checkout Page.
From the **Dashboard**, select the **Sales** tab, click **Pricing**, then click **+New Offer** and match the price you charged in Podia.
Learn how to [create an Offer](../../sales/offers/create-an-offer), including payment plans and subscription pricing.
### Move active subscriptions to Kajabi Payments
Podia runs subscriptions and payment plans through your own [Stripe](https://stripe.com/) account, so those subscriptions are already under your control. Kajabi can migrate Stripe subscriptions created outside of Kajabi into [Kajabi Payments](https://help.kajabi.com/articles/sales/kajabi-payments/kajabi-payments-overview), which keeps your recurring revenue running without asking customers to re-enter their card details.
Eligibility is decided case by case. Kajabi's team reviews your Stripe account after you submit a migration request and confirms what is in scope. Some subscriptions qualify and others are skipped, depending on their status and payment method. PayPal subscriptions cannot be migrated so nothing recurring is affected.
Because your Podia subscriptions were created outside Kajabi, customers who are not already a member of your Kajabi site receive the **Member Welcome Email** when their subscription moves.
**Note:** Most migrations finish within 1 to 3 weeks of your request. Plan your domain switch within that timeline.
Learn how to [migrate Stripe subscriptions and payment plans to Kajabi Payments](../../sales/kajabi-payments/migrate-stripe-subscriptions-payment-plans-to-kajabi-payments) for the full requirements, what carries over, and how to submit a request.
## Import your contacts and grant access
### Prepare your CSV
Start from your Podia CSV export and adjust it for Kajabi's Contact Importer tool:
1. Keep **Email** as a column. This field is required.
2. Kajabi also requires a single **Name** field. Combine separate First and Last Name columns into one.
3. You may keep any of these additional columns: **Phone Number**, **Address**, **City**, **State**, **Zip Code**, **Country**, **Tags**, **Notes**.
4. Save the file as **CSV UTF-8 (Comma delimited)**.
**Note:** In order to grant customers access to specific Products when importing to Kajabi, complete separate imports for customers who owned that Product on Podia.
These limits apply to each import:
| Limit | Value |
| :--------------- | :----- |
| Rows per file | 20,000 |
| File size | 30 MB |
| Contacts per day | 40,000 |
Your plan also determines how many contacts your site can hold. Check your [contact usage limits](../../contacts/manage-your-contacts/contact-usage-limits) before importing your Podia lists.
### Import a product's buyers and grant them the Offer
1. From the **Dashboard**, open the **Contacts** tab.
2. Click **All Contacts**.
3. Click **+ Add contacts**.
4. Select **Upload File**, then choose your prepared `.csv` file.
5. Click **Continue to Upload**.
6. On **Map Columns**, review each column and choose **Existing Field**, **New Field**, or **Skip**.
7. On **Bulk Actions**, use **Select offers** to grant the Offer for the product these customers bought, and **Select tags** to tag them (for example, `Podia migration`).
8. Click **Continue to Summary**, review the import, and start it.
Kajabi emails you a confirmation when the import finishes, including a file listing any rows it rejected and why.
Repeat this for each product file, granting a different Offer each time. Only import people who agreed to hear from you. Learn more about [best practices for growing and maintaining your contact lists](../../marketing/email-campaigns/best-practices-for-growing-and-maintaining-your-contact-lists).
**Warning:** Granting an Offer during import creates each person as a customer and sends them the Customer Welcome Email and an Offer Grant Confirmation email. Turn those notifications off first if you do not want your migrated list emailed as it imports.
Learn how to [edit automated email notifications](../../account-settings/notifications/edit-automated-email-notifications) before you start importing.
## Move your email marketing
Your Podia broadcasts and email sequences do not transfer, so rebuild them in Kajabi under **Marketing** > **Email Campaigns**.
[Create an email sequence](../../marketing/email-campaigns/create-an-email-sequence) to replace each Podia sequence. You can also subscribe contacts to a sequence during the import itself, which is a clean way to send a migrated list a "we've moved" welcome.
## Point your domain to Kajabi
Change your domain last, once your Products, Offers, and checkout are live. Until you do, your Podia site is still available to customers.
1. From the **Dashboard**, open **Settings**.
2. Under **Site settings**, click **Domain**.
3. Click **Set up custom domain**, then select **Connect domain to Kajabi**.
4. Follow the steps to update the nameservers at your registrar.
Learn how to [connect a custom domain](../../website/domains/connect-a-custom-domain).
**Note:** DNS changes take time to propagate. Keep your Podia site available until your Kajabi site resolves at your domain and a test purchase succeeds.
## FAQs
### Can Kajabi import my Podia Courses automatically?
No. Course content has to be rebuilt by hand. Download your files from Podia and upload them into Kajabi modules and lessons. There is no automated Podia course importer.
### Will my customers keep their active subscriptions?
Sometimes — Kajabi assesses each migration request individually. Podia bills recurring payments through your own Stripe account, and Kajabi can migrate externally created Stripe subscriptions into Kajabi Payments so customers are not asked to re-enter card details. Submit a migration request to find out whether yours qualify.
### How many contacts can I import at once?
Up to 20,000 rows per file, in a `.csv` no larger than 30 MB, and up to 40,000 contacts per day. Split a larger list across several files.
### Will my customers be emailed when I import them?
Only if you grant them an Offer. Contacts imported without an Offer receive no automatic email. Granting an Offer creates them as customers, which sends the Customer Welcome Email and an Offer Grant Confirmation email.
# Resolve a 500 error on Kajabi
Source: https://help.kajabi.com/articles/resources/support/why-am-i-seeing-a-500-error-when-accessing-kajabi-and-how-can-i-resolve-it
Identify the cause of a 500 error and take steps to restore access to your Kajabi site.
## Overview
A 500 error while accessing Kajabi or its hosted sites indicates a server-side issue, typically caused by an external vendor outage. These outages affect Kajabi's infrastructure rather than your individual settings or account. Common causes include disruptions in services provided by third-party vendors (such as Cloudflare) that Kajabi relies on. These incidents often result in widespread service interruptions, preventing access to sites, accounts, or email links.
## Monitor outage updates
* Check Kajabi's official [Status Page](https://status.kajabi.com) for real-time updates about ongoing incidents or outages to confirm whether the issue affects multiple users or just your account
* Await resolution from the vendor — these outages are typically resolved by the providers once the issue is fixed on their end
## Try local troubleshooting steps
If you want to verify and rule out potential local issues, try the following:
* Clear your browser cache and attempt accessing Kajabi again
* Open an incognito or private browsing window, which bypasses cached data
* Attempt to load the site using a different browser (e.g., Chrome, Firefox)
* Restart your device and try accessing Kajabi again
* Switch to a different network connection, such as mobile data, especially if a firewall or antivirus might be interfering with access
These steps serve as final checks to ensure the issue is not limited to your device or browser. However, in most cases involving 500 errors on Kajabi, local device issues are not the cause.
**Note:**
A 500 error does not indicate a hack or compromise of your Kajabi account. It is a temporary disruption stemming from infrastructure providers, and your data remains secure.
## FAQs
### What should I do if the error persists after a known outage is resolved?
Reach out to our support team for assistance if the 500 error continues after the reported outage has been resolved.
### Does a 500 error mean my account was hacked?
No. A 500 error is a temporary disruption caused by infrastructure providers. Your data remains secure.
# Claim a Hero Program milestone reward
Source: https://help.kajabi.com/claim-a-hero-program-milestone-reward
See how revenue milestones are calculated, what gift each one earns, and how to claim, track, and troubleshoot a reward.
When you cross a revenue milestone on Kajabi, you earn a **milestone reward** through our Hero Celebrate program. A celebration email will be sent where you can claim a physical gift, plus an optional invitation to share how you built your business. Rewards are part of the Kajabi Hero Program, and they arrive as you grow.
## How revenue milestones are calculated
Your milestone is based on the **total revenue you have earned on Kajabi over the life of your account** — not revenue in a single year or month.
Kajabi calculates it by adding up every successful payment across all Sites in your account, then converting the total to US dollars. Three things follow from that:
* Revenue from every Site in your account counts toward one combined total
* Payments you collect outside Kajabi are not counted, because Kajabi can only see payments processed through it
* If you sell in another currency, your total is converted to US dollars, so the milestone you reach reflects the converted amount
Refunds reduce your total, which means a refund or a shift in exchange rates can move you back below a milestone you had passed.
**Note:** Each milestone can be claimed once. If your account closes and you later reactivate it, milestones you already claimed cannot be claimed again.
## Milestone gifts
Each milestone earns a different gift.
| Milestone | Gift |
| :-------- | :------------------------------------------------------------------------- |
| \$1K | Kajabi Tee |
| \$10K | Fellow Carter Slide Mug |
| \$50K | Leuchtturm1917 Medium Hardcover Notebook + Drehgriffel Nr. 1 Ballpoint Pen |
| \$100K | LARQ Bottle PureVis (17 oz) |
| \$500K | Kajabi Crewneck |
| \$1M | Reward plaque |
| \$10M | Reward plaque |
The \$1K Kajabi Tee and the \$500K Kajabi Crewneck are apparel, so you choose a unisex size when you claim them.
## Claim a reward
1. Open the milestone email Kajabi sends you. The subject line names the milestone you reached, for example *You've hit your \$100k milestone*.
2. Click **Claim Your Reward** to open your personalized claim page.
3. Confirm the gift shown on the page, and select a size if your gift is apparel.
4. Enter the shipping address you want the gift sent to, including a phone number so the shipping carrier can reach you about delivery. Please email [prosupport@swag.com](mailto:prosupport@swag.com) if you need to change the shipping address.
5. Submit the claim to send your gift to fulfillment.
Kajabi ships milestone gifts through Swag Pro, a fulfillment partner. Allow 8–10 weeks for delivery, and use the tracking link in your shipping confirmation for the current status.
**Note:** Sometimes items are delayed, make sure the address you provide is an address you will be at for the next 4 weeks.
## Receive the milestone email
The milestone email is the only way to claim a reward, so it is worth confirming that Kajabi can reach you before you hit your next milestone.
1. From the Kajabi Dashboard, open the **Settings** tab.
2. Select **Notifications & Privacy** from your **Account Settings**.
3. Turn on **Notify me when I earn free swag and rewards from Kajabi's Hero Program**.
4. Click **Save** to keep your changes.
**Note:** Milestone emails are sent as Kajabi marketing emails. If you have unsubscribed from Kajabi marketing emails, you will not receive them even with this setting turned on. [Learn how to manage Kajabi marketing emails](/articles/account-settings/notifications/update-email-notifications).
## Share an expert journey
When you hit a milestone, you'll be invited to share the story of how you built your business. It's your call whether you take it. Your milestone gift is yours either way, and sharing your journey unlocks a second bonus gift.
Which kind of conversation you're invited to depends on the milestone you reached.
**\$1K, \$10K, and \$50K: a call with AI JCron**
A short phone conversation, about eight minutes, guided by an AI version of Kajabi co-CEO, JCron. He'll ask where you started, the turning points along the way, the Kajabi tools you leaned on, and what advice you'd give someone starting out.
You can ask to be called right away or pick a time that works for you, and you'll get a reminder text five minutes before. The call is recorded and transcribed. At the end, you'll be asked two things: whether you're comfortable with Kajabi sharing parts of your story publicly, and whether you'd be interested in a conversation with the real JCron.
**\$100K and above: a live call with JCron**
Instead of the AI-guided call, you'll be invited to book time with JCron directly through Calendly and pick a slot that suits your schedule. Same territory, your origin story, the turning points, what you'd tell someone starting out, just a real conversation rather than a guided one.
**Either way**
If you agree to let Kajabi share your story, we'll show you anything before it goes out. Saying no changes nothing about your gifts.
## Troubleshooting
### Milestone email never arrived
Search your inbox for the milestone amount, for example *\$100k milestone*, and check your spam folder. Then confirm your Hero Program reward notification is turned on and that you are still subscribed to Kajabi marketing emails.
If you qualify and still cannot find the email, [contact Kajabi Support](/articles/resources/support/how-to-contact-kajabi-support) with your account ID so the email can be sent again.
### Gift has not arrived
Please allow 8–10 weeks from the date you claimed it. After that, check the tracking link in your shipping confirmation email, then email [prosupport@swag.com](mailto:prosupport@swag.com) with your order number for a delivery update.
### Gift arrived damaged, in the wrong size, or as the wrong item
Email [prosupport@swag.com](mailto:prosupport@swag.com) within 14 days of receiving the item. Kajabi does not offer returns or exchanges, but a defective or incorrect item is replaced with a gift of equal value.
### Shipping address will not confirm
International addresses can fail confirmation with the shipping carrier. [Contact Kajabi Support](/articles/resources/support/how-to-contact-kajabi-support) with your country, country code, phone number, full address, city, state or region, and postal code, and your size if your gift is apparel, so the order can be completed manually.
### Milestone reached with revenue collected outside Kajabi
Kajabi cannot see payments processed outside the platform. [Contact Kajabi Support](/articles/resources/support/how-to-contact-kajabi-support) with a screenshot from your payment processor showing the total you reached, and your milestone can be verified manually.
## FAQs
### Do payments I collect outside Kajabi count toward a milestone?
Not automatically. Milestones are calculated from payments processed through Kajabi. If you reached a milestone using another payment processor, contact Kajabi Support with proof from that processor and your milestone can be verified manually.
### Can I claim a milestone I reached earlier but never received?
Yes. Contact Kajabi Support with your full name, account ID, email address, and shipping address, and your reward can be fulfilled.
### Can anyone other than the account owner claim a reward?
No. Milestone rewards are issued to the account owner on an active Kajabi account.
### Are the \$1M and \$10M plaques personalized?
No. The plaque is a standard Kajabi design and is not engraved with a name or business name.
### Can I request a second plaque for a business partner?
Yes, by request during an active reward claim. Contact Kajabi Support with your business partner's full name, email address, and Kajabi account ID before you finish claiming. A second plaque cannot be added after a claim is complete.
### Will I be charged customs, duties, or taxes on a gift?
Any customs, duties, or import taxes are your responsibility. EU recipients should expect VAT to be collected before delivery — [learn how EU VAT affects Kajabi swag shipments](/articles/resources/resources/kajabi-swag-shipment-changes).
### Can I resell a milestone gift?
No. Milestone gifts cannot be resold.
# Add tag to contact
Source: https://help.kajabi.com/api-reference/contacts/add-tag-to-contact
/openapi.yaml post /v1/contacts/{contact_id}/relationships/tags
Add tag relationships to contact resource using a list of resource identifiers
Request body includes a list of resource identifiers, `id: CONTACT_TAG_ID`, `type: "contact_tags"`.
```json
{ "data": [{ "type": "contact_tags", "id": "456" }] }
```
The response body will include the updated list of tag relationships.
Example response body:
```json
{ "data": [{ "type": "contact_tags", "id": "123" }, { "type": "contact_tags", "id": "456" }] }
```
# Contact details
Source: https://help.kajabi.com/api-reference/contacts/contact-details
/openapi.yaml get /v1/contacts/{id}
Show details for a contact
## Contact Attributes
* `name` (string) - The name of the contact
* `email` (string) - The email of the contact, must be a valid and deliverable email address
* `address_line_1` (string) - The first line of the contact's address
* `address_line_2` (string) - The second line of the contact's address
* `address_city` (string) - The city of the contact's address
* `address_country` (string) - The country of the contact's address
* `address_state` (string) - The state of the contact's address
* `address_zip` (string) - The zip code of the contact's address
* `phone_number` (string) - The phone number of the contact
* `business_number` (string) - The business phone number of the contact
* `subscribed` (boolean) - Whether the contact has opted in to receive marketing communications from the site
* `external_user_id` (string) - The external user ID of the contact/customer; this field is only updatable if the contact has been granted an offer or made a purchase
* `created_at` (string) - The date and time the contact was created
* `updated_at` (string) - The date and time the contact was last updated
## Including Relationships
Use the `include` parameter to include related resources in the response:
* `GET /v1/contacts/123?include=offers,tags,customer`
Response will include the related contact offers, tags and customer resources
```json
{
"data": {
"id": "123",
"type": "contacts",
"attributes": {
"name": "John Smith",
"email": "john@example.com",
"address_line_1": null,
"address_line_2": null,
"address_city": null,
"address_country": null,
"address_state": null,
"address_zip": null,
"phone_number": null,
"business_number": null,
"subscribed": false,
"external_user_id": null,
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"links": {
"customer": "https://api.kajabi.com/v1/customers/321"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
},
"offers": {
"links": {
"data": [
{ "id": "456", "type": "offers" }
],
"self": "https://api.kajabi.com/v1/contacts/123/relationships/offers"
}
},
"tags": {
"data": [
{ "id": "789", "type": "contact_tags" }
],
"links": {
"self": "https://api.kajabi.com/v1/contacts/123/relationships/tags"
}
},
"customer": {
"data": {
"id": "321",
"type": "customers"
}
}
}
},
"included": [
{
"id": "456",
"type": "offers",
"attributes": {
"name": "Offer 1",
"description": "Offer 1 description",
"internal_title": "Offer 1",
"price_in_cents": 0,
"payment_type": "free",
"token": "offer_123",
"payment_method": "none",
"price_description": "Free",
"checkout_url": "https://mywebsite.com/offers/456",
"recurring_offer": false,
"subscription": false,
"one_time": true,
"single": false,
"free": true
}
},
{
"id": "789",
"type": "contact_tags",
"attributes": {
"name": "Tag Name"
}
},
{
"id": "321",
"type": "customers",
"attributes": {
"name": "John Smith",
"email": "john@example.com",
"avatar": null,
"external_user_id": "cust_123",
"public_bio": null,
"public_location": null,
"public_website": null,
"socials": null,
"net_revenue": "0.0",
"sign_in_count": 0,
"last_request_at": null,
"bounced_at": null,
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
}
}
]
}
```
## Sparse Fields
Use the `fields[contacts]` parameter to get specific fields for a contact:
* `GET /v1/contacts/123?fields[contacts]=name,email`
Response will include only requested fields for the contact
```json
{
"data": {
"id": "123",
"type": "contacts",
"attributes": {
"name": "John Smith",
"email": "john@example.com"
}
}
}
```
## Using Multiple Parameters Together
You can combine multiple parameters to include related resources and get specific fields for a contact:
* `GET /v1/contacts/123?include=customer&fields[contacts]=email&fields[customers]=net_revenue`
Response will include the related customer resource and only requested fields for the contact and customer
```json
{
"data": {
"id": "123",
"type": "contacts",
"attributes": {
"email": "sam@example.com"
},
"relationships": {}
},
"included": [
{
"id": "321",
"type": "customers",
"attributes": {
"net_revenue": "0.0"
}
}
]
}
```
# Create a contact
Source: https://help.kajabi.com/api-reference/contacts/create-a-contact
/openapi.yaml post /v1/contacts
Create a contact for a site.
## Contact attributes
* New contact does not support `external_user_id` attribute.
* See custom_fields endpoint to discover attributes for using custom fields attributes.
## Create a contact
Request body must include a `site` relationship.
Example request body:
```json
{
"data": {
"type": "contacts",
"attributes": {
"name": "John Doe",
"email": "john.doe@example.com"
},
"relationships": {
"site": {
"data": {
"type": "sites",
"id": "123"
}
}
}
}
}
```
Response will include the newly created contact resource.
```json
{
"data": {
"id": "456",
"type": "contacts",
"attributes": {
"name": "John Doe",
"email": "john.doe@example.com",
"address_line_1": null,
"address_line_2": null,
"address_city": null,
"address_country": null,
"address_state": null,
"address_zip": null,
"phone_number": null,
"business_number": null,
"subscribed": false,
"external_user_id": null,
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}
}
```
# Delete contact
Source: https://help.kajabi.com/api-reference/contacts/delete-contact
/openapi.yaml delete /v1/contacts/{id}
# Grant offer to contact
Source: https://help.kajabi.com/api-reference/contacts/grant-offer-to-contact
/openapi.yaml post /v1/contacts/{contact_id}/relationships/offers
## Grant offer(s) to a contact
Create an offer grant for a contact which results in creating a new customer record for your contact.
In the request body inlcude offer resource identifier(s), `id: OFFER_ID`, `type: "offers"`.
To skip sending a welcome email to the customer include a `meta` object in the request body.
```
{ "data": [{"type": "offers", "id": "123"}], "meta": {"send_customer_welcome_email": false}}
```
The `meta` attribute `send_customer_welcome_email` as `false` will prevent sending the welcome email.
(The default behavior is to send the welcome email.)
## Response
* A successful response body will list the offers related to the contact
* An error response will include a JSON body with error details.
## Behaviors and side effects
* Checks if the contact was already granted the offer
* Checks for existing customerby email
* If no existing customer, generates a new customer record with contact details
* May send a welcome email to the customer
* May send a gift granted email if this is a gift offer
* Triggers automations if configured
# List contact's offers
Source: https://help.kajabi.com/api-reference/contacts/list-contacts-offers
/openapi.yaml get /v1/contacts/{contact_id}/relationships/offers
Get the contact's relationship to offers (granted).
Response is a list of resource identifiers
```json
{
"data": [
{ "type": "offers", "id": "123" },
{ "type": "offers", "id": "456" }
]
}
```
The related tag resources are available using the GET `api/v1/offers` endpoint.
The resource identifier includes the offer id and type.
Example URLs: `/api/v1/offers/123`, `/api/v1/offers/456`
# List contact's tags
Source: https://help.kajabi.com/api-reference/contacts/list-contacts-tags
/openapi.yaml get /v1/contacts/{contact_id}/relationships/tags
Get the contact's relationship to tags, response is a list of resource identifiers
Response is a list of resource identifiers
```json
{
"data": [
{ "type": "contact_tags", "id": "123" },
{ "type": "contact_tags", "id": "456" }
]
}
```
The related tag resources are available using the GET `api/v1/contact_tags` endpoint.
The resource identifier includes the contact tag id and type.
Example URLs: `/api/v1/contact_tags/123`, `/api/v1/contact_tags/456`
# Remove tag from contact
Source: https://help.kajabi.com/api-reference/contacts/remove-tag-from-contact
/openapi.yaml delete /v1/contacts/{contact_id}/relationships/tags
Remove tag relationships to contact resource using a list of resource identifiers.
Request body includes a list of resource identifiers, `id: CONTACT_TAG_ID`, `type: "contact_tags"`.
```json
{ "data": [{ "type": "contact_tags", "id": "456" }] }
```
The response body will include the updated list of tag relationships.
Example response body:
```json
{ "data": [{ "type": "contact_tags", "id": "123" }] }
```
# Replace offers for contact
Source: https://help.kajabi.com/api-reference/contacts/replace-offers-for-contact
/openapi.yaml patch /v1/contacts/{contact_id}/relationships/offers
## Replace offer grant(s) for a contact
Replace offer grants (grants and revokes offers to/from contact) using a list of resource identifiers
In the request body inlcude offer resource identifier(s), `id: OFFER_ID`, `type: "offers"`.
```
{ "data": [{"type": "offers", "id": "456"}, {"type": "offers", "id": "789"}] }
```
## Response
* A successful response body will list the offers related to the contact
* An error response will include a JSON body with error details.
# Replace tags for contact
Source: https://help.kajabi.com/api-reference/contacts/replace-tags-for-contact
/openapi.yaml patch /v1/contacts/{contact_id}/relationships/tags
Replace tag relationships to contact resource using a list of resource identifiers.
Request body includes a list of resource identifiers, `id: CONTACT_TAG_ID`, `type: "contact_tags"`.
```json
{ "data": [{ "type": "contact_tags", "id": "123" }, { "type": "contact_tags", "id": "456" }] }
```
The response body will include the updated list of tag relationships.
```json
{ "data": [{ "type": "contact_tags", "id": "123" }, { "type": "contact_tags", "id": "456" }] }
```
# Revoke offer from contact
Source: https://help.kajabi.com/api-reference/contacts/revoke-offer-from-contact
/openapi.yaml delete /v1/contacts/{contact_id}/relationships/offers
## Revoke offer grant(s) for a contact
Revoke offer grant(s) using a list of resource identifiers
In the request body inlcude offer resource identifier(s), `id: OFFER_ID`, `type: "offers"`.
```
{ "data": [{"type": "offers", "id": "123"}] }
```
## Response
* A successful response body will list the offers related to the contact
* An error response will include a JSON body with error details.
## Behaviors and side effects
* Only affects active offers
* Handles both offer purchases and offer grants
* Deactivates all associated product memberships
# Update contact
Source: https://help.kajabi.com/api-reference/contacts/update-contact
/openapi.yaml patch /v1/contacts/{id}
## Contact attributes
* A contact with a related customer resource does support `external_user_id` attribute.
* See custom_fields endpoint to discover attributes for using custom fields attributes.
## Update a contact
Example request body:
```json
{
"data": {
"type": "contacts",
"id": "456",
"attributes": {
"phone_number": "12134567890"
}
}
}
```
Response will include the update contact resource.
```json
{
"data": {
"id": "456",
"type": "contacts",
"attributes": {
"name": "John Doe",
"email": "john.doe@example.com",
"address_line_1": null,
"address_line_2": null,
"address_city": null,
"address_country": null,
"address_state": null,
"address_zip": null,
"phone_number": "12134567890",
"business_number": null,
"subscribed": false,
"external_user_id": null,
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}
}
```
# Course details
Source: https://help.kajabi.com/api-reference/courses/course-details
/openapi.yaml get /v1/courses/{id}
Details of a course that can be offered to a contact or purchased
## Course Attributes
* `created_at` (string) - The date and time the course was created
* `title` (string) - The title of the course
* `description` (string) - The description of the course
* `thumbnail_url` (string) - The URL of the course thumbnail
## Including Relationships
Use the `include` query parameter to load related resources:
### Include modules, lessons and related media, and offers
* `GET /v1/courses/123?include=modules,lessons,lessons.media,offers`
Response will include the requested related resources
(Note: The responses listed within the "included" array will also include the relationships for each resource)
```json
{
"data": {
"id": "123",
"type": "courses",
"attributes": {
"created_at": "2024-08-06T05:30:38.669Z",
"title": "Advanced Marketing",
"description": "Master level marketing course",
"thumbnail_url": "https://example.com/thumbnail.jpg"
},
"relationships": {
"modules": {
"data": [{
"id": "456",
"type": "modules"
}]
},
"lessons": {
"data": [{
"id": "789",
"type": "lessons"
}]
},
"offers": {
"data": [{
"id": "101",
"type": "offers"
}]
}
},
"included": [{
"id": "456",
"type": "modules",
"attributes": {
"title": "Marketing Fundamentals",
"description": "Introduction to marketing concepts",
"position": 1,
"poster_image_url": "https://example.com/poster.jpg",
"publishing_option": "published"
}
},
{
"id": "789",
"type": "lessons",
"attributes": {
"title": "Marketing Basics",
"position": 1,
"status": "published",
"publishing_option": "published"
}
},
{
"id": "202",
"type": "media",
"attributes": {
"duration_in_minutes": 1,
}
},
{
"id": "101",
"type": "offers",
"attributes": {
"price": 100.0,
"currency": "USD",
"status": "active"
}
}]
}
}
```
## Module attributes
Modules are part of Kajabi's course structure: courses contain modules and modules contain lessons
* `title` (string) - A required field that represents the name or heading of the module. This is used to:
* Identify and display the module in the course outline
* Organize related lessons/content
* Provide navigation structure in the course
* The title must be unique within a course.
* `description` (string) - An optional text field that provides additional information about the module's content. This can be used to:
* Give students an overview of what they'll learn
* Explain the module's objectives
* Provide context for the contained lessons
* Help students understand the module's purpose in the course structure
* `position` (integer) - A numeric field that determines the order of modules within a course. This:
* Used for sorting
* Allows modules to be reordered
* Maintains the course's logical progression
* Is used for navigation between modules
* Starts at position 1 for the first module
* `poster_image_url` (string) - A URL to an image that represents the module visually. This:
* Can be uploaded through the Kajabi admin interface
* Is used as a thumbnail/preview image
* Helps with visual organization of the course
* `publishing_option` (string) - Controls the visibility and availability of the module. Options include:
* `published` - Module is visible and available to students
* `draft` - Module is hidden and not yet available
* Can be used with drip settings for timed release
* Affects the visibility of contained lessons
* Syncs with the course's overall publishing status
## Lesson attributes
Lessons can include various types of content: text content (body), videos, audio, quizzes, assessments, and downloads.
* `title` (string) - A required field that represents the name or heading of the lesson. This:
* Must be present
* Has a maximum length of 200 characters
* Is used for display and navigation
* Can be searched (using pg_search)
* Is used in course outlines and navigation
* `position` (integer) - A numeric field that determines the order of lessons within a module (category). This:
* Usedfor sorting (ranks :sort, column: :position)
* Is scoped within each module
* Allows lessons to be reordered
* Maintains the logical flow of content
* Is used for navigation between lessons
* `status` (string) - An field that tracks the lesson's processing state:
* `ready` - Default state, lesson is ready for use
* `duplicating` - Lesson is being copied
* `failed` - An error occurred during processing
* This is particularly relevant for lessons with media content or during duplication.
* `publishing_option` (string) - Controls the visibility and availability of the lesson. Options include:
* `draft` - Lesson is hidden and not yet available to students
* `published` - Lesson is visible and available (sets publish_at to current time)
* `drip` - Lesson becomes available after a specified number of days
* `locked` - Lesson is locked until certain conditions are met (e.g., completing previous lessons)
## Media attributes
* `duration_in_minutes` (float) - The length of a media file (typically video or audio) in minutes.
## Sparse Fields
Use the `fields` parameter to request only specific attributes:
### Only return title and thumbnail_url attributes
* `GET /v1/courses/123?fields[courses]=title,thumbnail_url`
Response will only include requested fields
```json
{
"data": {
"id": "123",
"type": "courses",
"attributes": {
"title": "Marketing Fundamentals",
"thumbnail_url": "https://example.com/thumbnail.jpg"
}
}
}
```
## Using Multiple Parameters Together
You can combine sparse fields and include in a single request:
### Get course details with modules and lessons, showing only specific fields
* `GET /v1/courses/123?include=modules,lessons,lessons.media&fields[courses]=title,thumbnail_url&fields[modules]=title&fields[lessons]=title&fields[media]=duration_in_minutes`
Response will include related resources with requested fields
```json
{
"data": {
"id": "123",
"type": "courses",
"attributes": {
"title": "Marketing Fundamentals",
"thumbnail_url": "https://example.com/thumbnail.jpg"
},
"relationships": {}
},
"included": [{
"id": "456",
"type": "modules",
"attributes": {
"title": "Marketing Basics"
}
},
{
"id": "789",
"type": "lessons",
"attributes": {
"title": "Marketing Strategies"
}
},
{
"id": "101",
"type": "media",
"attributes": {
"duration_in_minutes": 30
}
}]
}
```
# List courses
Source: https://help.kajabi.com/api-reference/courses/list-courses
/openapi.yaml get /v1/courses
List of courses that can be offered to a contact or purchased
## Pagination
Use the `page[number]` and `page[size]` query parameters to paginate results:
### Get first page of 10 items
* `GET /v1/courses?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/courses?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/courses?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/courses?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/courses?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/courses?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/courses?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Sorting
Use the `sort` parameter to sort the results:
### Sort by title in ascending order
* `GET /v1/courses?sort=title`
### Sort by title in descending order
* `GET /v1/courses?sort=-title`
Response will include courses sorted by the specified field
```json
{
"data": [
{
"id": "123",
"type": "courses",
"attributes": {
"title": "Advanced Marketing",
"description": "Master level marketing course",
"status": "active"
}
},
{
"id": "456",
"type": "courses",
"attributes": {
"title": "Marketing Basics",
"description": "Introduction to marketing",
"status": "active"
}
}
]
}
```
## Sparse Fields
Use the `fields` parameter to request only specific attributes:
### Only return title and thumbnail_url attributes
* `GET /v1/courses?fields[courses]=title,thumbnail_url`
Response will only include requested fields
```json
{
"data": [{
"id": "123",
"type": "courses",
"attributes": {
"title": "Marketing Fundamentals",
"thumbnail_url": "https://example.com/thumbnail.jpg"
}
}]
}
```
## Filter by Site ID
Use the `filter[site_id]` parameter to get courses for a specific site:
### Get courses for site with ID 123
* `GET /v1/courses?filter[site_id]=123`
Response will only include courses for that site
```json
{
"data": [{
"id": "456",
"type": "courses",
"attributes": {
"title": "Marketing Fundamentals",
"description": "Introduction to marketing concepts",
"status": "active"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Filter by Title Contains
Use the `filter[title_cont]` parameter to find courses where the title contains specific text:
### Get courses with titles containing "marketing"
* `GET /v1/courses?filter[title_cont]=marketing`
Response will include courses with matching titles
```json
{
"data": [{
"id": "456",
"type": "courses",
"attributes": {
"title": "Marketing Fundamentals",
"description": "Introduction to marketing concepts",
"status": "active"
}
}]
}
```
## Filter by Description Contains
Use the `filter[description_cont]` parameter to find courses where the description contains specific text:
### Get courses with descriptions containing "marketing"
* `GET /v1/courses?filter[description_cont]=marketing`
Response will include courses with matching descriptions
```json
{
"data": [{
"id": "456",
"type": "courses",
"attributes": {
"title": "Marketing Fundamentals",
"description": "Introduction to marketing concepts and strategies",
"status": "active"
}
}]
}
```
## Using Multiple Parameters Together
You can combine pagination, sparse fields, filtering and sorting in a single request:
### Get first page of 10 courses for site 123, sorted by title, showing only specific fields
* `GET /v1/courses?page[number]=1&page[size]=10&filter[site_id]=123&sort=title&fields[courses]=title,thumbnail_url`
Response will include pagination, sorted filtered results with requested fields
```json
{
"data": [{
"id": "456",
"type": "courses",
"attributes": {
"title": "Advanced Marketing",
"thumbnail_url": "https://example.com/thumbnail1.jpg"
}
},
{
"id": "789",
"type": "courses",
"attributes": {
"title": "Marketing Basics",
"thumbnail_url": "https://example.com/thumbnail2.jpg"
}
}],
"links": {
"self": "https://api.kajabi.com/v1/courses?page[number]=1&page[size]=10&filter[site_id]=123&sort=title&fields[courses]=title,thumbnail_url",
"first": "https://api.kajabi.com/v1/courses?page[number]=1&page[size]=10&filter[site_id]=123&sort=title&fields[courses]=title,thumbnail_url",
"next": "https://api.kajabi.com/v1/courses?page[number]=2&page[size]=10&filter[site_id]=123&sort=title&fields[courses]=title,thumbnail_url",
"last": "https://api.kajabi.com/v1/courses?page[number]=3&page[size]=10&filter[site_id]=123&sort=title&fields[courses]=title,thumbnail_url"
},
"meta": {
"total_pages": 3,
"total_count": 25,
"current_page": 1
}
}
```
# Custom field details
Source: https://help.kajabi.com/api-reference/custom-fields/custom-field-details
/openapi.yaml get /v1/custom_fields/{id}
## Custom Field attributes
* `handle` (string) - The key for a `contact` resource, e.g. `custom_1`, `custom_2`, `custom_3`
* `title` (string) - The title of the custom field
* `type` (string) - The type of the custom field
* `required` (boolean) - Whether the custom field is required
* `archived` (boolean) - Whether the custom field is archived
## Sparse Fields
Use the `fields[custom_fields]` parameter to include only specific attributes:
### Include only handle and title fields
* `GET /v1/custom_fields/123?fields[custom_fields]=handle,title`
Response will include only the specified fields
```json
{
"data": {
"id": "123",
"type": "custom_fields",
"attributes": {
"handle": "custom_1",
"title": "Favorite Song"
}
}
}
```
# List custom fields
Source: https://help.kajabi.com/api-reference/custom-fields/list-custom-fields
/openapi.yaml get /v1/custom_fields
## Custom Field attributes
The 'handle' attribute may be used as a key for a contact resource, e.g. custom_1, custom_2, custom_3
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/custom_fields?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/custom_fields?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://app.kajabi.com/api/v1/custom_fields?page[number]=2&page[size]=10",
"first": "https://app.kajabi.com/api/v1/custom_fields?page[number]=1&page[size]=10",
"prev": "https://app.kajabi.com/api/v1/custom_fields?page[number]=1&page[size]=10",
"next": "https://app.kajabi.com/api/v1/custom_fields?page[number]=3&page[size]=10",
"last": "https://app.kajabi.com/api/v1/custom_fields?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Filter by Site ID
Use the `filter[site_id]` parameter to get custom fields for a specific site:
### Get custom fields for site with ID 123
* `GET /v1/custom_fields?filter[site_id]=123`
Response will only include custom fields for that site
```json
{
"data": [
{
"id": "123",
"type": "custom_fields",
"attributes": {
"handle": "custom_1",
"title": "Favorite Song",
"type": "TextField",
"required": false
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}
]
}
```
## Sorting
Use the `sort` parameter to sort the results:
### Sort by title in ascending order
* `GET /v1/custom_fields?sort=title`
### Sort by title in descending order
* `GET /v1/custom_fields?sort=-title`
## Filter by Title Contains
Use the `filter[title_cont]` parameter to find custom fields where the title contains specific text:
### Get custom fields with titles containing "favorite"
* `GET /v1/custom_fields?filter[title_cont]=favorite`
Response will include custom fields with matching titles
```json
{
"data": [{
"id": "123",
"type": "custom_fields",
"attributes": {
"handle": "custom_1",
"title": "Favorite Song",
"type": "TextField",
"required": false
}
},
{
"id": "456",
"type": "custom_fields",
"attributes": {
"handle": "custom_2",
"title": "Favorite Movie",
"type": "TextField",
"required": false
}
}]
}
```
## Filter by Required Field
Use the `filter[required_eq]` parameter to find custom fields based on their required status:
### Get custom fields that are required
* `GET /v1/custom_fields?filter[required_eq]=true`
Response will include custom fields that are required
```json
{
"data": [{
"id": "123",
"type": "custom_fields",
"attributes": {
"handle": "custom_1",
"title": "Phone Number",
"type": "TextField",
"required": true
}
}]
}
```
## Using Multiple Parameters Together
You can combine pagination, sorting, sparse fields and filtering in a single request:
### Get page 2 of custom fields for site 123, sorted by title descending, including only handle and title fields
* `GET /v1/custom_fields?page[number]=2&page[size]=10&sort=-title&filter[site_id]=123&fields[custom_fields]=handle,title`
Response will include paginated and filtered custom fields with sparse fields
```json
{
"data": [
{
"id": "456",
"type": "custom_fields",
"attributes": {
"handle": "custom_2",
"title": "Favorite Movie"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}
],
"links": {
"self": "https://app.kajabi.com/api/v1/custom_fields?page[number]=2&page[size]=10&sort=-title&filter[site_id]=123&fields[custom_fields]=handle,title",
"first": "https://app.kajabi.com/api/v1/custom_fields?page[number]=1&page[size]=10&sort=-title&filter[site_id]=123&fields[custom_fields]=handle,title",
"prev": "https://app.kajabi.com/api/v1/custom_fields?page[number]=1&page[size]=10&sort=-title&filter[site_id]=123&fields[custom_fields]=handle,title",
"next": null,
"last": "https://app.kajabi.com/api/v1/custom_fields?page[number]=2&page[size]=10&sort=-title&filter[site_id]=123&fields[custom_fields]=handle,title"
},
"meta": {
"total_pages": 2,
"total_count": 15,
"current_page": 2
}
}
```
# Customer details
Source: https://help.kajabi.com/api-reference/customers/customer-details
/openapi.yaml get /v1/customers/{id}
Show customer details
* The `name` and `email` attributes are kept in sync with the related `contact` resource
* The `external_user_id` attribute may be used as a customer reference in an external system
## Customer Attributes
* `name` (string) - The customer's full name. This is a required field and can be either user-provided or auto-generated from their email address if left blank.
* `email` (string) - The customer's email address. This is a required field and must be unique within a site. It's automatically downcased and stripped of whitespace. Used for authentication and communication.
* `avatar` (string) - A URL to the customer's profile image. Can be either a custom uploaded avatar or falls back to Gravatar. If not set, defaults to a blank image.
* `external_user_id` (string) - An optional external identifier that can be used to link the customer to external systems. Must be unique within a site.
* `public_bio` (string) - A text field containing the customer's public biography or description. This is optional and can be displayed in community/social features.
* `public_location` (string) - A text field for the customer's public location information. Optional field used for community/social features.
* `public_website` (string) - The customer's website URL. This is validated to ensure it's a proper URL format and is transformed to ensure proper formatting.
* `socials` (object) - A collection of the customer's social media links and profiles.
* `net_revenue` (string) - The total revenue generated by this customer through their purchases. This is calculated from their successful payment transactions.
* `sign_in_count` (integer) - A counter tracking how many times the customer has signed into their account.
* `last_request_at` (string) - Timestamp of the customer's most recent activity or request. Used to track user engagement and activity.
* `bounced_at` (string) - Timestamp indicating when the customer's email started bouncing. This is reset if the email address is changed.
* `created_at` (string) - Timestamp when the customer record was created.
* `updated_at` (string) - Timestamp when the customer record was last updated.
## Include Related Resources
Use the `include` parameter to include related resources:
### Include offers and products
* `GET /v1/customers/123?include=contact,offers,products`
Response will include related resources
```json
{
"data": {
"id": "123",
"type": "customers",
"attributes": {
"name": "Alice Smith",
"email": "alice@example.com",
"avatar": null,
"external_user_id": "cust_123",
"public_bio": null,
"public_location": null,
"public_website": null,
"socials": null,
"net_revenue": "0.0",
"sign_in_count": 0,
"last_request_at": null,
"bounced_at": null,
"created_at": "2021-01-01T00:00:00Z",
"updated_at": "2021-01-01T00:00:00Z"
},
"links": {
"contact": "https://app.kajabi.com/api/v1/contacts/321"
},
"relationships": {
"contact": {
"data": {
"id": "321",
"type": "contacts"
}
},
"offers": {
"data": [{ "id": "456", "type": "offers" }],
"links": {
"self": "https://app.kajabi.com/api/v1/customers/123/relationships/offers"
}
},
"products": {
"data": [{ "id": "789", "type": "products" }]
}
}
},
"included": [
{
"id": "456",
"type": "offers",
"attributes": {
"name": "Offer 1",
"description": "Offer 1 description",
"internal_title": "Offer 1",
"price_in_cents": 0,
"payment_type": "free",
"token": "offer_123",
"payment_method": "none",
"price_description": "Free",
"checkout_url": "https://mywebsite.com/offers/456",
"recurring_offer": false,
"subscription": false,
"one_time": true,
"single": false,
"free": true
}
},
{
"id": "789",
"type": "products",
"attributes": {
"created_at": "2024-11-12T23:43:09.551Z",
"title": "Course 1",
"description": "Course 1 description",
"status": "ready",
"members_aggregate_count": 0,
"product_type_name": "Course",
"product_type_id": 789,
"publish_status": "published",
"thumbnail_url": null
}
},
{
"id": "321",
"type": "contacts",
"attributes": {
"name": "Alice Smith",
"email": "alice@example.com",
"address_line_1": null,
"address_line_2": null,
"address_city": null,
"address_country": null,
"address_state": null,
"address_zip": null,
"phone_number": null,
"business_number": null,
"subscribed": false,
"external_user_id": null,
"created_at": "2024-11-20T18:53:19.389Z",
"updated_at": "2024-11-20T18:53:19.389Z"
}
}
]
}
```
## Sparse Fields
Use the `fields[customers]` parameter to request only specific attributes:
### Only return name and email attributes
* `GET /v1/customers/123?fields[customers]=name,email`
Response will only include requested fields
```json
{
"data": {
"id": "123",
"type": "customers",
"attributes": {
"name": "Alice Smith",
"email": "alice@example.com"
}
}
}
```
## Using Multiple Parameters Together
You can combine filtering, sparse fields, pagination and search in a single request:
* `GET /v1/customers/123?include=products&fields[customers]=name&fields[product]=title`
Response will include related resources with sparse fields
```json
{
"data": {
"id": "123",
"type": "customers",
"attributes": {
"name": "Alice Smith"
},
"relationships": {}
},
"included": [
{
"id": "789",
"type": "products",
"attributes": {
"title": "Course 1"
}
}
]
}
```
# Grant offer to customer
Source: https://help.kajabi.com/api-reference/customers/grant-offer-to-customer
/openapi.yaml post /v1/customers/{customer_id}/relationships/offers
## Grant offer(s) to a customer
Create an offer grant for a customer.
In the request body inlcude offer resource identifier(s), `id: OFFER_ID`, `type: "offers"`.
```
{ "data": [{"type": "offers", "id": "123"}] }
```
## Response
* A successful response body will list the offers related to the customer
* An error response will include a JSON body with error details.
## Behaviors and side effects
* Checks if the customerwas already granted the offer
* May send a gift granted email if this is a gift offer
* Triggers automations if configured
# List customers
Source: https://help.kajabi.com/api-reference/customers/list-customers
/openapi.yaml get /v1/customers
List of customers
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/customers?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/customers?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://app.kajabi.com/api/v1/customers?page[number]=2&page[size]=10",
"first": "https://app.kajabi.com/api/v1/customers?page[number]=1&page[size]=10",
"prev": "https://app.kajabi.com/api/v1/customers?page[number]=1&page[size]=10",
"next": "https://app.kajabi.com/api/v1/customers?page[number]=3&page[size]=10",
"last": "https://app.kajabi.com/api/v1/customers?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Sorting
* The default Sorting is by created_at in descending order (newest first)
Sorting by created_at in ascending order (oldest first)
* `GET /v1/customers?filter[site_id]=123&sort=created_at`
Use the `sort` parameter to sort the results:
### Sort by name in ascending order
* `GET /v1/customers?filter[site_id]=123&sort=name`
### Sort by email in descending order
* `GET /v1/customers?filter[site_id]=123&sort=-email`
### Sort by net_revenue in ascending order
* `GET /v1/customers?filter[site_id]=123&sort=net_revenue`
### Sort by last_request_at in descending order
* `GET /v1/customers?filter[site_id]=123&sort=-last_request_at`
Response will include customers sorted by the specified field
```json
{
"data": [{
"id": "123",
"type": "customers",
"attributes": {
"name": "Alice Smith",
"email": "alice@example.com",
"external_user_id": "cust_123"
}
}]
}
```
## Sparse Fields
Use the `fields[customers]` parameter to request only specific attributes:
### Only return name and email attributes
* `GET /v1/customers?fields[customers]=name,email`
Response will only include requested fields
```json
{
"data": [{
"id": "123",
"type": "customers",
"attributes": {
"name": "Alice Smith",
"email": "alice@example.com"
}
}]
}
```
## Filtering
Use the `filter[site_id]` parameter to filter customers by site:
### Get customers for site with ID 123
* `GET /v1/customers?filter[site_id]=123`
Response will include only customers from the specified site
```json
{
"data": [{
"id": "456",
"type": "customers",
"attributes": {
"name": "Alice Smith",
"email": "alice@example.com",
"external_user_id": "cust_123"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Using Indexed Data Search
```json
{
"data": [{
"id": "456",
"type": "customers",
"attributes": {
"name": "John Smith",
"email": "smith.john@example.com"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Using Multiple Filters
You can combine multiple filter parameters to refine your search:
### Get customers from site 123 matching search term
* `GET /v1/customers?filter[site_id]=123&filter[search]=smith`
Response will include only customers from the specified site matching the search term
```json
{
"data": [{
"id": "456",
"type": "customers",
"attributes": {
"name": "Alice Smith",
"email": "alice@example.com",
"external_user_id": "cust_123"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Filtering by Site and Offer
You can filter customers by both site and offer ownership:
### Get customers from site 123 who have been granted offer 789
* `GET /v1/customers?filter[site_id]=123&filter[has_offer_id]=789`
Response will include only customers from the specified site who have been granted the offer
```json
{
"data": [{
"id": "456",
"type": "customers",
"attributes": {
"name": "Alice Smith",
"email": "alice@example.com",
"external_user_id": "cust_123"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
},
"offers": {
"links": {
"self": "https://app.kajabi.com/api/v1/customers/456/relationships/offers",
"related": "https://app.kajabi.com/api/v1/customers/456/offers"
}
}
}
}]
}
```
## Filtering by Site and Product
You can filter customers by both site and product ownership:
### Get customers from site 123 who have purchased product 789
* `GET /v1/customers?filter[site_id]=123&filter[has_product_id]=789`
Response will include only customers from the specified site who have purchased the product
```json
{
"data": [{
"id": "456",
"type": "customers",
"attributes": {
"name": "Alice Smith",
"email": "alice@example.com",
"external_user_id": "cust_123"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
},
"offers": {
"links": {
"self": "https://app.kajabi.com/api/v1/customers/456/relationships/offers",
"related": "https://app.kajabi.com/api/v1/customers/456/offers"
}
}
}
}]
}
```
## Using Multiple Parameters Together
You can combine filtering, sparse fields, pagination and search in a single request:
### Get page 2 of customers from site 123, including only name and email fields, searching for "smith"
* `GET /v1/customers?filter[site_id]=123&fields[customers]=name,email&page[number]=2&page[size]=10&filter[search]=smith`
Response will include paginated, filtered customers with sparse fields
```json
{
"data": [{
"id": "456",
"type": "customers",
"attributes": {
"name": "John Smith",
"email": "john.smith@example.com"
}
}],
"links": {
"self": "https://app.kajabi.com/api/v1/customers?filter[site_id]=123&fields[customers]=name,email&page[number]=2&page[size]=10&filter[search]=smith",
"first": "https://app.kajabi.com/api/v1/customers?filter[site_id]=123&fields[customers]=name,email&page[number]=1&page[size]=10&filter[search]=smith",
"prev": "https://app.kajabi.com/api/v1/customers?filter[site_id]=123&fields[customers]=name,email&page[number]=1&page[size]=10&filter[search]=smith",
"next": null,
"last": "https://app.kajabi.com/api/v1/customers?filter[site_id]=123&fields[customers]=name,email&page[number]=2&page[size]=10&filter[search]=smith"
},
"meta": {
"total_pages": 2,
"total_count": 15,
"current_page": 2
}
}
```
# List customer's offers
Source: https://help.kajabi.com/api-reference/customers/list-customers-offers
/openapi.yaml get /v1/customers/{customer_id}/relationships/offers
Get the customer's relationship to offers (granted).
Response is a list of resource identifiers
```json
{
"data": [
{ "type": "offers", "id": "123" },
{ "type": "offers", "id": "456" }
]
}
```
The related tag resources are available using the GET `api/v1/offers` endpoint.
The resource identifier includes the offer id and type.
Example URLs: `/api/v1/offers/123`, `/api/v1/offers/456`
# Replace offers for customer
Source: https://help.kajabi.com/api-reference/customers/replace-offers-for-customer
/openapi.yaml patch /v1/customers/{customer_id}/relationships/offers
## Replace offer grant(s) for a customer
Replace offer grants (grants and revokes offers to/from customer) using a list of resource identifiers
In the request body inlcude offer resource identifier(s), `id: OFFER_ID`, `type: "offers"`.
```
{ "data": [{"type": "offers", "id": "456"}, {"type": "offers", "id": "789"}] }
```
## Response
* A successful response body will list the offers related to the customer
* An error response will include a JSON body with error details.
# Revoke offer from customer
Source: https://help.kajabi.com/api-reference/customers/revoke-offer-from-customer
/openapi.yaml delete /v1/customers/{customer_id}/relationships/offers
## Revoke offer grant(s) for a customer
Revoke offer grant(s) using a list of resource identifiers
In the request body inlcude offer resource identifier(s), `id: OFFER_ID`, `type: "offers"`.
```
{ "data": [{"type": "offers", "id": "123"}] }
```
## Response
* A successful response body will list the offers related to the customer
* An error response will include a JSON body with error details.
## Behaviors and side effects
* Only affects active offers
* Handles both offer purchases and offer grants
* Deactivates all associated product memberships
# Form details
Source: https://help.kajabi.com/api-reference/forms/form-details
/openapi.yaml get /v1/forms/{id}
Shows details of a form
Forms belong to a site and can be associated with:
* Landing pages
* Offers
* Email sequences
* Events
* Newsletters
## Form Attributes
* `title` (string) - A required field that represents the name or heading of the form. This is used to identify and display the form in the user interface. Forms must have a unique title within a site and can be searched and sorted by this attribute.
* `default` (boolean) - A boolean flag indicating whether this is the default form for the site. Each site can have one default form, which is typically used when no specific form is specified. The default form can be accessed using the special ID "default" in API calls. When true, this form is considered the site's primary contact form.
* `webhook_url` (string) - An optional URL where form submission data will be sent via webhook. This allows integration with external systems. The URL:
* Must be a valid URL format
* Cannot be a redirecting URL
* Is automatically transformed and validated
* Can be used to send form submission data to external services
* `created_at` (string) - Timestamp indicating when the form was created. This is automatically set when the form is first created.
* `updated_at` (string) - Timestamp indicating when the form was last modified. This is automatically updated whenever the form is changed.
## Include Related Resources
Use the `include` parameter to load related resources:
### Include fields, offer, contact_tags
* `GET /v1/forms/123?include=fields,offer,contact_tags`
Response will include the requested related resources
```json
{
"data": {
"id": "123",
"type": "forms",
"attributes": {
"title": "Contact Form",
"default": false,
"webhook_url": null,
"created_at": "2025-02-27T01:03:09.179Z",
"updated_at": "2025-02-27T01:03:25.365Z"
},
"relationships": {
"fields": {
"data": [
{ "id": "456", "type": "fields" },
{ "id": "789", "type": "fields" }
]
},
"offer": {
"data": { "id": "123", "type": "offers" }
},
"contact_tags": {
"data": [
{ "id": "456", "type": "contact_tags" },
{ "id": "789", "type": "contact_tags" }
]
}
}
},
"included": [
{
"id": "456",
"type": "fields", "attributes": { "name": "Name" }
},
{
"id": "789",
"type": "fields", "attributes": { "name": "Email" }
},
{
"id": "123",
"type": "offers", "attributes": { "name": "Offer A" }
},
{
"id": "456",
"type": "contact_tags", "attributes": { "name": "Tag A" }
},
{
"id": "789",
"type": "contact_tags", "attributes": { "name": "Tag B" }
}
]
}
```
### Field Attributes
Fields are used in:
* Contact forms
* Offer forms
* Custom field sets
* Form submissions
The system maintains default fields like `name`, `email`, etc. that cannot be removed
* `title` (string) - The display name or label of the field. This is a required attribute that represents how the field will be shown to users in forms and interfaces. Aside from default fields, custom fields can have user-defined titles.
* `type` (string) - The type of field, which must be one of these predefined types:
* `TextField` - Standard text input
* `PhoneField` - Phone number input
* `EmailField` - Email address input
* `TextAreaField` - Multi-line text input
* `CheckboxField` - Boolean checkbox
* `SelectBoxField` - Dropdown select
* `RadioButtonsField` - Radio button group
* `CountryField` - Country selector
* `MobilePhoneField` - Mobile phone input
* `required` (boolean) - A boolean indicating whether the field must be filled out. For default fields, this is set in the configuration, while custom fields can be marked as required or optional.
* `handle` (string) - A unique identifier for the field within a site.
* A custom handle in the format custom_N where N is a number from 1 to 150
* The handle is used to reference the field in code and templates.
* `select_options` (string) - For fields that have choices (`SelectBoxField`, `RadioButtonsField`), this contains the available options. The options are stored as newline-separated values and must be unique within the field.
* `editable` (boolean) - A boolean indicating whether the field can be modified. Default fields typically have this set to false, while custom fields can be editable.
* `created_at` (string) - Timestamp when the field was created.
* `updated_at` (string) - Timestamp when the field was last updated.
## Sparse Fields
Use the `fields[forms]` parameter to request only specific attributes:
### Only return title and webhook_url attributes
* `GET /v1/forms/123?fields[forms]=title,webhook_url`
Response will only include requested fields
```json
{
"data": [{
"id": "123",
"type": "forms",
"attributes": {
"title": "Contact Form A",
"webhook_url": "https://example.com/webhook"
}
}]
}
```
## Using Multiple Parameters Together
You can combine include and sparse fields in a single request:
### Include fields (only name attribute) and only return title and webhook_url attributes
* `GET /v1/forms/123?include=fields&fields[forms]=title,webhook_url&&fields[fields]=title`
Response will include related fields with sparse fields
```json
{
"data": {
"id": "123",
"type": "forms",
"attributes": {
"title": "Contact Form A",
"webhook_url": "https://example.com/webhook"
},
"relationships": {}
},
"included": [
{
"id": "456",
"type": "fields",
"attributes": {
"title": "Name"
}
},
{
"id": "789",
"type": "fields",
"attributes": {
"title": "Email"
}
}
]
}
```
# Form submission details
Source: https://help.kajabi.com/api-reference/forms/form-submission-details
/openapi.yaml get /v1/form_submissions/{id}
Shows details of a form submission
## Form Submission Attributes
* `name` (string) - The name of the person who submitted the form
* `email` (string) - The email address of the person who submitted the form
* `address_line_1` (string) - First line of address if provided
* `address_line_2` (string) - Second line of address if provided
* `address_city` (string) - City if provided
* `address_country` (string) - Country if provided
* `address_state` (string) - State if provided
* `address_zip` (string) - ZIP/postal code if provided
* `phone_number` (string) - Phone number if provided
* `business_number` (string) - Business number if provided
* `mobile_phone_number` (string) - Mobile phone number if provided
## Custom Fields
Form submissions may also include custom field values that were collected through the form.
## Relationships
Form submissions belong to:
* A site
* A form
## Include Related Resources
Use the `include` parameter to load related resources:
### Include site and form
* `GET /v1/form_submissions/123?include=site,form`
# List form submissions
Source: https://help.kajabi.com/api-reference/forms/list-form-submissions
/openapi.yaml get /v1/form_submissions
Form submissions for authorized sites
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/form_submissions?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/form_submissions?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/form_submissions?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/form_submissions?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/form_submissions?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/form_submissions?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/form_submissions?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Filtering
Use filter parameters to narrow down results:
### Filter by site ID
* `GET /v1/form_submissions?filter[site_id]=123`
### Filter by form ID
* `GET /v1/form_submissions?filter[form_id]=456`
## Sorting
Use the `sort` parameter to sort results:
### Sort by creation date (oldest first)
* `GET /v1/form_submissions?sort=created_at`
### Sort by name (alphabetical)
* `GET /v1/form_submissions?sort=name`
# List forms
Source: https://help.kajabi.com/api-reference/forms/list-forms
/openapi.yaml get /v1/forms
Contact forms for a site
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/forms?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/forms?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/forms?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/forms?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/forms?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/forms?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/forms?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Sorting
Use the `sort` parameter to sort the results:
### Sort by title in ascending order
* `GET /v1/forms?sort=title`
### Sort by title in descending order
* `GET /v1/forms?sort=-title`
Response will include forms sorted by the specified field
```json
{
"data": [
{
"id": "123",
"type": "forms",
"attributes": {
"title": "Contact Form A",
"description": "General contact form"
}
},
{
"id": "456",
"type": "forms",
"attributes": {
"title": "Contact Form B",
"description": "Newsletter signup form"
}
}
]
}
```
## Sparse Fields
Use the `fields[forms]` parameter to request only specific attributes:
### Only return title and description attributes
* `GET /v1/forms?fields[forms]=title,description`
Response will only include requested fields
```json
{
"data": [{
"id": "123",
"type": "forms",
"attributes": {
"title": "Contact Form A",
"description": "General contact form"
}
}]
}
```
## Filter by Site ID
Use the `filter[site_id]` parameter to get forms for a specific site:
### Get forms for site with ID 123
* `GET /v1/forms?filter[site_id]=123`
Response will only include forms for that site
```json
{
"data": [{
"id": "456",
"type": "forms",
"attributes": {
"title": "Contact Form A",
"description": "General contact form"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Filter by Title Contains
Use the `filter[title_cont]` parameter to find forms where the title contains specific text:
### Get forms with titles containing "course"
* `GET /v1/forms?filter[title_cont]=course`
Response will include forms with matching titles
```json
{
"data": [{
"id": "456",
"type": "forms",
"attributes": {
"title": "Course Registration Form",
"description": "Sign up form for online courses"
}
}]
}
```
## Using Multiple Parameters Together
You can combine pagination, sorting, sparse fields and filtering in a single request:
### Get page 2 of forms for site 123, sorted by title descending, including only title and description fields
* `GET /v1/forms?page[number]=2&page[size]=10&sort=-title&filter[site_id]=123&fields[forms]=title,description`
Response will include paginated and filtered forms with sparse fields
```json
{
"data": [
{
"id": "456",
"type": "forms",
"attributes": {
"title": "Newsletter Form",
"description": "Newsletter signup form"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}
],
"links": {
"self": "https://api.kajabi.com/v1/forms?page[number]=2&page[size]=10&sort=-title&filter[site_id]=123&fields[forms]=title,description",
"first": "https://api.kajabi.com/v1/forms?page[number]=1&page[size]=10&sort=-title&filter[site_id]=123&fields[forms]=title,description",
"prev": "https://api.kajabi.com/v1/forms?page[number]=1&page[size]=10&sort=-title&filter[site_id]=123&fields[forms]=title,description",
"next": null,
"last": "https://api.kajabi.com/v1/forms?page[number]=2&page[size]=10&sort=-title&filter[site_id]=123&fields[forms]=title,description"
},
"meta": {
"total_pages": 2,
"total_count": 15,
"current_page": 2
}
}
```
# Submit form
Source: https://help.kajabi.com/api-reference/forms/submit-form
/openapi.yaml post /v1/forms/{id}/submit
## Submit a form
* The `name` and `email` attributes are required.
* The `email` attribute must be a valid and deliverable email address.
Example request body:
```json
{
"data": {
"type": "form_submissions",
"attributes": {
"name": "John Doe",
"email": "john.doe@example.com"
}
}
}
```
Response will include the newly created form submission resource.
```json
{
"data": {
"id": "313",
"type": "form_submissions",
"attributes": {
"name": "John Doe",
"email": "john.doe@example.com",
"address_line_1": null,
"address_line_2": null,
"address_city": null,
"address_country": null,
"address_state": null,
"address_zip": null,
"phone_number": null,
"business_number": null,
"mobile_phone_number": null
},
"relationships": {
"site": {
"data": {
"id": "2",
"type": "sites"
}
},
"form": {
"data": {
"id": "15",
"type": "forms"
}
}
}
}
}
```
## Behaviors and side effects
* Checks for disposable emails
* Validates email deliverability
* Sends double opt-in email if needed
* Subscribes contact (with opt-in handling)
* Subscribes to SMS if applicable
* Adds tags to contact
* Grants offers if configured
* Subscribes to email sequences
* Delivers webhooks
* Triggers automations
# Get payout details
Source: https://help.kajabi.com/api-reference/kajabi-payments-payouts/get-payout-details
/openapi.yaml get /v1/kajabi_payments_payouts/{id}
Get detailed information about a specific Kajabi Payments payout, including all associated transactions.
**Note**: Date fields are returned in UTC:
* `initiated_date` - Payout creation timestamp in UTC
* `estimated_arrival_date` - Expected arrival timestamp in UTC
* `transactions[].created_at` - Transaction timestamp in UTC
## Transaction Fields
Each transaction in the `transactions` array includes:
* **Transaction Type** - Whether or not this transaction was a sale, refund, or adjustment
* **Pricing Type** - When this is a sale this is the offer's pricing type, i.e. one-time, subscription, or payment plan
* **Sales Tax** - The sales tax collected for this transaction
* **Amount** - The transaction amount
* **Currency** - Three-letter currency code (USD, EUR, GBP, etc.)
* **Fee** - The transaction processing fee
* **Net** - The transaction net amount (amount - fee)
* **Customer ID** - Customer ID associated with the transaction
* **Customer Name** - Customer's full name
* **Customer Email** - Customer's email address
* **Offer ID** - When a sale or refund, the ID(s) of the purchased offer
* **Offer Title** - When a sale or refund, the title(s) of the purchased offer
* **Provider** - The payment processor (Kajabi Payments, Stripe, PayPal, etc.)
* **Payment Method** - For a sale or refund, the payment method that was used (Credit Card, etc.)
* **Created At** - When the transaction occurred (in UTC)
* **Coupon Used** - For a sale or refund, the coupon code if one was applied
* **Presented Amount** - The transaction original transaction amount (before currency conversion)
* **Presented Currency** - The transaction original currency code
* **Exchange Rate** - The currency exchange rate applied
* **Quantity** - The quantity of the offer that was purchased
* **Order Number** - For a sale or refund, the order number when an order was purchased
## Transaction Types
* `Sale` - All payments and that were received as part of this payout
* `Refund` - Any refunds that occurred as part of this payout
* `Adjustment` - All other adjustments that occurred as a part of this payout
## Example Response
```json
{
"data": {
"id": "payout_abc123",
"type": "kajabi_payments_payouts",
"attributes": {
"status": "Paid",
"amount": 1450.50,
"currency": "USD",
"initiated_date": "2024-01-10T10:00:00.000Z",
"estimated_arrival_date": "2024-01-17T10:00:00.000Z",
"bank_account": "Chase Bank - 1234",
"transactions": [
{
"transaction_type": "Sales",
"pricing_type": "Subscription",
"sales_tax": 0.0,
"amount": 99.00,
"currency": "USD",
"fee": 3.17,
"net": 95.83,
"customer_id": 789,
"customer_name": "John Doe",
"customer_email": "john@example.com",
"offer_ids": [
101
],
"offer_titles": [
"Premium Membership"
],
"provider": "Kajabi Payments",
"payment_method": "Visa",
"created_at": "2024-01-08T14:30:00.000Z",
"coupon_used": "SAVE20",
"presented_amount": 99.00,
"presented_currency": "USD",
"exchange_rate": 1.0,
"quantity": 1,
"order_number": "ORD-12345"
}
]
}
}
}
```
# List payouts
Source: https://help.kajabi.com/api-reference/kajabi-payments-payouts/list-payouts
/openapi.yaml get /v1/kajabi_payments_payouts
List of Kajabi Payments payouts for a site. Payouts represent transfers of funds from Kajabi to the site owner's connected bank account or payment method.
**Note**: Date fields are returned in UTC:
* `initiated_date` - Payout creation timestamp in UTC
* `estimated_arrival_date` - Expected arrival timestamp in UTC
## Pagination
Use `page[number]` parameter to paginate results:
### Get first page
* `GET /v1/kajabi_payments_payouts?page[number]=1&filter[site_id]=123`
### Get second page
* `GET /v1/kajabi_payments_payouts?page[number]=2&filter[site_id]=123`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/kajabi_payments_payouts?page[number]=2&filter[site_id]=123",
"first": "https://api.kajabi.com/v1/kajabi_payments_payouts?page[number]=1&filter[site_id]=123",
"prev": "https://api.kajabi.com/v1/kajabi_payments_payouts?page[number]=1&filter[site_id]=123",
"next": "https://api.kajabi.com/v1/kajabi_payments_payouts?page[number]=3&filter[site_id]=123",
"last": "https://api.kajabi.com/v1/kajabi_payments_payouts?page[number]=5&filter[site_id]=123"
},
"meta": {
"total": 50,
"pagination": {
"current": 2,
"first": 1,
"prev": 1,
"next": 3,
"last": 5,
"records": 10,
}
}
}
```
## Filtering by Site
Use the `filter[site_id]` parameter to filter payouts by site (required):
### Get payouts for site with ID 123
* `GET /v1/kajabi_payments_payouts?filter[site_id]=123`
## Filtering by Status
Use the `filter[status]` parameter to filter payouts by status:
### Get paid payouts for site with ID 123
* `GET /v1/kajabi_payments_payouts?filter[site_id]=123&filter[status]=paid`
Valid status values:
* `pending` - The payout has been created but hasn't been submitted to the bank yet
* `in_transit` - The payout has been submitted to the bank and is being processed
* `paid` - The payout succeeded and the money has successfully reached your bank account
* `failed` - Something went wrong and the payout couldn't be transferred to your account
* `canceled` - The payout was canceled before it could complete
## Date Range Filtering
Use the `filter[start_date]` and `filter[end_date]` parameters to filter payouts by date range:
### Get payouts between January 1st and January 31st, 2024
* `GET /v1/kajabi_payments_payouts?filter[site_id]=123&filter[start_date]=2024-01-01&filter[end_date]=2024-01-31`
Response will include only payouts within the specified date range.
## Using Multiple Parameters Together
You can combine multiple parameters to filter the response:
### Get paginated, filtered payouts
* `GET /v1/kajabi_payments_payouts?page[number]=1&filter[site_id]=123&filter[status]=paid&filter[start_date]=2024-01-01&filter[end_date]=2024-01-31`
Response will include paginated payouts matching all filters:
```json
{
"data": [{
"id": "payout_abc123",
"type": "kajabi_payments_payouts",
"attributes": {
"status": "Paid",
"amount": 1500.00,
"currency": "USD",
"initiated_date": "2024-01-10T10:00:00.000Z",
"estimated_arrival_date": "2024-01-17T10:00:00.000Z",
"bank_account": "Chase Bank - 1234"
}
}]
}
```
# Landing page details
Source: https://help.kajabi.com/api-reference/landing-pages/landing-page-details
/openapi.yaml get /v1/landing_pages/{id}
Shows details of a landing page
## Landing Page Attributes
* `title` (string) - Title of the landing page
* `url` (string) - URL of the landing page
* `publish_at` (string) - Date and time the landing page will be published
* `created_at` (string) - Date and time the landing page was created
* `updated_at` (string) - Date and time the landing page was updated
## Sparse Fields
### Only return title attribute
* `GET /v1/landing_pages/123?fields[landing_pages]=title`
Response will only include requested fields
```json
{
"data": {
"id": "123",
"type": "landing_pages",
"attributes": {
"title": "Course Landing Page"
}
}
}
```
# List landing pages
Source: https://help.kajabi.com/api-reference/landing-pages/list-landing-pages
/openapi.yaml get /v1/landing_pages
Returns a list of landing pages which the current user may access
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/landing_pages[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/landing_pages[number]=2&page[size]=25`
## Sparse Fields
Use the `fields[landing_pages]` parameter to request only specific attributes:
### Only return title attribute
* `GET /v1/landing_pages?fields[landing_pages]=title`
## Sorting
Use the `sort` parameter to sort the results:
### Sort by publish_at in descending order
* `GET /v1/landing_pages?sort=-publish_at&fields[landing_pages]=title`
## Filters
Use the `filter[site_id]` parameter to get landing pages for a specific site:
### Get landing pages for site with ID 123
* `GET /v1/landing_pages?filter[site_id]=123`
List of attributes that may be used to filter: title, publish_at, created_at, updated_at
The filter param uses the following syntax: `filter[attribute_name_suffix]` with suffix for comparison:
* `eq` for equals
* `cont` for contains
* `not_eq` for not equals
* `not_cont` for not contains
* `gt` for greater than
* `gte` for greater than or equal
* `lt` for less than
* `lte` for less than or equal
* `start` for starts with
* `end` for ends with
For example:
* `GET /v1/landing_pages?filter[title_start]=Course`
* `GET /v1/landing_pages?filter[title_cont]=Landing`
# My user profile
Source: https://help.kajabi.com/api-reference/me/my-user-profile
/openapi.yaml get /v1/me
Returns the current user's profile data.
## Response attributes
The response will include the following attributes:
* `initials` - A derived attribute that represents the user's initials based on their name. This is typically used for avatar placeholders or compact user displays. For example, "John Doe" would have initials "JD".
* `name` - The user's full name. This is a required field that can be:
* Set directly as a full name
* Automatically generated from first name and last name fields when either changes
* Used for display purposes throughout the platform
* `email` - The user's email address. This is a critical field that:
* Is required and must be unique
* Is used for authentication
* Can trigger email change notifications
* Is used for password recovery
* Can be marked as bounced (and reset when email changes)
* Is validated against email format requirements
* `role_level` - Represents the user's permission level in the system. This attribute:
* Common values include:
* OWNER - Account owner with full permissions
* ADMINISTRATOR - Admin with site management permissions
* Determines what actions and resources the user can access
* Is used for permission checks throughout the system
# List offers
Source: https://help.kajabi.com/api-reference/offers/list-offers
/openapi.yaml get /v1/offers
List of offers (not archived) for a site that can be granted to a contact
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/offers?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/offers?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/offers?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/offers?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/offers?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/offers?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/offers?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Sorting
Use the `sort` parameter to sort the results:
### Sort by title in ascending order
* `GET /v1/offers?sort=title`
### Sort by title in descending order
* `GET /v1/offers?sort=-title`
Response will include offers sorted by the specified field
```json
{
"data": [
{
"id": "123",
"type": "offers",
"attributes": {
"title": "Advanced Course Bundle",
"price_in_cents": 19900,
"status": "active"
}
},
{
"id": "456",
"type": "offers",
"attributes": {
"title": "Beginner Course Bundle",
"price_in_cents": 9900,
"status": "active"
}
}
]
}
```
## Sparse Fields
Use the `fields[offers]` parameter to request only specific attributes:
### Only return title and price_in_cents attributes
* `GET /v1/offers?fields[offers]=title,price_in_cents`
Response will only include requested fields
```json
{
"data": [{
"id": "123",
"type": "offers",
"attributes": {
"title": "Advanced Course Bundle",
"price_in_cents": 19900
}
}]
}
```
## Filter by Site ID
Use the `filter[site_id]` parameter to get offers for a specific site:
### Get offers for site with ID 123
* `GET /v1/offers?filter[site_id]=123`
Response will only include offers for that site
```json
{
"data": [{
"id": "456",
"type": "offers",
"attributes": {
"title": "Advanced Course Bundle",
"price_in_cents": 19900,
"status": "active"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Filter by Title Contains
Use the `filter[title_cont]` parameter to find offers where the title contains specific text:
### Get offers with titles containing "bundle"
* `GET /v1/offers?filter[title_cont]=bundle`
Response will include offers with matching titles
```json
{
"data": [{
"id": "456",
"type": "offers",
"attributes": {
"title": "Advanced Course Bundle",
"price_in_cents": 19900,
"status": "active"
}
},
{
"id": "789",
"type": "offers",
"attributes": {
"title": "Basic Course Bundle",
"price_in_cents": 9900,
"status": "active"
}
}]
}
```
## Filter by Description Contains
Use the `filter[description_cont]` parameter to find offers where the description contains specific text:
### Get offers with descriptions containing "marketing"
* `GET /v1/offers?filter[description_cont]=marketing`
Response will include offers with matching descriptions
```json
{
"data": [{
"id": "456",
"type": "offers",
"attributes": {
"title": "Marketing Course Bundle",
"description": "Complete marketing course bundle with advanced strategies",
"price_in_cents": 19900,
"status": "active"
}
},
{
"id": "789",
"type": "offers",
"attributes": {
"title": "Business Essentials",
"description": "Business fundamentals including marketing and sales",
"price_in_cents": 9900,
"status": "active"
}
}]
}
```
## Using Multiple Parameters Together
You can combine pagination, sorting, sparse fields and filtering in a single request:
### Get page 2 of offers for site 123, sorted by price_in_cents descending, including only title and price_in_cents fields
* `GET /v1/offers?page[number]=2&page[size]=10&sort=-price_in_cents&filter[site_id]=123&fields[offers]=title,price_in_cents`
Response will include paginated and filtered offers with sparse fields
```json
{
"data": [
{
"id": "456",
"type": "offers",
"attributes": {
"title": "Basic Course Bundle",
"price_in_cents": 9900
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}
],
"links": {
"self": "https://api.kajabi.com/v1/offers?page[number]=2&page[size]=10&sort=-price_in_cents&filter[site_id]=123&fields[offers]=title,price_in_cents",
"first": "https://api.kajabi.com/v1/offers?page[number]=1&page[size]=10&sort=-price_in_cents&filter[site_id]=123&fields[offers]=title,price_in_cents",
"prev": "https://api.kajabi.com/v1/offers?page[number]=1&page[size]=10&sort=-price_in_cents&filter[site_id]=123&fields[offers]=title,price_in_cents",
"next": null,
"last": "https://api.kajabi.com/v1/offers?page[number]=2&page[size]=10&sort=-price_in_cents&filter[site_id]=123&fields[offers]=title,price_in_cents"
},
"meta": {
"total_pages": 2,
"total_count": 15,
"current_page": 2
}
}
```
# List offer's products
Source: https://help.kajabi.com/api-reference/offers/list-offers-products
/openapi.yaml get /v1/offers/{offer_id}/relationships/products
get the offer's relationship to products, response is a list of resource identifiers
# Offer details
Source: https://help.kajabi.com/api-reference/offers/offer-details
/openapi.yaml get /v1/offers/{id}
The offer system is a core part of Kajabi's e-commerce functionality, allowing course creators and digital product owners to monetize their content through various pricing and payment models while maintaining flexibility in how offers are presented and processed.
## Offer attributes
* `title` (string) - Required, public name of the offer shown to customers
* `description` (string) - Optional, detailed information about what's included in the offer
* `internal_title` (string) - Optional, for internal reference/organization (not shown to customers)
* `currency` (string) - The currency of the offer, defaults to USD
* `price_in_cents` (integer) - The USD price in cents (for precise decimal handling)
* `payment_type` (string) - Indicates the payment structure
* `token` (string) - A unique identifier for the offer, particularly in checkout URLs
* `payment_method` (string) - Indicates the payment method, Returns empty string if no payment method is set
* `price_description` (string) - Human-readable representation of the offer's price, includes formatting and currency information
* `checkout_url` (string) - Full URL where customers can purchase the offer
* Includes the offer token for identification
* Uses the site's public host and protocol settings
* `recurring_offer` (boolean) - Whether the offer has recurring payments
* `subscription` (boolean) - Whether the offer is a subscription offer
* `one_time` (boolean) - Whether the offer is a one-time offer
* `single` (boolean) - Whether the offer is a single offer
* `free` (boolean) - Whether the offer is a free offer
* `image_url` (string) - URL to the image associated with the offer (nullable)
## Include Relationships
Use the `include` parameter to include related products:
* `GET /v1/offers/123?include=products`
Response will include products relationship
```json
{
"data": {
"id": "123",
"type": "offers",
"attributes": {
"title": "Advanced Course Bundle",
"description": "Complete advanced course bundle with expert guidance",
"internal_title": "advanced_course_bundle",
"currency": "USD",
"price_in_cents": 19900,
"payment_type": "stripe",
"token": "123",
"payment_method": "stripe",
"price_description": "$199.00",
"checkout_url": "https://api.kajabi.com/checkout/123",
"recurring_offer": false,
"subscription": false,
"one_time": true,
"single": true,
"free": false,
"image_url": "https://api.kajabi.com/images/456"
},
"relationships": {
"products": {
"data": [
{
"id": "456",
"type": "products"
}
]
}
}
},
"included": [
{
"id": "456",
"type": "products",
"attributes": {
"created_at": "2021-01-01T00:00:00Z",
"title": "Advanced Course",
"description": "Complete advanced course with expert guidance",
"status": "ready",
"members_aggregate_count": 100,
"product_type_name": "Course",
"product_type_id": 456,
"publish_status": "published",
"image_url": "https://api.kajabi.com/images/456"
}
}
]
}
```
## Sparse Fields
### Only return title and price_in_cents attributes
* `GET /v1/offers/123?fields[offers]=title,price_in_cents`
Response will only include requested fields
```json
{
"data": {
"id": "123",
"type": "offers",
"attributes": {
"title": "Advanced Course Bundle",
"price_in_cents": 19900
}
}
}
```
## Multiple parameters together
You can combine include and sparse fields in a single request:
### Get offer 123 with products, including only title and description fields, and products with title and publish_status fields
* `GET /v1/offers/123?include=products&fields[offers]=title,description&fields[products]=title,publish_status`
Response will include offer and products with sparse fields
```json
{
"data": {
"id": "123",
"type": "offers",
"attributes": {
"title": "Advanced Course Bundle",
"description": "Complete advanced course bundle with expert guidance"
},
"relationships": {}
},
"included": [
{
"id": "456",
"type": "products",
"attributes": {
"title": "Advanced Course",
"publish_status": "published"
}
}
]
}
```
# List order items
Source: https://help.kajabi.com/api-reference/orders/list-order-items
/openapi.yaml get /v1/order_items
Order items represent individual products or offers within an order.
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/order_items?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/order_items?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/order_items?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/order_items?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/order_items?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/order_items?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/order_items?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Filtering
Use filter parameters to narrow down results:
### Filter by site
Use the `filter[site_id]` parameter to get order items for a specific site:
* `GET /v1/order_items?filter[site_id]=123`
### Filter by item type
* `GET /v1/order_items?filter[item_type_eq]=Offer`
### Filter by item ID
* `GET /v1/order_items?filter[item_id_eq]=123`
### Filter by fulfilled status
* `GET /v1/order_items?filter[fulfilled_at_null]=true` (unfulfilled items)
* `GET /v1/order_items?filter[fulfilled_at_null]=false` (fulfilled items)
## Advanced Filtering Examples
### Range queries
* `GET /v1/order_items?filter[site_id]=123&filter[quantity_gt]=1`
* `GET /v1/order_items?filter[site_id]=123&filter[total_price_in_cents_gteq]=1000&filter[total_price_in_cents_lteq]=10000`
### Pattern matching
* `GET /v1/order_items?filter[site_id]=123&filter[item_type_cont]=Off`
* `GET /v1/order_items?filter[site_id]=123&filter[title_i_cont]=course` (case insensitive)
### Array filters
* `GET /v1/order_items?filter[site_id]=123&filter[item_id_in]=123,456,789`
* `GET /v1/order_items?filter[site_id]=123&filter[item_type_not_in]=Bundle,Subscription`
## Sorting
Use the `sort` parameter to sort the results:
### Sort by fulfilled_at in ascending order
* `GET /v1/order_items?filter[site_id]=123&sort=fulfilled_at`
# List orders
Source: https://help.kajabi.com/api-reference/orders/list-orders
/openapi.yaml get /v1/orders
Orders for a site
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/orders?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/orders?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/orders?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/orders?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/orders?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/orders?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/orders?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Sorting
Use the `sort` parameter to sort the results:
### Sort by order_number in ascending order
* `GET /v1/orders?sort=order_number`
### Sort by created_at in descending order
* `GET /v1/orders?sort=-created_at`
## Filtering
Use filter parameters to narrow down results:
### Filter by site
Use the `filter[site_id]` parameter to get orders for a specific site:
* `GET /v1/orders?filter[site_id]=123`
### Filter by customer
Use the `filter[customer_id]` parameter to get orders for a specific customer:
* `GET /v1/orders?filter[customer_id]=456789`
### Filter by order number
* `GET /v1/orders?filter[order_number_eq]=12345`
### Filter by fulfilled status
* `GET /v1/orders?filter[fulfilled_at_null]=true` (unfulfilled orders)
* `GET /v1/orders?filter[fulfilled_at_null]=false` (fulfilled orders)
## Advanced Filtering Examples
### Range queries
* `GET /v1/orders?filter[site_id]=123&filter[created_at_gteq]=2024-01-01&filter[created_at_lteq]=2024-12-31`
* `GET /v1/orders?filter[site_id]=123&filter[total_price_in_cents_gt]=5000`
### Pattern matching
* `GET /v1/orders?filter[site_id]=123&filter[order_number_cont]=2024`
* `GET /v1/orders?filter[site_id]=123&filter[currency_code_start]=US`
### Array filters
* `GET /v1/orders?filter[site_id]=123&filter[currency_code_in]=USD,EUR,GBP`
# Order details
Source: https://help.kajabi.com/api-reference/orders/order-details
/openapi.yaml get /v1/orders/{id}
Shows details of an order
Orders represent completed purchase transactions and contain:
* Order items (products/offers purchased)
* Payment information
* Customer information
* Fulfillment status
## Order Attributes
* `order_number` (integer) - A unique identifier for the order within the site
* `currency_code` (string) - The ISO currency code for the order (e.g., "USD")
* `total_price_in_cents` (integer) - Total price including taxes and discounts
* `subtotal_in_cents` (integer) - Subtotal before taxes and discounts
* `sales_tax_amount_in_cents` (integer) - Total sales tax amount
* `discount_amount_in_cents` (integer) - Total discount amount
* `fulfilled_at` (string) - Timestamp when the order was fulfilled
* `created_at` (string) - Timestamp when the order was created
## Include Related Resources
Use the `include` parameter to load related resources:
### Include order items, customer
* `GET /v1/orders/123?include=order_items,customer`
# Order item details
Source: https://help.kajabi.com/api-reference/orders/order-item-details
/openapi.yaml get /v1/order_items/{id}
Shows details of an order item
Order items represent individual products or offers within an order and contain:
* Product/offer information
* Pricing details
* Quantity information
* Fulfillment status
## Order Item Attributes
* `quantity` (integer) - Number of items purchased
* `currency_code` (string) - The ISO currency code for the item
* `item_type` (string) - Type of item (e.g., "Offer")
* `item_id` (integer) - ID of the associated item
* `title` (string) - Title of the item
* `total_price_in_cents` (integer) - Total price for this line item
* `subtotal_in_cents` (integer) - Subtotal before taxes and discounts
* `sales_tax_amount_in_cents` (integer) - Sales tax amount for this item
* `discount_amount_in_cents` (integer) - Discount amount for this item
* `fulfilled_at` (string) - Timestamp when the item was fulfilled
* `created_at` (string) - Timestamp when the order item was created
## Include Related Resources
Use the `include` parameter to load related resources:
### Include order
* `GET /v1/order_items/123?include=order`
# List podcasts
Source: https://help.kajabi.com/api-reference/podcasts/list-podcasts
/openapi.yaml get /v1/podcasts
Podcasts for a site
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/podcasts?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/podcasts?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/podcasts?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/podcasts?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/podcasts?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/podcasts?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/podcasts?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Sorting
Use the `sort` parameter to sort the results:
### Sort by title in ascending order
* `GET /v1/podcasts?sort=title`
### Sort by title in descending order
* `GET /v1/podcasts?sort=-title`
Response will include podcasts sorted by the specified field
```json
{
"data": [
{
"id": "123",
"type": "podcasts",
"attributes": {
"title": "My Podcast A",
"description": "A great podcast about technology"
}
},
{
"id": "456",
"type": "podcasts",
"attributes": {
"title": "My Podcast B",
"description": "Another great podcast about business"
}
}
]
}
```
## Sparse Fields
Use the `fields[podcasts]` parameter to request only specific attributes:
### Only return title and description attributes
* `GET /v1/podcasts?fields[podcasts]=title,description`
Response will only include requested fields
```json
{
"data": [{
"id": "123",
"type": "podcasts",
"attributes": {
"title": "My Podcast A",
"description": "A great podcast about technology"
}
}]
}
```
## Filter by Site ID
Use the `filter[site_id]` parameter to get podcasts for a specific site:
### Get podcasts for site with ID 123
* `GET /v1/podcasts?filter[site_id]=123`
Response will only include podcasts for that site
```json
{
"data": [{
"id": "456",
"type": "podcasts",
"attributes": {
"title": "My Podcast",
"description": "A great podcast"
}
}]
}
```
# Show podcast
Source: https://help.kajabi.com/api-reference/podcasts/show-podcast
/openapi.yaml get /v1/podcasts/{id}
Get details for a specific podcast
## Attributes
- **title**: The podcast title
- **description**: The podcast description
- **language**: The podcast language (e.g., "en", "es")
- **owner_email**: The podcast owner's email address
- **owner_name**: The podcast owner's name
- **status**: The podcast status (ready, importing, failed)
- **show_type**: The show type (episodic, serial)
- **thumbnail_url**: URL to the podcast thumbnail image
- **cover_art_url**: URL to the podcast cover art image
- **categories**: Array of podcast categories
- **directories**: Array of podcast directories
- **migrated_to_url**: URL if podcast has been migrated
- **migrated**: Boolean indicating if podcast has been migrated
- **public**: Boolean indicating if podcast is public
- **ready**: Boolean indicating if podcast is ready
- **distribution_ready**: Boolean indicating if podcast is ready for distribution
- **created_at**: ISO 8601 date-time when podcast was created (read-only)
- **updated_at**: ISO 8601 date-time when podcast was last updated (read-only)
# List products
Source: https://help.kajabi.com/api-reference/products/list-products
/openapi.yaml get /v1/products
List of products (not archived) that can be granted to a contact
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/products?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/products?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/products?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/products?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/products?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/products?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/products?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Sorting
Use the `sort` parameter to sort the results:
### Sort by title in ascending order
* `GET /v1/products?sort=title`
### Sort by title in descending order
* `GET /v1/products?sort=-title`
Response will include products sorted by the specified field
```json
{
"data": [
{
"id": "123",
"type": "products",
"attributes": {
"title": "Advanced Course",
"description": "In-depth training",
"status": "active"
}
},
{
"id": "456",
"type": "products",
"attributes": {
"title": "Beginner Course",
"description": "Introduction to basics",
"status": "active"
}
}
]
}
```
## Sparse Fields
Use the `fields[products]` parameter to request only specific attributes:
### Get only title and publish_status fields
* `GET /v1/products?fields[products]=title,publish_status`
Response will only include the requested fields
```json
{
"data": [
{
"id": "123",
"type": "products",
"attributes": {
"title": "Advanced Course",
"publish_status": "published"
}
},
{
"id": "456",
"type": "products",
"attributes": {
"title": "Beginner Course",
"publish_status": "draft"
}
}
]
}
```
## Filter by Site ID
Use the `filter[site_id]` parameter to get products for a specific site:
### Get products for site with ID 123
* `GET /v1/products?filter[site_id]=123`
Response will only include products for that site
```json
{
"data": [
{
"id": "456",
"type": "products",
"attributes": {
"title": "Advanced Course",
"description": "In-depth training",
"status": "active",
"publish_status": "published"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}
]
}
```
## Filter by Title Contains
Use the `filter[title_cont]` parameter to find products where the title contains specific text:
### Get products with titles containing "course"
* `GET /v1/products?filter[title_cont]=course`
Response will include products with matching titles
```json
{
"data": [{
"id": "456",
"type": "products",
"attributes": {
"title": "Advanced Course",
"description": "In-depth training",
"status": "active",
"publish_status": "published"
}
},
{
"id": "789",
"type": "products",
"attributes": {
"title": "Beginner Course",
"description": "Introduction to basics",
"status": "active",
"publish_status": "published"
}
}]
}
```
## Filter by Description Contains
Use the `filter[description_cont]` parameter to find products where the description contains specific text:
### Get products with descriptions containing "training"
* `GET /v1/products?filter[description_cont]=training`
Response will include products with matching descriptions
```json
{
"data": [{
"id": "456",
"type": "products",
"attributes": {
"title": "Advanced Course",
"description": "In-depth training program",
"status": "active",
"publish_status": "published"
}
},
{
"id": "789",
"type": "products",
"attributes": {
"title": "Professional Course",
"description": "Professional training and certification",
"status": "active",
"publish_status": "published"
}
}]
}
```
## Filter by Status
Use the `filter[status_eq]` parameter to find products with a specific status:
### Get ready products
* `GET /v1/products?filter[status_eq]=ready`
Response will include products with matching status
```json
{
"data": [{
"id": "456",
"type": "products",
"attributes": {
"title": "Advanced Course",
"description": "In-depth training program",
"status": "ready",
"publish_status": "published"
}
},
{
"id": "789",
"type": "products",
"attributes": {
"title": "Professional Course",
"description": "Professional training and certification",
"status": "ready",
"publish_status": "published"
}
}]
}
```
## Filter by Excluded Product Types
Use the `filter[exclude_product_types][]` parameter to exclude products by productizable_type (fully-qualified class name):
### Exclude CohortCourse products
* `GET /v1/products?filter[exclude_product_types][]=Courses::CohortCourse`
Response will exclude products with the specified productizable_type while keeping legacy evergreen courses visible.
## Using Multiple Parameters Together
You can combine pagination, sorting, sparse fields and filtering in a single request:
### Get page 2 of products for site 123, sorted by title descending, including only title and publish_status fields
* `GET /v1/products?page[number]=2&page[size]=10&sort=-title&filter[site_id]=123&fields[products]=title,publish_status`
Response will include paginated and filtered products with sparse fields
```json
{
"data": [
{
"id": "456",
"type": "products",
"attributes": {
"title": "Beginner Course",
"publish_status": "draft"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}
],
"links": {
"self": "https://api.kajabi.com/v1/products?page[number]=2&page[size]=10&sort=-title&filter[site_id]=123&fields[products]=title,publish_status",
"first": "https://api.kajabi.com/v1/products?page[number]=1&page[size]=10&sort=-title&filter[site_id]=123&fields[products]=title,publish_status",
"prev": "https://api.kajabi.com/v1/products?page[number]=1&page[size]=10&sort=-title&filter[site_id]=123&fields[products]=title,publish_status",
"next": null,
"last": "https://api.kajabi.com/v1/products?page[number]=2&page[size]=10&sort=-title&filter[site_id]=123&fields[products]=title,publish_status"
},
"meta": {
"total_pages": 2,
"total_count": 15,
"current_page": 2
}
}
```
# Product details
Source: https://help.kajabi.com/api-reference/products/product-details
/openapi.yaml get /v1/products/{id}
Show details of a product
## Sparse Fields
Use the `fields[products]` parameter to request only specific attributes:
### Get only title and publish_status fields
* `GET /v1/products/123?fields[products]=title,publish_status`
Response will only include the requested fields
```json
{
"data": {
"id": "123",
"type": "products",
"attributes": {
"title": "Advanced Course",
"publish_status": "published"
},
"relationships": {}
}
}
```
# Cancel subscription
Source: https://help.kajabi.com/api-reference/purchases/cancel-subscription
/openapi.yaml post /v1/purchases/{id}/cancel_subscription
Cancel the subscription associated with a purchase by ID
This endpoint cancels the underlying subscription (Stripe, PayPal, or Kajabi Payments)
associated with the purchase. The purchase will be deactivated and the subscription
will be cancelled immediately, according to the payment provider's cancellation rules.
If the payment can be cancelled the response will be successful.
Otherwise, the response will be an error with validation details.
# Deactivate purchase
Source: https://help.kajabi.com/api-reference/purchases/deactivate-purchase
/openapi.yaml post /v1/purchases/{id}/deactivate
Deactivate a purchase by ID, this will not cancel the subscription.
Use the `cancel_subscription` endpoint to cancel the subscription. Otherwise, the purchase will be deactivated and the subscription will remain active.
For a free purchase, the purchase may be later reactivated.
If the product can be deactivated the response will be successful.
Otherwise, the response will be an error.
# List purchases
Source: https://help.kajabi.com/api-reference/purchases/list-purchases
/openapi.yaml get /v1/purchases
Returns a list of purchases (offer purchases) which the current user may access
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/purchases?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/purchases?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/purchases?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/purchases?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/purchases?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/purchases?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/purchases?page[number]=5&page[size]=10"
},
"meta": {
"count": 10,
"total_count": 50,
"total_pages": 5
}
}
```
## Sparse Fields
Use the `fields[purchases]` parameter to request only specific attributes:
### Only return amount_in_cents attributes
* `GET /v1/purchases?fields[purchases]=amount_in_cents`
Response will only include requested fields
```json
{
"data": [
{
"id": "123",
"type": "purchases",
"attributes": {
"amount_in_cents": 19900
}
},
{
"id": "456",
"type": "purchases",
"attributes": {
"amount_in_cents": 9900
}
}
]
}
```
## Sorting
Use the `sort` parameter to sort the results:
### Sort by effective_start_at in descending order
* `GET /v1/purchases?sort=-effective_start_at&fields[purchases]=effective_start_at`
Response will include purchases sorted by the specified field
```json
{
"data": [
{
"id": "123",
"type": "purchases",
"attributes": {
"effective_start_at": "2025-01-02T00:00:00.000Z"
}
},
{
"id": "456",
"type": "purchases",
"attributes": {
"effective_start_at": "2025-01-01T00:00:00.000Z"
}
}
]
}
```
List of attributes that may be used to sort: multipay_payments_made, opt_in, currency, effective_start_at, cardholder_name, billing_address_zip, deactivated_at, deactivation_reason, coupon_code, source, referrer, quantity, created_at, updated_at
## Filters
Use the `filter[site_id]` parameter to get purchases for a specific site:
### Get purchases for site with ID 123
* `GET /v1/purchases?filter[site_id]=123`
### Filter by customer
Use the `filter[customer_id]` parameter to get purchases for a specific customer:
* `GET /v1/purchases?filter[customer_id]=456789`
List of attributes that may be used to filter: multipay_payments_made, opt_in, currency, effective_start_at, cardholder_name, billing_address_zip, deactivated_at, deactivation_reason, coupon_code, source, referrer, quantity, created_at, updated_at
The filter param uses the following syntax: `filter[attribute_name_suffix]` with suffix for comparison:
* `eq` for equals
* `cont` for contains
* `not_eq` for not equals
* `not_cont` for not contains
* `gt` for greater than
* `gte` for greater than or equal
* `lt` for less than
* `lte` for less than or equal
* `start` for starts with
* `end` for ends with
For example:
* `GET /v1/purchases?filter[amount_in_cents_eq]=19900`
* `GET /v1/purchases?filter[amount_in_cents_gt]=19900`
# Purchase details
Source: https://help.kajabi.com/api-reference/purchases/purchase-details
/openapi.yaml get /v1/purchases/{id}
Details of a purchase (of an offer)
## Purchase Attributes
* `amount_in_cents` (integer) - Price of the purchase in cents
* `payment_type` (string) - Type of payment
* `trial` (integer) - Number of trial days. (subscription and payment plans only)
* `trial_end_at` (string) - Date the trial ends
* `multipay_payments_made` (integer) - Number of payments made
* `payment_plan_total_payments` (integer) - Total number of payments in the payment plan
* `status` (string) - The status of the purchase. For one-time purchases this will match the transaction detail status. For subscriptions and payment plans this status represents the status of the plan as compared to the transaction status which represents the individual payment.
* `opt_in` (boolean) - Whether the purchase was opt-in
* `raw_extra_contact_information` (object) - Extra contact information
* `currency` (string) - Currency of the purchase
* `effective_start_at` (string) - Start date of the purchase
* `cardholder_name` (string) - Name of the cardholder
* `billing_address_zip` (string) - Zip code of the billing address
* `deactivated_at` (string) - Date and time the purchase was deactivated
* `deactivation_reason` (string) - Reason for deactivation
* `coupon_code` (string) - Coupon code used for the purchase
* `source` (string) - Source of the purchase
* `referrer` (string) - Referrer of the purchase
* `quantity` (integer) - Quantity of the purchase
* `created_at` (string) - Date and time the purchase was created
* `updated_at` (string) - Date and time the purchase was updated_at
## Sparse Fields
### Only return amount_in_cents and multipay_payments_made attributes
* `GET /v1/purchases/123?fields[purchases]=amount_in_cents,multipay_payments_made`
Response will only include requested fields
```json
{
"data": {
"id": "123",
"type": "purchases",
"attributes": {
"amount_in_cents": 19900,
"multipay_payments_made": 1
}
}
}
```
# Reactivate purchase
Source: https://help.kajabi.com/api-reference/purchases/reactivate-purchase
/openapi.yaml post /v1/purchases/{id}/reactivate
Reactivate a purchase by ID, this will not reactivate the subscription.
If the product can be reactivated the response will be successful.
Otherwise, the response will be an error.
# List sites
Source: https://help.kajabi.com/api-reference/sites/list-sites
/openapi.yaml get /v1/sites
List of sites that the current user has access to
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/sites?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/sites?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/sites?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/sites?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/sites?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/sites?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/sites?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Sorting
Use the `sort` parameter to sort the results:
### Sort by title in ascending order
* `GET /v1/sites?sort=title`
### Sort by title in descending order
* `GET /v1/sites?sort=-title`
Response will include sites sorted by the specified field
```json
{
"data": [
{
"id": "123",
"type": "sites",
"attributes": {
"title": "Advanced Training Site",
"subdomain": "advanced-training"
}
},
{
"id": "456",
"type": "sites",
"attributes": {
"title": "Beginner Training Site",
"subdomain": "beginner-training"
}
}
]
}
```
## Sparse Fields
Use the `fields[sites]` parameter to request only specific attributes:
### Only return title and subdomain attributes
* `GET /v1/sites?fields[sites]=title,subdomain`
Response will only include requested fields
```json
{
"data": [{
"id": "123",
"type": "sites",
"attributes": {
"title": "Advanced Training Site",
"subdomain": "advanced-training"
}
}]
}
```
## Filter by Title Contains
Use the `filter[title_cont]` parameter to find sites where the title contains specific text:
### Get sites with titles containing "training"
* `GET /v1/sites?filter[title_cont]=training`
Response will include sites with matching titles
```json
{
"data": [{
"id": "123",
"type": "sites",
"attributes": {
"title": "Advanced Training Site",
"subdomain": "advanced-training"
}
},
{
"id": "456",
"type": "sites",
"attributes": {
"title": "Beginner Training Site",
"subdomain": "beginner-training"
}
}]
}
```
## Filter by Subdomain Contains
Use the `filter[subdomain_cont]` parameter to find sites where the subdomain contains specific text:
### Get sites with subdomains containing "training"
* `GET /v1/sites?filter[subdomain_cont]=training`
Response will include sites with matching subdomains
```json
{
"data": [{
"id": "123",
"type": "sites",
"attributes": {
"title": "Advanced Training Site",
"subdomain": "advanced-training"
}
},
{
"id": "456",
"type": "sites",
"attributes": {
"title": "Beginner Training Site",
"subdomain": "beginner-training"
}
}]
}
```
## Using Multiple Parameters Together
You can combine pagination, sorting and sparse fields in a single request:
### Get page 2 of sites, sorted by title descending, including only title and subdomain fields
* `GET /v1/sites?page[number]=2&page[size]=10&sort=-title&fields[sites]=title,subdomain`
Response will include paginated sites with sparse fields
```json
{
"data": [
{
"id": "456",
"type": "sites",
"attributes": {
"title": "Beginner Training Site",
"subdomain": "beginner-training"
}
}
],
"links": {
"self": "https://api.kajabi.com/v1/sites?page[number]=2&page[size]=10&sort=-title&fields[sites]=title,subdomain",
"first": "https://api.kajabi.com/v1/sites?page[number]=1&page[size]=10&sort=-title&fields[sites]=title,subdomain",
"prev": "https://api.kajabi.com/v1/sites?page[number]=1&page[size]=10&sort=-title&fields[sites]=title,subdomain",
"next": null,
"last": "https://api.kajabi.com/v1/sites?page[number]=2&page[size]=10&sort=-title&fields[sites]=title,subdomain"
},
"meta": {
"total_pages": 2,
"total_count": 15,
"current_page": 2
}
}
```
# List website pages
Source: https://help.kajabi.com/api-reference/sites/list-website-pages
/openapi.yaml get /v1/website_pages
Returns a list of website pages which the current user may access
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/website_pages[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/website_pages[number]=2&page[size]=25`
## Sorting
Use the `sort` parameter to sort the results:
### Sort by created_at in ascending order
* `GET /v1/website_pages?sort=created_at&fields[website_pages]=created_at`
## Filters
Use the `filter[site_id]` parameter to get website pages for a specific site:
### Get website pages for site with ID 123
* `GET /v1/website_pages?filter[site_id]=123`
# Site details
Source: https://help.kajabi.com/api-reference/sites/site-details
/openapi.yaml get /v1/sites/{id}
The site system is a fundamental part of Kajabi's platform, representing a customer's branded presence and serving as the container for their products, courses, and other content. Each site can be customized extensively while maintaining the core functionality needed for e-learning and digital product delivery.
## Site Attributes
* `title` (string) - A required field that represents the name of the site
* `subdomain` (string) - The subdomain of the site, used for routing and site identification
* `created_at` (string) - A read-only timestamp, ISO date string format, that indicates when the site was created
* `updated_at` (string) - A read-only timestamp, ISO date string format, that indicates when the site was last modified
## Sparse Fields
Use the `fields[sites]` parameter to request only specific attributes:
### Only return title and subdomain attributes
* `GET /v1/sites/123?fields[sites]=title,subdomain`
Response will only include requested fields
```json
{
"data": {
"id": "123",
"type": "sites",
"attributes": {
"title": "Advanced Training Site",
"subdomain": "advanced-training"
}
}
}
```
# Website page details
Source: https://help.kajabi.com/api-reference/sites/website-page-details
/openapi.yaml get /v1/website_pages/{id}
Details of a website page
## Website Page Attributes
* `title` (string) - Title of the website page
* `url` (string) - URL of the website page
* `created_at` (string) - Date and time the website page was created
* `updated_at` (string) - Date and time the website page was updated_at
# List transactions
Source: https://help.kajabi.com/api-reference/transactions/list-transactions
/openapi.yaml get /v1/transactions
List of payment transactions related to completed financial activity (successful charges, refunds, and disputes) that are associated with actual purchases, excluding test transactions, free purchases, failed attempts, and pending transactions.
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/transactions?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/transactions?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/transactions?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/transactions?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/transactions?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/transactions?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/transactions?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Sparse Fields
Use the `fields[transactions]` parameter to request only specific attributes:
### Only return amount_in_cents and sales_tax_in_cents attributes
* `GET /v1/transactions?fields[transactions]=amount_in_cents,sales_tax_in_cents`
Response will only include requested fields
```json
{
"data": [{
"id": "123",
"type": "transactions",
"attributes": {
"amount_in_cents": 9900,
"sales_tax_in_cents": 990
}
}]
}
```
## Filtering
Use the `filter[site_id]` parameter to filter transactions by site:
### Get transactions for site with ID 123
* `GET /v1/transactions?filter[site_id]=123`
Response will include only transactions for the specified site
```json
{
"data": [{
"id": "456",
"type": "transactions",
"attributes": {
"amount_in_cents": 9900,
"sales_tax_in_cents": 990,
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Date Range Filtering
Use the `filter[start_date]` and `filter[end_date]` parameters to filter transactions by date range:
### Get transactions between January 1st and January 31st, 2024
* `GET /v1/transactions?filter[start_date]=2024-01-01&filter[end_date]=2024-01-31`
Response will include only transactions within the specified date range
```json
{
"data": [{
"id": "456",
"type": "transactions",
"attributes": {
"amount_in_cents": 9900,
"sales_tax_in_cents": 990,
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Filtering by Name or Email
Use the `filter[name_or_email]` parameter to filter transactions by name or email:
### Get transactions for customer with name or email "John"
* `GET /v1/transactions?filter[name_or_email]=John`
## Filtering by Customer
Use the `filter[customer_id]` parameter to filter transactions by customer:
### Get transactions for customer with ID 456789
* `GET /v1/transactions?filter[customer_id]=456789`
## Using Multiple Parameters Together
You can combine multiple parameters to filter and format the response:
### Get paginated, filtered transactions with specific fields
* `GET /v1/transactions?page[number]=1&page[size]=10&fields[transactions]=amount_in_cents,sales_tax_in_cents&filter[site_id]=123&filter[start_date]=2024-01-01&filter[end_date]=2024-01-31`
Response will include paginated transactions matching all filters, with only requested fields:
```json
{
"data": [{
"id": "456",
"type": "transactions",
"attributes": {
"amount_in_cents": 9900,
"sales_tax_in_cents": 990
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}],
"meta": {
"total_pages": 1,
"current_page": 1
}
}
```
# Transaction details
Source: https://help.kajabi.com/api-reference/transactions/transaction-details
/openapi.yaml get /v1/transactions/{id}
The transaction system is a critical part of Kajabi's payment infrastructure, handling all monetary operations while maintaining detailed records for accounting, reporting, and compliance purposes.
## Transaction Attributes
* `provider` (string) - The payment processor used for the payment
* `action` (string) - Indicate the type of transaction:
* `charge` - One-time payment
* `refund` - Money returned to customer
* `subscribe` - New subscription
* `subscription_charge` - Recurring subscription payment
* `free_purchase` - $0 transaction
* `test` - Test transaction
* `dispute` - Disputed charge
* `subscription_update` - Subscription modification
* `state` (string) - The transaction's status:
* `initialized` - Transaction started
* `succeeded` - Transaction completed successfully
* `failed` - Transaction failed
* `payment_type` (string) - Indicates the payment structure (nullable)
* `amount_in_cents` (integer) - The USD price in cents (for precise decimal handling) can be negative for refunds
* `sales_tax_in_cents` (integer) - The USD sales tax in cents (for precise decimal handling)
* `payment_fee_in_cents` (integer) - Payment processing fee associated with the transaction (Kajabi Payments only)
* `currency` (string) - String representing the currency code (nullable) automatically upcased
* Defaults to "USD" if not specified
* `currency_symbol` (string) - String representing the currency symbol (nullable)
* Example: "$" for USD
* `formatted_amount` (string) - String representing the amount in a human-readable format
* Includes currency symbol
* Does not include currency code
* Example: "$19.99"
* `settlement_amount_in_cents` (integer) - Price of the payment in cents based on the settlement currency (Kajabi Payments only)
* `settlement_fee_amount_in_cents` (integer) - Payment processing fee associated with the transaction based on the settlement currency (Kajabi Payments only)
* `settlement_currency` (string) - Currency of the payment based on settlement, typically the currency of the attached bank account (Kajabi Payments only)
* `created_at` (string) - The creation date and time, ISO date string format (read-only)
## Sparse Fields
Use the `fields[transactions]` parameter to request only specific attributes:
### Only return amount_in_cents and sales_tax_in_cents attributes
* `GET /v1/transactions/123?fields[transactions]=amount_in_cents,sales_tax_in_cents`
Response will only include requested fields
```json
{
"data": {
"id": "123",
"type": "transactions",
"attributes": {
"amount_in_cents": 9900,
"sales_tax_in_cents": 990
}
}
}
```
## Include Relationships
Use the `include` parameter to include related resources:
> **Deprecated:** the `offer` relationship is deprecated and will be removed in a future version. It is only populated for single-offer transactions and is `null` for bundled (multi-offer) transactions. Use the `purchases` relationship instead — it lists every offer purchase a transaction covers, for all transaction types.
### Include customer and purchases relationships
* `GET /v1/transactions/123?include=customer,purchases`
Response will include related resources
```json
{
"data": {
"id": "123",
"type": "transactions",
"attributes": {
"action": "subscription_charge",
"state": "succeeded",
"payment_type": "subscription",
"amount_in_cents": 100,
"sales_tax_in_cents": 0,
"currency": "USD",
"currency_symbol": "$",
"formatted_amount": "$1.00",
"created_at": "2025-03-14T19:17:38.000Z"
},
"relationships": {
"customer": {
"data": {
"id": "456",
"type": "customers"
}
},
"purchases": {
"data": [
{
"id": "501",
"type": "purchases"
}
]
}
}
},
"included": [
{
"id": "456",
"type": "customers",
"attributes": {
"name": "John Doe",
"email": "email@example.com",
"avatar": "https://example.com/avatar.jpg",
"external_user_id": "123",
"public_bio": "Public Bio",
"public_location": "Public Location",
"public_website": "https://example.com",
"socials": {
"twitter": "https://twitter.com",
"facebook": "https://facebook.com",
"linkedin": "https://linkedin.com"
},
"net_revenue": 10000,
"sign_in_count": 10,
"last_request_at": "2024-01-15T10:30:00Z",
"bounced_at": "2024-01-15T10:30:00Z",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
}
},
{
"id": "501",
"type": "purchases",
"attributes": {
"amount_in_cents": 100,
"payment_type": "subscription",
"currency": "USD",
"quantity": 1,
"created_at": "2025-03-14T19:17:38.000Z",
"updated_at": "2025-03-14T19:17:38.000Z"
},
"relationships": {
"offer": {
"data": {
"id": "789",
"type": "offers"
}
}
}
}
]
}
```
## Using Multiple Parameters Together
You can combine sparse fields and include in a single request:
### Get transaction with specific fields and included relationships
* `GET /v1/transactions/123?include=customer&fields[transactions]=amount_in_cents,sales_tax_in_cents&fields[customers]=name,email`
Response will include transaction with only requested fields and included customer with only name and email fields
```json
{
"data": {
"id": "123",
"type": "transactions",
"attributes": {
"amount_in_cents": 9900,
"sales_tax_in_cents": 990
},
"relationships": {}
},
"included": [
{
"id": "456",
"type": "customers",
"attributes": {
"name": "John Doe",
"email": "john@example.com"
}
}
]
}
```
# Version
Source: https://help.kajabi.com/api-reference/version/version
/openapi.yaml get /v1/version
Returns the current version of the Kajabi API and links to the API documentation.
This endpoint does not require authentication; it can be used as a health check.
## Response attributes
* `meta` (object) - Meta information about the API.
* `title` (string) - The title of the API.
* `version` (string) - The version of the API.
* `links` (object) - Links to the API documentation.
* `documentation` (string) - The URL to the API documentation.
* `jsonapi` (object) - JSON API information.
* `version` (string) - The version of the JSON API.
* `specficiation` (string) - The URL to the JSON API specification.
# Create hook
Source: https://help.kajabi.com/api-reference/webhooks/create-hook
/openapi.yaml post /v1/hooks
Creates a new webhook subscription
## Request Body
The request must include:
* `data` - parent object which includes the children/nested attributes:
* `target_url` - The URL where webhook events will be sent
* `event` - The type of event to subscribe to (see available events below), for example "tag_added"
* `resource_id` (optional) - Specific resource ID to filter events for, for example the id of the Contact Tag. When the property is omitted, the webhook will be triggered for all events of the specified type, as a wildcard webhook.
## Available Event Types
| Event | Description | Required API Scopes |
|-------|-------------|-------------------|
| `purchase` | Customer makes a purchase | `view:purchases` |
| `payment_succeeded` | Payment transaction completes successfully | `view:transactions` |
| `order_created` | New order is created | `view:transactions`, `view:orders` |
| `form_submission` | Someone submits a form | `view:form_submissions` |
| `tag_added` | Tag is added to a contact | `view:contacts` |
| `tag_removed` | Tag is removed from a contact | `view:contacts` |
**Note**: You can only create webhooks for events you have permission to access based on your API key scopes. For example to use tags you need the `view:contacts` scope, which is included in the account owner api key scope.
## Sample Payloads
You can view sample webhook payloads for each event type:
* `GET /v1/hooks/purchase_sample`
* `GET /v1/hooks/payment_succeeded_sample`
* `GET /v1/hooks/order_created_sample`
* `GET /v1/hooks/form_submission_sample`
* `GET /v1/hooks/tag_added_sample`
* `GET /v1/hooks/tag_removed_sample`
Example request targeting a specific tag:
```json
{
"data": {
"type": "hooks",
"attributes": {
"target_url": "https://example.com/webhook",
"event": "tag_added",
"resource_id": "123"
},
"relationships": {
"site": {
"data": {
"id": "456",
"type": "sites"
}
}
}
}
}
```
Example request using a wildcard webhook:
```json
{
"data": {
"type": "hooks",
"attributes": {
"target_url": "https://example.com/webhook",
"event": "tag_added"
},
"relationships": {
"site": {
"data": {
"id": "456",
"type": "sites"
}
}
}
}
}
```
## Actual Payloads
The actual payloads are sent to the `target_url` as a POST request with the following JSON body:
```json
{
"id": "hash_id",
"event": "tag_added",
"payload": [],
}
```
The `id` is the ID of the resource that triggered the event.
The `event` is the type of event that triggered the webhook.
The `payload` is the actual payload of the event and the content will be similar to the sample payloads above.
# Delete hook
Source: https://help.kajabi.com/api-reference/webhooks/delete-hook
/openapi.yaml delete /v1/hooks/{id}
Deletes a webhook subscription
# Form submission sample
Source: https://help.kajabi.com/api-reference/webhooks/form-submission-sample
/openapi.yaml get /v1/hooks/form_submission_sample
Returns sample webhook payload for the `form_submission` event:
```
[
{
"id": "0",
"type": "form_submissions",
"attributes": {
"name": "John Doe",
"email": "john.doe@example.com",
"address_line_1": null,
"address_line_2": null,
"address_city": null,
"address_country": null,
"address_state": null,
"address_zip": null,
"phone_number": null,
"business_number": null,
"mobile_phone_number": null
},
"relationships": {
"site": {
"data": {
"id": "2",
"type": "sites"
}
},
"form": {
"data": {
"id": "0",
"type": "forms"
}
}
}
},
{
"id": "0",
"type": "forms",
"attributes": {
"url": "https://bill-heaton.kajabi-products.test/forms/0",
"title": "Sample Form",
"default": false,
"webhook_url": null,
"created_at": null,
"updated_at": null
},
"relationships": {
"site": {
"data": {
"id": "2",
"type": "sites"
}
},
"fields": {
"data": []
},
"contact_tags": {
"data": []
}
}
}
]
```
## Actual Payloads
The actual payloads are sent to the `target_url` as a POST request with the following JSON body:
```json
{
"id": "hash_id",
"event": "form_submission",
"payload": [],
}
```
The `payload` array is the sample response above
# Hook details
Source: https://help.kajabi.com/api-reference/webhooks/hook-details
/openapi.yaml get /v1/hooks/{id}
Returns specific hook based on it ID
# List hooks
Source: https://help.kajabi.com/api-reference/webhooks/list-hooks
/openapi.yaml get /v1/hooks
Lists webhooks for a site
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/hooks?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/hooks?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/hooks?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/hooks?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/hooks?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/hooks?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/hooks?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Filtering
Use `filter[event_eq]` parameter to filter webhooks by event type:
### Get webhooks for purchase events only
* `GET /v1/hooks?filter[event_eq]=purchase`
# Order created sample
Source: https://help.kajabi.com/api-reference/webhooks/order-created-sample
/openapi.yaml get /v1/hooks/order_created_sample
Returns sample webhook payload for the `order_created` event:
```
[
{
"id": "0",
"type": "transactions",
"attributes": {
"action": "charge",
"state": "succeeded",
"payment_type": "charge",
"amount_in_cents": 1000,
"sales_tax_in_cents": 0,
"currency": "USD",
"currency_symbol": "$",
"formatted_amount": "$10.00",
"created_at": "2025-07-31T17:13:05.247Z"
},
"relationships": {
"customer": {
"data": {
"id": "0",
"type": "customers"
}
},
"offer": {
"data": null
}
}
},
{
"id": "0",
"type": "customers",
"attributes": {
"name": "John Doe",
"email": "john.doe@example.com",
"avatar": null,
"external_user_id": null,
"public_bio": null,
"public_location": null,
"public_website": null,
"socials": null,
"net_revenue": "0.0",
"sign_in_count": 0,
"last_request_at": null,
"bounced_at": null,
"created_at": "2025-07-31T17:13:05.207Z",
"updated_at": "2025-07-31T17:13:05.207Z"
},
"links": {
"contact": "https://www.kajabi.test/api/v1/contacts/0"
},
"relationships": {
"site": {
"data": {
"id": "2",
"type": "sites"
}
},
"contact": {
"data": {
"id": "0",
"type": "contacts"
}
},
"offers": {
"data": [],
"links": {
"self": "https://www.kajabi.test/api/v1/customers/0/relationships/offers"
}
},
"products": {
"data": []
}
}
},
{
"id": "0",
"type": "orders",
"attributes": {
"order_number": 0,
"currency_code": "USD",
"fulfilled_at": null,
"created_at": "2025-07-31T17:13:05.207Z",
"total_price_in_cents": 1000,
"subtotal_in_cents": 800,
"sales_tax_amount_in_cents": 200,
"discount_amount_in_cents": 0,
"formatted_total_price": "$10.00",
"formatted_subtotal": "$8.00",
"currency_symbol": "$"
},
"relationships": {
"site": {
"data": {
"id": "2",
"type": "sites"
}
},
"customer": {
"data": {
"id": "0",
"type": "customers"
}
},
"order_items": {
"data": [
{
"id": "0",
"type": "order_items"
}
]
},
"payment_transactions": {
"data": []
}
}
},
{
"id": "0",
"type": "order_items",
"attributes": {
"quantity": 1,
"currency_code": "USD",
"item_type": "Offer",
"item_id": 0,
"title": "Kajabi Test Offer",
"fulfilled_at": null,
"created_at": "2025-07-31T17:13:05.229Z",
"total_price_in_cents": 1000,
"subtotal_in_cents": 800,
"sales_tax_amount_in_cents": 200,
"discount_amount_in_cents": 0,
"formatted_total_price": "$10.00",
"formatted_subtotal": "$8.00",
"currency_symbol": "$"
},
"relationships": {
"order": {
"data": {
"id": "0",
"type": "orders"
}
}
}
}
]
```
## Actual Payloads
The actual payloads are sent to the `target_url` as a POST request with the following JSON body:
```json
{
"id": "hash_id",
"event": "order_created",
"payload": [],
}
```
The `payload` array is the sample response above
# Payment succeeded sample
Source: https://help.kajabi.com/api-reference/webhooks/payment-succeeded-sample
/openapi.yaml get /v1/hooks/payment_succeeded_sample
Returns sample webhook payload for the `payment_succeeded` event:
```
[
{
"id": "0",
"type": "transactions",
"attributes": {
"action": "charge",
"state": "succeeded",
"payment_type": "charge",
"amount_in_cents": 1000,
"sales_tax_in_cents": 0,
"currency": "USD",
"currency_symbol": "$",
"formatted_amount": "$10.00",
"created_at": "2025-07-31T17:10:19.285Z"
},
"relationships": {
"customer": {
"data": {
"id": "0",
"type": "customers"
}
},
"offer": {
"data": null
}
}
},
{
"id": "0",
"type": "customers",
"attributes": {
"name": "John Doe",
"email": "john.doe@example.com",
"avatar": null,
"external_user_id": null,
"public_bio": null,
"public_location": null,
"public_website": null,
"socials": null,
"net_revenue": "0.0",
"sign_in_count": 0,
"last_request_at": null,
"bounced_at": null,
"created_at": "2025-07-31T17:10:19.243Z",
"updated_at": "2025-07-31T17:10:19.243Z"
},
"links": {
"contact": "https://www.kajabi.test/api/v1/contacts/0"
},
"relationships": {
"site": {
"data": {
"id": "2",
"type": "sites"
}
},
"contact": {
"data": {
"id": "0",
"type": "contacts"
}
},
"offers": {
"data": [],
"links": {
"self": "https://www.kajabi.test/api/v1/customers/0/relationships/offers"
}
},
"products": {
"data": []
}
}
}
]
```
## Actual Payloads
The actual payloads are sent to the `target_url` as a POST request with the following JSON body:
```json
{
"id": "hash_id",
"event": "payment_succeeded",
"payload": [],
}
```
The `payload` array is the sample response above
# Purchase sample
Source: https://help.kajabi.com/api-reference/webhooks/purchase-sample
/openapi.yaml get /v1/hooks/purchase_sample
Returns sample webhook payload for the `purchase` event:
```
[
{
"id": "0",
"type": "purchases",
"attributes": {
"amount_in_cents": 1000,
"payment_type": "single",
"multipay_payments_made": null,
"opt_in": false,
"raw_extra_contact_information": {},
"currency": "USD",
"effective_start_at": null,
"cardholder_name": null,
"billing_address_zip": null,
"deactivated_at": null,
"deactivation_reason": null,
"coupon_code": null,
"source": null,
"referrer": null,
"quantity": 1,
"created_at": "2025-07-31T16:59:27.580Z",
"updated_at": "2025-07-31T16:59:27.580Z"
},
"relationships": {
"customer": {
"data": {
"id": "0",
"type": "customers"
}
},
"offer": {
"data": {
"id": "0",
"type": "offers"
}
},
"products": {
"data": []
}
}
},
{
"id": "0",
"type": "offers",
"attributes": {
"title": "Kajabi Test Offer",
"description": null,
"internal_title": null,
"currency": "USD",
"price_in_cents": 1000,
"payment_type": "single",
"token": "n8NtoHUZ",
"image_url": null,
"payment_method": "stripe_and_paypal",
"price_description": "$10.00 USD",
"checkout_url": "https://bill-heaton.kajabi-products.test/offers/n8NtoHUZ",
"recurring_offer": false,
"subscription": false,
"one_time": true,
"single": true,
"free": false
},
"relationships": {
"site": {
"data": {
"id": "2",
"type": "sites"
}
},
"products": {
"data": []
},
"forms": {
"data": []
}
}
},
{
"id": "0",
"type": "customers",
"attributes": {
"name": "John Doe",
"email": "john.doe@example.com",
"avatar": null,
"external_user_id": null,
"public_bio": null,
"public_location": null,
"public_website": null,
"socials": null,
"net_revenue": "0.0",
"sign_in_count": 0,
"last_request_at": null,
"bounced_at": null,
"created_at": "2025-07-31T16:59:27.552Z",
"updated_at": "2025-07-31T16:59:27.552Z"
},
"links": {
"contact": "https://www.kajabi.test/api/v1/contacts/0"
},
"relationships": {
"site": {
"data": {
"id": "2",
"type": "sites"
}
},
"contact": {
"data": {
"id": "0",
"type": "contacts"
}
},
"offers": {
"data": [],
"links": {
"self": "https://www.kajabi.test/api/v1/customers/0/relationships/offers"
}
},
"products": {
"data": []
}
}
}
]
```
## Actual Payloads
The actual payloads are sent to the `target_url` as a POST request with the following JSON body:
```json
{
"id": "hash_id",
"event": "purchase",
"payload": [],
}
```
The `payload` array is the sample response above
# Tag added sample
Source: https://help.kajabi.com/api-reference/webhooks/tag-added-sample
/openapi.yaml get /v1/hooks/tag_added_sample
Returns sample webhook payload for the `tag_added` event:
```
[
{
"id": "0",
"type": "contacts",
"attributes": {
"name": "Sample Recipient",
"email": "sample@example.com",
"address_line_1": "123 Kajabi Ln",
"address_line_2": "Kajabi Suite 4",
"address_city": "Kajabiwood",
"address_country": "United Sites of Kajabi",
"address_state": "Kajabifornia",
"address_zip": "99999",
"phone_number": "5555555555",
"business_number": null,
"subscribed": false,
"external_user_id": null,
"created_at": "2025-07-31T16:51:04.010Z",
"updated_at": "2025-07-31T16:51:04.010Z"
},
"links": {
"customer": ""
},
"relationships": {
"site": {
"data": {
"id": "2",
"type": "sites"
}
}
}
},
{
"id": "0",
"type": "contact_tags",
"attributes": {
"name": "Tag"
},
"relationships": {
"site": {
"data": {
"id": "2",
"type": "sites"
}
}
}
}
]
```
## Actual Payloads
The actual payloads are sent to the `target_url` as a POST request with the following JSON body:
```json
{
"id": "hash_id",
"event": "tag_added",
"payload": [],
}
```
The `payload` array is the sample response above
# Tag removed sample
Source: https://help.kajabi.com/api-reference/webhooks/tag-removed-sample
/openapi.yaml get /v1/hooks/tag_removed_sample
Returns sample webhook payload for the `tag_removed` event:
```
[
{
"id": "0",
"type": "contacts",
"attributes": {
"name": "Sample Recipient",
"email": "sample@example.com",
"address_line_1": "123 Kajabi Ln",
"address_line_2": "Kajabi Suite 4",
"address_city": "Kajabiwood",
"address_country": "United Sites of Kajabi",
"address_state": "Kajabifornia",
"address_zip": "99999",
"phone_number": "5555555555",
"business_number": null,
"subscribed": false,
"external_user_id": null,
"created_at": "2025-07-31T16:51:04.010Z",
"updated_at": "2025-07-31T16:51:04.010Z"
},
"links": {
"customer": ""
},
"relationships": {
"site": {
"data": {
"id": "2",
"type": "sites"
}
}
}
},
{
"id": "0",
"type": "contact_tags",
"attributes": {
"name": "Tag"
},
"relationships": {
"site": {
"data": {
"id": "2",
"type": "sites"
}
}
}
}
]
```
## Actual Payloads
The actual payloads are sent to the `target_url` as a POST request with the following JSON body:
```json
{
"id": "hash_id",
"event": "tag_removed",
"payload": [],
}
```
The `payload` array is the sample response above
# 7 prompts to profit: Build your eBook, landing page & follow-up sequence
Source: https://help.kajabi.com/video-library/7-prompts-to-profit-build-your-e-book-landing-page-and-follow-up-sequence
### **What you'll learn**
* **Generate an irresistible eBook idea** your audience will love
* **Craft a catchy title and outline** to grab attention instantly
* **Write engaging content** that builds trust and showcases your expertise
* **Create copy for the landing page** that converts visitors into subscribers
* **Build an 8-email follow-up sequence** to nurture and sell your offer
### **Create An eBook Lead Magnet That Your Audience Actually Wants So You Can Build Your List & Profit Along The Way.**
Are you ready to use AI to grow your audience and make sales? In this on-demand webinar, you’ll learn how to craft a high-converting eBook, create copy for the landing page, and build the automated email sequence to sell your offer. With just 7 powerful prompts, you’ll go from idea to fully-built marketing asset with the help of artificial intelligence.
**Follow Along With The Webinar**\
Imagine the impact of an optimized lead magnet on your list growth and sales. Download the [**PROMPT GUIDE**](https://docs.google.com/document/d/1f7uGf9t1qHNnVAMJNzto_BYx5AIadpUA4lAONiAxDHo/copy) and click the “Make a copy” button to get all 7 prompts, transform your lead generation strategy, and turn your eBook into a profitable asset.
**Who Should Watch:**\
This webinar is perfect for creators, coaches, and entrepreneurs who want to:
* Quickly build their email list with an attractive lead magnet
* Save time by using AI to generate high-quality content
* Keep leads engaged with a professionally written follow-up sequence
# VIDEO: Cofounder overview
Source: https://help.kajabi.com/video-library/Cofounder-overview
Understand what Cofounder is, how it works, and how it helps you turn ideas into income.
[Click here to get started with Cofounder](https://app.kajabi.com/admin/last_site/dashboard?auto-open=cofounder) in your Kajabi Dashboard.
For more in-depth information on Cofounder, see: [**Cofounder overview**](https://help.kajabi.com/articles/cofounder/cofounder-overview)
# VIDEO: Account users
Source: https://help.kajabi.com/video-library/account-users
Add, edit, and manage users in your Kajabi account and assign them roles.
For more in-depth information on account users, see: [**Account users**](https://help.kajabi.com/articles/account-settings/users/account-users)
# AI driven content creation
Source: https://help.kajabi.com/video-library/ai-driven-content-creation
### **What you'll learn**
* Create compelling, high-performing content using AI
* Develop your unique voice and perspective
* Engineer and utilize AI prompts effectively
### **Stay ahead of the curve and boost your productivity with the help of Artificial Intelligence.**
This training is your gateway to becoming a prompt engineer, armed with a formula for crafting thoughtful prompts so you can turn up AI’s full potential. You’re going to learn how to boost your productivity as a course creator or coach by using AI to help you create the content that normally takes you days… in seconds.
[**Learn to use CoFounder to answer your questions, quickly create high-quality content for your business, and more.**](https://help.kajabi.com/hc/en-us/articles/16776393972379-How-to-Use-Kajabi-s-Conversational-AI-Assistant-Ama)
### **Prompt Structure: The Who, The What, and The How**
**The Who:** Tells CoFounder the role they are to play or the job description it has. My favorite job descriptions are copywriter and digital marketer, but you could also use: Journalist, Project Manager, Speech writer… the list goes on. When you start off your prompt like this, it will respond as if it has these credentials & skills.
**The What:** is exactly what task you want accomplished. You need to be specific about exactly what you want, unlike an ill-defined Google search. My strategy is to tell CoFounder exactly what I want but in the same breath… also exactly what I’m USING it for and WHO it’s for.
**The How:** Is your opportunity to dictate the exact format, tone, and style you’d prefer the response to be in. This is what most people unfortunately forget, but it’s crucial if you want the chatbot to create content that sounds like it came from you. First, tap into your inner thesaurus to control the tone of voice, and style that you write in. Should it be written in a witty way? Passionate? Business-casual? Whimsical? Emotional? Assertive? Assigning these colorful adjectives to your prompt will not only significantly improve the responses, but also make them unique to your brand voice. Last, be sure to tell the chatbot how you want your answer formatted: A list? Spreadsheet? Summary? Detailed paragraphs? Step by step directions?
**Example:** You are a copywriter. Create a short social media post perfect for Instagram that will captivate the attention of \[Insert your target audience]. Write the caption with an \[insert tone] tone of voice.
### **Sales Email Prompt**
You are a copywriter specialized in writing high converting emails, with a decade of experience and millions of dollars in revenue as a direct result of your email copy.
I want you to write a compelling sales email about \[topic] that enhances the chances of driving conversions and generating revenue for my course called \[course name]. My course helps people \[end result of your course]. This email will be sent to my target audience consisting of \[target audience]. For the tone, focus on urgency to purchase soon, however you need to be witty and provide value to the reader.
In the first paragraph discuss one pain point my customers are facing. In the second paragraph add a call to action to purchase my course and how their life will be better when they do. In the 3rd paragraph include 3 bullets covering the benefits my course offers.
Your sales email will demonstrate mastery over the most difficult aspects of email marketing: grabbing attention, maintaining relevance & personalization, striking the right tone, and overcoming spam filters.
Your response should be a well crafted and convincing email that provides value to my potential customers who read it. Please also provide three subject lines for me to choose from.
### **Sales Video Prompt**
You are a sales video script copywriter with a decade of experience and millions of dollars in revenue as a direct result of your sales videos.
Write a video sales letter explaining why \[Insert Your Target Audience] should buy my course called \[Name of Your Course]. My course teaches people how to \[Insert Detailed Description about the End Result of Your Course]. The viewers should know this about me: \[Insert your qualifications]. My course costs: \[Insert price].
Your response should be an emotionally impactful winning Video Sales Letter script limited to 3 minutes long, inspired by techniques taught by the legendary Copywriter Stefan Georgi.
Your response will be structured as follows:
1. INTRO
2. RELATABLE STORY
3. TOUCHING ON PAIN POINTS
4. SOLUTION REVEAL
5. SOCIAL PROOF
6. CALL TO ACTION
7. RECAP AND CLOSING
### **Sales Page Copy Prompt**
You are a sales page copywriter with 10 years of experience and your copy has led to millions of dollars in sales.
Your task is to write the content for my sales page explaining why \[Insert Your Target Audience] should buy my course called \[Name of Your Course]. My course teaches people how to \[Insert Detailed Description about the End Result of Your Course]. The sales page visitors should know this about me: \[Insert your qualifications]. My course costs: \[Insert price].Your response needs to be SEO optimized with popular keywords in the \[Insert your niche] niche.
The long-form sales page content you create should be conversational, persuasive, and written in a storytelling format, inspired by the sales page techniques taught by the original conversion copywriter, Joanna Wiebe.
### **Social Media Video Prompt**
\*\*Prompt #1 \*\*
You know everything about \[Insert your Niche]. Create a list of 5 video ideas that \[Insert your target audience] would be highly interested in watching. Each Idea should have a title, a caption, and an explanation of what happens in the video. Label each idea 1-5.
\*\*Prompt #2 \*\*
You are a social media expert with 10 years of experience and your videos have been viewed and loved by billions of people. Your task is to fully write the content for \[Copy/paste the video title, caption, and explanation]. Your response needs to be entertaining and worth watching. The first few seconds of the video needs to have a hook that captures attention. You have read and mastered the social media techniques and teachings of people like and related to Gary Vaynerchuk, Brendan Kane, Seth Godin, and Donald Miller. This video should be less than a minute long and formatted for \[Insert Desired Social Media Platform] and at the end the call to action should be to click the link in bio.
**Additional Resources**
* **[Future Tools](https://www.futuretools.io/):** To quote their website directly, FutureTools Collects & Organizes All The Best AI Tools So YOU Too Can Become Superhuman! This is how you discover new tools powered by artificial intelligence to make your life easier.[****](https://www.leonardo.ai/)
* **[Leonardo.ai](http://Leonardo.ai)[:](https://www.leonardo.ai/)** [Copy.AI](http://Copy.AI) allows you to leverage AI to write your content and copy in minutes.[****](https://kajabi.com/artificial-intelligence)
# VIDEO: Amplify profiles
Source: https://help.kajabi.com/video-library/amplify-profiles
Set up publisher and sponsor profiles on Amplify to run sponsored ads or get promoted by other Kajabi experts.
For more in-depth information on Amplify, see: [**Set up Amplify**](https://help.kajabi.com/articles/amplify/set-up-an-amplify-profile)
# VIDEO: Amplify promotions
Source: https://help.kajabi.com/video-library/amplify-promotions
Earn money promoting sponsors to your email list, or pay to reach new audiences through other Kajabi experts' broadcasts.
For more in-depth information on Amplify, see: [**Amplify promotions**](https://help.kajabi.com/articles/amplify/amplify-promotions)
# Assemble and Offer
Source: https://help.kajabi.com/video-library/assemble-and-offer-1
### **What you'll learn**
* Gain practical insights into assemble and offer
* Apply best practices to your own situation
* Overcome common challenges and obstacles
Learn how to package your knowledge and start generating revenue using Kajabi's core product types and sales tools. You'll see how to create and structure courses (including Cohort courses), set up coaching programs, build a community, launch a podcast, and sell digital downloads or newsletters.
**By the end of this video, you will be able to:**
1. Identify which Kajabi product type — course, coaching, community, podcast, newsletter, or download — best fits your content and delivery goals.
2. Create and configure an Offer that connects your product to a checkout page, including payment types, pricing structures, and upsell options.
3. Set up Kajabi Payments to accept transactions, issue refunds, and offer flexible payment methods such as subscriptions, buy now/pay later, and one-time payments.
# Build Your Brand
Source: https://help.kajabi.com/video-library/build-your-brand-1
### **What you'll learn**
* Build a strong, recognizable brand identity
* Apply proven frameworks and best practices
* Implement a clear action plan immediately
Build a brand that attracts the right audience and turns visitors into paying customers using Kajabi's website builder and marketing suite. You'll learn how to build and customize your site using templates, the block-and-section structure, and the style guide for consistent branding.
**By the end of this video, you will be able to:**
1. Build and customize a Kajabi website using templates, blocks, and sections and apply global style settings to maintain consistent branding across all pages.
2. Create and schedule an email campaign by choosing the right format (broadcast for one-time sends, sequence for behavior-triggered drip) and customizing it with the visual editor.
3. Launch a funnel using a pre-built template to automate the marketing-to-sales pipeline, and navigate the funnel outline to edit steps and understand the customer journey.
# Building a coaching ecosystem that keeps clients coming back
Source: https://help.kajabi.com/video-library/building-a-coaching-ecosystem-that-keeps-clients-coming-back
Join 7-figure business coach, Julie Ciardi, as she shows how she uses Kajabi's full product suite to turn clients into superfans that stay engaged and invested all year long.
**Recorded on December 4, 2025\***
#### **Getting new customers takes time, money, and energy. Keeping them should feel easier than it does. Too often, members join and drift away because their experience feels scattered across tools and platforms.**
Join Julie Ciardi, Kajabi Hero and founder of Ignite Her Lab, for a live session on how to turn that struggle into growth. She’ll show how she used Kajabi to build a 7-figure membership business that grew 150% year over year with 65% renewal rates, and how you can create the same kind of connected experience that keeps members engaged longer and helps your business grow with clarity and confidence.
### What you'll learn
* Implement Julie’s exact Kajabi course template to deliver a premium, structured client experience.
* Turn your Kajabi Community into a guided coaching hub—not just a chat space—so clients stay engaged all year.
* Deliver daily coaching touchpoints with Private Podcasts and scheduled content that runs on autopilot.
* Increase retention using Kajabi’s mobile app and DM features to keep clients connected between calls.
* Add a clean paywall for upsells so clients can seamlessly move into your next offer.\\
\*Promotion is no longer available.
# Connect and Automate
Source: https://help.kajabi.com/video-library/connect-and-automate-1
### **What you'll learn**
* Connect Kajabi with your favorite tools
* Automate your marketing and sales processes
* Avoid common mistakes and pitfalls
Take back your time by putting your business on autopilot with Kajabi's automation and productivity tools. You'll learn how the "when/then" automation logic works, how to use pre-built blueprints to set up common workflows fast, and how to manage all your automations from a central view.
**By the end of this video, you will be able to:**
1. Build a Kajabi automation using the "when/then" trigger-and-action logic, applying "only if" conditions to target the right contacts at the right time.
2. Set up a Comment to DM automation using a pre-built blueprint to automatically convert social engagement into direct conversations.
3. Use Transcriptions and Translations to generate, edit, and export captions for video content and translate them into supported languages to expand your audience reach.
# VIDEO: Courses overview
Source: https://help.kajabi.com/video-library/courses-overview
Evergreen and Cohort Courses deliver visual and written content organized into modules and submodules, and with lessons and quizzes.
For more in-depth information on Courses, see: [**Courses overview**](https://help.kajabi.com/articles/products/courses/courses-overview)
# VIDEO: Create a Coaching product
Source: https://help.kajabi.com/video-library/create-a-coaching-product
Build, manage, and schedule Coaching sessions with customers on Kajabi.
For more in-depth information on Coaching, see: [Coaching product overview](https://help.kajabi.com/articles/products/coaching/coaching-product-overview)
# VIDEO: Create a cohort Course
Source: https://help.kajabi.com/video-library/create-a-cohort-course
Move learners through a course together as a group to foster collaboration and a sense of community while following a predetermined schedule.
For more in-depth information on cohorts, see: [Customize a Cohort Course](https://help.kajabi.com/articles/products/courses/customize-your-cohort-based-course)
# VIDEO: Create a Community challenge
Source: https://help.kajabi.com/video-library/create-a-community-challenge
Inspire your members to take action together with Challenges in your Community.
For more in-depth information on Kajabi Communities, see: [Build Kajabi Communities](https://help.kajabi.com/articles/products/community/build-kajabi-communities)
# VIDEO: Create a Community channel
Source: https://help.kajabi.com/video-library/create-a-community-channel
Segment your customers into refined groups with feed or chat Channels.
For more in-depth information on Kajabi Communities, see: [Build Kajabi Communities](https://help.kajabi.com/articles/products/community/build-kajabi-communities)
# Creating your community
Source: https://help.kajabi.com/video-library/creating-your-community
### What you'll learn
* Build and engage a loyal community
* Create meaningful connections with your customers
* Implement a clear action plan immediately
Learn about the essential components of a Kajabi community, and how it can benefit your business. Gain actionable tips to drive engagement and interaction within your community, leading to stronger relationships with your audience and increased revenue. In this webinar, we will guide you through the ins and outs of community building and give you the tools you need to succeed.
Additional resources:
* [**Communities Gamification**](https://help.kajabi.com/hc/en-us/articles/34804458329499-Communities-Gamification)
* [**How to Add Offers in Kajabi Communities**](https://how%20to%20add%20offers%20in%20kajabi%20communities/)
* [**How to Create a Poll in Your Kajabi Community**](https://help.kajabi.com/hc/en-us/articles/26694086775707-How-to-Create-a-Poll-in-Your-Kajabi-Community)
* [**Creating a Community Channel**](https://help.kajabi.com/hc/en-us/articles/9952453388443-Creating-a-Community-Channel)
\*Research by [**Higher Logic**](https://www.higherlogic.com/blog/online-community-stats-you-should-know/) has shown that community engagement can offer an average ROI of 6,469% percent and continue to grow as communities age.
# Kajabi Video Library
Source: https://help.kajabi.com/video-library/home-1
Browse video guides organized by topic to find step-by-step walkthroughs for the features you use most. For detailed written instructions and troubleshooting, visit the [**Documentation**](https://help.kajabi.com/) tab.
### What's new
### Have a question our content doesn't cover? Explore our additional resources.
Watch video guides and attend live webinars
Stay up to date with Kajabi and connect with other Heroes
Share feedback and see what Kajabi is working on
# How to drive revenue growth with a Branded Mobile App
Source: https://help.kajabi.com/video-library/how-to-drive-revenue-growth-with-a-branded-mobile-app
Join Kajabi Hero, Megan Sumrell, to learn how she has used a Branded Mobile App to generate 9k leads and earn \$350K in revenue from her app funnel alone.
# How to migrate to Kajabi from Patreon
Source: https://help.kajabi.com/video-library/how-to-migrate-to-kajabi-from-patreon
Migrating from another platform can be daunting, we're here to help! In this webinar, we will carefully plan all the steps needed to make this transition as smooth as possible.
### **What you'll learn**
* Understand the benefits of Kajabi vs Patreon
* Gather materials needed for migration
* Move their content into the Kajabi platform
* Know best practices for communicating with existing customers
**Additional resources:**
[**Set up a custom domain**](https://help.kajabi.com/hc/en-us/articles/1260801313510-Set-up-a-custom-domain)
[**How to Get Started with SEO**](https://help.kajabi.com/hc/en-us/articles/4417329045147-How-to-Get-Started-With-SEO)
[**Kajabi Payments Overview**](https://help.kajabi.com/hc/en-us/articles/10426676298267-Kajabi-Payments-Overview)
[**How to Build Membership Levels**](https://help.kajabi.com/hc/en-us/articles/360037764053-How-to-Build-Membership-Levels)
[**How to Import Contacts Onto Kajabi**](https://help.kajabi.com/hc/en-us/articles/360057082314-How-to-Import-Contacts-Onto-Kajabi)
[**How to Create a Coupon**](https://help.kajabi.com/hc/en-us/articles/360037763653-How-to-Create-a-Coupon)
# How to migrate to Kajabi from Teachable
Source: https://help.kajabi.com/video-library/how-to-migrate-to-kajabi-from-teachable
Migrating from another platform can be daunting, we're here to help! In this webinar, we will carefully plan all the steps needed to make this transition as smooth as possible.
### **What you'll learn**
* Learn how to migrate from Teachable to Kajabi seamlessly
* Understand the step-by-step migration process
* Implement a clear action plan immediately
**Additional resources:**
[**How to Import Contacts Onto Kajabi**](https://help.kajabi.com/hc/en-us/articles/360057082314-How-to-Import-Contacts-Onto-Kajabi)
**[Kajabi Payments Overview](https://help.kajabi.com/hc/en-us/articles/10426676298267-Kajabi-Payments-Overview)[](https://help.kajabi.com/hc/en-us/articles/360057082314-How-to-Import-Contacts-Onto-Kajabi)**
[**How to Import Contacts Onto Kajabi**](https://help.kajabi.com/hc/en-us/articles/360057082314-How-to-Import-Contacts-Onto-Kajabi)
[**How to Create a Coupon**](https://help.kajabi.com/hc/en-us/articles/360037763653-How-to-Create-a-Coupon)
# How to migrate to Kajabi from Thinkific
Source: https://help.kajabi.com/video-library/how-to-migrate-to-kajabi-from-thinkific
Migrating from another platform can be daunting, we're here to help! In this webinar, we will carefully plan all the steps needed to make this transition as smooth as possible.
### **What you'll learn**
* Learn how to migrate from Thinkific to Kajabi seamlessly
* Understand the step-by-step migration process
* Implement a clear action plan immediately
**Additional resources:**
[**How to Import Contacts Onto Kajabi**](https://help.kajabi.com/hc/en-us/articles/360057082314-How-to-Import-Contacts-Onto-Kajabi)
[**How to use Coupons**](https://help.kajabi.com/hc/en-us/sections/360008727773-Coupons)
[**Email Campaigns Overview**](https://help.kajabi.com/hc/en-us/articles/360036990014-Email-Campaigns-Overview)
[**How to Connect Your Custom Domain to Kajabi**](https://help.kajabi.com/hc/en-us/articles/1260801313510-Set-up-a-custom-domain)
# VIDEO: Use the Kajabi Cofounder app on mobile
Source: https://help.kajabi.com/video-library/kajabi-cofounder-mobile
Access your AI Cofounder from your iPhone or Android device to chat, manage action items, and stay on top of your business on the go.
[Click here to get started with Cofounder](https://app.kajabi.com/admin/last_site/dashboard?auto-open=cofounder) in your Kajabi Dashboard.
For more in-depth information on Cofounder, see: [**Cofounder overview**](https://help.kajabi.com/articles/cofounder/cofounder-overview)
# VIDEO: Kajabi Payments 101: Sell smarter with built-in payments
Source: https://help.kajabi.com/video-library/kajabi-payments-101-sell-smarter-with-built-in-payments
Get frequently asked questions answered about Kajabi Payments.
For more in-depth information on processing fees, see: [Kajabi Payments Processing Fees](https://help.kajabi.com/articles/sales/kajabi-payments/kajabi-payments-processing-fees)
# VIDEO: Kajabi Payments: Setup & onboarding for the United Kingdom
Source: https://help.kajabi.com/video-library/kajabi-payments-setup-and-onboarding-for-the-united-kingdom
A step-by-step guide to setting up payment integrations easily for the United Kingdom region.
For more in-depth information on processing fees, see: [Kajabi Payments Processing Fees](https://help.kajabi.com/articles/sales/kajabi-payments/kajabi-payments-processing-fees)
# VIDEO: Kajabi Payments: Setup & onboarding for the United States
Source: https://help.kajabi.com/video-library/kajabi-payments-setup-and-onboarding-for-the-united-states
A step-by-step guide to setting up payment integrations easily for the United States region.
For more in-depth information on processing fees, see: [Kajabi Payments Processing Fees](https://help.kajabi.com/articles/sales/kajabi-payments/kajabi-payments-processing-fees)
# Make your videos accessible
Source: https://help.kajabi.com/video-library/make-your-videos-accessible
### **What you'll learn**
* Gain practical insights into making videos accessible
* Apply best practices to your own situation
* Overcome common challenges and obstacles
In this video, you’ll learn how to make your video content more inclusive, engaging, and effective for every viewer. You’ll gain practical strategies for writing accessible scripts, recording clear audio, and designing readable visuals, captions, and transcripts. Confidently create videos that work harder for your audience—and deliver stronger results for your business.
\
**Additional Resources:**
[**Video Accessibility Checklist**](https://cdn.prod.website-files.com/693317e747432cd054b3bdc6/6966df7f8081a20a8d7885bb_Kajabi-VideoAccessibilityChecklist.pdf)
# VIDEO: Manage Kajabi sites
Source: https://help.kajabi.com/video-library/manage-kajabi-sites
Add a single Kajabi website or configure multiple sites within an account.
For more in-depth information on Kajabi sites, see: [**Manage Kajabi sites**](https://help.kajabi.com/articles/account-settings/my-kajabi/sites-explained)
# Monetize the gram
Source: https://help.kajabi.com/video-library/monetize-the-gram
### **What you'll learn**
* **Xtina’s 8 Instagram Success Secrets:** The exact steps that took her from a few thousand followers to a six-figure income machine.
* **The MONETIZE Method:** How to consistently grow your audience and convert them into loyal buyers.
* **From Likes to Revenue:** Transform your posts, stories, and reels into money-making content that draws clients straight to your offers.
* **The Super-Aligned Audience Formula:** Learn how to attract the right audience that’s primed and ready to buy from you.
* **The Instagram Mindset Shift:** Adopt the millionaire mindset that turns casual followers into paying customers.
**Kajabi has a new look!** Some content may have our old branding. [**Read more on how we are empowering creators.**](https://kajabi.com/reality-check)
Join Alex from Kajabi and Xtina Harmsworth, who skyrocketed from 3.8k followers to over 46k in just one year—and turned her audience into \$1.4 million in sales using Kajabi. Watch the replay and start turning your Instagram into a powerful revenue generator today!
**You’ll Learn From Someone Who’s Done It:**
Xtina didn’t just grow an audience—she built a community that buys. With \$1.4 million in sales on Kajabi, her methods are proven, tested, and waiting for you to apply them. Whether you're just starting or looking to scale, this webinar replay is packed with strategies you can use right now to make Instagram work for you.
**Don’t Miss Out on These Key Takeaways:**
1. Walk away with **clear, actionable steps** to grow your Instagram following.
2. Learn how to **monetize your content** and turn engagement into real income.
3. Get insider tips on how to drive your audience from Instagram to your Kajabi products.
**Additional Resources:**
* [**Viral Reels Creation Playbook**](https://www.xtinaharmsworth.com/viral-reels-creation-playbook)
* [**7 Day Slay Challenge Signup**](https://www.xtinaharmsworth.com/offers/osS9QEtD)
# Overcome imposter syndrome
Source: https://help.kajabi.com/video-library/overcome-imposter-syndrome
### **What you'll learn**
* Discover the Root of Your Imposter Syndrome - Understand what’s holding you back from realizing your potential and uncover the hidden beliefs that keep you from taking action.
* Actionable Steps to Build Unshakeable Confidence - Learn proven techniques to move from self-doubt to self-assurance, empowering you to launch without hesitation.
* Clear Path to Launch Your Kajabi Business - Walk away with a structured action plan to launch and grow your business on Kajabi, designed specifically to help you succeed.
* Mindset Alignment for Sustainable Success - Shift from a limiting mindset to one aligned with your business goals, setting yourself up for lasting impact.
**Recorded on November 20, 2024**
Join Alex from Kajabi and “The Fear Guy” Ben Harris, who teaches and coaches on this very subject. This webinar will address the root causes of Imposter syndrome, allowing you to overcome your fears and launch your business.
If you’ve ever felt like you’re not “good enough” to succeed or that you’re not quite ready to launch your business… then you’re not alone. Over 82% of online entrepreneurs struggle with imposter syndrome, which keeps them from achieving their true potential. This is especially common among new Kajabi Heroes and aspiring entrepreneurs who feel unqualified to take the leap. But it doesn’t have to hold you back any longer.
This isn’t just another strategy session; it’s a mindset reset designed to break down the invisible barriers that have been keeping you stuck. Don’t let fear stop you, take the first step toward launching your business with confidence by watching this webinar right now.
**Additional Resources:**
* [**Ben’s resources**](https://www.feeling-free.com/my-links)
# VIDEO: Protect your account with two-factor authentication
Source: https://help.kajabi.com/video-library/protect-your-account-with-two-factor-authentication
Set up and manage two-factor authentication (2FA) to secure your Kajabi account.
For more in-depth information on two-factor authentication, see: [**Manage two-factor authentication (2FA)**](https://help.kajabi.com/articles/account-settings/my-kajabi/protect-your-account-with-two-factor-authentication-2fa)
# VIDEO: Set up a Sales Agent
Source: https://help.kajabi.com/video-library/set-up-a-sales-agent
Configure a Sales Agent, link it to Offers or Landing Pages, customize its welcome message, and add it to a page using the Theme Editor.
For more in-depth information on Sales Agents, see: [Set up a Sales Agent](https://help.kajabi.com/articles/products/products-overview/set-up-a-sales-agent)
# Settings for success
Source: https://help.kajabi.com/video-library/settings-for-success
Setting up essential settings in your Kajabi account to start creating and selling.
### **What you'll learn**
* How to add your Site Details. These settings allow you to customize your logo, favicon, colors, course instructor, and page scripts.
* Customize your Marketing Settings. This is essential for email marketing communcations.
* How to set up Kajabi Payments. Kajabi's fleixbile all-in-one payment solution for easy payments, payouts, sales tax, and refunds.
Make your journey from Learning to Launching easier by customizing the three easy settings areas in Kajabi. In this workshop, you will learn the essential steps to update your site details, marketing settings, and how to connect Kajabi Payments. Completing these steps before your launch will ensure you're set up for success from the get-go.
**Additional resources:[](https://help.kajabi.com/hc/en-us/articles/1260801313510-How-to-Connect-a-Custom-Domain)**
[**How to Connect a Custom Domain**](https://help.kajabi.com/hc/en-us/articles/1260801313510-How-to-Connect-a-Custom-Domain)
[**Connecting a Custom Email Domain**](https://help.kajabi.com/hc/en-us/articles/360050369753-Connecting-a-Custom-Email-Domain)
[**Manage every payment effortlessly with Kajabi Payments**](https://help.kajabi.com/hc/en-us/articles/10426676298267-Kajabi-Payments-Overview)
# Take control of your email deliverability
Source: https://help.kajabi.com/video-library/take-control-of-your-email-deliverability
### **What you'll learn**
* Identify the three key factors that influence email deliverability and explain how each affects your sender reputation.
* Use double opt-in and contact management best practices to maintain build a clean, engaged list.
* Recognize positive and negative engagement signals and use them to guide your email content decisions.
* Set up a consistent sending schedule that builds audience trust without triggering spam filters.
* Understand how using a custom email domain strengthens your sender identity and inbox placement.
Hitting send is only half the battle — what happens after determines whether your message actually reaches your audience. Our video guide breaks down the 3 levers within your control to improve email deliverability: maintaining a clean, engaged list, creating content that drives meaningful interaction like clicks and replies (not just opens), and sending from your own custom email domain. Watch it now and start getting more of your emails where they belong.
# VIDEO: Understanding Cofounder + MCP
Source: https://help.kajabi.com/video-library/understanding-cofounder-mcp
Go from idea to draft without leaving the Cofounder chat.
**Note**: Currently, Cofounder MCP is included with all plans. Future limits may apply.
[Click here to get started with Cofounder](https://app.kajabi.com/admin/last_site/dashboard?auto-open=cofounder) in your Kajabi Dashboard.
For more in-depth information on Cofounder, see: [**Cofounder overview**](https://help.kajabi.com/articles/cofounder/cofounder-overview)
# Validate your idea
Source: https://help.kajabi.com/video-library/validate-your-idea
Confirm your concept is viable before you start building your business.
In this webinar, we’ll provide practical and tactical tips for idea generation and validation - ensuring that the niche you serve is a viable market in which you can grow your online business.
### What you'll learn
* Validate your concept before investing time and resources
* Identify viability signals and market readiness factors
* Implement a clear action plan immediately
# VIDEO: Upsells
Source: https://help.kajabi.com/video-library/Upsells
Create reusable Upsell pages, attach them to multiple Offers, and track performance with built-in analytics.
For more in-depth information on Upsells, see: [Upsells overview](https://help.kajabi.com/articles/sales/offers/upsells-overview).
# VIDEO: Automation triggers, flows, and branches
Source: https://help.kajabi.com/video-library/automation-triggers-flows-and-branches
Build complex automations with multiple triggers, flows, and conditional branching logic in a single workflow.
For more in-depth information on Automations, see: [Automations overview](https://help.kajabi.com/articles/marketing/automations/automations-overview)
# VIDEO: Automations overview
Source: https://help.kajabi.com/video-library/automations-overview
Automate admin actions across funnels, offers, forms, emails, events, and course lessons using when-then logic.
For more in-depth information on Automations, see: [Automations overview](https://help.kajabi.com/articles/marketing/automations/automations-overview)
# VIDEO: Connect a custom domain to Kajabi
Source: https://help.kajabi.com/video-library/connect-a-custom-domain-to-kajabi
Connect a custom domain to your Kajabi site by configuring name servers in your domain registrar.
For more in-depth information on custom domains, see: [Connect a custom domain](https://help.kajabi.com/articles/website/domains/connect-a-custom-domain)
# VIDEO: Create a Kajabi subdomain
Source: https://help.kajabi.com/video-library/create-a-kajabi-subdomain
Set up a custom subdomain for your Kajabi site using CNAME records and the subdomain wizard.
For more in-depth information on custom subdomains, see: [Create a subdomain for a Kajabi site](https://help.kajabi.com/articles/website/domains/how-to-create-a-subdomain-for-a-kajabi-site)
# VIDEO: Create an Event
Source: https://help.kajabi.com/video-library/create-an-event
Create Email Sequences built around an Event for registration, reminder, and follow-up emails.
For more in-depth information on Events, see: [Events overview](https://help.kajabi.com/articles/marketing/events/event-overview)
# VIDEO: Create an Offer
Source: https://help.kajabi.com/video-library/create-an-offer
Build, customize, and share an Offer to begin selling Products on Kajabi.
For more in-depth information on Offers, see: [Create an Offer](https://help.kajabi.com/articles/sales/offers/create-an-offer)
# VIDEO: Create and build a Form
Source: https://help.kajabi.com/video-library/create-and-build-a-form
Create a Form to subscribe contacts, grant Offers, and register contacts for Events.
For more in-depth information on Forms, see: [Create and build a Form](https://help.kajabi.com/articles/marketing/forms/create-and-build-your-form)
# VIDEO: Create Coupons
Source: https://help.kajabi.com/video-library/create-coupons
Create Offer, Cart, and Bulk Coupons in Kajabi, set discount type and value, apply redemption limits, and share Coupon URLs at checkout.
For more in-depth information on Coupons, see: [Coupons Overview](https://help.kajabi.com/articles/sales/coupons/coupons-overview)
# VIDEO: Get started creating a Branded App
Source: https://help.kajabi.com/video-library/get-started-creating-a-branded-app
Set up a Branded App subscription and begin the onboarding process with Kajabi.
For more in-depth information on Branded App, see: [Get started creating a Branded App](https://help.kajabi.com/articles/mobile-apps/branded-app/how-do-i-get-started-creating-my-own-branded-app)
# VIDEO: Grant an Offer
Source: https://help.kajabi.com/video-library/grant-an-offer
Grant an Offer to give free access to a course as a lead magnet, preview, or additional access.
For more in-depth information on Offers, see: [Offers overview](https://help.kajabi.com/articles/sales/offers/offers-overview)
# VIDEO: Kajabi Payments: Setup & onboarding for Australia
Source: https://help.kajabi.com/video-library/kajabi-payments-setup-and-onboarding-for-australia
A step-by-step guide to setting up payment integrations easily for the Australia.
For more in-depth information on processing fees, see: [Kajabi Payments Processing Fees](https://help.kajabi.com/articles/sales/kajabi-payments/kajabi-payments-processing-fees)
# VIDEO: Kajabi Payments: Setup & onboarding for Canada
Source: https://help.kajabi.com/video-library/kajabi-payments-setup-and-onboarding-for-canada
A step-by-step guide to setting up payment integrations easily for the Canadian region.
For more in-depth information on processing fees, see: [Kajabi Payments Processing Fees](https://help.kajabi.com/articles/sales/kajabi-payments/kajabi-payments-processing-fees)
# VIDEO: Kajabi Payments: Setup & onboarding for the EU
Source: https://help.kajabi.com/video-library/kajabi-payments-setup-and-onboarding-for-the-eu
A step-by-step guide to setting up payment integrations easily for the European Union region.
For more in-depth information on processing fees, see: [Kajabi Payments Processing Fees](https://help.kajabi.com/articles/sales/kajabi-payments/kajabi-payments-processing-fees)
# VIDEO: Kajabi Payments: Setup & onboarding for the UAE
Source: https://help.kajabi.com/video-library/kajabi-payments-setup-and-onboarding-for-the-uae
A step-by-step guide to setting up payment integrations easily for the United Arab Emirates region.
For more in-depth information on processing fees, see: [Kajabi Payments Processing Fees](https://help.kajabi.com/articles/sales/kajabi-payments/kajabi-payments-processing-fees)
# VIDEO: Manage affiliates
Source: https://help.kajabi.com/video-library/manage-affiliates
Invite new affiliates, enable self-registration, edit the welcome email, and configure commissions.
For more in-depth information on Affiliates, see: [Manage affiliates](https://help.kajabi.com/articles/sales/affiliates/manage-your-affiliates)
# Get access token
Source: https://help.kajabi.com/api-reference/authentication/get-access-token
/openapi.yaml post /v1/oauth/token
## Request `access_token` and `refresh_token`
There are three ways to exchange parameters for tokens
1. Provide client credentials `client_id` and `client_secret`
2. Provide a `refresh_token`
3. Provide `username` and `password` (client credentials is preferred)
### Using grant_type=client_credentials
Only include params: `client_id`, `client_secret`, and `grant_type`.
* The `grant_type` param value must be: `client_credentials`
### Using grant_type=refresh_token
Only include params: `refresh_token` and `grant_type`.
* The `grant_type` param value must be: `refresh_token`
* The `refresh_token` must be a unexpired JWT token, from a prior client credential token grant.
### Using username and password
Only include params: `username` and `password`.
## Response
A successful response will provide `access_token` and `refresh_token` values.
* Use the `access_token` in your `Authorization` header as a "Bearer" token to make authenticated requests to the API. E.g. `GET https://api.kajabi.com/v1/me`
* Store the `refresh_token` to exchange for a new `access_token` when it expires.
* Tokens may be invalidated using the `v1/oauth/revoke` endpoint to "log out".
### Attributes
* `access_token` (string) - The access token for the API session
* `refresh_token` (string) - The refresh token for the API session
* `token_type` (string) - The type of token, always `Bearer`
* `expires_in` (integer) - The number of seconds the access token will be valid for
# Revoke a token
Source: https://help.kajabi.com/api-reference/authentication/revoke-a-token
/openapi.yaml post /v1/oauth/revoke
## Revoke an `access_token` and `refresh_token`
Either token may be provided to "log out" of the API session. Both tokens we be invalidated.
* Only include param: `token` with your `access_token` or `refresh_token`
* Requires an `Authorization` header as `Bearer access_token` to authenticate the request.
## Response
* A successful response will have an empty body
* An error response will include a JSON body with error details.
# Blog post details
Source: https://help.kajabi.com/api-reference/blog-posts/blog-post-details
/openapi.yaml get /v1/blog_posts/{id}
Shows details of a blog post
## Blog Post Attributes
* `title` (string) - Title of the blog post
* `url` (string) - URL of the blog post
* `content` (string) - Content of the blog post
* `slug` (string) - Slug of the blog post
* `page_title` (string) - Page title of the blog post
* `page_description` (string) - Page description of the blog post
* `published_at` (string) - Date and time the blog post was published
* `created_at` (string) - Date and time the blog post was created
* `updated_at` (string) - Date and time the blog post was updated_at
* `image_url` (string) - URL of the image associated with the blog post
* `image_alt_text` (string) - Alt text for the image associated with the blog post
* `tags` (array) - Tags associated with the blog post
## Sparse Fields
### Only return title attribute
* `GET /v1/blog_posts/123?fields[blog_posts]=title`
Response will only include requested fields
```json
{
"data": {
"id": "123",
"type": "blog_posts",
"attributes": {
"title": "Announcing New Course"
}
}
}
```
# List blog posts
Source: https://help.kajabi.com/api-reference/blog-posts/list-blog-posts
/openapi.yaml get /v1/blog_posts
Returns a list of blog posts which the current user may access
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/blog_posts[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/blog_posts[number]=2&page[size]=25`
## Sparse Fields
Use the `fields[blog_posts]` parameter to request only specific attributes:
### Only return title attribute
* `GET /v1/blog_posts?fields[blog_posts]=title`
## Sorting
Use the `sort` parameter to sort the results:
### Sort by published_at in descending order
* `GET /v1/blog_posts?sort=-published_at&fields[blog_posts]=title`
## Filters
Use the `filter[site_id]` parameter to get blog posts for a specific site:
### Get blog posts for site with ID 123
* `GET /v1/blog_posts?filter[site_id]=123`
List of attributes that may be used to filter: title, content, slug, page_title, page_description, published_at, created_at, updated_at, image_url, image_alt_text, tags
The filter param uses the following syntax: `filter[attribute_name_suffix]` with suffix for comparison:
* `eq` for equals
* `cont` for contains
* `not_eq` for not equals
* `not_cont` for not contains
* `start` for starts with
* `end` for ends with
For example:
* `GET /v1/blog_posts?filter[title_start]=Announcing`
* `GET /v1/blog_posts?filter[title_cont]=Announcing`
# Contact note details
Source: https://help.kajabi.com/api-reference/contact-notes/contact-note-details
/openapi.yaml get /v1/contact_notes/{id}
Returns a single contact note by ID.
**Attributes:**
- `body` (string) - The note content
- `created_at` (datetime) - When the note was created
- `updated_at` (datetime) - When the note was last modified
**Relationships:**
- `contact` - The contact this note belongs to
# Create contact note
Source: https://help.kajabi.com/api-reference/contact-notes/create-contact-note
/openapi.yaml post /v1/contact_notes
Creates a new contact note.
**Required Attributes:**
- `body` (string) - The note content
**Required Relationships:**
- `contact` - The contact this note belongs to (resource identifier)
# Delete contact note
Source: https://help.kajabi.com/api-reference/contact-notes/delete-contact-note
/openapi.yaml delete /v1/contact_notes/{id}
Deletes a contact note by ID. This action is permanent and cannot be undone.
# List contact notes
Source: https://help.kajabi.com/api-reference/contact-notes/list-contact-notes
/openapi.yaml get /v1/contact_notes
Returns a paginated list of contact notes. This endpoint supports filtering, sorting, and pagination.
**Sorting:**
- `created_at` (default: descending)
**Filtering:**
- `filter[contact_id]` - Filter notes for a specific Contact
- `filter[site_id]` - Filter notes for a specific Site
**Pagination:**
- Use `page[number]` and `page[size]` parameters
- Default page size is 20, maximum is 100
# Update contact note
Source: https://help.kajabi.com/api-reference/contact-notes/update-contact-note
/openapi.yaml patch /v1/contact_notes/{id}
Updates an existing contact note. Only the note body can be updated.
**Updatable Attributes:**
- `body` (string) - The note content
Contact relationship cannot be changed after creation.
# Contact tag details
Source: https://help.kajabi.com/api-reference/contact-tags/contact-tag-details
/openapi.yaml get /v1/contact_tags/{id}
## Contact Tag Attributes
* `name` (string) - The name of the contact tag
## Contact Tag Relationships
The contact tag belongs to a site
# List contact tags
Source: https://help.kajabi.com/api-reference/contact-tags/list-contact-tags
/openapi.yaml get /v1/contact_tags
Tags (not archived) for a site
## Contact Tag Attributes
* `name` (string) - The name of the contact tag
## Pagination
Use the `page[number]` and `page[size]` query parameters to paginate results:
### Get first page of 10 items
* `GET /v1/contact_tags?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/contact_tags?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/contact_tags?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/contact_tags?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/contact_tags?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/contact_tags?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/contact_tags?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Filter by Site ID
Use the `filter[site_id]` parameter to get contact tags for a specific site:
### Get contact tags for site with ID 123
* `GET /v1/contact_tags?filter[site_id]=123`
Response will only include contact tags for that site
```json
{
"data": [{
"id": "456",
"type": "contact_tags",
"attributes": {
"name": "Source"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Filter by Name Contains
Use the `filter[name_cont]` parameter to find contact tags where the name contains specific text:
### Get contact tags with names containing "vip"
* `GET /v1/contact_tags?filter[name_cont]=vip`
Response will include contact tags with matching names
```json
{
"data": [{
"id": "456",
"type": "contact_tags",
"attributes": {
"name": "VIP Customer"
}
}]
}
```
## Using Multiple Parameters Together
You can combine pagination, sorting, sparse fields and filtering in a single request:
### Get page 2 of contact tags for site 123, sorted by name descending
* `GET /v1/contact_tags?page[number]=2&page[size]=10&sort=-name&filter[site_id]=123`
Response will include only requested fields, sorted and paginated
```json
{
"data": [{
"id": "456",
"type": "contact_tags",
"attributes": {
"name": "Webinar Attendee"
}
}, {
"id": "789",
"type": "contact_tags",
"attributes": {
"name": "VIP Customer"
}
}],
"links": {
"self": "https://api.kajabi.com/v1/contact_tags?page[number]=2&page[size]=10&sort=-name&fields[contact_tags]=name,handle&filter[site_id]=123",
"first": "https://api.kajabi.com/v1/contact_tags?page[number]=1&page[size]=10&sort=-name&fields[contact_tags]=name,handle&filter[site_id]=123",
"prev": "https://api.kajabi.com/v1/contact_tags?page[number]=1&page[size]=10&sort=-name&fields[contact_tags]=name,handle&filter[site_id]=123",
"next": "https://api.kajabi.com/v1/contact_tags?page[number]=3&page[size]=10&sort=-name&fields[contact_tags]=name,handle&filter[site_id]=123",
"last": "https://api.kajabi.com/v1/contact_tags?page[number]=5&page[size]=10&sort=-name&fields[contact_tags]=name,handle&filter[site_id]=123"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
# Add tag to contact
Source: https://help.kajabi.com/api-reference/contacts/add-tag-to-contact
/openapi.yaml post /v1/contacts/{contact_id}/relationships/tags
Add tag relationships to contact resource using a list of resource identifiers
Request body includes a list of resource identifiers, `id: CONTACT_TAG_ID`, `type: "contact_tags"`.
```json
{ "data": [{ "type": "contact_tags", "id": "456" }] }
```
The response body will include the updated list of tag relationships.
Example response body:
```json
{ "data": [{ "type": "contact_tags", "id": "123" }, { "type": "contact_tags", "id": "456" }] }
```
# Contact details
Source: https://help.kajabi.com/api-reference/contacts/contact-details
/openapi.yaml get /v1/contacts/{id}
Show details for a contact
## Contact Attributes
* `name` (string) - The name of the contact
* `email` (string) - The email of the contact, must be a valid and deliverable email address
* `address_line_1` (string) - The first line of the contact's address
* `address_line_2` (string) - The second line of the contact's address
* `address_city` (string) - The city of the contact's address
* `address_country` (string) - The country of the contact's address
* `address_state` (string) - The state of the contact's address
* `address_zip` (string) - The zip code of the contact's address
* `phone_number` (string) - The phone number of the contact
* `business_number` (string) - The business phone number of the contact
* `subscribed` (boolean) - Whether the contact has opted in to receive marketing communications from the site
* `external_user_id` (string) - The external user ID of the contact/customer; this field is only updatable if the contact has been granted an offer or made a purchase
* `created_at` (string) - The date and time the contact was created
* `updated_at` (string) - The date and time the contact was last updated
## Including Relationships
Use the `include` parameter to include related resources in the response:
* `GET /v1/contacts/123?include=offers,tags,customer`
Response will include the related contact offers, tags and customer resources
```json
{
"data": {
"id": "123",
"type": "contacts",
"attributes": {
"name": "John Smith",
"email": "john@example.com",
"address_line_1": null,
"address_line_2": null,
"address_city": null,
"address_country": null,
"address_state": null,
"address_zip": null,
"phone_number": null,
"business_number": null,
"subscribed": false,
"external_user_id": null,
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"links": {
"customer": "https://api.kajabi.com/v1/customers/321"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
},
"offers": {
"links": {
"data": [
{ "id": "456", "type": "offers" }
],
"self": "https://api.kajabi.com/v1/contacts/123/relationships/offers"
}
},
"tags": {
"data": [
{ "id": "789", "type": "contact_tags" }
],
"links": {
"self": "https://api.kajabi.com/v1/contacts/123/relationships/tags"
}
},
"customer": {
"data": {
"id": "321",
"type": "customers"
}
}
}
},
"included": [
{
"id": "456",
"type": "offers",
"attributes": {
"name": "Offer 1",
"description": "Offer 1 description",
"internal_title": "Offer 1",
"price_in_cents": 0,
"payment_type": "free",
"token": "offer_123",
"payment_method": "none",
"price_description": "Free",
"checkout_url": "https://mywebsite.com/offers/456",
"recurring_offer": false,
"subscription": false,
"one_time": true,
"single": false,
"free": true
}
},
{
"id": "789",
"type": "contact_tags",
"attributes": {
"name": "Tag Name"
}
},
{
"id": "321",
"type": "customers",
"attributes": {
"name": "John Smith",
"email": "john@example.com",
"avatar": null,
"external_user_id": "cust_123",
"public_bio": null,
"public_location": null,
"public_website": null,
"socials": null,
"net_revenue": "0.0",
"sign_in_count": 0,
"last_request_at": null,
"bounced_at": null,
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
}
}
]
}
```
## Sparse Fields
Use the `fields[contacts]` parameter to get specific fields for a contact:
* `GET /v1/contacts/123?fields[contacts]=name,email`
Response will include only requested fields for the contact
```json
{
"data": {
"id": "123",
"type": "contacts",
"attributes": {
"name": "John Smith",
"email": "john@example.com"
}
}
}
```
## Using Multiple Parameters Together
You can combine multiple parameters to include related resources and get specific fields for a contact:
* `GET /v1/contacts/123?include=customer&fields[contacts]=email&fields[customers]=net_revenue`
Response will include the related customer resource and only requested fields for the contact and customer
```json
{
"data": {
"id": "123",
"type": "contacts",
"attributes": {
"email": "sam@example.com"
},
"relationships": {}
},
"included": [
{
"id": "321",
"type": "customers",
"attributes": {
"net_revenue": "0.0"
}
}
]
}
```
# Create a contact
Source: https://help.kajabi.com/api-reference/contacts/create-a-contact
/openapi.yaml post /v1/contacts
Create a contact for a site.
## Contact attributes
* New contact does not support `external_user_id` attribute.
* See custom_fields endpoint to discover attributes for using custom fields attributes.
## Create a contact
Request body must include a `site` relationship.
Example request body:
```json
{
"data": {
"type": "contacts",
"attributes": {
"name": "John Doe",
"email": "john.doe@example.com"
},
"relationships": {
"site": {
"data": {
"type": "sites",
"id": "123"
}
}
}
}
}
```
Response will include the newly created contact resource.
```json
{
"data": {
"id": "456",
"type": "contacts",
"attributes": {
"name": "John Doe",
"email": "john.doe@example.com",
"address_line_1": null,
"address_line_2": null,
"address_city": null,
"address_country": null,
"address_state": null,
"address_zip": null,
"phone_number": null,
"business_number": null,
"subscribed": false,
"external_user_id": null,
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}
}
```
# Delete contact
Source: https://help.kajabi.com/api-reference/contacts/delete-contact
/openapi.yaml delete /v1/contacts/{id}
# Grant offer to contact
Source: https://help.kajabi.com/api-reference/contacts/grant-offer-to-contact
/openapi.yaml post /v1/contacts/{contact_id}/relationships/offers
## Grant offer(s) to a contact
Create an offer grant for a contact which results in creating a new customer record for your contact.
In the request body inlcude offer resource identifier(s), `id: OFFER_ID`, `type: "offers"`.
To skip sending a welcome email to the customer include a `meta` object in the request body.
```
{ "data": [{"type": "offers", "id": "123"}], "meta": {"send_customer_welcome_email": false}}
```
The `meta` attribute `send_customer_welcome_email` as `false` will prevent sending the welcome email.
(The default behavior is to send the welcome email.)
## Response
* A successful response body will list the offers related to the contact
* An error response will include a JSON body with error details.
## Behaviors and side effects
* Checks if the contact was already granted the offer
* Checks for existing customerby email
* If no existing customer, generates a new customer record with contact details
* May send a welcome email to the customer
* May send a gift granted email if this is a gift offer
* Triggers automations if configured
# List contacts
Source: https://help.kajabi.com/api-reference/contacts/list-contacts
/openapi.yaml get /v1/contacts
List of contacts, we recommended filtering by site.
## Filtering
Use the `filter[site_id]` parameter to filter contacts by site:
### Get contacts for site with ID 123
* `GET /v1/contacts?filter[site_id]=123`
Response will include only contacts for the specified site
```json
{
"data": [{
"id": "456",
"type": "contacts",
"attributes": {
"name": "John Smith",
"email": "john@example.com",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Search Filter
Use the `filter[search]` parameter along with `filter[site_id]` to search contacts by name or email:
### Search for contacts containing "smith" in site with ID 123
* `GET /v1/contacts?filter[site_id]=123&filter[search]=smith`
Response will include only matching contacts for the specified site
```json
{
"data": [{
"id": "456",
"type": "contacts",
"attributes": {
"name": "John Smith",
"email": "smith.john@example.com",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Search
Use the `filter[search]` parameter along with `filter[site_id]` to search contacts.
### Search for contacts containing "smith" in site with ID 123
* `GET /v1/contacts?filter[site_id]=123&filter[search]=smith`
Response will include matching contacts
```json
{
"data": [{
"id": "456",
"type": "contacts",
"attributes": {
"name": "John Smith",
"email": "smith.john@example.com",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Using Pagination with Site Filter
Use the `filter[site_id]` parameter along with pagination parameters `page[number]` and `page[size]` to get paginated results for a specific site:
### Get page 2 of contacts from site with ID 123, with 10 items per page
* `GET /v1/contacts?filter[site_id]=123&page[number]=2&page[size]=10`
Response will include paginated contacts for the specified site along with pagination metadata
```json
{
"data": [{
"id": "456",
"type": "contacts",
"attributes": {
"name": "John Smith",
"email": "smith.john@example.com",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}],
"links": {
"self": "https://api.kajabi.com/v1/contacts?filter[site_id]=123&page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/contacts?filter[site_id]=123&page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/contacts?filter[site_id]=123&page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/contacts?filter[site_id]=123&page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/contacts?filter[site_id]=123&page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Using Sort with Site Filter
* The default Sorting is by created_at in descending order (newest first)
Sorting by created_at in ascending order (oldest first)
* `GET /v1/contacts?filter[site_id]=123&sort=created_at`
Use the `sort` parameter along with `filter[site_id]` to get sorted results for a specific site:
### Get contacts from site with ID 123, sorted by name in ascending order
* `GET /v1/contacts?filter[site_id]=123&sort=name`
### Get contacts from site with ID 123, sorted by email in descending order
* `GET /v1/contacts?filter[site_id]=123&sort=-email`
Response will include sorted contacts for the specified site
```json
{
"data": [{
"id": "456",
"type": "contacts",
"attributes": {
"name": "Alice Smith",
"email": "alice@example.com",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Using Sparse Fields with Site Filter
Use the `fields[contacts]` parameter along with `filter[site_id]` to get specific fields for contacts in a site:
### Get only name and email fields for contacts from site with ID 123
* `GET /v1/contacts?filter[site_id]=123&fields[contacts]=name,email`
Response will include only requested fields for contacts in the specified site
```json
{
"data": [{
"id": "456",
"type": "contacts",
"attributes": {
"name": "Alice Smith",
"email": "alice@example.com"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Filtering by Site and Offer
Use the `filter[site_id]` parameter along with `filter[has_offer_id]` to get contacts who have been granted a specific offer
### Get contacts from site with ID 123 who have been granted offer with ID 789
* `GET /v1/contacts?filter[site_id]=123&filter[has_offer_id]=789`
Response will include only contacts from the specified site who have been granted the offer
```json
{
"data": [{
"id": "456",
"type": "contacts",
"attributes": {
"name": "Alice Smith",
"email": "alice@example.com",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Filtering by Site and Tag
Use the `filter[site_id]` parameter along with `filter[has_tag_id]` to get contacts who have a specific tag
### Get contacts from site with ID 123 who have tag with ID 456
* `GET /v1/contacts?filter[site_id]=123&filter[has_tag_id]=456`
Response will include only contacts from the specified site who have the tag
```json
{
"data": [{
"id": "789",
"type": "contacts",
"attributes": {
"name": "Bob Jones",
"email": "bob@example.com",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Using Multiple Parameters Together
You can combine multiple parameters to filter, search, paginate and format the response:
### Get paginated contacts from site 123 with tag 456, searching for "smith", using indexed data and sparse fields
* `GET /v1/contacts?filter[site_id]=123&filter[has_tag_id]=456&filter[search]=smith&=true&page[number]=1&page[size]=10&fields[contacts]=name,email`
Response will include paginated contacts matching all filters with only requested fields
```json
{
"data": [{
"id": "789",
"type": "contacts",
"attributes": {
"name": "John Smith",
"email": "smith.john@example.com"
}
}],
"links": {
"self": "https://api.kajabi.com/v1/contacts?filter[site_id]=123&filter[has_tag_id]=456&filter[search]=smith&=true&page[number]=1&page[size]=10&fields[contacts]=name,email",
"first": "https://api.kajabi.com/v1/contacts?filter[site_id]=123&filter[has_tag_id]=456&filter[search]=smith&=true&page[number]=1&page[size]=10&fields[contacts]=name,email",
"prev": null,
"next": null,
"last": "https://api.kajabi.com/v1/contacts?filter[site_id]=123&filter[has_tag_id]=456&filter[search]=smith&=true&page[number]=1&page[size]=10&fields[contacts]=name,email"
},
"meta": {
"total_pages": 1,
"total_count": 1,
"current_page": 1
}
}
```
# List contact's offers
Source: https://help.kajabi.com/api-reference/contacts/list-contacts-offers
/openapi.yaml get /v1/contacts/{contact_id}/relationships/offers
Get the contact's relationship to offers (granted).
Response is a list of resource identifiers
```json
{
"data": [
{ "type": "offers", "id": "123" },
{ "type": "offers", "id": "456" }
]
}
```
The related tag resources are available using the GET `api/v1/offers` endpoint.
The resource identifier includes the offer id and type.
Example URLs: `/api/v1/offers/123`, `/api/v1/offers/456`
# List contact's tags
Source: https://help.kajabi.com/api-reference/contacts/list-contacts-tags
/openapi.yaml get /v1/contacts/{contact_id}/relationships/tags
Get the contact's relationship to tags, response is a list of resource identifiers
Response is a list of resource identifiers
```json
{
"data": [
{ "type": "contact_tags", "id": "123" },
{ "type": "contact_tags", "id": "456" }
]
}
```
The related tag resources are available using the GET `api/v1/contact_tags` endpoint.
The resource identifier includes the contact tag id and type.
Example URLs: `/api/v1/contact_tags/123`, `/api/v1/contact_tags/456`
# Remove tag from contact
Source: https://help.kajabi.com/api-reference/contacts/remove-tag-from-contact
/openapi.yaml delete /v1/contacts/{contact_id}/relationships/tags
Remove tag relationships to contact resource using a list of resource identifiers.
Request body includes a list of resource identifiers, `id: CONTACT_TAG_ID`, `type: "contact_tags"`.
```json
{ "data": [{ "type": "contact_tags", "id": "456" }] }
```
The response body will include the updated list of tag relationships.
Example response body:
```json
{ "data": [{ "type": "contact_tags", "id": "123" }] }
```
# Replace offers for contact
Source: https://help.kajabi.com/api-reference/contacts/replace-offers-for-contact
/openapi.yaml patch /v1/contacts/{contact_id}/relationships/offers
## Replace offer grant(s) for a contact
Replace offer grants (grants and revokes offers to/from contact) using a list of resource identifiers
In the request body inlcude offer resource identifier(s), `id: OFFER_ID`, `type: "offers"`.
```
{ "data": [{"type": "offers", "id": "456"}, {"type": "offers", "id": "789"}] }
```
## Response
* A successful response body will list the offers related to the contact
* An error response will include a JSON body with error details.
# Replace tags for contact
Source: https://help.kajabi.com/api-reference/contacts/replace-tags-for-contact
/openapi.yaml patch /v1/contacts/{contact_id}/relationships/tags
Replace tag relationships to contact resource using a list of resource identifiers.
Request body includes a list of resource identifiers, `id: CONTACT_TAG_ID`, `type: "contact_tags"`.
```json
{ "data": [{ "type": "contact_tags", "id": "123" }, { "type": "contact_tags", "id": "456" }] }
```
The response body will include the updated list of tag relationships.
```json
{ "data": [{ "type": "contact_tags", "id": "123" }, { "type": "contact_tags", "id": "456" }] }
```
# Revoke offer from contact
Source: https://help.kajabi.com/api-reference/contacts/revoke-offer-from-contact
/openapi.yaml delete /v1/contacts/{contact_id}/relationships/offers
## Revoke offer grant(s) for a contact
Revoke offer grant(s) using a list of resource identifiers
In the request body inlcude offer resource identifier(s), `id: OFFER_ID`, `type: "offers"`.
```
{ "data": [{"type": "offers", "id": "123"}] }
```
## Response
* A successful response body will list the offers related to the contact
* An error response will include a JSON body with error details.
## Behaviors and side effects
* Only affects active offers
* Handles both offer purchases and offer grants
* Deactivates all associated product memberships
# Update contact
Source: https://help.kajabi.com/api-reference/contacts/update-contact
/openapi.yaml patch /v1/contacts/{id}
## Contact attributes
* A contact with a related customer resource does support `external_user_id` attribute.
* See custom_fields endpoint to discover attributes for using custom fields attributes.
## Update a contact
Example request body:
```json
{
"data": {
"type": "contacts",
"id": "456",
"attributes": {
"phone_number": "12134567890"
}
}
}
```
Response will include the update contact resource.
```json
{
"data": {
"id": "456",
"type": "contacts",
"attributes": {
"name": "John Doe",
"email": "john.doe@example.com",
"address_line_1": null,
"address_line_2": null,
"address_city": null,
"address_country": null,
"address_state": null,
"address_zip": null,
"phone_number": "12134567890",
"business_number": null,
"subscribed": false,
"external_user_id": null,
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}
}
```
# Course details
Source: https://help.kajabi.com/api-reference/courses/course-details
/openapi.yaml get /v1/courses/{id}
Details of a course that can be offered to a contact or purchased
## Course Attributes
* `created_at` (string) - The date and time the course was created
* `title` (string) - The title of the course
* `description` (string) - The description of the course
* `thumbnail_url` (string) - The URL of the course thumbnail
## Including Relationships
Use the `include` query parameter to load related resources:
### Include modules, lessons and related media, and offers
* `GET /v1/courses/123?include=modules,lessons,lessons.media,offers`
Response will include the requested related resources
(Note: The responses listed within the "included" array will also include the relationships for each resource)
```json
{
"data": {
"id": "123",
"type": "courses",
"attributes": {
"created_at": "2024-08-06T05:30:38.669Z",
"title": "Advanced Marketing",
"description": "Master level marketing course",
"thumbnail_url": "https://example.com/thumbnail.jpg"
},
"relationships": {
"modules": {
"data": [{
"id": "456",
"type": "modules"
}]
},
"lessons": {
"data": [{
"id": "789",
"type": "lessons"
}]
},
"offers": {
"data": [{
"id": "101",
"type": "offers"
}]
}
},
"included": [{
"id": "456",
"type": "modules",
"attributes": {
"title": "Marketing Fundamentals",
"description": "Introduction to marketing concepts",
"position": 1,
"poster_image_url": "https://example.com/poster.jpg",
"publishing_option": "published"
}
},
{
"id": "789",
"type": "lessons",
"attributes": {
"title": "Marketing Basics",
"position": 1,
"status": "published",
"publishing_option": "published"
}
},
{
"id": "202",
"type": "media",
"attributes": {
"duration_in_minutes": 1,
}
},
{
"id": "101",
"type": "offers",
"attributes": {
"price": 100.0,
"currency": "USD",
"status": "active"
}
}]
}
}
```
## Module attributes
Modules are part of Kajabi's course structure: courses contain modules and modules contain lessons
* `title` (string) - A required field that represents the name or heading of the module. This is used to:
* Identify and display the module in the course outline
* Organize related lessons/content
* Provide navigation structure in the course
* The title must be unique within a course.
* `description` (string) - An optional text field that provides additional information about the module's content. This can be used to:
* Give students an overview of what they'll learn
* Explain the module's objectives
* Provide context for the contained lessons
* Help students understand the module's purpose in the course structure
* `position` (integer) - A numeric field that determines the order of modules within a course. This:
* Used for sorting
* Allows modules to be reordered
* Maintains the course's logical progression
* Is used for navigation between modules
* Starts at position 1 for the first module
* `poster_image_url` (string) - A URL to an image that represents the module visually. This:
* Can be uploaded through the Kajabi admin interface
* Is used as a thumbnail/preview image
* Helps with visual organization of the course
* `publishing_option` (string) - Controls the visibility and availability of the module. Options include:
* `published` - Module is visible and available to students
* `draft` - Module is hidden and not yet available
* Can be used with drip settings for timed release
* Affects the visibility of contained lessons
* Syncs with the course's overall publishing status
## Lesson attributes
Lessons can include various types of content: text content (body), videos, audio, quizzes, assessments, and downloads.
* `title` (string) - A required field that represents the name or heading of the lesson. This:
* Must be present
* Has a maximum length of 200 characters
* Is used for display and navigation
* Can be searched (using pg_search)
* Is used in course outlines and navigation
* `position` (integer) - A numeric field that determines the order of lessons within a module (category). This:
* Usedfor sorting (ranks :sort, column: :position)
* Is scoped within each module
* Allows lessons to be reordered
* Maintains the logical flow of content
* Is used for navigation between lessons
* `status` (string) - An field that tracks the lesson's processing state:
* `ready` - Default state, lesson is ready for use
* `duplicating` - Lesson is being copied
* `failed` - An error occurred during processing
* This is particularly relevant for lessons with media content or during duplication.
* `publishing_option` (string) - Controls the visibility and availability of the lesson. Options include:
* `draft` - Lesson is hidden and not yet available to students
* `published` - Lesson is visible and available (sets publish_at to current time)
* `drip` - Lesson becomes available after a specified number of days
* `locked` - Lesson is locked until certain conditions are met (e.g., completing previous lessons)
## Media attributes
* `duration_in_minutes` (float) - The length of a media file (typically video or audio) in minutes.
## Sparse Fields
Use the `fields` parameter to request only specific attributes:
### Only return title and thumbnail_url attributes
* `GET /v1/courses/123?fields[courses]=title,thumbnail_url`
Response will only include requested fields
```json
{
"data": {
"id": "123",
"type": "courses",
"attributes": {
"title": "Marketing Fundamentals",
"thumbnail_url": "https://example.com/thumbnail.jpg"
}
}
}
```
## Using Multiple Parameters Together
You can combine sparse fields and include in a single request:
### Get course details with modules and lessons, showing only specific fields
* `GET /v1/courses/123?include=modules,lessons,lessons.media&fields[courses]=title,thumbnail_url&fields[modules]=title&fields[lessons]=title&fields[media]=duration_in_minutes`
Response will include related resources with requested fields
```json
{
"data": {
"id": "123",
"type": "courses",
"attributes": {
"title": "Marketing Fundamentals",
"thumbnail_url": "https://example.com/thumbnail.jpg"
},
"relationships": {}
},
"included": [{
"id": "456",
"type": "modules",
"attributes": {
"title": "Marketing Basics"
}
},
{
"id": "789",
"type": "lessons",
"attributes": {
"title": "Marketing Strategies"
}
},
{
"id": "101",
"type": "media",
"attributes": {
"duration_in_minutes": 30
}
}]
}
```
# List courses
Source: https://help.kajabi.com/api-reference/courses/list-courses
/openapi.yaml get /v1/courses
List of courses that can be offered to a contact or purchased
## Pagination
Use the `page[number]` and `page[size]` query parameters to paginate results:
### Get first page of 10 items
* `GET /v1/courses?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/courses?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/courses?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/courses?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/courses?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/courses?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/courses?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Sorting
Use the `sort` parameter to sort the results:
### Sort by title in ascending order
* `GET /v1/courses?sort=title`
### Sort by title in descending order
* `GET /v1/courses?sort=-title`
Response will include courses sorted by the specified field
```json
{
"data": [
{
"id": "123",
"type": "courses",
"attributes": {
"title": "Advanced Marketing",
"description": "Master level marketing course",
"status": "active"
}
},
{
"id": "456",
"type": "courses",
"attributes": {
"title": "Marketing Basics",
"description": "Introduction to marketing",
"status": "active"
}
}
]
}
```
## Sparse Fields
Use the `fields` parameter to request only specific attributes:
### Only return title and thumbnail_url attributes
* `GET /v1/courses?fields[courses]=title,thumbnail_url`
Response will only include requested fields
```json
{
"data": [{
"id": "123",
"type": "courses",
"attributes": {
"title": "Marketing Fundamentals",
"thumbnail_url": "https://example.com/thumbnail.jpg"
}
}]
}
```
## Filter by Site ID
Use the `filter[site_id]` parameter to get courses for a specific site:
### Get courses for site with ID 123
* `GET /v1/courses?filter[site_id]=123`
Response will only include courses for that site
```json
{
"data": [{
"id": "456",
"type": "courses",
"attributes": {
"title": "Marketing Fundamentals",
"description": "Introduction to marketing concepts",
"status": "active"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Filter by Title Contains
Use the `filter[title_cont]` parameter to find courses where the title contains specific text:
### Get courses with titles containing "marketing"
* `GET /v1/courses?filter[title_cont]=marketing`
Response will include courses with matching titles
```json
{
"data": [{
"id": "456",
"type": "courses",
"attributes": {
"title": "Marketing Fundamentals",
"description": "Introduction to marketing concepts",
"status": "active"
}
}]
}
```
## Filter by Description Contains
Use the `filter[description_cont]` parameter to find courses where the description contains specific text:
### Get courses with descriptions containing "marketing"
* `GET /v1/courses?filter[description_cont]=marketing`
Response will include courses with matching descriptions
```json
{
"data": [{
"id": "456",
"type": "courses",
"attributes": {
"title": "Marketing Fundamentals",
"description": "Introduction to marketing concepts and strategies",
"status": "active"
}
}]
}
```
## Using Multiple Parameters Together
You can combine pagination, sparse fields, filtering and sorting in a single request:
### Get first page of 10 courses for site 123, sorted by title, showing only specific fields
* `GET /v1/courses?page[number]=1&page[size]=10&filter[site_id]=123&sort=title&fields[courses]=title,thumbnail_url`
Response will include pagination, sorted filtered results with requested fields
```json
{
"data": [{
"id": "456",
"type": "courses",
"attributes": {
"title": "Advanced Marketing",
"thumbnail_url": "https://example.com/thumbnail1.jpg"
}
},
{
"id": "789",
"type": "courses",
"attributes": {
"title": "Marketing Basics",
"thumbnail_url": "https://example.com/thumbnail2.jpg"
}
}],
"links": {
"self": "https://api.kajabi.com/v1/courses?page[number]=1&page[size]=10&filter[site_id]=123&sort=title&fields[courses]=title,thumbnail_url",
"first": "https://api.kajabi.com/v1/courses?page[number]=1&page[size]=10&filter[site_id]=123&sort=title&fields[courses]=title,thumbnail_url",
"next": "https://api.kajabi.com/v1/courses?page[number]=2&page[size]=10&filter[site_id]=123&sort=title&fields[courses]=title,thumbnail_url",
"last": "https://api.kajabi.com/v1/courses?page[number]=3&page[size]=10&filter[site_id]=123&sort=title&fields[courses]=title,thumbnail_url"
},
"meta": {
"total_pages": 3,
"total_count": 25,
"current_page": 1
}
}
```
# Custom field details
Source: https://help.kajabi.com/api-reference/custom-fields/custom-field-details
/openapi.yaml get /v1/custom_fields/{id}
## Custom Field attributes
* `handle` (string) - The key for a `contact` resource, e.g. `custom_1`, `custom_2`, `custom_3`
* `title` (string) - The title of the custom field
* `type` (string) - The type of the custom field
* `required` (boolean) - Whether the custom field is required
* `archived` (boolean) - Whether the custom field is archived
## Sparse Fields
Use the `fields[custom_fields]` parameter to include only specific attributes:
### Include only handle and title fields
* `GET /v1/custom_fields/123?fields[custom_fields]=handle,title`
Response will include only the specified fields
```json
{
"data": {
"id": "123",
"type": "custom_fields",
"attributes": {
"handle": "custom_1",
"title": "Favorite Song"
}
}
}
```
# List custom fields
Source: https://help.kajabi.com/api-reference/custom-fields/list-custom-fields
/openapi.yaml get /v1/custom_fields
## Custom Field attributes
The 'handle' attribute may be used as a key for a contact resource, e.g. custom_1, custom_2, custom_3
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/custom_fields?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/custom_fields?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://app.kajabi.com/api/v1/custom_fields?page[number]=2&page[size]=10",
"first": "https://app.kajabi.com/api/v1/custom_fields?page[number]=1&page[size]=10",
"prev": "https://app.kajabi.com/api/v1/custom_fields?page[number]=1&page[size]=10",
"next": "https://app.kajabi.com/api/v1/custom_fields?page[number]=3&page[size]=10",
"last": "https://app.kajabi.com/api/v1/custom_fields?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Filter by Site ID
Use the `filter[site_id]` parameter to get custom fields for a specific site:
### Get custom fields for site with ID 123
* `GET /v1/custom_fields?filter[site_id]=123`
Response will only include custom fields for that site
```json
{
"data": [
{
"id": "123",
"type": "custom_fields",
"attributes": {
"handle": "custom_1",
"title": "Favorite Song",
"type": "TextField",
"required": false
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}
]
}
```
## Sorting
Use the `sort` parameter to sort the results:
### Sort by title in ascending order
* `GET /v1/custom_fields?sort=title`
### Sort by title in descending order
* `GET /v1/custom_fields?sort=-title`
## Filter by Title Contains
Use the `filter[title_cont]` parameter to find custom fields where the title contains specific text:
### Get custom fields with titles containing "favorite"
* `GET /v1/custom_fields?filter[title_cont]=favorite`
Response will include custom fields with matching titles
```json
{
"data": [{
"id": "123",
"type": "custom_fields",
"attributes": {
"handle": "custom_1",
"title": "Favorite Song",
"type": "TextField",
"required": false
}
},
{
"id": "456",
"type": "custom_fields",
"attributes": {
"handle": "custom_2",
"title": "Favorite Movie",
"type": "TextField",
"required": false
}
}]
}
```
## Filter by Required Field
Use the `filter[required_eq]` parameter to find custom fields based on their required status:
### Get custom fields that are required
* `GET /v1/custom_fields?filter[required_eq]=true`
Response will include custom fields that are required
```json
{
"data": [{
"id": "123",
"type": "custom_fields",
"attributes": {
"handle": "custom_1",
"title": "Phone Number",
"type": "TextField",
"required": true
}
}]
}
```
## Using Multiple Parameters Together
You can combine pagination, sorting, sparse fields and filtering in a single request:
### Get page 2 of custom fields for site 123, sorted by title descending, including only handle and title fields
* `GET /v1/custom_fields?page[number]=2&page[size]=10&sort=-title&filter[site_id]=123&fields[custom_fields]=handle,title`
Response will include paginated and filtered custom fields with sparse fields
```json
{
"data": [
{
"id": "456",
"type": "custom_fields",
"attributes": {
"handle": "custom_2",
"title": "Favorite Movie"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}
],
"links": {
"self": "https://app.kajabi.com/api/v1/custom_fields?page[number]=2&page[size]=10&sort=-title&filter[site_id]=123&fields[custom_fields]=handle,title",
"first": "https://app.kajabi.com/api/v1/custom_fields?page[number]=1&page[size]=10&sort=-title&filter[site_id]=123&fields[custom_fields]=handle,title",
"prev": "https://app.kajabi.com/api/v1/custom_fields?page[number]=1&page[size]=10&sort=-title&filter[site_id]=123&fields[custom_fields]=handle,title",
"next": null,
"last": "https://app.kajabi.com/api/v1/custom_fields?page[number]=2&page[size]=10&sort=-title&filter[site_id]=123&fields[custom_fields]=handle,title"
},
"meta": {
"total_pages": 2,
"total_count": 15,
"current_page": 2
}
}
```
# Customer details
Source: https://help.kajabi.com/api-reference/customers/customer-details
/openapi.yaml get /v1/customers/{id}
Show customer details
* The `name` and `email` attributes are kept in sync with the related `contact` resource
* The `external_user_id` attribute may be used as a customer reference in an external system
## Customer Attributes
* `name` (string) - The customer's full name. This is a required field and can be either user-provided or auto-generated from their email address if left blank.
* `email` (string) - The customer's email address. This is a required field and must be unique within a site. It's automatically downcased and stripped of whitespace. Used for authentication and communication.
* `avatar` (string) - A URL to the customer's profile image. Can be either a custom uploaded avatar or falls back to Gravatar. If not set, defaults to a blank image.
* `external_user_id` (string) - An optional external identifier that can be used to link the customer to external systems. Must be unique within a site.
* `public_bio` (string) - A text field containing the customer's public biography or description. This is optional and can be displayed in community/social features.
* `public_location` (string) - A text field for the customer's public location information. Optional field used for community/social features.
* `public_website` (string) - The customer's website URL. This is validated to ensure it's a proper URL format and is transformed to ensure proper formatting.
* `socials` (object) - A collection of the customer's social media links and profiles.
* `net_revenue` (string) - The total revenue generated by this customer through their purchases. This is calculated from their successful payment transactions.
* `sign_in_count` (integer) - A counter tracking how many times the customer has signed into their account.
* `last_request_at` (string) - Timestamp of the customer's most recent activity or request. Used to track user engagement and activity.
* `bounced_at` (string) - Timestamp indicating when the customer's email started bouncing. This is reset if the email address is changed.
* `created_at` (string) - Timestamp when the customer record was created.
* `updated_at` (string) - Timestamp when the customer record was last updated.
## Include Related Resources
Use the `include` parameter to include related resources:
### Include offers and products
* `GET /v1/customers/123?include=contact,offers,products`
Response will include related resources
```json
{
"data": {
"id": "123",
"type": "customers",
"attributes": {
"name": "Alice Smith",
"email": "alice@example.com",
"avatar": null,
"external_user_id": "cust_123",
"public_bio": null,
"public_location": null,
"public_website": null,
"socials": null,
"net_revenue": "0.0",
"sign_in_count": 0,
"last_request_at": null,
"bounced_at": null,
"created_at": "2021-01-01T00:00:00Z",
"updated_at": "2021-01-01T00:00:00Z"
},
"links": {
"contact": "https://app.kajabi.com/api/v1/contacts/321"
},
"relationships": {
"contact": {
"data": {
"id": "321",
"type": "contacts"
}
},
"offers": {
"data": [{ "id": "456", "type": "offers" }],
"links": {
"self": "https://app.kajabi.com/api/v1/customers/123/relationships/offers"
}
},
"products": {
"data": [{ "id": "789", "type": "products" }]
}
}
},
"included": [
{
"id": "456",
"type": "offers",
"attributes": {
"name": "Offer 1",
"description": "Offer 1 description",
"internal_title": "Offer 1",
"price_in_cents": 0,
"payment_type": "free",
"token": "offer_123",
"payment_method": "none",
"price_description": "Free",
"checkout_url": "https://mywebsite.com/offers/456",
"recurring_offer": false,
"subscription": false,
"one_time": true,
"single": false,
"free": true
}
},
{
"id": "789",
"type": "products",
"attributes": {
"created_at": "2024-11-12T23:43:09.551Z",
"title": "Course 1",
"description": "Course 1 description",
"status": "ready",
"members_aggregate_count": 0,
"product_type_name": "Course",
"product_type_id": 789,
"publish_status": "published",
"thumbnail_url": null
}
},
{
"id": "321",
"type": "contacts",
"attributes": {
"name": "Alice Smith",
"email": "alice@example.com",
"address_line_1": null,
"address_line_2": null,
"address_city": null,
"address_country": null,
"address_state": null,
"address_zip": null,
"phone_number": null,
"business_number": null,
"subscribed": false,
"external_user_id": null,
"created_at": "2024-11-20T18:53:19.389Z",
"updated_at": "2024-11-20T18:53:19.389Z"
}
}
]
}
```
## Sparse Fields
Use the `fields[customers]` parameter to request only specific attributes:
### Only return name and email attributes
* `GET /v1/customers/123?fields[customers]=name,email`
Response will only include requested fields
```json
{
"data": {
"id": "123",
"type": "customers",
"attributes": {
"name": "Alice Smith",
"email": "alice@example.com"
}
}
}
```
## Using Multiple Parameters Together
You can combine filtering, sparse fields, pagination and search in a single request:
* `GET /v1/customers/123?include=products&fields[customers]=name&fields[product]=title`
Response will include related resources with sparse fields
```json
{
"data": {
"id": "123",
"type": "customers",
"attributes": {
"name": "Alice Smith"
},
"relationships": {}
},
"included": [
{
"id": "789",
"type": "products",
"attributes": {
"title": "Course 1"
}
}
]
}
```
# Grant offer to customer
Source: https://help.kajabi.com/api-reference/customers/grant-offer-to-customer
/openapi.yaml post /v1/customers/{customer_id}/relationships/offers
## Grant offer(s) to a customer
Create an offer grant for a customer.
In the request body inlcude offer resource identifier(s), `id: OFFER_ID`, `type: "offers"`.
```
{ "data": [{"type": "offers", "id": "123"}] }
```
## Response
* A successful response body will list the offers related to the customer
* An error response will include a JSON body with error details.
## Behaviors and side effects
* Checks if the customerwas already granted the offer
* May send a gift granted email if this is a gift offer
* Triggers automations if configured
# List customers
Source: https://help.kajabi.com/api-reference/customers/list-customers
/openapi.yaml get /v1/customers
List of customers
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/customers?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/customers?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://app.kajabi.com/api/v1/customers?page[number]=2&page[size]=10",
"first": "https://app.kajabi.com/api/v1/customers?page[number]=1&page[size]=10",
"prev": "https://app.kajabi.com/api/v1/customers?page[number]=1&page[size]=10",
"next": "https://app.kajabi.com/api/v1/customers?page[number]=3&page[size]=10",
"last": "https://app.kajabi.com/api/v1/customers?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Sorting
* The default Sorting is by created_at in descending order (newest first)
Sorting by created_at in ascending order (oldest first)
* `GET /v1/customers?filter[site_id]=123&sort=created_at`
Use the `sort` parameter to sort the results:
### Sort by name in ascending order
* `GET /v1/customers?filter[site_id]=123&sort=name`
### Sort by email in descending order
* `GET /v1/customers?filter[site_id]=123&sort=-email`
### Sort by net_revenue in ascending order
* `GET /v1/customers?filter[site_id]=123&sort=net_revenue`
### Sort by last_request_at in descending order
* `GET /v1/customers?filter[site_id]=123&sort=-last_request_at`
Response will include customers sorted by the specified field
```json
{
"data": [{
"id": "123",
"type": "customers",
"attributes": {
"name": "Alice Smith",
"email": "alice@example.com",
"external_user_id": "cust_123"
}
}]
}
```
## Sparse Fields
Use the `fields[customers]` parameter to request only specific attributes:
### Only return name and email attributes
* `GET /v1/customers?fields[customers]=name,email`
Response will only include requested fields
```json
{
"data": [{
"id": "123",
"type": "customers",
"attributes": {
"name": "Alice Smith",
"email": "alice@example.com"
}
}]
}
```
## Filtering
Use the `filter[site_id]` parameter to filter customers by site:
### Get customers for site with ID 123
* `GET /v1/customers?filter[site_id]=123`
Response will include only customers from the specified site
```json
{
"data": [{
"id": "456",
"type": "customers",
"attributes": {
"name": "Alice Smith",
"email": "alice@example.com",
"external_user_id": "cust_123"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Using Indexed Data Search
```json
{
"data": [{
"id": "456",
"type": "customers",
"attributes": {
"name": "John Smith",
"email": "smith.john@example.com"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Using Multiple Filters
You can combine multiple filter parameters to refine your search:
### Get customers from site 123 matching search term
* `GET /v1/customers?filter[site_id]=123&filter[search]=smith`
Response will include only customers from the specified site matching the search term
```json
{
"data": [{
"id": "456",
"type": "customers",
"attributes": {
"name": "Alice Smith",
"email": "alice@example.com",
"external_user_id": "cust_123"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Filtering by Site and Offer
You can filter customers by both site and offer ownership:
### Get customers from site 123 who have been granted offer 789
* `GET /v1/customers?filter[site_id]=123&filter[has_offer_id]=789`
Response will include only customers from the specified site who have been granted the offer
```json
{
"data": [{
"id": "456",
"type": "customers",
"attributes": {
"name": "Alice Smith",
"email": "alice@example.com",
"external_user_id": "cust_123"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
},
"offers": {
"links": {
"self": "https://app.kajabi.com/api/v1/customers/456/relationships/offers",
"related": "https://app.kajabi.com/api/v1/customers/456/offers"
}
}
}
}]
}
```
## Filtering by Site and Product
You can filter customers by both site and product ownership:
### Get customers from site 123 who have purchased product 789
* `GET /v1/customers?filter[site_id]=123&filter[has_product_id]=789`
Response will include only customers from the specified site who have purchased the product
```json
{
"data": [{
"id": "456",
"type": "customers",
"attributes": {
"name": "Alice Smith",
"email": "alice@example.com",
"external_user_id": "cust_123"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
},
"offers": {
"links": {
"self": "https://app.kajabi.com/api/v1/customers/456/relationships/offers",
"related": "https://app.kajabi.com/api/v1/customers/456/offers"
}
}
}
}]
}
```
## Using Multiple Parameters Together
You can combine filtering, sparse fields, pagination and search in a single request:
### Get page 2 of customers from site 123, including only name and email fields, searching for "smith"
* `GET /v1/customers?filter[site_id]=123&fields[customers]=name,email&page[number]=2&page[size]=10&filter[search]=smith`
Response will include paginated, filtered customers with sparse fields
```json
{
"data": [{
"id": "456",
"type": "customers",
"attributes": {
"name": "John Smith",
"email": "john.smith@example.com"
}
}],
"links": {
"self": "https://app.kajabi.com/api/v1/customers?filter[site_id]=123&fields[customers]=name,email&page[number]=2&page[size]=10&filter[search]=smith",
"first": "https://app.kajabi.com/api/v1/customers?filter[site_id]=123&fields[customers]=name,email&page[number]=1&page[size]=10&filter[search]=smith",
"prev": "https://app.kajabi.com/api/v1/customers?filter[site_id]=123&fields[customers]=name,email&page[number]=1&page[size]=10&filter[search]=smith",
"next": null,
"last": "https://app.kajabi.com/api/v1/customers?filter[site_id]=123&fields[customers]=name,email&page[number]=2&page[size]=10&filter[search]=smith"
},
"meta": {
"total_pages": 2,
"total_count": 15,
"current_page": 2
}
}
```
# List customer's offers
Source: https://help.kajabi.com/api-reference/customers/list-customers-offers
/openapi.yaml get /v1/customers/{customer_id}/relationships/offers
Get the customer's relationship to offers (granted).
Response is a list of resource identifiers
```json
{
"data": [
{ "type": "offers", "id": "123" },
{ "type": "offers", "id": "456" }
]
}
```
The related tag resources are available using the GET `api/v1/offers` endpoint.
The resource identifier includes the offer id and type.
Example URLs: `/api/v1/offers/123`, `/api/v1/offers/456`
# Replace offers for customer
Source: https://help.kajabi.com/api-reference/customers/replace-offers-for-customer
/openapi.yaml patch /v1/customers/{customer_id}/relationships/offers
## Replace offer grant(s) for a customer
Replace offer grants (grants and revokes offers to/from customer) using a list of resource identifiers
In the request body inlcude offer resource identifier(s), `id: OFFER_ID`, `type: "offers"`.
```
{ "data": [{"type": "offers", "id": "456"}, {"type": "offers", "id": "789"}] }
```
## Response
* A successful response body will list the offers related to the customer
* An error response will include a JSON body with error details.
# Revoke offer from customer
Source: https://help.kajabi.com/api-reference/customers/revoke-offer-from-customer
/openapi.yaml delete /v1/customers/{customer_id}/relationships/offers
## Revoke offer grant(s) for a customer
Revoke offer grant(s) using a list of resource identifiers
In the request body inlcude offer resource identifier(s), `id: OFFER_ID`, `type: "offers"`.
```
{ "data": [{"type": "offers", "id": "123"}] }
```
## Response
* A successful response body will list the offers related to the customer
* An error response will include a JSON body with error details.
## Behaviors and side effects
* Only affects active offers
* Handles both offer purchases and offer grants
* Deactivates all associated product memberships
# Form details
Source: https://help.kajabi.com/api-reference/forms/form-details
/openapi.yaml get /v1/forms/{id}
Shows details of a form
Forms belong to a site and can be associated with:
* Landing pages
* Offers
* Email sequences
* Events
* Newsletters
## Form Attributes
* `title` (string) - A required field that represents the name or heading of the form. This is used to identify and display the form in the user interface. Forms must have a unique title within a site and can be searched and sorted by this attribute.
* `default` (boolean) - A boolean flag indicating whether this is the default form for the site. Each site can have one default form, which is typically used when no specific form is specified. The default form can be accessed using the special ID "default" in API calls. When true, this form is considered the site's primary contact form.
* `webhook_url` (string) - An optional URL where form submission data will be sent via webhook. This allows integration with external systems. The URL:
* Must be a valid URL format
* Cannot be a redirecting URL
* Is automatically transformed and validated
* Can be used to send form submission data to external services
* `created_at` (string) - Timestamp indicating when the form was created. This is automatically set when the form is first created.
* `updated_at` (string) - Timestamp indicating when the form was last modified. This is automatically updated whenever the form is changed.
## Include Related Resources
Use the `include` parameter to load related resources:
### Include fields, offer, contact_tags
* `GET /v1/forms/123?include=fields,offer,contact_tags`
Response will include the requested related resources
```json
{
"data": {
"id": "123",
"type": "forms",
"attributes": {
"title": "Contact Form",
"default": false,
"webhook_url": null,
"created_at": "2025-02-27T01:03:09.179Z",
"updated_at": "2025-02-27T01:03:25.365Z"
},
"relationships": {
"fields": {
"data": [
{ "id": "456", "type": "fields" },
{ "id": "789", "type": "fields" }
]
},
"offer": {
"data": { "id": "123", "type": "offers" }
},
"contact_tags": {
"data": [
{ "id": "456", "type": "contact_tags" },
{ "id": "789", "type": "contact_tags" }
]
}
}
},
"included": [
{
"id": "456",
"type": "fields", "attributes": { "name": "Name" }
},
{
"id": "789",
"type": "fields", "attributes": { "name": "Email" }
},
{
"id": "123",
"type": "offers", "attributes": { "name": "Offer A" }
},
{
"id": "456",
"type": "contact_tags", "attributes": { "name": "Tag A" }
},
{
"id": "789",
"type": "contact_tags", "attributes": { "name": "Tag B" }
}
]
}
```
### Field Attributes
Fields are used in:
* Contact forms
* Offer forms
* Custom field sets
* Form submissions
The system maintains default fields like `name`, `email`, etc. that cannot be removed
* `title` (string) - The display name or label of the field. This is a required attribute that represents how the field will be shown to users in forms and interfaces. Aside from default fields, custom fields can have user-defined titles.
* `type` (string) - The type of field, which must be one of these predefined types:
* `TextField` - Standard text input
* `PhoneField` - Phone number input
* `EmailField` - Email address input
* `TextAreaField` - Multi-line text input
* `CheckboxField` - Boolean checkbox
* `SelectBoxField` - Dropdown select
* `RadioButtonsField` - Radio button group
* `CountryField` - Country selector
* `MobilePhoneField` - Mobile phone input
* `required` (boolean) - A boolean indicating whether the field must be filled out. For default fields, this is set in the configuration, while custom fields can be marked as required or optional.
* `handle` (string) - A unique identifier for the field within a site.
* A custom handle in the format custom_N where N is a number from 1 to 150
* The handle is used to reference the field in code and templates.
* `select_options` (string) - For fields that have choices (`SelectBoxField`, `RadioButtonsField`), this contains the available options. The options are stored as newline-separated values and must be unique within the field.
* `editable` (boolean) - A boolean indicating whether the field can be modified. Default fields typically have this set to false, while custom fields can be editable.
* `created_at` (string) - Timestamp when the field was created.
* `updated_at` (string) - Timestamp when the field was last updated.
## Sparse Fields
Use the `fields[forms]` parameter to request only specific attributes:
### Only return title and webhook_url attributes
* `GET /v1/forms/123?fields[forms]=title,webhook_url`
Response will only include requested fields
```json
{
"data": [{
"id": "123",
"type": "forms",
"attributes": {
"title": "Contact Form A",
"webhook_url": "https://example.com/webhook"
}
}]
}
```
## Using Multiple Parameters Together
You can combine include and sparse fields in a single request:
### Include fields (only name attribute) and only return title and webhook_url attributes
* `GET /v1/forms/123?include=fields&fields[forms]=title,webhook_url&&fields[fields]=title`
Response will include related fields with sparse fields
```json
{
"data": {
"id": "123",
"type": "forms",
"attributes": {
"title": "Contact Form A",
"webhook_url": "https://example.com/webhook"
},
"relationships": {}
},
"included": [
{
"id": "456",
"type": "fields",
"attributes": {
"title": "Name"
}
},
{
"id": "789",
"type": "fields",
"attributes": {
"title": "Email"
}
}
]
}
```
# Form submission details
Source: https://help.kajabi.com/api-reference/forms/form-submission-details
/openapi.yaml get /v1/form_submissions/{id}
Shows details of a form submission
## Form Submission Attributes
* `name` (string) - The name of the person who submitted the form
* `email` (string) - The email address of the person who submitted the form
* `address_line_1` (string) - First line of address if provided
* `address_line_2` (string) - Second line of address if provided
* `address_city` (string) - City if provided
* `address_country` (string) - Country if provided
* `address_state` (string) - State if provided
* `address_zip` (string) - ZIP/postal code if provided
* `phone_number` (string) - Phone number if provided
* `business_number` (string) - Business number if provided
* `mobile_phone_number` (string) - Mobile phone number if provided
## Custom Fields
Form submissions may also include custom field values that were collected through the form.
## Relationships
Form submissions belong to:
* A site
* A form
## Include Related Resources
Use the `include` parameter to load related resources:
### Include site and form
* `GET /v1/form_submissions/123?include=site,form`
# List form submissions
Source: https://help.kajabi.com/api-reference/forms/list-form-submissions
/openapi.yaml get /v1/form_submissions
Form submissions for authorized sites
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/form_submissions?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/form_submissions?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/form_submissions?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/form_submissions?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/form_submissions?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/form_submissions?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/form_submissions?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Filtering
Use filter parameters to narrow down results:
### Filter by site ID
* `GET /v1/form_submissions?filter[site_id]=123`
### Filter by form ID
* `GET /v1/form_submissions?filter[form_id]=456`
## Sorting
Use the `sort` parameter to sort results:
### Sort by creation date (oldest first)
* `GET /v1/form_submissions?sort=created_at`
### Sort by name (alphabetical)
* `GET /v1/form_submissions?sort=name`
# List forms
Source: https://help.kajabi.com/api-reference/forms/list-forms
/openapi.yaml get /v1/forms
Contact forms for a site
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/forms?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/forms?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/forms?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/forms?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/forms?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/forms?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/forms?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Sorting
Use the `sort` parameter to sort the results:
### Sort by title in ascending order
* `GET /v1/forms?sort=title`
### Sort by title in descending order
* `GET /v1/forms?sort=-title`
Response will include forms sorted by the specified field
```json
{
"data": [
{
"id": "123",
"type": "forms",
"attributes": {
"title": "Contact Form A",
"description": "General contact form"
}
},
{
"id": "456",
"type": "forms",
"attributes": {
"title": "Contact Form B",
"description": "Newsletter signup form"
}
}
]
}
```
## Sparse Fields
Use the `fields[forms]` parameter to request only specific attributes:
### Only return title and description attributes
* `GET /v1/forms?fields[forms]=title,description`
Response will only include requested fields
```json
{
"data": [{
"id": "123",
"type": "forms",
"attributes": {
"title": "Contact Form A",
"description": "General contact form"
}
}]
}
```
## Filter by Site ID
Use the `filter[site_id]` parameter to get forms for a specific site:
### Get forms for site with ID 123
* `GET /v1/forms?filter[site_id]=123`
Response will only include forms for that site
```json
{
"data": [{
"id": "456",
"type": "forms",
"attributes": {
"title": "Contact Form A",
"description": "General contact form"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Filter by Title Contains
Use the `filter[title_cont]` parameter to find forms where the title contains specific text:
### Get forms with titles containing "course"
* `GET /v1/forms?filter[title_cont]=course`
Response will include forms with matching titles
```json
{
"data": [{
"id": "456",
"type": "forms",
"attributes": {
"title": "Course Registration Form",
"description": "Sign up form for online courses"
}
}]
}
```
## Using Multiple Parameters Together
You can combine pagination, sorting, sparse fields and filtering in a single request:
### Get page 2 of forms for site 123, sorted by title descending, including only title and description fields
* `GET /v1/forms?page[number]=2&page[size]=10&sort=-title&filter[site_id]=123&fields[forms]=title,description`
Response will include paginated and filtered forms with sparse fields
```json
{
"data": [
{
"id": "456",
"type": "forms",
"attributes": {
"title": "Newsletter Form",
"description": "Newsletter signup form"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}
],
"links": {
"self": "https://api.kajabi.com/v1/forms?page[number]=2&page[size]=10&sort=-title&filter[site_id]=123&fields[forms]=title,description",
"first": "https://api.kajabi.com/v1/forms?page[number]=1&page[size]=10&sort=-title&filter[site_id]=123&fields[forms]=title,description",
"prev": "https://api.kajabi.com/v1/forms?page[number]=1&page[size]=10&sort=-title&filter[site_id]=123&fields[forms]=title,description",
"next": null,
"last": "https://api.kajabi.com/v1/forms?page[number]=2&page[size]=10&sort=-title&filter[site_id]=123&fields[forms]=title,description"
},
"meta": {
"total_pages": 2,
"total_count": 15,
"current_page": 2
}
}
```
# Submit form
Source: https://help.kajabi.com/api-reference/forms/submit-form
/openapi.yaml post /v1/forms/{id}/submit
## Submit a form
* The `name` and `email` attributes are required.
* The `email` attribute must be a valid and deliverable email address.
Example request body:
```json
{
"data": {
"type": "form_submissions",
"attributes": {
"name": "John Doe",
"email": "john.doe@example.com"
}
}
}
```
Response will include the newly created form submission resource.
```json
{
"data": {
"id": "313",
"type": "form_submissions",
"attributes": {
"name": "John Doe",
"email": "john.doe@example.com",
"address_line_1": null,
"address_line_2": null,
"address_city": null,
"address_country": null,
"address_state": null,
"address_zip": null,
"phone_number": null,
"business_number": null,
"mobile_phone_number": null
},
"relationships": {
"site": {
"data": {
"id": "2",
"type": "sites"
}
},
"form": {
"data": {
"id": "15",
"type": "forms"
}
}
}
}
}
```
## Behaviors and side effects
* Checks for disposable emails
* Validates email deliverability
* Sends double opt-in email if needed
* Subscribes contact (with opt-in handling)
* Subscribes to SMS if applicable
* Adds tags to contact
* Grants offers if configured
* Subscribes to email sequences
* Delivers webhooks
* Triggers automations
# Create hook
Source: https://help.kajabi.com/api-reference/webhooks/create-hook
/openapi.yaml post /v1/hooks
Creates a new webhook subscription
## Request Body
The request must include:
* `data` - parent object which includes the children/nested attributes:
* `target_url` - The URL where webhook events will be sent
* `event` - The type of event to subscribe to (see available events below), for example "tag_added"
* `resource_id` (optional) - Specific resource ID to filter events for, for example the id of the Contact Tag. When the property is omitted, the webhook will be triggered for all events of the specified type, as a wildcard webhook.
## Available Event Types
| Event | Description | Required API Scopes |
|-------|-------------|-------------------|
| `purchase` | Customer makes a purchase | `view:purchases` |
| `payment_succeeded` | Payment transaction completes successfully | `view:transactions` |
| `order_created` | New order is created | `view:transactions`, `view:orders` |
| `form_submission` | Someone submits a form | `view:form_submissions` |
| `tag_added` | Tag is added to a contact | `view:contacts` |
| `tag_removed` | Tag is removed from a contact | `view:contacts` |
**Note**: You can only create webhooks for events you have permission to access based on your API key scopes. For example to use tags you need the `view:contacts` scope, which is included in the account owner api key scope.
## Sample Payloads
You can view sample webhook payloads for each event type:
* `GET /v1/hooks/purchase_sample`
* `GET /v1/hooks/payment_succeeded_sample`
* `GET /v1/hooks/order_created_sample`
* `GET /v1/hooks/form_submission_sample`
* `GET /v1/hooks/tag_added_sample`
* `GET /v1/hooks/tag_removed_sample`
Example request targeting a specific tag:
```json
{
"data": {
"type": "hooks",
"attributes": {
"target_url": "https://example.com/webhook",
"event": "tag_added",
"resource_id": "123"
},
"relationships": {
"site": {
"data": {
"id": "456",
"type": "sites"
}
}
}
}
}
```
Example request using a wildcard webhook:
```json
{
"data": {
"type": "hooks",
"attributes": {
"target_url": "https://example.com/webhook",
"event": "tag_added"
},
"relationships": {
"site": {
"data": {
"id": "456",
"type": "sites"
}
}
}
}
}
```
## Actual Payloads
The actual payloads are sent to the `target_url` as a POST request with the following JSON body:
```json
{
"id": "hash_id",
"event": "tag_added",
"payload": [],
}
```
The `id` is the ID of the resource that triggered the event.
The `event` is the type of event that triggered the webhook.
The `payload` is the actual payload of the event and the content will be similar to the sample payloads above.
# Delete hook
Source: https://help.kajabi.com/api-reference/webhooks/delete-hook
/openapi.yaml delete /v1/hooks/{id}
Deletes a webhook subscription
# Hook details
Source: https://help.kajabi.com/api-reference/webhooks/hook-details
/openapi.yaml get /v1/hooks/{id}
Returns specific hook based on it ID
# List hooks
Source: https://help.kajabi.com/api-reference/webhooks/list-hooks
/openapi.yaml get /v1/hooks
Lists webhooks for a site
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/hooks?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/hooks?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/hooks?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/hooks?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/hooks?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/hooks?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/hooks?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Filtering
Use `filter[event_eq]` parameter to filter webhooks by event type:
### Get webhooks for purchase events only
* `GET /v1/hooks?filter[event_eq]=purchase`
# Tag added sample
Source: https://help.kajabi.com/api-reference/webhooks/tag-added-sample
/openapi.yaml get /v1/hooks/tag_added_sample
Returns sample webhook payload for the `tag_added` event:
```
[
{
"id": "0",
"type": "contacts",
"attributes": {
"name": "Sample Recipient",
"email": "sample@example.com",
"address_line_1": "123 Kajabi Ln",
"address_line_2": "Kajabi Suite 4",
"address_city": "Kajabiwood",
"address_country": "United Sites of Kajabi",
"address_state": "Kajabifornia",
"address_zip": "99999",
"phone_number": "5555555555",
"business_number": null,
"subscribed": false,
"external_user_id": null,
"created_at": "2025-07-31T16:51:04.010Z",
"updated_at": "2025-07-31T16:51:04.010Z"
},
"links": {
"customer": ""
},
"relationships": {
"site": {
"data": {
"id": "2",
"type": "sites"
}
}
}
},
{
"id": "0",
"type": "contact_tags",
"attributes": {
"name": "Tag"
},
"relationships": {
"site": {
"data": {
"id": "2",
"type": "sites"
}
}
}
}
]
```
## Actual Payloads
The actual payloads are sent to the `target_url` as a POST request with the following JSON body:
```json
{
"id": "hash_id",
"event": "tag_added",
"payload": [],
}
```
The `payload` array is the sample response above
# Get payout details
Source: https://help.kajabi.com/api-reference/kajabi-payments-payouts/get-payout-details
/openapi.yaml get /v1/kajabi_payments_payouts/{id}
Get detailed information about a specific Kajabi Payments payout, including all associated transactions.
**Note**: Date fields are returned in UTC:
* `initiated_date` - Payout creation timestamp in UTC
* `estimated_arrival_date` - Expected arrival timestamp in UTC
* `transactions[].created_at` - Transaction timestamp in UTC
## Transaction Fields
Each transaction in the `transactions` array includes:
* **Transaction Type** - Whether or not this transaction was a sale, refund, or adjustment
* **Pricing Type** - When this is a sale this is the offer's pricing type, i.e. one-time, subscription, or payment plan
* **Sales Tax** - The sales tax collected for this transaction
* **Amount** - The transaction amount
* **Currency** - Three-letter currency code (USD, EUR, GBP, etc.)
* **Fee** - The transaction processing fee
* **Net** - The transaction net amount (amount - fee)
* **Customer ID** - Customer ID associated with the transaction
* **Customer Name** - Customer's full name
* **Customer Email** - Customer's email address
* **Offer ID** - When a sale or refund, the ID(s) of the purchased offer
* **Offer Title** - When a sale or refund, the title(s) of the purchased offer
* **Provider** - The payment processor (Kajabi Payments, Stripe, PayPal, etc.)
* **Payment Method** - For a sale or refund, the payment method that was used (Credit Card, etc.)
* **Created At** - When the transaction occurred (in UTC)
* **Coupon Used** - For a sale or refund, the coupon code if one was applied
* **Presented Amount** - The transaction original transaction amount (before currency conversion)
* **Presented Currency** - The transaction original currency code
* **Exchange Rate** - The currency exchange rate applied
* **Quantity** - The quantity of the offer that was purchased
* **Order Number** - For a sale or refund, the order number when an order was purchased
## Transaction Types
* `Sale` - All payments and that were received as part of this payout
* `Refund` - Any refunds that occurred as part of this payout
* `Adjustment` - All other adjustments that occurred as a part of this payout
## Example Response
```json
{
"data": {
"id": "payout_abc123",
"type": "kajabi_payments_payouts",
"attributes": {
"status": "Paid",
"amount": 1450.50,
"currency": "USD",
"initiated_date": "2024-01-10T10:00:00.000Z",
"estimated_arrival_date": "2024-01-17T10:00:00.000Z",
"bank_account": "Chase Bank - 1234",
"transactions": [
{
"transaction_type": "Sales",
"pricing_type": "Subscription",
"sales_tax": 0.0,
"amount": 99.00,
"currency": "USD",
"fee": 3.17,
"net": 95.83,
"customer_id": 789,
"customer_name": "John Doe",
"customer_email": "john@example.com",
"offer_ids": [
101
],
"offer_titles": [
"Premium Membership"
],
"provider": "Kajabi Payments",
"payment_method": "Visa",
"created_at": "2024-01-08T14:30:00.000Z",
"coupon_used": "SAVE20",
"presented_amount": 99.00,
"presented_currency": "USD",
"exchange_rate": 1.0,
"quantity": 1,
"order_number": "ORD-12345"
}
]
}
}
}
```
# List payouts
Source: https://help.kajabi.com/api-reference/kajabi-payments-payouts/list-payouts
/openapi.yaml get /v1/kajabi_payments_payouts
List of Kajabi Payments payouts for a site. Payouts represent transfers of funds from Kajabi to the site owner's connected bank account or payment method.
**Note**: Date fields are returned in UTC:
* `initiated_date` - Payout creation timestamp in UTC
* `estimated_arrival_date` - Expected arrival timestamp in UTC
## Pagination
Use `page[number]` parameter to paginate results:
### Get first page
* `GET /v1/kajabi_payments_payouts?page[number]=1&filter[site_id]=123`
### Get second page
* `GET /v1/kajabi_payments_payouts?page[number]=2&filter[site_id]=123`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/kajabi_payments_payouts?page[number]=2&filter[site_id]=123",
"first": "https://api.kajabi.com/v1/kajabi_payments_payouts?page[number]=1&filter[site_id]=123",
"prev": "https://api.kajabi.com/v1/kajabi_payments_payouts?page[number]=1&filter[site_id]=123",
"next": "https://api.kajabi.com/v1/kajabi_payments_payouts?page[number]=3&filter[site_id]=123",
"last": "https://api.kajabi.com/v1/kajabi_payments_payouts?page[number]=5&filter[site_id]=123"
},
"meta": {
"total": 50,
"pagination": {
"current": 2,
"first": 1,
"prev": 1,
"next": 3,
"last": 5,
"records": 10,
}
}
}
```
## Filtering by Site
Use the `filter[site_id]` parameter to filter payouts by site (required):
### Get payouts for site with ID 123
* `GET /v1/kajabi_payments_payouts?filter[site_id]=123`
## Filtering by Status
Use the `filter[status]` parameter to filter payouts by status:
### Get paid payouts for site with ID 123
* `GET /v1/kajabi_payments_payouts?filter[site_id]=123&filter[status]=paid`
Valid status values:
* `pending` - The payout has been created but hasn't been submitted to the bank yet
* `in_transit` - The payout has been submitted to the bank and is being processed
* `paid` - The payout succeeded and the money has successfully reached your bank account
* `failed` - Something went wrong and the payout couldn't be transferred to your account
* `canceled` - The payout was canceled before it could complete
## Date Range Filtering
Use the `filter[start_date]` and `filter[end_date]` parameters to filter payouts by date range:
### Get payouts between January 1st and January 31st, 2024
* `GET /v1/kajabi_payments_payouts?filter[site_id]=123&filter[start_date]=2024-01-01&filter[end_date]=2024-01-31`
Response will include only payouts within the specified date range.
## Using Multiple Parameters Together
You can combine multiple parameters to filter the response:
### Get paginated, filtered payouts
* `GET /v1/kajabi_payments_payouts?page[number]=1&filter[site_id]=123&filter[status]=paid&filter[start_date]=2024-01-01&filter[end_date]=2024-01-31`
Response will include paginated payouts matching all filters:
```json
{
"data": [{
"id": "payout_abc123",
"type": "kajabi_payments_payouts",
"attributes": {
"status": "Paid",
"amount": 1500.00,
"currency": "USD",
"initiated_date": "2024-01-10T10:00:00.000Z",
"estimated_arrival_date": "2024-01-17T10:00:00.000Z",
"bank_account": "Chase Bank - 1234"
}
}]
}
```
# Landing page details
Source: https://help.kajabi.com/api-reference/landing-pages/landing-page-details
/openapi.yaml get /v1/landing_pages/{id}
Shows details of a landing page
## Landing Page Attributes
* `title` (string) - Title of the landing page
* `url` (string) - URL of the landing page
* `publish_at` (string) - Date and time the landing page will be published
* `created_at` (string) - Date and time the landing page was created
* `updated_at` (string) - Date and time the landing page was updated
## Sparse Fields
### Only return title attribute
* `GET /v1/landing_pages/123?fields[landing_pages]=title`
Response will only include requested fields
```json
{
"data": {
"id": "123",
"type": "landing_pages",
"attributes": {
"title": "Course Landing Page"
}
}
}
```
# List landing pages
Source: https://help.kajabi.com/api-reference/landing-pages/list-landing-pages
/openapi.yaml get /v1/landing_pages
Returns a list of landing pages which the current user may access
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/landing_pages[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/landing_pages[number]=2&page[size]=25`
## Sparse Fields
Use the `fields[landing_pages]` parameter to request only specific attributes:
### Only return title attribute
* `GET /v1/landing_pages?fields[landing_pages]=title`
## Sorting
Use the `sort` parameter to sort the results:
### Sort by publish_at in descending order
* `GET /v1/landing_pages?sort=-publish_at&fields[landing_pages]=title`
## Filters
Use the `filter[site_id]` parameter to get landing pages for a specific site:
### Get landing pages for site with ID 123
* `GET /v1/landing_pages?filter[site_id]=123`
List of attributes that may be used to filter: title, publish_at, created_at, updated_at
The filter param uses the following syntax: `filter[attribute_name_suffix]` with suffix for comparison:
* `eq` for equals
* `cont` for contains
* `not_eq` for not equals
* `not_cont` for not contains
* `gt` for greater than
* `gte` for greater than or equal
* `lt` for less than
* `lte` for less than or equal
* `start` for starts with
* `end` for ends with
For example:
* `GET /v1/landing_pages?filter[title_start]=Course`
* `GET /v1/landing_pages?filter[title_cont]=Landing`
# My user profile
Source: https://help.kajabi.com/api-reference/me/my-user-profile
/openapi.yaml get /v1/me
Returns the current user's profile data.
## Response attributes
The response will include the following attributes:
* `initials` - A derived attribute that represents the user's initials based on their name. This is typically used for avatar placeholders or compact user displays. For example, "John Doe" would have initials "JD".
* `name` - The user's full name. This is a required field that can be:
* Set directly as a full name
* Automatically generated from first name and last name fields when either changes
* Used for display purposes throughout the platform
* `email` - The user's email address. This is a critical field that:
* Is required and must be unique
* Is used for authentication
* Can trigger email change notifications
* Is used for password recovery
* Can be marked as bounced (and reset when email changes)
* Is validated against email format requirements
* `role_level` - Represents the user's permission level in the system. This attribute:
* Common values include:
* OWNER - Account owner with full permissions
* ADMINISTRATOR - Admin with site management permissions
* Determines what actions and resources the user can access
* Is used for permission checks throughout the system
# List offers
Source: https://help.kajabi.com/api-reference/offers/list-offers
/openapi.yaml get /v1/offers
List of offers (not archived) for a site that can be granted to a contact
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/offers?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/offers?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/offers?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/offers?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/offers?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/offers?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/offers?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Sorting
Use the `sort` parameter to sort the results:
### Sort by title in ascending order
* `GET /v1/offers?sort=title`
### Sort by title in descending order
* `GET /v1/offers?sort=-title`
Response will include offers sorted by the specified field
```json
{
"data": [
{
"id": "123",
"type": "offers",
"attributes": {
"title": "Advanced Course Bundle",
"price_in_cents": 19900,
"status": "active"
}
},
{
"id": "456",
"type": "offers",
"attributes": {
"title": "Beginner Course Bundle",
"price_in_cents": 9900,
"status": "active"
}
}
]
}
```
## Sparse Fields
Use the `fields[offers]` parameter to request only specific attributes:
### Only return title and price_in_cents attributes
* `GET /v1/offers?fields[offers]=title,price_in_cents`
Response will only include requested fields
```json
{
"data": [{
"id": "123",
"type": "offers",
"attributes": {
"title": "Advanced Course Bundle",
"price_in_cents": 19900
}
}]
}
```
## Filter by Site ID
Use the `filter[site_id]` parameter to get offers for a specific site:
### Get offers for site with ID 123
* `GET /v1/offers?filter[site_id]=123`
Response will only include offers for that site
```json
{
"data": [{
"id": "456",
"type": "offers",
"attributes": {
"title": "Advanced Course Bundle",
"price_in_cents": 19900,
"status": "active"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Filter by Title Contains
Use the `filter[title_cont]` parameter to find offers where the title contains specific text:
### Get offers with titles containing "bundle"
* `GET /v1/offers?filter[title_cont]=bundle`
Response will include offers with matching titles
```json
{
"data": [{
"id": "456",
"type": "offers",
"attributes": {
"title": "Advanced Course Bundle",
"price_in_cents": 19900,
"status": "active"
}
},
{
"id": "789",
"type": "offers",
"attributes": {
"title": "Basic Course Bundle",
"price_in_cents": 9900,
"status": "active"
}
}]
}
```
## Filter by Description Contains
Use the `filter[description_cont]` parameter to find offers where the description contains specific text:
### Get offers with descriptions containing "marketing"
* `GET /v1/offers?filter[description_cont]=marketing`
Response will include offers with matching descriptions
```json
{
"data": [{
"id": "456",
"type": "offers",
"attributes": {
"title": "Marketing Course Bundle",
"description": "Complete marketing course bundle with advanced strategies",
"price_in_cents": 19900,
"status": "active"
}
},
{
"id": "789",
"type": "offers",
"attributes": {
"title": "Business Essentials",
"description": "Business fundamentals including marketing and sales",
"price_in_cents": 9900,
"status": "active"
}
}]
}
```
## Using Multiple Parameters Together
You can combine pagination, sorting, sparse fields and filtering in a single request:
### Get page 2 of offers for site 123, sorted by price_in_cents descending, including only title and price_in_cents fields
* `GET /v1/offers?page[number]=2&page[size]=10&sort=-price_in_cents&filter[site_id]=123&fields[offers]=title,price_in_cents`
Response will include paginated and filtered offers with sparse fields
```json
{
"data": [
{
"id": "456",
"type": "offers",
"attributes": {
"title": "Basic Course Bundle",
"price_in_cents": 9900
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}
],
"links": {
"self": "https://api.kajabi.com/v1/offers?page[number]=2&page[size]=10&sort=-price_in_cents&filter[site_id]=123&fields[offers]=title,price_in_cents",
"first": "https://api.kajabi.com/v1/offers?page[number]=1&page[size]=10&sort=-price_in_cents&filter[site_id]=123&fields[offers]=title,price_in_cents",
"prev": "https://api.kajabi.com/v1/offers?page[number]=1&page[size]=10&sort=-price_in_cents&filter[site_id]=123&fields[offers]=title,price_in_cents",
"next": null,
"last": "https://api.kajabi.com/v1/offers?page[number]=2&page[size]=10&sort=-price_in_cents&filter[site_id]=123&fields[offers]=title,price_in_cents"
},
"meta": {
"total_pages": 2,
"total_count": 15,
"current_page": 2
}
}
```
# List offer's products
Source: https://help.kajabi.com/api-reference/offers/list-offers-products
/openapi.yaml get /v1/offers/{offer_id}/relationships/products
get the offer's relationship to products, response is a list of resource identifiers
# Offer details
Source: https://help.kajabi.com/api-reference/offers/offer-details
/openapi.yaml get /v1/offers/{id}
The offer system is a core part of Kajabi's e-commerce functionality, allowing course creators and digital product owners to monetize their content through various pricing and payment models while maintaining flexibility in how offers are presented and processed.
## Offer attributes
* `title` (string) - Required, public name of the offer shown to customers
* `description` (string) - Optional, detailed information about what's included in the offer
* `internal_title` (string) - Optional, for internal reference/organization (not shown to customers)
* `currency` (string) - The currency of the offer, defaults to USD
* `price_in_cents` (integer) - The USD price in cents (for precise decimal handling)
* `payment_type` (string) - Indicates the payment structure
* `token` (string) - A unique identifier for the offer, particularly in checkout URLs
* `payment_method` (string) - Indicates the payment method, Returns empty string if no payment method is set
* `price_description` (string) - Human-readable representation of the offer's price, includes formatting and currency information
* `checkout_url` (string) - Full URL where customers can purchase the offer
* Includes the offer token for identification
* Uses the site's public host and protocol settings
* `recurring_offer` (boolean) - Whether the offer has recurring payments
* `subscription` (boolean) - Whether the offer is a subscription offer
* `one_time` (boolean) - Whether the offer is a one-time offer
* `single` (boolean) - Whether the offer is a single offer
* `free` (boolean) - Whether the offer is a free offer
* `image_url` (string) - URL to the image associated with the offer (nullable)
## Include Relationships
Use the `include` parameter to include related products:
* `GET /v1/offers/123?include=products`
Response will include products relationship
```json
{
"data": {
"id": "123",
"type": "offers",
"attributes": {
"title": "Advanced Course Bundle",
"description": "Complete advanced course bundle with expert guidance",
"internal_title": "advanced_course_bundle",
"currency": "USD",
"price_in_cents": 19900,
"payment_type": "stripe",
"token": "123",
"payment_method": "stripe",
"price_description": "$199.00",
"checkout_url": "https://api.kajabi.com/checkout/123",
"recurring_offer": false,
"subscription": false,
"one_time": true,
"single": true,
"free": false,
"image_url": "https://api.kajabi.com/images/456"
},
"relationships": {
"products": {
"data": [
{
"id": "456",
"type": "products"
}
]
}
}
},
"included": [
{
"id": "456",
"type": "products",
"attributes": {
"created_at": "2021-01-01T00:00:00Z",
"title": "Advanced Course",
"description": "Complete advanced course with expert guidance",
"status": "ready",
"members_aggregate_count": 100,
"product_type_name": "Course",
"product_type_id": 456,
"publish_status": "published",
"image_url": "https://api.kajabi.com/images/456"
}
}
]
}
```
## Sparse Fields
### Only return title and price_in_cents attributes
* `GET /v1/offers/123?fields[offers]=title,price_in_cents`
Response will only include requested fields
```json
{
"data": {
"id": "123",
"type": "offers",
"attributes": {
"title": "Advanced Course Bundle",
"price_in_cents": 19900
}
}
}
```
## Multiple parameters together
You can combine include and sparse fields in a single request:
### Get offer 123 with products, including only title and description fields, and products with title and publish_status fields
* `GET /v1/offers/123?include=products&fields[offers]=title,description&fields[products]=title,publish_status`
Response will include offer and products with sparse fields
```json
{
"data": {
"id": "123",
"type": "offers",
"attributes": {
"title": "Advanced Course Bundle",
"description": "Complete advanced course bundle with expert guidance"
},
"relationships": {}
},
"included": [
{
"id": "456",
"type": "products",
"attributes": {
"title": "Advanced Course",
"publish_status": "published"
}
}
]
}
```
# List order items
Source: https://help.kajabi.com/api-reference/orders/list-order-items
/openapi.yaml get /v1/order_items
Order items represent individual products or offers within an order.
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/order_items?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/order_items?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/order_items?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/order_items?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/order_items?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/order_items?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/order_items?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Filtering
Use filter parameters to narrow down results:
### Filter by site
Use the `filter[site_id]` parameter to get order items for a specific site:
* `GET /v1/order_items?filter[site_id]=123`
### Filter by item type
* `GET /v1/order_items?filter[item_type_eq]=Offer`
### Filter by item ID
* `GET /v1/order_items?filter[item_id_eq]=123`
### Filter by fulfilled status
* `GET /v1/order_items?filter[fulfilled_at_null]=true` (unfulfilled items)
* `GET /v1/order_items?filter[fulfilled_at_null]=false` (fulfilled items)
## Advanced Filtering Examples
### Range queries
* `GET /v1/order_items?filter[site_id]=123&filter[quantity_gt]=1`
* `GET /v1/order_items?filter[site_id]=123&filter[total_price_in_cents_gteq]=1000&filter[total_price_in_cents_lteq]=10000`
### Pattern matching
* `GET /v1/order_items?filter[site_id]=123&filter[item_type_cont]=Off`
* `GET /v1/order_items?filter[site_id]=123&filter[title_i_cont]=course` (case insensitive)
### Array filters
* `GET /v1/order_items?filter[site_id]=123&filter[item_id_in]=123,456,789`
* `GET /v1/order_items?filter[site_id]=123&filter[item_type_not_in]=Bundle,Subscription`
## Sorting
Use the `sort` parameter to sort the results:
### Sort by fulfilled_at in ascending order
* `GET /v1/order_items?filter[site_id]=123&sort=fulfilled_at`
# List orders
Source: https://help.kajabi.com/api-reference/orders/list-orders
/openapi.yaml get /v1/orders
Orders for a site
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/orders?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/orders?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/orders?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/orders?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/orders?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/orders?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/orders?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Sorting
Use the `sort` parameter to sort the results:
### Sort by order_number in ascending order
* `GET /v1/orders?sort=order_number`
### Sort by created_at in descending order
* `GET /v1/orders?sort=-created_at`
## Filtering
Use filter parameters to narrow down results:
### Filter by site
Use the `filter[site_id]` parameter to get orders for a specific site:
* `GET /v1/orders?filter[site_id]=123`
### Filter by customer
Use the `filter[customer_id]` parameter to get orders for a specific customer:
* `GET /v1/orders?filter[customer_id]=456789`
### Filter by order number
* `GET /v1/orders?filter[order_number_eq]=12345`
### Filter by fulfilled status
* `GET /v1/orders?filter[fulfilled_at_null]=true` (unfulfilled orders)
* `GET /v1/orders?filter[fulfilled_at_null]=false` (fulfilled orders)
## Advanced Filtering Examples
### Range queries
* `GET /v1/orders?filter[site_id]=123&filter[created_at_gteq]=2024-01-01&filter[created_at_lteq]=2024-12-31`
* `GET /v1/orders?filter[site_id]=123&filter[total_price_in_cents_gt]=5000`
### Pattern matching
* `GET /v1/orders?filter[site_id]=123&filter[order_number_cont]=2024`
* `GET /v1/orders?filter[site_id]=123&filter[currency_code_start]=US`
### Array filters
* `GET /v1/orders?filter[site_id]=123&filter[currency_code_in]=USD,EUR,GBP`
# Order details
Source: https://help.kajabi.com/api-reference/orders/order-details
/openapi.yaml get /v1/orders/{id}
Shows details of an order
Orders represent completed purchase transactions and contain:
* Order items (products/offers purchased)
* Payment information
* Customer information
* Fulfillment status
## Order Attributes
* `order_number` (integer) - A unique identifier for the order within the site
* `currency_code` (string) - The ISO currency code for the order (e.g., "USD")
* `total_price_in_cents` (integer) - Total price including taxes and discounts
* `subtotal_in_cents` (integer) - Subtotal before taxes and discounts
* `sales_tax_amount_in_cents` (integer) - Total sales tax amount
* `discount_amount_in_cents` (integer) - Total discount amount
* `fulfilled_at` (string) - Timestamp when the order was fulfilled
* `created_at` (string) - Timestamp when the order was created
## Include Related Resources
Use the `include` parameter to load related resources:
### Include order items, customer
* `GET /v1/orders/123?include=order_items,customer`
# Order item details
Source: https://help.kajabi.com/api-reference/orders/order-item-details
/openapi.yaml get /v1/order_items/{id}
Shows details of an order item
Order items represent individual products or offers within an order and contain:
* Product/offer information
* Pricing details
* Quantity information
* Fulfillment status
## Order Item Attributes
* `quantity` (integer) - Number of items purchased
* `currency_code` (string) - The ISO currency code for the item
* `item_type` (string) - Type of item (e.g., "Offer")
* `item_id` (integer) - ID of the associated item
* `title` (string) - Title of the item
* `total_price_in_cents` (integer) - Total price for this line item
* `subtotal_in_cents` (integer) - Subtotal before taxes and discounts
* `sales_tax_amount_in_cents` (integer) - Sales tax amount for this item
* `discount_amount_in_cents` (integer) - Discount amount for this item
* `fulfilled_at` (string) - Timestamp when the item was fulfilled
* `created_at` (string) - Timestamp when the order item was created
## Include Related Resources
Use the `include` parameter to load related resources:
### Include order
* `GET /v1/order_items/123?include=order`
# List podcasts
Source: https://help.kajabi.com/api-reference/podcasts/list-podcasts
/openapi.yaml get /v1/podcasts
Podcasts for a site
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/podcasts?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/podcasts?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/podcasts?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/podcasts?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/podcasts?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/podcasts?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/podcasts?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Sorting
Use the `sort` parameter to sort the results:
### Sort by title in ascending order
* `GET /v1/podcasts?sort=title`
### Sort by title in descending order
* `GET /v1/podcasts?sort=-title`
Response will include podcasts sorted by the specified field
```json
{
"data": [
{
"id": "123",
"type": "podcasts",
"attributes": {
"title": "My Podcast A",
"description": "A great podcast about technology"
}
},
{
"id": "456",
"type": "podcasts",
"attributes": {
"title": "My Podcast B",
"description": "Another great podcast about business"
}
}
]
}
```
## Sparse Fields
Use the `fields[podcasts]` parameter to request only specific attributes:
### Only return title and description attributes
* `GET /v1/podcasts?fields[podcasts]=title,description`
Response will only include requested fields
```json
{
"data": [{
"id": "123",
"type": "podcasts",
"attributes": {
"title": "My Podcast A",
"description": "A great podcast about technology"
}
}]
}
```
## Filter by Site ID
Use the `filter[site_id]` parameter to get podcasts for a specific site:
### Get podcasts for site with ID 123
* `GET /v1/podcasts?filter[site_id]=123`
Response will only include podcasts for that site
```json
{
"data": [{
"id": "456",
"type": "podcasts",
"attributes": {
"title": "My Podcast",
"description": "A great podcast"
}
}]
}
```
# Show podcast
Source: https://help.kajabi.com/api-reference/podcasts/show-podcast
/openapi.yaml get /v1/podcasts/{id}
Get details for a specific podcast
## Attributes
- **title**: The podcast title
- **description**: The podcast description
- **language**: The podcast language (e.g., "en", "es")
- **owner_email**: The podcast owner's email address
- **owner_name**: The podcast owner's name
- **status**: The podcast status (ready, importing, failed)
- **show_type**: The show type (episodic, serial)
- **thumbnail_url**: URL to the podcast thumbnail image
- **cover_art_url**: URL to the podcast cover art image
- **categories**: Array of podcast categories
- **directories**: Array of podcast directories
- **migrated_to_url**: URL if podcast has been migrated
- **migrated**: Boolean indicating if podcast has been migrated
- **public**: Boolean indicating if podcast is public
- **ready**: Boolean indicating if podcast is ready
- **distribution_ready**: Boolean indicating if podcast is ready for distribution
- **created_at**: ISO 8601 date-time when podcast was created (read-only)
- **updated_at**: ISO 8601 date-time when podcast was last updated (read-only)
# List products
Source: https://help.kajabi.com/api-reference/products/list-products
/openapi.yaml get /v1/products
List of products (not archived) that can be granted to a contact
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/products?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/products?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/products?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/products?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/products?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/products?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/products?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Sorting
Use the `sort` parameter to sort the results:
### Sort by title in ascending order
* `GET /v1/products?sort=title`
### Sort by title in descending order
* `GET /v1/products?sort=-title`
Response will include products sorted by the specified field
```json
{
"data": [
{
"id": "123",
"type": "products",
"attributes": {
"title": "Advanced Course",
"description": "In-depth training",
"status": "active"
}
},
{
"id": "456",
"type": "products",
"attributes": {
"title": "Beginner Course",
"description": "Introduction to basics",
"status": "active"
}
}
]
}
```
## Sparse Fields
Use the `fields[products]` parameter to request only specific attributes:
### Get only title and publish_status fields
* `GET /v1/products?fields[products]=title,publish_status`
Response will only include the requested fields
```json
{
"data": [
{
"id": "123",
"type": "products",
"attributes": {
"title": "Advanced Course",
"publish_status": "published"
}
},
{
"id": "456",
"type": "products",
"attributes": {
"title": "Beginner Course",
"publish_status": "draft"
}
}
]
}
```
## Filter by Site ID
Use the `filter[site_id]` parameter to get products for a specific site:
### Get products for site with ID 123
* `GET /v1/products?filter[site_id]=123`
Response will only include products for that site
```json
{
"data": [
{
"id": "456",
"type": "products",
"attributes": {
"title": "Advanced Course",
"description": "In-depth training",
"status": "active",
"publish_status": "published"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}
]
}
```
## Filter by Title Contains
Use the `filter[title_cont]` parameter to find products where the title contains specific text:
### Get products with titles containing "course"
* `GET /v1/products?filter[title_cont]=course`
Response will include products with matching titles
```json
{
"data": [{
"id": "456",
"type": "products",
"attributes": {
"title": "Advanced Course",
"description": "In-depth training",
"status": "active",
"publish_status": "published"
}
},
{
"id": "789",
"type": "products",
"attributes": {
"title": "Beginner Course",
"description": "Introduction to basics",
"status": "active",
"publish_status": "published"
}
}]
}
```
## Filter by Description Contains
Use the `filter[description_cont]` parameter to find products where the description contains specific text:
### Get products with descriptions containing "training"
* `GET /v1/products?filter[description_cont]=training`
Response will include products with matching descriptions
```json
{
"data": [{
"id": "456",
"type": "products",
"attributes": {
"title": "Advanced Course",
"description": "In-depth training program",
"status": "active",
"publish_status": "published"
}
},
{
"id": "789",
"type": "products",
"attributes": {
"title": "Professional Course",
"description": "Professional training and certification",
"status": "active",
"publish_status": "published"
}
}]
}
```
## Filter by Status
Use the `filter[status_eq]` parameter to find products with a specific status:
### Get ready products
* `GET /v1/products?filter[status_eq]=ready`
Response will include products with matching status
```json
{
"data": [{
"id": "456",
"type": "products",
"attributes": {
"title": "Advanced Course",
"description": "In-depth training program",
"status": "ready",
"publish_status": "published"
}
},
{
"id": "789",
"type": "products",
"attributes": {
"title": "Professional Course",
"description": "Professional training and certification",
"status": "ready",
"publish_status": "published"
}
}]
}
```
## Filter by Excluded Product Types
Use the `filter[exclude_product_types][]` parameter to exclude products by productizable_type (fully-qualified class name):
### Exclude CohortCourse products
* `GET /v1/products?filter[exclude_product_types][]=Courses::CohortCourse`
Response will exclude products with the specified productizable_type while keeping legacy evergreen courses visible.
## Using Multiple Parameters Together
You can combine pagination, sorting, sparse fields and filtering in a single request:
### Get page 2 of products for site 123, sorted by title descending, including only title and publish_status fields
* `GET /v1/products?page[number]=2&page[size]=10&sort=-title&filter[site_id]=123&fields[products]=title,publish_status`
Response will include paginated and filtered products with sparse fields
```json
{
"data": [
{
"id": "456",
"type": "products",
"attributes": {
"title": "Beginner Course",
"publish_status": "draft"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}
],
"links": {
"self": "https://api.kajabi.com/v1/products?page[number]=2&page[size]=10&sort=-title&filter[site_id]=123&fields[products]=title,publish_status",
"first": "https://api.kajabi.com/v1/products?page[number]=1&page[size]=10&sort=-title&filter[site_id]=123&fields[products]=title,publish_status",
"prev": "https://api.kajabi.com/v1/products?page[number]=1&page[size]=10&sort=-title&filter[site_id]=123&fields[products]=title,publish_status",
"next": null,
"last": "https://api.kajabi.com/v1/products?page[number]=2&page[size]=10&sort=-title&filter[site_id]=123&fields[products]=title,publish_status"
},
"meta": {
"total_pages": 2,
"total_count": 15,
"current_page": 2
}
}
```
# Product details
Source: https://help.kajabi.com/api-reference/products/product-details
/openapi.yaml get /v1/products/{id}
Show details of a product
## Sparse Fields
Use the `fields[products]` parameter to request only specific attributes:
### Get only title and publish_status fields
* `GET /v1/products/123?fields[products]=title,publish_status`
Response will only include the requested fields
```json
{
"data": {
"id": "123",
"type": "products",
"attributes": {
"title": "Advanced Course",
"publish_status": "published"
},
"relationships": {}
}
}
```
# Cancel subscription
Source: https://help.kajabi.com/api-reference/purchases/cancel-subscription
/openapi.yaml post /v1/purchases/{id}/cancel_subscription
Cancel the subscription associated with a purchase by ID
This endpoint cancels the underlying subscription (Stripe, PayPal, or Kajabi Payments)
associated with the purchase. The purchase will be deactivated and the subscription
will be cancelled immediately, according to the payment provider's cancellation rules.
If the payment can be cancelled the response will be successful.
Otherwise, the response will be an error with validation details.
# Deactivate purchase
Source: https://help.kajabi.com/api-reference/purchases/deactivate-purchase
/openapi.yaml post /v1/purchases/{id}/deactivate
Deactivate a purchase by ID, this will not cancel the subscription.
Use the `cancel_subscription` endpoint to cancel the subscription. Otherwise, the purchase will be deactivated and the subscription will remain active.
For a free purchase, the purchase may be later reactivated.
If the product can be deactivated the response will be successful.
Otherwise, the response will be an error.
# List purchases
Source: https://help.kajabi.com/api-reference/purchases/list-purchases
/openapi.yaml get /v1/purchases
Returns a list of purchases (offer purchases) which the current user may access
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/purchases?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/purchases?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/purchases?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/purchases?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/purchases?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/purchases?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/purchases?page[number]=5&page[size]=10"
},
"meta": {
"count": 10,
"total_count": 50,
"total_pages": 5
}
}
```
## Sparse Fields
Use the `fields[purchases]` parameter to request only specific attributes:
### Only return amount_in_cents attributes
* `GET /v1/purchases?fields[purchases]=amount_in_cents`
Response will only include requested fields
```json
{
"data": [
{
"id": "123",
"type": "purchases",
"attributes": {
"amount_in_cents": 19900
}
},
{
"id": "456",
"type": "purchases",
"attributes": {
"amount_in_cents": 9900
}
}
]
}
```
## Sorting
Use the `sort` parameter to sort the results:
### Sort by effective_start_at in descending order
* `GET /v1/purchases?sort=-effective_start_at&fields[purchases]=effective_start_at`
Response will include purchases sorted by the specified field
```json
{
"data": [
{
"id": "123",
"type": "purchases",
"attributes": {
"effective_start_at": "2025-01-02T00:00:00.000Z"
}
},
{
"id": "456",
"type": "purchases",
"attributes": {
"effective_start_at": "2025-01-01T00:00:00.000Z"
}
}
]
}
```
List of attributes that may be used to sort: multipay_payments_made, opt_in, currency, effective_start_at, cardholder_name, billing_address_zip, deactivated_at, deactivation_reason, coupon_code, source, referrer, quantity, created_at, updated_at
## Filters
Use the `filter[site_id]` parameter to get purchases for a specific site:
### Get purchases for site with ID 123
* `GET /v1/purchases?filter[site_id]=123`
### Filter by customer
Use the `filter[customer_id]` parameter to get purchases for a specific customer:
* `GET /v1/purchases?filter[customer_id]=456789`
List of attributes that may be used to filter: multipay_payments_made, opt_in, currency, effective_start_at, cardholder_name, billing_address_zip, deactivated_at, deactivation_reason, coupon_code, source, referrer, quantity, created_at, updated_at
The filter param uses the following syntax: `filter[attribute_name_suffix]` with suffix for comparison:
* `eq` for equals
* `cont` for contains
* `not_eq` for not equals
* `not_cont` for not contains
* `gt` for greater than
* `gte` for greater than or equal
* `lt` for less than
* `lte` for less than or equal
* `start` for starts with
* `end` for ends with
For example:
* `GET /v1/purchases?filter[amount_in_cents_eq]=19900`
* `GET /v1/purchases?filter[amount_in_cents_gt]=19900`
# Purchase details
Source: https://help.kajabi.com/api-reference/purchases/purchase-details
/openapi.yaml get /v1/purchases/{id}
Details of a purchase (of an offer)
## Purchase Attributes
* `amount_in_cents` (integer) - Price of the purchase in cents
* `payment_type` (string) - Type of payment
* `trial` (integer) - Number of trial days. (subscription and payment plans only)
* `trial_end_at` (string) - Date the trial ends
* `multipay_payments_made` (integer) - Number of payments made
* `payment_plan_total_payments` (integer) - Total number of payments in the payment plan
* `status` (string) - The status of the purchase. For one-time purchases this will match the transaction detail status. For subscriptions and payment plans this status represents the status of the plan as compared to the transaction status which represents the individual payment.
* `opt_in` (boolean) - Whether the purchase was opt-in
* `raw_extra_contact_information` (object) - Extra contact information
* `currency` (string) - Currency of the purchase
* `effective_start_at` (string) - Start date of the purchase
* `cardholder_name` (string) - Name of the cardholder
* `billing_address_zip` (string) - Zip code of the billing address
* `deactivated_at` (string) - Date and time the purchase was deactivated
* `deactivation_reason` (string) - Reason for deactivation
* `coupon_code` (string) - Coupon code used for the purchase
* `source` (string) - Source of the purchase
* `referrer` (string) - Referrer of the purchase
* `quantity` (integer) - Quantity of the purchase
* `created_at` (string) - Date and time the purchase was created
* `updated_at` (string) - Date and time the purchase was updated_at
## Sparse Fields
### Only return amount_in_cents and multipay_payments_made attributes
* `GET /v1/purchases/123?fields[purchases]=amount_in_cents,multipay_payments_made`
Response will only include requested fields
```json
{
"data": {
"id": "123",
"type": "purchases",
"attributes": {
"amount_in_cents": 19900,
"multipay_payments_made": 1
}
}
}
```
# Reactivate purchase
Source: https://help.kajabi.com/api-reference/purchases/reactivate-purchase
/openapi.yaml post /v1/purchases/{id}/reactivate
Reactivate a purchase by ID, this will not reactivate the subscription.
If the product can be reactivated the response will be successful.
Otherwise, the response will be an error.
# List sites
Source: https://help.kajabi.com/api-reference/sites/list-sites
/openapi.yaml get /v1/sites
List of sites that the current user has access to
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/sites?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/sites?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/sites?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/sites?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/sites?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/sites?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/sites?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Sorting
Use the `sort` parameter to sort the results:
### Sort by title in ascending order
* `GET /v1/sites?sort=title`
### Sort by title in descending order
* `GET /v1/sites?sort=-title`
Response will include sites sorted by the specified field
```json
{
"data": [
{
"id": "123",
"type": "sites",
"attributes": {
"title": "Advanced Training Site",
"subdomain": "advanced-training"
}
},
{
"id": "456",
"type": "sites",
"attributes": {
"title": "Beginner Training Site",
"subdomain": "beginner-training"
}
}
]
}
```
## Sparse Fields
Use the `fields[sites]` parameter to request only specific attributes:
### Only return title and subdomain attributes
* `GET /v1/sites?fields[sites]=title,subdomain`
Response will only include requested fields
```json
{
"data": [{
"id": "123",
"type": "sites",
"attributes": {
"title": "Advanced Training Site",
"subdomain": "advanced-training"
}
}]
}
```
## Filter by Title Contains
Use the `filter[title_cont]` parameter to find sites where the title contains specific text:
### Get sites with titles containing "training"
* `GET /v1/sites?filter[title_cont]=training`
Response will include sites with matching titles
```json
{
"data": [{
"id": "123",
"type": "sites",
"attributes": {
"title": "Advanced Training Site",
"subdomain": "advanced-training"
}
},
{
"id": "456",
"type": "sites",
"attributes": {
"title": "Beginner Training Site",
"subdomain": "beginner-training"
}
}]
}
```
## Filter by Subdomain Contains
Use the `filter[subdomain_cont]` parameter to find sites where the subdomain contains specific text:
### Get sites with subdomains containing "training"
* `GET /v1/sites?filter[subdomain_cont]=training`
Response will include sites with matching subdomains
```json
{
"data": [{
"id": "123",
"type": "sites",
"attributes": {
"title": "Advanced Training Site",
"subdomain": "advanced-training"
}
},
{
"id": "456",
"type": "sites",
"attributes": {
"title": "Beginner Training Site",
"subdomain": "beginner-training"
}
}]
}
```
## Using Multiple Parameters Together
You can combine pagination, sorting and sparse fields in a single request:
### Get page 2 of sites, sorted by title descending, including only title and subdomain fields
* `GET /v1/sites?page[number]=2&page[size]=10&sort=-title&fields[sites]=title,subdomain`
Response will include paginated sites with sparse fields
```json
{
"data": [
{
"id": "456",
"type": "sites",
"attributes": {
"title": "Beginner Training Site",
"subdomain": "beginner-training"
}
}
],
"links": {
"self": "https://api.kajabi.com/v1/sites?page[number]=2&page[size]=10&sort=-title&fields[sites]=title,subdomain",
"first": "https://api.kajabi.com/v1/sites?page[number]=1&page[size]=10&sort=-title&fields[sites]=title,subdomain",
"prev": "https://api.kajabi.com/v1/sites?page[number]=1&page[size]=10&sort=-title&fields[sites]=title,subdomain",
"next": null,
"last": "https://api.kajabi.com/v1/sites?page[number]=2&page[size]=10&sort=-title&fields[sites]=title,subdomain"
},
"meta": {
"total_pages": 2,
"total_count": 15,
"current_page": 2
}
}
```
# List website pages
Source: https://help.kajabi.com/api-reference/sites/list-website-pages
/openapi.yaml get /v1/website_pages
Returns a list of website pages which the current user may access
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/website_pages[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/website_pages[number]=2&page[size]=25`
## Sorting
Use the `sort` parameter to sort the results:
### Sort by created_at in ascending order
* `GET /v1/website_pages?sort=created_at&fields[website_pages]=created_at`
## Filters
Use the `filter[site_id]` parameter to get website pages for a specific site:
### Get website pages for site with ID 123
* `GET /v1/website_pages?filter[site_id]=123`
# Site details
Source: https://help.kajabi.com/api-reference/sites/site-details
/openapi.yaml get /v1/sites/{id}
The site system is a fundamental part of Kajabi's platform, representing a customer's branded presence and serving as the container for their products, courses, and other content. Each site can be customized extensively while maintaining the core functionality needed for e-learning and digital product delivery.
## Site Attributes
* `title` (string) - A required field that represents the name of the site
* `subdomain` (string) - The subdomain of the site, used for routing and site identification
* `created_at` (string) - A read-only timestamp, ISO date string format, that indicates when the site was created
* `updated_at` (string) - A read-only timestamp, ISO date string format, that indicates when the site was last modified
## Sparse Fields
Use the `fields[sites]` parameter to request only specific attributes:
### Only return title and subdomain attributes
* `GET /v1/sites/123?fields[sites]=title,subdomain`
Response will only include requested fields
```json
{
"data": {
"id": "123",
"type": "sites",
"attributes": {
"title": "Advanced Training Site",
"subdomain": "advanced-training"
}
}
}
```
# Website page details
Source: https://help.kajabi.com/api-reference/sites/website-page-details
/openapi.yaml get /v1/website_pages/{id}
Details of a website page
## Website Page Attributes
* `title` (string) - Title of the website page
* `url` (string) - URL of the website page
* `created_at` (string) - Date and time the website page was created
* `updated_at` (string) - Date and time the website page was updated_at
# List transactions
Source: https://help.kajabi.com/api-reference/transactions/list-transactions
/openapi.yaml get /v1/transactions
List of payment transactions related to completed financial activity (successful charges, refunds, and disputes) that are associated with actual purchases, excluding test transactions, free purchases, failed attempts, and pending transactions.
## Pagination
Use `page[number]` and `page[size]` parameters to paginate results:
### Get first page of 10 items
* `GET /v1/transactions?page[number]=1&page[size]=10`
### Get second page of 25 items
* `GET /v1/transactions?page[number]=2&page[size]=25`
The response includes pagination links and meta data:
```json
{
"links": {
"self": "https://api.kajabi.com/v1/transactions?page[number]=2&page[size]=10",
"first": "https://api.kajabi.com/v1/transactions?page[number]=1&page[size]=10",
"prev": "https://api.kajabi.com/v1/transactions?page[number]=1&page[size]=10",
"next": "https://api.kajabi.com/v1/transactions?page[number]=3&page[size]=10",
"last": "https://api.kajabi.com/v1/transactions?page[number]=5&page[size]=10"
},
"meta": {
"total_pages": 5,
"total_count": 50,
"current_page": 2
}
}
```
## Sparse Fields
Use the `fields[transactions]` parameter to request only specific attributes:
### Only return amount_in_cents and sales_tax_in_cents attributes
* `GET /v1/transactions?fields[transactions]=amount_in_cents,sales_tax_in_cents`
Response will only include requested fields
```json
{
"data": [{
"id": "123",
"type": "transactions",
"attributes": {
"amount_in_cents": 9900,
"sales_tax_in_cents": 990
}
}]
}
```
## Filtering
Use the `filter[site_id]` parameter to filter transactions by site:
### Get transactions for site with ID 123
* `GET /v1/transactions?filter[site_id]=123`
Response will include only transactions for the specified site
```json
{
"data": [{
"id": "456",
"type": "transactions",
"attributes": {
"amount_in_cents": 9900,
"sales_tax_in_cents": 990,
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Date Range Filtering
Use the `filter[start_date]` and `filter[end_date]` parameters to filter transactions by date range:
### Get transactions between January 1st and January 31st, 2024
* `GET /v1/transactions?filter[start_date]=2024-01-01&filter[end_date]=2024-01-31`
Response will include only transactions within the specified date range
```json
{
"data": [{
"id": "456",
"type": "transactions",
"attributes": {
"amount_in_cents": 9900,
"sales_tax_in_cents": 990,
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}]
}
```
## Filtering by Name or Email
Use the `filter[name_or_email]` parameter to filter transactions by name or email:
### Get transactions for customer with name or email "John"
* `GET /v1/transactions?filter[name_or_email]=John`
## Filtering by Customer
Use the `filter[customer_id]` parameter to filter transactions by customer:
### Get transactions for customer with ID 456789
* `GET /v1/transactions?filter[customer_id]=456789`
## Using Multiple Parameters Together
You can combine multiple parameters to filter and format the response:
### Get paginated, filtered transactions with specific fields
* `GET /v1/transactions?page[number]=1&page[size]=10&fields[transactions]=amount_in_cents,sales_tax_in_cents&filter[site_id]=123&filter[start_date]=2024-01-01&filter[end_date]=2024-01-31`
Response will include paginated transactions matching all filters, with only requested fields:
```json
{
"data": [{
"id": "456",
"type": "transactions",
"attributes": {
"amount_in_cents": 9900,
"sales_tax_in_cents": 990
},
"relationships": {
"site": {
"data": {
"id": "123",
"type": "sites"
}
}
}
}],
"meta": {
"total_pages": 1,
"current_page": 1
}
}
```
# Transaction details
Source: https://help.kajabi.com/api-reference/transactions/transaction-details
/openapi.yaml get /v1/transactions/{id}
The transaction system is a critical part of Kajabi's payment infrastructure, handling all monetary operations while maintaining detailed records for accounting, reporting, and compliance purposes.
## Transaction Attributes
* `provider` (string) - The payment processor used for the payment
* `action` (string) - Indicate the type of transaction:
* `charge` - One-time payment
* `refund` - Money returned to customer
* `subscribe` - New subscription
* `subscription_charge` - Recurring subscription payment
* `free_purchase` - $0 transaction
* `test` - Test transaction
* `dispute` - Disputed charge
* `subscription_update` - Subscription modification
* `state` (string) - The transaction's status:
* `initialized` - Transaction started
* `succeeded` - Transaction completed successfully
* `failed` - Transaction failed
* `payment_type` (string) - Indicates the payment structure (nullable)
* `amount_in_cents` (integer) - The USD price in cents (for precise decimal handling) can be negative for refunds
* `sales_tax_in_cents` (integer) - The USD sales tax in cents (for precise decimal handling)
* `payment_fee_in_cents` (integer) - Payment processing fee associated with the transaction (Kajabi Payments only)
* `currency` (string) - String representing the currency code (nullable) automatically upcased
* Defaults to "USD" if not specified
* `currency_symbol` (string) - String representing the currency symbol (nullable)
* Example: "$" for USD
* `formatted_amount` (string) - String representing the amount in a human-readable format
* Includes currency symbol
* Does not include currency code
* Example: "$19.99"
* `settlement_amount_in_cents` (integer) - Price of the payment in cents based on the settlement currency (Kajabi Payments only)
* `settlement_fee_amount_in_cents` (integer) - Payment processing fee associated with the transaction based on the settlement currency (Kajabi Payments only)
* `settlement_currency` (string) - Currency of the payment based on settlement, typically the currency of the attached bank account (Kajabi Payments only)
* `created_at` (string) - The creation date and time, ISO date string format (read-only)
## Sparse Fields
Use the `fields[transactions]` parameter to request only specific attributes:
### Only return amount_in_cents and sales_tax_in_cents attributes
* `GET /v1/transactions/123?fields[transactions]=amount_in_cents,sales_tax_in_cents`
Response will only include requested fields
```json
{
"data": {
"id": "123",
"type": "transactions",
"attributes": {
"amount_in_cents": 9900,
"sales_tax_in_cents": 990
}
}
}
```
## Include Relationships
Use the `include` parameter to include related resources:
> **Deprecated:** the `offer` relationship is deprecated and will be removed in a future version. It is only populated for single-offer transactions and is `null` for bundled (multi-offer) transactions. Use the `purchases` relationship instead — it lists every offer purchase a transaction covers, for all transaction types.
### Include customer and purchases relationships
* `GET /v1/transactions/123?include=customer,purchases`
Response will include related resources
```json
{
"data": {
"id": "123",
"type": "transactions",
"attributes": {
"action": "subscription_charge",
"state": "succeeded",
"payment_type": "subscription",
"amount_in_cents": 100,
"sales_tax_in_cents": 0,
"currency": "USD",
"currency_symbol": "$",
"formatted_amount": "$1.00",
"created_at": "2025-03-14T19:17:38.000Z"
},
"relationships": {
"customer": {
"data": {
"id": "456",
"type": "customers"
}
},
"purchases": {
"data": [
{
"id": "501",
"type": "purchases"
}
]
}
}
},
"included": [
{
"id": "456",
"type": "customers",
"attributes": {
"name": "John Doe",
"email": "email@example.com",
"avatar": "https://example.com/avatar.jpg",
"external_user_id": "123",
"public_bio": "Public Bio",
"public_location": "Public Location",
"public_website": "https://example.com",
"socials": {
"twitter": "https://twitter.com",
"facebook": "https://facebook.com",
"linkedin": "https://linkedin.com"
},
"net_revenue": 10000,
"sign_in_count": 10,
"last_request_at": "2024-01-15T10:30:00Z",
"bounced_at": "2024-01-15T10:30:00Z",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
}
},
{
"id": "501",
"type": "purchases",
"attributes": {
"amount_in_cents": 100,
"payment_type": "subscription",
"currency": "USD",
"quantity": 1,
"created_at": "2025-03-14T19:17:38.000Z",
"updated_at": "2025-03-14T19:17:38.000Z"
},
"relationships": {
"offer": {
"data": {
"id": "789",
"type": "offers"
}
}
}
}
]
}
```
## Using Multiple Parameters Together
You can combine sparse fields and include in a single request:
### Get transaction with specific fields and included relationships
* `GET /v1/transactions/123?include=customer&fields[transactions]=amount_in_cents,sales_tax_in_cents&fields[customers]=name,email`
Response will include transaction with only requested fields and included customer with only name and email fields
```json
{
"data": {
"id": "123",
"type": "transactions",
"attributes": {
"amount_in_cents": 9900,
"sales_tax_in_cents": 990
},
"relationships": {}
},
"included": [
{
"id": "456",
"type": "customers",
"attributes": {
"name": "John Doe",
"email": "john@example.com"
}
}
]
}
```
# Version
Source: https://help.kajabi.com/api-reference/version/version
/openapi.yaml get /v1/version
Returns the current version of the Kajabi API and links to the API documentation.
This endpoint does not require authentication; it can be used as a health check.
## Response attributes
* `meta` (object) - Meta information about the API.
* `title` (string) - The title of the API.
* `version` (string) - The version of the API.
* `links` (object) - Links to the API documentation.
* `documentation` (string) - The URL to the API documentation.
* `jsonapi` (object) - JSON API information.
* `version` (string) - The version of the JSON API.
* `specficiation` (string) - The URL to the JSON API specification.
# Form submission sample
Source: https://help.kajabi.com/api-reference/webhooks/form-submission-sample
/openapi.yaml get /v1/hooks/form_submission_sample
Returns sample webhook payload for the `form_submission` event:
```
[
{
"id": "0",
"type": "form_submissions",
"attributes": {
"name": "John Doe",
"email": "john.doe@example.com",
"address_line_1": null,
"address_line_2": null,
"address_city": null,
"address_country": null,
"address_state": null,
"address_zip": null,
"phone_number": null,
"business_number": null,
"mobile_phone_number": null
},
"relationships": {
"site": {
"data": {
"id": "2",
"type": "sites"
}
},
"form": {
"data": {
"id": "0",
"type": "forms"
}
}
}
},
{
"id": "0",
"type": "forms",
"attributes": {
"url": "https://bill-heaton.kajabi-products.test/forms/0",
"title": "Sample Form",
"default": false,
"webhook_url": null,
"created_at": null,
"updated_at": null
},
"relationships": {
"site": {
"data": {
"id": "2",
"type": "sites"
}
},
"fields": {
"data": []
},
"contact_tags": {
"data": []
}
}
}
]
```
## Actual Payloads
The actual payloads are sent to the `target_url` as a POST request with the following JSON body:
```json
{
"id": "hash_id",
"event": "form_submission",
"payload": [],
}
```
The `payload` array is the sample response above
# Order created sample
Source: https://help.kajabi.com/api-reference/webhooks/order-created-sample
/openapi.yaml get /v1/hooks/order_created_sample
Returns sample webhook payload for the `order_created` event:
```
[
{
"id": "0",
"type": "transactions",
"attributes": {
"action": "charge",
"state": "succeeded",
"payment_type": "charge",
"amount_in_cents": 1000,
"sales_tax_in_cents": 0,
"currency": "USD",
"currency_symbol": "$",
"formatted_amount": "$10.00",
"created_at": "2025-07-31T17:13:05.247Z"
},
"relationships": {
"customer": {
"data": {
"id": "0",
"type": "customers"
}
},
"offer": {
"data": null
}
}
},
{
"id": "0",
"type": "customers",
"attributes": {
"name": "John Doe",
"email": "john.doe@example.com",
"avatar": null,
"external_user_id": null,
"public_bio": null,
"public_location": null,
"public_website": null,
"socials": null,
"net_revenue": "0.0",
"sign_in_count": 0,
"last_request_at": null,
"bounced_at": null,
"created_at": "2025-07-31T17:13:05.207Z",
"updated_at": "2025-07-31T17:13:05.207Z"
},
"links": {
"contact": "https://www.kajabi.test/api/v1/contacts/0"
},
"relationships": {
"site": {
"data": {
"id": "2",
"type": "sites"
}
},
"contact": {
"data": {
"id": "0",
"type": "contacts"
}
},
"offers": {
"data": [],
"links": {
"self": "https://www.kajabi.test/api/v1/customers/0/relationships/offers"
}
},
"products": {
"data": []
}
}
},
{
"id": "0",
"type": "orders",
"attributes": {
"order_number": 0,
"currency_code": "USD",
"fulfilled_at": null,
"created_at": "2025-07-31T17:13:05.207Z",
"total_price_in_cents": 1000,
"subtotal_in_cents": 800,
"sales_tax_amount_in_cents": 200,
"discount_amount_in_cents": 0,
"formatted_total_price": "$10.00",
"formatted_subtotal": "$8.00",
"currency_symbol": "$"
},
"relationships": {
"site": {
"data": {
"id": "2",
"type": "sites"
}
},
"customer": {
"data": {
"id": "0",
"type": "customers"
}
},
"order_items": {
"data": [
{
"id": "0",
"type": "order_items"
}
]
},
"payment_transactions": {
"data": []
}
}
},
{
"id": "0",
"type": "order_items",
"attributes": {
"quantity": 1,
"currency_code": "USD",
"item_type": "Offer",
"item_id": 0,
"title": "Kajabi Test Offer",
"fulfilled_at": null,
"created_at": "2025-07-31T17:13:05.229Z",
"total_price_in_cents": 1000,
"subtotal_in_cents": 800,
"sales_tax_amount_in_cents": 200,
"discount_amount_in_cents": 0,
"formatted_total_price": "$10.00",
"formatted_subtotal": "$8.00",
"currency_symbol": "$"
},
"relationships": {
"order": {
"data": {
"id": "0",
"type": "orders"
}
}
}
}
]
```
## Actual Payloads
The actual payloads are sent to the `target_url` as a POST request with the following JSON body:
```json
{
"id": "hash_id",
"event": "order_created",
"payload": [],
}
```
The `payload` array is the sample response above
# Payment succeeded sample
Source: https://help.kajabi.com/api-reference/webhooks/payment-succeeded-sample
/openapi.yaml get /v1/hooks/payment_succeeded_sample
Returns sample webhook payload for the `payment_succeeded` event:
```
[
{
"id": "0",
"type": "transactions",
"attributes": {
"action": "charge",
"state": "succeeded",
"payment_type": "charge",
"amount_in_cents": 1000,
"sales_tax_in_cents": 0,
"currency": "USD",
"currency_symbol": "$",
"formatted_amount": "$10.00",
"created_at": "2025-07-31T17:10:19.285Z"
},
"relationships": {
"customer": {
"data": {
"id": "0",
"type": "customers"
}
},
"offer": {
"data": null
}
}
},
{
"id": "0",
"type": "customers",
"attributes": {
"name": "John Doe",
"email": "john.doe@example.com",
"avatar": null,
"external_user_id": null,
"public_bio": null,
"public_location": null,
"public_website": null,
"socials": null,
"net_revenue": "0.0",
"sign_in_count": 0,
"last_request_at": null,
"bounced_at": null,
"created_at": "2025-07-31T17:10:19.243Z",
"updated_at": "2025-07-31T17:10:19.243Z"
},
"links": {
"contact": "https://www.kajabi.test/api/v1/contacts/0"
},
"relationships": {
"site": {
"data": {
"id": "2",
"type": "sites"
}
},
"contact": {
"data": {
"id": "0",
"type": "contacts"
}
},
"offers": {
"data": [],
"links": {
"self": "https://www.kajabi.test/api/v1/customers/0/relationships/offers"
}
},
"products": {
"data": []
}
}
}
]
```
## Actual Payloads
The actual payloads are sent to the `target_url` as a POST request with the following JSON body:
```json
{
"id": "hash_id",
"event": "payment_succeeded",
"payload": [],
}
```
The `payload` array is the sample response above
# Purchase sample
Source: https://help.kajabi.com/api-reference/webhooks/purchase-sample
/openapi.yaml get /v1/hooks/purchase_sample
Returns sample webhook payload for the `purchase` event:
```
[
{
"id": "0",
"type": "purchases",
"attributes": {
"amount_in_cents": 1000,
"payment_type": "single",
"multipay_payments_made": null,
"opt_in": false,
"raw_extra_contact_information": {},
"currency": "USD",
"effective_start_at": null,
"cardholder_name": null,
"billing_address_zip": null,
"deactivated_at": null,
"deactivation_reason": null,
"coupon_code": null,
"source": null,
"referrer": null,
"quantity": 1,
"created_at": "2025-07-31T16:59:27.580Z",
"updated_at": "2025-07-31T16:59:27.580Z"
},
"relationships": {
"customer": {
"data": {
"id": "0",
"type": "customers"
}
},
"offer": {
"data": {
"id": "0",
"type": "offers"
}
},
"products": {
"data": []
}
}
},
{
"id": "0",
"type": "offers",
"attributes": {
"title": "Kajabi Test Offer",
"description": null,
"internal_title": null,
"currency": "USD",
"price_in_cents": 1000,
"payment_type": "single",
"token": "n8NtoHUZ",
"image_url": null,
"payment_method": "stripe_and_paypal",
"price_description": "$10.00 USD",
"checkout_url": "https://bill-heaton.kajabi-products.test/offers/n8NtoHUZ",
"recurring_offer": false,
"subscription": false,
"one_time": true,
"single": true,
"free": false
},
"relationships": {
"site": {
"data": {
"id": "2",
"type": "sites"
}
},
"products": {
"data": []
},
"forms": {
"data": []
}
}
},
{
"id": "0",
"type": "customers",
"attributes": {
"name": "John Doe",
"email": "john.doe@example.com",
"avatar": null,
"external_user_id": null,
"public_bio": null,
"public_location": null,
"public_website": null,
"socials": null,
"net_revenue": "0.0",
"sign_in_count": 0,
"last_request_at": null,
"bounced_at": null,
"created_at": "2025-07-31T16:59:27.552Z",
"updated_at": "2025-07-31T16:59:27.552Z"
},
"links": {
"contact": "https://www.kajabi.test/api/v1/contacts/0"
},
"relationships": {
"site": {
"data": {
"id": "2",
"type": "sites"
}
},
"contact": {
"data": {
"id": "0",
"type": "contacts"
}
},
"offers": {
"data": [],
"links": {
"self": "https://www.kajabi.test/api/v1/customers/0/relationships/offers"
}
},
"products": {
"data": []
}
}
}
]
```
## Actual Payloads
The actual payloads are sent to the `target_url` as a POST request with the following JSON body:
```json
{
"id": "hash_id",
"event": "purchase",
"payload": [],
}
```
The `payload` array is the sample response above
# Tag removed sample
Source: https://help.kajabi.com/api-reference/webhooks/tag-removed-sample
/openapi.yaml get /v1/hooks/tag_removed_sample
Returns sample webhook payload for the `tag_removed` event:
```
[
{
"id": "0",
"type": "contacts",
"attributes": {
"name": "Sample Recipient",
"email": "sample@example.com",
"address_line_1": "123 Kajabi Ln",
"address_line_2": "Kajabi Suite 4",
"address_city": "Kajabiwood",
"address_country": "United Sites of Kajabi",
"address_state": "Kajabifornia",
"address_zip": "99999",
"phone_number": "5555555555",
"business_number": null,
"subscribed": false,
"external_user_id": null,
"created_at": "2025-07-31T16:51:04.010Z",
"updated_at": "2025-07-31T16:51:04.010Z"
},
"links": {
"customer": ""
},
"relationships": {
"site": {
"data": {
"id": "2",
"type": "sites"
}
}
}
},
{
"id": "0",
"type": "contact_tags",
"attributes": {
"name": "Tag"
},
"relationships": {
"site": {
"data": {
"id": "2",
"type": "sites"
}
}
}
}
]
```
## Actual Payloads
The actual payloads are sent to the `target_url` as a POST request with the following JSON body:
```json
{
"id": "hash_id",
"event": "tag_removed",
"payload": [],
}
```
The `payload` array is the sample response above