A real booking platform,sitting next to your courses
Edushade ships a full meeting & appointment system — bookable plans with their own slug, weekly availability, Google Calendar and Zoom OAuth, group seats, request approvals and paid sessions. The invitee gets a branded, timezone-aware booking page; you get a single dashboard for every booking that lands.
Everything a serious booking flow needs, built in
Live Bookings runs on its own service inside Edushade — meeting plans, availability rules, slot generation, OAuth-based calendar/conference sync, lifecycle statuses, group capacity, request approvals and paid sessions all live on the same data model. One booking dashboard, one set of permissions, one source of truth.
Bookable Meeting Plans
A Calendly-style template per offering — title, public slug, duration, timezone, description, color, categories and an active flag. Each plan gets its own page at /bookings/{slug}.
Five Meeting Mediums
Google Meet, Zoom, In Person, Phone Call and No Location — with the right join link, address or phone number stored on every booking.
Google Calendar & Zoom OAuth
Connect Google Calendar and Zoom from the admin under Integrations. Bookings auto-create calendar events and Zoom meetings, with Meet rooms attached when you flip has_meet on.
1-on-1, Group, Request, Paid
One model covers 1:1 plans, group plans (group_meeting_spot ≥ 2), request-based approvals (is_request_based_booking) and paid plans (is_collect_payment_after_confirmation).
Buffers, Notice, Deadlines
Per-plan policy fields: buffer before/after, minimum notice, max per day, cancel and reschedule deadlines, plus a -1 sentinel for no deadline at all.
Eight Notification Templates
Booking confirmed/cancelled and meeting scheduled / reminder / started / rescheduled / cancelled / recording-available — each with email, SMS, in-app and push, ready to edit.
A meeting plan is a real, shareable product
Each meeting plan in Edushade has its own page at /bookings/{slug} on your branded site — title, description, color accent, category, register count and price. Slugs are unique per tenant, so /bookings/30-min-coaching is a stable URL you can put on a business card, in an email signature or on a landing page.
Per-plan slug, title, timezone, duration, color and description
Categories with category-tree filtering on /bookings
Active flag hides the plan from the public listing without deleting it
Configurable base path — /bookings, /book, /appointments, /schedule
Weekly availability that turns into real, timezone-aware slots
Set Monday-to-Sunday rules with multiple ranges per day for split shifts. The booking-service expands those weekly rules across whatever month an invitee is browsing, subtracts existing bookings and buffers, applies minimum-notice and max-per-day caps, and renders the resulting slots in the invitee's local timezone — or locks them to yours, your choice.
Multiple time ranges per weekday (e.g. 9–12 AM and 2–5 PM)
15-minute granularity in the editor; minutes-from-midnight on the wire
Buffers, minimum notice and max-per-day fold into slot generation
Timezone picker on the public page, or pin to the organizer's zone
Calendar and conference sync, without a Zapier in the middle
Connect Google Calendar from the admin under Integrations and every booking — Meet, Zoom or in-person — creates a Google Calendar event for the organizer and the invitee. Connect Zoom and the booking-service creates the Zoom meeting itself, stores the join URL and password on the booking, and wraps it inside a calendar invite with a single click.
Google Calendar OAuth connect and disconnect from Integrations
Google Meet enabled by flipping has_meet on the same Google integration
Zoom OAuth, with join URL and meeting password stored per booking
Reschedule and cancel mirror to the calendar event automatically
A booking lifecycle that mirrors how meetings actually move
Every meeting schedule moves through six explicit statuses: in_schedule for confirmed bookings, requested for approval-waiting, pending for payment-waiting, rescheduled when the time changes, canceled when it stops, and expired when an unpaid booking runs out. The dashboard filters on each, and the audit pipeline records the move.
Six statuses: in_schedule, requested, pending, rescheduled, canceled, expired
Group plans seat multiple invitees on the same slot (spots_left)
Request flow: invitee proposes slots → admin confirms a final time
Payment-gated flow: pending until the billing service confirms paid
From an empty calendar to a public booking page
The whole booking system lives under Admin → Booking. Connect a calendar, build one plan, share the slug — incoming bookings show up in the schedules dashboard from the first invitee onward.
Connect Google Calendar (and Zoom, if you use it)
Open Admin → Booking → Integrations. Click Add Calendar to OAuth into Google, then add Zoom on the Conference tab if you run Zoom sessions. Google Meet rides the same Google connection — flip has_meet on and Meet rooms attach to every google_meet booking.
Create a meeting plan
Set a title, slug, timezone and duration. Add weekly availability rows, pick a medium (Meet, Zoom, In Person, Phone, No Location), set buffers, notice and a cancel deadline. Toggle group seats, request-based approval or payment gating if the plan needs them.
Share /bookings/{slug} and accept bookings
The plan goes live the moment is_active is true. Share the URL anywhere — invitees pick a slot in their own timezone, fill in the form, and the booking lands in your dashboard with a calendar event already on the way to both sides.
Live Bookings FAQ
How meeting plans, availability, mediums, integrations, the booking lifecycle, group seats, requests and paid sessions actually work inside Edushade.
Can't find what you're looking for?
Contact SalesStart Building Learning Your Way
Set up courses, programs, and learning experiences without forcing your process into rigid software. A connected system for students, educators, and administrators.
Build Your Academy