About this plugin
Flexatech Table Reservations takes table bookings on your own site. Guests pick a party size, a day and a free time, then leave their name and a way to reach them. The plugin finds a table that fits, and you see every booking in the admin, day by day.
- A reservation form, as a block or the [fxtr_reservation_form] shortcode.
- A page where guests change or cancel their booking from the link in their email, as a block or the [fxtr_manage_reservation] shortcode. No account needed.
- Tables, areas, shifts and closed dates, so only real free times are offered.
- The table is held for a few minutes while the guest fills in the form.
- Confirm every booking yourself, or let small parties through on their own.
- HTML emails for the guest and for you, with an editor in the admin, and a reminder before the booking.
- Optional: Google Calendar sync, Sign in with Google on the form, Cloudflare Turnstile against spam, a map of your address, and a webhook.
External services
The plugin works without any of the services below. Each one is off until you turn it on or fill in its keys.
Google Calendar API
Copies bookings to a Google calendar you choose, and can read a second calendar whose events block online booking at those times. It runs only after you connect a Google account in the Google Calendar tab, with an OAuth client you create in Google Cloud.
- When you connect or disconnect: your site talks to accounts.google.com and oauth2.googleapis.com to sign in, refresh and revoke the access token.
- When a booking is made, moved or cancelled: your site sends the event to www.googleapis.com. The event holds the guest’s name, party size, date and time, table names, phone, email, notes and a link to the booking in your admin.
- When the form shows free times: your site asks www.googleapis.com for the events on the blocking calendar for that day.
com/terms
com/privacy
com/terms
Sign in with Google (Google Identity Services)
com/gsi/client on the booking page. A guest who uses the button shares their name and email address from their Google account, which fill in the form. Nothing is sent to Google from your server.
com/terms
com/privacy
Cloudflare Turnstile
js on the booking page to check that the guest is a person. com/turnstile/v0/siteverify.
com/website-terms/
com/privacypolicy/
Google Maps
com/maps) of the restaurant address you entered. The guest’s browser loads it from Google. The directions link next to the address also opens Google Maps.
Only the restaurant’s address is sent, never guest data.
com/help/terms_maps/
com/privacy
Webhook
When you fill in a webhook URL, your site sends a JSON POST to that URL when a booking is made, changes status or moves. The body holds the booking, including the guest’s name, phone, email, party size, date, time and notes. The URL is one you choose and control, so its terms and privacy policy are those of whoever runs it.
Source code
The admin screen is a React app compiled into assets/dist. json.
To build it:
- Install Node.js 20 or later and pnpm 9 or later ( npm install -g pnpm ).
- Run pnpm install in the plugin folder.
- Run pnpm build. The files are written to assets/dist.
The JavaScript and CSS in assets/js and assets/css are not compiled and can be read as they are.