{"id":293862,"date":"2026-04-06T09:59:36","date_gmt":"2026-04-06T09:59:36","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/appointment-desk\/"},"modified":"2026-04-30T16:24:22","modified_gmt":"2026-04-30T16:24:22","slug":"vollstart-appointment-desk","status":"publish","type":"plugin","link":"https:\/\/co.wordpress.org\/plugins\/vollstart-appointment-desk\/","author":18077756,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.7","stable_tag":"1.0.7","tested":"6.9.4","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Vollstart Appointment Desk","header_author":"Vollstart","header_description":"Appointment booking & walk-in queue for your front desk. Online bookings, walk-in queue tickets, QR check-in, and a reception cockpit \u2014 all in one plugin.","assets_banners_color":"888bf0","last_updated":"2026-04-30 16:24:22","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/vollstart.com\/wordpress-plugins\/appointment-desk\/","header_author_uri":"https:\/\/vollstart.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":393,"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":"sasonikolov","date":"2026-04-06 11:13:01"},"1.0.1":{"tag":"1.0.1","author":"sasonikolov","date":"2026-04-07 09:11:46"},"1.0.2":{"tag":"1.0.2","author":"sasonikolov","date":"2026-04-08 19:58:14"},"1.0.3":{"tag":"1.0.3","author":"sasonikolov","date":"2026-04-13 15:11:47"},"1.0.5":{"tag":"1.0.5","author":"sasonikolov","date":"2026-04-16 13:14:46"},"1.0.6":{"tag":"1.0.6","author":"sasonikolov","date":"2026-04-20 06:42:38"},"1.0.7":{"tag":"1.0.7","author":"sasonikolov","date":"2026-04-30 16:24:22"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3499667,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3499667,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3499667,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.0.3","1.0.5","1.0.6","1.0.7"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3499667,"resolution":"1","location":"assets","locale":"","width":1101,"height":1095},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3499667,"resolution":"2","location":"assets","locale":"","width":922,"height":530},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3499667,"resolution":"3","location":"assets","locale":"","width":684,"height":793},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3499667,"resolution":"4","location":"assets","locale":"","width":994,"height":1305},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3519745,"resolution":"5","location":"assets","locale":"","width":1280,"height":900},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3499667,"resolution":"6","location":"assets","locale":"","width":1103,"height":693},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3499667,"resolution":"7","location":"assets","locale":"","width":1098,"height":1216}},"screenshots":{"1":"See every appointment at a glance. Confirm, reschedule, never miss one \u2014 reception cockpit, no WordPress login needed.","2":"Customers book in 30 seconds. Mobile, fast, no friction \u2014 frontend booking form with live price display.","3":"Walk-ins pull a queue number at the door \u2014 kiosk page on any tablet, no staff intervention.","4":"Live queue display for waiting rooms \u2014 TV screen in portrait or landscape, customizable themes (Pro).","5":"Your calendar, fully booked. No empty slots, no lost revenue \u2014 admin week view across all staff and services.","6":"Customer CRM \u2014 full appointment history, ratings, and notes per customer.","7":"Settings \u2014 business hours, license, and general configuration. SMS reminders, Google Calendar sync, and CAPTCHA available in Pro."}},"plugin_section":[],"plugin_tags":[8133,274,203073,268,259971],"plugin_category":[40],"plugin_contributors":[225541],"plugin_business_model":[],"class_list":["post-293862","plugin","type-plugin","status-publish","hentry","plugin_tags-appointment-booking","plugin_tags-booking-system","plugin_tags-queue-management","plugin_tags-scheduling","plugin_tags-walk-in-queue","plugin_category-calendar-and-events","plugin_contributors-sasonikolov","plugin_committers-sasonikolov"],"banners":{"banner":"https:\/\/ps.w.org\/vollstart-appointment-desk\/assets\/banner-772x250.png?rev=3499667","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/vollstart-appointment-desk\/assets\/icon-128x128.png?rev=3499667","icon_2x":"https:\/\/ps.w.org\/vollstart-appointment-desk\/assets\/icon-256x256.png?rev=3499667","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/vollstart-appointment-desk\/assets\/screenshot-1.png?rev=3499667","caption":"See every appointment at a glance. Confirm, reschedule, never miss one \u2014 reception cockpit, no WordPress login needed."},{"src":"https:\/\/ps.w.org\/vollstart-appointment-desk\/assets\/screenshot-2.png?rev=3499667","caption":"Customers book in 30 seconds. Mobile, fast, no friction \u2014 frontend booking form with live price display."},{"src":"https:\/\/ps.w.org\/vollstart-appointment-desk\/assets\/screenshot-3.png?rev=3499667","caption":"Walk-ins pull a queue number at the door \u2014 kiosk page on any tablet, no staff intervention."},{"src":"https:\/\/ps.w.org\/vollstart-appointment-desk\/assets\/screenshot-4.png?rev=3499667","caption":"Live queue display for waiting rooms \u2014 TV screen in portrait or landscape, customizable themes (Pro)."},{"src":"https:\/\/ps.w.org\/vollstart-appointment-desk\/assets\/screenshot-5.png?rev=3519745","caption":"Your calendar, fully booked. No empty slots, no lost revenue \u2014 admin week view across all staff and services."},{"src":"https:\/\/ps.w.org\/vollstart-appointment-desk\/assets\/screenshot-6.png?rev=3499667","caption":"Customer CRM \u2014 full appointment history, ratings, and notes per customer."},{"src":"https:\/\/ps.w.org\/vollstart-appointment-desk\/assets\/screenshot-7.png?rev=3499667","caption":"Settings \u2014 business hours, license, and general configuration. SMS reminders, Google Calendar sync, and CAPTCHA available in Pro."}],"raw_content":"<!--section=description-->\n<p><strong>Every empty chair costs you money.<\/strong> Vollstart Appointment Desk turns no-shows and empty slots into booked revenue for hair salons, dental and medical practices, consulting firms, and repair shops. Customers book in 30 seconds. Walk-ins pull a queue number at the door. Native WooCommerce checkout for paid appointments \u2014 no third-party connector, no per-extension upsell.<\/p>\n\n<p>https:\/\/youtu.be\/qBe6n6e66BQ\n<a href=\"https:\/\/youtu.be\/qBe6n6e66BQ\">Video<\/a><\/p>\n\n<p><strong>No double bookings.<\/strong> Slot holds reserve the time slot while the customer fills out the form. Other booking plugins let two customers book the same slot simultaneously \u2014 Appointment Desk prevents this.<\/p>\n\n<p><strong>No per-extension upsells.<\/strong> One plugin, one price. No surprise add-on costs for basic features like email notifications or calendar views.<\/p>\n\n<p><strong>GDPR-friendly by design.<\/strong> All customer data stays in your WordPress database. No external tracking, no third-party data sharing. Your data, your server.<\/p>\n\n<h4>Perfect for<\/h4>\n\n<ul>\n<li><strong>Hair salons &amp; barbershops<\/strong> \u2014 online booking + walk-in queue for busy days<\/li>\n<li><strong>Medical &amp; dental practices<\/strong> \u2014 patient scheduling with check-in kiosk<\/li>\n<li><strong>Consulting firms<\/strong> \u2014 client appointment booking with calendar sync<\/li>\n<li><strong>Government offices &amp; citizen services<\/strong> \u2014 queue numbers + TV display for waiting rooms<\/li>\n<li><strong>Fitness studios &amp; yoga<\/strong> \u2014 class booking with capacity management<\/li>\n<li><strong>Repair shops &amp; workshops<\/strong> \u2014 appointment slots with custom fields<\/li>\n<li><strong>Coworking spaces<\/strong> \u2014 room and desk booking<\/li>\n<li><strong>Any service business<\/strong> that handles both scheduled and walk-in customers<\/li>\n<\/ul>\n\n<h4>Free Features<\/h4>\n\n<ul>\n<li>1 calendar, 1 service, 1 team with 1 staff member \u2014 up to 100 customers and 50 appointments per month<\/li>\n<li>Mobile-friendly online booking form (Shortcode + dedicated booking page)<\/li>\n<li>Multi-column booking layout \u2014 services, calendar, and form side by side<\/li>\n<li>Inline month calendar in multi-column view<\/li>\n<li>Live price display in booking form (updates on service\/extras selection)<\/li>\n<li>Email confirmations for new, cancelled, rescheduled, and declined bookings<\/li>\n<li>ICS calendar file attached to confirmation emails<\/li>\n<li>Day and week view in admin<\/li>\n<li>2 custom fields per booking<\/li>\n<li>Auto-confirm or manual approval workflow<\/li>\n<li>Double Opt-In \u2014 email confirmation before booking is active<\/li>\n<li>Customer self-service: cancellation and reschedule via email links<\/li>\n<li>Slot holds \u2014 prevents double bookings while customer fills out the form<\/li>\n<li>Walk-in queue system: queue numbers, kiosk page, live TV display<\/li>\n<li>QR code check-in and check-out<\/li>\n<li>Customer CRM with full appointment history<\/li>\n<li>Appointment change history \u2014 audit log of status changes, reschedules, and file uploads\/deletes<\/li>\n<li>GDPR customer management \u2014 export data as JSON, import from CSV\/JSON, delete all data with double confirmation<\/li>\n<li>Rating system \u2014 customers rate their experience after the visit<\/li>\n<li>Blocked times for breaks, holidays, and closures<\/li>\n<li>Reception cockpit \u2014 live front desk overview, no WordPress login needed<\/li>\n<\/ul>\n\n<p>https:\/\/www.youtube.com\/watch?v=eXM1meN4CnA<\/p>\n\n<h4>Pro Features<\/h4>\n\n<p>Everything in Free, plus:<\/p>\n\n<ul>\n<li>Unlimited calendars, services, and staff members<\/li>\n<li>Unlimited custom fields<\/li>\n<li>Team management \u2014 assign staff to calendars and services<\/li>\n<li>Service Extras \u2014 optional add-ons per service with price and duration<\/li>\n<li>Special Days \u2014 override business hours for specific dates<\/li>\n<li>Buffer times for preparation and cleanup between appointments<\/li>\n<li>Min. advance time \/ Max. booking window per calendar<\/li>\n<li>File Upload in booking form \u2014 customers attach files with secure storage<\/li>\n<li>Double Opt-In per-calendar override (global\/enabled\/disabled)<\/li>\n<li>WooCommerce integration for paid appointments<\/li>\n<li>ICS feed \u2014 subscribe with Google Calendar, Outlook, or Apple Calendar<\/li>\n<li>Unlimited cockpit auth tokens for staff access<\/li>\n<li>Custom email attachments per email type<\/li>\n<li>Queue themes: Light, Dark, and custom CSS upload<\/li>\n<li>Staff service desk page for multi-desk setups<\/li>\n<li>Remove branding<\/li>\n<\/ul>\n\n<h4>Business Features<\/h4>\n\n<p>Everything in Pro, plus:<\/p>\n\n<ul>\n<li>Customer Self-Service Page \u2014 customers view, cancel, and manage their appointment via a secure token link<\/li>\n<li>Per-calendar override for self-service permissions (cancel, file edit)<\/li>\n<li>Custom HTML email templates \u2014 full control over email content<\/li>\n<li>Rating email \u2014 automatic feedback request after appointments<\/li>\n<li>Google Calendar Sync \u2014 two-way sync (push bookings, read busy times to prevent double bookings), OAuth2 flow, per-calendar assignment<\/li>\n<li>Customer File Management \u2014 files attached directly to customer records (allergies, medical records, contracts). Persists across all appointments.<\/li>\n<\/ul>\n\n<h4>Why Appointment Desk?<\/h4>\n\n<p>Most booking plugins only handle online appointments. But real businesses also have walk-in customers, a reception desk, and a waiting room. Appointment Desk handles all of it:<\/p>\n\n<ol>\n<li><strong>Book<\/strong> \u2014 Customers self-book online. Slot holds prevent double bookings.<\/li>\n<li><strong>Queue<\/strong> \u2014 Walk-ins pull a number. TV display shows who is next.<\/li>\n<li><strong>Done<\/strong> \u2014 Staff manage everything from one cockpit. No spreadsheets, no chaos.<\/li>\n<\/ol>\n\n<p>Built by the team behind <a href=\"https:\/\/wordpress.org\/plugins\/event-tickets-with-ticket-scanner\/\">Event Tickets with Ticket Scanner<\/a>.<\/p>\n\n<h4>Languages<\/h4>\n\n<p>Vollstart Appointment Desk is translated into 20 languages:<\/p>\n\n<ul>\n<li>English (default), German (DE\/AT\/CH), French, Spanish, Italian, Dutch, Portuguese (PT\/BR), Hungarian, Polish, Czech, Swedish, Danish, Finnish, Greek, Romanian, Bulgarian, Chinese (Simplified), Japanese<\/li>\n<\/ul>\n\n<p>All translations are included in the plugin. Community contributions welcome via the WordPress.org translation platform.<\/p>\n\n<h4>Links<\/h4>\n\n<ul>\n<li><a href=\"https:\/\/vollstart.com\/shop\/appointment-desk-pro-business\/\">Premium<\/a><\/li>\n<li><a href=\"mailto:support@vollstart.com\">Support<\/a><\/li>\n<\/ul>\n\n<h4>Third-Party Libraries<\/h4>\n\n<p>This plugin includes the following third-party libraries:<\/p>\n\n<ul>\n<li><strong>FullCalendar<\/strong> v6.1.15 \u2014 <a href=\"https:\/\/fullcalendar.io\/\">fullcalendar.io<\/a> \u2014 MIT License \u2014 <a href=\"https:\/\/github.com\/fullcalendar\/fullcalendar\">Source<\/a><\/li>\n<li><strong>DataTables<\/strong> v2.3.7 \u2014 <a href=\"https:\/\/datatables.net\/\">datatables.net<\/a> \u2014 MIT License \u2014 <a href=\"https:\/\/github.com\/DataTables\/DataTablesSrc\">Source<\/a><\/li>\n<li><strong>html5-qrcode<\/strong> v2.3.8 \u2014 QR code scanning \u2014 MIT License \u2014 <a href=\"https:\/\/github.com\/mebjas\/html5-qrcode\">Source<\/a><\/li>\n<li><strong>chillerlan\/php-qrcode<\/strong> v4.4.2 \u2014 QR code generation \u2014 MIT License \u2014 <a href=\"https:\/\/github.com\/chillerlan\/php-qrcode\">Source<\/a><\/li>\n<\/ul>\n\n<p>All libraries are included locally within the plugin. No external CDN calls are made.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin does not connect to any third-party or external services. All data is stored locally in your WordPress database. No customer data leaves your server.<\/p>\n\n<p>The optional Pro add-on plugin (sold separately at <a href=\"https:\/\/vollstart.com\/\">vollstart.com<\/a>) connects to vollstart.com for license validation and update checks. The free plugin hosted on WordPress.org does not make any external connections.<\/p>\n\n<p>The Business tier of the Pro add-on offers optional Google Calendar Sync. When enabled by the site administrator, appointment data (customer name, email, service, date\/time, location) is sent to the Google Calendar API (<a href=\"https:\/\/developers.google.com\/calendar\">https:\/\/developers.google.com\/calendar<\/a>) to create, update, and delete calendar events. Busy times are read from Google Calendar to prevent double bookings. This requires the administrator to create OAuth 2.0 credentials in the Google Cloud Console and authorize the connection. Google's privacy policy: <a href=\"https:\/\/policies.google.com\/privacy\">https:\/\/policies.google.com\/privacy<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> or install directly via the WordPress plugin search.<\/li>\n<li>Activate through the \"Plugins\" menu in WordPress.<\/li>\n<li>Go to \"Appointment Desk\" in the admin menu.<\/li>\n<li>Create a team and add staff members (Teams tab).<\/li>\n<li>Create a calendar and assign your team (Calendars tab).<\/li>\n<li>Add a service to the calendar.<\/li>\n<li>Add the <code>[vollstart-appointment-desk]<\/code> shortcode to any page \u2014 or use the auto-generated booking page.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20about%20no-shows%3F\"><h3>What about no-shows?<\/h3><\/dt>\n<dd><p>Empty chairs cost money. Appointment Desk reduces no-shows with double opt-in (verifies the email is real before the booking is confirmed), instant email confirmations with one-click reschedule links, and SMS reminders (Pro plan) sent before each appointment \u2014 reaching customers where they actually read messages, not buried in email.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20woocommerce%3F\"><h3>Does it work with WooCommerce?<\/h3><\/dt>\n<dd><p>Yes \u2014 natively. Pair Appointment Desk with WooCommerce to charge for appointments through the standard WooCommerce checkout. Customers see slot availability in real time, pick a time, and pay in the same flow. No third-party connector needed. (Pro plan.)<\/p><\/dd>\n<dt id=\"can%20i%20sync%20with%20google%20calendar%3F\"><h3>Can I sync with Google Calendar?<\/h3><\/dt>\n<dd><p>Yes. The Pro plan includes an ICS feed staff can subscribe to from Google Calendar, Outlook, or Apple Calendar. The Business plan adds two-way Google Calendar sync \u2014 appointments are pushed to your team's calendars and busy times are read back to prevent double bookings.<\/p><\/dd>\n<dt id=\"how%20many%20bookings%20can%20i%20have%20in%20the%20free%20version%3F\"><h3>How many bookings can I have in the free version?<\/h3><\/dt>\n<dd><p>The free version includes 1 calendar, 1 service, 1 team with 1 staff member, up to 100 customers and 50 appointments per month. Upgrade to Pro for unlimited everything.<\/p><\/dd>\n<dt id=\"is%20the%20booking%20form%20mobile-friendly%3F\"><h3>Is the booking form mobile-friendly?<\/h3><\/dt>\n<dd><p>Yes. The booking form is fully responsive and works on all devices and screen sizes. Add it to any page via shortcode or use the auto-generated booking page.<\/p><\/dd>\n<dt id=\"do%20customers%20need%20an%20account%20to%20book%3F\"><h3>Do customers need an account to book?<\/h3><\/dt>\n<dd><p>No. Customers book without registering. They receive an email confirmation with links to cancel or reschedule on their own.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20for%20walk-in%20customers%20without%20an%20appointment%3F\"><h3>Can I use this for walk-in customers without an appointment?<\/h3><\/dt>\n<dd><p>Yes. The queue system lets walk-in customers take a number via a kiosk page. A separate TV display shows the current queue status in real time. Staff call the next customer from the cockpit.<\/p><\/dd>\n<dt id=\"how%20does%20the%20plugin%20prevent%20double%20bookings%3F\"><h3>How does the plugin prevent double bookings?<\/h3><\/dt>\n<dd><p>Slot holds reserve a time slot the moment a customer starts filling out the booking form. If another customer tries to book the same slot, it shows as unavailable. This prevents the overbooking issues common with other booking plugins.<\/p><\/dd>\n<dt id=\"can%20my%20receptionist%20use%20the%20cockpit%20without%20a%20wordpress%20account%3F\"><h3>Can my receptionist use the cockpit without a WordPress account?<\/h3><\/dt>\n<dd><p>Yes. The reception cockpit is a standalone page protected by an auth token. Share the URL with staff \u2014 no WordPress login needed. The free version includes 1 auth token. Pro includes unlimited tokens.<\/p><\/dd>\n<dt id=\"can%20i%20accept%20payments%20for%20appointments%3F\"><h3>Can I accept payments for appointments?<\/h3><\/dt>\n<dd><p>Yes, with the Pro plan. WooCommerce integration lets you charge for appointments through the standard WooCommerce checkout. The free version handles free bookings only.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20require%20woocommerce%3F\"><h3>Does the plugin require WooCommerce?<\/h3><\/dt>\n<dd><p>No. Appointment Desk works fully standalone. WooCommerce integration is available in the Pro plan for paid appointments.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20elementor%2C%20gutenberg%2C%20and%20other%20page%20builders%3F\"><h3>Does it work with Elementor, Gutenberg, and other page builders?<\/h3><\/dt>\n<dd><p>Yes. The booking form is added via shortcode <code>[vollstart-appointment-desk]<\/code>, which works in any page builder, theme, the block editor, or the classic editor.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20appointment%20reminders%3F\"><h3>Does the plugin send appointment reminders?<\/h3><\/dt>\n<dd><p>Yes. The free version sends email confirmations, cancellations, and reschedule notifications. The Pro plan adds SMS reminders before each appointment \u2014 the most effective way to cut no-shows.<\/p><\/dd>\n<dt id=\"is%20all%20customer%20data%20stored%20on%20my%20own%20server%3F\"><h3>Is all customer data stored on my own server?<\/h3><\/dt>\n<dd><p>Yes. All data is stored in your WordPress database. No external services are used for core functionality. The plugin is GDPR-friendly by design \u2014 no customer data leaves your server.<\/p><\/dd>\n<dt id=\"can%20my%20staff%20subscribe%20to%20their%20schedule%20in%20google%20calendar%3F\"><h3>Can my staff subscribe to their schedule in Google Calendar?<\/h3><\/dt>\n<dd><p>Yes. The Pro plan includes an ICS feed that staff can subscribe to from Google Calendar, Outlook, or Apple Calendar. Appointments sync automatically.<\/p><\/dd>\n<dt id=\"how%20is%20this%20different%20from%20bookly%20or%20amelia%3F\"><h3>How is this different from Bookly or Amelia?<\/h3><\/dt>\n<dd><p>Vollstart Appointment Desk combines online booking with a walk-in queue system and a reception cockpit. Most booking plugins focus only on online scheduling. Also: one price, no per-extension upsells \u2014 every Pro feature is included in the Pro plan.<\/p><\/dd>\n<dt id=\"can%20i%20export%20bookings%3F\"><h3>Can I export bookings?<\/h3><\/dt>\n<dd><p>Yes. The admin interface includes CSV export for appointments and customer data.<\/p><\/dd>\n<dt id=\"how%20do%20i%20get%20support%3F\"><h3>How do I get support?<\/h3><\/dt>\n<dd><p>Email us at support@vollstart.com. We respond within 1 business day.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.7 - 2026-04-27<\/h4>\n\n<ul>\n<li>Fix: \"Update available\" badge stayed visible after auto-upgrade of the Pro plugin \u2014 the <code>update_plugins<\/code> site transient was not cleared after the upgrade, so WordPress kept showing the stale notice until the next WP-Cron run (12h). Transient is now cleared + re-checked after upgrade completes.<\/li>\n<li>New: \"First Activated\" date in Support Info \u2014 shows when the plugin was first activated, included in the copyable support text. Marked as \"(estimate)\" for installs predating this version.<\/li>\n<li>Internal: First-activation timestamp is sent to the license server with the next license check (Pro plugin) for free-to-paid analytics.<\/li>\n<li>New: SMS notification infrastructure \u2014 hooks for SMS sending on appointment create, cancel, reschedule, decline<\/li>\n<li>New: SMS log table for tracking sent messages<\/li>\n<li>New: Options filter hook (vollstart_adesk_options) for Pro plugin to register additional settings<\/li>\n<li>Internal: makeOption() now public for extensibility<\/li>\n<\/ul>\n\n<h4>1.0.6 - 2026-04-20<\/h4>\n\n<ul>\n<li>New: vollstart.com branding footer in admin<\/li>\n<li>New: Pro onboarding banner with license key focus when Pro installed but not licensed<\/li>\n<li>New: Pro JS dynamic loading \u2014 adeskButton, adeskModal buttons array, beforeRender\/afterRender hooks, getHelpers API<\/li>\n<\/ul>\n\n<h4>1.0.5 - 2026-04-16<\/h4>\n\n<ul>\n<li>New: Auto-upgrade Pro plugin after valid license key is saved \u2014 no more manual \"Update\" click needed<\/li>\n<li>New: CAPTCHA \/ Anti-Spam for booking form (Pro) \u2014 Honeypot field, minimum form time, and Google reCAPTCHA v3. User can enable any combination. All checks run server-side with generic error messages that do not reveal which check failed.<\/li>\n<li>New: Honeypot anti-spam \u2014 hidden field that bots fill in but humans cannot see. No external service, GDPR-compliant, zero configuration.<\/li>\n<li>New: Minimum form time \u2014 reject bookings submitted faster than a configurable threshold. Bots submit instantly, humans need a few seconds.<\/li>\n<li>New: Google reCAPTCHA v3 \u2014 invisible score-based CAPTCHA. Configurable threshold (default 0.5). Requires free Google API keys. Note in options: sends visitor IP to Google.<\/li>\n<li>Improvement: Option descriptions now shown below the input field (was below the label). Matches POS Desk layout.<\/li>\n<li>Improvement: Option key shown on its own line below the label (was inline next to label).<\/li>\n<li>Improvement: Pro badge on CAPTCHA section heading and all CAPTCHA option labels<\/li>\n<li>Fix: Options sections after File Upload (CAPTCHA, Google Calendar, Advanced) rendered outside the card \u2014 caused by Purge button breaking the div nesting<\/li>\n<li>New: Phasen-Tracking feature planned for POS Desk Gastronomie tier (roadmap)<\/li>\n<li>New: \"More Plugins by Vollstart\" submenu page \u2014 discover other free plugins from the same team<\/li>\n<li>New: Queue TV display \u2014 option to show ticket number on the left and service desk name on the right (reversed layout for portrait orientation)<\/li>\n<li>New: Print button for queue tickets \u2014 backend queue table, plus optional print button and auto-print on kiosk after ticket pull (two new global options)<\/li>\n<li>Fix: Queue auto-skip timezone bug \u2014 cutoff was calculated with wrong timezone offset, either never firing or firing immediately. Now uses MySQL DATE_SUB for timezone-safe comparison.<\/li>\n<li>Fix: Queue number restart bug \u2014 numbers restarted from 001 after ticket deletions because COUNT(*) was used instead of MAX(queue_number)<\/li>\n<li>Fix: Queue table status column \u2014 when a staff is serving a ticket, the table now shows the correct status from the staff card as source of truth<\/li>\n<\/ul>\n\n<h4>1.0.4 - 2026-04-11<\/h4>\n\n<ul>\n<li>Fix: German translations not loading \u2014 loadTextDomain() was empty, load_plugin_textdomain() now called correctly<\/li>\n<li>Fix: 262 untranslated strings in de_DE, de_AT, de_CH now translated<\/li>\n<li>Fix: POT file regenerated from current source (1241 strings)<\/li>\n<li>Fix: de_CH uses \"ss\" instead of \"\u00df\" throughout (Swiss German standard)<\/li>\n<\/ul>\n\n<h4>1.0.3 - 2026-04-11<\/h4>\n\n<ul>\n<li>New: Google Calendar Sync (Business tier) \u2014 push bookings to Google Calendar, read busy times to prevent double bookings<\/li>\n<li>New: Per-calendar Google Calendar assignment in calendar settings<\/li>\n<li>New: OAuth2 connect\/disconnect\/test UI in Options<\/li>\n<li>New: Appointment::updateMeta() for extensible appointment metadata<\/li>\n<li>New: Admin AJAX extension filter for Pro\/Business plugin actions<\/li>\n<li>New: Pro\/Business tier badges on options \u2014 shows which license tier each feature requires<\/li>\n<li>New: Customer Files section in customer detail view with upgrade teaser \u2014 actual implementation in Pro plugin (Business tier)<\/li>\n<li>New: Customer Files section in Files admin tab with upgrade teaser \u2014 lists all customer files across the site (Business tier, Pro plugin)<\/li>\n<li>New: vollstart_adesk_customer_delete_all_data action hook for Pro\/Business cleanup during GDPR delete<\/li>\n<li>New: vollstart_adesk_customer_pdf_after_notes filter hook \u2014 Pro\/Business can inject content (e.g. customer files) into customer PDF<\/li>\n<li>New: Appointment change history \u2014 audit log of status changes, reschedules, and file uploads\/deletes. Shown in appointment detail view.<\/li>\n<li>New: Delete button per file in appointment detail view<\/li>\n<li>New: Bulk customer export \u2014 download all customers as JSON (basic fields, compatible with import)<\/li>\n<li>New: Customer PDF \/ profile print \u2014 printable customer profile with contact, overview stats, appointment history, and notes<\/li>\n<li>New: Professional PDF header with business info (name, address, phone, email) and WordPress custom logo fallback<\/li>\n<li>New: QR code embedded in appointment PDF header (check-in code, replaces previous inline version)<\/li>\n<li>New: Client-side file validation before upload \u2014 checks allowed extensions and max size from global settings<\/li>\n<li>New: CSV export for customer change history \u2014 download button inside the change history box<\/li>\n<li>New: Appointment ID shown in customer appointment history table and in customer PDF<\/li>\n<li>New: Central fmtDateTime() \/ fmtDate() helpers on Main class \u2014 single source of truth for WP-aware datetime formatting<\/li>\n<li>Improvement: Customer detail view redesigned \u2014 Contact + Overview cards side by side (50\/50), appointment history full width below<\/li>\n<li>Improvement: Contact fields (email, phone, notes) shown even when empty<\/li>\n<li>Improvement: All DataTables action columns right-aligned consistently<\/li>\n<li>Improvement: PDF layout uses HTML table header, full-width body (no max-width), left-aligned table headers<\/li>\n<li>Improvement: Notes row always visible in customer PDF (\u2014 when empty)<\/li>\n<li>DB: new table appointment_history<\/li>\n<li>Rename: \"File Manager\" card is now \"Appointment Files\" (to distinguish from new Customer Files section)<\/li>\n<li>New: DEBUG badge in admin header when WP_DEBUG is active<\/li>\n<li>Fix: PDF download crashed due to undefined constant (VOLLSTART_ADESK_VERSION \u2192 VOLLSTART_ADESK_PLUGIN_VERSION)<\/li>\n<li>Fix: Same undefined constant bug on rating page stylesheet<\/li>\n<li>Fix: PDF generation crashed on appointments with array-valued custom fields (multi-select\/checkbox)<\/li>\n<li>Fix: Auto-repair also catches \"table doesn't exist\" errors (not only \"unknown column\") so new tables are created automatically<\/li>\n<li>External Services: documented Google Calendar API usage in readme<\/li>\n<\/ul>\n\n<h4>1.0.2 - 2026-04-07<\/h4>\n\n<ul>\n<li>Fix: Booking page button now uses current slug from options (not stale cached value)<\/li>\n<li>Fix: Rewrite rules registered correctly (direct call instead of nested init hook)<\/li>\n<li>Fix: Options loaded fresh on every tab switch \u2014 changes take effect immediately<\/li>\n<li>Fix: Queue badge polling skipped when not in cockpit or queue tab<\/li>\n<li>New: JS options framework (option_getVal, option_isActive) for reliable option access<\/li>\n<li>New: 20 language translations (DE\/AT\/CH, FR, ES, IT, NL, PT, PT-BR, HU, PL, CZ, SV, DA, FI, EL, RO, BG, ZH-CN, JA)<\/li>\n<li>New: Languages section in readme<\/li>\n<li>Fix: Free team limit corrected in documentation (1 member, not 2)<\/li>\n<li>Fix: Queue kiosk auto-resets to pull screen after timeout (was stuck on called notification)<\/li>\n<li>Fix: Customer rating click now works (was failing because empty name was sent with rating-only update)<\/li>\n<li>Fix: Customer name now shows in cockpit week view and next up box<\/li>\n<li>Fix: Serial shown in full in support info (no masking)<\/li>\n<li>Improvement: Appointment rating shown in cockpit detail view<\/li>\n<li>Improvement: Cockpit week view shows customer name + service name<\/li>\n<li>Improvement: Customer view button in cockpit appointment detail<\/li>\n<li>Improvement: Customer tables wrapped in card layout (consistent with Files tab)<\/li>\n<li>Improvement: Action buttons right-aligned in all tables<\/li>\n<li>Improvement: Search placeholder style in customer table<\/li>\n<li>Refactor: Single enrichAppointment() method replaces duplicate enrich blocks<\/li>\n<li>Refactor: Single card() function for consistent card layout (SRP)<\/li>\n<\/ul>\n\n<h4>1.0.1 - 2026-04-07<\/h4>\n\n<ul>\n<li>Show Pro version in admin header and support info<\/li>\n<li>Minor fixes and improvements<\/li>\n<\/ul>\n\n<h4>1.0.0 - 2026-04-06<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Online appointment booking with calendar, services, and time slots<\/li>\n<li>Walk-in queue system with kiosk page, live TV display, and staff service desk PWA<\/li>\n<li>Reception cockpit \u2014 standalone front desk, no WordPress login needed<\/li>\n<li>Slot holds to prevent double bookings<\/li>\n<li>QR code check-in and check-out<\/li>\n<li>Email notifications: confirmation, cancellation, reschedule, declined<\/li>\n<li>ICS calendar file in confirmation emails<\/li>\n<li>ICS feed for Google Calendar \/ Outlook sync<\/li>\n<li>Customer CRM with appointment history and ratings<\/li>\n<li>Custom fields per booking (2 in free, unlimited in Pro)<\/li>\n<li>Blocked times for holidays, breaks, and closures<\/li>\n<li>Team management with virtual members (no WP account needed)<\/li>\n<li>Multi-desk queue with auto-assign and no-show timeout<\/li>\n<li>TV display: portrait (rows) and landscape (grid) orientation<\/li>\n<li>Multi-column booking layout \u2014 services, calendar, and form side by side<\/li>\n<li>Inline month calendar in multi-column view<\/li>\n<li>Admin: day view, week view, month view with CSV export and print<\/li>\n<li>WooCommerce integration for paid appointments (Pro)<\/li>\n<li>Buffer times for preparation and cleanup (Pro)<\/li>\n<li>Custom queue themes with CSS upload (Pro)<\/li>\n<li>\"Delete data on uninstall\" option (default off)<\/li>\n<li>GDPR-friendly: all data stored locally, no external tracking<\/li>\n<\/ul>","raw_excerpt":"Stop losing money to empty slots and no-shows. Appointment booking + walk-in queue for salons, clinics, consultants, and repair shops.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/293862","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=293862"}],"author":[{"embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sasonikolov"}],"wp:attachment":[{"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=293862"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=293862"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=293862"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=293862"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=293862"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/co.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=293862"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}