{"id":382934,"date":"2026-10-25T07:27:52","date_gmt":"2026-10-25T07:27:52","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/kairomi\/"},"modified":"2026-10-26T10:07:00","modified_gmt":"2026-10-26T10:07:00","slug":"kairomi","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/kairomi\/","author":23581531,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.9.5","stable_tag":"0.9.5","tested":"7.1.4","requires":"6.4","requires_php":"8.0","requires_plugins":null,"header_name":"Kairomi","header_author":"Mokita Studio","header_description":"Online booking for pet grooming salons: services priced by pet type and weight, extras, calendar, opening hours and closures, public booking form, email confirmations and reminders. Your data stays on your site.","assets_banners_color":"0e1b4d","last_updated":"2026-10-26 10:07:00","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/mokita.studio","rating":0,"author_block_rating":0,"active_installs":0,"downloads":103,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.9.4":{"tag":"0.9.4","author":"mokitastudio","date":"2026-10-25 07:27:31","revision":3764054},"0.9.5":{"tag":"0.9.5","author":"mokitastudio","date":"2026-10-26 10:07:00","revision":3766072}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3764054,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3764054,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3764054,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3764054,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"plectra\/booking":{"name":"plectra\/booking","title":"Plectra Booking"}},"tagged_versions":["0.9.4","0.9.5"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3764054,"resolution":"1","location":"assets","locale":"","width":1600,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3764054,"resolution":"2","location":"assets","locale":"","width":1600,"height":560},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3764054,"resolution":"3","location":"assets","locale":"","width":1600,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3764054,"resolution":"4","location":"assets","locale":"","width":1600,"height":900},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3764054,"resolution":"5","location":"assets","locale":"","width":1600,"height":560}},"screenshots":{"1":"Booking calendar, month view: every appointment with its time and status.","2":"Day view: the appointments of a day, change the status in one click.","3":"New booking: after pet type and weight, only the services that fit, with extras and the total.","4":"Catalog: price and duration of a service for each pet type and weight, extras per variant.","5":"Catalog: pet types and weight ranges."}},"plugin_section":[],"plugin_tags":[8132,269,416,251534,48732],"plugin_category":[40],"plugin_contributors":[288314],"plugin_business_model":[],"class_list":["post-382934","plugin","type-plugin","status-publish","hentry","plugin_tags-appointments","plugin_tags-booking","plugin_tags-calendar","plugin_tags-grooming","plugin_tags-pet","plugin_category-calendar-and-events","plugin_contributors-mokitastudio","plugin_committers-mokitastudio"],"banners":{"banner":"https:\/\/ps.w.org\/kairomi\/assets\/banner-772x250.png?rev=3764054","banner_2x":"https:\/\/ps.w.org\/kairomi\/assets\/banner-1544x500.png?rev=3764054","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/kairomi\/assets\/icon-128x128.png?rev=3764054","icon_2x":"https:\/\/ps.w.org\/kairomi\/assets\/icon-256x256.png?rev=3764054","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/kairomi\/assets\/screenshot-1.png?rev=3764054","caption":"Booking calendar, month view: every appointment with its time and status."},{"src":"https:\/\/ps.w.org\/kairomi\/assets\/screenshot-2.png?rev=3764054","caption":"Day view: the appointments of a day, change the status in one click."},{"src":"https:\/\/ps.w.org\/kairomi\/assets\/screenshot-3.png?rev=3764054","caption":"New booking: after pet type and weight, only the services that fit, with extras and the total."},{"src":"https:\/\/ps.w.org\/kairomi\/assets\/screenshot-4.png?rev=3764054","caption":"Catalog: price and duration of a service for each pet type and weight, extras per variant."},{"src":"https:\/\/ps.w.org\/kairomi\/assets\/screenshot-5.png?rev=3764054","caption":"Catalog: pet types and weight ranges."}],"raw_content":"<!--section=description-->\n<p>Kairomi \u2013 Pet Grooming Booking takes appointments for a pet grooming salon on your own WordPress site. Bookings, customers and pets stay in your site's database.<\/p>\n\n<ul>\n<li>Your salon: its name, address, phone and weekly opening hours, split shifts and closed days included (Kairomi -&gt; Configuration -&gt; Shop). Booking times follow the WordPress time zone (Settings -&gt; General).<\/li>\n<li>Closures: single days, ranges of days and hour bands, plus the Italian public holidays in one click (Easter Monday and, from 2026, 4 October included).<\/li>\n<li>Free times worked out for you: the form offers the times that fit the opening hours, the closures, the bookings already taken and the length of the chosen service and extras.<\/li>\n<li>Services priced by pet type and weight (for example dog, 6-10 kg), each with its own price and duration, plus optional extras.<\/li>\n<li>Bookings: month calendar (click a day to see its bookings in a side panel), day view and searchable list; create, edit, confirm, cancel, move, mark as done or no-show.<\/li>\n<li>Customers and their pets.<\/li>\n<li>Booking form for your pages, as a block or with the [kairomi_booking] shortcode. The full form, [kairomi_booking view=\"wizard\"], goes step by step or on a single page: it is the one on the booking page the first-run setup creates. Without view=\"wizard\" the shortcode shows a compact form on one page. Choose what the full form shows and asks (prices, durations, extras, email, notes, one custom field), the minimum notice, how far ahead customers can book and the colors.<\/li>\n<li>Emails to the customer when they book, when the salon confirms, cancels or moves the booking, and a reminder before the appointment (24 hours by default), plus a copy of new bookings for the salon. They are sent through your site's email setup: use an SMTP plugin for reliable delivery.<\/li>\n<li>Import bookings with their customers from a CSV file, or customers, pets and bookings from a JSON file.<\/li>\n<li>Antispam on the public form: a hidden trap field and a limit per connection, plus the optional Cloudflare Turnstile check (see External services).<\/li>\n<li>Privacy: the customers' data is included in the WordPress personal data export and erasure tools, and a suggested text is added to the privacy policy guide.<\/li>\n<\/ul>\n\n<p>The interface is in English and comes with an Italian translation, used on sites set to Italian. Translations into other languages can be added on translate.wordpress.org.<\/p>\n\n<p>The animal icons in public\/icons\/ are original works made for this plugin and, like the rest of it, are released under GPLv2 or later.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin can use one external service, Cloudflare Turnstile, an antispam check for the public booking form provided by Cloudflare, Inc. It is off by default. It is used only after the site administrator turns it on in Kairomi -&gt; Configuration -&gt; Settings -&gt; Anti-spam protection and enters the site key and secret key of a Turnstile widget created in their own Cloudflare account.<\/p>\n\n<p>While it is on:<\/p>\n\n<ul>\n<li>Every page that shows the booking form loads Cloudflare's script from https:\/\/challenges.cloudflare.com\/turnstile\/v0\/api.js in the visitor's browser. To tell a person from a bot, the browser sends Cloudflare technical data such as the visitor's IP address, browser and device characteristics (User-Agent, TLS fingerprint) and the site key and address of the page.<\/li>\n<li>When the visitor submits a booking, the site sends the token produced by the widget, the secret key and the visitor's IP address to https:\/\/challenges.cloudflare.com\/turnstile\/v0\/siteverify to check it. No booking data (name, phone, email, pet, notes) is sent to Cloudflare.<\/li>\n<\/ul>\n\n<p>Cloudflare terms: https:\/\/www.cloudflare.com\/terms\/\nCloudflare privacy policy: https:\/\/www.cloudflare.com\/privacypolicy\/\nTurnstile privacy addendum: https:\/\/www.cloudflare.com\/turnstile-privacy-policy\/<\/p>\n\n<!--section=installation-->\n<ol>\n<li>In your WordPress admin go to Plugins -&gt; Add New Plugin, search for Kairomi and click Install Now, then Activate. Or upload the kairomi zip from Plugins -&gt; Add New Plugin -&gt; Upload Plugin.<\/li>\n<li>Open the \"Kairomi\" menu and follow the first-run setup: your salon and its opening hours, your services, the booking page.<\/li>\n<li>Add the \"Kairomi \u2013 Pet Grooming Booking\" block (or the [kairomi_booking view=\"wizard\"] shortcode) to any other page where customers should book.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20plugin%20send%20data%20to%20other%20sites%3F\"><h3>Does the plugin send data to other sites?<\/h3><\/dt>\n<dd><p>No. The plugin makes no external calls unless you turn on Cloudflare Turnstile (see External services).<\/p><\/dd>\n<dt id=\"why%20do%20customers%20not%20receive%20the%20emails%3F\"><h3>Why do customers not receive the emails?<\/h3><\/dt>\n<dd><p>The plugin sends them with WordPress's own mail function, like the rest of your site. Many hosts deliver those poorly: install an SMTP plugin and connect it to your mailbox or to an email service.<\/p><\/dd>\n<dt id=\"how%20are%20grooming%20prices%20handled%3F\"><h3>How are grooming prices handled?<\/h3><\/dt>\n<dd><p>Each service has a price and a duration for every pet type and weight range, plus optional extras attached to the service.<\/p><\/dd>\n<dt id=\"can%20i%20move%20my%20bookings%20from%20another%20system%3F\"><h3>Can I move my bookings from another system?<\/h3><\/dt>\n<dd><p>Yes, from a CSV or JSON file: Kairomi -&gt; Configuration -&gt; Import data. Run it first in \"Dry run\" mode: it reports what would come in without saving anything.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.9.5<\/h4>\n\n<ul>\n<li>The salon always gets its copy of a new booking: also when the customer left no email and when the confirmation to the customer is switched off. A booking added in the panel with \"Confirmation email\" unticked still tells the salon; the customer's email follows only its own settings.<\/li>\n<li>Calendar and dates of the public form: the day you click is the day that is booked, in every time zone and on the days the clocks change (in some zones the booked day could be the one before or after).<\/li>\n<li>One booking per time: when two requests for the same time arrive together, the first one books and the second one is told that the time is no longer available.<\/li>\n<li>A closed booking form no longer takes bookings, not even at the form's address. A booking that cannot be saved is reported as an error, with no confirmation and no emails.<\/li>\n<li>The last step of the first-run setup is \"Open online booking\": it is ticked on the first run, and finishing leaves the form open. The dashboard shows the real state: green only when the form is on and a published page holds it; otherwise it says what is missing (form closed, page in draft, no page) with a button to fix it.<\/li>\n<li>The default texts of the form (title, introduction, consent, messages) stay in the site's language when an administrator with another profile language finishes the first-run setup or opens or closes online booking.<\/li>\n<li>The booking block opens with the full form, the one set up in Booking form (step by step or one page, fields, texts), the same as [kairomi_booking view=\"wizard\"]. The compact form is still a choice in the block settings. Blocks already placed without a chosen view show the full form.<\/li>\n<li>The Bookings page works on servers without the PHP mbstring extension.<\/li>\n<\/ul>\n\n<h4>0.9.4<\/h4>\n\n<ul>\n<li>First release on WordPress.org.<\/li>\n<\/ul>","raw_excerpt":"Booking for pet grooming salons: opening hours, services priced by pet type and weight, calendar, booking form, email reminders.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/382934","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=382934"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mokitastudio"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=382934"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=382934"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=382934"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=382934"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=382934"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=382934"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}