How the Booking Widget Lets Customers Choose a Lesson, Instructor, and Time Without Calling the School

Published September 22, 2026

Headshot of athletic woman, store owner or instructor

How the Booking Widget Lets Customers Choose a Lesson, Instructor, and Time Without Calling the School

A customer lands on your website at 10 p.m. on a Tuesday. They want to book a fishing charter for Saturday morning. Your phone line closed six hours ago, and you won't see a voicemail until tomorrow afternoon. By then, they've already called three other captains.

That window between when someone decides to book and when your business is open to answer the phone is where most inquiries disappear. The booking widget is the fix: it puts your full charter catalog, your real-time availability, and checkout directly on your website, so a customer can book the exact slot they want without waiting for someone to pick up.

This article walks through the public booking widget in a live fishing demo. You'll see how a customer picks a charter type, chooses a date, sees which times have open spots and which guides are available, and books without creating a Seshana account. Then we'll explain how the widget checks instructor availability, lesson capacity, and advance booking rules behind the scenes so the customer only sees slots your school can actually fill.

The widget is the public-facing product experience. If you're evaluating whether Seshana replaces your current booking form or phone system, this is how your customers will interact with it.

Table of Contents

  1. What the Booking Widget Actually Does

  2. Walk Through a Fishing Charter Booking

  3. How the Widget Checks Availability in Real Time

  4. Why Customers Don't Need to Create an Account

  5. What Happens After the Customer Books

  6. Where the Widget Lives and How to Add It to Your Site

  7. When to Use the Widget vs. the Public Calendar

  8. FAQ


Headshot of athletic woman, store owner or instructor

What the Booking Widget Actually Does

The booking widget is an embeddable booking page that lives on your school's website. A customer sees your lesson catalog, picks a date and time, chooses an instructor if the lesson type has multiple eligible instructors assigned to it, and either pays immediately or submits a request depending on how you've configured payments.

Here's what the widget handles automatically:

  • Lesson catalog — every lesson type you've created shows up with its name, duration, price, and capacity

  • Real-time availability — the widget only shows time slots where you have an available instructor, open equipment, and capacity

  • Instructor selection — if the lesson type has multiple eligible instructors assigned to it, the customer sees which guides are available for the slot they picked

  • Party size — the customer enters how many people are booking, and the widget calculates the total price

  • Customer details — name, email, phone, and any lesson-specific fields you've added like experience level or weight for gear sizing

  • Payment or request — depending on your settings, the customer either pays now with Stripe, gets redirected to Shopify, or submits a booking request for you to confirm and charge later

  • Confirmation — the customer gets an email confirmation immediately, and the lesson appears on your schedule

The widget is not a contact form. It's a full booking system that creates a scheduled lesson, collects customer information, optionally processes payment, and starts the waiver and reminder workflow if you've turned those on.

What it doesn't do: require the customer to create an account, log in, or remember a password. That's intentional. Every extra step between a customer and a confirmed booking is a place they can drop off.


Walk Through a Fishing Charter Booking

Let's walk through a real booking in the live fishing demo. You can follow along at the fishing widget demo, which provisions a brand-new sandbox school every time someone clicks it.

Step one: the customer sees the catalog. The widget opens on a list of charter types: inshore fishing, nearshore fishing, and offshore fishing. Each one shows the duration, price, and a short description. The customer picks inshore fishing, a four-hour trip for $400.

Step two: the customer picks a date. A calendar opens. Days with no availability are grayed out. Days with open slots are clickable. The customer picks Saturday.

Step three: the customer sees available times. The widget shows every time slot on Saturday where an inshore charter can run: 6 a.m., 10 a.m., and 2 p.m. Each slot shows how many spots are left. The 6 a.m. trip has two spots open out of four. The customer picks 6 a.m.

Step four: the customer chooses a guide. The widget lists which captains are available at 6 a.m. on Saturday. In this demo, two captains are free: Captain Sarah and Captain Mike. Each one has a short bio. The customer picks Captain Sarah.

Step five: the customer enters their party size. The widget asks how many people are fishing. The customer enters two. The price updates to show the total: $400 base plus $100 for the second angler, $500 total.

Step six: the customer fills in their details. Name, email, phone number. The form also asks their fishing experience and any dietary restrictions for the cooler. These fields come from the lesson type setup, not a fixed form.

Step seven: payment or request. If this school has Stripe connected and payments turned on, the customer pays $500 now and the booking is confirmed immediately. If the school is using pay-later mode, the customer submits the request and gets an email saying the school will confirm and send a payment link.

Step eight: confirmation. The customer gets an email with the booking details, the meeting location, what to bring, and Captain Sarah's contact info. The lesson appears on the school's schedule. If the school has waiver auto-send turned on, the customer also gets a link to sign the liability waiver before Saturday.

That entire flow happens without the customer creating a Seshana account, logging in, or calling the school. The school's admin sees the new booking on the schedule with the customer's information, payment status, and assigned captain all on one record.


Man operating sailboat

How the Widget Checks Availability in Real Time

The widget is not showing the customer a static calendar someone updated by hand. Every time the customer picks a date, the widget runs a live availability check against the school's instructor schedules, existing bookings, lesson type rules, and location capacity.

Here's what the widget checks before it shows a time slot:

Instructor availability. Does at least one instructor have that time marked as available in their weekly schedule? Are they already assigned to another lesson at that time? Did they request time off on that date? If the lesson type requires a specific certification, does the instructor hold a current credential? The widget only shows slots where at least one qualified instructor is free.

Lesson capacity. How many people are already booked for that time? If this is a group lesson with a maximum of six students and four people are already signed up, the widget shows two spots remaining. If it's a private lesson with a max of two and both slots are full, that time disappears from the list.

Location availability. If the school has multiple teaching locations and this lesson type happens at a specific spot, is that location already booked for another lesson at the same time? The widget won't offer a slot if the location is tied up.

Equipment availability. If the school has equipment tracking turned on and this lesson type requires specific gear, is that gear available or already assigned to another lesson? A kite school with three teaching kites can't book four simultaneous beginner lessons even if four instructors are free.

Advance booking rules. The school sets how far in advance someone can book. If the rule is 24 hours minimum and 60 days maximum, the widget grays out tomorrow and anything past two months. If the school requires a buffer between lessons, the widget spaces the slots accordingly instead of offering back-to-back bookings.

All of that happens in a few hundred milliseconds. The customer just sees a calendar with available days and a list of open time slots. Behind the scenes, the widget is checking five constraints at once and only surfacing the slots where everything lines up.

This is why the booking widget works better than a generic appointment scheduler. A salon only needs to check if a stylist is free. An outdoor lesson school needs to check if the instructor is free, qualified for this specific lesson, not already teaching something else, and whether the gear, location, and capacity all line up at the same time. The widget does that math so the customer never picks a slot the school can't actually fill.


Why Customers Don't Need to Create an Account

Most booking systems make the customer create an account, pick a username, set a password, verify their email, and log in before they can book anything. Seshana does not.

The booking widget collects the customer's name, email, and phone number as part of the booking form. That's enough to create a lesson, send confirmations, collect waivers, process payment, and keep a history of what they've booked. The customer never has to remember a password or log back in to see their booking.

This is intentional. Every extra step between landing on the page and completing the booking is a place the customer can drop off. Requiring an account adds three more friction points: creating the account, verifying the email, and logging in. If the customer is booking at 10 p.m. and can't remember which email they used last time or whether they already have an account, they close the tab and call someone else tomorrow.

Outdoor lesson schools told us account creation was killing bookings. A customer books once or twice a season, often from their phone, often in a hurry. Forcing them to register, verify, and log in for a single transaction was costing schools conversions.

The widget treats booking like buying a concert ticket: you enter your email, you get a confirmation, you show up. If the customer books again next month, the school already has their information. If they need to reschedule or cancel, the confirmation email includes a link to manage the booking without logging in.

The trade-off: the customer doesn't have a self-service dashboard where they can see all their bookings across multiple schools. That's a feature request we hear occasionally, but so far the conversion lift from removing account friction has been worth it. Schools get more bookings, customers get a faster checkout, and the school's admin still has a complete customer record with booking history and notes.


What Happens After the Customer Books

Once the customer submits the booking, here's what happens automatically:

The lesson appears on the schedule. The school's admin sees the new booking on the calendar at the date and time the customer picked, with the assigned instructor, location, customer name, party size, and payment status all on one record. If the booking is in pay-later mode, the lesson is marked as needing payment. If the customer paid with Stripe, the payment is recorded and the lesson is confirmed.

The customer gets a confirmation email. The email includes the lesson details, the instructor's name, the meeting location with a map link, what to bring, and the cancellation policy. The school can customize this email with their branding and any sport-specific instructions.

The instructor is notified. If the school has instructor notifications turned on, the assigned guide gets an email or in-app notification that they've been added to a new lesson. The notification includes the customer's name, the lesson time, and any notes the customer entered like experience level or gear sizing.

Waivers are sent if enabled. If the school has waiver auto-send turned on, the customer gets a separate email with a link to sign the liability waiver. The school can see waiver status on the lesson record and send reminders if it's not signed by a certain date.

Reminders go out before the lesson. If the school has reminders enabled, the customer gets an email or text a day or two before the lesson with the details and a link to cancel or reschedule if their plans change. This is where a lot of no-shows get prevented, the customer sees the reminder, realizes the weather looks bad or they have a conflict, and cancels in time for the school to fill the slot with someone else.

Payment is processed or held for later. If the customer paid with Stripe, the funds go into the school's Stripe account minus processing fees. If the school is using pay-later mode, the admin can send a payment link from the lesson record or mark the lesson as paid in cash when the customer arrives.

All of that happens without the school admin doing anything. The booking workflow is automatic once the school has configured their lesson types, instructor availability, and notification settings. The admin's job is to show up and teach the lesson, not to manually confirm every booking or send individual reminder emails.

For a detailed look at what happens after the lesson itself, see What Happens After an Outdoor Lesson: Tips, Reviews, and Follow-Up, which covers session notes, tip requests, review emails, and how those tie back into the customer record.


Kiteboarding instructor teaching a lesson on the beach

Where the Widget Lives and How to Add It to Your Site

The booking widget is a snippet of code you add to your school's website. It works on any platform that lets you embed WordPress, Squarespace, Wix, Shopify, or a custom site. You paste the code into your site once, and the widget loads whenever someone visits that page.

The widget can appear three ways:

Embedded on a page. The widget renders inline as part of your existing page layout, usually on a dedicated booking or lessons page. The customer stays on your site the entire time. This is the most common setup.

Popup triggered by a button. You add a button to your site that says Book Now or Schedule a Lesson, and the widget opens in a modal overlay when the customer clicks it. This works well if you want booking available from multiple pages without repeating the full embed.

Standalone booking page. Seshana gives you a direct link to the widget that you can use in emails, social media, or anywhere else you need a booking URL. The customer lands on a Seshana-hosted page with your branding, books, and gets redirected back to your site after confirmation.

The code snippet is under Settings → Integrations → Booking Widget in your admin dashboard. You copy it, paste it into your site's HTML, and the widget goes live. No developer required unless your site is locked down and you need help editing the code.

The widget automatically matches your school's branding if you've uploaded a logo in Settings → Notifications. The colors, fonts, and layout are clean and mobile-friendly by default. If you want deeper customization, that's a conversation with support, the widget is designed to work out of the box without CSS tweaks.


When to Use the Widget vs. the Public Calendar

Seshana has two ways for customers to book from your website: the booking widget and the public calendar. They serve different use cases.

Use the booking widget when: You want the customer to pick a date and time that works for them from all available slots. This is the right tool for private lessons, charters, or any service where the customer is booking their own dedicated time. The widget shows availability, the customer picks, and they're done.

Use the public calendar when: You're running scheduled classes or group sessions at fixed times, and you want customers to see the full calendar of what's coming up and join an existing session. The calendar shows all published classes with their dates, times, remaining capacity, and descriptions. The customer clicks into a class, sees the details, and enrolls if there's space. This is the right tool for weekly group lessons, camps, or any recurring class where you're filling seats in a session you've already scheduled.

Example: A kite school runs private lessons and weekly group clinics. The private lessons go through the booking widget, the customer picks a date and time that works for them, and the school assigns an instructor. The group clinics go on the public calendar, the school schedules Saturday morning clinics for the next two months, publishes them, and customers sign up for whichever Saturday works for them.

Both tools use the same lesson types, instructor availability, and capacity rules. The difference is whether the customer is creating their own time slot or joining one you've already scheduled.

You can use both on the same site. Embed the widget on your private lessons page, link to the public calendar from your group classes page, and customers self-select into the right booking flow based on what they want.


FAQ

Can a customer book without paying upfront? Yes, if you've configured the widget for pay-later mode. The customer submits a booking request, you confirm it, and you send them a payment link or collect payment in person. You can also set the widget to require full payment or a deposit upfront using Stripe. The payment setting is under your booking widget configuration.

What happens if a customer picks a time that fills up while they're filling out the form? The widget checks availability again when they submit the booking. If the slot filled in the meantime, the customer gets an error message and can pick a different time. This is rare but possible during peak booking periods.

Can I hide certain instructors from the booking widget? Yes. When you create or edit a lesson type, you can specify which instructors are eligible to teach it. Only those instructors appear in the widget for that lesson type. If you want an instructor to stay off the public booking page entirely, remove them from all lesson types' instructor assignments.

Does the customer see instructor certifications or qualifications in the widget? Not by default. The widget shows the instructor's name and a short bio if you've added one to their profile. Certification requirements are enforced behind the scenes, the widget only offers instructors who meet the qualifications, but the customer doesn't see a list of credentials unless you've included that in the instructor bio.

Can I set different prices for different instructors? No. Pricing is set per lesson type, not per instructor. If you want premium pricing for a specific guide, create a separate lesson type for their sessions and set a higher price on that lesson type.

What if I need to limit how far in advance someone can book? You can set minimum and maximum advance booking windows under Settings → General. For example, require at least 24 hours notice and cap bookings at 60 days out. The widget automatically grays out dates outside that range. You can also set a buffer between lessons if you need travel time or gear-switch time between bookings.

Group Lesson, practicing surfing stance on beach

Keep reading

Keep exploring Seshana

This was written for people who run outdoor schools. When you want to look at the product, start here — a live demo, a walkthrough call, or checkout the rest of the site!

Try a live demo

Each card opens a sample school you can click through. Nothing to set up.