On September 14th I wrote that KahunaCart was out. That was KahunaCart 1.2.8, with three add-ons and a demo store. I figured things would slow down a bit once it was on sale. They didn't. A month later the core is at 1.5.3, there are five new add-ons, and kahunacart.com has grown a help center, an affiliate program and a releases page.
Most of what follows came from people actually using it. Someone asked for Printful, so we built Print on Demand. Someone wanted their shop on its own site, so 1.5.0 can pack up a whole store and restore it somewhere else. That's been the best part of the month for me.
Five new add-ons
Each add-on is a one-time purchase that attaches to your KahunaCart licence key, and your single yearly renewal covers updates for all of them.
Shipping
Sept 16 · now 1.2.0Live carrier rates at checkout, box packing, labels you buy beside the order, and tracking your customers can follow.
- Shippo, EasyPost, ShipEngine and now Sendcloud
- Packs orders into your own boxes, with dimensional weight
- Customs declarations for international parcels
- A demo carrier that buys no postage
Bookings
Sept 22 · now 1.1.8Appointments and classes paid through your normal checkout, with a tablet front desk for your staff.
- Books staff, rooms and equipment together
- Classes with registers and waiting lists
- A front desk at
/deskwith no admin access - Reminders, reschedules and calendar feeds
Rentals
Sept 22 · now 1.0.7Nightly stays on top of Bookings, for holiday lets, B&B rooms, cabins and pitches.
- Seasonal rate bands, stay rules and changeover days
- Cleaning and extra-guest fees on their own lines
- A deposit now, the balance before arrival
- Calendar sync with Airbnb, VRBO and Booking.com
Print on Demand
Oct 11 · 1.0.0Shirts, mugs, posters and prints that Printful, Printify or Gelato make and post for you. You never hold stock.
- Import products you designed at the printer
- Or put your own print files on their blanks, by SKU
- The printer's real postage at checkout
- Every order waits for your OK until you switch on automatic
Affiliates
Oct 12 · now 1.0.1Let bloggers, podcast hosts and happy customers sell for you. Each partner gets a link, a coupon code or both, and one batch pays everyone at the end of the month. No outside service and no spreadsheet.
- Coupon-only partners get credit too, so the podcast code that nobody clicks still counts
- Commissions wait out your refund window, and a refund takes back what it undoes
- Payouts by store credit, PayPal Payouts or by hand with CSV files
- W-9 and W-8BEN details, with year-end totals for whoever does your taxes
Bookings is the one I'd show a salon owner first. Staff open /desk on the reception tablet, tap to check someone in, press and hold to move an appointment, and never see your orders or your payment settings. The demo runs three made-up businesses on it: a hair salon, an axe-throwing range and a beach house let by the night. Book something, then open the front desk to see it from the other side.
Print on Demand starts every printer in review mode on purpose. A paid order becomes a free draft at the printer and sits on the order screen with its cost and your margin until you press Send to Printful for $18.40. Sending an order to a printer spends your money, and the first few orders through any new setup are the ones most likely to be wrong. Once a few have gone through cleanly, switch it to automatic.
Selling in more than one currency
This was the most requested feature after launch, and it landed in KahunaCart 1.4.0. You keep one base currency and add the others you want to sell in. A shopper in Germany browses in euros, pays in euros and gets a receipt in euros, and your books stay in dollars.
You can type a price for each currency, or let the store convert from your base price with a markup and a rounding rule of your own. Rates come from the European Central Bank or Frankfurter, once a day, and a big overnight move is held for you to check instead of quietly repricing your catalog. Coupons, sales, shipping, payment fees and store credit all take an amount per currency, and the rule is simple: no amount in a currency means the rule doesn't apply there. A "€5 off" coupon never turns into $5.
Every order stays in the currency it was placed in, from the cart to the last refund, and records its exchange rate. Reports can show one currency at a time, or everything in your base currency. And if you need it, each currency can sell through its own company, so a UK company sells in pounds and an EU company sells in euros from the same store, each with its own invoice numbers. Stripe and PayPal also tell the store what they actually paid out after their own conversion.
AI shopping agents
KahunaCart 1.3.0 made stores ready for people who shop inside AI assistants. Google AI Mode and Gemini can put one of your products in a basket and pay with Google Pay through Stripe. ChatGPT finds your products through the OpenAI product feed. Any MCP client can search your catalog through a public storefront MCP endpoint and build a cart.
An agent sees exactly what a logged-out visitor sees, and prices, tax and shipping come from the same calculator the storefront uses. Agent orders get their own source in your reports. All of it is off until you turn it on.
The same release brought semantic search (a search for hat finds the cap and the beanie) and a one-command Squarespace import that brings across products, customers, orders, pages and the redirects from every old address.
Take your whole store with you
KahunaCart 1.5.0 started with a store owner whose shop lived at /shop inside a bigger Grav site, and who wanted it on a site of its own. The honest answer used to be "copy everything and delete what isn't the shop". Now there's an Import & Export screen.
- Export the whole store, or just the parts you pick, into one zip. It includes your catalog as a text file and your customers and orders as CSV files, so you have your data in a form you can use anywhere, KahunaCart or not.
- Restore that bundle into a fresh site with the same order numbers and customers, or merge it into a store that's already running. Both start with a dry run and send no emails.
- Store status lets you set the shop to Open, Coming soon or Paused with your own message, while signed-in staff can still place test orders.
- The shop can be your home page by setting its route to
/.
Faster on the same server
When the first numbers came back from our dedicated benchmark server, a category page on MariaDB topped out at 69 requests a second. I put a profiler on it, and KahunaCart 1.3.6 (with Grav 2.2.3 alongside) took that same page on the same 8 vCPU box to 189 requests a second. The profiler also turned up a nasty search index bug that could stall a busy store after a deploy. That's fixed, and search capacity roughly doubled on every database engine.
| Page, requests/sec | SQLite | MariaDB | PostgreSQL |
|---|---|---|---|
| Category | 115 → 252 | 69 → 189 | 74 → 135 |
| Search | 125 → 258 | 75 → 186 | 73 → 140 |
| Product | 233 → 361 | 145 → 228 | 129 → 154 |
The full write-up is in the 1.3.6 performance post, and every run is on the benchmarks page.
Everything else in the core
There's a lot more in those 32 releases. The highlights:
Selling
- Pay what you want, with a minimum, a suggested price and an optional maximum.
- Deposits at checkout or from a pay link, with the store asking for the balance on its own when it's due.
- Bundle suggestions when a shopper has a bundle's parts in the cart separately.
- Buy now buttons that go straight to checkout.
- Articles with a teaser: a page shows its opening to everyone and the rest to subscribers, with member-only pages for any customer group.
- Backorder notes and "Notify me when it's back" alerts.
Selling in Europe
- Product safety details for the EU's GPSR rules (manufacturer, responsible person and warnings), with defaults per manufacturer.
- EU energy labels and warranty badges near the price.
- Selling to EU businesses under reverse charge, and saying whether a price includes tax.
Running the store
- Store-owner notifications by text message (Textbelt and Twilio) alongside email, Slack, Discord, Telegram, ntfy and Pushover, and as of today dashboard alerts, failed refunds and order notes can reach your phone too.
- Every admin table sorts by its headings and has a search box.
- Merge two customers, and customers can add a second email address themselves.
- Batch actions on variants, and custom fields in the catalog file.
- Orders paid through a merchant of record like Polar now show the tax the provider charged, so the receipt matches what the customer paid.
Payment providers
Mollie and Moneris are on sale at $49 each. Mollie covers most of Europe, including TWINT in Switzerland, and Moneris is the big one in Canada. They join Stripe, Polar and PayPal, which still come in the box, and every provider was updated to handle more than one currency.
Updates to the original add-ons
- Subscriptions (now 1.1.8) can offer several billing options on one product, put subscribers in a customer group while their plan is live, and let each plan choose whether its price includes the payment method's fee.
- License Keys (now 1.0.17) gives every key its own page in the customer's account, validates bundle keys for every package they ship, and imports keys from another system as they are.
- Newsletters (now 1.1.12) sends one campaign to several lists, keeps a full history of every consent change, can send a campaign to people who joined after it went out, and adds a postal address to campaigns.
- The free Kahuna theme (now 1.0.15) picked up the currency switcher, backorder lines, the EU product safety details and the store status banner.
New on kahunacart.com
The site itself kept growing too:
- A help center at kahunacart.com/support, running on Helpdesk Pro, with 45 help articles and a portal for your own requests.
- An affiliate program at kahunacart.com/affiliates, running on the Affiliates add-on, naturally. If you write about Grav or build sites for clients, take a look.
- A releases page at kahunacart.com/releases with the current version of the core, every add-on, every payment provider and the theme, with their release notes. It has RSS and Atom feeds if you want to follow along.
- More comparisons. There are now eleven head-to-head pages, with Shopify, Squarespace and PrestaShop added this month, and the compare matrix covers 174 features across 14 platforms.
- Benchmarks from a dedicated server, and a plain-English performance page about why the store is fast.
- An About page, a branding page with logo downloads, and a 3D version of the KahunaCart van bouncing along the beach on the home page. Hold the mouse down and see what happens.
Grav Premium runs on KahunaCart now
One more thing you may have already noticed. At the end of September we moved the Grav Premium store off its old licensing server and onto KahunaCart, right here at getgrav.org/premium. All 2,353 existing licence keys came across and keep working, GPM downloads didn't change, and your account and keys are under your account page. It's the best test I could ask for, and it's a big part of why License Keys picked up so many features this month.
Go and look
The demo store resets every hour, so break whatever you like. The news page on kahunacart.com has a full post for every release mentioned here. And if you have a store idea that KahunaCart can't handle yet, tell me. Most of this month's work started that way. Come find us on the KahunaCart Discord or on chat.getgrav.org.
Andy