Skip to content

Command palette

Search for a page to open.

Changelog

Shipping in public

New features and improvements as they ship. Bug fixes are listed inside the product, under What's new, where the people who reported them will see them.

  1. OpenAir

    OpenAir statistics: choose the period and see your total training time

    The Your statistics page now shows this year by default, and you can switch to last year, all time or your own date range. A new card adds up your total training time from check-in to check-out, and the averages and counts follow the chosen period. This month and average duration used to show 0; they are now worked out from your actual visits. Visits without a check-out, or longer than 12 hours, are left out of the time.

  2. Courses

    Course dates can be cancelled automatically when too few sign up

    Tick “Cancel automatically if there are too few participants” on a course date and give the days before the start and the minimum. Once that moment has passed with fewer people signed up, the date is cancelled the same way as with the Cancel this date button: every registration is cancelled, the attendees get an email (in your own words via General templates, if you like), the course responsible gets a note, and the people who had paid can each be given a single-use 100% discount code for the same course. No money is moved automatically. The rule is never applied retroactively. See the manual: Courses > Course dates.

  3. Serial cards

    Card loads now also record visits (punch cards) and days (monthly passes), always with the card they went to

    Every load on a card is now saved with the card it belongs to, and records what it added: money on a value card, visits on a punch card (the visits bought, not those carried over from older cards) and days of validity on a monthly pass (its length, or the days a pass was stretched). Lines are also written when value, visits or the end date are changed in the card editor and when all cards are extended by a number of days; before, those were not recorded. The card editor's Visit History shows them as Top-up lines, and the customer's Value loads tab lists all of them. Loads from before this update have no card or visits/days and stay as they were. Needs /super/aftal/ and a translations reload.

  4. Products

    Product tag extend_upon_sale: value cards and punch passes bought online extend their validity like at the till

    Add extend_upon_sale to the tags of a value card (pass_value) or punch pass (pass_Nx) product. When a customer buys it in OpenAir, the public shop or the webshop, the card gets the validity of its ticket type (the Expire column, e.g. +1 year) counted from the purchase, exactly as the till's extend option does. A product's own expiry_ tag wins over the ticket type; a fixed custom_span_ and gift (holding) tickets are not touched. Products without the tag behave as before.

  5. POS

    Selling a value card or a punch pass to a customer who already has one: choose whether the card's expiry date is extended

    In the till's Configure Product dialog, a value card or punch pass (10x etc.) sold to a customer now has an Extend the card's expiry date checkbox, ticked by default. Ticked, the card gets the expiry rule of its ticket type (the Expire column, e.g. +1 year) counted from today; a product's own expiry tag wins over the ticket type. Unticked, the value or visits are added and the customer's existing expiry date stays. A pass chosen through the product search now opens the same dialog (one variant, quantity 1), which also shows the product id, replaces the keypad with a quantity stepper and lists the yes/no questions one per row. Needs a translations reload.

  6. Serial cards

    Value added to a card is now shown: top-ups in the card's visit history, and a Value loads tab for the customer

    Every time value is added to a card (a top-up, old value moved onto a new card, or a manual change in the card editor) the card now remembers it. The card editor's Visit History tab lists these as Top-up lines among the visits, with the amount and who did it. The customer dialog has a new Value loads tab with every load the customer has made, plus the total loaded, the average load, the amount per year and the mean time between loads (corrections that lower a balance are left out of those numbers). Loads made before this update cannot be tied to a card, so they appear only in the customer's Value loads tab. Deploying needs /super/aftal/ and a translations reload.

  7. Kiosk

    Self-service kiosk is working: customers identify, buy day passes, punch cards and memberships and pay, with demo items for a climbing and an ordinary gym

    Customers identify with the QR code in OpenAir or an e-mail link (or register on the spot), pick items from the kiosk_shop category and pay. A device is approved by a manager under Settings → Kiosks, where there is now also an Open kiosk button. On a demo site, run demo:kiosk to add ready-made items: entries, rentals, punch cards, monthly, 3-month and yearly memberships, shop goods and café items. The manual has a new chapter, Self-Service Kiosk.

  8. Booking

    Treatment booking: book a treatment, a time and a therapist from the public page, with a room assigned automatically

    Customers pick a treatment (with add-ons and a running total), a time and who does it, then add it to the basket. A therapist and a free room are held together. Staff set it up under Rentals → Treatments (treatments, add-ons, skills, room features) and choose the page layout in Public page settings: steps as pills on the left, pills on top, or a wizard. The step bar floats while scrolling, and therapists with free times are outlined green and those with none red. The POS has a therapist calendar (day, week, month) where a booking loads into the cart, and a reservation's room can be changed. See the Treatment Booking page in the manual.

  9. Settings

    Settings changes reach open screens: new Refresh settings button

    Saving a setting used to leave an old copy in use for up to an hour, so for example the cashier PIN requirement was enforced by the server but not asked for at the till. Saving now refreshes it, and the side panel has a new Refresh settings button, below Force reload, that reloads the settings on an open screen at once. The PIN and screen lock docs explain it.

  10. POS

    POS: sell as another employee, own PINs, and a screen lock

    A cashier can now sell on behalf of another employee from the salesperson chip in the POS header (off by default). Each person can set their own PIN under Profile, a new setting can require that PIN before switching (managers are exempt), and a padlock in the top bar locks the screen until the user's PIN or any manager's PIN is entered.

  11. Customers

    Customer search (Cmd/Ctrl+J): an icon on each result opens the customer editor, Enter still opens the serial cards

    Pick a customer with Enter or a click and you go straight to their serial cards, as before. The new edit icon at the end of each row opens the customer editor instead.

  12. Serial cards

    Monthly passes: choose per product whether a new pass starts where the old one ends, starts today, or extends the current pass

    Three new tags are in the product editor's tag library. extend_monthly_pass starts the new pass where the customer's current pass ends, no_extend_monthly_pass always starts it today, and extend_current_monthly_pass adds no new card but stretches the current pass by the length bought. A product with none of them follows the shop-wide setting, as before. It works the same in the webshop, OpenAir, POS and kiosk. If a product has both extend tags, chaining wins.

  13. Memberships

    Billing templates: start an automatic billing from a ready-made template, such as 6 months for 336 € up front, then 59 € a month

    Create templates under Settings > Memberships > Billing templates (product, price, VAT, interval), and pick one in Start automatic billing on a customer or in Add subscription on the Subscriptions screen. The fields fill in and only the location is left to choose. A template can also ask for an amount up front that covers the first months: the first billing date moves forward by those months, and right after starting you can take the payment by creating an invoice, showing a payment QR code for the customer's phone, or adding it to the till.

  14. Products

    Bundled offers: special prices on other products while a membership (or any chosen product) is in the cart

    Give customers a special price on other products while a trigger product is in the cart, for example a shaker for 5 €, 20 % off a hoodie or 2 € off a bottle when they buy a membership. The cart shows the offers as a strip ("Would you be interested in these?") with the normal price struck through; a product with sizes opens its own card to pick the option, and the cart line then shows the offer price. Offers work in the kiosk, the till, the web shop and OpenAir, and the price is calculated on the server, so what the customer sees is what is charged. A bundled offer never stacks with a multi-buy deal on the same unit. Create them under Products → Bundled products; the manual explains triggers, price types and what cannot be offered.

  15. Products

    Multi-buy deals: a special total price when buying several of the same product

    Set a total price for buying a number of items together, for example 3 protein bars for 10 €, or for a mix of specific products. The best price always wins: a deal never stacks with member discounts or sale prices. Deals show in the kiosk, the till, the web shop and OpenAir. Create them under Products → Deals; the manual explains how the price is calculated.

  16. Dashboard

    New dashboard widget: subscriptions started and ended, difference and churn rate

    See how many subscriptions began and ended each week or month, the net change and the churn rate. Filter by location and choose the time span: ready-made periods or any date range. Add it from Customize dashboard.

  17. AI assistant (MCP)

    The AI assistant can now raise invoices, sales orders and purchase orders, and issue serial cards

    Describe the document and the assistant creates it. Nothing is sent: invoices are created unsent, sales orders stay open and purchase orders stay drafts, so you review and send them yourself. New API key scopes: Products Read, Invoices Write, Sales Orders Write, Purchase Orders Write, Serial Cards Read/Write.

  18. AI assistant (MCP)

    We have started on MCP: connect an AI assistant such as Claude to set up booking systems and manage ticket pauses

    A first version of an MCP connection is available: with an API key, an AI assistant can describe-and-create a complete booking system (resource, units, prices, times, cancellation, booking-page tab and website widget) and look up, create and end ticket and membership pauses. The gym's own rules still apply, and the key's permissions limit what the assistant can do. Works with Claude Code, Claude Desktop, Codex CLI, Cursor and VS Code; ChatGPT and claude.ai need a sign-in flow we have not built yet. More tools will follow.

  19. Partner gyms

    Partner gyms: accept each other's serial cards and memberships, with a two-sided visit report

    Pair two gyms under Settings → Partner gyms and a customer of one can use their serial card, monthly pass or membership at the other: the home gym takes the visit, both gyms keep their own row, and the monthly Partner Gym Visits report (also on the Reports page) brings CSV and a check against each partner. No personal data leaves the home gym — the visited gym sees only a display name. Shareable card types are picked per type, a single card can be allowed or denied regardless of its type, and the member app shows a typed fallback code for desks that cannot scan the QR.

  20. Payments

    Control which payment methods (Smartum, ePassi, Stebby, etc.) are offered per product, including an “exercise-benefit only” tag — now enforced in OpenAir too

    Choose which payment methods are offered for a product — Smartum, ePassi, Stebby, and the rest — including a tag that restricts a product to exercise-benefit payment only. The same restriction is now enforced in OpenAir as well.

  21. Customers

    Customers can see and edit their own profile details, and view or download past orders as a PDF

    Customers can now view and edit their own profile details, and see their past orders with a PDF receipt to download for each one.

  22. Courses

    Public course page redesigned

    The public course page has a new look.

  23. Settings

    See a log of every email your gym has sent, and set your own SMTP email account in Settings

    A new log shows every email your gym has sent, so you can check one actually went out. You can also set up your own SMTP email account in Settings, instead of always sending through the shared one.

  24. Shifts

    Apply a shift template to several weeks at once, with AI-assisted planning

    Apply a shift template to several weeks in one go instead of one at a time, with the AI planner filling in employees for every week in the run.

  25. Serial cards

    Monthly passes can automatically start where the customer's current one ends, chosen per product

    Turn this on per monthly-pass product, and a customer's new pass starts the day their current one ends, instead of from the day of purchase — so buying early never costs them time.

  26. Rentals

    Public booking pages now have a footer with your gym's company info

    The public booking page can now show a footer with your gym's company details, so customers see who they're booking with.

  27. Marketing

    Send a test copy of an email template to yourself before sending it to customers

    Send yourself a test copy of an email template straight from the editor, so you can check it looks right before it goes out to customers.

  28. Reports

    Hours Entry: auto-advance to the minutes box while typing

    Typing hours in the Hours Entry report now jumps straight to the minutes box once the hour is complete, instead of requiring a click or a tab key.

  29. Products

    Fill List: filter by reference location, see stock balances

    The Fill List report can now be filtered down to one reference location, and shows each product's current stock balance alongside it.

  30. Reports

    Open Gift Vouchers report: fixed vouchers that were silently missing, added average value, warning if no template is set

    Some open vouchers were silently missing from the report; they're now all accounted for. The report also shows the average voucher value, and warns you if no voucher template is configured yet.

  31. Gift vouchers

    Gift voucher codes now work everywhere you enter them, at checkout and redemption

    A voucher code used to behave differently depending on where you typed it in. It now works the same way everywhere — at checkout and at redemption alike.

  32. Marketing

    Marketing audience builder: compare any customer field, AND/OR matching, and an explanation when a customer is excluded

    Build an audience by comparing any customer field — equals, contains, greater than, and more — and combine conditions with AND or OR. When a customer doesn't make the cut, the builder now explains why.

  33. Rentals

    Permanently delete a reservation that's already cancelled

    A cancelled reservation can now be deleted outright instead of staying in the list forever.

  34. Settings

    Grant or revoke a feature for every staff user at once, instead of one at a time

    Turn a feature on or off for every staff user in one action, instead of visiting each person's account individually.

  35. Rentals

    Pay for a court booking using a gift voucher

    A court booking can now be paid for with a gift voucher, the same as any other purchase.

  36. Products

    Deleting a product category now previews the affected products first (a crash fixed along the way), with name/ID search

    Before you delete a category, you now see exactly which products it affects, with a search by name or ID to check further. A crash that could happen during deletion is also fixed.

  37. Webshop

    Hero image upload for the public page, a bigger banner, sticky top bar, translated shop toolbar

    Upload your own hero image for the public shop page, now shown in a bigger banner. The top bar stays visible while scrolling, and the shop's toolbar is now fully translated.

  38. Rentals

    Logged-out customers get a sign-in nudge before booking; admins see the public booking link in Settings

    A customer who isn't signed in now sees a nudge to log in before booking, rather than discovering it only at checkout. The public booking page's link is also now shown directly in Settings, so you don't have to go looking for it.

  39. Rentals

    Upload an image and a description for bookable resources, shown on the booking catalog card

    Give a bookable resource its own photo and short description, and customers see it on its card in the booking catalog instead of just a name.

  40. Rentals

    Named, reusable sets of bookable resources you can assign to ticket types

    Instead of listing resources one by one on each ticket type, create a named set once — say “All courts” or “Beginner gear” — and assign it anywhere. Update the set and every ticket type using it updates with it.

  41. Serial cards

    New automation: alert when a card is about to expire; refined “low visits left” alerts

    Set up an automation that reaches out to a customer before their card runs out, instead of after. The existing “low visits left” alert was refined alongside it so the two don't fire on top of each other.

  42. Rentals

    Unpaid reservations now show their release deadline, with a manual “Release now” button

    An unpaid reservation now shows exactly when it will be released back to the calendar, instead of just sitting there unexplained. Staff can also release it immediately with one click, rather than waiting for the automatic release.

  43. Rentals

    Rental calendars: filter to selected resources, a condensed density option, rows/columns toggle

    Narrow the rental calendar down to just the resources you care about, switch to a condensed view to fit more on screen, and choose whether resources run along rows or columns.

  44. Rentals

    Off-peak pricing for bookings

    Bookable resources can now have a cheaper price outside peak hours — say, before 9am or after 8pm. Set the off-peak windows and prices per resource, and the public booking page shows the right price for each time slot automatically. A new setting also lets you turn prices on the booking grid on or off entirely, for gyms that would rather not show them there.

  45. Rentals

    Log in and pay for a court with an existing pass

    A returning customer can now log into the public booking page with a one-time code — no password to remember — and pay for a court with whatever they already have: a 10-visit card, a value card, a monthly pass, or an annual membership, instead of a new card payment every time.

  46. Reports

    Two new reports: Staff Hour Log and 10x Ticket Usage Duration

    Staff Hour Log shows one employee's worked hours for a period — a total, plus every clocked entry underneath it — filterable by work type. Leave the employee blank to see everyone at once. 10x Ticket Usage Duration shows how long customers actually take to use up a 10-visit punch card: an average, a median, and a histogram of how quickly cards get used.

  47. Rentals

    Public booking page for courts and other rentable resources

    Members and drop-in customers can now browse what's available to book — courts, gear, or any other resource a gym rents out — see photos and details for each one, and reserve a time slot directly, without creating a separate account first. Admins control which resources appear, how they look on the page, and how the available time slots are laid out.

  48. Discount codes

    Limit a discount code to an email address pattern

    A discount code could already be reserved for one named customer. That is the right tool for a gesture to one person and the wrong one for a company deal, where nobody wants to type in four hundred names. A code can now also be limited by email address. Write *@company.com and everyone with an address at that employer can use it, and nobody else. A star stands for any text, so *@*.company.com covers subdomains too. Set both a customer and a pattern and either one is enough: that person, or anyone matching. Patterns that would let in almost any address are refused when you save them, so a missed @ cannot quietly turn a campaign code loose on everybody.

  49. Discount codes

    Reserve a code for one customer, or for chosen courses

    A discount code used to be usable by anyone who knew it. If you wanted to give one person a gesture — a refund handled as a code, an apology, a deal agreed on the phone — nothing stopped it being passed on and used ten more times. The code editor now has two new optional fields. Reserved for customer ties the code to one person: it only works for them, checked against the email given at checkout or signup, so it works for guests as well as signed-in members. Leave it empty and the code behaves exactly as before. Valid for courses limits a code to the courses you pick. A code with courses chosen is a course code — it applies when one of those courses is being bought, and the webshop will not take it for anything else. Leave it empty and it stays an ordinary webshop code. Both are optional and off by default, so every code you already have keeps working unchanged.

  50. Courses

    Discount codes work on course registrations

    Courses had two prices — the normal fee and the member fee — and no way to take a discount code. A code you had issued was good in the webshop and nowhere near a course. The public registration page now has a code field. It is checked before paying, not after: enter a code and the page tells you straight away whether it applies and what the registration will cost, so nobody finds out at the payment step. The fee beside the pay button changes to what will actually be charged, with the old price struck through. The discount comes off whichever price is in force. If the customer has confirmed their membership and qualifies for the member fee, the code discounts that — a member is never worse off than a non-member for using the same code. On a multi-day registration it comes off the whole amount, not one session. An agreed price set for a single participant still overrides everything: a price your staff typed in for one person is not undercut by a code.

  51. Courses

    Give one participant a price of their own

    A course already had two prices — the normal fee and the member fee — but both apply to everybody. There was no way to agree something with one person: a sibling discount, an injury, a staff family member, a goodwill gesture. Staff either changed the member fee for the whole course or took the difference outside the system. Open a course, expand the date, and the ⋮ menu on a participant's row now has **Set price**. Type an amount, add a short reason, and that person's registration is priced at it. The agreed price shows in its own column in the participant list, with the reason on hover, so the next person to look at the course can see which registration is different and why. Empty and 0 mean different things on purpose: clearing the field returns the person to the ordinary course pricing, while 0 is a free place somebody agreed to give. The agreed price replaces the whole amount — the base fee, the member price and the per-day multiplication for a multi-date booking — so the number you type is the number they are asked to pay. It cannot be changed once a participant is marked paid, and the option disappears: altering it then would leave the recorded price disagreeing with the money actually taken. Every change is recorded with its amount and reason.

  52. Serial cards

    Stop unrelated serial cards from merging into one

    Buying a serial card moves the visits left on a customer's existing cards of the same type onto the new one. That is what you want when somebody tops up a 10x — and not at all what you want when a first-timer 3x and a children's 10x collapse into a single 13-visit card. Every punch card is stored under the same card type internally, whatever product sold it, so until now there was nothing to keep them apart. Settings ▸ Card groupings lets you define the drawers cards are sorted into. Create a grouping, then copy the tag it shows you onto the products that belong to it — in the ticket type's “Apply tag” field, or in the product's own tags. A card sold by that product then only ever merges with other cards in the same grouping. The tag applies wherever the product is sold: at the till, in the web shop and in OpenAir, as well as when you create a card by hand. Nothing changes if you create no groupings — cards without one still merge with each other exactly as before. The grouping is shown on the customer's card list, on the POS quick button and on the cart row, so you can see at a glance which cards will merge with which.

  53. Settings

    See what went wrong, in one place

    Background jobs — invoice imports, integrations, scheduled tasks — used to fail quietly. Settings ▸ Error log now lists what broke, with the full detail behind each row, and a count appears on the dashboard when something needs attention. Mark a problem as seen while you look into it, and resolve it when it is handled. Repeats of the same failure collapse into one entry rather than filling the list, and the dashboard shows nothing at all when there is nothing wrong.

  54. POS

    Park a sale and come back to it

    When a customer goes back for something they forgot, press Park. Their cart is set aside with everything on it, the till clears for the next person in the queue, and Parked in the menu brings it back when they return. You can have several waiting at once, and picking one up parks the sale you were in the middle of, as long as no payment has been recorded on it yet. Parked sales stay on that till and are cleared each morning, so yesterday’s abandoned carts do not pile up. A sale that already has payments on it cannot be parked — finish or cancel that one instead.

  55. Appearance

    Dark mode follows your system and remembers your choice

    The app now opens in whichever mode your computer is set to, so it arrives matching everything else on the machine. The sun and moon button in the top bar overrides that whenever you like — your choice is remembered on that device, and from then on it wins over the system setting. Dark mode now covers the app rather than a handful of screens: around 1,400 panels, tables, badges and info boxes that stayed white — and text that was dark-on-dark, sometimes invisible — now follow the theme.

  56. Webshop

    Your course page now uses your shop's colours

    Set them under Webshop → Settings → Branding: a primary colour, a page background and a content background. The public course page follows all three — header, banner, buttons and links — and picks readable text for a dark background on its own. If you have set no colours, nothing changes.

  57. Courses

    Write your own text on the course page

    Under Settings → General templates, add a template with target "courses_public" and one of these identifiers: hero_title, hero_subtitle or info_text. Leave the language empty to use one text everywhere, or add one row per language. info_text is an extra paragraph that stays hidden until you write something in it.

  58. Courses

    Course payments now show up in the sales reports

    A course paid online now becomes a real order and receipt, so it reaches every sales report on its own. You can choose which product each course is booked to: open the course, go to the Pricing tab and pick one under Sales product. Leave it empty and the course is booked to a shared Courses product, which is created the first time it is needed. This applies to payments from now on; earlier ones are not added retroactively.

  59. Customers

    See how many customers you may email

    The customer registry has a Marketing email filter beside the column picker: accepts, declined, or never asked. Pick one and the total at the top of the list becomes the answer — how many people a campaign would actually reach. “Accepts” is the same test the marketing sending uses, so the number is the number that would really be sent to, not an optimistic one. “Never asked” is deliberately separate from “declined”: those are customers nobody has ever put the question to, and they are usually the largest group and the only one you can still do something about.

  60. Dashboard

    Group dashboard revenue into your own buckets

    The revenue widget asked one question — entry against everything else — which is the right first question for a climbing gym and the wrong one if the interesting money is a cafe, a pro shop or party bookings. Now you can decide the grouping: tag a product “bucket_cafe” (any name after bucket_) and a series for it appears on the dashboard straight away. Tag as many as you like. The new Revenue buckets page under Settings gives each one a proper name, a colour and a position, and shows how many products carry each tag — a bucket with none is a typo in a tag, and this is the only place that shows. There is also a shortcut to it from the widget itself. Nothing changes until you tag your first product; until then the old entry split stays exactly as it was.

  61. POS

    A product can require a customer before it is sold

    Some products only mean something attached to a person — a membership, a named pass, a sale that will be invoiced — and until now the till would happily sell them to nobody, which only came to light later, as a pass belonging to no one. There is now a “Require a customer at the till” setting in the product editor's POS section. With it on, the product cannot be added to the cart until a customer is chosen, whether it was reached from a quick button or from product search. The till does not simply refuse: it opens the customer search and finishes the sale once you pick someone, so the button is never pressed twice. Off by default, so nothing changes until you turn it on for a product.

  62. Courses

    Visible, Hidden and All tabs on the course list

    The list opens on Visible, so courses taken off the customer site — old seasons especially — stay out of the way until you ask for them. Each tab shows how many courses are in it, so it is clear at a glance that hidden ones exist.

  63. Dashboard

    Three new widgets that tell you when something is broken

    Your dashboard could tell you what happened — sales, visitors, trends — but never that something had stopped working. Four new widgets cover that. Payment method health spots a method whose volume has collapsed or whose payments are being reversed, the kind of fault that can run for months while the totals look merely quiet. Failed recurring charges surfaces subscriptions that stay active while collecting nothing. And Entry vs everything else splits drop-ins from shop sales, so a slump in gear or courses cannot hide behind steady entry numbers. Add them from the dashboard editor.

  64. Reports

    Customs alcohol report, now in the new reports

    The monthly Customs (Tulli) alcohol report has moved out of the old export form into Reports, where you can filter, sort and export it like any other. It shows bottles and litres per alcohol tax group from your sales orders. It also now warns you about products it cannot declare — one with no tax group, or no bottle volume — before you file. The old version quietly left those out of the totals, and dropped any product that had no Finnish name at all, which could understate the declaration without saying so.

  65. Reports

    Friend pass visitors now show up in the customer funnel

    A friend pass is given, not sold, so it left no trace at the till — and the customer progression report finds people by their first purchase. Someone who first came to your gym on a friend's pass therefore looked like they had never visited at all, and the membership they bought three months later was credited to nobody. Their first visit is now recorded as a €0 sale, dated just before the pass was given so the report counts it as their way in. It changes no revenue, VAT or day-end figure. Pick the product it is booked against in the setup panel at the top of your dashboard; until you do, nothing is recorded.

  66. Dashboard

    The dashboard now tells you what still needs setting up

    Some features can't work until someone makes a choice only you can make, and nothing used to say so — a setting could sit empty for months while you assumed the feature was on. A panel at the top of the dashboard now lists whatever is still outstanding, explains why it matters, and lets you fill it in on the spot. It disappears once there is nothing left to do. First up: choosing which product a friend pass visit is rung up against, without which friend pass recipients are invisible in the customer progression report.

  67. Reports

    WooCommerce sales now show up in your POS reports

    Orders arriving from WooCommerce created their cards and then vanished from the books — the turnover was nowhere in your reports. Every paid WooCommerce order is now also written as a receipt under the web shop location, so it appears in the daily, monthly and VAT reports alongside your own web shop. The whole order is booked, shipping and fees included, and the payment lands on a "WooCommerce" method created automatically on first use — give it a ledger account in payment method settings. Cancelled and unpaid orders are ignored, and nothing is booked twice.

  68. Products

    Translate addon names, with AI help

    Addons showed the same name to every customer, whatever language they were shopping in. You can now give each addon a name per language under Products → Addons, and the button beside any filled-in field translates it into all the other languages for you. Leaving a language blank is safe — the shop falls back to the addon's own name.

  69. Reports

    How many serial card holders go on to join

    The customer progression report now shows each step against its own starting point, not just against everyone. “Of the people who reached a serial card, how many went on to join” is the number you can act on, and it was invisible while every stage was quoted as a share of the whole cohort — a stage looks weak when few people reached the stage before it. Both numbers are shown side by side. Median days are counted from the previous stage too, so a customer who took 20 days to a serial card and 20 more to join reads as 20 here and 40 in the stage table.

  70. Products

    Show an intro offer only to people who have never bought anything

    A new product setting, “Hide from customers who have bought before”, keeps a first-visit price out of sight of anyone who already has a card, a paid web order or a till receipt. It applies in the webshop and in OpenAir, and it also refuses a direct link to the product page — hiding it from the list while still serving it by address would not be much of a rule. Visitors who are not signed in do not see it either, because otherwise signing out would be all it took to get the offer again. An abandoned, unpaid order does not count as a purchase.

  71. Reports

    See when people cancelled, not just why

    The cancellation reasons report can now be grouped by month or by year, with a stacked bar beside each doughnut showing which reasons made up each period. Both halves get one — automatic subscriptions and traditional memberships. A period where nobody cancelled still gets its place on the axis, so a quiet month reads as a quiet month rather than disappearing.

  72. Reports

    See whether a first visit turns into a membership

    A new Customer progression report follows everyone whose first card was bought in the period you choose, and shows how many went on to a serial card, a monthly pass and a yearly membership — with a flow diagram of where people came in and what they did next. Because it follows the same people over time, the percentages mean conversion rather than headcount: someone who already held a card before the period is deliberately left out. A 3× taster pass or a first-timer guest pass can be made to count as a way in by tagging the product “customer path entry point”; tagging is optional and only sharpens the picture.

  73. Reports

    Run a “who brought in the most new people” campaign

    The member pass assignments report has two new tick boxes. “Only count new users” counts a pass only if the recipient's account did not exist before the report's start date and nothing had happened on it before the pass — no purchase, no invoice, no card, no visit. Checking invoices and visits matters: members who pay monthly by invoice never produce a till receipt, so a sales-only rule would treat your longest-standing members as new forever. “Only count redeemed passes” counts one only after the friend has actually visited, which is worth ticking when a prize is involved — registering an email costs nothing, walking into your gym does. Newness is judged against the report's date range, not against today, so re-running it later cannot change who won.

  74. Serial cards

    Giving a friend pass now emails both people

    The recipient gets a note saying who gave them the pass, what it is worth and how long it lasts; the giver gets a receipt naming who received it. Each email is written in that person's own language. There is no tick box in the app on purpose — the recipient is always an existing customer whose address you already hold, so what governs the send is their own important-email consent, and an explicit opt-out is honoured. It is also the only way anyone finds out a pass reached the wrong person, since the transfer cannot be undone. Turn it off per gym with “Email the recipient (and the giver) when a friend pass is given away”.

  75. Serial cards

    You can now hide the friend pass in OpenAir

    The new setting “Show the membership friend pass in openair” is on by default. Switch it off and members stop seeing their friend passes — and the Give to a friend button — in the app, while the passes keep being issued and stay visible to you in the customer register. Turning it back on brings them straight back; nothing is consumed or deleted.

  76. Serial cards

    Member passes can be earned by rule and given to a friend

    Rules decide which cards earn a "bring a friend" pass and what the friend receives. Members give a pass away in OpenAir; the friend gets a real card. A nightly batch resets passes on each rule's own cadence.

  77. Reports

    Member pass assignments report

    Who gave a friend pass away and how many, expanding to show each recipient, what card they got and how many visits are left.

  78. POS

    Distraction-free POS and receipts that print properly

    A button opens the POS full-screen with everything else out of the way. Receipts are sized to the 72 mm printable width, drop the currency signs and the pointless decimals, and print from a hidden frame instead of opening an empty tab.

  79. Rentals

    Paint, drag and resize reservations on the rental timeline

    Drag across empty time to create a reservation, drag an existing one to move it, pull its edge to change the length. Stored times are now real UTC, so a booking no longer drifts an hour when the clocks change.

  80. Navigation

    A new menu rail

    The sidebar is a narrow rail of icons with a flyout for each section, so the working area gets the width instead of the navigation.

  81. Punch passes

    Punch passes, end to end

    Sell the tenth coffee free. Pass types are set up as products, the POS and the web shop issue and stamp them, members see their own, and each type gets its own icon and colours. A used-up pass can be hidden or withdrawn instead of deleted.

  82. Memberships

    Pausing a membership shifts the billing with it

    Nobody is charged inside a pause window, and the paid days move to the end instead of evaporating. Allowances are configurable per membership type, committed terms get their days up front, and a cancellation settles the pause against the days actually used.

  83. Door access

    A suspended membership is stopped at the door

    Suspending a membership from the admin used to leave the door happily open. It now refuses entry and says why, so a suspension means what it says.

  84. POS

    Nets Cloud Connect card terminals in the POS

    Credentials are set once per gym and a terminal is bound to each POS, so the sale goes to the reader on that counter and nowhere else.

  85. POS

    Icons and colours for POS categories

    Give each quick-select group an icon, a background and a text colour, optionally oversized. On a busy Saturday the eye finds a colour faster than it reads a word.

  86. Web shop

    Web order PDFs, and marking paid with a real method

    An order prints or emails as a proper PDF with your header. Marking it paid asks which method the money came in by, and the cash-style methods are limited to staff standing at a till.

  87. Serial cards

    Pause rules for serial cards

    How many pauses a card allows, how long each may run and how many days a year it may total, set per card type. The customer pauses it themselves in OpenAir once you switch it on for the gym.

  88. Reports

    Product sales grouped by variant, filtered by product

    Sizes and colours of the same shirt add up as one line instead of scattering across the report, and a single product can be pulled out on its own.

  89. Dashboard

    Build your own dashboard

    Dashboards are configurable per gym and each user can arrange their own from the widgets they are allowed to see. The manager and the person on the desk do not need the same screen.

  90. Integrations

    PrestaShop integration rebuilt

    Products, stock and orders sync from a settings page you can actually read, with the connection testable before you trust it. The old integration is untouched and still runs.

  91. Languages

    The whole admin speaks ten languages

    Customers, products, POS, invoices, courses, rentals, gear, shifts, marketing, waivers and the rest are translated rather than half-English. Switching language now changes the whole screen.

  92. Door access

    Door access can depend on where the phone is

    Set a radius around each location, refuse an open from outside it, and read the anomalies report to see who has been trying from the wrong side of town.

  93. Landing pages

    Landing pages you edit yourself

    Each gym gets its own public pages — sections, text, images, news — edited in the admin and routed without touching a template or waiting for a deploy.

Want these as they land?

We write to customers when something worth knowing about ships. No cadence, no newsletter for its own sake.

Cookies on this site

We would like to set Google Analytics cookies to count visits and see which pages are read. They record your device, browser, approximate location and the pages you view. Nothing is set unless you accept, and you can change your mind at any time. Privacy policy