

The booking widget on a WordPress page: guests choose their dates, with prices on the calendar, the extras they can add and the security bond shown before checkout.
Anybook takes bookings for anything you rent out or run: by the night, the day, the hour, the seat or the item. Boats and houseboats, cabins, kayaks and bikes, tours and charters, classes, and appointments with your team, all in one booking calendar.
Your guests book, pay and sign on your own website, under your name. They never see Anybook, and Anybook takes no commission on their bookings.
Built for rentals, stays and tours: deposits now and the balance later, security deposits (bonds) held on the card, waivers signed online, and several units in one checkout. Appointments are covered too, in the same account.
Nothing to maintain. Your bookings, calendar and payments live in Anybook, not in your WordPress database, so there are no booking add-ons to update and nothing to lose if your site breaks. One price, nothing to add on: every feature is included on every plan.
See it on a live WordPress site: wp-demo.anybookapp.com is a made-up boat hire business using this plugin. Nothing is charged and no email is sent.
This plugin puts the Anybook booking widget on your WordPress site in two clicks. Anybook is an online booking service with a monthly price; the plugin itself is free and has no locked features (see “What it costs”, below).
Take bookings for anything
Get paid, and keep the bond
Paperwork that writes and signs itself
Run the day from one screen
Anybook has no phone or email help desk. Help comes in three ways:
The plugin is a small connector. Prices, the calendar, bookings, payments and emails all stay on Anybook, so improvements to the widget reach your site without a plugin update.
Add the Anybook booking block anywhere in the block editor. In its sidebar choose what it shows (all your units, one unit, your appointments or one service, listed from your Anybook account), its colors (your theme’s palette is offered), the wording of the booking button and two headings, and whether it opens guests’ email links. Choose Availability overview to show which days are free in the weeks ahead instead; then choose the weeks shown (2 to 26, 12 if left alone), whether prices show, which units (all of them if none is ticked) and whether appointments have one row per service or one row per team member for one service. The overview uses the colors on the plugin’s settings page. A guest who clicks a free day gets the booking widget. The editor shows a preview card; the live widget shows on the published page. A Shortcode block holding [anybook ...] can be turned into the block, keeping its choices.
For the classic editor and page builders, [anybook] shows the same widget with the same choices:
show="all", show="unit", show="appointments" or show="service": what to show (all units if left out).unit="belle": one unit (its code in Anybook).service="cut": one service; services="yes" also means appointments.accent="#0b6e4f" and text="#1f2933": colors.guest_links="yes": this widget opens guests’ email links when a page has several.button_text="Book now", details_heading="About you", dates_text="Pick your dates": wording.The availability overview: [anybook show="overview"], with these choices:
weeks="12": how many weeks it shows, 2 to 26 (12 if left out).prices="yes": show prices.units="belle,kayak": only these units (their codes in Anybook, separated by commas); all units if left out.rows="people" service="...": one row per team member for that one service (its id or code in Anybook); otherwise one row per service.In Elementor, put the shortcode in a Shortcode widget; in Divi, in a Code or Text module. The plugin finds the shortcode in both, so the widget’s script loads in the page’s head and the settings page knows your booking page still holds the widget. With other page builders the widget works too, but its script loads at the end of the page; if a guest’s email link does not open the booking, put the shortcode in the page’s main content as well, or ask the builder’s support to call the anybook_page_has_widget filter.
This plugin connects your website to Anybook (https://anybookapp.com), the booking service that takes your bookings and payments. Without Anybook the plugin does nothing.
Your website contacts Anybook only after an administrator or editor has done one of these things:
Your visitors’ browsers contact Anybook as well:
The plugin loads remote scripts only on pages that show the widget or the availability overview, never in the WordPress admin, and only once a business is connected. They are part of the Anybook service and are the widget itself, so they are not in the plugin. They load over https from the booking site’s plain address, so changes to the widget reach your site without a plugin update.
Anybook terms of service: https://anybookapp.com/terms
Anybook privacy policy: https://anybookapp.com/privacy
Stripe terms: https://stripe.com/legal and privacy policy: https://stripe.com/privacy
The plugin adds no tracking and stores no booking, guest or payment details on your website. It suggests words for your privacy policy under Settings, Privacy.
The folder build/booking/ holds generated files, made from human-readable source that ships in this plugin.
blocks/booking/ is the source of everything in build/booking/, including the minified build/booking/index.js. Start with blocks/booking/index.js, edit.js, shortcode.js, editor.scss and block.json.package.json and package-lock.json, in the plugin’s main folder, list the exact tools and versions.@wordpress/scripts 30.27.0 (webpack and Sass), which npm ci installs.To rebuild the block, run these two commands in the plugin’s main folder:
npm ci
npm run build
npm run build runs `wp-scripts build --webpack-src-dir=blocks --output-path=build` and writes `build/booking/`. All the plugin's other files are plain PHP and need no build. The Anybook widget scripts are not part of this plugin: see External services.