Title: Schedopia – Appointment Booking &amp; Scheduling
Author: ThinkMatic
Published: <strong>Julai 9, 2026</strong>
Last modified: Ogóst 30, 2026

---

Search plugins

![](https://ps.w.org/schedopia/assets/banner-772x250.png?rev=3607809)

![](https://ps.w.org/schedopia/assets/icon-256x256.png?rev=3607809)

# Schedopia – Appointment Booking & Scheduling

 By [ThinkMatic](https://profiles.wordpress.org/thinkmatic/)

[Download](https://downloads.wordpress.org/plugin/schedopia.1.3.0.zip)

 * [Details](https://rhg.wordpress.org/plugins/schedopia/#description)
 * [Reviews](https://rhg.wordpress.org/plugins/schedopia/#reviews)
 *  [Installation](https://rhg.wordpress.org/plugins/schedopia/#installation)
 * [Development](https://rhg.wordpress.org/plugins/schedopia/#developers)

 [Support](https://wordpress.org/support/plugin/schedopia/)

## Description

**Schedopia is a complete booking and scheduling plugin for WordPress.** Add an 
online booking form to your site in minutes and let customers book two ways: an **
appointment** with the right staff member at a time that actually works, or a **
seat at a dated event** in one of your venues — automatically, around the clock,
without the back-and-forth of phone calls and emails.

Whether you run a salon, a clinic, a tutoring service, a yoga studio, or a small
theatre, Schedopia turns your website into a booking engine. Every appointment and
every seat reservation is a real, dated record, and a built-in guard means two customers
can never grab the same time slot — or the same seat — so you stop worrying about
double-bookings and no-shows.

Best of all, Schedopia is **fully self-hosted**. Your bookings, your customers, 
and your data stay on your own site. Nothing loads from third-party services unless
you turn on optional reCAPTCHA spam protection yourself, and there are no per-booking
fees.

**Why choose Schedopia?**

 * **Bookings while you sleep** — a mobile-friendly booking form takes reservations
   24/7, so you never miss a customer.
 * **Never double-book again** — every appointment is validated against real staff
   availability, and every seat against what’s already reserved, with a transactional
   guard so two people can never take the same time slot or the same seat.
 * **Your data stays yours** — 100% self-hosted, no CDNs, no per-booking commission.
   The plugin contacts no external service unless you opt in to reCAPTCHA spam protection.
 * **Set up in minutes** — a guided setup wizard asks what you take bookings for,
   then walks you through either services, staff and hours, or your venue and first
   event.
 * **Looks like your brand** — customize the booking form’s colors, fonts, and buttons
   with a live preview.

**Key Features**

 * **Online booking form** — a clean, mobile-first form for both flows: pick a service,
   staff member and time, or pick an event and choose seats on the map. Add it to
   any page with the `[schedopia_booking]` shortcode, or `[schedopia_booking mode
   ="event"]` to place the seat flow specifically.
 * **Events & seat reservations** — sell seats for dated events: classes, workshops,
   talks, shows. Customers browse upcoming sessions with live availability, pick
   their seats on a real seat map, and book. An event can open more than one hall,
   and a seat can never be reserved twice for the same event.
 * **Venues, halls & seat maps** — build your venue once: halls, a visual seat planner
   with rows and aisles, and optional seat tiers (VIP, Standard, Balcony) with their
   own colours and prices. Individual seats can override their tier’s price.
 * **Service catalog** — organize services into categories, each with its own price
   and duration.
 * **Service add-ons** — offer extras alongside a service. Each add-on carries its
   own price and duration, so choosing one extends the appointment’s total _and_
   the time blocked on the calendar — customers and staff both pick them while booking.
 * **Staff & availability management** — set each team member’s weekly working hours,
   days off, buffer times, and capacity. Availability automatically drives which
   time slots customers can book.
 * **Real dated appointments** — every booking carries its own date, time, and timezone,
   protected by a transactional double-booking guard.
 * **Customer management** — keep a record of your customers and their booking history.
 * **Form appearance customizer** — brand the booking form with global colors, fonts,
   shapes, and button styles, plus custom labels for each step, all with a live 
   preview.
 * **Powerful admin dashboard** — a fast single-page admin with a dashboard, filterable
   bookings list, team calendar, service catalog, scheduling, customers, staff, 
   payments, and an activity log.
 * **CSV export** — download your bookings as a spreadsheet. The export follows 
   whatever filters the list is showing, and covers the whole filtered set, not 
   just the page on screen.
 * **Manual & offline payments** — record cash, bank transfer, and mark-as-paid 
   payments.
 * **Automated email notifications** — booking confirmations, cancellations, new-
   booking alerts for your team, and appointment reminders.
 * **Customer self-service cancellation** — customers cancel from a secure link 
   in their email, with no account needed. You decide whether it’s allowed and how
   close to the start time it stays open.
 * **Calendar feed & add-to-calendar** — subscribe Google Calendar, Outlook, or 
   Apple Calendar to a read-only feed of your bookings, and let customers save an
   appointment straight from their confirmation email.
 * **Works with your page builder** — the `[schedopia_booking]` shortcode works 
   everywhere, including the Gutenberg shortcode block and the Elementor Shortcode
   widget.

**Perfect for**

Salons and barbershops, spas and beauty studios, dentists and health clinics, therapists
and coaches, tutors and instructors, consultants and freelancers, repair and home
services — any business that runs on appointments. And for seated sessions: yoga
and fitness studios, cookery and craft workshops, community centres, small theatres
and event spaces.

**For developers**

Schedopia is built to extend without forking. It ships a full REST API for every
entity with schema-driven validation, granular per-area capabilities, and rate limiting
on the public API. Extensions build on documented lifecycle hooks, filters, and 
driver interfaces (`BookingSource`, `NotificationChannel`, `PaymentMethod`), and
every booking flows through a single validated path — so an extension can never 
create a booking the core would reject. Data is stored in dedicated relational tables(`
wp_schedopia_*`) rather than as custom post types.

### External Services

Schedopia loads nothing from third-party services by default. One optional feature
connects to an external service when you explicitly enable it:

**Google reCAPTCHA v3** (optional spam protection for the public booking form). 
Only when you enable reCAPTCHA in _Settings  Booking rules_ **and** provide your
own site and secret keys, the booking form loads Google’s reCAPTCHA script, and 
each form submission sends the reCAPTCHA response token and the visitor’s IP address
to Google’s `siteverify` endpoint to obtain a spam score. No booking or customer
data is sent. This service is provided by Google: [terms of service](https://policies.google.com/terms),
[privacy policy](https://policies.google.com/privacy). If you never enable the feature,
no request to Google is ever made. The built-in honeypot and timing checks work 
without any external service.

## Screenshots

[⌊The customer booking form — customers choose a service, filtered by category, 
with duration, staff count, and price shown up front.⌉⌊The customer booking form—
customers choose a service, filtered by category, with duration, staff count, and
price shown up front.⌉[

The customer booking form — customers choose a service, filtered by category, with
duration, staff count, and price shown up front.

[⌊Picking a date and time — customers select a day, then a morning or afternoon 
slot, with a running appointment summary and total.⌉⌊Picking a date and time — customers
select a day, then a morning or afternoon slot, with a running appointment summary
and total.⌉[

Picking a date and time — customers select a day, then a morning or afternoon slot,
with a running appointment summary and total.

[⌊The final step — customers enter their details, add notes, and confirm. Pay-on-
arrival keeps booking friction low.⌉⌊The final step — customers enter their details,
add notes, and confirm. Pay-on-arrival keeps booking friction low.⌉[

The final step — customers enter their details, add notes, and confirm. Pay-on-arrival
keeps booking friction low.

[⌊The admin dashboard — bookings, revenue, completion rate, and new customers at
a glance, plus a bookings trend chart and the day's schedule.⌉⌊The admin dashboard—
bookings, revenue, completion rate, and new customers at a glance, plus a bookings
trend chart and the day's schedule.⌉[

The admin dashboard — bookings, revenue, completion rate, and new customers at a
glance, plus a bookings trend chart and the day’s schedule.

[⌊The bookings management screen — filter by status, staff, or service, and search
across every appointment with payment status and amounts.⌉⌊The bookings management
screen — filter by status, staff, or service, and search across every appointment
with payment status and amounts.⌉[

The bookings management screen — filter by status, staff, or service, and search
across every appointment with payment status and amounts.

[⌊The Form Appearance customizer — brand the booking form's colors, fonts, and shapes
with a live desktop and mobile preview.⌉⌊The Form Appearance customizer — brand 
the booking form's colors, fonts, and shapes with a live desktop and mobile preview
.⌉[

The Form Appearance customizer — brand the booking form’s colors, fonts, and shapes
with a live desktop and mobile preview.

[⌊Booking a seat, step one — customers browse upcoming events with the date, venue
and hall, duration, live seats-left count, and a "from" price per seat.⌉⌊Booking
a seat, step one — customers browse upcoming events with the date, venue and hall,
duration, live seats-left count, and a "from" price per seat.⌉[

Booking a seat, step one — customers browse upcoming events with the date, venue
and hall, duration, live seats-left count, and a “from” price per seat.

[⌊Picking seats on the map — seat tiers are colour-coded, taken seats are greyed
out, and the running summary totals the selected seats.⌉⌊Picking seats on the map—
seat tiers are colour-coded, taken seats are greyed out, and the running summary
totals the selected seats.⌉[

Picking seats on the map — seat tiers are colour-coded, taken seats are greyed out,
and the running summary totals the selected seats.

## Installation

**Automatic installation**

 1. Go to **Plugins  Add New** in your WordPress admin.
 2. Search for “Schedopia”.
 3. Click **Install Now**, then **Activate**.

**Manual installation**

 1. Upload the `schedopia` folder to the `/wp-content/plugins/` directory.
 2. Activate the plugin through the **Plugins** screen in WordPress.

**After activation**

 1. The plugin’s custom tables (`wp_schedopia_*`) are created automatically on activation.
 2. Follow the setup wizard: choose whether you take appointments, event seats, or 
    both, then add your services, staff, and working hours — or your venue, its seat
    map, and your first event.
 3. Create or edit a page and insert the `[schedopia_booking]` shortcode to display
    your booking form (it also works inside the Gutenberg shortcode block and the Elementor
    Shortcode widget).
 4. Manage everything from the Schedopia admin screens, or via the REST API under `/
    wp-json/schedopia/v1/`.

## FAQ

### Is Schedopia free?

Yes. Schedopia is a complete, self-hosted booking plugin — appointments and event
seat reservations — with no per-booking fees or seat commissions.

### What types of businesses is Schedopia for?

Any service business that runs on appointments — salons, barbershops, spas, clinics,
dentists, therapists, coaches, tutors, consultants, and home or repair services.
And any business that sells seats for dated sessions — yoga and fitness studios,
workshops and classes, community centres, small theatres and event spaces. You can
run either kind of booking, or both.

### Can customers book online themselves?

Yes. Add the `[schedopia_booking]` form to any page and customers can pick a service,
choose a staff member, and book an available time on their own, 24/7. For events,
they browse upcoming sessions, pick their seats on the seat map, and reserve them
the same way.

### Can I sell seats for events, classes, or shows?

Yes. Create a venue with one or more halls, lay out the seats in the visual seat
planner (optionally grouped into tiers such as VIP, Standard and Balcony with their
own prices), then create a dated event in that venue. Customers see live seat availability
and a “from” price, pick specific seats on the map, and book. Use `[schedopia_booking
mode="event"]` to place the seat flow on its own page.

### Will it prevent double-bookings?

Yes. Every appointment is validated against real staff availability, and every seat
reservation against the seats already taken, with a transactional double-booking
guard — so two customers can never take the same time slot, and a seat can never
be reserved twice for the same event.

### Can I take payments?

Schedopia records manual and offline payments — cash, bank transfer, and mark-as-
paid.

### Does Schedopia work with Elementor and Gutenberg?

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

### Does Schedopia rely on any third-party services?

Not unless you ask it to. Out of the box Schedopia contacts no external service 
and loads nothing from third-party CDNs — your business data stays on your own site.
There is one opt-in exception: if you switch on reCAPTCHA spam protection and supply
your own keys, the booking form then loads Google’s script and checks submissions
with Google (see the External Services section below). The only other third-party
links anywhere are the optional “add to calendar” buttons in customer emails, which
are ordinary links your customer may choose to click to save their appointment in
Google or Outlook.

### Does Schedopia use custom database tables or custom post types?

Custom tables (`wp_schedopia_*`). Bookings, services, staff, customers, payments,
venues, seats, and events are stored relationally rather than as posts.

### How do developers extend Schedopia?

Through documented lifecycle hooks, filters, and driver interfaces (`BookingSource`,`
NotificationChannel`, `PaymentMethod`). Every booking flows through one validated
path, so an extension can never create a booking the core would reject. A full REST
API is available under `/wp-json/schedopia/v1/`.

### What happens to my data if I uninstall?

Uninstall preserves your business data by default. Deletion only happens if you 
explicitly opt in.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Schedopia – Appointment Booking & Scheduling” is open source software. The following
people have contributed to this plugin.

Contributors

 *   [ ThinkMatic ](https://profiles.wordpress.org/thinkmatic/)

[Translate “Schedopia – Appointment Booking & Scheduling” into your language.](https://translate.wordpress.org/projects/wp-plugins/schedopia)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/schedopia/), check 
out the [SVN repository](https://plugins.svn.wordpress.org/schedopia/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/schedopia/) by [RSS](https://plugins.trac.wordpress.org/log/schedopia/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.3.0 – 2026-08-30

 * Added: Events and seat reservations — a second way to take bookings. Create dated
   events in your venue and let customers reserve specific seats: they browse upcoming
   sessions with live availability and a “from” price, then pick their seats on 
   a real seat map. A seat can never be reserved twice for the same event.
 * Added: Venues, halls and a visual seat planner. Lay out rows and aisles, generate
   seats in bulk, and optionally group them into tiers (VIP, Standard, Balcony) 
   with their own colour and price. Any individual seat can override its tier’s 
   price.
 * Added: An event can open more than one hall — add a second room when the first
   sells out, and customers switch between seat maps while booking.
 * Added: Choose what you take bookings for. The setup wizard now asks whether you
   run appointments or events, and tailors the rest of setup to your answer; you
   can change it any time under Settings, including running both.
 * Added: `[schedopia_booking mode="event"]` places the seat-reservation flow on
   a specific page. The plain `[schedopia_booking]` shortcode follows whichever 
   mode you chose.
 * Added: Book seats on a customer’s behalf from the admin — the New Booking screen
   gains an event and seat picker alongside the appointment flow.
 * Added: Seat reservations show up everywhere a booking does — confirmation and
   reminder emails, add-to-calendar links and the calendar feed name the event, 
   and the CSV export gains an Event column.
 * Fixed: A booking attempt that fails — for example when someone else took the 
   seat a moment earlier — no longer leaves a customer record behind.

#### 1.2.2 – 2026-08-17

 * Added: Export your bookings to CSV. The Export CSV button on the Bookings screen
   downloads exactly what the list is showing — the same search term, status tab,
   staff and service filters — ready to open in Excel, Google Sheets, or Numbers.
   The whole filtered set is included, not just the page on screen.
 * Fixed: Searching the bookings list works again. The search box previously failed
   and returned nothing; it now matches on customer name and email, service, and
   staff member.

#### 1.2.1 – 2026-08-06

 * Added: Spam protection on the booking form. A hidden decoy field and a minimum
   fill-time check quietly reject automated submissions before anything is saved,
   so junk bookings never reach your list. Both work out of the box with nothing
   to configure.
 * Added: Optional Google reCAPTCHA v3 for the booking form, under Settings  Booking
   rules. It stays switched off until you turn it on and add your own keys — until
   then the form contacts no outside service at all.

#### 1.2.0 – 2026-07-27

 * Added: Customers can cancel their own booking from a secure link in their confirmation,
   pending, and reminder emails. They see their booking details and confirm before
   anything changes, and no account or login is needed.
 * Added: A “Booking rules” settings section that controls whether customer cancellations
   are allowed at all, and how many hours before the start time the link stops working.
 * Added: A read-only calendar feed. Subscribe Google Calendar, Outlook, or Apple
   Calendar to it and your bookings appear alongside the rest of your schedule. 
   It stays off until you turn it on under Settings, and you can rotate the address
   at any time if it gets shared too widely.
 * Added: “Add to calendar” buttons for Google, Outlook, and Apple in confirmation
   and reminder emails, so customers can save the appointment in one click. You 
   can switch these off under Settings if you would rather not send customers to
   Google or Outlook.
 * Improved: Every customer email has been redesigned — your business name at the
   top, the appointment details in a clear panel, and a readable layout that holds
   together on phones and in Outlook. Nothing is loaded from anywhere else, so the
   emails render the same with images switched off.
 * Improved: A slot freed by a customer cancellation becomes bookable again immediately,
   and the cancellation flows through the same notifications as a cancellation made
   from the admin.

#### 1.1.0 – 2026-07-20

 * Added: Service add-ons. Attach optional extras to a service on the new Add-ons
   screen — each add-on carries its own price and duration.
 * Added: Customers can pick add-ons while booking, with an itemized summary showing
   what each one costs.
 * Added: Staff can pick add-ons in the admin New Booking dialog, and the booking
   details drawer lists the add-ons on a booking.
 * Improved: Available times automatically resize to the service plus the chosen
   add-ons, so a slot is only offered when the whole appointment fits and the calendar
   blocks the real time taken.
 * Improved: An add-on’s name, price, and duration are saved with the booking, so
   past bookings and receipts don’t change when you edit the catalog later.

#### 1.0.1 – 2026-07-14

 * Fixed: Bookings submitted without a timezone now default to the site’s WordPress
   timezone instead of UTC, so wall-clock times are stored against the correct zone.

#### 1.0.0 – 2026-07-10

 * Added: First stable release — a complete appointments booking system: a service
   catalog with categories; staff with weekly working hours, days off, buffers, 
   and capacity; real dated bookings with a transactional double-booking guard; 
   manual / offline payment recording; email notifications (confirmation, cancellation,
   operator alert, reminders); a setup wizard; a single-page admin dashboard; and
   the customer-facing `[schedopia_booking]` form with the Form Appearance customizer.
 * Added: A single validated booking path (admin, form, and API) with serial/reference
   generation and a confirmation email on every booking.
 * Added: A REST API for every entity with schema-driven validation, granular per-
   area capabilities, and rate limiting on the public API.
 * Added: Self-hosted fonts and assets — loads nothing from third-party CDNs. Uninstall
   preserves business data unless you opt in to deletion.

## Meta

 *  Version **1.3.0**
 *  Last updated **5 góndha ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.1**
 *  PHP version ** 8.1 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/schedopia/)
 * Tags
 * [appointment booking](https://rhg.wordpress.org/plugins/tags/appointment-booking/)
   [booking calendar](https://rhg.wordpress.org/plugins/tags/booking-calendar/)[Event Tickets](https://rhg.wordpress.org/plugins/tags/event-tickets/)
   [online scheduling](https://rhg.wordpress.org/plugins/tags/online-scheduling/)
   [seat reservation](https://rhg.wordpress.org/plugins/tags/seat-reservation/)
 *  [Advanced View](https://rhg.wordpress.org/plugins/schedopia/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/schedopia/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/schedopia/reviews/)

## Contributors

 *   [ ThinkMatic ](https://profiles.wordpress.org/thinkmatic/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/schedopia/)

## Donate

Would you like to support the advancement of this plugin?

 [ Donate to this plugin ](https://thinkmatic.net)