{"id":314514,"date":"2026-05-21T18:34:39","date_gmt":"2026-05-21T18:34:39","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/oozami-booking\/"},"modified":"2026-05-21T18:32:06","modified_gmt":"2026-05-21T18:32:06","slug":"oozami-booking","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/oozami-booking\/","author":23501345,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"4.0.0","stable_tag":"4.0.0","tested":"7.0","requires":"6.2","requires_php":"8.0","requires_plugins":null,"header_name":"Oozami Booking","header_author":"Oozami","header_description":"Online booking system with Elementor widget. Calendar, services, confirmation emails.","assets_banners_color":"59baa9","last_updated":"2026-05-21 18:32:06","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/oozami.be\/easybook","header_author_uri":"https:\/\/oozami.be","rating":0,"author_block_rating":0,"active_installs":0,"downloads":36,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"4.0.0":{"tag":"4.0.0","author":"oozami","date":"2026-05-21 18:32:06"}},"upgrade_notice":{"3.0.0":"<p>First WordPress.org release. Adds an email delivery test in Settings to help diagnose SMTP configuration issues on shared hosting.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3542576,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3542576,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3542576,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3542576,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["4.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3542576,"resolution":"1","location":"assets","locale":"","width":1096,"height":905},"screenshot-10.jpg":{"filename":"screenshot-10.jpg","revision":3542576,"resolution":"10","location":"assets","locale":"","width":1722,"height":904},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3542576,"resolution":"2","location":"assets","locale":"","width":1136,"height":549},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3542576,"resolution":"3","location":"assets","locale":"","width":617,"height":634},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3542576,"resolution":"4","location":"assets","locale":"","width":1725,"height":645},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3542576,"resolution":"5","location":"assets","locale":"","width":1735,"height":767},"screenshot-6.jpg":{"filename":"screenshot-6.jpg","revision":3542576,"resolution":"6","location":"assets","locale":"","width":643,"height":483},"screenshot-7.jpg":{"filename":"screenshot-7.jpg","revision":3542576,"resolution":"7","location":"assets","locale":"","width":1737,"height":908},"screenshot-8.jpg":{"filename":"screenshot-8.jpg","revision":3542576,"resolution":"8","location":"assets","locale":"","width":1739,"height":904},"screenshot-9.jpg":{"filename":"screenshot-9.jpg","revision":3542576,"resolution":"9","location":"assets","locale":"","width":518,"height":635}},"screenshots":{"1":"Front-end booking form \u2014 date picker with availability status (available, limited, almost full).","2":"Front-end booking form \u2014 service selection step with duration and price.","3":"HTML confirmation email with \"View \/ cancel\" button, Google &amp; Outlook calendar links, and .ics attachment.","4":"Admin dashboard \u2014 bookings list with status, filters and CSV export.","5":"Admin calendar view \u2014 month overview color-coded by service.","6":"Service editor \u2014 name, description, duration, price and color.","7":"Settings \u2014 business identity and booking workflow (manual or automatic confirmation).","8":"Settings \u2014 sender identity, email delivery info and built-in \"Send test email\" button.","9":"Employee editor \u2014 contact details, color and assigned services.","10":"Built-in shortcodes and REST API reference page inside the admin."}},"plugin_section":[],"plugin_tags":[276,269,416,76538,268],"plugin_category":[40],"plugin_contributors":[263860],"plugin_business_model":[],"class_list":["post-314514","plugin","type-plugin","status-publish","hentry","plugin_tags-appointment","plugin_tags-booking","plugin_tags-calendar","plugin_tags-elementor","plugin_tags-scheduling","plugin_category-calendar-and-events","plugin_contributors-oozami","plugin_committers-oozami"],"banners":{"banner":"https:\/\/ps.w.org\/oozami-booking\/assets\/banner-772x250.png?rev=3542576","banner_2x":"https:\/\/ps.w.org\/oozami-booking\/assets\/banner-1544x500.png?rev=3542576","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/oozami-booking\/assets\/icon-128x128.png?rev=3542576","icon_2x":"https:\/\/ps.w.org\/oozami-booking\/assets\/icon-256x256.png?rev=3542576","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/oozami-booking\/assets\/screenshot-1.jpg?rev=3542576","caption":"Front-end booking form \u2014 date picker with availability status (available, limited, almost full)."},{"src":"https:\/\/ps.w.org\/oozami-booking\/assets\/screenshot-2.jpg?rev=3542576","caption":"Front-end booking form \u2014 service selection step with duration and price."},{"src":"https:\/\/ps.w.org\/oozami-booking\/assets\/screenshot-3.jpg?rev=3542576","caption":"HTML confirmation email with \"View \/ cancel\" button, Google &amp; Outlook calendar links, and .ics attachment."},{"src":"https:\/\/ps.w.org\/oozami-booking\/assets\/screenshot-4.jpg?rev=3542576","caption":"Admin dashboard \u2014 bookings list with status, filters and CSV export."},{"src":"https:\/\/ps.w.org\/oozami-booking\/assets\/screenshot-5.jpg?rev=3542576","caption":"Admin calendar view \u2014 month overview color-coded by service."},{"src":"https:\/\/ps.w.org\/oozami-booking\/assets\/screenshot-6.jpg?rev=3542576","caption":"Service editor \u2014 name, description, duration, price and color."},{"src":"https:\/\/ps.w.org\/oozami-booking\/assets\/screenshot-7.jpg?rev=3542576","caption":"Settings \u2014 business identity and booking workflow (manual or automatic confirmation)."},{"src":"https:\/\/ps.w.org\/oozami-booking\/assets\/screenshot-8.jpg?rev=3542576","caption":"Settings \u2014 sender identity, email delivery info and built-in \"Send test email\" button."},{"src":"https:\/\/ps.w.org\/oozami-booking\/assets\/screenshot-9.jpg?rev=3542576","caption":"Employee editor \u2014 contact details, color and assigned services."},{"src":"https:\/\/ps.w.org\/oozami-booking\/assets\/screenshot-10.jpg?rev=3542576","caption":"Built-in shortcodes and REST API reference page inside the admin."}],"raw_content":"<!--section=description-->\n<p>Oozami Booking is a clean, lightweight appointment booking plugin for WordPress. It is designed for service providers \u2014 hairdressers, therapists, coaches, tutors, freelancers, small clinics, photographers, consultants \u2014 who need a simple, reliable booking flow on their own site without recurring SaaS fees.<\/p>\n\n<p>You define your services, your employees, your opening hours, and you embed a booking form on any page with a shortcode or an Elementor widget. Customers pick a service, a date, a time slot, fill in their details, and receive a confirmation email with an \"Add to Google \/ Outlook calendar\" link and a personal management page where they can view or cancel their appointment.<\/p>\n\n<h4>Core features<\/h4>\n\n<ul>\n<li>Public booking form (shortcode and Elementor widget)<\/li>\n<li>Service catalogue with duration, price, color and active\/inactive toggle<\/li>\n<li>Employee management with per-service assignment<\/li>\n<li>Weekly opening hours, plus blocked dates for holidays<\/li>\n<li>Automatic conflict detection (single-resource mode or multi-employee mode)<\/li>\n<li>Pending \/ confirmed \/ cancelled booking workflow<\/li>\n<li>Optional auto-confirmation, or manual approval from the admin<\/li>\n<li>HTML confirmation email with .ics calendar attachment<\/li>\n<li>Cancellation email when an admin refuses or cancels a booking<\/li>\n<li>Customer \"My appointment\" page where customers can review and cancel their booking via a secure token link<\/li>\n<li>Customizable primary color and font family for emails and the booking widget<\/li>\n<li>Multilingual-ready (translation-ready, <code>oozami-booking<\/code> text domain)<\/li>\n<li>Clean uninstall: all plugin tables and options are removed on uninstall<\/li>\n<li>GPL-compatible, no paid dependency required<\/li>\n<\/ul>\n\n<h4>How emails work<\/h4>\n\n<p>Oozami Booking sends emails through WordPress' built-in <code>wp_mail()<\/code> function. This is the standard approach used by virtually every booking and form plugin on WordPress.org. If your hosting environment does not have a working SMTP server configured, emails will silently fail \u2014 this is a hosting concern, not a plugin issue.<\/p>\n\n<p>The plugin's settings page includes a built-in <strong>\"Send test email\"<\/strong> button so you can verify delivery in one click. If the test fails, simply install an SMTP plugin (WP Mail SMTP, FluentSMTP, Post SMTP\u2026) and connect it to a transactional email provider such as Brevo, SendGrid, Mailgun, Postmark or your host's SMTP. The last delivery error is shown directly in the settings page to help diagnose problems.<\/p>\n\n<h4>Pro extension (optional)<\/h4>\n\n<p>A Pro add-on is available for advanced features (online payments, coupons, custom fields, etc.). The free version is standalone.\nLearn more: https:\/\/oozami.be\/portfolio\/easybook-pro\/<\/p>\n\n<h4>External services<\/h4>\n\n<p>Oozami Booking does not connect to, or send any data to, any external service. All booking data stays in your own WordPress database.<\/p>\n\n<!--section=installation-->\n<h4>1. Install and activate<\/h4>\n\n<ol>\n<li>Upload the <code>oozami-booking<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install it from the Plugins \u2192 Add New screen in WordPress.<\/li>\n<li>Activate <strong>Oozami Booking<\/strong> from the Plugins screen.<\/li>\n<li>A new <strong>Oozami Booking<\/strong> menu appears in the WordPress admin sidebar.<\/li>\n<\/ol>\n\n<h4>2. Configure your general settings<\/h4>\n\n<p>Go to <strong>Oozami Booking \u2192 Settings<\/strong> and fill in:<\/p>\n\n<ul>\n<li><strong>Business name<\/strong> \u2014 displayed in emails and on the customer page.<\/li>\n<li><strong>Admin email<\/strong> \u2014 the address that receives a notification every time a new booking is created.<\/li>\n<li><strong>Sender email<\/strong> \u2014 the \"From\" address used for outgoing emails. Use an address on your own domain (e.g. <code>contact@your-domain.com<\/code>) for best deliverability.<\/li>\n<li><strong>Sender name<\/strong> \u2014 the \"From\" name shown to recipients.<\/li>\n<li><strong>Primary color<\/strong> \u2014 used in emails, on the booking widget, and on buttons.<\/li>\n<li><strong>Automatic confirmation<\/strong> \u2014 enable to confirm bookings automatically, or disable to require manual approval from the dashboard.<\/li>\n<li><strong>My appointment page URL<\/strong> \u2014 paste the URL of the page where you put the <code>[oozami_booking_my_booking]<\/code> shortcode (see step 6 below). Required for the \"View \/ cancel my appointment\" link to appear in confirmation emails.<\/li>\n<\/ul>\n\n<h4>3. Verify email delivery<\/h4>\n\n<p>Still on the Settings page, scroll down to <strong>Email delivery<\/strong> and click <strong>Send test<\/strong>. A test email will be sent to your address. If it does not arrive within a few minutes:<\/p>\n\n<ul>\n<li>Check your spam folder.<\/li>\n<li>If the page shows a delivery error, install an SMTP plugin such as WP Mail SMTP or FluentSMTP and connect it to a transactional email provider (Brevo, SendGrid, Mailgun, Gmail SMTP, or your hosting provider's SMTP).<\/li>\n<li>Configure SPF and DKIM in your DNS zone to maximize deliverability.<\/li>\n<\/ul>\n\n<p>Repeat the test until you receive the email. From that point, all booking confirmations and cancellations will be delivered the same way.<\/p>\n\n<h4>4. Create your services<\/h4>\n\n<p>Go to <strong>Oozami Booking \u2192 Services<\/strong> and click <strong>Add a service<\/strong>. For each service, set:<\/p>\n\n<ul>\n<li><strong>Name<\/strong> (e.g. \"30-minute haircut\", \"First consultation\", \"Group yoga class\")<\/li>\n<li><strong>Description<\/strong> (shown on the booking form)<\/li>\n<li><strong>Duration<\/strong> in minutes \u2014 this controls how time slots are calculated<\/li>\n<li><strong>Price<\/strong><\/li>\n<li><strong>Color<\/strong> \u2014 used to identify the service in the admin calendar<\/li>\n<li><strong>Active<\/strong> \u2014 uncheck to temporarily hide a service from the front-end without deleting it<\/li>\n<\/ul>\n\n<p>Repeat for every bookable service you offer.<\/p>\n\n<h4>5. Create your employees and opening hours<\/h4>\n\n<p>If you work alone, you can skip the Employees page entirely \u2014 the plugin works fine with a single implicit resource (enable <strong>Single resource<\/strong> in Settings to ensure slots block across all services).<\/p>\n\n<p>If you have multiple employees:<\/p>\n\n<ol>\n<li>Go to <strong>Oozami Booking \u2192 Employees<\/strong> and add each team member. For every employee, select which services they can perform.<\/li>\n<li>Go to <strong>Oozami Booking \u2192 Availability<\/strong> to set weekly opening hours and mark closed days. Use the blocked-dates list to add holidays or one-off closures.<\/li>\n<\/ol>\n\n<h4>6. Add the booking form to a page<\/h4>\n\n<p>Create or edit a WordPress page (e.g. \"Book an appointment\") and insert the shortcode:<\/p>\n\n<pre><code>[oozami-booking]\n<\/code><\/pre>\n\n<p>Or, if you use Elementor, drag the <strong>Oozami Booking<\/strong> widget into your layout. Publish the page \u2014 your booking form is live.<\/p>\n\n<h4>7. (Recommended) Create the \"My appointment\" page<\/h4>\n\n<p>Create a second WordPress page (e.g. \"My appointment\") and insert this shortcode:<\/p>\n\n<pre><code>[oozami_booking_my_booking]\n<\/code><\/pre>\n\n<p>Then go back to <strong>Oozami Booking \u2192 Settings \u2192 Customer area<\/strong> and paste this page's URL into <strong>\"My appointment\" page URL<\/strong>. From now on, every confirmation email will include a \"View \/ cancel my appointment\" button that takes the customer to their personal booking page via a secure token.<\/p>\n\n<h4>8. (Optional) Disable auto-confirmation<\/h4>\n\n<p>If you want to manually validate every booking before sending a confirmation email, uncheck <strong>Automatic confirmation<\/strong> in Settings. New bookings will then arrive in <strong>Pending<\/strong> status under <strong>Oozami Booking \u2192 Bookings<\/strong>, where you can either confirm them (sends a confirmation email to the customer) or refuse them (sends a cancellation email).<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20free%20version%20require%20pro%3F\"><h3>Does the free version require Pro?<\/h3><\/dt>\n<dd><p>No. Oozami Booking is fully functional on its own and does not require any paid add-on.<\/p><\/dd>\n<dt id=\"does%20it%20support%20elementor%3F\"><h3>Does it support Elementor?<\/h3><\/dt>\n<dd><p>Yes, if Elementor is installed and active. Elementor is optional \u2014 the shortcode works in any page builder or the classic editor.<\/p><\/dd>\n<dt id=\"i%20am%20not%20receiving%20the%20booking%20emails.%20what%20should%20i%20do%3F\"><h3>I am not receiving the booking emails. What should I do?<\/h3><\/dt>\n<dd><p>Oozami Booking sends emails through WordPress' built-in <code>wp_mail()<\/code> function. Many shared hosts have no SMTP server configured by default, which causes <code>wp_mail()<\/code> to silently fail. To fix this:<\/p>\n\n<ol>\n<li>Open the Oozami Booking settings page. Under <strong>Email delivery<\/strong>, click <strong>Send test<\/strong> to verify whether your site can send mail at all. If a delivery error occurred recently, it is shown right above the button.<\/li>\n<li>If the test fails (or the email never arrives), install a dedicated SMTP plugin such as <strong>WP Mail SMTP<\/strong> or <strong>FluentSMTP<\/strong>.<\/li>\n<li>Connect it to a transactional email provider \u2014 Brevo, SendGrid, Mailgun, Postmark, Gmail SMTP, or the SMTP credentials provided by your host.<\/li>\n<li>Make sure the <strong>Sender email<\/strong> matches a domain you own, and that SPF + DKIM are configured for that domain in your DNS zone.<\/li>\n<li>Send the test email again. Once it arrives, all booking confirmations and cancellations will be delivered the same way.<\/li>\n<\/ol>\n\n<p>This is the standard approach used by most WordPress plugins. Oozami Booking deliberately does not embed its own SMTP stack so you can keep full control over your email provider.<\/p><\/dd>\n<dt id=\"where%20can%20i%20see%20the%20last%20email%20error%3F\"><h3>Where can I see the last email error?<\/h3><\/dt>\n<dd><p>Open <strong>Oozami Booking \u2192 Settings \u2192 Email delivery<\/strong>. If WordPress failed to send an email recently, the error message is displayed at the top of the panel.<\/p><\/dd>\n<dt id=\"can%20i%20require%20manual%20approval%20before%20confirming%20bookings%3F\"><h3>Can I require manual approval before confirming bookings?<\/h3><\/dt>\n<dd><p>Yes. In Settings, disable <strong>Automatic confirmation<\/strong>. New bookings then arrive with the <strong>Pending<\/strong> status and you decide whether to confirm or refuse them from the Bookings page. Confirming sends the confirmation email to the customer; refusing sends a cancellation email.<\/p><\/dd>\n<dt id=\"can%20customers%20cancel%20their%20own%20booking%3F\"><h3>Can customers cancel their own booking?<\/h3><\/dt>\n<dd><p>Yes. Create a page with the <code>[oozami_booking_my_booking]<\/code> shortcode and paste its URL into Settings \u2192 Customer area. A secure \"View \/ cancel my appointment\" button is then added to every confirmation email.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20translation-ready%3F\"><h3>Is the plugin translation-ready?<\/h3><\/dt>\n<dd><p>Yes. Oozami Booking loads the <code>oozami-booking<\/code> text domain and uses translation functions for all user-facing strings. You can translate it via translate.wordpress.org once it is published, or by adding your own <code>.po<\/code>\/<code>.mo<\/code> files.<\/p><\/dd>\n<dt id=\"what%20happens%20on%20uninstall%3F\"><h3>What happens on uninstall?<\/h3><\/dt>\n<dd><p>The plugin cleanly removes all of its database tables and options through <code>uninstall.php<\/code>. No leftover data is kept in the database.<\/p><\/dd>\n<dt id=\"is%20there%20a%20pro%20version%3F\"><h3>Is there a Pro version?<\/h3><\/dt>\n<dd><p>Yes \u2014 an optional Pro add-on is available with advanced features. Details: https:\/\/oozami.be\/portfolio\/easybook-pro\/<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>4.0.0<\/h4>\n\n<ul>\n<li>Free edition is now fully standalone \u2014 all premium modules moved to a separate add-on.<\/li>\n<li>Removed license checks and feature limits.<\/li>\n<li>Inline scripts\/styles moved to enqueued files.<\/li>\n<li>iCal attachment generated in memory (no temp file).<\/li>\n<\/ul>\n\n<h4>3.0.0<\/h4>\n\n<ul>\n<li>First public release on WordPress.org.<\/li>\n<li>Built-in \"Send test email\" button and last-error diagnostic in Settings.<\/li>\n<li>WordPress.org-compatible documentation and clean uninstall.<\/li>\n<li>GPL-ready packaging with no paid dependency required.<\/li>\n<\/ul>","raw_excerpt":"Online appointment booking for WordPress: services, employees, availability, confirmation emails, and an Elementor widget.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/314514","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=314514"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/oozami"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=314514"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=314514"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=314514"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=314514"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=314514"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=314514"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}