{"id":365280,"date":"2026-09-09T17:09:17","date_gmt":"2026-09-09T17:09:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/smartengin-meetmix\/"},"modified":"2026-10-04T15:04:38","modified_gmt":"2026-10-04T15:04:38","slug":"smartengin-meetmix","status":"publish","type":"plugin","link":"https:\/\/mlt.wordpress.org\/plugins\/smartengin-meetmix\/","author":23470033,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.41.0","stable_tag":"0.41.0","tested":"7.1.2","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"smartEngin MeetMix","header_author":"smartEngin","header_description":"Appointment booking for your website: visitors see your real availability and book a phone call, an on-site visit or an online meeting. Confirmations, reminders and cancellation links included.","assets_banners_color":"9ba1ab","last_updated":"2026-10-04 15:04:38","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/smartengin.de\/meetmix\/","header_author_uri":"https:\/\/smartengin.de\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":366,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.33.3,":{"tag":"0.33.3,","author":"businesskiai","date":"2026-09-09 17:08:59","revision":3688733},"0.33.6":{"tag":"0.33.6","author":"businesskiai","date":"2026-09-18 17:40:36","revision":3702501},"0.34.1":{"tag":"0.34.1","author":"businesskiai","date":"2026-09-19 13:43:44","revision":3703334},"0.37.0":{"tag":"0.37.0","author":"businesskiai","date":"2026-09-20 12:52:10","revision":3704264},"0.38.0":{"tag":"0.38.0","author":"businesskiai","date":"2026-09-21 10:53:47","revision":3705438},"0.41.0":{"tag":"0.41.0","author":"businesskiai","date":"2026-10-04 15:04:38","revision":3727555}},"upgrade_notice":{"0.41.0":"<p>Fixes bookings with very long names, adds a brake against programs that flood the booking calendar with requests, and prepares confirmation by email for event sign-ups.<\/p>","0.40.0":"<p>A clear window instead of a small line when the time you pick for an appointment is taken \u2014 and a warning for absences, events and holidays.<\/p>","0.39.0":"<p>New overview of blocked attacks under Settings \u2192 Log. Only numbers are stored, no IP addresses. Your spam protection itself works exactly as before.<\/p>","0.38.0":"<p>You can now drag the appointment types of a booking view into the order your visitors see, and give a single appointment type its own booking confirmation with attachments. Nothing changes until you do it.<\/p>","0.33.3":"<p>Screenshot descriptions for the plugin directory. Nothing about the plugin itself has changed.<\/p>","0.33.2":"<p>The admin calendar now fills the height of your window instead of a fixed height. Nothing you click changes.<\/p>","0.33.1":"<p>The reschedule calendar on the customer page loads its script the way the plugin directory asks for. Nothing you can see changes.<\/p>","0.33.0":"<p>Every page is now filtered once more at the moment it is printed, as the plugin directory asks. Nothing you can see changes.<\/p>","0.32.3":"<p>An internal page used for building the plugin has been removed. Nothing you can see or click changes.<\/p>","0.32.2":"<p>Documentation only. Nothing about how the plugin works has changed.<\/p>","0.32.1":"<p>A slot is now held for 30 minutes while somebody pays, instead of 15 - long enough for payment methods that send your customer to a site of their own.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3688729,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3688729,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3688729,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3688729,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.33.3,","0.33.6","0.34.1","0.37.0","0.38.0","0.41.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3688729,"resolution":"1","location":"assets","locale":"","width":1200,"height":655},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3688729,"resolution":"2","location":"assets","locale":"","width":1555,"height":967},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3688729,"resolution":"3","location":"assets","locale":"","width":1547,"height":1005},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3688729,"resolution":"4","location":"assets","locale":"","width":1537,"height":1190},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3688729,"resolution":"5","location":"assets","locale":"","width":1542,"height":1267},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3688729,"resolution":"6","location":"assets","locale":"","width":1547,"height":726},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3688729,"resolution":"7","location":"assets","locale":"","width":1552,"height":638},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3688729,"resolution":"8","location":"assets","locale":"","width":1535,"height":1208}},"screenshots":{"1":"The booking page a visitor sees: your appointment types, your real free times, and the times in the visitor's own time zone.","2":"Your calendar in the admin area, month view \u2014 with the window for a new appointment or an absence open.","3":"The week view: every appointment in its real length and in the colour of its type.","4":"The year view: one glance shows which days are busy and where your absences are.","5":"Settings: the name and address your emails go out under, the booking number, and what your customer is allowed to change.","6":"Availability: your bookable hours per weekday. Absences and German public holidays live on the same page.","7":"Your appointment types with duration, kind and status \u2014 drag a row to change the order your visitors see.","8":"The manual inside the admin area: every part of the plugin explained where you need it."}},"plugin_section":[],"plugin_tags":[8132,269,275,416,268],"plugin_category":[40],"plugin_contributors":[259512],"plugin_business_model":[],"class_list":["post-365280","plugin","type-plugin","status-publish","hentry","plugin_tags-appointments","plugin_tags-booking","plugin_tags-booking-calendar","plugin_tags-calendar","plugin_tags-scheduling","plugin_category-calendar-and-events","plugin_contributors-businesskiai","plugin_committers-businesskiai"],"banners":{"banner":"https:\/\/ps.w.org\/smartengin-meetmix\/assets\/banner-772x250.png?rev=3688729","banner_2x":"https:\/\/ps.w.org\/smartengin-meetmix\/assets\/banner-1544x500.png?rev=3688729","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/smartengin-meetmix\/assets\/icon-128x128.png?rev=3688729","icon_2x":"https:\/\/ps.w.org\/smartengin-meetmix\/assets\/icon-256x256.png?rev=3688729","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/smartengin-meetmix\/assets\/screenshot-1.png?rev=3688729","caption":"The booking page a visitor sees: your appointment types, your real free times, and the times in the visitor's own time zone."},{"src":"https:\/\/ps.w.org\/smartengin-meetmix\/assets\/screenshot-2.png?rev=3688729","caption":"Your calendar in the admin area, month view \u2014 with the window for a new appointment or an absence open."},{"src":"https:\/\/ps.w.org\/smartengin-meetmix\/assets\/screenshot-3.png?rev=3688729","caption":"The week view: every appointment in its real length and in the colour of its type."},{"src":"https:\/\/ps.w.org\/smartengin-meetmix\/assets\/screenshot-4.png?rev=3688729","caption":"The year view: one glance shows which days are busy and where your absences are."},{"src":"https:\/\/ps.w.org\/smartengin-meetmix\/assets\/screenshot-5.png?rev=3688729","caption":"Settings: the name and address your emails go out under, the booking number, and what your customer is allowed to change."},{"src":"https:\/\/ps.w.org\/smartengin-meetmix\/assets\/screenshot-6.png?rev=3688729","caption":"Availability: your bookable hours per weekday. Absences and German public holidays live on the same page."},{"src":"https:\/\/ps.w.org\/smartengin-meetmix\/assets\/screenshot-7.png?rev=3688729","caption":"Your appointment types with duration, kind and status \u2014 drag a row to change the order your visitors see."},{"src":"https:\/\/ps.w.org\/smartengin-meetmix\/assets\/screenshot-8.png?rev=3688729","caption":"The manual inside the admin area: every part of the plugin explained where you need it."}],"raw_content":"<!--section=description-->\n<p>smartEngin MeetMix lets visitors book appointments directly on your website. You define your appointment types and weekly hours; visitors pick a free slot and receive a confirmation with a calendar file and a link to cancel or reschedule \u2014 no customer account needed.<\/p>\n\n<h4>What you get<\/h4>\n\n<ul>\n<li><strong>Appointment types<\/strong> \u2014 phone call, online meeting, you visit the customer, the customer visits you. Each with its own duration, buffer times, lead time and booking horizon, and optionally its own weekly hours.<\/li>\n<li><strong>A booking page<\/strong> you place with a shortcode. Visitors see your real availability in their own time zone.<\/li>\n<li><strong>Double bookings are prevented by the database, not by a lucky guess.<\/strong> Two visitors can click the same slot at the same moment; only one gets it.<\/li>\n<li><strong>Emails that arrive<\/strong> \u2014 confirmation with a calendar file, notification to you, reminders before the appointment. Every template can be edited, and reminders run without a paid service.<\/li>\n<li><strong>Your customer can cancel or reschedule<\/strong> through a link that contains nothing but a random value. No account, no password.<\/li>\n<li><strong>Your own calendar in the admin area<\/strong> \u2014 year, month, week and day. Create an appointment by clicking into it, drag it to a new time, cancel it \u2014 and you always see the email to your customer before it goes out.<\/li>\n<li><strong>Absences<\/strong> with their own colour, an optional yearly repeat, and a switch for whether they block bookings at all \u2014 a birthday should not close your working day.<\/li>\n<li><strong>Public holidays for all sixteen German federal states<\/strong>, each one individually selectable.<\/li>\n<li><strong>Privacy built in:<\/strong> no IP address is ever stored, old bookings are anonymised or deleted on a schedule you set, and the customer link never carries a name or an email address.<\/li>\n<li><strong>Works with multilingual sites.<\/strong> The language a visitor booked in is stored with the booking, and every email to that person switches to it \u2014 no forced site language, so WPML, Polylang and TranslatePress keep working.<\/li>\n<li><strong>The colours follow yours.<\/strong> One accent colour, used everywhere.<\/li>\n<li>A <strong>manual inside the admin area<\/strong>, and a log that tells you whether an email really went out.<\/li>\n<\/ul>\n\n<h4>The Pro extension<\/h4>\n\n<p>smartEngin MeetMix Pro is a separate plugin. It adds Google Calendar in both directions with an own Google Meet room per appointment, Telegram messages to your phone, several booking pages, events with a waiting list, paid appointments through the free smartEngin buy plugin, and your calendar on your phone. <strong>Nothing in this plugin is locked or waiting to be unlocked<\/strong> \u2014 the free plugin is complete in itself, and the extension brings its own code.<\/p>\n\n<p>What it adds, in one line each: Google Calendar in both directions \u00b7 an own Google Meet room per appointment \u00b7 Telegram messages to your phone \u00b7 several booking views \u00b7 events with seat limits and a waiting list \u00b7 paid appointments through the free smartEngin buy plugin \u00b7 your calendar on your phone. Details: <a href=\"https:\/\/smartengin.de\/meetmix\/\">smartengin.de\/meetmix<\/a><\/p>\n\n<h4>External services<\/h4>\n\n<p>This plugin contacts no external server at all. Nothing is loaded from a CDN, no data leaves the visitor's browser to a third party, and no IP address is stored \u2014 the spam protection turns it into a one-way value that expires after an hour. The Pro extension is where Google and Telegram come in, and it asks for those credentials itself.<\/p>\n\n<h4>Bundled library<\/h4>\n\n<p>FullCalendar 6.1.19 (<a href=\"https:\/\/fullcalendar.io\/\">fullcalendar.io<\/a>, MIT licence) is shipped inside the plugin so that no visitor request ever goes to a CDN. The readable source of the shipped files is at <a href=\"https:\/\/github.com\/fullcalendar\/fullcalendar\">github.com\/fullcalendar\/fullcalendar<\/a>; the exact files, versions and download addresses are documented in <code>assets\/vendor\/fullcalendar\/LIESMICH.txt<\/code> inside the plugin.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install the plugin and activate it.<\/li>\n<li>Open <strong>smartEngin MeetMix \u2192 Appointment types<\/strong> and create your first type \u2014 a phone call, a visit, an online meeting. Duration, buffer times and how far ahead it can be booked belong to the type.<\/li>\n<li>Open <strong>Availability<\/strong> and set your bookable hours per weekday. Absences and German public holidays are on the same page.<\/li>\n<li>Put the shortcode <code>[smartengin_termin]<\/code> on any page \u2014 that is your booking page. <code>[smartengin_booking]<\/code> does the same thing under an English name.<\/li>\n<li>Check <strong>Settings \u2192 General<\/strong> for your company name and the address that notifications are sent to.<\/li>\n<\/ol>\n\n<p>One thing worth checking once: under <strong>Settings \u2192 General<\/strong> of WordPress itself, your time zone should be a <strong>city<\/strong> (for example Berlin), not a fixed offset such as UTC+2. A fixed offset knows no daylight saving time, and every appointment would shift by an hour in autumn. The plugin warns you about this in red if it finds it.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20visitor%20need%20an%20account%3F\"><h3>Does the visitor need an account?<\/h3><\/dt>\n<dd><p>No. Booking asks only for the fields you chose. The link to cancel or reschedule contains a long random value and nothing else \u2014 no name, no email address, no booking number.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20two%20visitors%20click%20the%20same%20slot%20at%20the%20same%20second%3F\"><h3>What happens if two visitors click the same slot at the same second?<\/h3><\/dt>\n<dd><p>One gets it, the other is told the slot has just been taken. This is decided by the database through a unique key per time unit, not by a check in PHP that could be a moment too late.<\/p><\/dd>\n<dt id=\"do%20the%20reminders%20work%20without%20a%20paid%20service%3F\"><h3>Do the reminders work without a paid service?<\/h3><\/dt>\n<dd><p>Yes. They run on WordPress' own scheduled tasks, and they catch up on whatever is due instead of demanding an exact moment \u2014 so a quiet site does not silently skip them. Every reminder is sent once, recorded in the database. WordPress' scheduler only runs when somebody visits your site; if your site is quiet for long stretches, set up a real cron job at your host. The plugin shows you under Settings \u2192 Reminders whether the scheduler is healthy, and how to set that up.<\/p><\/dd>\n<dt id=\"is%20any%20personal%20data%20sent%20anywhere%3F\"><h3>Is any personal data sent anywhere?<\/h3><\/dt>\n<dd><p>No. The plugin contacts no external server. No IP address is stored \u2014 the spam protection turns it into a one-way value that cannot be turned back and expires after an hour. Under Settings \u2192 Privacy you set how long booking data is kept and whether old bookings are anonymised or deleted.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20a%20multilingual%20site%3F\"><h3>Does it work on a multilingual site?<\/h3><\/dt>\n<dd><p>Yes, and it deliberately does not force a language. The language a visitor booked in is stored with the booking, and every email to that person switches to it \u2014 including the reminder that goes out from a scheduled task. WPML, Polylang and TranslatePress keep working, because nothing here hooks the site locale. Your own wording (email templates, the names of your appointment types) is never machine-translated.<\/p><\/dd>\n<dt id=\"can%20i%20charge%20for%20an%20appointment%3F\"><h3>Can I charge for an appointment?<\/h3><\/dt>\n<dd><p>Not with this plugin alone. Paid appointments need the Pro extension together with the free smartEngin buy plugin, which handles checkout, invoice, coupons and refunds. There is deliberately no second payment system in here. You can enter a price without them, but nothing is ever charged, and the plugin says so on the appointment type.<\/p><\/dd>\n<dt id=\"which%20third-party%20code%20ships%20with%20the%20plugin%3F\"><h3>Which third-party code ships with the plugin?<\/h3><\/dt>\n<dd><p>One library: FullCalendar 6.1.19 (MIT). It is shipped inside the plugin instead of loaded from a CDN, so that no visitor request ever leaves your site. Its readable source is at github.com\/fullcalendar\/fullcalendar, and <code>assets\/vendor\/fullcalendar\/LIESMICH.txt<\/code> in the plugin names the exact files and where they came from.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20if%20i%20delete%20the%20plugin%3F\"><h3>What happens to my data if I delete the plugin?<\/h3><\/dt>\n<dd><p>Nothing, unless you ask for it. Deleting the plugin keeps your appointments and settings, so an accidental click never costs you your bookings. There is a switch under Settings \u2192 Privacy if you really want everything removed.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.41.0<\/h4>\n\n<ul>\n<li><strong>Fixed: a first or last name longer than 100 characters could make a booking fail<\/strong> with \u201cThe booking could not be saved.\u201d Every field now has a length that fits: names 100 characters, phone 60, other lines 200, messages 2000, the reason for a cancellation 500. Longer input is shortened; an email address is never shortened \u2014 one longer than 200 characters is refused with a clear message.<\/li>\n<li><strong>The calendar on your booking page now has a brake.<\/strong> One connection may ask for free times at most 300 times in 10 minutes \u2014 a person browsing through the months needs a few dozen. Whoever asks more often is told to wait and is counted under Settings \u2192 Log \u2192 Blocked attacks.<\/li>\n<li>Groundwork for the Pro extension: sign-ups for free events can now wait for a confirmation by email, and somebody who has not confirmed their place on a waiting list does not move up.<\/li>\n<\/ul>\n\n<h4>0.40.0<\/h4>\n\n<ul>\n<li><strong>When you enter or move an appointment yourself and the time is taken, a window now opens in the middle of the screen<\/strong> \u2014 on your phone as well as in the admin calendar \u2014 and says what is in the way: another appointment (with its time and customer), or only the preparation and follow-up times overlapping. Until now a small line under the form said \u201cAnother appointment already occupies this time.\u201d, and it was easy to miss.<\/li>\n<li><strong>New: a warning for absences, events, your linked calendar and closed public holidays.<\/strong> Until now these were not checked at all when you entered an appointment yourself. Now you are told, for example \u201cYou are absent at this time: \u2018Holiday\u2019\u201d, and you decide: choose another time, or create it anyway. Another appointment at the same time stays impossible, as before.<\/li>\n<\/ul>\n\n<h4>0.39.0<\/h4>\n\n<ul>\n<li><strong>New: an overview of blocked attacks<\/strong> under Settings \u2192 Log \u2192 Blocked attacks. You see how often bots and suspicious requests were turned away today, in the last 7 and in the last 30 days \u2014 by reason, by place (which booking view) and minute by minute. Only numbers are stored: no IP addresses and nothing anybody typed in. After 30 days the numbers are removed by themselves, and a button deletes everything at once \u2014 after asking you on the page.<\/li>\n<li>The explanations say honestly when a person may be behind it: a filled-in hidden field or a form sent within seconds is a bot; an old page or a throwaway address can also be a real visitor.<\/li>\n<li>The AI connection counts wrong connection codes and lock-outs there as well.<\/li>\n<li>The block list and the limit per IP address can now be used by the Pro extension for event sign-ups too.<\/li>\n<\/ul>\n\n<h4>0.38.0<\/h4>\n\n<ul>\n<li><strong>The order of the appointment types in the drop-down is now yours.<\/strong> Under Booking views you drag the rows into the order your visitors should see \u2014 arrow buttons do the same thing for the keyboard. Until now that order followed the Appointment types page and could not be changed per booking view. Nothing moves on its own: as long as you do not drag anything, everything stays exactly where it was.<\/li>\n<li><strong>An appointment type can now have its own booking confirmation \u2014 with attachments.<\/strong> Switch it on under the appointment type and the text appears already filled in with your general template; extend it, attach a questionnaire, a PDF with directions or a ZIP, and save. Every other appointment type keeps using the general template from Settings \u2192 Emails, untouched.<\/li>\n<li>This works for paid appointment types too: there the confirmation goes out once the money has arrived, and it is the same email.<\/li>\n<li>A test button sits under each appointment type so you can see your own confirmation, attachments and all, without booking a real appointment.<\/li>\n<li><strong>Please note:<\/strong> as soon as you type your own wording, that wording is fixed in every language and later improvements to the standard text no longer reach it \u2014 the same rule that already applies to the general templates. Clear both fields and save to follow the general template again.<\/li>\n<li>Attachments are picked from your media library, at most five per email. The total size is shown, and you are warned before it gets large enough for mail servers to refuse the whole email.<\/li>\n<\/ul>\n\n<h4>0.37.0<\/h4>\n\n<ul>\n<li><strong>Fixed: the note under the confirmation appeared on every page, not just on the confirmation.<\/strong> It points at the confirmation email \u2014 and there is no such email until the appointment is really booked. It now shows where it belongs, and with room above it instead of stuck to the box.<\/li>\n<li>The heading above the payment step can now be set by the Pro extension, so it can say what the customer is actually doing instead of \u201cOne last step\u201d all the way through.<\/li>\n<\/ul>","raw_excerpt":"Appointment booking for your website: visitors see your real availability and book a phone call, an on-site visit or an online meeting.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/365280","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=365280"}],"author":[{"embeddable":true,"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/businesskiai"}],"wp:attachment":[{"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=365280"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=365280"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=365280"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=365280"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=365280"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=365280"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}