{
    "title": "Building a WordPress site with online booking: plugins and best practices",
    "seo_title": "WordPress Booking Website: Plugins and Pricing",
    "h1": "Building a WordPress site with online booking: plugins and best practices",
    "description": "Build a WordPress booking website: Amelia, Bookly, FluentBooking and WooCommerce Bookings compared, plus payments, GDPR, caching and security.",
    "lead": "WordPress booking plugins compared with their public prices, then the payment, GDPR, performance and security settings to sort out before you open bookings.",
    "language": "en",
    "locale": "en-US",
    "type": "article",
    "url": "https://www.wp-masquerade.com/wordpress-booking-website-plugins/",
    "canonical": "https://www.wp-masquerade.com/wordpress-booking-website-plugins/",
    "markdown": "https://www.wp-masquerade.com/wordpress-booking-website-plugins/index.md",
    "json": "https://www.wp-masquerade.com/wordpress-booking-website-plugins/index.json",
    "published": "2026-07-31T06:00:00+00:00",
    "modified": "2026-11-05T20:53:47+00:00",
    "site": {
        "name": "WP Masquerade",
        "url": "https://www.wp-masquerade.com/"
    },
    "translations": [
        {
            "language": "en",
            "hreflang": "en-US",
            "title": "Building a WordPress site with online booking: plugins and best practices",
            "url": "https://www.wp-masquerade.com/wordpress-booking-website-plugins/",
            "markdown": "https://www.wp-masquerade.com/wordpress-booking-website-plugins/index.md",
            "json": "https://www.wp-masquerade.com/wordpress-booking-website-plugins/index.json"
        },
        {
            "language": "fr",
            "hreflang": "fr-FR",
            "title": "Créer un site WordPress avec réservation en ligne : extensions et bonnes pratiques",
            "url": "https://www.wp-masquerade.com/fr/site-wordpress-reservation-en-ligne/",
            "markdown": "https://www.wp-masquerade.com/fr/site-wordpress-reservation-en-ligne/index.md",
            "json": "https://www.wp-masquerade.com/fr/site-wordpress-reservation-en-ligne/index.json"
        },
        {
            "language": "es",
            "hreflang": "es-ES",
            "title": "Crear una web WordPress con reservas online: plugins y buenas prácticas",
            "url": "https://www.wp-masquerade.com/es/web-reservas-wordpress-plugins/",
            "markdown": "https://www.wp-masquerade.com/es/web-reservas-wordpress-plugins/index.md",
            "json": "https://www.wp-masquerade.com/es/web-reservas-wordpress-plugins/index.json"
        },
        {
            "language": "de",
            "hreflang": "de-DE",
            "title": "WordPress-Website mit Online-Buchung erstellen: Plugins und Best Practices",
            "url": "https://www.wp-masquerade.com/de/wordpress-buchungssystem-plugins/",
            "markdown": "https://www.wp-masquerade.com/de/wordpress-buchungssystem-plugins/index.md",
            "json": "https://www.wp-masquerade.com/de/wordpress-buchungssystem-plugins/index.json"
        },
        {
            "language": "it",
            "hreflang": "it-IT",
            "title": "Creare un sito WordPress con prenotazione online: plugin e buone pratiche",
            "url": "https://www.wp-masquerade.com/it/sito-prenotazioni-wordpress-plugin/",
            "markdown": "https://www.wp-masquerade.com/it/sito-prenotazioni-wordpress-plugin/index.md",
            "json": "https://www.wp-masquerade.com/it/sito-prenotazioni-wordpress-plugin/index.json"
        },
        {
            "language": "pt",
            "hreflang": "pt-BR",
            "title": "Criar um site WordPress com reservas online: plugins e boas práticas",
            "url": "https://www.wp-masquerade.com/pt/site-reservas-wordpress-plugins/",
            "markdown": "https://www.wp-masquerade.com/pt/site-reservas-wordpress-plugins/index.md",
            "json": "https://www.wp-masquerade.com/pt/site-reservas-wordpress-plugins/index.json"
        },
        {
            "language": "nl",
            "hreflang": "nl-NL",
            "title": "Een WordPress-site met online reserveren bouwen: plugins en best practices",
            "url": "https://www.wp-masquerade.com/nl/wordpress-reserveringssysteem-plugins/",
            "markdown": "https://www.wp-masquerade.com/nl/wordpress-reserveringssysteem-plugins/index.md",
            "json": "https://www.wp-masquerade.com/nl/wordpress-reserveringssysteem-plugins/index.json"
        }
    ],
    "headings": [
        {
            "level": 1,
            "text": "Building a WordPress site with online booking: plugins and best practices"
        },
        {
            "level": 2,
            "text": "Appointments, events or rentals: pin down what you need"
        },
        {
            "level": 2,
            "text": "Booking plugins compared"
        },
        {
            "level": 2,
            "text": "The booking journey, from start to finish"
        },
        {
            "level": 2,
            "text": "Payments, deposits and cancellations"
        },
        {
            "level": 2,
            "text": "GDPR: what a booking reveals"
        },
        {
            "level": 2,
            "text": "Performance: the calendar must not be cached"
        },
        {
            "level": 2,
            "text": "Securing a site that takes payments"
        },
        {
            "level": 3,
            "text": "Know when your booking plugin has a vulnerability"
        },
        {
            "level": 2,
            "text": "Frequently asked questions",
            "id": "faq"
        },
        {
            "level": 3,
            "text": "Key takeaways"
        },
        {
            "level": 2,
            "text": "Sources"
        },
        {
            "level": 2,
            "text": "WordPress security, without the noise",
            "id": "wpm-nl-box-title"
        }
    ],
    "body": "A WordPress site with online booking lets your customers pick a time slot, pay a deposit and get a reminder, without a single phone call. The plugin you choose decides almost everything: what online payment really costs, how it syncs with your calendar, and how much load it puts on the site. Here are the main plugins compared with their public prices, followed by the payment, GDPR, performance and security points to settle before you open bookings.\n\n## Appointments, events or rentals: pin down what you need\n\n- **Appointments** (hairdresser, consultant, garage, private tutoring): fixed-length slots, several staff members, reminders. This is where Amelia, Bookly and FluentBooking shine.\n- **Events and workshops**: limited seats, tickets, waiting list. Check that the plugin handles capacity per session.\n- **Daily rentals** (equipment, rooms, accommodation): variable durations, seasonal pricing, shared resources. WooCommerce Bookings or a dedicated accommodation plugin is a better fit.\n\nAnd if you would rather not host anything, an external scheduling service embedded in the site is still an option: less maintenance, but monthly subscriptions and your data held by a third party.\n\n## Booking plugins compared\n\n| Plugin | Free version | Online payment | Paid plan | Worth knowing |\n| --- | --- | --- | --- | --- |\n| Amelia | Yes (Lite), 90,000+ active installations | Square in the free version, Stripe, PayPal and WooCommerce in paid plans | Yearly or lifetime, depending on the number of domains | Reminders, multilingual support and unlimited staff only in paid plans |\n| Bookly | Yes, up to 5 services | Paid only | Pro from $39 per year or $99 lifetime (1 site) | Many features sold as add-ons |\n| FluentBooking | Yes | Stripe, PayPal in Pro | Solo: $55 per year or $199 lifetime | Google Calendar sync in the Pro plan |\n| WooCommerce Bookings | No | All WooCommerce gateways | €223 per year | Powerful for rentals, but an average rating of 2.7 out of 5 |\n| BookingPress | Removed from wordpress.org | Depends on the plan | Standard: $89 per year | Listing closed by wordpress.org on 1 February 2025 (guideline violation) |\n\n*Vendors’ public prices, excluding tax, often discounted in the first year. Free version data from wordpress.org.*\n\nHow to decide: for a freelancer who wants to take payments without a subscription, Amelia Lite with Square or Bookly Pro remain the cheapest entry points. For a team with several calendars, compare Amelia and FluentBooking on syncing with Google Calendar or Outlook. If you already run a shop, WooCommerce Bookings reuses your gateways and emails, at the cost of a heavier setup. A plugin whose free version has been removed from the official directory no longer gets its updates through the usual channel: that rules it out for a site that takes payments.\n\n*Setting up a booking website with Amelia, shown step by step on the plugin’s own channel (in English, July 2022): a quick way to judge the interface before you install anything.*\n\n## The booking journey, from start to finish\n\n*The card number must never pass through your server: payment happens on the provider’s side.*\n\n## Payments, deposits and cancellations\n\n- **A deposit rather than full payment** cuts no-shows without complicating refunds. Write the cancellation policy right next to the payment button.\n- **Payment on the provider’s side** (hosted form or embedded fields from Stripe, PayPal or Square): the card number never touches your site, which greatly reduces your PCI DSS obligations and the risk if you are hacked.\n- **Real cost**: add up the licence, the add-ons (SMS, calendar, payment) and the provider’s transaction fees. A free plugin that locks you into a single provider can cost more in practice.\n- **Webhooks**: confirmation must come from the payment provider (server notification), not only from the browser redirect, otherwise a customer who closes the tab leaves a booking stuck as “pending”.\n\nFor a WooCommerce shop, the specific risks (card fraud, customer accounts) are covered in our WooCommerce security guide.\n\n## GDPR: what a booking reveals\n\nAn appointment means a name, a phone number, a time and sometimes a reason. Ask only for what you need, explain how it is used in your privacy policy, and set a retention period (for example, delete past bookings once the period needed for accounting and disputes is over). SMS or email reminders tied to the appointment are part of providing the service; promotional messages require separate consent.\n\nTake extra care in health and wellness professions: if the reason for the visit or the type of appointment reveals health information, it is special-category data under article 9 of the GDPR, and local rules may require a certified host (France, for example, requires HDS-certified hosting). Get advice before opening such a form. For logs and IP addresses, see our article on GDPR and WordPress security.\n\n## Performance: the calendar must not be cached\n\n- **Exclude the booking page from the page cache** (and from the [CDN](https://www.wp-masquerade.com/glossary/cdn/) for HTML): availability changes with every booking, and a stale cached page contains expired security tokens that make the form submission fail.\n- **Load scripts only where they are needed**: many plugins load their calendar on every page. Check the browser’s network tab and turn off global loading if the plugin allows it.\n- **Reliable scheduled tasks**: reminders are sent through WordPress [cron](https://www.wp-masquerade.com/glossary/cron-wp-cron/) tasks, which only run when someone visits the site. On a low-traffic site, replace them with a real server cron job.\n\n## Securing a site that takes payments\n\nA booking plugin adds public entry points (AJAX requests, API endpoints, forms without an account), exactly the ones bots probe as soon as a vulnerability is published. Three rules:\n\n1. Update the plugin as soon as a security fix is released, and monitor your plugins for vulnerabilities.\n2. Protect the accounts of the staff who manage the calendar: they can see every customer’s data. Use two-factor authentication and a role limited to bookings.\n3. Filter out fake bookings (honeypot field, bot check) before they block your slots.\n\nWP Masquerade adds to this foundation without replacing it. The free version moves the login page and removes the traces that reveal WordPress and its plugins to bots. WP Masquerade Pro adds [two-factor authentication by role](https://www.wp-masquerade.com/features/two-factor-authentication/), [login attempt limiting](https://www.wp-masquerade.com/features/login-attempt-limiting/) and [alerts when an installed plugin becomes vulnerable](https://www.wp-masquerade.com/features/vulnerable-plugin-alerts/), with the fix to apply. It does not filter traffic like a firewall and does not replace backups.\n\n### Know when your booking plugin has a vulnerability\n\nWP Masquerade Pro alerts you by email and in your member area, from €59 excl. VAT per year for one site. The free version already protects your login.\n\n[See Pro pricing](https://www.wp-masquerade.com/pricing/)\n\n[Download the free version](https://www.wp-masquerade.com/download/)\n\n## Frequently asked questions\n\n**Can you take paid bookings on WordPress for free?**\n\nYes, with Amelia Lite, which includes Square payments in its free version. Other free plugins usually keep online payment for their paid plans. Either way, factor in the payment provider’s fees.\n\n**Do you need WooCommerce for a booking site?**\n\nNo. Amelia, Bookly and FluentBooking take payments without WooCommerce. WooCommerce Bookings makes sense if you already sell products or rent out resources by the day.\n\n**Why do my bookings fail after caching is turned on?**\n\nThe cached page contains frozen availability and security tokens. Exclude the booking page from the page cache and the CDN, then clear the caches.\n\n**Do SMS reminders require consent?**\n\nA reminder about the appointment is part of the service the customer asked for. Any marketing offer sent by SMS or email, however, requires separate consent, which you must be able to prove.\n\n### Key takeaways\n\n- Choose the plugin by booking type: appointments, events or rentals.\n- Work out the real cost: licence, add-ons, payment fees.\n- Payment on the provider’s side, webhook confirmation, a deposit and a clear cancellation policy.\n- Booking page excluded from the cache, scripts loaded only where they are needed.\n- Minimal data, a retention period, extra care with health data.\n- Plugin kept up to date and staff accounts protected by two-factor authentication.\n\n## Sources\n\n- WordPress.org: Amelia (Lite version) (https://wordpress.org/plugins/ameliabooking/)\n- Bookly: pricing (https://www.booking-wp-plugin.com/pricing/)\n- WooCommerce Bookings (https://woocommerce.com/products/woocommerce-bookings/)\n- WordPress.org: BookingPress listing (closed) (https://wordpress.org/plugins/bookingpress-appointment-booking/)\n\n## WordPress security, without the noise\n\nOne e-mail when something matters: new attacks seen in the wild, plugin updates and practical guides. No spam, unsubscribe in one click.",
    "categories": [
        "WordPress guides"
    ],
    "format": "application/json"
}