{"id":295134,"date":"2026-04-09T21:09:00","date_gmt":"2026-04-09T21:09:00","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/workshop-booking\/"},"modified":"2026-04-09T21:08:38","modified_gmt":"2026-04-09T21:08:38","slug":"workshop-booking","status":"publish","type":"plugin","link":"https:\/\/snd.wordpress.org\/plugins\/workshop-booking\/","author":20547842,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.9","stable_tag":"1.0.9","tested":"6.9.4","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"Workshop Booking","header_author":"Workshop Software","header_description":"Embed a public booking widget for Workshop Software on any page or post. Customers can select services, choose available dates, and submit booking requests directly from your website.","assets_banners_color":"","last_updated":"2026-04-09 21:08:38","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.workshopsoftware.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":32,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.9":{"tag":"1.0.9","author":"jameswssw","date":"2026-04-09 21:08:38"}},"upgrade_notice":{"1.0.5":"<p>Updated API endpoints, alphabetical service sorting, region-aware registration label, and uppercase input.<\/p>","1.0.3":"<p>Simplified date selection (time picker removed) and fixed a display bug with the Individual\/Business toggle on some themes.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3502859,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3502859,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":[],"assets_blueprints":{},"all_blocks":{"workshop-booking\/widget":{"name":"workshop-booking\/widget","title":"Workshop Booking"}},"tagged_versions":["1.0.9"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"The booking widget on a live site \u2014 Step 1: Service selection.","2":"Step 2: Weekly availability calendar.","3":"Step 3: Customer and vehicle details form.","4":"Step 4: Review and submit.","5":"Settings page in WordPress admin."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[276,9982,269,259855,18341],"plugin_category":[40],"plugin_contributors":[259856],"plugin_business_model":[],"class_list":["post-295134","plugin","type-plugin","status-publish","hentry","plugin_tags-appointment","plugin_tags-automotive","plugin_tags-booking","plugin_tags-mechanic","plugin_tags-workshop","plugin_category-calendar-and-events","plugin_contributors-jameswssw","plugin_committers-jameswssw"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/workshop-booking\/assets\/icon-128x128.png?rev=3502859","icon_2x":"https:\/\/ps.w.org\/workshop-booking\/assets\/icon-256x256.png?rev=3502859","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Workshop Booking adds an online booking form to your WordPress site, powered by your <a href=\"https:\/\/www.workshopsoftware.com\">Workshop Software<\/a> account. Customers can:<\/p>\n\n<ul>\n<li>Browse available services (appointment types configured in Workshop Software)<\/li>\n<li>Check real-time availability by week<\/li>\n<li>Choose a preferred date<\/li>\n<li>Enter their details and vehicle registration<\/li>\n<li>Submit a booking request directly to your workshop<\/li>\n<\/ul>\n\n<p>The widget is clean, mobile-responsive, and designed to blend into any theme.<\/p>\n\n<p><strong>How it works:<\/strong><\/p>\n\n<p>The plugin communicates securely with the Workshop Software public booking API. Your API credentials are stored server-side in WordPress and never exposed to visitors' browsers \u2014 all API calls are proxied through your WordPress installation.<\/p>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li>Four-step booking flow: Services \u2192 Date \u2192 Details \u2192 Confirm<\/li>\n<li>Gutenberg block and <code>[workbo_booking]<\/code> shortcode<\/li>\n<li>Individual and business customer support<\/li>\n<li>Vehicle details capture (registration, make, model, year)<\/li>\n<li>Server-side API proxy \u2014 credentials never reach the browser<\/li>\n<li>Configurable accent colour to match your brand<\/li>\n<li>Adjustable booking window (1\u201352 weeks ahead)<\/li>\n<li>Fully responsive for mobile, tablet, and desktop<\/li>\n<li>WordPress nonce verification for CSRF protection<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the Workshop Software public booking API to display available services and dates, and to submit customer booking requests on your behalf.<\/p>\n\n<p><strong>What the service is:<\/strong> Workshop Software is an automotive workshop management platform. The public booking API is provided by Workshop Software and hosted on Amazon Web Services (AWS). The API endpoint used depends on your selected region:<\/p>\n\n<ul>\n<li>Australia: <code>https:\/\/avc8wsa04h.execute-api.ap-southeast-2.amazonaws.com\/Production<\/code> (AWS Asia Pacific, Sydney)<\/li>\n<li>United Kingdom: <code>https:\/\/public-booking-api.workshopsoftwareuk.com<\/code> (AWS Europe, London)<\/li>\n<li>United States: <code>https:\/\/public-booking-api.workshopsoftware.com<\/code> (AWS US East, N. Virginia)<\/li>\n<\/ul>\n\n<p><strong>What data is sent and when:<\/strong><\/p>\n\n<ul>\n<li>When the booking widget loads, the plugin fetches the list of available appointment types for your workshop. No customer data is sent at this stage.<\/li>\n<li>When a customer browses availability, their selected date and service IDs are sent to retrieve schedule information. No personally identifiable information is transmitted.<\/li>\n<li>When a customer submits a booking request, the following data is sent to the Workshop Software API: first name, last name (or company name), email address, phone number, preferred contact method, vehicle registration\/plate number, vehicle make, model, year, selected services, preferred date, and any optional notes entered by the customer.<\/li>\n<\/ul>\n\n<p>All API communication is proxied server-side through your WordPress installation. Your API credentials (API Key and API Secret) are stored in the WordPress <code>wp_options<\/code> table and are never sent to the visitor's browser.<\/p>\n\n<p><strong>Service provider links:<\/strong><\/p>\n\n<ul>\n<li><a href=\"https:\/\/workshopsoftware.com\/terms-conditions\/\">Workshop Software Terms and Conditions<\/a><\/li>\n<li><a href=\"https:\/\/workshopsoftware.com\/privacy-policy\/\">Workshop Software Privacy Policy<\/a><\/li>\n<\/ul>\n\n<h3>Privacy<\/h3>\n\n<p>No customer data entered through the booking widget is stored in your WordPress database. All data is transmitted directly to your Workshop Software account via the API described above.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>workshop-booking<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install directly via <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong> using the zip file.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Go to <strong>Settings \u2192 Workshop Booking<\/strong> and enter your Region, Company ID, API Key, and API Secret (provided by Workshop Software).<\/li>\n<li>Add the booking widget to any page using the <code>[workbo_booking]<\/code> shortcode or the <strong>Workshop Booking<\/strong> block in the block editor.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20do%20i%20get%20my%20api%20credentials%3F\"><h3>Where do I get my API credentials?<\/h3><\/dt>\n<dd><p>Your Company ID, API Key, and API Secret are provided by Workshop Software. Contact <a href=\"https:\/\/www.workshopsoftware.com\">Workshop Software support<\/a> if you need help locating them.<\/p><\/dd>\n<dt id=\"can%20i%20customise%20the%20colours%3F\"><h3>Can I customise the colours?<\/h3><\/dt>\n<dd><p>Yes. In <strong>Settings \u2192 Workshop Booking<\/strong>, set a primary colour as a hex code (e.g. <code>#FF6600<\/code>). This controls buttons, progress indicators, and accent highlights throughout the widget. For advanced customisation, override the CSS custom properties (e.g. <code>--wb-primary<\/code>) in your theme's custom CSS.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20page%20builders%3F\"><h3>Does this work with page builders?<\/h3><\/dt>\n<dd><p>Yes. Use the <code>[workbo_booking]<\/code> shortcode inside any page builder's text or shortcode module \u2014 Elementor, Beaver Builder, Divi, WPBakery, etc.<\/p><\/dd>\n<dt id=\"are%20api%20credentials%20exposed%20to%20visitors%3F\"><h3>Are API credentials exposed to visitors?<\/h3><\/dt>\n<dd><p>No. All API communication is handled server-side via a WordPress AJAX proxy. Your API key and secret are never sent to the browser.<\/p><\/dd>\n<dt id=\"does%20the%20widget%20store%20customer%20data%20on%20my%20site%3F\"><h3>Does the widget store customer data on my site?<\/h3><\/dt>\n<dd><p>No. All customer data is sent directly to your Workshop Software account via the API. Nothing is stored in your WordPress database.<\/p><\/dd>\n<dt id=\"what%20happens%20after%20a%20customer%20submits%20a%20booking%3F\"><h3>What happens after a customer submits a booking?<\/h3><\/dt>\n<dd><p>The booking request appears in your Workshop Software account as a pending request. You can then confirm, reschedule, or contact the customer.<\/p><\/dd>\n<dt id=\"is%20the%20widget%20mobile-friendly%3F\"><h3>Is the widget mobile-friendly?<\/h3><\/dt>\n<dd><p>Yes. The widget is fully responsive and works on all modern browsers and devices.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Added per-field sanitization of booking submission data (book endpoint): each field from php:\/\/input is now sanitized with the appropriate WordPress function (sanitize_text_field, sanitize_email, sanitize_textarea_field) and only whitelisted fields are forwarded to the external API.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Fixed booking submission: local_start_time now sent with UTC timezone suffix (Z) as required by the Workshop Software API ISO 8601 format validation.<\/li>\n<li>Removed Plugin URI from plugin header to avoid it matching Author URI (WordPress.org requirement).<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Fixed output escaping: proxy response now sent via wp_send_json() instead of unescaped echo.<\/li>\n<li>Renamed internal prefix from wb_ to workbo_ throughout (functions, constants, options, hooks, shortcode) to meet WordPress 4-character prefix requirement.<\/li>\n<li>Fixed Plugin URI (was returning 404).<\/li>\n<li>Added == External services == section to readme.txt documenting Workshop Software API usage, data transmitted, and links to Terms of Service and Privacy Policy.<\/li>\n<li>Added jameswssw to Contributors list.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Preferred contact method now defaults to SMS instead of unselected.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Updated API endpoints for all regions (Australia, United Kingdom, United States) to match v1.0.1 of the Workshop Public Booking API.<\/li>\n<li>Services now sorted alphabetically.<\/li>\n<li>Registration field label adapts by region: \"Registration\" for AU\/UK, \"License plate\" for US.<\/li>\n<li>Registration input forced to uppercase as the user types.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Simplified booking flow \u2014 customers now select a preferred date only (time picker removed).<\/li>\n<li>Fixed Individual\/Business toggle button text visibility on themes that override button colours.<\/li>\n<li>Version bump for improved browser cache busting.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Four-step booking flow: Services, Date, Details, Confirm.<\/li>\n<li>Gutenberg block and shortcode support.<\/li>\n<li>Server-side API proxy for secure credential handling.<\/li>\n<li>Configurable primary colour and booking window length.<\/li>\n<\/ul>","raw_excerpt":"Embed a public booking widget for Workshop Software on your website. Let your customers book appointments directly from any page.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/snd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/295134","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/snd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/snd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/snd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=295134"}],"author":[{"embeddable":true,"href":"https:\/\/snd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jameswssw"}],"wp:attachment":[{"href":"https:\/\/snd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=295134"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/snd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=295134"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/snd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=295134"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/snd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=295134"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/snd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=295134"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/snd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=295134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}