Apraksts
More orders, less stress — Libre Bite turns WooCommerce into your restaurant’s operational backbone. No commission fees, no SaaS lock-in: your guests order online or at the table via QR code, pay with card, cash, or Twint, and your kitchen sees every order live on the board — all inside WordPress.
Start for free. Upgrade only when you need more.
Free to Start
All core features are available completely free of charge — no credit card, no trial period, no hidden limits.
A Pro subscription is only required for advanced features such as multi-location management, table ordering, optimised checkout, tipping, and pickup reminders. Pro plans are priced to be affordable — significantly cheaper than dedicated restaurant SaaS platforms.
7-day free Pro trial — no payment required.
Built on WordPress & WooCommerce
Libre Bite is a WordPress plugin. It extends WooCommerce — the proven e-commerce foundation used by millions of sites worldwide.
- No new platform to learn — manage everything inside your existing WordPress dashboard.
- Your products stay WooCommerce products — set them up once and they appear in the POS, checkout, and online shop automatically.
- Use any WooCommerce-compatible payment gateway — cash, card, Twint, Stripe, PayPal, or any other gateway you already have. Libre Bite charges no transaction fees.
- Offline payments supported — “Pay at pickup”, “Pay at table”, or any custom payment method via standard WooCommerce.
For Whom Is Libre Bite?
Libre Bite is built for small and micro gastronomy businesses — operations that want serious software without enterprise-level costs or delivery platform commissions.
- Restaurants — Take dine-in and take-away orders, keep the kitchen informed, delight guests with smooth service.
- Take-Away & Fast Food — Serve walk-ins fast with an integrated counter POS, accept card and Twint payments, no third-party fees.
- Cafés & Bars — Handle product extras, tips, and order flow without juggling multiple tools.
- Multi-location businesses — Run all branches from one WordPress installation, each with its own order board and POS (Pro).
Modular by Design
Only activate the features your business actually needs. Unused modules stay hidden — no cluttered menus, no unnecessary complexity.
Core Features (Free)
Live Kanban Order Board (KDS)
A real-time kitchen display that visualizes every incoming WooCommerce order as a card. Move an order through Pre-orders Prepare Now Completed with a single click — without reloading the page. Renaming, adding, or reordering columns, and dragging cards between them, is available as a Pro add-on.
Integrated Point of Sale (POS)
A clear POS interface for walk-in customers. Add products to the order, accept payments — all without leaving WordPress.
Location Management
Create and manage branches, each with its own address, opening hours, and order routing. Works immediately for single-location businesses.
Swiss 5-Cent Rounding
Built-in support for the Swiss rounding rule (5-cent rounding). Indispensable for restaurants and retail in Switzerland.
Pickup Time Slots
Customers choose a time slot for pickup directly during checkout. Relieve peak hours and better manage kitchen capacity.
Product Options
Add configurable options to any WooCommerce product — sizes, sauces, toppings, preparation notes — with optional price markups.
Modular Feature Control
Only enable what your business really needs. Each module can be independently toggled on or off in the admin area.
WooCommerce HPOS Compatible
Fully tested with WooCommerce High-Performance Order Storage (HPOS). Safe for modern, high-traffic setups.
Sound Notifications
A browser signal tone when a new order arrives on the Kanban board, so the kitchen doesn’t have to watch the screen. Uploading your own custom sound file via the media library is a Pro feature.
Pro Features (Subscription required)
Reservations
A guided 3-step booking form for guests — date & party size, contact details, confirmation. Reservations land on their own dashboard, get auto-released or manually confirmed, and can be assigned to a specific table.
Table Ordering (QR Code)
Generate a QR code for each table. Guests scan it and order directly — no address or pickup time fields required. Orders appear in the dashboard with the table name.
Multi-Location Management
Manage an unlimited number of branches. Each location gets its own Kanban board, POS configuration, and separate order flow — managed centrally via one WordPress installation.
Optimized Checkout Flow
A conversion-focused checkout process for gastronomy businesses — fewer steps, cleaner layout, mobile-first.
Advanced Tipping System
Customers can select percentage tip suggestions (e.g., 5%, 10%, 15%) or enter a custom amount. Tip amounts are saved per order and broken out separately in the statistics.
Automatic Pickup Reminders
Automatic email reminders to customers X minutes before the scheduled pickup time. Fewer no-shows, better pickup experience.
Nutritional Info & Allergen Labeling
Nutritional values and allergen declarations for every product, displayed clearly on the product page. Includes a printable allergen matrix covering the 14 EU-listed allergens, to help you meet allergen labeling requirements.
Promotions & Announcements
Rule-based offers WooCommerce does not know by itself: buy several pay for fewer, a discount on a category, money off above a cart value — each limited to certain weekdays or times. Plus an announcement bar.
Stamp Card
One stamp per completed order, then a discount voucher. Guests grasp “every tenth order is cheaper” immediately.
Theme-independent Menu View
Output your menu in its own layout — category navigation, product cards, a dialog for variations and add-ons, and a slide-in order panel. Works with any theme, no template editing required.
Dietary Labels & Filter
Label dishes as vegan, vegetarian, gluten-free and more. Guests filter the menu without reloading the page.
Scheduled Availability
Limit products or whole categories to certain weekdays, times of day or date ranges. A breakfast menu that disappears at 11:30, a seasonal item that only shows in December.
Order Bumps
Offer matching extras right above the pay button. Added as real line items, so they appear on the kitchen ticket and count in the statistics.
Time Slot Capacity
Cap how many orders each time slot accepts, so the kitchen is not flooded at peak times.
Guest Notes
Keep allergies and preferences on the customer account and show them to staff when a returning guest reserves a table.
SMS Notifications
Send a short text message when an order is ready. Uses your own Twilio account — no order or customer data passes through us.
Customizable Kanban Columns
Rename, add, remove and reorder the columns of the Kanban order board to match your own workflow — mark any number of columns as “completed”, add a one-step back button per order card, and optionally enable drag & drop between columns (Pro).
Why Libre Bite?
Delivery platforms take up to 30% commission. Dedicated restaurant SaaS tools charge monthly fees on top of that. Libre Bite is different: own your ordering system, pay no commissions, and keep every franc.
- Commission-free ordering — guests order directly on your website, no platform cut
- No transaction fees — ever
- No order limits, no quotas — take as many orders and reservations as you want, in every plan
- No usage tracking — your orders and reservations are never counted, hashed, or reported to any external server
- Twint, card, cash — accept any payment WooCommerce supports
- Swiss 5-cent rounding built in — essential for CHF cash payments
- Separate VAT rates for takeaway and dine-in — handled correctly, not bolted on (Pro)
- QR code ordering at the table — guests scan, choose, and pay in seconds (Pro)
- Split payments and open tabs — settle one bill across several payment methods, or keep a table running (Pro)
- Multiple locations from one installation — each branch with its own board, POS, and order flow (Pro)
- Modular — activate only what your business needs, nothing else
- Your data stays yours — in your own WordPress installation
- Affordable Pro plans — designed for small businesses, not enterprise budgets
- 7-day free Pro trial — no payment required
Works on Any Device
Libre Bite works on any device — no app installation required. Use it with a mouse and keyboard on a desktop or laptop, or with touch input on a tablet. The Kanban order board, POS interface, and reservation dashboard are optimised for touch-first operation, making them well-suited for use on a tablet mounted at the counter or kitchen pass.
How to Run Libre Bite
Option 1 — Extend your existing website
Install Libre Bite directly into your existing WordPress/WooCommerce site. Any theme is compatible — no design changes required.
Option 2 — Standalone installation (subdomain)
Run Libre Bite as a dedicated installation on a subdomain, such as order.myrestaurant.com — completely independent from your main website, purpose-built for your gastronomy operation.
Option 3 — Managed hosting by Libre Bite
Libre Bite handles the complete setup: installation, configuration, hosting, and ongoing maintenance — from A to Z. Available as a paid service. Get in touch via https://pulacha-labs.ch/
External Services
This plugin uses Freemius, a third-party platform for managing licenses, subscriptions, and plugin updates for the Pro version.
During plugin activation, you can opt-in to data sharing with Freemius. Basic information about your website (WordPress version, PHP version, active plugins) is transmitted to Freemius to enable license validation and usage analysis. Opt-in is completely optional. All free core features work without opt-in.
- Freemius Privacy Policy: https://freemius.com/privacy/
- Freemius Terms of Service: https://freemius.com/terms/
No data is sent to Freemius if you skip or decline the opt-in during activation.
Libre Bite uses the goQR.me API (https://goqr.me/api/) to render QR code images in the WordPress admin area. This happens in two places: the location editor, which generates a QR code linking to your menu for a specific location (free feature), and the table editor, which generates a QR code for table ordering (Pro feature).
Only the encoded target URL of your own website is transmitted, so that the service can render the matching image. No personal data, customer data, or order data is sent. The request is only made while an administrator has the corresponding editor screen open — never during a customer order or on any public page.
- goQR.me API: https://goqr.me/api/
- goQR.me Privacy Policy: https://goqr.me/privacy-policy/
If you enable the optional SMS Notifications feature (Pro), Libre Bite sends the customer’s phone number and a short status message to Twilio (https://www.twilio.com/) using your own Twilio account, so Twilio can deliver the text message. This only happens when the SMS feature is switched on and an order reaches the status you configured as the trigger — it never runs otherwise. You provide and control your own Twilio credentials; no order or customer data passes through Libre Bite’s own servers.
- Twilio Privacy Policy: https://www.twilio.com/en-us/legal/privacy
- Twilio Terms of Service: https://www.twilio.com/en-us/legal/tos
Ekrānuzņēmumi




Uzstādīšana
- Upload the plugin folder to the
/wp-content/plugins/libre-bitedirectory, or install the plugin through the WordPress plugins screen directly. - Activate the plugin through the Plugins screen in WordPress.
- Make sure WooCommerce is installed and active — Libre Bite requires WooCommerce.
- Follow the setup assistant — it checks your environment, lets you pick the modules you need, and can create a sample menu so you are not starting from an empty shop.
- Alternatively, navigate to Libre Bite in the admin menu to configure locations, enable modules, and set up the POS and Kanban board.
BUJ
-
Is WooCommerce mandatory?
-
Yes. Libre Bite is a WooCommerce extension. WooCommerce must be installed and active for Libre Bite to work. WooCommerce 8.0 or later is recommended.
-
Which payment methods are supported?
-
Libre Bite uses WooCommerce’s standard payment system. Any WooCommerce-compatible payment gateway works — including Stripe, PayPal, Twint, cash on pickup, card at counter, and more. Libre Bite charges no transaction fees. You pay only for your payment gateway (if any) and the optional Pro subscription.
-
Can customers pay in cash or at the counter?
-
Yes. WooCommerce includes offline payment methods such as “Cash on Delivery” or “Pay in Person”. You can rename and configure these freely — for example “Pay at pickup” or “Pay at the counter”.
-
Is the plugin compatible with WooCommerce HPOS?
-
Yes. Libre Bite is fully compatible with WooCommerce High-Performance Order Storage (HPOS). It has been tested with both legacy post-based storage and the new Custom Order Tables.
-
Does Libre Bite work with the WooCommerce Checkout block?
-
Not yet. Libre Bite’s location selection, time slots, order bumps, and tip settings currently rely on the classic WooCommerce checkout. If your checkout page uses the Checkout block, edit that page, select the Checkout block, and use its sidebar option to switch back to the classic shortcode (or replace it with a Shortcode block containing
[woocommerce_checkout]). Libre Bite shows an admin notice with the same instructions whenever it detects the block on your checkout page. Official Checkout block support is on the roadmap. -
Can I manage multiple restaurant locations?
-
Multi-location management is included in the Pro version. The free version supports a single location with full configuration of address, opening hours, and order routing.
-
What is Swiss 5-Cent Rounding?
-
In Switzerland, cash payments are rounded to the nearest 5 cents as 1- and 2-cent coins are no longer in circulation. Libre Bite applies this rounding rule at checkout, switched on by default for shops using CHF and off by default for any other currency — either way, it’s a single toggle in Settings.
-
Does the POS system work offline?
-
The integrated POS system requires an active WordPress/WooCommerce session and an internet connection. It is a browser-based interface that currently does not support offline mode.
-
Are there any order or reservation limits?
-
No. Libre Bite never limits how many orders, reservations, or locations you can handle — not in the free version and not in any Pro plan. Your order volume is never counted, transmitted, or validated against an external server, so your ordering system keeps working even if our servers do not.
-
Libre Bite uses Freemius for license management and delivery of Pro features. Data is only transmitted to Freemius if you explicitly opt-in during activation. No order, customer, or product data is transmitted — only basic website environment information (PHP version, WP version, plugin list). For more details, see the Freemius Privacy Policy: https://freemius.com/privacy/
-
What are the minimum requirements?
-
- WordPress 6.0 or higher
- WooCommerce 8.0 or higher
- PHP 8.1 or higher (PHP 8.2+ recommended)
- A modern browser for Kanban board and POS interface
-
Is Libre Bite available in multiple languages?
-
Yes. English is the source language, and the plugin ships with complete translations for Swiss, German and Austrian German (de_CH, de_DE, de_AT, plus the formal and informal variants), Swiss French (fr_CH) and Swiss Italian (it_CH). Every string is covered. Other languages can be added from the bundled .pot file or through community translations on translate.wordpress.org.
Autori un izstrādātāji
“Libre Bite – Restaurant POS, Kitchen Display (KDS) & QR Ordering for WooCommerce” ir atvērtā pirmkoda programmatūra. Šo spraudni ir veidojuši šādi cilvēki.
LīdzdalībniekiVai jūs interesē attīstība?
Pārlūkojiet kodu, apmeklējiet SVN krātuvi vai abonējiet attīstības žurnālu, ko izveidojis RSS.
Izmaiņu žurnāls
3.6.16
- Changed: Updated readme, GitHub description and WordPress.org listing assets (banner, screenshots). No functional changes.
3.6.15
- Fix: In the theme-independent menu view, opening a product’s detail popup could hide the “Add” button below the visible screen area on longer content (description plus several variants or options) until scrolling all the way down. The button now stays fixed at the bottom of the popup while its content scrolls.
3.6.14
- Fix: On the checkout page, clicking “Change” on the location/order type summary made the edit form appear below “How would you like your order?” instead of in the same place as the summary it replaced, and it jumped back to its usual position after saving – confusing since the layout order changed depending on state. The edit form now always sits in the same place.
- Fix: The location photo on the checkout page didn’t match the one shown in the location picker – both use the same uploaded image, but the checkout page requested WordPress’ hard-cropped “thumbnail” size instead of a proportional one, making it look like a different picture.
3.6.13
- Feature: The sticky category bar in the theme-independent menu view now highlights the currently visible section while scrolling, as if you had clicked it, and keeps that entry scrolled into view within the bar.
- Fix: A product card without an image showed its text aligned to the top instead of matching the height of cards with an image. All cards in the grid now reserve the same image slot, shown as a plain placeholder when a product has no photo.
- Feature: New “Product Images” setting under Settings Products Menu Display lets you turn off images in the menu grid entirely, for a text-only menu.
3.6.12
- Fix: Clicking a category in the theme-independent menu view’s sticky navigation scrolled to a position where the section title and its first row of products were hidden behind the sticky bar. The scroll offset is now calculated from the bar’s actual height instead of a fixed number.
- Fix: The theme-independent menu view was capped at 1100px wide, narrower than the surrounding page content on many themes. It now fills its container like the rest of the page.
3.6.11
- Fix: Adding a product with variations to the cart from the theme-independent menu view’s popup still failed with “please choose an option” after the previous fix. Root cause found and verified directly against WooCommerce core: its add-to-cart endpoint never reads a separately submitted variation ID or attribute fields at all – it only checks whether the submitted product ID is itself a variation post, and resolves everything else from that. The popup now submits the variation’s own ID instead of the parent product’s ID together with separate fields.
- Fix: The sticky category bar in the theme-independent menu view now keeps a 16px gap from the top of the window while docked, matching its left/right spacing.
3.6.10
- Fix: Adding a product with variations to the cart from the theme-independent menu view’s popup still failed with “please choose an option” – WooCommerce’s add-to-cart endpoint needs the variation ID sent explicitly, it does not reliably resolve it from the selected attributes on its own.
- Fix: The selected variation’s name stayed in dark text instead of turning white together with the price and the button background.
- Fix: The availability hint’s icon showed as stray lines instead of the usual circled “i”, since a generic style rule overrode the icon font.
- Fix: Clicking “Change location” in the menu view only revealed the dropdown, still showing the previously chosen location – a second click was needed before anything visibly changed. It now also shows the “Choose a location” text and resets the dropdown to its placeholder, matching the standard shop pages.
- Fix: The “Continue shopping” button in the slide-in cart was slightly taller than “Go to checkout” due to the browser’s default button sizing; both are the same height now.
- Fix: The modal’s close button showed a stray blue focus ring on hover.
- Feature: The mobile thumbnail in the menu view is about 30% larger.
- Feature: The Options/Add-ons section in the product popup now has a heading, matching the Variations section.
3.6.9
- Feature: New “Back Button” setting under Settings Orders Columns lets you turn off the one-step-back button on Kanban cards, for kitchens that don’t need it.
- Feature: New “Cancelling Orders” setting lets you block cancelling orders from the Kanban board entirely, e.g. when kitchen staff shouldn’t have that permission. Also enforced on the server, not just hidden in the interface.
3.6.8
- Fix: The location filter bar on standard shop pages and the location step in the reservation form still appeared even with “Location Selection” turned off; both now respect that setting and fall back to the configured Default Location.
- Fix: The availability hint/tooltip in the theme-independent menu view showed the wrong icon colors, since a generic style rule overrode them.
- Fix: After clicking “Change location” in the theme-independent menu view, the “Show only available products” button incorrectly stayed visible instead of hiding along with the rest of the chosen-location controls.
- Fix: The small mobile thumbnail in the theme-independent menu view had all four corners rounded; the two corners that should run flush to the card edge are square again.
- Feature: The slide-in cart in the theme-independent menu view now has a “Continue shopping” button to close it and add more items without going to checkout.
3.6.7
- Feature: The theme-independent menu view now matches the standard shop pages: products excluded at the chosen location stay visible with the same availability hint/tooltip instead of disappearing entirely, and a “Show only available products” toggle appears once a location is chosen.
- Fix: The location banner in the theme-independent menu view showed the chosen location’s name twice (once as text, once as the still-visible dropdown’s selected option); it now switches to a “Change location” link once a location is chosen, matching the standard shop pages.
3.6.6
- Fix: The small mobile thumbnail in the theme-independent menu view stretched to the full card height instead of staying a compact square, and had square corners.
3.6.5
- Fix: The floating “Your order” button and the “Go to checkout” button in the theme-independent menu view’s slide-in cart had no hover color, or briefly flashed an unrelated blue instead of the brand color.
- Fix: The Branding settings page previewed the Accent Color as the background of an “Order Now” button, which was misleading – that button actually uses the Primary Color. The Accent Color’s description now explains its real, narrow use (success icon and discount amount on the optimized checkout’s confirmation page, a Pro feature).
- Fix: On standard WooCommerce/theme pages, the location filter bar and the dietary filter bar looked visually inconsistent; the location filter now uses the same rounded pill style.
- Fix: Same inconsistency in the theme-independent menu view: the location switcher’s dropdown now matches the dietary filter’s pill style.
- Feature: The sticky category bar in the theme-independent menu view now uses the brand’s primary color as background with light pill buttons, so it stands out more while scrolling.
- Feature: When a dietary filter leaves a category with no matching products in the theme-independent menu view, that category now shows a short explanatory message instead of an empty gap under its title.
3.6.4
- Fix: Buttons using the chosen brand color as background kept white text everywhere except the theme-independent menu view and the announcement banner, which already computed readable text automatically; with a light brand color this made checkout, thank-you page, location picker and reservation form buttons unreadable. All of them now use the same automatic light/dark text logic.
- Fix: The reservation form and the stamp card never received the chosen brand color at all and always fell back to the default blue, regardless of the Branding settings.
- Fix: A PHP 8.1+ deprecation notice fired on every checkout page load while no pickup time was selected yet.
3.6.3
- Fix: In the theme-independent menu view’s popup, variation prices without their own currency symbol (e.g. CHF) showed as raw HTML entities instead of the actual text.
- Fix: Adding a product with variations to the cart from the menu view’s popup always failed with “please choose an option”, even after selecting a size – the field name sent to WooCommerce could mismatch for attribute names with special characters.
- Fix: The sticky category bar in the menu view had no horizontal spacing, so the buttons touched its edges directly.
- Feature: On narrow screens, the menu view now shows a small thumbnail to the right of the text instead of a full-width photo above it, matching common food-delivery app layouts.
- Feature: The Notifications settings tab now links directly to WooCommerce’s own email settings screen for the pickup reminder email, where its sender, subject, heading and message text are configured.
3.6.2
- Fix: In the theme-independent menu view ([lbite_menu]), the dietary filter appeared above the sticky category bar instead of below it.
- Fix: The sticky category bar in the menu view had no visible edge once docked at the top while scrolling, blending into the content behind it.
- Fix: Products with variations (e.g. sizes) showed a plain dropdown without prices in the menu view’s popup, plus an unnecessary quantity field; replaced with buttons showing the price for each option, and removed the quantity field everywhere in the popup (one click now always adds one item).
- Fix: The menu view showed a price range for products with variations instead of the lowest price; now shows “From [price]” when prices differ, or a single price when they don’t.
- Fix: Product photos in the menu view’s grid, list, and popup were cropped at a wide aspect ratio that didn’t match square uploads; switched to a square crop throughout.
3.6.1
- Fix: Branding colors did not reach the announcement banner, since it renders independently of the other frontend shortcodes; also added a readable text color for very light brand colors.
- Fix: Reservation statuses (Pending/Confirmed/Cancelled/Completed) were hardcoded in English and never translatable.
- Feature: New “Redirect Standard Archives to Menu” setting – sends the default WooCommerce shop, category and tag pages to your configured menu page instead of leaving duplicate content.
- Feature: New WordPress dashboard widget showing today’s order count and revenue per location, plus the average time from “preparing” to “completed” over the last 7 days.
- Fix: On pages using WooCommerce’s own [products] shortcode without pagination, the dietary and location filter bars never appeared, and the availability hint showed as unstyled full content instead of a compact popup.
- Feature: The theme-independent menu view ([lbite_menu]) now has a dietary filter bar, a location switcher, and a subtle “View product details” link on each item – none of these existed there before.
- Fix: The floating “Your order” button in the menu view had unreadable text, since a generic style rule overrode the button’s own text color.
- Fix: The dietary filter’s reset button in the menu view kept the browser’s native button styling and looked broken; the section navigation also stayed visually highlighted after a click even though it only scrolls the page.
- Fix: The dietary and location filter bars on the shop page were narrower than the rest of the page content.
- Feature: Dietary Labels and Dietary Filter are now two independent settings, so a shop can show labels without the filter bar or the other way around. Existing installs keep their current behavior automatically.
- Feature: The stamp card now has its own tab in My Account, next to Dashboard and Orders, instead of appearing inside the Dashboard tab.
- Feature: The statistics page and its dashboard widget now also show average order preparation time, overall and per location.
3.6.0
- Fix: Adding an item in the theme-independent menu view showed the theme’s own “View cart” link next to the button, shifting the product grid; the slide-in cart now opens automatically instead.
- Fix: Branding colors could fail to reach the menu view, the reservation form, and the stamp card, since only pages using the location selector shortcode received them; broadened to all Libre Bite frontend shortcodes and unified with the admin/POS color logic (previously two separate implementations).
- Feature: Text on branded buttons (e.g. the floating “Your order” button) now automatically switches between light and dark to stay readable against the chosen brand color.
- Feature: New “Default Location” setting under Settings Locations, used whenever a guest cannot pick a location themselves – most importantly when “Location Selection” is turned off. Orders, the add-to-cart location check, and the
[lbite_location_selector]shortcode all fall back to it instead of leaving the order without a location. - Fix: With “Location Selection” turned off, the location selector shortcode kept showing the full picker instead of respecting the setting, and could show a raw browser error if a guest still interacted with it.
- Fix: A location without configured opening hours was treated as always closed for pre-orders and reservations (and as “unknown” for the live status badge) instead of open 24/7; unified across checkout, the status badge, and reservations.
- Feature: The reservation form now checks opening hours as soon as a date/time is chosen, instead of only rejecting it after all three steps are filled in.
3.5.5
- Fix: The 3.5.4 fix for the two Plugin Check errors was incomplete (escaping was applied at variable assignment instead of at the point of output); corrected and verified against the official Plugin Check tool directly, not just by re-reading the code.
3.5.4
- Fix: Two WordPress Plugin Check errors (missing translators comment in the setup wizard’s stamp card preview; an unescaped variable in the stamp card frontend display) that were failing the automated code-quality check.
3.5.3
- Fix: Currency symbols without a dedicated Unicode character (e.g. CHF) appeared as literal HTML entity codes instead of the actual symbol in the Setup Wizard tip preview, the Checkout Tips settings preview, the POS cart/payment screen, and the Product Options price label.
3.5.2
- Fix: On the Kanban order board, the order info text in the card footer could be squeezed out of view by the action buttons.
3.5.1
- Fixed: the two background tasks (pickup reminders, pre-order status changes) ran every minute on every installation, even on shops that never use pre-orders or reminders; they’re now only scheduled while the relevant feature is actually on, and the custom schedule interval was renamed to avoid colliding with another plugin’s identically-named one.
- Fixed: the pickup-reminder and pre-order background checks could have a backlog of old, already-handled orders crowd out the ones that actually need attention right now, since older entries weren’t filtered out or prioritized. They’re now scoped to the relevant time window and processed soonest-first.
- Fixed: three read-only endpoints (time slots, opening days, location status) required a security token that had a limited lifetime; if a page-caching plugin or CDN served a cached copy of the page for longer than that, checkout would silently stop working until the visitor reloaded. These endpoints only return public information, so the token requirement was removed.
- Fixed: the guest-notes phone lookup used a database search pattern that can’t use an index and gets slower as the customer list grows; it now compares a pre-normalized number directly instead.
- Fixed: the POS product cache used a direct database delete to clear itself, which does nothing on sites using a Redis/Memcached object cache — stale product data could persist there indefinitely after a change. It also didn’t clear when stock levels changed automatically. Both are fixed with a version-counter approach that works with any caching setup.
- Fixed: the till’s coupon picker could be crowded out by personal, single-use reward coupons (e.g. from the stamp card) or already fully-used coupons, hiding real promotional codes on shops with many loyalty rewards.
- Fixed: reservation card details (name, phone, notes, guest allergies) were escaped twice, so an apostrophe or ampersand in a reservation showed up as a literal HTML code instead of the actual character.
- Fixed: a translation-loading order bug meant this plugin’s own included translations always overrode community translations from wordpress.org for any string both contained, rather than the other way around as intended.
- Fixed: a public-facing checkout endpoint compared a security value using a plain string comparison, which is more vulnerable to timing-based attacks than the constant-time comparison already used by a nearly-identical endpoint elsewhere in the plugin.
- Changed: several inline
<script>/<style>blocks are now delivered through WordPress’s script/style system instead of being printed directly, and two CSS rules no longer depend on a WooCommerce stylesheet handle that some themes remove. - Changed: the Kanban board, reservation board and table plan now pause their background refresh while their browser tab isn’t visible, resuming immediately when it becomes visible again.
- Removed: an activation step that set up a database table system this plugin has never actually used.
3.5.0
- Fixed: the default POS payment method names (“Cash”, “Card”, “Other”) were stored in German at installation time, which permanently overrode the translation on every site regardless of its language. Existing installs are migrated automatically; new installs and any site that never customized these labels now show them in the site’s own language.
- Fixed: several hard-coded German or English-only strings (“Loading…”, a stamp-card preview sentence, an order-created message, a “no configuration needed” message) now go through the normal translation system.
- Fixed: Du/Sie address was inconsistent across the German translations — the informal variants (Standard German, informal Swiss German) contained around 90 formal “Sie” strings each, and the formal variants contained a couple of stray informal “du” strings. Both are now consistent within each variant.
- Added: a one-time redirect to the setup assistant right after the plugin’s first activation (skipped for bulk/network activation and WP-CLI), plus a persistent reminder on the dashboard and settings page for as long as setup hasn’t been completed.
- Added: dashboard notices for the states that would otherwise silently prevent any order from completing — no location created yet, no POS payment method enabled, or the checkout page using the WooCommerce Checkout block.
- Fixed: importing the sample content while already at the Free plan’s one-location limit created a second location that was silently saved as a draft; this is now reported clearly instead of looking like nothing happened.
- Fixed: the setup assistant’s “WooCommerce is active” system check could never actually fail (the plugin doesn’t load at all without an active, current-enough WooCommerce), so it only added noise — removed. Its “Continue” button had also been permanently disabled by a leftover reference to that check.
- Fixed: a “Dim Future Pre-orders” setting that could never take effect due to an unrelated internal flag with no way to enable it — even paying customers who turned the checkbox on saw no effect. The Kanban board’s sound-notification default was also never read from its own setting, always defaulting to on regardless of what was configured.
- Removed: three dead/unreachable code paths found during an audit — an unused settings-registration call, an AJAX endpoint with no caller anywhere in the plugin, and a duplicate reservation-tables AJAX endpoint that was never wired to the frontend.
- Changed: the previously unreachable Debug Information page is now available under Settings Developer.
3.4.9
- Changed: several readme descriptions no longer matched the current plugin — the Kanban board description and screenshot named drag & drop and column names that are actually a Pro add-on, nutritional info claimed a checkout display that doesn’t exist, the FAQ said locations are unlimited on the free plan even though it’s limited to one, Sound Notifications was listed as fully Pro when the base tone is free, and “Product Add-ons & Extras” and “Product Options” were used interchangeably for the same feature.
- Fixed: a link on the Support page to “edit these details under Settings” was visible to any role that can save plugin settings, but the Support settings tab itself is only visible to full administrators — non-admin managers saw a link that led nowhere useful.
- Fixed: the setup assistant’s hint text for Product Options pointed at a menu label (“Product add-ons”) that doesn’t exist; the actual menu item is “Product Options”.
- Fixed: activating the plugin without WooCommerce active showed a hard-coded, untranslatable error message.
- Added: Twilio is now listed under External Services, since the optional SMS Notifications feature sends the customer’s phone number and a status message to Twilio when enabled.
- Changed: the default “support is free of charge” note on a fresh install no longer hard-codes a Swiss franc amount.
3.4.8
- Fixed: two license checks (the location limit on the Free plan and the pickup time-slot buffer) checked whether the code is running the Pro build rather than whether an actual Pro license or trial is active. On a Pro build without a valid license (for example after a trial ends), both stayed unlocked indefinitely.
- Fixed: the “Send receipt” button on Kanban cards always appeared, even when the code running underneath it doesn’t include that feature; it’s now only shown when it will actually work.
- Fixed: the dashboard tiles for disabled Pro features (Tables, Reservations) said “a manager can enable it under Settings” even without any license — they now clarify that a Pro license is required first. The Announcement Bar settings page was also missing its “Pro” badge.
- Changed: a note in the README now clarifies that the GitHub release contains the full Pro codebase, which requires a paid license (or the 7-day trial) to use the Pro features.
- Added: a warning notice when more than one location is published without an active Pro license or trial (for example right after a trial ends) — existing locations keep working, but no further locations can be published until the count is back to one or a license is active.
3.4.7
- Fixed: uninstalling the plugin with data deletion enabled left substantial data behind: order metadata on shops using High-Performance Order Storage (a separate database table the cleanup never touched), category time-schedule data, order-item metadata, and — for the underscore-prefixed keys used by guest notes and stamp cards — customer allergy notes and loyalty stamp counts. The role and capability cleanup also used an outdated, hand-maintained list that predated several current roles and permissions.
- Fixed: the option cleanup on uninstall used a very generic “oos_” prefix wildcard that could have deleted unrelated options from other plugins; it’s now limited to the one legacy option name this plugin actually used.
- Added: guest notes and stamp card data (notes, allergies, stamp count, reward coupon) can now be exported or erased through Tools Export/Erase Personal Data, and a short privacy policy suggestion is offered under Settings Privacy.
3.4.6
- Fixed: a WooCommerce session cookie was set on every single page view (even for visitors who never touched a location link), which prevented full-page caching from working for any first-time visitor. The cookie is now only set when a location or order-type deep link parameter is actually present in the URL.
- Fixed: a translation filter for the checkout “Billing details” heading compared against a German string that could never match (the filter always receives the original English text), so it silently did nothing; it also ran an expensive page-type check for every single translated string on the site instead of only for the one relevant string.
3.4.5
- Fixed: the tip amount was never saved to the order (only added as a checkout fee), so the statistics page counted every tip as a generic add-on instead of showing it separately.
- Fixed: cart-wide and “buy N get M free” promotion discounts were recognized in the statistics page by matching the English fee name “Promotion: ” — on non-English shops (including all German, French and Italian setups) this never matched, so these discounts were silently counted as regular add-on revenue.
- Fixed: the statistics page loaded the entire matching order history into memory in one query and only filtered by location afterwards in PHP; large shops with a long order history could hit memory or time limits. Orders are now fetched in batches and filtered by location directly in the database query.
3.4.4
- Fixed: time slot capacity only counted orders created in the last 24 hours, not by their pickup time. A pre-order placed more than a day in advance was invisible to the capacity check, so a fully-booked slot could still be overbooked. Capacity is now counted by pickup date; existing pre-orders are backfilled automatically on update.
- Fixed: a location’s “Open now” status ignored holidays entirely — closed holidays still showed as open and accepted immediate orders, and a holiday with special hours on an otherwise closed weekday showed no available time slots at checkout.
- Fixed: the holiday date-picker in Settings also greyed out holidays that have their own special opening hours, not just fully closed ones.
- Fixed: the “next opening” text (e.g. “Opens Mon 11:00”) always showed the day abbreviation in German, regardless of the site’s language.
3.4.3
- Fixed: cart-wide promotion rules (“buy over X, get Y% off” and “buy N, get M free”) calculated the discount as a fee that did not reduce the tax base, so VAT stayed at the pre-discount amount. The discount fee is now taxable, using the same tax class as the order (including the Takeaway/Dine-in Swiss VAT switch, if enabled).
- Fixed: on shops that display prices including tax, a percentage or minimum-order-value promotion was calculated against the tax-excluded subtotal, giving a smaller discount than advertised and applying the minimum-order threshold too late.
- Fixed: a promotion’s day/time schedule was silently discarded when saved while the (unrelated) Scheduled Availability feature was switched off, and any already-saved schedule was ignored at checkout — the promotion ran around the clock regardless of its configured hours.
3.4.2
- Fixed: the Stamp Card’s “Maximum amount” setting made the reward voucher invalid on carts above that amount instead of capping the discount at it. The discount is now genuinely capped, verified against carts both under and over the limit.
- Fixed: a fixed-amount reward (rather than a percentage) was rounded down to a whole number and could not exceed 100 — a CHF 7.50 reward was silently saved as CHF 7, and anything above CHF 100 was rejected.
- Fixed: the stamp card display always said “% off” even when the reward was configured as a fixed amount.
- Fixed: an already-redeemed or expired reward voucher kept showing on the stamp card indefinitely instead of clearing once it could no longer be used.
- Fixed: cancelling or refunding an order that had already earned a stamp never gave the stamp back.
3.4.1
- Fixed: Locations, Tables, and Product Options used WordPress’s generic post-editing rights, so any Author (or other role able to publish posts) could create or publish one directly by URL, bypassing the plugin’s own menus entirely. All three now require the same dedicated capability the plugin’s own menu already expected.
- Added: a dedicated permission for managing reservations, separate from the Product Options permission it was previously tied to. Staff and Managers can now open the Reservations board and change a reservation’s status or table, as documented — previously only full Administrators could.
- Fixed: the “Delete Data on Uninstall” setting could be changed by a Shop Manager; it is now restricted to full Administrators, matching how the option is presented in the interface.
- Fixed: the POS “create order” endpoint accepted the generic
edit_postscapability as an alternative to the dedicated POS permission, which unintentionally let non-POS roles create orders through it.
3.4.0
- Fixed: the checkout, the table QR code link, and the reservation form accepted any numeric ID as a “location” or “table” without checking it was actually one — the title of an unrelated post could end up in the order, the thank-you page, and confirmation emails. Table QR codes also bypassed the location’s availability window. All three now validate against the real location/table.
- Fixed: a pre-order pickup time was only checked against remaining capacity, not against its format, whether it was in the past, or whether the location actually offers that time slot at all.
- Fixed: the reservation form only checked that the date was “today or later” — a time earlier today, a time outside opening hours, a closed holiday, and double-booking the same table at the same time were all accepted.
- Fixed: a guest who created an account during checkout (turning them from logged-out to logged-in mid-request) could lose their selected location and pickup time, because a redundant nonce check no longer matched after the login state changed.
3.3.3
- Fixed: cancelling an order from the dashboard had no status check, so an already-completed or already-refunded order could be cancelled (and refunded again) a second time. Only orders still in Processing, On Hold, or Pending can be cancelled now, and a partially refunded order is refunded for the remaining amount only, not the full total again.
3.3.2
- Fixed: the location restriction for managers and staff (Settings Manager Assignments) only applied to the REST API and the Statistics page. Over the regular admin-ajax endpoints, staff and managers could view, change, and cancel orders at any location, and retrieve the receipt of any WooCommerce order, not just their own location’s. All order-related endpoints now …
