Case study · E-commerce platform
Test the platform before a client's revenue depends on it.
DBAI builds stores on WooCommerce. Before moving a client to Payload CMS and its new commerce plugin, we built a complete store on it, ran Stripe test charges through it, wrote down every gap, and fixed each one in our own code. Then we loaded a luxury retail client's real catalog to see it at full size.
- Project
- Payload Commerce
- Industry
- E-commerce · WooCommerce replacement
- Context
- A sample store on the official Payload e-commerce template, built with a client's permission to use its catalog. Stripe runs in test mode, so the store takes no real orders.
The question
Could Payload and its commerce plugin replace WooCommerce for a real store? The plugin is in beta, so the answer had to come from a working store rather than from the documentation.
- Own the stack
- Code, data and hosting in accounts the store owns, with no plugin licences to renew and no platform fee on each sale.
- Keep hosting cheap
- The database bills for the time it is awake, so it has to sleep while nobody is shopping, even with crawlers visiting every page.
- Know the gaps first
- Every missing feature and every bug had to be found, costed and fixed before a client's sales relied on it.
The starting point
- Platform
- The official Payload e-commerce template and a beta plugin, pinned at version 3.90.2.
- Checkout
- The plugin creates a Stripe payment for the cart and records the order. Shipping, tax, discounts and order email are not included.
- Template
- It failed a production build on type errors, stored uploads on a disk Vercel does not keep, and hard-coded US dollars across the storefront.
The approach
Extend the plugin through its own options and hooks, never by forking it. Compute every price on the server. Record each decision and each test as it happens, so the verdict can be checked.
From template to store
01
Harden the template
Fixed the build errors, moved media to Vercel Blob served straight from its CDN, and fixed the template's robots file, preview path and cache refreshes.
02
Fill the commerce gaps
Shipping methods, a tax rate and promo codes in one server-side pricing hook, itemised on every order. An order confirmation email, sent once per order.
03
Fix the plugin's bugs
A server-side stock check, because the plugin's own check never runs. A fix for guest carts losing their secret at checkout. Page refreshes after stock changes that skip the plugin's hooks.
04
Load a real catalog
A client's live WooCommerce catalog, read through its public Store API and seeded into Payload with its variants, categories and product images.
AI in the delivery process
- Gated phases
- Claude Code built the store phase by phase from a written brief. Each phase stopped at a gate with its evidence, and the next began only on the owner's approval.
- Decisions on the record
- Every choice and workaround went into an append-only decisions log, with the plugin version it applies to and the hooks to re-test on any upgrade.
- Tested like an attacker
- Test payments were sent with a tampered cart total and with an out-of-stock item. The plugin ignored the tampered total. The out-of-stock item exposed the missing stock check, which we then fixed.
The stack
- PAYLOAD CMS
- Products, orders, customers and the admin, pinned to an exact version
- PAYLOAD COMMERCE PLUGIN
- Carts, payments, orders and transactions, extended through hooks rather than forked
- NEXT.JS + REACT
- The storefront, with product pages prebuilt and refreshed when a product changes
- NEON POSTGRES
- The database, capped at a quarter of a compute unit and asleep after five idle minutes
- STRIPE
- Payments and signature-checked webhooks, in test mode
- VERCEL + VERCEL BLOB
- Hosting, a rate limit on admin and API writes, and product images from the CDN
The live experience
The sample store runs in production on Vercel with the client's catalog and Payload's admin. Stripe stays in test mode, so it takes no real payments, and we show it to prospective clients on request rather than linking it here.
What shipped
A verdict and a working store. These figures are properties of the build, recorded in the project's test log between September and October 2026. They are not sales results.
- Verdict
- Not ready for a revenue-bearing store as the plugin ships. Ready for a pilot when our fixes are carried and versions are pinned.
- Checkout
- A test order with shipping, tax and a promo code charged $46.79, matching its itemised order to the cent. Each payment settles its order once.
- Catalog
- 172 products, 198 variants and 17 categories from the client's live store, every product page prebuilt and returning 200 in production.
- Effort
- An estimated four to six engineer-days on top of the official template, before Stripe Tax or a multi-currency storefront.
- Product
- The build is now Payload Commerce: a template for teams with a developer, or a DBAI integration fitted to the store.
Build with DBAI
Thinking about leaving WooCommerce?
We have tested the replacement. Bring us your catalog and we'll scope the move.
Book a Discovery Call