{"id":334977,"date":"2026-07-09T18:58:48","date_gmt":"2026-07-09T18:58:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/schedopia\/"},"modified":"2026-07-09T18:58:14","modified_gmt":"2026-07-09T18:58:14","slug":"schedopia","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/schedopia\/","author":21011690,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0.1","requires":"6.5","requires_php":"8.1","requires_plugins":null,"header_name":"Schedopia","header_author":"ThinkMatic","header_description":"Self-hosted appointment booking for service businesses: customers book a service with a staff member at a date and time.","assets_banners_color":"b8b5f5","last_updated":"2026-07-09 18:58:14","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/thinkmatic.net","header_plugin_uri":"","header_author_uri":"https:\/\/thinkmatic.net","rating":0,"author_block_rating":0,"active_installs":0,"downloads":29,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"thinkmatic","date":"2026-07-09 18:58:14"}},"upgrade_notice":{"1.0.0":"<p>First stable release: a complete appointments booking system \u2014 services, staff, availability, the booking form, payments, and email notifications.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3601946,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3601946,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3601946,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3601946,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3601946,"resolution":"1","location":"assets","locale":"","width":2686,"height":1630},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3601946,"resolution":"2","location":"assets","locale":"","width":2686,"height":1630},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3601946,"resolution":"3","location":"assets","locale":"","width":2130,"height":1548},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3601946,"resolution":"4","location":"assets","locale":"","width":2130,"height":1548},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3601946,"resolution":"5","location":"assets","locale":"","width":2686,"height":1630},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3601946,"resolution":"6","location":"assets","locale":"","width":2088,"height":1634}},"screenshots":[]},"plugin_section":[],"plugin_tags":[8132,269,416,268,11420],"plugin_category":[40],"plugin_contributors":[267290],"plugin_business_model":[],"class_list":["post-334977","plugin","type-plugin","status-publish","hentry","plugin_tags-appointments","plugin_tags-booking","plugin_tags-calendar","plugin_tags-scheduling","plugin_tags-staff","plugin_category-calendar-and-events","plugin_contributors-thinkmatic","plugin_committers-thinkmatic"],"banners":{"banner":"https:\/\/ps.w.org\/schedopia\/assets\/banner-772x250.png?rev=3601946","banner_2x":"https:\/\/ps.w.org\/schedopia\/assets\/banner-1544x500.png?rev=3601946","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/schedopia\/assets\/icon-128x128.png?rev=3601946","icon_2x":"https:\/\/ps.w.org\/schedopia\/assets\/icon-256x256.png?rev=3601946","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/schedopia\/assets\/screenshot-1.png?rev=3601946","caption":""},{"src":"https:\/\/ps.w.org\/schedopia\/assets\/screenshot-2.png?rev=3601946","caption":""},{"src":"https:\/\/ps.w.org\/schedopia\/assets\/screenshot-3.png?rev=3601946","caption":""},{"src":"https:\/\/ps.w.org\/schedopia\/assets\/screenshot-4.png?rev=3601946","caption":""},{"src":"https:\/\/ps.w.org\/schedopia\/assets\/screenshot-5.png?rev=3601946","caption":""},{"src":"https:\/\/ps.w.org\/schedopia\/assets\/screenshot-6.png?rev=3601946","caption":""}],"raw_content":"<!--section=description-->\n<p>Schedopia is a complete, self-hosted appointment booking plugin for WordPress. A customer picks a service, chooses a staff member, and books an available time \u2014 and every booking is a real, dated record with a transactional double-booking guard, so two customers can never take the same slot. Built for salons, clinics, consultants, tutors, and any service business that runs on appointments.<\/p>\n\n<p><strong>Features<\/strong><\/p>\n\n<ul>\n<li>Service catalog: services, categories, and per-staff pricing.<\/li>\n<li>Staff and customer management, with per-staff availability \u2014 weekly working hours, days off, buffer times, and capacity \u2014 that drives the bookable time slots.<\/li>\n<li>Real, dated appointments that carry their own date, time, and timezone, with a transactional double-booking guard.<\/li>\n<li>A customer-facing booking form \u2014 server-rendered and mobile-first \u2014 that you place with the <code>[schedopia_booking]<\/code> shortcode; customers pick a service, choose a staff member, and book an available time in a few steps.<\/li>\n<li>A Form Appearance customizer to brand the form: global colors, fonts, shape, and button style, plus per-step labels, with a live preview.<\/li>\n<li>A fast single-page admin: dashboard, bookings with filters and a detail drawer, a team calendar, the service catalog, scheduling, customers, staff, payments, an activity log, and a setup wizard.<\/li>\n<li>Manual \/ offline payment recording (cash, bank transfer, mark-as-paid).<\/li>\n<li>Email notifications: booking confirmation, cancellation, an operator new-booking alert, and booking reminders.<\/li>\n<li>A REST API for every entity, with schema-driven validation.<\/li>\n<li>An extension surface (lifecycle hooks, filters, and driver interfaces) so extensions build on the plugin without forking it.<\/li>\n<\/ul>\n\n<p>The <code>[schedopia_booking]<\/code> shortcode works in any editor \u2014 including inside the Gutenberg shortcode block and the Elementor Shortcode widget.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>schedopia<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen.<\/li>\n<li>The plugin's custom tables (<code>wp_schedopia_*<\/code>) are created automatically on activation\/upgrade.<\/li>\n<li>Manage your catalog, staff, and bookings via the Schedopia admin screens and the REST API under <code>\/wp-json\/schedopia\/v1\/<\/code>.<\/li>\n<li>Add the booking form to your site: create or edit a page and insert the <code>[schedopia_booking]<\/code> shortcode (it also works inside the Gutenberg shortcode block and the Elementor Shortcode widget).<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20schedopia%20use%20custom%20database%20tables%20or%20custom%20post%20types%3F\"><h3>Does Schedopia use custom database tables or custom post types?<\/h3><\/dt>\n<dd><p>Custom tables (<code>wp_schedopia_*<\/code>). Bookings, services, staff, customers, and payments are stored relationally rather than as posts.<\/p><\/dd>\n<dt id=\"can%20i%20take%20payments%3F\"><h3>Can I take payments?<\/h3><\/dt>\n<dd><p>Schedopia records manual \/ offline payments \u2014 cash, bank transfer, and mark-as-paid.<\/p><\/dd>\n<dt id=\"how%20do%20extensions%20build%20on%20schedopia%3F\"><h3>How do extensions build on Schedopia?<\/h3><\/dt>\n<dd><p>Through documented lifecycle hooks, filters, and driver interfaces (<code>BookingSource<\/code>, <code>NotificationChannel<\/code>, <code>PaymentMethod<\/code>). Every booking flows through one validated path, so an extension can never create a booking the core would reject.<\/p><\/dd>\n<dt id=\"how%20do%20i%20add%20the%20booking%20form%20to%20a%20page%3F\"><h3>How do I add the booking form to a page?<\/h3><\/dt>\n<dd><p>Place the <code>[schedopia_booking]<\/code> shortcode in any page or post. It also works inside the Gutenberg shortcode block and the Elementor Shortcode widget. Only one booking form can appear per page.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First stable release: a complete appointments booking system \u2014 a service catalog with categories and per-staff pricing; 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 <code>[schedopia_booking]<\/code> form with the Form Appearance customizer.<\/li>\n<li>Single validated booking path (admin, form, and future sources) with serial\/reference generation and a confirmation email on every booking.<\/li>\n<li>REST API for every entity with schema-driven validation; granular per-area capabilities and rate limiting on the public API.<\/li>\n<li>Self-hosted fonts and assets \u2014 loads nothing from third-party CDNs. Uninstall preserves business data unless you opt in to deletion.<\/li>\n<\/ul>","raw_excerpt":"Self-hosted appointment booking for service businesses: customers book a service with a staff member at a date and time.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/334977","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=334977"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/thinkmatic"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=334977"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=334977"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=334977"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=334977"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=334977"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=334977"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}