If you’ve tried to build an online store with AI doing the heavy lifting, you’ve probably hit the same wall we did with WordPress. The AI can write you a lovely product description. It can suggest a plugin. But ask it to change how your category pages actually work, and you’re suddenly negotiating with a page builder, three plugins that each hook into the same screen, and settings that live somewhere in the database where nobody - human or AI - can properly see them.
We recently built Shop Cards, a Pokemon trading card store for a client, which went live in October 2026 (the full project is in our Shop Cards case study). We’re massive Pokemon card fans ourselves, so it quickly became a passion project. We got to watch the store evolve through two sets of eyes at once: as the developers building it, and as the fans who use sites like it all the time. We built it on Bagisto, an open-source ecommerce platform built on Laravel, rather than WooCommerce. I’m genuinely glad we found it. This is why, including the rough edges we hit and how each one got fixed.
Getting the platform right matters more than ever. Australians spent $82.6 billion online in 2025, up 14% on the year before, and 24% of all retail spend now happens online, according to the Australia Post eCommerce Report 2026. A store you can keep improving quickly is worth a lot more than one you’re afraid to touch.
Why Not Shopify?
Shopify is the name most people think of first, so it’s worth saying why it never made the shortlist.
It’s a closed system. You get the themes, settings and app store Shopify allows, and the core platform is off limits. You can customise a lot within those walls, but you can’t change how Shopify itself works, and neither can an AI agent. That rules out exactly the kind of fixes we describe later in this article.
You pay rent on your own store, plus a cut of every sale. Shopify’s Australian plans start at $56 a month (or $42 a month billed annually) and climb to $575 a month for Advanced. Use a payment provider other than Shopify Payments and Shopify adds its own fee of up to 2% on every sale, on top of what the payment provider charges. The client was already paying for web hosting, and that host doesn’t charge a cent more whether the store makes ten sales a month or ten thousand. Paying a monthly fee just to keep the store online, plus a percentage as it grows, made no sense.
Shopify can switch your store off. This is the one that settled it. Shopify’s Terms of Service say it can “suspend or terminate your Account or the Terms of Service for any reason, without notice and at any time”, and that when it does, “your Shopify Store will be taken offline” and you “will no longer be able to access your Account”. Your store, your payments and your customer list all sit on the same platform, so one decision locks you out of all of them at once.
It doesn’t take wrongdoing for this to happen. Shopify can also hold back your payouts by placing a reserve on your account, and its own documentation on reserves lists the triggers, including:
- A sudden jump in sales, which it says can look like fraud. A new card set launching or a sale going well can do it.
- Pre-orders and long delivery times, which carry more risk of disputes. Pre-orders are standard for new trading card releases, and this one isn’t hypothetical: a friend’s store was shut down and his payments held because Shopify decided he’d opened pre-orders too early. Every listing clearly said it was a pre-order, the lead times were plainly stated, and his customers were happy to buy on that basis. None of that mattered.
- Chargebacks and refunds above what Shopify considers normal, even when the disputes are unfounded.
Then there are complaints. A trademark or counterfeit claim from a brand owner, or even a competitor, can see listings pulled or an account reviewed. Either way, a perfectly legitimate store can find itself frozen while it waits for support to respond.
Self-hosting doesn’t make you immune to every risk. A payment provider like Stripe can still hold funds. But your store stays online, your customer data stays yours, and if one payment provider becomes a problem, you can switch to another without rebuilding the business.
Why the Platform Matters More When AI Does the Building
When a developer builds a store by hand, the platform’s quirks are an annoyance. When AI does most of the building, they decide what’s possible.
An AI coding agent like Claude Code works by reading your project, changing files, running commands and checking the result. It does its best work when three things are true:
- Everything that matters lives in code. If a setting, layout or rule lives in files, the AI can read it, change it and explain exactly what it changed.
- The structure is predictable. Consistent conventions mean the AI’s first guess about where something lives is usually right.
- You can override anything without hacking the core. The AI can fix a problem properly instead of patching around it.
That’s the lens for everything below. Neither platform is bad software. They’re built for very different ways of working.
WordPress Keeps AI at Arm’s Length
WordPress was designed around a person clicking through an admin panel, and WooCommerce inherits that. A lot of what makes a WooCommerce store behave the way it does isn’t in code at all. Theme settings, page builder layouts, plugin options and widget configuration are stored as rows in the database, often as serialised blobs. An AI agent can’t read them the way it reads a file, can’t review a change to them, and neither can your version control.
Then there’s the plugins. A typical store runs dozens, each hooking into the same checkout, product page or admin screen. When something misbehaves, the AI has to trace behaviour across code it didn’t write and can’t sensibly change, because editing a premium plugin means losing its updates.
Every one of those plugins is also a way in. Patchstack found 91% of WordPress vulnerabilities are in plugins, which is why we’ve written about what quietly goes wrong when a WordPress site isn’t maintained. When the ACSC warned of a global hacking campaign in July, 13 of the 17 pieces of software being exploited were WordPress plugins. A store takes payments and holds customer details, so it has more to lose than most websites.
WordPress has started to answer this, and credit where it’s due. WordPress 6.9 added an Abilities API, and the official WordPress MCP Adapter lets AI agents discover and run those abilities. WooCommerce 10.9 added its own set for products and orders. But look at how it works: the AI can only do what someone has registered as an ability. It can update an order status or edit a product. It can’t redesign how your filtered category pages behave, fix a caching bug or restructure your URLs. WooCommerce’s own documentation still describes its MCP integration as a “developer preview” whose details “may change in future releases”.
That’s the sandbox. The AI gets a list of approved buttons to press, rather than the keys to the building. For a store owner who wants AI to genuinely build and improve the store, that’s the wrong way round. It’s the same reason we steer small businesses away from WordPress for ordinary websites and towards static sites. A full store needs a backend, though, so for ecommerce the real question is which one.
Why Bagisto Feels Built for AI
Bagisto is built on Laravel 12, the most popular PHP framework by a distance - the JetBrains State of PHP 2025 survey found 64% of PHP developers use Laravel, against 25% for WordPress. That matters for AI too: the models have seen enormous amounts of well-structured Laravel code, and it shows in how reliably they work with it.
Here’s what stood out once we were building.
Everything is code
Bagisto’s functionality is split into 41 self-contained packages, each following the same Laravel conventions: models, repositories, routes, views, config. The store’s landing pages, importers, URL structure and SEO rules all live in files. When the AI changes something, there’s a diff to read, and every change goes through Git to the live server.
You can override anything without touching the core
This is the big one. Laravel’s service container lets you swap any class for your own version with one line of configuration. When we needed Bagisto’s page cache or its structured data to behave differently, we didn’t edit Bagisto’s files. We extended the class, bound our version in its place, and moved on. Bagisto updates stay painless because the core is untouched.
Bagisto ships instructions for AI agents
This genuinely surprised me. Bagisto 2.4 ships an AGENTS.md and a CLAUDE.md in the project itself: plain instructions telling an AI agent how the codebase is organised, what the conventions are and which rules not to break. Bagisto also publishes an official collection of agent skills - 24 of them, covering things like payment gateways, shipping methods, themes and testing - that load into Claude Code, Cursor or Windsurf with a single command. We’ve argued before that skills beat bespoke AI agents, and seeing a platform vendor adopt them is a strong signal about where they’re heading.
It also comes with Laravel Boost, an MCP server that gives the AI a live view of the application’s database, routes and configuration, rather than leaving it to guess.
AI is built into the store too
For the day-to-day side, Bagisto includes a built-in AI package called Magic AI. It handles product content generation, image generation, review translation and personalised checkout messages. It works with OpenAI or Gemini, or with Ollama if you’d rather run a model on your own hardware and keep data in-house.
And it’s all free under the MIT licence, with over 28,000 stars on GitHub.
Running the Store by Talking to It
Everything above is about building the store. The bigger payoff came after. The owner already used Claude for just about everything else and wanted to run the store the same way: ask for a change in plain English and have it done. So we set it up that way. Bagisto’s full admin panel is still there, and works fine. Day to day, it mostly isn’t needed.
The content lives in files, not just the database
Every slab, price, set guide, landing page and product description lives in a plain file in the project: a spreadsheet with one row per slab, a prices file, a folder of researched set guides. Twenty-two custom Laravel commands load those files into Bagisto, and running a load again is always safe, so the files are the source of truth and the database follows them. That’s “everything is code” taken all the way to the content. Every price change and every rewritten description has a diff, a history and an undo.
Skills that know how this store works
Bagisto’s official skills teach an AI how Bagisto works. We wrote six more that teach it how Shop Cards works:
- Graded slabs: turn a saved Collectr portfolio page into store listings, one product per physical slab, filed under the right grader, grade, set and language.
- Product descriptions: research what’s really in each sealed box, write it in the brand voice, check it, then load it. The skill’s own rule is that a wrong pack count is worse than a dull sentence.
- Product photos: source full official photo galleries at up to 2000px, with every pick checked visually so the right variant of a product doesn’t get the wrong box.
- Set pages and landing pages: chase-card galleries, rarity breakdowns and researched guides for every set and collecting theme.
- Content refresh: one pass that finds everything that quietly goes stale - card counts, “latest set” wording, hit rankings, “New” badges - and updates it.
Each skill also carries the store’s house rules, like always writing “Pokemon” without the accent, so nobody has to repeat them in every request.
From a conversation to the live store
When the owner asks for a price change, Claude edits the prices file and commits it to GitHub. The live server checks GitHub every minute and deploys anything new (SSH is locked to the owner’s IP address, so the server pulls rather than GitHub pushing). Claude then runs the matching load command on the live server and checks the result. The commit for one recent change reads, in full: “Price: Glaceon ex 150/131 raw $439 (owner set)”.
Compare that with the WooCommerce MCP adapter above. There, the AI can press the buttons someone has registered for it. Here, the owner can ask for anything, from a price change to a whole new kind of landing page, and it goes through the same process every time: a change in a file, a reviewable commit, a deploy.
The Rough Edges We Hit (and How Each One Got Fixed)
No platform is perfect, and Bagisto’s defaults are tuned for a big dedicated server rather than an Australian small business on shared hosting. Here are the real problems we ran into. The pattern matters more than the details: every one was found, diagnosed and fixed in code, usually in an afternoon, and usually by the AI with a human reviewing.
The page cache that ignored filters
Bagisto’s full-page cache stores a copy of each page to serve it fast. The catch: it keys each copy by the page’s path and ignores the query string. So a filtered view like “English graded cards, PSA only” was served the cached copy of the unfiltered page. It never showed on the dev site, because the cache was off there. The fix was a small cache profile of about a dozen lines that skips caching for filtered and sorted views, bound in place of the default. Plain pages still load from cache.
A cache that made pages slower
A caching layer in one of Bagisto’s dependencies kept an index of every cache key in a single file, and rewrote that whole file - about 1 MB and 9,000 keys - on every cached database call. On a fast laptop, nobody would notice. On shared hosting, it meant 7 to 10 seconds to build a page after every cache clear. We found it by sampling the live server while a page built, rather than guessing. Switching that cache off took pages down to under two thirds of a second.
As it turned out, this one had already been fixed in a newer Bagisto release that we simply hadn’t updated to yet. More on how we found that out below.
Images resized on every visit
Bagisto resizes product images on the fly, through PHP, on every request. On shared hosting, each image waited 1 to 5 seconds in a queue. We changed it to save each resized image as a normal file the first time, and added a command that builds them all ahead of time. Phone load time on the homepage went from 9.6 seconds to 1.2 seconds.
Small bugs, fixed without forking
A couple of genuine bugs sat in Bagisto’s core. For example, the product structured data that Google reads double-escaped special characters, so “Scarlet & Violet” reached Google as Scarlet & Violet, and every product showed a star rating of zero from zero reviews. Both were fixed by extending one class, and all 100 product pages were then checked automatically.
The theme that didn’t deploy
Bagisto’s default .gitignore excludes custom theme folders, so our first deploy went live with the default theme. Easy to fix once spotted, and now a standing check before any first deploy.
None of these would have been fixable this way on WooCommerce. The equivalents there usually mean a support ticket to a plugin developer, a caching plugin with its own settings screen, or a workaround that breaks on the next update.
Sending the Fixes Back to Bagisto
Fixing a bug in your own store is one thing. Because Bagisto is open source, we could also report what we found so every other store gets the fix. We submitted four bugs in total, and AI made the whole process easy.
Before you file a bug on an open-source project, you’re expected to do your homework: check nobody has already reported it, and confirm it still exists in the latest code. That used to mean an hour of trawling through issues with different wording for the same problem. This time we simply asked the AI to do it. It connected to Bagisto’s GitHub, searched the existing issues and pull requests itself, and checked each bug against the current master branch to make sure it hadn’t already been fixed.
That’s how we found out about the cache. We were partway through writing up the report, profiling numbers and all, when the search turned up that it was already known and fixed in a newer release we hadn’t installed yet. Good news about the project, and a reminder to check the changelog and keep your platform updated before you start digging.
The other three hadn’t been reported, and still existed in master. Because we’d already fixed them in Shop Cards, our reports didn’t stop at “this is broken”. Each one included exact steps to reproduce the bug and detailed instructions on how to fix it, written up by the AI from the real fix and reviewed by us. That’s about the most useful bug report a maintainer can receive.
All three have now been accepted and merged into Bagisto’s official branch. Shop Cards is a little better, and so is every other Bagisto store from the next release on. Try doing that with a premium WooCommerce plugin whose code you’re not allowed to see.
Launching Without Taking Orders
One more thing we’d do again. Shop Cards went live with its checkout switched off. A single setting kept the whole store open to browse - products, filters, search, carts - while the checkout and the Stripe and PayPal hand-offs showed “Checkout opens soon”. That let us check every real page on the real server before a single payment could go wrong. Once Stripe’s live mode was tested end to end, we flipped the switch and checkout opened later that same day.
We also replaced Bagisto’s step-by-step checkout with a single-page one: contact details, delivery, shipping and payment beside the order summary, saving as you go, which is the layout most online shoppers already know. On a platform where the store is code, that’s a project, not a plugin hunt.
Where WooCommerce Still Wins
To be fair to WooCommerce, it’s still the better choice for some businesses:
- You want to build the store yourself without code. If you plan to set up and restyle the store on your own by installing themes and plugins, with nobody - human or AI - working in the codebase, WooCommerce makes that easier. Running the store is a different matter: once a Bagisto store is set up the way you need it, adding products, updating descriptions, uploading new photos and managing orders through its admin panel is every bit as easy as in WooCommerce.
- You need a niche integration today. WooCommerce’s plugin library is enormous. Bagisto’s extension marketplace is smaller, so an uncommon integration may need building.
- Your hosting is basic. Bagisto needs PHP 8.3 or newer, command-line access and scheduled tasks. Plenty of Australian hosts offer that on shared plans, but not all do.
For a store where you want to keep improving the experience and SEO, and you’re working with AI to do it, Bagisto is the stronger foundation. Having now built a real store on it, I’d make the same choice again without hesitation.
Frequently Asked Questions
Is Bagisto really free?
Yes. Bagisto is open source under the MIT licence, so there’s no licence fee and no per-sale platform cut. Your real costs are hosting, a payment gateway’s transaction fees, any paid extensions you choose, and the time to build and maintain the store - which is where AI makes the biggest difference.
Can Bagisto run on shared hosting?
Yes, Shop Cards does, on an Australian cPanel host. You need PHP 8.3 or newer, SSH access, Composer and the ability to run a scheduled task every minute. Expect to tune a few defaults for a smaller server, as we did with image resizing and caching, because out of the box Bagisto assumes more server headroom than shared hosting gives you.
Can I move my WooCommerce store to Bagisto?
Yes, with some planning. Bagisto has built-in importers for products, customers and tax rates, so a WooCommerce export can be reshaped to fit. Past orders, reviews and custom plugin data usually need a custom migration script. The step people forget is SEO: map every old product and category URL to its new address with permanent redirects before you switch.
Which payment gateways does Bagisto support for Australian stores?
Stripe and PayPal ship with Bagisto, so card payments are covered from day one. Through that one Stripe integration, Shop Cards takes cards, Apple Pay, Google Pay, Afterpay, Zip and Klarna: each method is switched on in the Stripe dashboard and the checkout offers whatever is enabled, so there’s no separate integration to build. Buy-now-pay-later approval depends on what you sell, so check your must-have payment methods early.
Is WooCommerce’s new AI support good enough?
It’s a good start for routine admin tasks. With the MCP adapter, an AI agent can look up orders, update order statuses and edit products. It can’t change how your store works - templates, caching, URL structure or checkout logic - and WooCommerce still labels the feature a developer preview. If you want AI to build and improve the store itself, you need a platform where the store is code.
Do I need to be a developer to run a Bagisto store?
Not for the day-to-day. Adding products, managing orders, running promotions and editing content all happen in Bagisto’s admin panel, much like WooCommerce. Changing how the store works does mean working in code, but with an AI coding agent and someone who can review the changes, that’s far more achievable than it used to be. With custom skills set up, an owner can even skip the admin panel and run the store by asking Claude, which is how Shop Cards is run.
If you’re weighing up a platform for a new online store, or thinking about moving off WooCommerce, get in touch to find out how YourStuff can help with ecommerce solutions built to keep improving.
Photo by Thimo Pedersen on Unsplash








