Kadens logoKadens logoKadens
  • Discover
  • Pricing
Log inGet Started
Kadens logoKadens logoKadens
Kadens logoKadens logoKadens

Teaching

  1. Getting started
  2. Academy
  3. Certificates
  4. Learning
  5. Courses

Money

  1. Subscriptions
  2. Finance
  3. Events

Scheduling

  1. Studio
  2. Events
  3. Work

People

  1. Community
  2. Mailing
  3. Forms
  4. Applications
  5. Communities

Platform

  1. Site
  2. Discover
  3. Account

Developers

  1. Overview
  2. API keys and scopes
  3. Website widgets
  4. Webhooks
  5. AI assistants (MCP)
  6. REST API
Can't find what you're looking for?Search again··Talk to us
Kadens logoKadens logoKadens

Your success is our mission. Kadens helps movement professionals get discovered, run operations smoothly, and scale with confidence. Everything in one place.

Product

  • Discover
  • Courses
  • Events
  • Communities
  • Mentoring

For businesses

  • Kadens for teaching
  • Kadens for events
  • Kadens for forms
  • Kadens for certificates
  • Build your site
  • Pricing
  • Book a live demo

Resources

  • Help center
  • What's new
  • Developers
  • Support

Company

  • Contact
  • Instagram
  • Privacy Policy
  • Terms of Service
  • Cookie Policy
Help centerContact
Browse the docs · Website widgets

Teaching

  1. Getting started
  2. Academy
  3. Certificates
  4. Learning
  5. Courses

Money

  1. Subscriptions
  2. Finance
  3. Events

Scheduling

  1. Studio
  2. Events
  3. Work

People

  1. Community
  2. Mailing
  3. Forms
  4. Applications
  5. Communities

Platform

  1. Site
  2. Discover
  3. Account

Developers

  1. Overview
  2. API keys and scopes
  3. Website widgets
  4. Webhooks
  5. AI assistants (MCP)
  6. REST API
  1. Help center
  2. Developers
  3. Website widgets

Website widgets

A widget shows your Kadens events, tickets or people on your own website, and visitors can buy without leaving it. You need a Kadens account and access to edit your website. Create a widget, allow your website, then copy and paste one short code.

·9 min
On this page
  1. What widgets are
  2. Quickstart
  3. Allowed websites
  4. Embed code
  5. Guides by site builder
  6. Customize the look
  7. JavaScript events
  8. Checkout and sign in
  9. Performance and privacy
  10. Troubleshooting
  11. What now?

What widgets are

A widget is a piece of your Kadens page that lives inside your website. There are three kinds:

WidgetDescription
Events and ticketsYour upcoming events, with ticket checkout inside your site.
One eventOne event's page: dates, venue, description and tickets, with Buy.
PeopleProfile cards of the people you choose, linked to their public profiles.
CoursesYour courses with their prices, each linked to its page on your site.
Plans and pricingYour membership plans side by side, each linked to its sign up page.
Class scheduleYour upcoming classes as an agenda, always up to date.
Buy buttonOne button for one event, course or plan, styled to match your page.
ProgrammeThe full timetable of an edition, by time, room or teacher.
Volunteer teamsThe teams of an event taking volunteers, with a button to apply on Kadens.
FormA card that opens one of your forms on Kadens.
NewsletterA signup form that adds people to one of your groups.

The code you paste only names your widget. When you change the widget in Kadens (what it shows, its layout or its colors), every website that uses it updates by itself. You never paste the code again.

Quickstart

Four steps, no coding needed.

  1. 1

    Create a widget

    In Kadens, open Integrations, then Widgets, and create one. Choose what it shows and how it looks.

  2. 2

    Allow your website

    Add the address of your website, like https://www.example.com. A widget only appears on websites you allow.

  3. 3

    Copy the code

    Open your widget and go to the Install tab. Copy the code shown there. It already carries your username and your widget.

  4. 4

    Paste it on your website

    Paste the code where you want the widget to appear, then publish your website. Find your site builder in the guides below for the exact steps.

Start in your dashboard
Create your first widget and follow the Install tab, which checks that it is live on your website.
Open widgets

Allowed websites

A widget only loads on the websites you add to your list.

This protects your checkout: nobody can put your widget on a page you do not control. Your list is sent to browsers as a security rule (frame-ancestors), so a website that is not on it shows nothing where the widget should be.

Kadens pages and your own custom domains are always allowed, so you do not need to add them.
AddressResult
https://www.example.comAllowed. One website. Any path or trailing slash you type is removed.
https://*.example.comAllowed. Every subdomain one level deep, like shop.example.com. It does not include example.com itself or deeper levels like a.b.example.com: add those as their own entries.
*Not allowed. It would let any website on the internet show your widget.
https://*.comNot allowed. A wildcard needs a real domain after it.
http://www.example.comNot allowed. Websites must use https.
http://localhost:3000Allowed for testing on your own computer. http works only for localhost.
https://www.example.com/ticketsSaved as https://www.example.com. The whole website is allowed, not one page. An address with ? or # is refused.
https://203.0.113.7Not allowed. Use your website's domain name.
Manage your websites
See every website you allowed and every website a widget was seen on.
Open websites

Embed code

One script and one element. The Install tab builds this code for you.

For any site that accepts code. Adjusts its height by itself.

In the samples on this page, your-username and your-widget-id stand for your own values. Copy your real code from the Install tab.

Element attributes

AttributeTypeDescription
handleRequiredstringYour Kadens username.
widgetRequiredstringThe id of the widget to show.
localestringThe language of the widget. When it is missing, the widget uses the lang of your page.
color-schemelight | dark | autoForces light or dark colors for this placement. Leave it out to use the widget's own setting.
titlestringThe accessible name of the widget frame, read by screen readers. Defaults to Kadens widget.
data-layerbooleanAlso pushes every widget event to window.dataLayer, for Google Tag Manager.
meta-pixelbooleanSends a Purchase event to your Meta Pixel when someone completes a purchase. Your page must already load the pixel.

If your site builder removes scripts

For builders that strip scripts. Fixed height.

  • Works where scripts are blocked, like some free plans.
  • Fixed height of 800 px. Adjust it if your events need more room.
  • Checkout opens in a new tab.

Guides by site builder

Pick your site builder. Each guide says what you need first, where the code goes and what to check.

Any website

Before you start

Editor access

You need access to edit your site's pages, or someone who has it and can paste the code for you.

Where it goes

  1. Your site editor
  2. Add element
  3. HTML or Custom code

Per page: paste the code on each page where the widget should appear. If your site has a place for code on every page (often called header or footer code), you can put the first line there once and paste only the second line on each page.

Step by step

  1. 1
    Open the page where the widget should appear in your site's editor.
  2. 2
    Add an element for HTML or custom code where the widget should go. It is often called HTML, Embed or Custom code.
  3. 3
    Paste the whole code into it.
  4. 4
    Save the page and publish it.

Check it

Open the published page in a new browser tab. The widget appears where you pasted the code, usually within a few seconds.

If it doesn't show

  • Your editor removed the code when you saved. Some builders strip scripts: use the iframe version in step 2.
  • The page is not published yet, or your browser shows an old copy. Publish again and reload the page.
  • The site is not allowed in step 1. Add the exact address visitors use, with www if your site has it.
WordPress

Before you start

Check your plan

Self-hosted WordPress (WordPress.org) works on any setup. On WordPress.com you need a paid plan with hosting features: the Free plan removes the script and the widget will not show.

Where it goes

  1. Pages
  2. Edit
  3. +
  4. Custom HTML

Per page: add a Custom HTML block to each page or post where the widget should appear. WordPress has no built-in place for code on every page, so paste the whole code in each block.

Step by step

  1. 1
    In your WordPress dashboard, go to Pages (or Posts) and click Edit on the page where the widget should appear.
  2. 2
    Click the + block inserter where the widget should go, search for Custom HTML and choose it.
  3. 3
    Click inside the Custom HTML block and paste the whole code.
  4. 4
    Click Update (or Publish for a new page).

Check it

Open the page on your live site, not in the editor. The widget shows where you added the block.

If it doesn't show

  • The script was removed when you saved. On WordPress.com this happens on plans without hosting features: upgrade, or use the iframe version in step 2.
  • The code shows as text on the page: it went into a Paragraph or Code block. Delete it and use a Custom HTML block.
  • A caching plugin still serves the old page. Clear its cache and reload.
Official WordPress guide
Wix

Before you start

Paid plan needed

Custom Code needs a Premium plan and a connected domain. Without both, the widget will not show on your site.

Where it goes

  1. Settings
  2. Development & integrations
  3. Custom Code

On the pages you choose. Custom Code runs in the page itself, on your own domain, and the widget appears at the end of each chosen page.

Step by step

  1. 1
    In your site's dashboard, go to Settings and open Custom Code under Development & integrations.
  2. 2
    Start adding a new piece of custom code.
  3. 3
    Paste the whole code into the code box.
  4. 4
    Choose the pages where the widget should appear.
  5. 5
    Place the code in Body - end and save.

Check it

Open the page on your own domain, not the Editor preview. The widget shows at the end of the page.

If it doesn't show

  • Embed HTML (Add Elements › Embed Code) will not work. Wix runs that code in a sandboxed box served from a Wix address, not from your domain, so the widget sees a Wix website instead of the one you allowed and stays hidden. Use Custom Code as described above.
  • The site has no Premium plan or no connected domain. Custom Code needs both.
  • Your connected domain is not allowed in step 1. Add it, then reload the page.
Official Wix guide
Shopify

Before you start

Editor access

You need to be the store owner or staff with permission to edit themes in Shopify admin.

Where it goes

  1. Online Store
  2. Themes
  3. Customize
  4. Add section
  5. Custom Liquid

Per template: a section added in the theme editor shows on every page that uses that template (for example, every product page). To show it on one page only, give that page its own template first.

Step by step

  1. 1
    In Shopify admin, go to Online Store, then Themes, and click Customize on your current theme.
  2. 2
    Use the page selector at the top of the editor to open the page where the widget should appear.
  3. 3
    In the sidebar, click Add section where the widget should go and choose Custom Liquid.
  4. 4
    Paste the whole code into the Liquid code field.
  5. 5
    Click Save.

Check it

Open your store in a new tab, not the theme editor, and go to that page. The widget shows where the section sits.

If it doesn't show

  • It shows on more pages than you wanted: the section is on a shared template. Move it to a template used only by that page.
  • You customized a theme that is not published. Check that you edited the live theme, or publish the one you edited.
  • The store's address is not allowed in step 1. Add your own domain, and your myshopify.com address too if visitors use it.
Official Shopify guide
Webflow

Before you start

Paid plan needed

Code Embed runs only on a paid Site plan or in a Core, Growth, Agency or Freelancer Workspace. On a free Starter site the widget will not show.

Where it goes

  1. Designer
  2. Add panel
  3. Code Embed

Per page: put a Code Embed where the widget should appear. For every page, paste it once in Site settings › Custom code › Footer code instead, which runs before the closing body tag and needs a paid Site plan; the widget then shows at the end of each page. To keep it inside your pages, put only the first line in Footer code and the second line in each Code Embed.

Step by step

  1. 1
    Open your site in the Webflow Designer and go to the page where the widget should appear.
  2. 2
    Open the Add panel and drag a Code Embed element to where the widget should go.
  3. 3
    Paste the whole code into the code editor that opens and click Save and close.
  4. 4
    Click Publish and publish to the domain you allowed in step 1.

Check it

Open the published site. In the Designer the Code Embed shows a placeholder instead of the widget; that is expected.

If it doesn't show

  • The site is on the free Starter plan, so the code does not run. Upgrade the Site plan.
  • You are looking at the webflow.io address but only allowed your own domain in step 1, or the other way round. Allow both, or check the one you allowed.
  • The live site did not change: Webflow only updates it when you publish again after saving.
Official Webflow guide
Squarespace

Before you start

Paid plan needed

Scripts run on the Core, Plus and Advanced plans. On the Personal plan the widget will not show, and the iframe version will not either.

Where it goes

  1. Edit
  2. Add Block
  3. Code

Per page: add a Code block to each page where the widget should appear. For every page, paste it once in the Code Injection panel in Settings instead.

Step by step

  1. 1
    Go to the page where the widget should appear and click Edit.
  2. 2
    Click Add Block where the widget should go and choose Code.
  3. 3
    Click the pencil icon on the block, keep Type set to HTML, turn Display Source off and paste the whole code.
  4. 4
    Click Save at the top of the editor to put the page live.

Check it

Open the page on your live site in a private window. In the editor the block shows a placeholder, because scripts do not run in the editor preview.

If it doesn't show

  • The site is on the Personal plan. Upgrade to Core or higher; the iframe version does not help here.
  • You are looking at the editor: scripts only run on the live page.
  • The code shows as text on the page: Display Source is on. Turn it off in the block and save.
Official Squarespace guide
Framer

Before you start

Editor access

You need edit access to the Framer project.

Where it goes

  1. Insert
  2. Embed
  3. HTML

Per page: put an Embed where the widget should appear, and paste the whole code in each Embed.

Step by step

  1. 1
    Open the project in Framer and go to the page where the widget should appear.
  2. 2
    Click Insert, search for Embed and drag it to where the widget should go.
  3. 3
    In the Embed settings on the right, choose HTML and paste the whole code.
  4. 4
    Make the Embed as wide as its section and tall enough for the whole widget.
  5. 5
    Click Publish.

Check it

Open your published site and go to the page. The widget appears where you placed the Embed.

If it doesn't show

  • The widget is cut off: the Embed is too small. Make it taller and publish again.
  • The Embed is set to URL instead of HTML. Switch it to HTML and paste the code again.
  • The live site did not change: click Publish again after editing.
Official Framer guide
Ghost

Before you start

Editor access

You need a Ghost staff account that can publish (Author or higher). Contributors can add the card but cannot publish it.

Where it goes

  1. + or /
  2. HTML

Per post or page: add an HTML card where the widget should appear. For every page, paste it once in Settings › Advanced › Code injection › Site footer instead; the widget then shows at the end of each page. To keep it inside your posts, put only the first line in Site footer and the second line in each HTML card.

Step by step

  1. 1
    Open the post or page in the Ghost editor.
  2. 2
    On an empty line where the widget should go, click the + button or type /, and choose HTML.
  3. 3
    Paste the whole code into the HTML card and click outside it.
  4. 4
    Click Update (or Publish for a new post).

Check it

Open the published post or page. The editor shows the card as code; the widget only appears on the published page.

If it doesn't show

  • You are looking at the editor: the widget shows on the published page only.
  • The post is still a draft or scheduled. Publish it, or wait for its time.
  • Your site's address is not allowed in step 1. Add your own domain, and your ghost.io address too if visitors use it.
Official Ghost guide
HubSpot

Before you start

Editor access

You need permission to edit and publish website pages or landing pages in HubSpot.

Where it goes

  1. Rich text
  2. Advanced
  3. Source code

Per page: paste the code in a Rich text module's Source code where the widget should appear, or in the page editor's Settings › Advanced › Footer HTML to show it at the end of that page. For every page on a domain, go to Settings › Content › Pages, choose the domain and paste it in Site footer HTML.

Step by step

  1. 1
    Open the page in the HubSpot page editor.
  2. 2
    Add a Rich text module where the widget should go and click inside it.
  3. 3
    In the toolbar, click Advanced and choose Source code.
  4. 4
    Paste the whole code where the widget should go and click Save changes.
  5. 5
    Click Publish (or Update for a live page).

Check it

Open the live page. If the widget is missing, open the module's Source code again: if the script line is gone, HubSpot removed it.

If it doesn't show

  • The script is gone after you saved the Rich text module. Paste the code in the page editor's Settings › Advanced › Footer HTML instead; the widget then shows at the end of the page.
  • The changes are saved but not live yet. Click Publish or Update.
  • The page's domain is not allowed in step 1. Add the domain the page is served on, including a hs-sites.com address if you use one.
Official HubSpot guide

Customize the look

Change these in the widget studio in Kadens. Your website updates by itself.

SettingValuesDescription
Themesite | kadens | minimal | bold | soft | darkA starting style. You can adjust any detail after picking one.
Color schemelight | dark | autoLight, dark, or auto to follow the visitor's device.
Colorsaccent, accentForeground, background, card, text, mutedText, borderYour own colors for buttons, backgrounds, cards, text and borders.
FontsYour site's font, the visitor's system font, or one from the Kadens font catalog. Fonts load inside the widget from Kadens, never from Google.
Text size12 to 22 pxThe base size of the widget's text.
Corner radius0 to 64 pxHow rounded cards and buttons are.

JavaScript events

The widget element sends DOM events to your page, so you can measure clicks and sales with your own analytics.

EventPayloadDescription
kadens:ready{ widget }The widget has loaded and is visible.
kadens:widget-view{ widget, ...props }A visitor action inside the widget. With data-layer, it is also pushed to window.dataLayer as kadens_widget_view.
kadens:item-click{ widget, ...props }A visitor action inside the widget. With data-layer, it is also pushed to window.dataLayer as kadens_item_click.
kadens:checkout-open{ widget, ...props }A visitor action inside the widget. With data-layer, it is also pushed to window.dataLayer as kadens_checkout_open.
kadens:checkout-complete{ widget, ...props }A visitor action inside the widget. With data-layer, it is also pushed to window.dataLayer as kadens_checkout_complete.
kadens:powered-by-click{ widget, ...props }A visitor action inside the widget. With data-layer, it is also pushed to window.dataLayer as kadens_powered_by_click.
kadens:checkout-completed{ widget, orderRef, kind, amountMinor, currency }A purchase finished. The amount is in minor units (cents for EUR or USD). With meta-pixel, it also sends a Purchase to your Meta Pixel.
Events never carry the buyer's name, email or any other personal data.

Example: Google Analytics 4

HTML
1
2
3
4
5
6
7
8
9
10
11
12
<kadens-widget handle="your-username" widget="your-widget-id" data-layer></kadens-widget>

<script>
  document.addEventListener('kadens:checkout-completed', (event) => {
    const { orderRef, amountMinor, currency } = event.detail;
    gtag('event', 'purchase', {
      transaction_id: orderRef,
      value: amountMinor / 100, // amounts arrive in minor units (cents)
      currency,
    });
  });
</script>

Example: Meta Pixel

Add the meta-pixel attribute. Nothing else is needed if your page already loads the pixel.

HTML
<kadens-widget handle="your-username" widget="your-widget-id" meta-pixel></kadens-widget>

Checkout and sign in

Payment happens inside the widget, in a secure window over your page. Buyers do not leave your website and you do not need your own payment setup.

Buyers can pay with just their email, or sign in to their Kadens account from the widget.

Checkout opens in a new tab.

Performance and privacy

  • The script is small (under 6 kB compressed), has no dependencies and loads without blocking your page.
  • The widget loads when it is about to scroll into view, and keeps its space while loading, so your page does not jump.
  • Fonts load from Kadens inside the widget only, never from Google, and add nothing to your page.
  • The widget does not rely on cookies on your website. A buyer's sign in is kept in memory only, never in storage.
  • Your page never receives personal data from the widget.

Troubleshooting

ProblemSolution
The widget area is blankYour website is almost always missing from your allowed websites. Add the exact address you see in the browser, including www if it has it.
The code disappears after savingSome site builders remove scripts. Use the iframe code instead: open Advanced in the Install tab and choose iframe.
Your builder will not accept codeSome site builders only accept custom code on a paid plan. Each builder's guide above says whether yours does.
You still see the old pagePublish your website again and reload the page. Some builders keep an old copy for a few minutes.
Check if a website is allowed
Run this with your own username, widget id and website address. It answers {"allowed":true} when the website is allowed.

What now?

Open in dashboard

Was this helpful?

Previous
API keys and scopes
Next
Webhooks

On this page

  1. What widgets are
  2. Quickstart
  3. Allowed websites
  4. Embed code
  5. Guides by site builder
  6. Customize the look
  7. JavaScript events
  8. Checkout and sign in
  9. Performance and privacy
  10. Troubleshooting
  11. What now?