{"id":389334,"date":"2026-10-24T08:28:51","date_gmt":"2026-10-24T08:28:51","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/bayle-booking-widget\/"},"modified":"2026-10-24T08:47:45","modified_gmt":"2026-10-24T08:47:45","slug":"bayle-booking-widget","status":"publish","type":"plugin","link":"https:\/\/os.wordpress.org\/plugins\/bayle-booking-widget\/","author":23589020,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.3.0","stable_tag":"0.3.0","tested":"7.1.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Bayle Booking Widget","header_author":"Bayle","header_description":"Embed Bayle table booking on your restaurant website. No API keys in WordPress.","assets_banners_color":"798f83","last_updated":"2026-10-24 08:47:45","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/bayle.food","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":90,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.3.0":{"tag":"0.3.0","author":"bayle","date":"2026-10-24 08:47:45","revision":3762953}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3762953,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3762953,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3762953,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3762953,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"bayle\/booking-widget":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"bayle\/booking-widget","version":"0.3.0","title":"Bayle Booking","category":"widgets","icon":"calendar-alt","description":"Embed the Bayle table booking form.","keywords":["booking","reservation","restaurant","bayle"],"textdomain":"bayle-booking-widget","attributes":{"slug":{"type":"string","default":""},"lang":{"type":"string","default":""}},"supports":{"html":false,"align":["wide","full"]},"editorScript":"bayle-booking-widget-block","style":"bayle-booking-widget"}},"tagged_versions":["0.3.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3762953,"resolution":"1","location":"assets","locale":"","width":1280,"height":1000},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3762953,"resolution":"2","location":"assets","locale":"","width":1280,"height":860},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3762953,"resolution":"3","location":"assets","locale":"","width":1280,"height":640}},"screenshots":{"1":"The Bayle booking form embedded on a restaurant page: guests pick party size, date and a free time, then send the request without leaving your site.","2":"Add the Bayle Booking block in the editor. Optionally set a different restaurant slug or language for this block.","3":"Settings \u2192 Bayle Booking Widget: enter your Bayle restaurant slug. No API keys are needed."}},"plugin_section":[],"plugin_tags":[269,1860,722,20710],"plugin_category":[39,40],"plugin_contributors":[288197],"plugin_business_model":[],"class_list":["post-389334","plugin","type-plugin","status-publish","hentry","plugin_tags-booking","plugin_tags-iframe","plugin_tags-reservation","plugin_tags-restaurant","plugin_category-business","plugin_category-calendar-and-events","plugin_contributors-bayle","plugin_committers-bayle"],"banners":{"banner":"https:\/\/ps.w.org\/bayle-booking-widget\/assets\/banner-772x250.png?rev=3762953","banner_2x":"https:\/\/ps.w.org\/bayle-booking-widget\/assets\/banner-1544x500.png?rev=3762953","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/bayle-booking-widget\/assets\/icon-128x128.png?rev=3762953","icon_2x":"https:\/\/ps.w.org\/bayle-booking-widget\/assets\/icon-256x256.png?rev=3762953","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/bayle-booking-widget\/assets\/screenshot-1.png?rev=3762953","caption":"The Bayle booking form embedded on a restaurant page: guests pick party size, date and a free time, then send the request without leaving your site."},{"src":"https:\/\/ps.w.org\/bayle-booking-widget\/assets\/screenshot-2.png?rev=3762953","caption":"Add the Bayle Booking block in the editor. Optionally set a different restaurant slug or language for this block."},{"src":"https:\/\/ps.w.org\/bayle-booking-widget\/assets\/screenshot-3.png?rev=3762953","caption":"Settings \u2192 Bayle Booking Widget: enter your Bayle restaurant slug. No API keys are needed."}],"raw_content":"<!--section=description-->\n<p>Bayle Booking Widget embeds the Bayle reservation form on a WordPress page.<\/p>\n\n<p>This plugin is an interface to the Bayle booking service at <code>https:\/\/widget.bayle.food<\/code>. You need an active Bayle restaurant with the booking widget module turned on. The plugin stores only the restaurant slug and widget base URL. It does not store API keys and does not call Bayle food APIs from PHP.<\/p>\n\n<p>Booking finishes inside the iframe. Guest name, email, phone, and optional notes entered in the form are sent to Bayle to create the reservation.<\/p>\n\n<p>Add the <strong>Bayle Booking<\/strong> block, or the shortcode <code>[bayle_booking]<\/code>.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the Bayle booking service, operated by Bayle (https:\/\/bayle.food). It is required: without it there is no booking form.<\/p>\n\n<ul>\n<li>Service: Bayle booking widget, loaded in an iframe from <code>https:\/\/widget.bayle.food<\/code> (or another official <code>https:\/\/*.bayle.food<\/code> host set by the site admin).<\/li>\n<li>When: every time a visitor loads a page that contains the Bayle Booking block or the <code>[bayle_booking]<\/code> shortcode, and when the visitor submits a reservation.<\/li>\n<li>What is sent: the restaurant slug and optional language code in the iframe URL; the visitor's IP address and the embedding site's address (referrer origin) as part of the normal page request; and, on submit, the reservation details the visitor types (name, email, phone, party size, date, time, optional notes).<\/li>\n<li>Human verification: inside the iframe, the form runs a Cap.js proof-of-work captcha from Bayle's own captcha service at <code>https:\/\/captcha.bayle.food<\/code> (the challenge script and verification API are loaded from that host when the visitor fills in the form). No Google reCAPTCHA or other third-party captcha is used, and the plugin itself does not load this script on your site.<\/li>\n<li>Why: to show live table availability and create the booking with the restaurant.<\/li>\n<li>Terms of Service: https:\/\/bayle.food\/legal\/terms\/<\/li>\n<li>Privacy Policy: https:\/\/bayle.food\/legal\/privacy\/<\/li>\n<\/ul>\n\n<p>The plugin itself makes no server-side requests to Bayle, sets no cookies and adds no tracking.<\/p>\n\n<h3>Shortcode<\/h3>\n\n<p>Basic:<\/p>\n\n<pre><code>[bayle_booking]\n<\/code><\/pre>\n\n<p>Override the slug or language on one page:<\/p>\n\n<pre><code>[bayle_booking slug=\"demo-pizza\" lang=\"fi\"]\n\nbase_url can also be overridden, but only with an official `https:\/\/*.bayle.food` address; other values are ignored.\n\nlang is matched to the restaurant's enabled storefront locales. If omitted, the plugin sends the WordPress site language.\n<\/code><\/pre>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>bayle-booking-widget<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the zip from Plugins \u2192 Add New \u2192 Upload Plugin.<\/li>\n<li>Activate <strong>Bayle Booking Widget<\/strong>.<\/li>\n<li>Open <strong>Settings \u2192 Bayle Booking Widget<\/strong>.<\/li>\n<li>Set the restaurant slug (from Bayle restaurant CMS). Leave the widget base URL as <code>https:\/\/widget.bayle.food<\/code> unless Bayle gave you another host.<\/li>\n<li>Optionally lock this site in restaurant CMS \u2192 Booking widget allowed hosts.<\/li>\n<li>Insert the <strong>Bayle Booking<\/strong> block, or <code>[bayle_booking]<\/code>, on a page.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20api%20keys%20in%20wordpress%3F\"><h3>Do I need API keys in WordPress?<\/h3><\/dt>\n<dd><p>No. Keys stay on Bayle servers. WordPress only iframes the public widget URL.<\/p><\/dd>\n<dt id=\"why%20is%20the%20form%20blank%20or%20%E2%80%9Cunavailable%E2%80%9D%3F\"><h3>Why is the form blank or \u201cunavailable\u201d?<\/h3><\/dt>\n<dd><p>The restaurant slug must be correct, the booking widget module must be on, and the restaurant must be active. If you locked allowed hosts in CMS, this WordPress hostname must be on that list.<\/p><\/dd>\n<dt id=\"where%20does%20guest%20data%20go%3F\"><h3>Where does guest data go?<\/h3><\/dt>\n<dd><p>Name, email, phone, and notes are submitted inside the Bayle iframe to create the reservation. This plugin does not keep a copy in the WordPress database.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Block is now registered from block.json.<\/li>\n<li>Shortcode <code>base_url<\/code> override only accepts official <code>https:\/\/*.bayle.food<\/code> hosts; anything else falls back to the admin setting.<\/li>\n<li>Added suggested privacy policy text (Settings \u2192 Privacy).<\/li>\n<li>Added translation template (languages\/bayle-booking-widget.pot) and GPLv2 LICENSE.<\/li>\n<li>Expanded External services section (including the captcha host) with Terms of Service and Privacy Policy links.<\/li>\n<li>Tested up to WordPress 7.1.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Gutenberg block, translatable strings, and a production-ready install zip.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release with settings page and iframe shortcode.<\/li>\n<\/ul>","raw_excerpt":"Embed Bayle table booking on your restaurant website. Guests book in place; WordPress never holds API keys.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/389334","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=389334"}],"author":[{"embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/bayle"}],"wp:attachment":[{"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=389334"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=389334"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=389334"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=389334"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=389334"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=389334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}