{"id":398410,"date":"2026-11-02T20:07:01","date_gmt":"2026-11-02T20:07:01","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/resovu-booking\/"},"modified":"2026-11-03T05:44:26","modified_gmt":"2026-11-03T05:44:26","slug":"resovu-booking","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/resovu-booking\/","author":23598801,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.4.0","stable_tag":"1.4.0","tested":"7.1.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Resovu Booking \u2013 Appointment and Accommodation Booking Form","header_author":"Resovu","header_description":"Online booking from Resovu on your WordPress site: an inline booking form or a popup button, in 9 languages.","assets_banners_color":"888888","last_updated":"2026-11-03 05:44:26","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.resovu.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":74,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.0":{"tag":"1.1.0","author":"resovu","date":"2026-11-02 20:06:53","revision":3780658},"1.4.0":{"tag":"1.4.0","author":"resovu","date":"2026-11-03 05:44:26","revision":3781145}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3780658,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3780658,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3780658,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3780658,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3781145,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/?pagename=book-online\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"steps\":[{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"installPlugin\",\"options\":{\"activate\":true},\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"resovu-booking\"}},{\"step\":\"setSiteOptions\",\"options\":{\"resovu_tenant\":\"resovu-services\",\"resovu_lang\":\"en\"}},{\"step\":\"wp-cli\",\"command\":\"wp post create --post_type=page --post_status=publish --post_name=book-online --post_title='Book online' --post_content='<h2>Booking button<\\\/h2>[resovu_button]<h2>Booking form<\\\/h2>[resovu_booking]'\"}]}"}},"all_blocks":{"resovu\/search":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"resovu\/search","version":"1.4.0","title":"Resovu Accommodation Search","category":"widgets","icon":"search","description":"Check-in, check-out and guests: opens your Resovu accommodation booking with these dates.","keywords":["accommodation","availability","booking"],"textdomain":"resovu-booking","attributes":{"target":{"type":"string","enum":["popup","page"],"default":"popup"},"pageId":{"type":"number","default":0},"url":{"type":"string","default":""},"guests":{"type":"number","default":2},"text":{"type":"string","default":""},"service":{"type":"string","default":""},"lang":{"type":"string","default":""},"tenant":{"type":"string","default":""}},"supports":{"html":false,"align":["wide","full"]},"editorScript":"resovu-booking-block-editor"},"resovu\/booking":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"resovu\/booking","version":"1.4.0","title":"Resovu Booking","category":"widgets","icon":"calendar-alt","description":"Your Resovu booking form, or a button that opens the booking in a window.","keywords":["booking","reservation","appointment"],"textdomain":"resovu-booking","attributes":{"mode":{"type":"string","enum":["form","button"],"default":"form"},"text":{"type":"string","default":""},"service":{"type":"string","default":""},"lang":{"type":"string","default":""},"context":{"type":"boolean","default":false},"tenant":{"type":"string","default":""},"lazy":{"type":"boolean","default":true},"consent":{"type":"boolean","default":false},"redirect":{"type":"string","default":""}},"supports":{"html":false,"align":["wide","full"]},"editorScript":"resovu-booking-block-editor"}},"tagged_versions":["1.1.0","1.4.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3780658,"resolution":"1","location":"assets","locale":"","width":1280,"height":860},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3780658,"resolution":"2","location":"assets","locale":"","width":1280,"height":860},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3780658,"resolution":"3","location":"assets","locale":"","width":1280,"height":860},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3780658,"resolution":"4","location":"assets","locale":"","width":1280,"height":860}},"screenshots":{"1":"Appointment booking inside a page with [resovu_booking] (demo business).","2":"Accommodation booking inside a page with [resovu_booking]: choose a unit, then dates and price (demo property).","3":"The booking window opened by the button [resovu_button]; the visitor stays on your site.","4":"Settings \u2192 Resovu Booking: your business address in Resovu and the booking language."}},"plugin_section":[],"plugin_tags":[13685,8133,269,8125,1475],"plugin_category":[40],"plugin_contributors":[290390],"plugin_business_model":[],"class_list":["post-398410","plugin","type-plugin","status-publish","hentry","plugin_tags-accommodation","plugin_tags-appointment-booking","plugin_tags-booking","plugin_tags-booking-form","plugin_tags-reservations","plugin_category-calendar-and-events","plugin_contributors-resovu","plugin_committers-resovu"],"banners":{"banner":"https:\/\/ps.w.org\/resovu-booking\/assets\/banner-772x250.png?rev=3780658","banner_2x":"https:\/\/ps.w.org\/resovu-booking\/assets\/banner-1544x500.png?rev=3780658","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/resovu-booking\/assets\/icon-128x128.png?rev=3780658","icon_2x":"https:\/\/ps.w.org\/resovu-booking\/assets\/icon-256x256.png?rev=3780658","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/resovu-booking\/assets\/screenshot-1.png?rev=3780658","caption":"Appointment booking inside a page with [resovu_booking] (demo business)."},{"src":"https:\/\/ps.w.org\/resovu-booking\/assets\/screenshot-2.png?rev=3780658","caption":"Accommodation booking inside a page with [resovu_booking]: choose a unit, then dates and price (demo property)."},{"src":"https:\/\/ps.w.org\/resovu-booking\/assets\/screenshot-3.png?rev=3780658","caption":"The booking window opened by the button [resovu_button]; the visitor stays on your site."},{"src":"https:\/\/ps.w.org\/resovu-booking\/assets\/screenshot-4.png?rev=3780658","caption":"Settings \u2192 Resovu Booking: your business address in Resovu and the booking language."}],"raw_content":"<!--section=description-->\n<p><strong>Let customers book you directly on your own WordPress site.<\/strong> Resovu Booking puts your <a href=\"https:\/\/www.resovu.com\/?utm_source=wordpress&amp;utm_medium=plugin&amp;utm_campaign=resovu-booking\">Resovu<\/a> booking page into any post or page \u2013 as a booking form inside the page or as a button that opens the booking in a window, so visitors stay on your site.<\/p>\n\n<p>Resovu is an online booking system for small businesses. A free plan is available.<\/p>\n\n<h4>Who it is for<\/h4>\n\n<ul>\n<li><strong>Appointments<\/strong> \u2013 salons, barbers, massage and beauty studios, clinics and therapists, tutors and coaches, shops with in-store appointments. Visitors pick a service, a time and, optionally, a staff member.<\/li>\n<li><strong>Accommodation (stays)<\/strong> \u2013 holiday homes, apartments, cottages and guesthouses. Visitors pick a unit and dates in a calendar with nightly prices and see the total price before booking.<\/li>\n<\/ul>\n\n<p>The plugin shows the right booking form automatically, based on how your business is set up in Resovu.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Block for the block editor<\/strong> \u2013 add the \"Resovu Booking\" block and choose a booking form or a button in the block settings (WordPress 6.3 or newer).<\/li>\n<li><strong>Choose the service from a list<\/strong> \u2013 the block and the shortcode generator load your services or accommodation units from Resovu, so you don't need to look up IDs.<\/li>\n<li><strong>Shortcode generator<\/strong> \u2013 build a shortcode in Settings \u2192 Resovu Booking and copy it into Elementor, Divi or any other page builder.<\/li>\n<li><strong>Accommodation search box<\/strong> \u2013 <code>[resovu_search]<\/code> or the \"Resovu Accommodation Search\" block: check-in, check-out and guests open the booking with these dates, in a window or on your booking page.<\/li>\n<li><strong>Block patterns<\/strong> \u2013 ready-made sections \"Booking page\", \"Service with a button\" and \"Accommodation with search\" under Patterns \u2192 Resovu.<\/li>\n<li><strong>Booking form in the page<\/strong> \u2013 <code>[resovu_booking]<\/code> places the whole booking inside the page. It loads only when the visitor scrolls to it, so your page stays fast.<\/li>\n<li><strong>Booking button<\/strong> \u2013 <code>[resovu_button]<\/code> adds a button that opens the booking in a window on top of your page. Use it as many times as you like.<\/li>\n<li><strong>Floating button on the whole site<\/strong> \u2013 one setting shows a booking button in the bottom corner of every page, with your own text and color.<\/li>\n<li><strong>WooCommerce product pages<\/strong> \u2013 optionally adds a booking button to every product page; the booking includes the product name, its page address and its SKU.<\/li>\n<li><strong>9 booking languages<\/strong> \u2013 Czech, Slovak, English, German, Polish, Hungarian, Spanish, Norwegian and French. By default the booking follows the language of the page, also on multilingual sites with WPML, Polylang or TranslatePress; you can also set one language for the site or for each shortcode or block.<\/li>\n<li><strong>Privacy-friendly<\/strong> \u2013 optionally loads the booking only after a click, and works with the WP Consent API (Complianz, CookieYes and other cookie banners). The embedded booking sets only necessary cookies and shows no cookie banner of its own.<\/li>\n<li><strong>Thank-you page<\/strong> \u2013 after a finished booking the visitor can go to a page of your choice, for example to count conversions.<\/li>\n<li><strong>Preselect a service<\/strong> \u2013 link a button straight to one service with <code>service=\"\u2026\"<\/code>.<\/li>\n<li><strong>Know where the booking came from<\/strong> \u2013 <code>context=\"auto\"<\/code> sends the title and address of the current page with the booking (for example the product or room page the visitor was on); <code>context_code=\"\u2026\"<\/code> adds your own short code such as a SKU.<\/li>\n<li><strong>Fits your theme<\/strong> \u2013 the button uses your theme's button style and accepts your own CSS class.<\/li>\n<li><strong>Address check and Site Health<\/strong> \u2013 when you save the settings, the plugin checks that your business address exists in Resovu; Tools \u2192 Site Health shows whether the booking page and the booking script are reachable.<\/li>\n<li><strong>Works with cache and optimisation plugins<\/strong> \u2013 WP Rocket, Autoptimize, LiteSpeed Cache, SiteGround Optimizer and Cloudflare Rocket Loader leave the booking script alone.<\/li>\n<li><strong>For developers<\/strong> \u2013 PHP filters and JavaScript events for your own tracking (see the FAQ).<\/li>\n<li><strong>Lightweight<\/strong> \u2013 the booking script loads only on pages that need it. No database tables and no scheduled tasks; the settings are removed when you delete the plugin.<\/li>\n<li><strong>Admin in your language<\/strong> \u2013 the plugin's settings and block are translated into Czech, Slovak, German, Polish, Hungarian, Spanish, Norwegian and French.<\/li>\n<\/ul>\n\n<h4>How it works<\/h4>\n\n<ol>\n<li>Create your business in Resovu (a free plan is available) and set up your services or accommodation units.<\/li>\n<li>Install and activate this plugin.<\/li>\n<li>Go to Settings \u2192 Resovu Booking and enter your business address in Resovu (the part after resovu.com\/).<\/li>\n<li>Add the Resovu Booking block, <code>[resovu_booking]<\/code> or <code>[resovu_button]<\/code> to any page or post \u2013 or switch on the floating button.<\/li>\n<\/ol>\n\n<h4>Shortcodes<\/h4>\n\n<pre><code>[resovu_booking] \u2013 the booking form inside the page.\n\n[resovu_button] \u2013 a button that opens the booking in a window.\n\n[resovu_search] \u2013 the accommodation search box (check-in, check-out, guests).\n<\/code><\/pre>\n\n<p>Optional attributes (for all shortcodes unless noted):<\/p>\n\n<ul>\n<li><code>text=\"Book a visit\"<\/code> \u2013 button text (<code>[resovu_button]<\/code> only). Without it the button says \"Book now\" in the booking language.<\/li>\n<li><code>class=\"my-class\"<\/code> \u2013 an extra CSS class for the button (<code>[resovu_button]<\/code> only).<\/li>\n<li><code>service=\"\u2026\"<\/code> \u2013 the ID of a service to preselect. You find it in the address of the service on your Resovu booking page, after <code>serviceId=<\/code>.<\/li>\n<li><code>context=\"auto\"<\/code> \u2013 sends the title and address of this page with the booking; <code>context=\"Any name\"<\/code> sends a name of your own instead.<\/li>\n<li><code>context_code=\"SKU-123\"<\/code> \u2013 a short code (SKU, product or room code) sent with the booking.<\/li>\n<li><code>lang=\"de\"<\/code> \u2013 the booking language for this shortcode: cs, sk, en, de, pl, hu, es, no or fr.<\/li>\n<li><code>tenant=\"other-business\"<\/code> \u2013 shows a different Resovu business than the one in Settings.<\/li>\n<li><code>lang=\"auto\"<\/code> \u2013 the language of the page (also with WPML, Polylang or TranslatePress).<\/li>\n<li><code>lazy=\"false\"<\/code> \u2013 loads the booking form at once instead of when the visitor scrolls to it (<code>[resovu_booking]<\/code> only).<\/li>\n<li><code>consent=\"click\"<\/code> \u2013 loads the booking form only after a click; <code>consent_text=\"\u2026\"<\/code> sets your own text (<code>[resovu_booking]<\/code> only).<\/li>\n<li><code>redirect=\"\u2026\"<\/code> \u2013 the address or page ID of a thank-you page shown after a finished booking.<\/li>\n<li><code>target=\"page\"<\/code> and <code>url=\"\u2026\"<\/code> \u2013 the search box opens the booking on your page with <code>[resovu_booking]<\/code> (address or page ID) instead of in a window (<code>[resovu_search]<\/code> only).<\/li>\n<li><code>guests=\"2\"<\/code> \u2013 the preset number of guests (<code>[resovu_search]<\/code> only).<\/li>\n<\/ul>\n\n<p>Example: <code>[resovu_button text=\"Book this massage\" context=\"auto\"]<\/code><\/p>\n\n<h4>Useful links<\/h4>\n\n<ul>\n<li><a href=\"https:\/\/www.resovu.com\/?utm_source=wordpress&amp;utm_medium=plugin&amp;utm_campaign=resovu-booking\">Resovu website<\/a><\/li>\n<li><a href=\"https:\/\/help.resovu.com\/\">Help center<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/support\/plugin\/resovu-booking\/\">Support forum<\/a><\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to Resovu, the booking service it embeds.<\/p>\n\n<ul>\n<li>What is loaded: the script https:\/\/www.resovu.com\/widget.js and, inside it, your booking page from https:\/\/www.resovu.com.<\/li>\n<li>When: only on pages that contain a Resovu block, the <code>[resovu_booking]<\/code>, <code>[resovu_button]<\/code> or <code>[resovu_search]<\/code> shortcode, or the WooCommerce booking button \u2013 and on every page when the floating button is switched on. With \"Load after a click\" the booking page is loaded only after the visitor clicks.<\/li>\n<li>What is sent: the visitor's browser requests these files from Resovu, as with any embedded content. With <code>context=\"auto\"<\/code> (and on WooCommerce product pages) the page title, address and product code are sent with the booking. The data a visitor enters into the booking form goes to Resovu and to the business that runs the booking page.<\/li>\n<li>Address check: when you save the settings and when an administrator opens Tools \u2192 Site Health, your server requests your public booking page https:\/\/www.resovu.com\/your-address\/embed (and, in Site Health, https:\/\/www.resovu.com\/widget.js) to check that they are reachable. Only the address is sent.<\/li>\n<li>Service list: in the block editor and on the settings page, your server requests the public list of your services or units from https:\/\/www.resovu.com\/api\/public\/v1\/catalog\/your-address (names, categories and durations, no personal data) for users who can edit posts. The answer is kept for 10 minutes.<\/li>\n<li>No other data is sent: the plugin has no tracking or usage statistics.<\/li>\n<li>Service provider: Resovu \u2013 Terms: https:\/\/www.resovu.com\/en\/terms \u2013 Privacy: https:\/\/www.resovu.com\/en\/privacy<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>In WordPress go to Plugins \u2192 Add Plugin, search for \"Resovu Booking\", click Install Now and then Activate.<\/li>\n<li>Go to Settings \u2192 Resovu Booking.<\/li>\n<li>Enter your business address in Resovu \u2013 the part after resovu.com\/. You find it in Resovu under Settings \u2192 Embed on website.<\/li>\n<li>Choose the booking language or keep \"Same as the page\".<\/li>\n<li>Add the Resovu Booking block, <code>[resovu_booking]<\/code> or <code>[resovu_button]<\/code> to any page.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20resovu%20account%3F\"><h3>Do I need a Resovu account?<\/h3><\/dt>\n<dd><p>Yes. The plugin shows your Resovu booking page on your site. You can <a href=\"https:\/\/www.resovu.com\/signup?utm_source=wordpress&amp;utm_medium=plugin&amp;utm_campaign=resovu-booking\">create an account on the free plan<\/a>.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20free%3F\"><h3>Is the plugin free?<\/h3><\/dt>\n<dd><p>Yes, the plugin is free and has no paid version. What you can do in the booking (number of services, staff and features) depends on your Resovu plan; a free plan is available.<\/p><\/dd>\n<dt id=\"i%20already%20have%20a%20resovu%20account.%20what%20do%20i%20do%3F\"><h3>I already have a Resovu account. What do I do?<\/h3><\/dt>\n<dd><p>Enter your business address in Settings \u2192 Resovu Booking. Your services, prices and opening hours come from Resovu, so there is nothing to set up twice.<\/p><\/dd>\n<dt id=\"does%20it%20work%20for%20accommodation%20as%20well%20as%20appointments%3F\"><h3>Does it work for accommodation as well as appointments?<\/h3><\/dt>\n<dd><p>Yes. If your business in Resovu takes stays, the same block and shortcodes show a unit and date picker with nightly prices; otherwise they show services and times.<\/p><\/dd>\n<dt id=\"where%20are%20bookings%20managed%3F\"><h3>Where are bookings managed?<\/h3><\/dt>\n<dd><p>In Resovu. New bookings, changes and cancellations are handled in your Resovu account, not in WordPress.<\/p><\/dd>\n<dt id=\"where%20is%20the%20booking%20data%20stored%3F\"><h3>Where is the booking data stored?<\/h3><\/dt>\n<dd><p>The data a visitor enters into the booking form goes to Resovu and to the business that runs the booking page. The plugin stores nothing in your WordPress database except its own settings. See the External services section and the <a href=\"https:\/\/www.resovu.com\/en\/privacy\">Resovu privacy policy<\/a>.<\/p><\/dd>\n<dt id=\"which%20language%20will%20my%20visitors%20see%3F\"><h3>Which language will my visitors see?<\/h3><\/dt>\n<dd><p>By default the language of the page, if Resovu supports it (Czech, Slovak, English, German, Polish, Hungarian, Spanish, Norwegian or French); otherwise English. On multilingual sites with WPML, Polylang or TranslatePress the booking follows the language of each page. You can set one language in Settings, in the block or with <code>lang=\"\u2026\"<\/code> in a shortcode.<\/p><\/dd>\n<dt id=\"can%20i%20use%20it%20with%20the%20block%20editor%2C%20elementor%20or%20other%20page%20builders%3F\"><h3>Can I use it with the block editor, Elementor or other page builders?<\/h3><\/dt>\n<dd><p>Yes. In the block editor use the Resovu Booking block. In Elementor and other page builders paste the shortcode into a Shortcode widget or a text module \u2013 the shortcode generator in Settings \u2192 Resovu Booking builds it for you.<\/p><\/dd>\n<dt id=\"can%20i%20put%20a%20booking%20button%20on%20every%20product%20or%20room%20page%3F\"><h3>Can I put a booking button on every product or room page?<\/h3><\/dt>\n<dd><p>Yes. With WooCommerce switch on \"Show a booking button on product pages\" in Settings \u2192 Resovu Booking. On other pages use <code>[resovu_button context=\"auto\"]<\/code> \u2013 the business then sees in the booking which page the customer came from. Add <code>context_code=\"\u2026\"<\/code> for a SKU or room code.<\/p><\/dd>\n<dt id=\"can%20i%20change%20the%20button%20text%20or%20style%3F\"><h3>Can I change the button text or style?<\/h3><\/dt>\n<dd><p>Yes: <code>[resovu_button text=\"Book a visit\" class=\"my-button\"]<\/code>. The button also uses your theme's button style. The floating button has its own text, color and position (bottom right or left) in Settings.<\/p><\/dd>\n<dt id=\"can%20i%20use%20it%20on%20more%20pages%3F\"><h3>Can I use it on more pages?<\/h3><\/dt>\n<dd><p>Yes. Forms and buttons can be used on as many pages as you like, also several times on one page.<\/p><\/dd>\n<dt id=\"is%20it%20gdpr-friendly%3F%20does%20it%20set%20cookies%3F\"><h3>Is it GDPR-friendly? Does it set cookies?<\/h3><\/dt>\n<dd><p>The embedded booking sets only necessary cookies (for example the booking language), no analytics or marketing cookies, and shows no cookie banner of its own. If you want nothing to load from Resovu before the visitor agrees, switch on \"Load after a click\" in Settings \u2192 Resovu Booking or use <code>consent=\"click\"<\/code>. With the WP Consent API plugin (used by Complianz, CookieYes and other cookie banners) the form also waits for a click until the visitor allows functional cookies, and the Resovu cookies are listed in your cookie policy.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20wp%20rocket%2C%20autoptimize%2C%20litespeed%20cache%20or%20cloudflare%3F\"><h3>Does it work with WP Rocket, Autoptimize, LiteSpeed Cache or Cloudflare?<\/h3><\/dt>\n<dd><p>Yes. The plugin excludes the booking script from combining, deferring and \"delay JavaScript\" in WP Rocket, Autoptimize, LiteSpeed Cache and SiteGround Optimizer, and from Cloudflare Rocket Loader. With other optimisation plugins exclude \"resovu\" in their JavaScript settings if the booking does not appear.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20wpml%2C%20polylang%20or%20translatepress%3F\"><h3>Does it work with WPML, Polylang or TranslatePress?<\/h3><\/dt>\n<dd><p>Yes. With the language \"Same as the page\" (the default) the booking opens in the language of each page. Button texts can be translated with WPML String Translation or per page in the shortcode.<\/p><\/dd>\n<dt id=\"can%20i%20measure%20bookings%20in%20google%20analytics%2C%20tag%20manager%20or%20meta%20pixel%3F\"><h3>Can I measure bookings in Google Analytics, Tag Manager or Meta Pixel?<\/h3><\/dt>\n<dd><p>Yes. After a finished booking the Resovu script sends the event <code>resovu_booking<\/code> to the dataLayer (Google Tag Manager), <code>generate_lead<\/code> to Google Analytics 4 (gtag) and <code>Schedule<\/code> to Meta Pixel, when these tools are on your site \u2013 they follow your own consent settings. It also fires the JavaScript events <code>resovu:booking<\/code> (detail: tenant, service, bookingRef, value, currency, serviceName), <code>resovu:open<\/code> and <code>resovu:close<\/code> on <code>window<\/code>. Example: <code>window.addEventListener('resovu:booking', function (e) { console.log(e.detail.bookingRef); });<\/code><\/p><\/dd>\n<dt id=\"can%20i%20send%20visitors%20to%20a%20thank-you%20page%20after%20the%20booking%3F\"><h3>Can I send visitors to a thank-you page after the booking?<\/h3><\/dt>\n<dd><p>Yes. Choose a page under Settings \u2192 Resovu Booking \u2192 After the booking, or set <code>redirect=\"\u2026\"<\/code> (an address or a page ID) in a shortcode or block. The visitor goes there right after the booking is finished. When the customer pays by card online, they go to the payment page instead and the thank-you page is not shown; you see these bookings in Resovu.<\/p><\/dd>\n<dt id=\"how%20does%20the%20accommodation%20search%20box%20work%3F\"><h3>How does the accommodation search box work?<\/h3><\/dt>\n<dd><p>[resovu_search] (or the \"Resovu Accommodation Search\" block) shows check-in, check-out and guests. By default the booking opens in a window with these dates. With <code>target=\"page\" url=\"\u2026\"<\/code> it opens your own page with <code>[resovu_booking]<\/code> and passes the dates in the address (?checkin=\u2026&amp;checkout=\u2026&amp;guests=\u2026).<\/p><\/dd>\n<dt id=\"are%20there%20hooks%20for%20developers%3F\"><h3>Are there hooks for developers?<\/h3><\/dt>\n<dd><p>Yes: the PHP filters <code>resovu_booking_shortcode_atts<\/code> (attributes of a shortcode or block before they are checked), <code>resovu_booking_html<\/code> (the finished HTML) and <code>resovu_booking_script_attributes<\/code> (attributes of the booking script tag), and the JavaScript events described above.<\/p><\/dd>\n<dt id=\"nothing%20shows%20on%20my%20page.\"><h3>Nothing shows on my page.<\/h3><\/dt>\n<dd><p>Check that your business address is filled in under Settings \u2192 Resovu Booking; when you save, the plugin tells you whether the address was found. Logged-in editors see a short reminder in place of the form when the address is missing; visitors see nothing. Tools \u2192 Site Health also shows whether Resovu is reachable. If you use a cache or optimisation plugin that combines or delays JavaScript, clear its cache; if the booking still does not appear, exclude \"resovu\" in its JavaScript settings.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>New: choose the service or accommodation unit from a list in the block and in the new shortcode generator (Settings \u2192 Resovu Booking).<\/li>\n<li>New: accommodation search box <code>[resovu_search]<\/code> and block \"Resovu Accommodation Search\" (check-in, check-out, guests).<\/li>\n<li>New: block patterns \"Booking page\", \"Service with a button\" and \"Accommodation with search\".<\/li>\n<li>New: the booking form loads when the visitor scrolls to it (<code>lazy<\/code>), and the booking script is kept away from WP Rocket, Autoptimize, LiteSpeed Cache, SiteGround Optimizer and Cloudflare Rocket Loader.<\/li>\n<li>New: \"Load after a click\" (<code>consent=\"click\"<\/code>) and WP Consent API support.<\/li>\n<li>New: the booking follows the language of the page with WPML, Polylang and TranslatePress.<\/li>\n<li>New: thank-you page after the booking (<code>redirect<\/code>).<\/li>\n<li>New: Site Health test and a clearer note for editors when the booking cannot be shown.<\/li>\n<li>New: PHP filters and documented JavaScript events for developers.<\/li>\n<li>More than one booking form per page.<\/li>\n<li>Stricter checks of all shortcode and block attributes.<\/li>\n<li>The business address also accepts a full Resovu link (e.g. https:\/\/www.resovu.com\/my-salon).<\/li>\n<li>Deleting the plugin also removes its cached service lists.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>New: \"Resovu Booking\" block for the block editor (form or button, language, service, page context).<\/li>\n<li>New: floating booking button on the whole site, with your own text, color and position.<\/li>\n<li>New: optional booking button on WooCommerce product pages, with the product name and SKU.<\/li>\n<li>New: the business address is checked when you save the settings.<\/li>\n<li>New: the plugin's settings and block are translated into Czech, Slovak, German, Polish, Hungarian, Spanish, Norwegian and French.<\/li>\n<li>New: links to help, support and reviews in the plugin list, and a sign-up link in the settings.<\/li>\n<li>Clearer descriptions and setup hint (Settings \u2192 Embed on website in Resovu).<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>All 9 Resovu languages and \"same as the website\".<\/li>\n<li>Default button text in the booking language.<\/li>\n<li>Optional service, page context and product code attributes.<\/li>\n<li>Settings are sanitised; the setup note is shown to editors only.<\/li>\n<li>Settings are removed when the plugin is deleted.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First version.<\/li>\n<\/ul>","raw_excerpt":"Online booking for appointments and holiday stays: add your Resovu booking form, a block or a booking button to your site, in 9 languages.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/398410","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=398410"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/resovu"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=398410"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=398410"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=398410"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=398410"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=398410"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=398410"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}