{"id":327756,"date":"2026-08-12T18:19:48","date_gmt":"2026-08-12T18:19:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/simple-booking\/"},"modified":"2026-08-28T18:09:21","modified_gmt":"2026-08-28T18:09:21","slug":"sinnvoll-booking-flow","status":"publish","type":"plugin","link":"https:\/\/id.wordpress.org\/plugins\/sinnvoll-booking-flow\/","author":13881692,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.11.15","stable_tag":"1.11.15","tested":"7.0.4","requires":"6.5","requires_php":"8.1","requires_plugins":null,"header_name":"sinnvoll Booking Flow","header_author":"sinnvollF\u00dcHREN","header_description":"Seminar and event booking forms for trainers, coaches, and education providers.","assets_banners_color":"ffffff","last_updated":"2026-08-28 18:09:21","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/sinnvoll-fuehren.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":294,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.11.10":{"tag":"1.11.10","author":"rmiarka","date":"2026-08-24 18:38:10","revision":3664116},"1.11.11":{"tag":"1.11.11","author":"rmiarka","date":"2026-08-24 18:49:22","revision":3664118},"1.11.12":{"tag":"1.11.12","author":"rmiarka","date":"2026-08-26 20:52:32","revision":3667788},"1.11.13":{"tag":"1.11.13","author":"rmiarka","date":"2026-08-27 06:08:11","revision":3668167},"1.11.14":{"tag":"1.11.14","author":"rmiarka","date":"2026-08-28 09:42:35","revision":3670098},"1.11.15":{"tag":"1.11.15","author":"rmiarka","date":"2026-08-28 18:09:21","revision":3670782},"1.11.7":{"tag":"1.11.7","author":"rmiarka","date":"2026-08-12 18:19:35","revision":3643871},"1.11.8":{"tag":"1.11.8","author":"rmiarka","date":"2026-08-13 15:48:01","revision":3645750},"1.11.9":{"tag":"1.11.9","author":"rmiarka","date":"2026-08-23 07:28:36","revision":3661489}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3643871,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3643871,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3643871,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3643871,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.11.10","1.11.11","1.11.12","1.11.13","1.11.14","1.11.15","1.11.7","1.11.8","1.11.9"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3643871,"resolution":"1","location":"assets","locale":"","width":688,"height":332},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3643871,"resolution":"2","location":"assets","locale":"","width":1440,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3643871,"resolution":"3","location":"assets","locale":"","width":1440,"height":900}},"screenshots":{"1":"The booking widget your visitors see \u2014 dates, price, remaining places and the booking form.","2":"Manage all your events with status, capacity and bookings at a glance.","3":"The attendee list of an event \u2014 who booked what, with CSV export."}},"plugin_section":[],"plugin_tags":[27868,269,1486,603,15480],"plugin_category":[40,58],"plugin_contributors":[275394],"plugin_business_model":[],"class_list":["post-327756","plugin","type-plugin","status-publish","hentry","plugin_tags-attendees","plugin_tags-booking","plugin_tags-events","plugin_tags-registration","plugin_tags-rsvp","plugin_category-calendar-and-events","plugin_category-user-management","plugin_contributors-rmiarka","plugin_committers-rmiarka"],"banners":{"banner":"https:\/\/ps.w.org\/sinnvoll-booking-flow\/assets\/banner-772x250.png?rev=3643871","banner_2x":"https:\/\/ps.w.org\/sinnvoll-booking-flow\/assets\/banner-1544x500.png?rev=3643871","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/sinnvoll-booking-flow\/assets\/icon-128x128.png?rev=3643871","icon_2x":"https:\/\/ps.w.org\/sinnvoll-booking-flow\/assets\/icon-256x256.png?rev=3643871","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/sinnvoll-booking-flow\/assets\/screenshot-1.png?rev=3643871","caption":"The booking widget your visitors see \u2014 dates, price, remaining places and the booking form."},{"src":"https:\/\/ps.w.org\/sinnvoll-booking-flow\/assets\/screenshot-2.png?rev=3643871","caption":"Manage all your events with status, capacity and bookings at a glance."},{"src":"https:\/\/ps.w.org\/sinnvoll-booking-flow\/assets\/screenshot-3.png?rev=3643871","caption":"The attendee list of an event \u2014 who booked what, with CSV export."}],"raw_content":"<!--section=description-->\n<p>sinnvoll Booking Flow lets you add seminar and event booking forms to any WordPress page or post with a shortcode. Visitors register for your events, you manage attendees and bookings from the admin, and everyone gets automatic confirmation emails.<\/p>\n\n<h4>Key features<\/h4>\n\n<ul>\n<li><strong>Booking widget<\/strong> for any event via <code>[sinnvoll_bf_widget id=\"EVENT_ID\"]<\/code><\/li>\n<li><strong>Event lists<\/strong> by IDs or timeframe via <code>[sinnvoll_bf_event_list]<\/code><\/li>\n<li><strong>Multiple attendees per booking<\/strong> with per-attendee details<\/li>\n<li><strong>Ticket capacity<\/strong> and minimum-tickets handling per event<\/li>\n<li><strong>Configurable confirmation emails<\/strong> with placeholders (booker, attendee, event, booking details) and multi-language templates<\/li>\n<li><strong>Admin management<\/strong> of events, bookings and attendees, including resend of confirmation emails<\/li>\n<li><strong>CSV export<\/strong> of bookings and attendees<\/li>\n<li><strong>GDPR tools<\/strong>: data export and erasure integration with WordPress Privacy, plus optional automatic anonymisation of old records<\/li>\n<li><strong>Cancellation policy<\/strong> and statutory right-of-withdrawal (revocation) form via shortcode<\/li>\n<li><strong>Spam protection<\/strong> for booking submissions (keyword\/domain filters, minimum submit time)<\/li>\n<li><strong>Custom frontend texts<\/strong> in multiple languages<\/li>\n<\/ul>\n\n<h4>Shortcodes<\/h4>\n\n<ul>\n<li><code>[sinnvoll_bf_widget id=\"EVENT_ID\" lang=\"de|en\"]<\/code> \u2014 full booking widget for one event<\/li>\n<li><code>[sinnvoll_bf_button id=\"EVENT_ID\"]<\/code> \u2014 just the \"book\" button<\/li>\n<li><code>[sinnvoll_bf_event_list timeframe=\"future|past|all\"]<\/code> \u2014 list of events<\/li>\n<li><code>[sinnvoll_bf_confirmation]<\/code> \u2014 booking confirmation messages on your success page<\/li>\n<li><code>[sinnvoll_bf_revocation_form]<\/code> \u2014 statutory right-of-withdrawal form<\/li>\n<li><code>[sinnvoll_bf_cancellation_policy]<\/code> \u2014 outputs your cancellation policy text<\/li>\n<\/ul>\n\n<h4>More power with sinnvoll Booking Flow Pro<\/h4>\n\n<p>Need more? <a href=\"https:\/\/sinnvoll-fuehren.com\/sinnvoll-booking-flow\/\">sinnvoll Booking Flow Pro<\/a> adds coupons, PDF certificates for attendees, waiting lists, multiple ticket types per event, bookable add-ons, bulk emails to attendees, a visual form editor, Excel export and calendar invitations. One-time purchase, 12 months of updates and support included.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>This plugin processes personal data as part of running bookings on your site.\nAll data stays in your WordPress database; the plugin makes no calls to\nexternal services. What it stores:<\/p>\n\n<ul>\n<li><strong>Booking data<\/strong> you collect through the form (names, email addresses and any\nfields you configure), for as long as you keep the bookings.<\/li>\n<li><strong>Consent log:<\/strong> when a visitor submits a booking, the plugin records which\nconsent checkboxes were accepted together with a timestamp, the visitor's IP\naddress and browser user agent, as proof of consent. The optional data\nretention settings anonymise the IP address after the configured period.<\/li>\n<li><strong>Audit log:<\/strong> administrative changes to bookings and attendees are recorded\nwith the acting user, IP address and user agent, so changes remain traceable.<\/li>\n<li><strong>Rate limiting:<\/strong> public booking submissions are counted per client IP using\na short-lived, hashed counter (a transient). No raw IP is persisted for this\npurpose and no cookie is involved.<\/li>\n<li><strong>Security cookie:<\/strong> see the FAQ above for the <code>sinnvoll_bf_cid<\/code> cookie.<\/li>\n<\/ul>\n\n<p>The plugin integrates with WordPress' personal-data export and erasure tools\n(Tools \u2192 Export\/Erase Personal Data) and registers suggested wording in the\nPrivacy Policy editor (Settings \u2192 Privacy). Reviewing and publishing your\nsite's privacy notice remains your responsibility.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/sinnvoll-booking-flow<\/code>, or install through the WordPress Plugins screen directly.<\/li>\n<li>Activate the plugin through the \"Plugins\" screen in WordPress.<\/li>\n<li>Go to <strong>sinnvoll Booking Flow<\/strong> in the admin menu to create your first event.<\/li>\n<li>Add a booking widget to any page with <code>[sinnvoll_bf_widget id=\"EVENT_ID\"]<\/code> (the event ID is shown on the event list).<\/li>\n<li>Configure confirmation emails, sender details and texts under <strong>sinnvoll Booking Flow \u2192 Settings<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20show%20a%20booking%20form%20on%20a%20page%3F\"><h3>How do I show a booking form on a page?<\/h3><\/dt>\n<dd><p>Create an event in the admin, note its ID, then place <code>[sinnvoll_bf_widget id=\"EVENT_ID\"]<\/code> on any page or post.<\/p><\/dd>\n<dt id=\"can%20visitors%20register%20more%20than%20one%20attendee%3F\"><h3>Can visitors register more than one attendee?<\/h3><\/dt>\n<dd><p>Yes. A single booking can contain multiple attendees, each with their own name and email.<\/p><\/dd>\n<dt id=\"does%20it%20send%20confirmation%20emails%3F\"><h3>Does it send confirmation emails?<\/h3><\/dt>\n<dd><p>Yes. Confirmation emails are sent automatically and are fully configurable, including placeholders and multiple languages.<\/p><\/dd>\n<dt id=\"does%20it%20help%20with%20gdpr%3F\"><h3>Does it help with GDPR?<\/h3><\/dt>\n<dd><p>The plugin provides tools that support GDPR workflows: it integrates with WordPress' personal-data export and erasure tools and offers optional automatic anonymisation of old records. It does not make your site compliant on its own \u2014 compliance always depends on how you configure and operate your site, your legal texts, and your own processes.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20set%20any%20cookies%3F\"><h3>Does the plugin set any cookies?<\/h3><\/dt>\n<dd><p>It sets one cookie, <code>sinnvoll_bf_cid<\/code>, only when a booking widget or revocation\nform that needs a security token is rendered for a logged-out visitor. It stores\na random pseudonymous identifier \u2014 it contains no booking data and is not used\nfor tracking \u2014 and serves solely to tie the form's security nonce to the\nvisitor's browser, hardening the public booking form against cross-site request\nforgery and automated abuse. It is designed to function as a strictly necessary\nsecurity cookie, but this plugin cannot make legal determinations for your site\n\u2014 you are responsible for assessing your local consent and disclosure\nrequirements and listing the cookie in your cookie\/privacy notice. The plugin\nregisters suggested text in WordPress' Privacy Policy editor (Settings \u2192\nPrivacy) to help with this.<\/p><\/dd>\n<dt id=\"in%20which%20format%20can%20i%20export%20bookings%3F\"><h3>In which format can I export bookings?<\/h3><\/dt>\n<dd><p>Bookings and attendees can be exported as CSV, which opens in any spreadsheet application.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.11.15<\/h4>\n\n<ul>\n<li>Fixed: In the booking dialog the keyboard focus could land in the invisible spam-protection field instead of the first real field \u2014 typing immediately after opening could end up nowhere and get the booking flagged as spam.<\/li>\n<\/ul>\n\n<h4>1.11.14<\/h4>\n\n<ul>\n<li>Fixed: On sold-out events with an active waiting list, the \"Add attendee\" button refused to add anyone (\"Only 0 seats left\") \u2014 the seats-left check now stands down in waiting-list mode, where the server accepts any number of attendees.<\/li>\n<\/ul>\n\n<h4>1.11.13<\/h4>\n\n<ul>\n<li>Fixed: All plugin strings could appear in English on translated sites even though complete translations exist \u2014 the wp.org language pack is now loaded explicitly instead of relying on WordPress' just-in-time loading.<\/li>\n<\/ul>\n\n<h4>1.11.12<\/h4>\n\n<ul>\n<li>Fixed: Required checkbox groups (e.g. attendance days) demanded ALL options to be ticked \u2014 the browser silently blocked guests who selected only some. At least one is now enough, with a clear browser message when none is selected.<\/li>\n<li>Improved: When a required field is empty, the booking error now names the field instead of showing a generic message.<\/li>\n<li>Improved: When the submitted form is older than the current form definition (stale page cache), guests are asked to reload the page instead of seeing a generic error.<\/li>\n<\/ul>\n\n<h4>1.11.11<\/h4>\n\n<ul>\n<li>Changed: The bookings export now shows the option labels guests actually selected (e.g. \"Freitag (ab 17:00 Uhr)\") instead of raw stored values (friday) \u2014 for radio, select and checkbox-group fields, using each booking's form snapshot.<\/li>\n<li>Changed: The bookings export no longer includes the internal ticket-type ID column; the ticket name is already part of the attendee data.<\/li>\n<\/ul>\n\n<h4>1.11.10<\/h4>\n\n<ul>\n<li>Fixed: The bookings export (CSV and Pro Excel) showed empty cells for all custom form fields \u2014 only the column headings appeared. Values from the booking form (e.g. radio selections, checkbox groups, consents) now export correctly.<\/li>\n<li>Changed: The bookings export no longer creates columns for form elements that never carry a value (HTML blocks, the submit button, the attendee controls).<\/li>\n<\/ul>\n\n<h4>1.11.9<\/h4>\n\n<ul>\n<li>Fixed: Event tabs (e.g. Coupons in Pro) could show a stale list after creating or editing entries in a modal \u2014 tab content was served from a five-minute browser cache. Tabs now always load fresh on every activation.<\/li>\n<li>Compatibility: Tested with WordPress 7.1.<\/li>\n<\/ul>\n\n<h4>1.11.8<\/h4>\n\n<ul>\n<li>New: Event cards show \"Price from:\" with the lowest ticket price when an event has multiple ticket types with different prices (translatable via the Texts screen).<\/li>\n<li>Changed: \"Hide tax\" on a ticket type now means final price \u2014 the booking costs exactly the displayed amount; no tax is calculated or stored for such tickets.<\/li>\n<li>Changed: The price summary in the booking form collapses to a single Total line when there is no tax to show (0% rate or final-price tickets); the full breakdown returns when a taxed ticket type is selected.<\/li>\n<li>Fixed: Hidden price-summary lines were still visible due to a CSS specificity conflict.<\/li>\n<\/ul>\n\n<h4>1.11.7<\/h4>\n\n<ul>\n<li>Fixed: Status badges in the attendee and booking lists (and the CSV export) now show translated labels instead of the raw English status value.<\/li>\n<li>Fixed: The admin toolbar above attendee\/booking lists no longer overlaps the table header when its controls wrap onto a second line.<\/li>\n<li>Fixed: Setting attendees to booked\/cancelled\/missed now shows a matching success notice instead of \"Attendee moved to trash.\"; German trash notices now say \"Papierkorb\".<\/li>\n<\/ul>\n\n<h4>1.11.6<\/h4>\n\n<ul>\n<li>New: Guest emails now follow the language the booking was made in. The booking form language is stored with each booking; confirmation and cancellation emails use it, falling back to the event language and then the site language. Events gained a Language setting (default: site language), and the widget renders in the event's language when the shortcode has no lang attribute. Admin notifications intentionally stay in the site language.<\/li>\n<\/ul>\n\n<h4>1.11.5<\/h4>\n\n<ul>\n<li>Initial release on the WordPress plugin directory.<\/li>\n<\/ul>","raw_excerpt":"Seminar and event booking forms for trainers, coaches, and education providers.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/327756","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=327756"}],"author":[{"embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/rmiarka"}],"wp:attachment":[{"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=327756"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=327756"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=327756"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=327756"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=327756"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/id.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=327756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}