{"id":370453,"date":"2026-09-21T16:34:19","date_gmt":"2026-09-21T16:34:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/smooth-entree\/"},"modified":"2026-10-14T08:48:17","modified_gmt":"2026-10-14T08:48:17","slug":"smooth-entree","status":"publish","type":"plugin","link":"https:\/\/ast.wordpress.org\/plugins\/smooth-entree\/","author":17629787,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.3.0","stable_tag":"0.3.0","tested":"7.1.3","requires":"6.4","requires_php":"8.1","requires_plugins":null,"header_name":"Smooth Entree","header_author":"H4IT","header_description":"Events and ticket sales for venues with live music. Calendar, iDEAL checkout, a QR ticket by email and scanning at the door.","assets_banners_color":"f6f7f2","last_updated":"2026-10-14 08:48:17","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/smoothentree.com","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":160,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.0":{"tag":"0.1.0","author":"h4it","date":"2026-09-21 16:49:51","revision":3705976},"0.2.0":{"tag":"0.2.0","author":"h4it","date":"2026-10-10 19:47:15","revision":3738605},"0.3.0":{"tag":"0.3.0","author":"h4it","date":"2026-10-14 08:48:17","revision":3745762}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3705960,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3705960,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3705960,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3705960,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"smoothentree\/agenda":{"name":"smoothentree\/agenda","title":"Calendar"}},"tagged_versions":["0.1.0","0.2.0","0.3.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3705960,"resolution":"1","location":"assets","locale":"","width":1280,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3705960,"resolution":"2","location":"assets","locale":"","width":1280,"height":1000},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3705976,"resolution":"3","location":"assets","locale":"","width":1280,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3705976,"resolution":"4","location":"assets","locale":"","width":1280,"height":900}},"screenshots":{"1":"The calendar on the site.","2":"Buying tickets on the page for the night.","3":"The dashboard on a selling day.","4":"The door scanner."}},"plugin_section":[],"plugin_tags":[4745,1486,7061,4772,4771],"plugin_category":[40,58],"plugin_contributors":[281877],"plugin_business_model":[],"class_list":["post-370453","plugin","type-plugin","status-publish","hentry","plugin_tags-event-calendar","plugin_tags-events","plugin_tags-ideal","plugin_tags-ticketing","plugin_tags-tickets","plugin_category-calendar-and-events","plugin_category-user-management","plugin_contributors-h4it","plugin_committers-h4it"],"banners":{"banner":"https:\/\/ps.w.org\/smooth-entree\/assets\/banner-772x250.png?rev=3705960","banner_2x":"https:\/\/ps.w.org\/smooth-entree\/assets\/banner-1544x500.png?rev=3705960","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/smooth-entree\/assets\/icon-128x128.png?rev=3705960","icon_2x":"https:\/\/ps.w.org\/smooth-entree\/assets\/icon-256x256.png?rev=3705960","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/smooth-entree\/assets\/screenshot-1.png?rev=3705960","caption":"The calendar on the site."},{"src":"https:\/\/ps.w.org\/smooth-entree\/assets\/screenshot-2.png?rev=3705960","caption":"Buying tickets on the page for the night."},{"src":"https:\/\/ps.w.org\/smooth-entree\/assets\/screenshot-3.png?rev=3705976","caption":"The dashboard on a selling day."},{"src":"https:\/\/ps.w.org\/smooth-entree\/assets\/screenshot-4.png?rev=3705976","caption":"The door scanner."}],"raw_content":"<!--section=description-->\n<p>Built for how a cafe with weekly live music actually works: a band every Sunday, a pub quiz once a month, tickets that cost a few euros, and bar staff scanning at the door with a phone.<\/p>\n\n<p>The plugin does six things, and does those six well:<\/p>\n\n<p><strong>Calendar and ticket sales.<\/strong> Every night is its own page with its own address, so it can be found on its own. Recurring nights (every week, every two weeks, or every first Thursday of the month) are scheduled a quarter ahead automatically, and you can add or skip dates on a calendar. Free nights that still need a reservation are part of the same system.<\/p>\n\n<p><strong>Payment without a middleman account.<\/strong> The money goes straight from the guest to the venue's own account. Mollie and Stripe are supported; iDEAL works with both, and the provider most used in your country is listed first.<\/p>\n\n<p><strong>In the guest's own calendar.<\/strong> Every night has an \"Add to calendar\" link: a plain .ics file with the right time, the venue and the doors time. If a night is called off, the appointment is marked cancelled instead of quietly disappearing.<\/p>\n\n<p><strong>Tickets that arrive.<\/strong> The ticket email is one of the few emails where delivery really matters. So the plugin checks SPF, DKIM and DMARC, processes bounces, and shows on the dashboard which guest did not get their tickets.<\/p>\n\n<p><strong>A door scanner that works offline.<\/strong> The tickets live on the device, signed, so the scanner can tell on its own whether a QR code is genuine even without wifi. Scans are sent along as soon as there is a connection again. A ticket for a different night is recognised, and on a second scan it tells you what time the first one was.<\/p>\n\n<p><strong>And what happens at the bar.<\/strong> Someone walks in without a ticket: sell one at the door, cash or card, and let them straight in. Someone transfers the money or pays later: mark that order as paid by hand. Both count normally towards revenue, the VAT return and the head count at the door.<\/p>\n\n<h4>What it costs<\/h4>\n\n<p>The plugin is free: no subscription, no monthly costs and no limit on the number of tickets. For each paid ticket the guest pays a small service fee to Smooth Entree on top of the ticket price: \u20ac0.10 for a ticket under \u20ac20, and \u20ac0.25 for a ticket of \u20ac20 or more. The guest sees it on the event page before ordering, and as a separate line on the receipt. Free tickets and reservations have no fee at all. If you prefer, you can carry the fee yourself; then the guest pays only the ticket price. The transaction costs of your own payment provider are separate and do not pass through us.<\/p>\n\n<h4>Migrating from another plugin<\/h4>\n\n<p>Already running The Events Calendar with Event Tickets? The plugin converts those events in place: the same page, the same address, the same image and the same SEO fields. No search results are lost and shared links keep working. Orders and attendees come along as history.<\/p>\n\n<p>Selling with Event Tickets Plus through WooCommerce? That comes along too: there a ticket is a WooCommerce product and an order is a WooCommerce order, and both are read. The rest of your shop is left alone. Always start with the dry run: it changes nothing and shows what would happen.<\/p>\n\n<h4>What it deliberately does not do<\/h4>\n\n<p>No seat maps, no time slots, no subscriptions. This is built for nights where people walk in, not for theatres with numbered rows.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin can connect to the external services below. Nothing is sent anywhere until you choose to.<\/p>\n\n<p><strong>Mollie (payment provider).<\/strong> When you connect your Mollie account, the plugin creates payments and refunds through the Mollie API on your behalf. The order number, amount, description and your site's hostname are sent with each payment. See the Mollie <a href=\"https:\/\/www.mollie.com\/legal\/user-agreement\">terms<\/a> and <a href=\"https:\/\/www.mollie.com\/privacy\">privacy policy<\/a>.<\/p>\n\n<p><strong>Stripe (payment provider).<\/strong> When you connect your Stripe account, payments and refunds are created on your Stripe account through smoothentree.com (see below), because Stripe only lets the platform add the service fee. The order number, amount, description, your site's hostname and the guest's email address are sent with each payment. See the Stripe <a href=\"https:\/\/stripe.com\/legal\">terms<\/a> and <a href=\"https:\/\/stripe.com\/privacy\">privacy policy<\/a>.<\/p>\n\n<p><strong>Postmark (email delivery, optional).<\/strong> Only when you choose Postmark as the sending method under Ticket sales, Settings and enter an API token, the plugin sends email through the Postmark API (api.postmarkapp.com). What is sent, each time an email is sent: the sender name and address you configured, the recipient's email address, the subject, the text and HTML body of the message, and its attachments (the QR code images of the tickets). The plugin also reads delivery and bounce notifications that Postmark sends back to your site, so the dashboard can show which guest did not receive their tickets. See the Postmark <a href=\"https:\/\/postmarkapp.com\/terms-of-service\">terms<\/a> and <a href=\"https:\/\/postmarkapp.com\/privacy-policy\">privacy policy<\/a>.<\/p>\n\n<p><strong>Resend (email delivery, optional).<\/strong> Only when you choose Resend as the sending method and enter an API key, the plugin sends email through the Resend API (api.resend.com). The same data is sent as for Postmark: sender, recipient, subject, both bodies and the attachments, each time an email is sent, plus the delivery and bounce notifications that come back. See the Resend <a href=\"https:\/\/resend.com\/legal\/terms-of-service\">terms<\/a> and <a href=\"https:\/\/resend.com\/legal\/privacy-policy\">privacy policy<\/a>.<\/p>\n\n<p><strong>Pay. (payment provider, disabled by default).<\/strong> The adapter for Pay. (pay.nl) ships with the plugin but is not available in the settings; a site only gets it by enabling it with the filter smoothentree_experimental_gateways. If it is enabled and you enter your Pay. credentials, payments and refunds are created through the Pay. API (rest.pay.nl): the order number, the amount, a short description of the event, your Pay. service id and the addresses this site should be sent back to. See the Pay. <a href=\"https:\/\/www.pay.nl\/en\/terms-conditions\">terms<\/a> and <a href=\"https:\/\/www.pay.nl\/privacybeleid\">privacy policy<\/a>.<\/p>\n\n<p><strong>smoothentree.com (the connection service for this plugin).<\/strong> When you click \"Connect with Mollie\" or \"Connect with Stripe\", your browser is sent to smoothentree.com, which forwards you to Mollie and receives the access tokens on your behalf; the tokens are then handed back to your site in encrypted form. After that, your site contacts smoothentree.com once a day and before a payment when the token is about to expire, to refresh the token and to read the current service fee. What is sent: the refresh token (Mollie), your site's URL and a connection id. For Stripe, every payment, status check and refund passes through smoothentree.com, which forwards it to Stripe on behalf of your account. The service keeps a record of which sites are connected, which version of the plugin they run (from the user agent the plugin sends) and when they were last seen; it does not store your tokens. Without the connection, paid tickets are not possible; free reservations work without any external service. See the <a href=\"https:\/\/smoothentree.com\/terms.html\">terms<\/a> and <a href=\"https:\/\/smoothentree.com\/privacy.html\">privacy statement<\/a>.<\/p>\n\n<p><strong>smoothentree.com (feedback, optional).<\/strong> Only when someone in the admin sends a message from Ticket sales, Feedback, the plugin sends it to smoothentree.com: the kind of message (problem, idea or question), the text, the reply email address entered in the form, the address of your site, the plugin version and the admin language. Only if the box for technical details is ticked, it also sends the versions of WordPress, PHP and the database, the site language and time zone, the theme, the permalink setting, the state of background tasks, the email sending method, which payment providers are connected (never their keys) and the names and versions of the other active plugins. The screen shows exactly what will be sent before you send it. Nothing about guests or orders is ever included. The message is stored for at most two years and forwarded to the developer by email. See the <a href=\"https:\/\/smoothentree.com\/terms.html\">terms<\/a> and <a href=\"https:\/\/smoothentree.com\/privacy.html\">privacy statement<\/a>.<\/p>\n\n<p><strong>Service fee.<\/strong> Each paid ticket carries a small service fee for Smooth Entree, split off during payment: \u20ac0.10 for a ticket under \u20ac20 and \u20ac0.25 for a ticket of \u20ac20 or more. By default the guest pays it on top of the ticket price; it is shown on the event page before ordering and as a separate line on the receipt, so the venue pays nothing. In the settings the venue can choose to carry it instead. Free tickets and reservations have no fee. This fee is separate from the transaction costs charged by your own payment provider, which you agree with them and which do not pass through us.<\/p>\n\n<h3>Included software<\/h3>\n\n<p>The door scanner uses jsQR (https:\/\/github.com\/cozmo\/jsQR, Apache License\n2.0) to read QR codes in browsers without a built-in BarcodeDetector, which in\npractice means mostly Safari on iOS. The unminified source is in\nassets\/vendor\/jsqr.js, with the licence next to it.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the folder to <code>\/wp-content\/plugins\/<\/code>, or install it from the admin screen.<\/li>\n<li>Activate the plugin.<\/li>\n<li>The dashboard shows \"Getting started\": five steps that tick themselves off.<\/li>\n<li>Go to Ticket sales, Settings and fill in the name of the venue, a sender address on your own domain, and the details of your payment provider.<\/li>\n<li>Create an event and add a ticket to it.<\/li>\n<li>Under Door scanners, set up a device for the bar staff.<\/li>\n<\/ol>\n\n<p>After that, take a look at the Health screen: it tells you whether email, caching and background tasks are set up correctly.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20money%20pass%20through%20you%3F\"><h3>Does the money pass through you?<\/h3><\/dt>\n<dd><p>No. The plugin creates a payment at the venue's own provider, with the venue's own keys. The money goes straight to that account.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20two%20people%20buy%20the%20last%20ticket%20at%20the%20same%20time%3F\"><h3>What happens if two people buy the last ticket at the same time?<\/h3><\/dt>\n<dd><p>Only one of them can win, and that is enforced in the database, not in the code around it. The second one is told politely that it just sold out.<\/p><\/dd>\n<dt id=\"what%20if%20someone%20pays%20after%20their%20reservation%20has%20expired%3F\"><h3>What if someone pays after their reservation has expired?<\/h3><\/dt>\n<dd><p>By default that order is still accepted and marked as an overbooking; you see it on the dashboard. One extra guest in a cafe is usually less trouble than sending money back. Refunding automatically is possible too, and that is a setting.<\/p><\/dd>\n<dt id=\"can%20i%20sell%20at%20the%20door%3F\"><h3>Can I sell at the door?<\/h3><\/dt>\n<dd><p>Yes, in two places. In the admin under Orders: pick the night and the ticket, the number, cash or card, and whether the guest goes straight in. And in the door scanner itself, because the person with the phone is at the door and not behind the bar: there is a \"Sell a ticket\" button with that night's ticket types. In both cases the email address may be left empty; then no email is sent, because the guest is standing right in front of you.<\/p><\/dd>\n<dt id=\"can%20the%20ticket%20email%20have%20our%20own%20look%3F\"><h3>Can the ticket email have our own look?<\/h3><\/dt>\n<dd><p>Yes. Under Ticket sales, Settings, Ticket email you can add your logo, your own colour, a text at the top and a text at the bottom. The same screen shows a preview and can send you a test email. Each event can also have its own extra text, for example about the dress code or which entrance to use.<\/p><\/dd>\n<dt id=\"can%20guests%20get%20a%20pdf%20ticket%3F\"><h3>Can guests get a PDF ticket?<\/h3><\/dt>\n<dd><p>Yes, if you switch it on under Ticket email. The tickets are then attached to the email as a PDF, one page per ticket, and guests can also download them from their tickets page. The QR code on the PDF works at the door just like the one in the email.<\/p><\/dd>\n<dt id=\"i%20sell%20with%20event%20tickets%20plus%20through%20woocommerce.%20can%20i%20switch%3F\"><h3>I sell with Event Tickets Plus through WooCommerce. Can I switch?<\/h3><\/dt>\n<dd><p>Yes. There the tickets are WooCommerce products and the orders are WooCommerce orders, including when those already live in WooCommerce's own tables instead of with the posts. Both are read, with the attendees and with who was inside at the time. Other products in your shop are left alone. Do the dry run first: it changes nothing and shows what would happen.<\/p><\/dd>\n<dt id=\"which%20languages%20does%20it%20speak%3F\"><h3>Which languages does it speak?<\/h3><\/dt>\n<dd><p>English, Dutch, German, French, Spanish, Italian, Portuguese, Polish, Czech, Hungarian, Romanian, Greek, Swedish, Danish, Norwegian, Finnish, Turkish and Japanese, with the regional variants for Belgium, Austria, Switzerland, Canada, Mexico and Brazil, and formal versions of Dutch and German. The plugin follows the language of your site: the admin screens, the event page, the checkout, the ticket emails and the door scanner. Dates, amounts and the web addresses of the pages it creates follow that language too.<\/p>\n\n<p>Corrections and improvements are very welcome on translate.wordpress.org.<\/p><\/dd>\n<dt id=\"does%20the%20door%20scanner%20work%20without%20internet%3F\"><h3>Does the door scanner work without internet?<\/h3><\/dt>\n<dd><p>Yes. That night's tickets are on the device, with a signature the device can use to see for itself whether a QR code comes from this venue. Scans are kept and sent as soon as there is a connection again.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Lower service fee: \u20ac0.10 for tickets under \u20ac20, \u20ac0.25 from \u20ac20 (was \u20ac0.25 for every ticket).<\/li>\n<li>The event page now shows the service fee per ticket and includes it in the total, so the guest sees beforehand what they pay.<\/li>\n<li>New: suggested text for your privacy policy, under Settings, Privacy. It follows your settings and only mentions the services you use.<\/li>\n<li>New: duplicate an event, with its ticket types, from the event list or the event screen. The copy is a draft, without sales.<\/li>\n<li>New: guests with a ticket get an email when you postpone an event or move it to another date, with an optional message from you. Their tickets stay valid.<\/li>\n<li>New: an optional reminder email, 3 to 48 hours before the event, with the tickets again. Switch it on under Settings, Ticket email.<\/li>\n<li>New: more ways to repeat an event: every week, every two weeks, or every month on the first, second, third, fourth or last weekday, such as a pub quiz on the first Thursday. A calendar shows which events are coming; click a date to add or skip it.<\/li>\n<li>Fix: saving the first event of a recurring series created events again that you had moved to the trash.<\/li>\n<li>New: if the payment provider (or the connection through smoothentree.com) is temporarily down, guests can still order. Their place is reserved for up to 24 hours, never beyond the start of the event, and they get an email with a payment link as soon as paying works again. If the event starts first, they pay at the door: the guest list, the orders screen and the door scanner show who still has to pay.<\/li>\n<li>Fix: a cancellation email marked the order as \"tickets sent\", so a failed one could show up as a guest who did not get their tickets.<\/li>\n<li>Fix: selling at the door, in the admin and in the door scanner, stopped working once the event had started. It now works until the end of the event, and also for hidden ticket types such as a guest list.<\/li>\n<li>Fix: the door sale list showed only the next 20 events; it now shows tonight and everything coming, grouped per event.<\/li>\n<li>Door sales no longer carry the Smooth Entree service fee.<\/li>\n<li>The calendar links are no longer followed by search engines.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>New: PDF tickets. Switch them on and the tickets are attached to the ticket email as a PDF, one page per ticket. Guests can also download them from their tickets page, and every order in the admin has a button to open them, for printing a ticket at the bar.<\/li>\n<li>New: your own look for the ticket email: logo, colour, a text at the top and a text at the bottom, with a preview and a test email. Each event can also have its own extra text, such as the dress code or which entrance to use.<\/li>\n<li>New: a Feedback screen under Ticket sales to send a problem, idea or question straight to us, with optional technical details that you see before sending.<\/li>\n<li>Fix: the link to the terms and conditions at the bottom of the ticket email showed as code instead of a link.<\/li>\n<li>Fix: on servers without full language data, amounts in the ticket email could show in US notation (25.00 instead of 25,00).<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Event calendar and ticket sales for venues with live music. iDEAL, a QR ticket in the mail, and a door scanner that keeps working offline.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/370453","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=370453"}],"author":[{"embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/h4it"}],"wp:attachment":[{"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=370453"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=370453"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=370453"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=370453"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=370453"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=370453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}