Appointment booking and event seating for WordPress

Schedopia lets customers book a time with your team or pick their own seats at your events, 24 hours a day, with no double-bookings. It is free, self-hosted, and charges nothing per booking.

  • Free forever
  • Version 1.3.0
  • WordPress 6.5+ and PHP 8.1+
  • GPLv2
Schedopia booking form, step 1 of 3: a grid of services filtered by category, each showing duration, staff count and price.
Schedopia seat map for Main Hall: colour-coded VIP, Standard and Balcony tiers, taken seats greyed out, and a booking summary totalling three selected seats.

Works with

  • WordPress 6.5 to 7.1
  • Block editor
  • Elementor
  • Any theme
  • PHP 8.1+

Two ways to book

Book people into time, or people into seats

Most booking plugins do one or the other. Schedopia does both from the same plugin, so a studio can take one-to-one sessions and sell places at a Saturday class without running two systems.

Schedopia booking form, step 1 of 3: a grid of services filtered by category, each showing duration, staff count and price.

Appointments

Services with staff and time slots. For anyone who books people into a calendar.

  • Customers pick a service, a person and a time on their own
  • Add-ons, buffers and days off are handled for you
  • No slot can ever be booked twice
See appointments features
Schedopia seat map for Main Hall: colour-coded VIP, Standard and Balcony tiers, taken seats greyed out, and a booking summary totalling three selected seats.

Seated events

Dated sessions in a venue with a seat map. For anyone who sells places, not time.

  • Customers see live seats-left and pick exact seats
  • Tiers such as VIP and Balcony carry their own prices
  • No seat can ever be sold twice
See seated events features

How it works

From install to first booking in one sitting

No account to create, no service to connect. Everything runs inside your WordPress site.

  1. Step 1: Install from WordPress.org

    Search for Schedopia under Plugins, then Install and Activate. The database tables are created for you.

  2. Step 2: Set up services or a venue

    The setup wizard asks whether you take appointments, sell seats, or both, then walks you through services and staff, or a venue and its seat map.

  3. Step 3: Paste the shortcode

    Add [schedopia_booking] to any page. Customers can book from that moment on.

Appointments

Only the times that are really open

Customers see availability that reflects each person’s weekly hours, days off, buffers and existing bookings. When they confirm, the slot is checked again inside a database transaction.

  • Services in categories

    Each service carries its own price and duration. Group them so a long menu stays easy to scan.

  • Add-ons with their own price and time

    Offer extras alongside a service. The total and the slot length update to match.

  • Staff schedules, days off and buffers

    Weekly hours per person, time off, gaps between appointments, and how many customers each slot can take.

  • A double-booking guard that holds

    Two customers can never take the same slot. The check runs inside a transaction, not in the browser.

Schedopia booking form, step 2 of 3: a calendar to pick a day, morning and afternoon time slots, and a running appointment summary.

Events and seats

Let customers choose the exact seat

Draw your hall once. Colour-coded tiers, greyed-out taken seats and a running total make picking seats as clear as it is at the box office.

  • Venues with one or more halls

    Each hall has its own seat layout. Add a second hall to an event when the first fills up.

  • Visual seat planner

    Draw rows and seats in the admin, generate seats in bulk, and group them into tiers such as VIP, Standard and Balcony with their own colours and prices.

  • Per-seat price overrides

    Price a single seat differently from its tier when you need to.

  • Live seats-left and a “from” price

    Upcoming sessions list the date, venue, hall, duration and how many seats remain.

Schedopia seat map for Main Hall: colour-coded VIP, Standard and Balcony tiers, taken seats greyed out, and a booking summary totalling three selected seats.

Admin

Know how the day looks before it starts

The dashboard answers the questions you actually ask each morning: what is booked today, how much has come in, who is new. Everything else is one click away.

  • At-a-glance dashboard

    Total bookings, revenue collected, completion rate and new customers, with a trend chart and today’s schedule.

  • Bookings you can filter and search

    Narrow by status, staff or service, and search across every appointment with its payment status and amount.

  • Customers with history

    Every customer record shows what they booked and when.

  • Manual and offline payments

    Record cash, bank transfer, or mark a booking as paid. Every booking carries a payment status.

Schedopia admin dashboard showing total bookings, revenue collected, completed count, new customers, a bookings trend chart and today’s schedule.

Booking form

A form that looks like it was built for your site

Change colours, fonts, shapes and buttons from the admin and watch the desktop and mobile previews update. No CSS required.

  • Mobile-first

    Designed for a phone screen first, then scaled up. Most bookings happen on one.

  • Form Appearance customizer

    Colours, fonts, shapes and button style, with a live desktop and mobile preview as you change them.

  • One shortcode, any editor

    Paste [schedopia_booking] into the block editor, Elementor’s Shortcode widget, or the classic editor. Add mode="event" for seat bookings.

Schedopia Form Appearance customizer with colour, font and shape controls beside a live desktop and mobile preview of the booking form.

Notifications

Everyone knows what is happening, without you sending a thing

Confirmations go out the moment a booking lands. Reminders reduce no-shows. Customers can cancel from the email, inside the rules you set.

Confirmations and cancellations

Customers get a clear email for every booking and every change.

Reminders and staff alerts

Customers are reminded before their appointment. Your team hears about every new booking.

Self-service cancellation

A secure link in the email lets customers cancel without an account. You decide how close to the appointment that is allowed.

Add to calendar

Google, Outlook and Apple Calendar buttons in every confirmation, plus a read-only calendar feed to subscribe to.

Built for

Any business that runs on appointments or seats

The same plugin fits a two-chair barbershop and a 120-seat community theatre. Pick the mode that matches how you sell, or run both.

  • Salons and barbershops

    Stylists with their own hours, services grouped by type, add-ons such as a beard trim on top of a cut.

    Appointments
  • Dentists and health clinics

    Practitioners with different availability, reminders that reduce no-shows, and records that stay on your own server.

    Appointments
  • Consultants and freelancers

    A discovery call and a paid consultation as separate services, with your calendar feed kept in sync.

    Appointments
  • Yoga and fitness studios

    Dated classes with a fixed number of places. Members reserve a spot and see how many remain.

    Seated events
  • Cookery and craft workshops

    One-off sessions with a station per seat. Sell exactly as many places as you have benches.

    Seated events
  • Small theatres and event spaces

    A drawn seat map with VIP, Standard and Balcony tiers, live availability, and no seat sold twice.

    Seated events

Why Schedopia

Yours to run, with nothing skimmed off the top

Hosted booking services charge per booking, hold your customer list, and can change terms at any time. Schedopia is a plugin on your own site.

No per-booking fees

The plugin is free and takes no commission on appointments or seats. Your revenue is yours.

Your data stays on your site

Customers and bookings live in your WordPress database, in relational tables you can query.

No third-party services

Nothing is loaded from a CDN and nothing is sent elsewhere unless you enable reCAPTCHA yourself.

Transactional double-booking guard

Slots and seats are validated in the database, so a race between two customers cannot slip through.

Data survives uninstall

Remove the plugin and your bookings remain until you explicitly choose to delete them.

GPLv2, built by ThinkMatic

Free software from a studio with 12+ years building for the web and 500K+ users across its products.

What people run on it

Sample stories from the kinds of businesses Schedopia is built for.

  • We used to take bookings over the phone and lose two or three a week to double entries. Since the form went on our site, that has simply stopped. The slot is either there or it is not.

    PriyaOwner, Barbershop, two chairs
  • The seat map was the reason we chose it. Our hall is an odd shape and the planner let us draw it exactly, with the balcony priced differently. People pick their own seats and we stopped keeping a paper chart.

    TomaszProgramme coordinator, Community theatre, 120 seats
  • Patient data staying in our own database was non-negotiable for us. Schedopia does not phone home to anything. That, and the reminders have noticeably cut our no-shows.

    Dr. AishaPractice manager, Dental clinic
  • I teach from home and my hours change every term. Updating my weekly availability takes a minute and students only ever see times I can actually do, in their own timezone.

    MarcusMusic tutor, Independent
  • Our workshops have eight benches, so eight seats. The live seats-left count on the site means we no longer answer “is there space on Saturday?” emails all week.

    HelenaStudio lead, Ceramics workshop

For developers

Built to be extended, not forked

Everything the admin can do is available over REST. Add a booking channel, a notification channel or a payment type by implementing an interface, and rely on the core to validate what comes through.

REST API base
/wp-json/schedopia/v1/
Validation
Schema-driven on every route
Permissions
Granular per-area capabilities; rate limiting on public routes
Driver interfaces
BookingSource, NotificationChannel, PaymentMethod
Storage
Relational tables prefixed wp_schedopia_*
Extension points
Documented lifecycle hooks and filters
License
GPLv2 or later

Every booking, whether from the form, the API or an extension, passes through the same validated path.

Pricing

Free now. Pro when it is ready.

The plugin on WordPress.org is the whole product, not a trial. A Pro addition is in development for teams that need more.

Free

Available now

$0forever

The complete plugin, on WordPress.org. No per-booking fees, no seat commissions, no usage limits.

  • Appointment booking with services, categories and add-ons
  • Staff schedules, days off, buffers and capacity
  • Event seat reservations with a visual seat planner
  • Seat tiers, per-seat pricing and multi-hall events
  • Transactional double-booking protection
  • Mobile-first booking form with live appearance customizer
  • and 6 more

Pro

In development

Coming soon

An optional addition for teams that need more. Details and pricing will be announced to the waitlist first.

  • Everything in Free
  • Built on the same self-hosted core
  • Waitlist members hear first and help shape what ships

This form isn't connected yet. Set PUBLIC_FORM_ENDPOINT to enable it. In the meantime, email [email protected].

Questions

Common questions

Is Schedopia really free?

Yes. Schedopia is a complete, self-hosted booking plugin for appointments and event seat reservations, released under the GPLv2. There are no per-booking fees and no seat commissions.

Can I take card payments online?

Not yet. Schedopia records manual and offline payments: cash, bank transfer, and mark-as-paid. The booking form uses a pay-on-arrival flow, which keeps friction low. Payment methods are extensible through the PaymentMethod driver interface.

Does it work with Elementor and the block editor?

Yes. The [schedopia_booking] shortcode works in any editor, including the Gutenberg Shortcode block and the Elementor Shortcode widget. One booking form can appear per page.

Can I run appointments and seated events on the same site?

Yes. The setup wizard asks whether you want appointments, events, or both. Use [schedopia_booking] for appointments and [schedopia_booking mode="event"] for seat bookings.

Will it stop double-bookings?

Yes. Every appointment is validated against real staff availability, and every seat reservation against the seats already taken, inside a database transaction. Two customers can never take the same slot, and a seat can never be reserved twice for the same event.

Does Schedopia send data to third parties?

Not unless you ask it to. By default the plugin contacts no external service and loads nothing from third-party CDNs. The only optional integration is Google reCAPTCHA v3, which runs only when you enable it and add your own keys.

What are the requirements?

WordPress 6.5 or later and PHP 8.1 or later. Schedopia is tested up to WordPress 7.1.

What happens to my data if I uninstall?

Your bookings, customers and settings are kept by default. Data is deleted only if you explicitly opt in before uninstalling.

Take your first booking today

Install Schedopia from WordPress.org, run the setup wizard, and paste one shortcode. If you would rather talk it through first, we are happy to.