{"id":257243,"date":"2025-11-30T17:17:57","date_gmt":"2025-11-30T17:17:57","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/psybooker-calendar-for-appointments\/"},"modified":"2025-11-30T17:17:45","modified_gmt":"2025-11-30T17:17:45","slug":"psybooker-calendar-for-appointments","status":"publish","type":"plugin","link":"https:\/\/sl.wordpress.org\/plugins\/psybooker-calendar-for-appointments\/","author":23379757,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.5.1","stable_tag":"1.5.1","tested":"6.8.5","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"PsyBooker - Calendar for Appointments","header_author":"Psych Calendar","header_description":"Booking calendar with two-way Google Calendar sync for psychology sessions.","assets_banners_color":"","last_updated":"2025-11-30 17:17:45","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":5,"author_block_rating":0,"active_installs":10,"downloads":207,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"1.5.1":{"tag":"1.5.1","author":"dkoreiba","date":"2025-11-30 17:17:45"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.5.1"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3406251,"resolution":"1","location":"assets","locale":""},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3406251,"resolution":"2","location":"assets","locale":""},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3406251,"resolution":"3","location":"assets","locale":""},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3406251,"resolution":"4","location":"assets","locale":""},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3406251,"resolution":"5","location":"assets","locale":""},"screenshot-6.jpg":{"filename":"screenshot-6.jpg","revision":3406251,"resolution":"6","location":"assets","locale":""}},"screenshots":{"1":"Backend Appointments page","2":"Backend Availability page","3":"Backend Daily Overrides page","4":"Backend General Settings page","5":"Backend Adjacent Slots Settings page","6":"Frontend Calendar view"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[8132,269,416,4743,251413],"plugin_category":[40],"plugin_contributors":[251414],"plugin_business_model":[],"class_list":["post-257243","plugin","type-plugin","status-publish","hentry","plugin_tags-appointments","plugin_tags-booking","plugin_tags-calendar","plugin_tags-google-calendar","plugin_tags-psychology","plugin_category-calendar-and-events","plugin_contributors-dkoreiba","plugin_committers-dkoreiba"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/psybooker-calendar-for-appointments.svg","icon_2x":false,"generated":true},"screenshots":[{"src":"https:\/\/ps.w.org\/psybooker-calendar-for-appointments\/assets\/screenshot-1.jpg?rev=3406251","caption":"Backend Appointments page"},{"src":"https:\/\/ps.w.org\/psybooker-calendar-for-appointments\/assets\/screenshot-2.jpg?rev=3406251","caption":"Backend Availability page"},{"src":"https:\/\/ps.w.org\/psybooker-calendar-for-appointments\/assets\/screenshot-3.jpg?rev=3406251","caption":"Backend Daily Overrides page"},{"src":"https:\/\/ps.w.org\/psybooker-calendar-for-appointments\/assets\/screenshot-4.jpg?rev=3406251","caption":"Backend General Settings page"},{"src":"https:\/\/ps.w.org\/psybooker-calendar-for-appointments\/assets\/screenshot-5.jpg?rev=3406251","caption":"Backend Adjacent Slots Settings page"},{"src":"https:\/\/ps.w.org\/psybooker-calendar-for-appointments\/assets\/screenshot-6.jpg?rev=3406251","caption":"Frontend Calendar view"}],"raw_content":"<!--section=description-->\n<p><strong>PsyBooker<\/strong> is the ultimate scheduling solution for therapists and psychologists who want to automate client scheduling.<br \/>\nIt combines a simple booking interface, admin slot management, notifications, and full Google Calendar integration \u2014 right inside WordPress.<\/p>\n\n<h3>Main Features<\/h3>\n\n<ul>\n<li><strong>Easy Booking Form<\/strong> \u2013 clean and simple booking interface for clients  <\/li>\n<li><strong>Two-Way Google Calendar Sync<\/strong> \u2013 appointments are automatically created and updated in Google Calendar  <\/li>\n<li><strong>Flexible Slot Management<\/strong> \u2013 weekly and daily availability setup, including exceptions  <\/li>\n<li><strong>Email Notifications<\/strong> \u2013 automatic confirmations and admin alerts  <\/li>\n<li><strong>Timezone Support<\/strong> \u2013 automatic conversion for international clients  <\/li>\n<li><strong>Conflict Prevention<\/strong> \u2013 prevents overlapping or duplicate bookings  <\/li>\n<li><strong>Modern REST API<\/strong> \u2013 integrate with custom apps or frontends  <\/li>\n<\/ul>\n\n<h3>Additional Features<\/h3>\n\n<ul>\n<li>\ud83d\udc65 Perfect for private practice management<\/li>\n<li>\ud83d\udcc5 Never miss appointments with automatic Google Calendar sync<\/li>\n<li>\ud83d\udcbc Professional booking experience for your clients<\/li>\n<li>\u2699\ufe0f Availability planning with weekly and daily override modes<\/li>\n<li>\ud83e\udded Automatic timezone detection from browser<\/li>\n<li>\ud83d\udd14 Customizable reminders (email and popup)<\/li>\n<li>\ud83e\udde9 Adjacent slot blocking to prevent back-to-back sessions<\/li>\n<li>\ud83e\udde0 Minimum lead time before booking (e.g., only next-day sessions)<\/li>\n<li>\ud83d\udd10 Data encryption with external master key support<\/li>\n<li>\ud83d\udee1\ufe0f Rate limiting and anti-spam protection<\/li>\n<li>\ud83e\uddfe GDPR-friendly: export and erase user data via WP privacy tools<\/li>\n<li>\ud83e\uddf1 Shortcode support for embedding the booking calendar on any page<\/li>\n<li>\u26a1 Works perfectly with caching and SEO plugins<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to Google Calendar API to synchronize appointments and manage calendar events.<\/p>\n\n<p><strong>Google Calendar API<\/strong>\n- Service: Google Calendar API (https:\/\/www.googleapis.com\/calendar\/v3)\n- Purpose: To create, read, update, and delete calendar events and appointments\n- Data sent: Calendar event details (title, description, date, time, attendees, Google Meet conference links), OAuth authentication tokens\n- When: When user connects their Google Calendar, creates\/edits\/deletes appointments, or syncs calendar data\n- Privacy Policy: https:\/\/policies.google.com\/privacy\n- Terms of Service: https:\/\/policies.google.com\/terms<\/p>\n\n<p><strong>Google OAuth 2.0<\/strong>\n- Service: Google OAuth 2.0 (https:\/\/oauth2.googleapis.com\/token, https:\/\/accounts.google.com\/o\/oauth2\/auth)\n- Purpose: To authenticate users and obtain access tokens for Google Calendar API\n- Data sent: OAuth authorization codes, client credentials, refresh tokens\n- When: During initial Google Calendar connection and token refresh\n- Privacy Policy: https:\/\/policies.google.com\/privacy\n- Terms of Service: https:\/\/policies.google.com\/terms<\/p>\n\n<p>Note: Google Calendar integration is optional and requires explicit user authorization. No data is sent to Google services unless the user chooses to connect their Google Calendar.<\/p>\n\n<h3>License<\/h3>\n\n<p>This plugin is licensed under the GPLv2 or later.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/psybooker-calendar-for-appointments\/<\/code>  <\/li>\n<li>Activate it through the <strong>Plugins<\/strong> menu in WordPress  <\/li>\n<li>Go to <strong>Settings \u2192 PsyBooker<\/strong> to configure availability  <\/li>\n<li>Connect your Google Calendar for synchronization<\/li>\n<\/ol>\n\n<!--section=changelog-->\n<h4>1.5.1<\/h4>\n\n<ul>\n<li>Fix: Resolved caching compatibility issues (race condition with deferred scripts)<\/li>\n<li>Fix: Improved translation loading mechanism for better performance and stability<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Fix: Resolved incomplete database cleanup upon uninstallation (removed leftover options and tables)<\/li>\n<li>Dev: Codebase improvements to meet WordPress Coding Standards (WPCS)<\/li>\n<li>Dev: Fixed various PHPCS warnings and errors<\/li>\n<\/ul>\n\n<h4>1.4.4<\/h4>\n\n<ul>\n<li>Security: Fixed WordPress security linter warnings for unsanitized input variables<\/li>\n<li>Security: Improved input sanitization for slot management forms<\/li>\n<li>Security: Added proper wp_unslash() usage before sanitization<\/li>\n<li>Security: Resolved WordPress.DB.PreparedSQL.InterpolatedNotPrepared warnings<\/li>\n<\/ul>\n\n<h4>1.4.3<\/h4>\n\n<ul>\n<li>Security improvements: Enhanced nonce verification and input sanitization<\/li>\n<li>Fixed WordPress security warnings for form processing<\/li>\n<\/ul>\n\n<h4>1.4.2<\/h4>\n\n<ul>\n<li>Added automatic Google Meet conference creation for appointments<\/li>\n<\/ul>\n\n<h4>1.4.1<\/h4>\n\n<ul>\n<li>Improved saving of weekly availability<\/li>\n<li>Persist dismissal of encryption key warning per-user<\/li>\n<li>Better stability for Google sync<\/li>\n<\/ul>","raw_excerpt":"Professional appointment booking system designed specifically for therapists and psychologists.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/257243","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/sl.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/sl.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=257243"}],"author":[{"embeddable":true,"href":"https:\/\/sl.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/dkoreiba"}],"wp:attachment":[{"href":"https:\/\/sl.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=257243"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/sl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=257243"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/sl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=257243"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/sl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=257243"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/sl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=257243"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/sl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=257243"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}