{"id":351852,"date":"2026-08-12T09:27:18","date_gmt":"2026-08-12T09:27:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/cabintale-booking-calendar\/"},"modified":"2026-08-12T09:27:09","modified_gmt":"2026-08-12T09:27:09","slug":"cabintale-booking-calendar","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/cabintale-booking-calendar\/","author":23546607,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.7.4","stable_tag":"0.7.4","tested":"7.0.4","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"Cabintale Booking Calendar","header_author":"Cabintale","header_description":"Show live availability and take bookings for your cabin, cottage or rental with a Cabintale widget \u2014 as a block or a shortcode.","assets_banners_color":"cccccc","last_updated":"2026-08-12 09:27:09","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/cabintale.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":16,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.7.4":{"tag":"0.7.4","author":"cabintale","date":"2026-08-12 09:27:09"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3643106,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3643106,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3643106,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3643106,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"cabintale\/widget":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"cabintale\/widget","version":"0.7.4","title":"Cabintale booking widget","category":"widgets","icon":"calendar-alt","description":"Live availability and bookings for one of your Cabintale places or services.","keywords":["booking","bookings","calendar","availability","reservation","rental","cabin","cottage","cabintale"],"textdomain":"cabintale-booking-calendar","supports":{"html":false,"align":["wide","full"],"spacing":{"margin":true,"padding":true}},"attributes":{"token":{"type":"string","default":""},"kind":{"type":"string","default":"place"},"border":{"type":"boolean","default":true},"availabilityOnly":{"type":"boolean","default":false}},"editorScript":"cabintale-bc-editor","render":"file:.\/render.php"}},"tagged_versions":["0.7.4"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3643106,"resolution":"1","location":"assets","locale":"","width":2870,"height":2072},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3643106,"resolution":"2","location":"assets","locale":"","width":2614,"height":1638},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3643106,"resolution":"3","location":"assets","locale":"","width":1406,"height":1152},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3643106,"resolution":"4","location":"assets","locale":"","width":2670,"height":1792},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3643106,"resolution":"5","location":"assets","locale":"","width":1718,"height":1784}},"screenshots":{"1":"A live availability calendar on a published page, with your own dates and prices.","2":"The Cabintale booking widget block, added to a page like any other block.","3":"Pick a widget by name in the block settings \u2014 no IDs to copy.","4":"Settings \u2192 Cabintale: your connected account, every widget with its own shortcode, and a live preview.","5":"Connecting is read-only. Cabintale names the site asking and shows exactly what it may see."}},"plugin_section":[],"plugin_tags":[1279,269,416,1475,6467],"plugin_category":[40],"plugin_contributors":[275318],"plugin_business_model":[],"class_list":["post-351852","plugin","type-plugin","status-publish","hentry","plugin_tags-availability","plugin_tags-booking","plugin_tags-calendar","plugin_tags-reservations","plugin_tags-vacation-rental","plugin_category-calendar-and-events","plugin_contributors-cabintale","plugin_committers-cabintale"],"banners":{"banner":"https:\/\/ps.w.org\/cabintale-booking-calendar\/assets\/banner-772x250.png?rev=3643106","banner_2x":"https:\/\/ps.w.org\/cabintale-booking-calendar\/assets\/banner-1544x500.png?rev=3643106","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/cabintale-booking-calendar\/assets\/icon-128x128.png?rev=3643106","icon_2x":"https:\/\/ps.w.org\/cabintale-booking-calendar\/assets\/icon-256x256.png?rev=3643106","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/cabintale-booking-calendar\/assets\/screenshot-1.jpg?rev=3643106","caption":"A live availability calendar on a published page, with your own dates and prices."},{"src":"https:\/\/ps.w.org\/cabintale-booking-calendar\/assets\/screenshot-2.jpg?rev=3643106","caption":"The Cabintale booking widget block, added to a page like any other block."},{"src":"https:\/\/ps.w.org\/cabintale-booking-calendar\/assets\/screenshot-3.jpg?rev=3643106","caption":"Pick a widget by name in the block settings \u2014 no IDs to copy."},{"src":"https:\/\/ps.w.org\/cabintale-booking-calendar\/assets\/screenshot-4.jpg?rev=3643106","caption":"Settings \u2192 Cabintale: your connected account, every widget with its own shortcode, and a live preview."},{"src":"https:\/\/ps.w.org\/cabintale-booking-calendar\/assets\/screenshot-5.jpg?rev=3643106","caption":"Connecting is read-only. Cabintale names the site asking and shows exactly what it may see."}],"raw_content":"<!--section=description-->\n<p>Cabintale Booking Calendar puts your Cabintale booking widget on your WordPress site without touching any code.<\/p>\n\n<p>Add the <strong>Cabintale booking widget<\/strong> block in the block editor, or use the <code>[cabintale_widget]<\/code> shortcode in Elementor, Bricks, the classic editor or a theme template. Both produce the same widget.<\/p>\n\n<p><strong>What you get on your page<\/strong><\/p>\n\n<ul>\n<li>An availability calendar showing which dates are free, with your prices<\/li>\n<li>Time-slot booking for services (saunas, hot tubs, guided tours)<\/li>\n<li>A checkout button for products and vouchers<\/li>\n<li>Availability-only mode, when you want to show a calendar without taking bookings<\/li>\n<\/ul>\n\n<p><strong>Why use the plugin instead of pasting embed code<\/strong><\/p>\n\n<p>Many themes, security plugins and page builders strip <code>&lt;script&gt;<\/code> tags out of post content, which quietly breaks copy-and-paste embed snippets. This plugin enqueues the script the way WordPress expects, so the widget keeps working. It also loads that script <strong>only<\/strong> on pages where you actually placed a widget.<\/p>\n\n<h4>Do I need a Cabintale account?<\/h4>\n\n<p>Yes. Cabintale is a booking system for cabins, cottages and small rentals, and this plugin displays widgets from it. <strong>Creating an account is free<\/strong> \u2014 the free Starter plan covers up to 2 places and 2 services, availability calendars, seasonal pricing and two-way iCal sync with Airbnb, Booking.com and Vrbo. Taking booking requests through the widget and accepting payments are paid plans \u2014 both are free for everyone while Cabintale is in beta.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to Cabintale, the booking service that stores your places, availability and widgets. It is required for the plugin to do anything.<\/p>\n\n<p>Every request below goes to <code>admin.cabintale.com<\/code>. Nothing else is contacted, and no request is made on a front-end page that has no widget on it.<\/p>\n\n<p><strong>On your public pages, when a page contains a widget.<\/strong> The visitor's browser loads <code>admin.cabintale.com\/widget-embed.js<\/code> and displays the widget in an iframe from the same domain. As with any embedded content, those requests carry the visitor's IP address and browser user agent. If the visitor makes a booking, whatever they type into the widget is submitted to Cabintale.<\/p>\n\n<p><strong>When you click \"Connect to Cabintale\"<\/strong> (optional \u2014 the plugin also works with a pasted widget ID). Your browser is sent to <code>admin.cabintale.com\/connect\/wordpress<\/code> with your site's URL, your site's name and the WordPress address to return to, so Cabintale can show you what it is about to grant. If you approve it, this site exchanges a one-time code at <code>\/api\/v1\/connect\/token<\/code>, server to server, and stores the read-only access token it gets back.<\/p>\n\n<p><strong>While you are connected.<\/strong> Your server sends the token to <code>\/api\/v1\/widgets<\/code> to fetch the names of your places, services and widgets \u2014 on the Settings \u2192 Cabintale screen and in the block editor, cached for ten minutes. Clicking Disconnect posts the token to <code>\/api\/v1\/connect\/revoke<\/code> so Cabintale invalidates it. No visitor data is involved in any of these.<\/p>\n\n<p><strong>When you open a preview in Settings \u2192 Cabintale.<\/strong> That preview is the live widget in an iframe, so your own browser's IP address and user agent reach Cabintale exactly as a visitor's would. Previews load only when you click one, never on page load.<\/p>\n\n<p>Service provided by Cabintale: <a href=\"https:\/\/cabintale.com\/\">cabintale.com<\/a> \u2014 <a href=\"https:\/\/cabintale.com\/legal\">terms of service and privacy policy<\/a>.<\/p>\n\n<h3>Shortcode attributes<\/h3>\n\n<ul>\n<li><code>token<\/code> \u2014 the widget ID. Defaults to the one saved in Settings \u2192 Cabintale.<\/li>\n<li><code>type<\/code> \u2014 <code>property<\/code> (availability calendar), <code>service<\/code> (time slots) or <code>checkout<\/code> (product button). Default <code>property<\/code>. <code>place<\/code> is accepted as a synonym.<\/li>\n<li><code>border<\/code> \u2014 <code>1<\/code> or <code>0<\/code>. Default <code>1<\/code>.<\/li>\n<li><code>availability_only<\/code> \u2014 <code>1<\/code> or <code>0<\/code>. Places only. Default <code>0<\/code>.<\/li>\n<\/ul>\n\n<p>Example: <code>[cabintale_widget type=\"service\" border=\"0\"]<\/code><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Go to <strong>Settings \u2192 Cabintale<\/strong> and click <strong>Connect to Cabintale<\/strong>. Sign in, or create a free account \u2014 the sign-up walks you through adding your place, prices and availability, and makes your first widget for you.<\/li>\n<li>Back in WordPress, click <strong>Create my booking page<\/strong> \u2014 or add the <strong>Cabintale booking widget<\/strong> block to any page and pick a widget from the list.<\/li>\n<\/ol>\n\n<p>Prefer not to connect? Paste a widget ID under \"Use a widget ID instead\" and skip the rest.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20have%20to%20copy%20a%20widget%20id%3F\"><h3>Do I have to copy a widget ID?<\/h3><\/dt>\n<dd><p>No. Connect your account under Settings \u2192 Cabintale and your widgets appear in a dropdown, by name. The ID field is still there if you prefer it.<\/p><\/dd>\n<dt id=\"what%20can%20this%20plugin%20see%20in%20my%20cabintale%20account%3F\"><h3>What can this plugin see in my Cabintale account?<\/h3><\/dt>\n<dd><p>Only the names of your places, services and widgets. The connection is read-only: it cannot see your bookings, guests or payments, and it cannot change anything. You can disconnect it at any time from Settings \u2192 Cabintale or from your Cabintale settings.<\/p><\/dd>\n<dt id=\"where%20do%20i%20find%20my%20widget%20id%2C%20if%20i%20want%20to%20use%20one%3F\"><h3>Where do I find my widget ID, if I want to use one?<\/h3><\/dt>\n<dd><p>Log in to Cabintale, open the widget you want to show, and copy the ID from its embed code. It looks like <code>3f8a1c22-9b41-4d0e-8a77-2c1f9e5d4b60<\/code>.<\/p><\/dd>\n<dt id=\"is%20it%20free%3F\"><h3>Is it free?<\/h3><\/dt>\n<dd><p>The plugin is free, and Cabintale has a free Starter plan that includes the embeddable widget, availability calendar, seasonal pricing and iCal sync. Accepting booking requests and payments through the widget belongs to a paid Cabintale plan, but is free for everyone while Cabintale is in beta.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20elementor%2C%20bricks%20or%20the%20classic%20editor%3F\"><h3>Does it work with Elementor, Bricks or the classic editor?<\/h3><\/dt>\n<dd><p>Yes. Use the shortcode <code>[cabintale_widget]<\/code> anywhere those accept shortcodes.<\/p><\/dd>\n<dt id=\"can%20i%20show%20more%20than%20one%20widget%20on%20a%20page%3F\"><h3>Can I show more than one widget on a page?<\/h3><\/dt>\n<dd><p>Yes. Add as many blocks or shortcodes as you need, each with its own widget ID.<\/p><\/dd>\n<dt id=\"can%20i%20show%20availability%20without%20taking%20bookings%3F\"><h3>Can I show availability without taking bookings?<\/h3><\/dt>\n<dd><p>Yes. Turn on <strong>Availability only<\/strong> in the block settings, or use <code>[cabintale_widget availability_only=\"1\"]<\/code>.<\/p><\/dd>\n<dt id=\"my%20widget%20is%20set%20to%20two%20or%20three%20months%2C%20but%20fewer%20show%20up\"><h3>My widget is set to two or three months, but fewer show up<\/h3><\/dt>\n<dd><p>The calendar fits as many months as it has room for, and drops the rest rather than squeezing them until the dates are unreadable. Each month needs roughly 320 pixels, so two months want about 640 and three about 960.<\/p>\n\n<p>Most themes make the content column narrower than that \u2014 645 pixels is typical \u2014 which is enough for two months but not three. Give the widget more room and the missing months come back:<\/p>\n\n<ul>\n<li><strong>The Cabintale block:<\/strong> select it and use the alignment button in its toolbar \u2014 <strong>Wide width<\/strong> usually gives around 1300 pixels, <strong>Full width<\/strong> gives the whole screen.<\/li>\n<li><strong>A shortcode in the block editor:<\/strong> WordPress's Shortcode block has no alignment of its own. Select it, open the options menu (three dots) and choose <strong>Group<\/strong>, then set that Group to Wide or Full width.<\/li>\n<li><strong>Elementor, Bricks, Divi:<\/strong> widen the section, container or column the shortcode sits in, or set it to full width.<\/li>\n<li><strong>Any theme:<\/strong> many offer a full-width or no-sidebar page template, which widens everything on the page.<\/li>\n<\/ul>\n\n<p>On a phone you will always see one month, whatever the setting. Three months side by side on a 390 pixel screen would be unusable.<\/p><\/dd>\n<dt id=\"why%20does%20the%20block%20show%20a%20card%20instead%20of%20the%20widget%20while%20i%20am%20editing%3F\"><h3>Why does the block show a card instead of the widget while I am editing?<\/h3><\/dt>\n<dd><p>The editor shows a placeholder on purpose. The booking dialog opens as a full-screen overlay, which does not behave well nested inside the editor canvas. Preview or publish the page to see the real widget.<\/p><\/dd>\n<dt id=\"the%20widget%20does%20not%20appear%20on%20my%20page\"><h3>The widget does not appear on my page<\/h3><\/dt>\n<dd><p>Check that the widget ID is correct and that the widget is active in Cabintale. If your site is behind a security plugin or a strict content security policy, allow <code>admin.cabintale.com<\/code>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.7.4<\/h4>\n\n<ul>\n<li>Translations now come from translate.wordpress.org, so every locale the community translates is delivered automatically instead of only the ones bundled here.<\/li>\n<\/ul>\n\n<h4>0.7.3<\/h4>\n\n<ul>\n<li>New FAQ: how much room a two- or three-month calendar needs, and where to widen it \u2014 including the Shortcode block, which has no alignment of its own.<\/li>\n<\/ul>\n\n<h4>0.7.2<\/h4>\n\n<ul>\n<li>The cached widget list is now invalidated when its shape changes, so an upgrade can no longer show stale \"Needs setup\" badges for ten minutes.<\/li>\n<li>Uninstalling now clears the stored token on every site of a large network, not just the first hundred.<\/li>\n<li>The preview timeout no longer announces a failure for a panel you already closed, and says plainly that it only knows nothing arrived.<\/li>\n<\/ul>\n\n<h4>0.7.1<\/h4>\n\n<ul>\n<li>The \"Needs setup\" badge now sits under the widget type instead of beside its name, and the status message after connecting no longer lands inside the Cabintale header.<\/li>\n<\/ul>\n\n<h4>0.7.0<\/h4>\n\n<ul>\n<li>Every string in the plugin is now translatable.<\/li>\n<li>Fixed a fatal error on the settings screen introduced in 0.6.0.<\/li>\n<li>Fixed every widget being labelled \"needs setup\" even when its availability was set up.<\/li>\n<li>A preview that cannot load now says so after ten seconds, instead of showing \"Loading preview\u2026\" forever.<\/li>\n<li>Clearer external-services disclosure: every request this plugin makes to Cabintale, and what it carries.<\/li>\n<\/ul>\n\n<h4>0.6.0<\/h4>\n\n<ul>\n<li>Widgets with no availability set up in Cabintale are now flagged in the editor and in Settings, so an empty calendar explains itself.<\/li>\n<\/ul>\n\n<h4>0.5.2<\/h4>\n\n<ul>\n<li>Fixed the widgets table clipping its buttons and squeezing every column.<\/li>\n<\/ul>\n\n<h4>0.5.1<\/h4>\n\n<ul>\n<li>A link straight to your Cabintale account from the settings screen.<\/li>\n<li>Fixed misaligned button icons and the shortcode Copy button wrapping onto its own line.<\/li>\n<\/ul>\n\n<h4>0.5.0<\/h4>\n\n<ul>\n<li>Every widget now shows its own shortcode with a copy button \u2014 the path that works in Elementor, Bricks, Divi, the classic editor and theme templates.<\/li>\n<li>\"Create booking page\" is now a secondary shortcut called \"Create a starter page\", and says plainly that it uses your theme default layout.<\/li>\n<\/ul>\n\n<h4>0.4.2<\/h4>\n\n<ul>\n<li>Fixed the widgets table being squeezed into a narrow column.<\/li>\n<\/ul>\n\n<h4>0.4.1<\/h4>\n\n<ul>\n<li>Wider settings layout, and the widget actions are now buttons rather than a text link.<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Each widget now links straight to its style, language and booking-form settings in Cabintale.<\/li>\n<li>Links to the Cabintale documentation throughout the settings screen.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Cabintale branding on the settings screen, layered over standard WordPress admin components so it still follows your admin colour scheme.<\/li>\n<li>Settings screen rebuilt: it now explains what lives in Cabintale and what lives in WordPress, and only shows instructions once they can be acted on.<\/li>\n<li>Preview any widget from the settings screen before putting it on a page.<\/li>\n<li>Connect, Disconnect and Create booking page now show progress instead of sitting silent for a second.<\/li>\n<li>Terminology follows the Cabintale documentation \u2014 a single cabin is a \"property\". The shortcode accepts <code>type=\"property\"<\/code> as well as <code>type=\"place\"<\/code>.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Connect your Cabintale account and pick widgets by name instead of copying IDs.<\/li>\n<li>The block now asks only which widget to show \u2014 each one is labelled as a place, service or product, so there is no type to keep in sync.<\/li>\n<li>Settings screen rewritten to explain what lives in Cabintale and what lives in WordPress, with links to the right place for each.<\/li>\n<li>One-click \"Create my booking page\".<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First release: Cabintale booking widget block, <code>[cabintale_widget]<\/code> shortcode, and a default-widget setting.<\/li>\n<\/ul>","raw_excerpt":"Show live availability and take bookings for your cabin, cottage or rental. Add your Cabintale widget as a block or a shortcode.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/351852","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=351852"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/cabintale"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=351852"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=351852"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=351852"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=351852"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=351852"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=351852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}