Restaurant Reservations


Accept restaurant reservations and table bookings online. Quickly confirm or reject bookings, send out custom email notifications, restrict booking times and more.

  • Quickly confirm or reject a booking
  • Receive an email notification when a booking request is made
  • Notify a customer by email when their request is confirmed or rejected
  • Automatically block bookings when you’re closed, including holidays and one-off openings
  • Custom user role to manage bookings
  • Add your booking form to any page, post or widget area
  • Customize all notification messages, and date and time formats
  • Add and edit bookings from the admin panel
  • Take bookings for multiple locations
  • Send customers an email about their booking from the admin panel
  • Ban abusive customers to save money on no-shows

Theme of the Crop builds great WordPress restaurant themes and plugins that help restaurants manage responsive online menus and boost their SEO.

How to use

Read the User Guide for quick tips on how to get started taking reservations.


Custom Fields for Restaurant Reservations – Add custom fields and edit your booking form with ease.

Email Templates for Restaurant Reservations – Subscribe emails from new restaurant reservations to your MailChimp mailing list.

Export Bookings for Restaurant Reservations – Export your restaurant reservations to PDF and Excel/CSV files.

MailChimp for Restaurant Reservations – Subscribe emails from new restaurant reservations to your MailChimp mailing list.


This plugin is packed with hooks so you can extend it, customize it and rebrand it as needed. Take a look at the Developer Documentation.

Development takes place on GitHub, so fork it up.


  • Easily manage bookings. View today's bookings or upcoming bookings at-a-glance. Confirm or reject bookings quickly.
  • Easy-to-use booking form with a simple, clear style that is compatible with many themes. Minimal CSS is used to make it easier to style.
  • Great, mobile-friendly date and time pickers to make it easy for your customers.
  • Clear settings page to get it working how you need.
  • Easily adjust when customers can request a booking.
  • Customize the admin notification email when a new booking request is made. Add a quick link to confirm or reject a request straight from the email.
  • Customize the notification email sent to a user when they make a new booking request.
  • Customize the notification email sent to a user when their booking is confirmed. You can also customize the email sent when a booking is rejected.
  • Add and edit bookings from an admin panel.
  • Quickly find bookings before or after a date. You can also filter by status or view just Today's bookings.
  • It also integrates with the Business Profile plugin to support booking for multiple locations.
  • Access a short guide from your Plugins list to help you get started quickly.


  1. Unzip
  2. Upload the contents of to the /wp-content/plugins/ directory
  3. Activate the plugin through the ‘Plugins’ menu in WordPress
  4. Go to Bookings > Settings to set up the page to display your booking form.


Installation Instructions
  1. Unzip
  2. Upload the contents of to the /wp-content/plugins/ directory
  3. Activate the plugin through the ‘Plugins’ menu in WordPress
  4. Go to Bookings > Settings to set up the page to display your booking form.
Is there a shortcode to print the booking form?

Yes, use the [booking-form] shortcode.

Can I change the format of the date or time?

Yes, set the format for the datepicker in Bookings > Settings. The format used in the backend will depend on the date and time formats in your WordPress settings.

The datepicker or timepicker is not working.

If you load up the form and no date or time picker is popping up when you select those fields, this is likely caused by a Javascript error from another plugin or theme. You can find the problematic plugin by deactivating other plugins you’re using one-by-one. Test after each deactivation to see if the date and time pickers work.

If you have deactivated all other plugins and still have a problem, try switching to a default theme (one of the TwentySomething themes).

I’m not receiving notification emails for new bookings.

This is almost always the result of issues with your server and can be caused by a number of things. Before posting a support request, please run through the following checklist:

  1. Double-check that the notification email in Bookings > Settings > Notifications is correct.
  2. Make sure that WordPress is able to send emails. The admin email address in the WordPress settings page should receive notifications of new users.
  3. If you’re not able to receive regular WordPress emails, contact your web host and ask them for help sorting it out.
  4. If you’re able to receive regular WordPress emails but not booking notifications, check your spam filters or junk mail folders.
  5. If you still haven’t found the emails, contact your web host and let them know the date, time and email address where you expected to receive a booking. They should be able to check their logs to see what is happening to the email.
Can I make the phone number required?

This is a common request so I have written a small addon to do this for you. Learn more.

Can I translate the booking form?

Yes, everything in this plugin can be translated using the standard translation process and software like PoEdit. If you’re not familiar with that process, I’d recommend you take a look at the Loco Translate plugin, which provides a simple interface in your WordPress admin area for translating themes and plugins.

If you make a translation, please help others out by adding it to the GitHub repository so that I can distribute it for others.

I set Early or Late Bookings restrictions, but I scan still book during that time

Users with the Administrator and Booking Manager roles are exempt from these restrictions. This is so that they can make last-minute changes to bookings as needed. If you want to test the Early or Late Bookings restrictions, try logging out and testing.

I want to add a field to the form. Can I do that?

The addon, Custom Fields for Restaurant Reservations, will allow you to add a field or modify some of the existing fields of the booking form. Developers who are comfortable coding up plugins for WordPress can add their own fields using the hooks provided. Developers can find a rough guide to coding a custom field in the answer to this support request.

More questions and answers

Find answers to even more questions in the FAQ.


Works perfectly on our MySimpleFood websites

I’ve just set up the Restaurant Reservation plugin for our affordable MySimpleFood web design service, and it works perfectly.

I researched suitable table booking plugins and this was by far the most popular. It was easy to set up on our demo site, and automatically added the booking form to my ‘Book a Table’ page with the correct availability etc. The options that you get with the free plugin are pretty comprehensive, and the email notifications are customizable and simple but professional looking.

The only drawback is that while you can add your restaurant opening times and block out times you are closed, there’s no actual online availability checker. I think this would be a big advantage because it would take the manual work out of having to confirm each booking. Maybe create this as a paid add-on?

It might also be nice to integrate with WooCommerce to take a booking deposit online.


I’ve had the pleasure of both using this plugin and e-mailing with the developer and rarely do you experience such helpful attitude.

I will strongly recommend both the developer behind the plugin as well as the plugin itself, as you know you are in safe hands.

Sehr schneller und hilfreicher Support

Wir nutzen das Plugin als Teil eines Themes für einen unserer Kunden.
Wir haben das Plugin auf die Wünsche und Bedürfnisse unseres kunden angepasst.
U.a nutzen wir den jQuery.ui-Datepicker anstelle des originalen pickadate-Datepickers.

Bei den Anpassungen stand uns Herr Wright im schnell und unbürokratisch zur Seite.
Nochmals einen riesigen herzlichen Dank an dieser Stelle.

Als Programmierer kann ich auch sagen, das der Quelltext sehr gut strukturiert und dokumentiert ist. Das ist leider nicht immer der Fall.

Wir würden es jedem empfehlen, der nach einem guten Reservierungs-Plugin sucht.

If Carlsberg Did WordPress Plugin Support …

“If Carlsberg Did WordPress Plugin Support …” won’t make much sense to anyone outside of the U.K., but Brits will immediately know I’m saying this developer’s support is first class.
I researched all of the reservation plug ins i could find. This one is actually far more limited in scope than some of the others, but it works, and is supported. If you’ve been working on wordpress for any time you’ll know how important those two factors are. Restaurant clients need to have confidence that the booking system will work. Far better a limited system that works than one of those that promise the earth but are full of glitches and overly complicated processing requirements.
In fact several of the limitations have been overcome by additional code Nate has provided free of charge.
I’m using the full suite with the paid for add ons. I’m looking forward to reminder/follow up emails, and block booking date from/to exceptions, as two future developments that will be a great addition to the plug in functionality.

Read all 86 reviews

Contributors & Developers

“Restaurant Reservations” is open source software. The following people have contributed to this plugin.


“Restaurant Reservations” has been translated into 10 locales. Thank you to the translators for their contributions.

Translate “Restaurant Reservations” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.


1.7.6 (2017-05-15)

  • Fix: Prevent IP address from being modified after initial submission
  • Fix: Schema type for Bakery used when integrating with Business Profile

1.7.5 (2017-03-31)

  • Add: #104 Show count of upcoming pending bookings in admin nav menu
  • Add: #44 Reject invalid email addresses in booking requests
  • Add: Setting to require a phone number
  • Add: Recommended themes with booking form styles listed in the Addons page

1.7.4 (2017-03-21)

  • Fix: Wrong time restrictions for day one month in advance. See #102
  • Add: Disable button when submitted to prevent duplicate submissions
  • Add: Polish translation. h/t Wojciech Sadowski

1.7.3 (2017-03-02)

  • Fix: Apply late bookings restrictions more than 1 day to date picker
  • Fix: Allow multiple email addresses for location-specific admin notifications
  • Fix: Translation textdomain used for Business Profile integration
  • Add: Apply early bookings restrictions to the date picker

1.7.2 (2017-01-12)

  • Fix: acceptsReservations schema property sometimes didn’t appear in Business Profile integration
  • Update: improve early bookings options language. Changed “Up to X days in advance” to “From X days in advance”.

1.7.1 (2016-12-14)

  • Fix: Submitted by date and time in the bookings list
  • Fix: Fatal error when creating a new location with the Business Profile plugin
  • Fix: Remove or archive unexpected “Auto Draft” that was created in some circumstances

1.7 (2016-12-05)

  • Add: Allow customer banning by email and IP address
  • Add: HTML5 required and aria-required attributes where appropriate
  • Add: Disable times in the time picker blocked by late bookings restrictions
  • Add: Option to block same-day bookings
  • Add: Option for minimum party size
  • Fix: Location printed twice in booking details
  • Fix: Allow Bookings Managers to edit bookings in the past
  • Update: Deprecated RTB_LOAD_FRONTEND_ASSETS moved rtb-load-frontend-assets filter
  • Update: Sort bookings by latest date first when viewing All bookings

1.6.3 (2016-10-31)

  • Fix: Exporting bookings by location (addon). Location query args are now support for rtbQuery objects.
  • Add: Option to select start of the week for the datepicker

1.6.2 (2016-08-20)

  • Fix: Broken time picker introduced in 1.6.1

1.6.1 (2016-08-19)

  • Fix: Support location post ids in booking form shortcode
  • Fix: JavaScript error if the time field is hidden
  • Fix: Fix booking detail popup issue when used with custom fields addon
  • Add: Notification template tag for location: {location}
  • Add: Russian language translation. h/t Alexandra Kuksa
  • Update: Spanish language translation. h/t Matias Rodriguez

1.6 (2016-06-20)

  • Fix: Currently visible notice in bookings list on mobile devices
  • Fix: Conflict with WooCommerce that prevented booking managers from viewing bookings
  • Add: Support multi-location bookings
  • Add: Add reservation markup when Business Profile used
  • Add: Allow custom first day of the week for date picker

1.5.3 (2016-03-25)

  • Fix: no bookings found when searching by start and end dates that are the same
  • Add: clarify that early/late bookings restrictions don’t apply to admins
  • Add: Brazilian and Norwegian translations
  • Update: Dutch translation
  • Update: link to new online documentation
  • Other: Tested for compatibility with WP 4.5

1.5.2 (2016-02-29)

  • Fix: booking managers can not confirm/reject bookings

1.5.1 (2016-02-19)

  • Fix: increase security of the quicklink feature for confirming/rejecting bookings
  • Fix: Improve wp-cli compatibility

1.5 (2015-12-17)

  • Fix: pickadate iOS bug
  • Fix: Bookings table’s Today view didn’t respect WordPress timezone setting
  • Add: Allow bookings table columns to be toggled on/off
  • Update: Convert message column/row drop-down to a details modal for all hidden columns
  • Update: Put focus into message field when expanded in booking form

1.4.10 (2015-10-29)

  • Fix: Allow settings page required capability to be filtered later
  • Fix: Compatibility issue with old versions of jQuery
  • Add: Spanish translation from Rafa dMC

1.4.9 (2015-10-06)

  • Fix: iOS 8 bug with date and time pickers
  • Add: newsletter signup prompt to addons page

1.4.8 (2015-08-20)

  • Add: WPML config file for improved multi-lingual compatibility
  • Add: Danish translation by Yusef Mubeen
  • Fix: Allow bookings managers to bypass early/late bookings restrictions
  • Fix: No times available when latest time falls between last interval and midnight
  • Updated: Improve bookings message view on small screens (adapt to 4.3 style)
  • Updated: Simple Admin Pages lib to v2.0.a.10
  • Updated: Dutch translation h/t Roy van den Houten and Clements Tolboom

1.4.7 (2015-07-02)

  • Add: Spanish translation from Joaqin Sanz Boixader
  • Fix: Sorting of bookings by date and name in list table broken
  • Fix: Custom late bookings values more than one day aren’t reflected in date picker
  • Fix: Norwegian doesn’t include time picker translation for some strings
  • Updated: German translation from Roland Stumpp
  • Updated: pickadate.js language translations

1.4.6 (2015-06-20)

  • Add: Remove old schedule exceptions and sort exceptions by date
  • Add: CSS class indicating type of booking form field
  • Fix: Extended Latin can cause Reply-To email headers to fail in some clients
  • Fix: PHP Warning when performing bulk or quick action in bookings panel
  • Fix: Message row lingers after booking trashed in admin panel
  • Updated .pot file

1.4.5 (2015-04-23)

  • Fix: Loading spinner not visible due to 4.2 changes
  • Add: new addon Export Bookings released

1.4.4 (2015-04-20)

  • Fix: low-risk XSS security vulnerability with escaped URLs on admin bookings page

1.4.3 (2015-04-20)

  • Add: Datepickers for start/end date filters in admin bookings list
  • Fix: Disabled weekdays get offset when editing bookings
  • Fix: Start/end date filters in admin bookings list
  • Fix: Booking form shouldn’t appear on password-protected posts
  • Fix: Dutch translation
  • Updated: Dutch and German translations
  • Updated: pickadate.js lib now at v3.5.6

1.4.2 (2015-03-31)

  • Fix: Speed issue if licensed addon active

1.4.1 (2015-03-31)

  • Add: rtbQuery class for fetching bookings
  • Add: Centralized system for handling extension licenses
  • Add: Several filters for the bookings admin list table
  • Add: French translation h/t I-Visio
  • Add: Italian translation h/t Pierfilippo Trevisan
  • Updated: German translation h/t Roland Stumpp
  • Fix: Button label in send email modal

1.4 (2015-02-24)

  • Add: Send a custom email from the bookings list
  • Add: Hebrew translation. h/t Ahrale
  • Add: Default template functions for checkbox, radio and confirmation fields
  • Fix: Replace dialect with more common German in translation file. h/t Roland Stumpp

1.3 (2015-02-03)

  • Add and edit bookings from the admin area
  • Fix: date and time pickers broken on iOS 8 devices
  • Add complete German translation from scolast34
  • Add partial Dutch and Chilean translations
  • Change Party text field to a dropdown selection
  • Bookings admin panel shows upcoming bookings by default
  • Use new HTML5 input types for email and phone
  • Change textdomain to comply with upcoming translation standards
  • Improve WPML compatibility
  • New support for assigning custom classes to fields, fieldsets and legends. h/t Primoz Cigler
  • New filters for email notifications
  • Fix: some bookings menu pages don’t load when screen names are translated
  • Fix: addons list won’t load if allow_url_fopen is disabled

1.2.3 (2014-11-04)

  • Add a {user_email} notification template tag
  • Add filter to notification template tag descriptions for extensions
  • Add Reply-To mail headers and use a more reliable From header
  • Add filter to the datepicker rules for disabled dates
  • Fix: missing “Clear” button translation in time picker for many languages
  • Fix: open time picker in body container to mitigate rare positioning bugs
  • Fix: don’t auto-select today’s date if it’s not a valid date or errors are attached to the date field

1.2.2 (2014-08-24)

  • Fix: custom date formats can break date validation for new bookings
  • Add new booking form generation hooks for easier customization
  • Add support for upcoming MailChimp addon
  • Add new addons page
  • Update Simple Admin Pages library to v2.0.a.7

1.2.1 (2014-08-01)

  • Fix: bulk actions below the bookings table don’t work
  • Fix: PHP Notice generated during validation

1.2 (2014-07-17)

  • Add notification template tags for phone number and message
  • Add automatic selection of date when page is loaded (option to disable this feature)
  • Add option to set time interval of time picker
  • Fix auto-detection of pickadate language from WordPress site language
  • Fix duplicate entry in .pot file that caused PoEdit error

1.1.4 (2014-07-03)

  • Add a .pot file for easier translations
  • Fix notifications that showed MySQL date format instead of user-selected format
  • Fix Arabic translation of pickadate component
  • Add support for the correct start of the week depending on language

1.1.3 (2014-05-22)

  • Fix an error where the wrong date would be selected when a form was reloaded with validation errors

1.1.2 (2014-05-14)

  • Update Simple Admin Pages library to fix an uncommon error when saving Textarea components

1.1.1 (2014-05-14)

  • Update Simple Admin Pages library to fix broken Scheduler in Firefox

1.1 (2014-05-12)

  • Attempt to load the correct language for the datepicker from the WordPress settings
  • Add support for choosing a language for the datepicker if different from WordPress settings
  • Allow late bookings to be blocked 4 hours and 1 day in advance
  • Fix: don’t show settings under WordPress’s core General settings page

1.0.2 (2014-05-08)

  • Remove development tool from codebase

1.0.1 (2014-05-08)

  • Replace dashicons caret with CSS-only caret in booking form

1.0 (2014-05-07)

  • Initial release