Embed your schedule on WordPress

Add a booking calendar to your website so visitors can see classes and book directly.

Prerequisites

  • Feature: Embed Widget must be enabled in Settings → Features.

• Role: Owner

1

Go to Settings → Widget

Open Settings from the sidebar, then "Website Widget."

2

Turn the widget on

Flip "Enable Widget" to on. Until this is enabled, the embedded widget won't appear on your site.

3

Choose your main schedule layout

Under "Main schedule layout," pick "Classic schedule" (the original day/week booking calendar) or "All-in-one" (one tabbed widget combining Schedule, Classes, Services, Team, Retreats, Reviews & Sign-up). This controls what your main schedule embed shows — switching it changes the layout on your live site without editing the snippet or involving your web partner. You can switch back any time; changes take a minute or two to appear.

4

Pick what to embed

Under "Embed Code," choose a tab: Schedule (the original day/week calendar), Planner (the newer magazine-style agenda with Day/Week/Month/List views and a filter), Staff (a directory of your instructors), Classes (a catalog of your class types), Events (the original retreat list), Retreats (the newer magazine-style retreat cards), Reviews (star-rated testimonials), Sign-up (a lead-capture form), or Passes. Each tab gives you the matching code snippet. Your existing embeds keep working unchanged until you swap in a different snippet.

5

Copy the code

Click "Copy to clipboard." The snippet is a single <script> line — no account or login is needed by whoever pastes it (e.g. a website contractor).

6

Add it to your website

Edit the page where you want the schedule, add a Custom HTML block, and paste the code. Works in WordPress, Wix, Squarespace, or any custom HTML.

7

Customize (optional)

Pick a preset brand color or enter your exact HEX in the Custom color field (light/dark shades are computed automatically). Add Allowed Domains to restrict which sites can embed — leave it empty to allow any site.

Tips
  • The Planner style offers four views your visitors can switch between — Day, Week, Month, and List — plus a Filter to narrow by service or staff. It opens on the List (agenda) view, which groups classes by day with a Book button on each, and renders on its own clean, brand-tinted panel so it looks intentional on any background. The original Schedule style is unchanged and still available.
  • The Planner shows each class's photo and a "Read me" link when you've added an image or description to its class template (Classes → edit a class). No photo or description? The row simply stays clean.
  • Retreats appear on the calendar too: the Planner now shows your published retreats and workshops alongside classes in every view (List, Month, Day, Week). A multi-day retreat (e.g. "Jul 22–25") shows on every day it runs — not just the opening day — each with a "Retreat" badge and the full date range, so a visitor landing on any day of the retreat still sees it; clicking it opens the full retreat page to book — separate from the class Book pop-up. They only show if the Retreats feature is on, and the standalone Retreats tab still works exactly as before. (The original "Classic" schedule layout is unchanged and shows classes only.)
  • The Staff widget is a public directory of your instructors — photo, specialties, bio, and an optional website link. Only instructors with a photo, bio, or specialties appear, so fill out a profile (Instructors → edit) to feature someone.
  • Hide someone from the Staff widget: each instructor has a "Show on your website" checkbox (Instructors → edit, just under Website). It's on by default; turn it off for retreat- or event-only staff you don't want listed publicly, and they drop off your site right away even if their profile is filled out. This is separate from "Offers bookable services" below it, which controls the Services tab — the two don't affect each other.
  • The Retreats widget shows your published retreats and workshops as large magazine-style cards — cover photo (or an elegant date cover when there's no photo), dates, location, room options with early-bird pricing, and a Reserve button that opens the full retreat page. It reads from the same events you create under Events.
  • The Reviews widget shows star-rated testimonials with your average rating. Manage them in the "Reviews" section on this page: visitor-submitted reviews arrive as Pending (approve the ones you want public), and you can add your own clients' testimonials anytime. Only approved reviews appear on your website. Each review shows its submitted date, and testimonials you add yourself carry an "Added by you" tag.
  • Set the right date on testimonials you add: when adding one, pick the "Submitted on" date (defaults to today) so it reflects when the client actually gave the review. For one already in the list, click "Edit date" next to "Submitted …" to change it. The date can't be in the future, and only testimonials you added can be re-dated — visitor-submitted reviews keep their real submission date.
  • New-review alerts: when a visitor submits a review, the owner (and managers with the Settings permission) get an email and a push notification so it can be approved quickly. Turn the email off anytime in Settings → Notifications → "New website reviews".
  • The Sign-up widget is a simple lead-capture form (name, email, optional phone, interest, and message). When a visitor submits it, you get an email with their details so you can follow up — a quick way to turn website visitors into prospects.
  • The Classes widget is a catalog of your class types — the name, length, default instructor, price, a description, and (when the class is on the calendar) its next session date and the weekdays it runs. It reads from your active, public class templates (Classes → edit a class), so it's a "menu" of what you offer. Pricing always shows: a class with a fixed drop-in price shows that amount (or "From $X" for sliding scale), while a class sold through a membership shows "With a pass". Each scheduled class has a "See schedule & book" button — in the All-in-one widget it jumps to the Schedule tab pre-filtered to that class so the visitor can pick a date and book; on a standalone Classes embed it links to your schedule. A class with nothing on the calendar shows "Not currently scheduled" instead of a book button.
  • The Services tab lets clients request a one-on-one appointment with a practitioner right from your website (it shows when the Appointments feature is on). It opens on the service list — a client who knows they want "a massage" picks the service first and then sees who offers it; a "Browse by" toggle switches to picking the practitioner first instead. Anyone can browse it — a visitor sees each practitioner's photo, bio, specialties, services, prices AND the available times without signing in first. Sign-in is asked for only on the last step, once they have picked a time, so the appointment is tied to a member and you can charge the right card; the time they chose is held while they create the account. Clicking a practitioner opens their full profile first — photo, what they do, their full bio (no trimming), every service with its price, and a preview of their next open times — with a "Book with …" button that starts the booking steps from there, so a client can read about the person before being asked to pick anything. The profile (and the cards) also show Virtual / In-Studio / Mobile Service badges when you've said where that practitioner sees clients — tick the options under Instructors → edit → "Service locations" (practitioners can set their own under My Profile). The badges are purely informational: which services collect an address keeps working exactly as configured per service. For a travel-visit service a signed-out visitor is shown first-visit times (the longer block that includes the consultation, and daytime only) — after they sign in, a returning client simply sees more times, never fewer. The service cards trim long descriptions to two lines to keep the list scannable, but the full description is repeated in full above the times on the next step, so nothing you write is unreadable. The browser's Back button steps back through the wizard rather than leaving your website, so a client who backs up doesn't lose what they picked. A "Browse by" toggle at the top switches the first two steps around: "Practitioner" is the default (pick a person, then what they do), and "Service" opens on "What are you looking for?" — every service you offer, with how many practitioners do it and the price (or "From $X" when they charge differently) — then shows only the practitioners who offer the one they picked. A service only one person performs skips the practitioner step entirely. Nothing about this changes what you set up; it is the same catalog read the other way round. Only practitioners you've marked as offering services appear here — set this per person under Instructors → edit → "Offers bookable services" (a practitioner also needs at least one active service linked to them). A client picks a practitioner, a service, and a time, then sends a request; for services you've set to require approval the practitioner reviews and confirms it (the member gets an email at each step) — it is a request, not an instant booking. For a paid service the member must save a card before requesting; nothing is charged at request time — the card is charged after the appointment is completed, at the final amount the practitioner sets. (On studios that book with credits, a credit is the payment and no card is needed, same as classes.) The Services tab also shows the member their service-package balances and lets them buy a multi-session package; buying one opens Stripe Checkout in the full window and returns them to your site, and the sessions are added to their balance to redeem on future appointments.
  • The All-in-one widget adds a "Mobile Service" tab when at least one bookable practitioner has the Mobile Service location ticked (Instructors → edit → "Service locations"). It is the same Services booking flow, pre-filtered to the practitioners who travel to clients, with a line telling the visitor the session happens at their home. There is no switch to configure — the tab appears and disappears with the service locations you tick. You can also link straight to it: add ?tab=mobile to your booking link (a ready-made copy button appears on Settings → Website Widget → "Your booking link" whenever the tab exists) — handy as the link behind a dedicated mobile-massage site or a "we come to you" button.
  • The widget works with any website builder — WordPress, Wix, Squarespace, or custom HTML.
  • The "Main schedule layout" toggle switches your existing schedule embed between the Classic calendar and the All-in-one tabbed widget — Klasly handles it server-side, so the snippet on your website stays exactly the same and your web partner does not need to do anything.
  • Change your brand color any time — every embed updates automatically without editing the snippet.
  • Whoever adds the snippet to your site (like a web designer) does not need a Klasly account — just send them the copied code.
  • Pass purchases from the widget email the buyer a payment receipt automatically (guests instead receive an account-setup email that doubles as their purchase confirmation).
  • If your studio requires a waiver, a member who hasn't signed yet sees a "Sign the waiver" link when they try to book from the widget — it opens their member page on Klasly where the waiver is presented, and they can book once it's signed.
  • Members you imported earlier can simply sign in (or create an account with the same email) from the widget — Klasly connects them to their existing member record, so their passes and history carry over instead of creating a duplicate.
  • First-time visitors can create an account without leaving the widget: when they tap Book while signed out, the sign-in dialog has a "Create an account" option right there (name, email, password). After they create it, the class they were booking is completed automatically — they no longer get bounced to a separate page and lose their spot.
  • Check-in QR (print & post): this page has a "Check-in QR" card with one printable code for your reception — it is the studio's single front-desk QR, and its real job is a one-time account activation for the members you imported. A member scans it once, enters their email, and gets a 6-digit code by email; entering the code activates their imported record onto a real account — we email them a link to set a password afterwards — and if they happen to be there for a class today, the same scan checks them into it (using their pass or a credit, exactly like a front-desk drop-in). It only ever matches an existing member of your studio by email, and the code is single-use and expires in 10 minutes, so it's safe to leave posted. There's no need to scan it again after that first time — once their account is active, they book, use passes, and see their history straight from the app or your website, just like any member who signs in. One code covers the whole studio; print it once and reuse it for whoever hasn't activated yet.
  • Brand-new visitors who aren't members yet don't need a front-desk QR — they sign up through your own website, where your booking widget is embedded. (And for an existing member who hasn't logged in yet, you can also send the per-member "Set up account" QR or link from the Members page or class roster, which connects them to their existing record — also a one-time activation, not a recurring check-in.)