Water Filters of America
A custom WordPress theme and an 800-product platform migration for a water filtration retailer — built without ever breaking the 20-year-old in-house Order Manager the business actually runs on.

The brief
A back office the business already trusted.
Water Filters of America sells filtration systems — countertop, whole-house, reverse osmosis — and behind the storefront sits an in-house Order Manager: a PHP/MySQL application, running since the mid-2000s, that staff use every day to process orders, manage customers, dispatch technicians, track vendors, and run support tickets. That system is the actual system of record. The website is just where orders come from.
The brief was to move the storefront off PrestaShop onto a custom WordPress and WooCommerce build — a new theme, a cleaner catalog, better SEO — without disturbing the Order Manager or the daily workflow built around it. The old PrestaShop store fed that back office through a bespoke integration module; move platforms and that pipeline disappears with it.
"The website is the easy part to replace. The Order Manager is where the business actually runs — that can't skip a beat."
So the project was really two builds in one: a modern WooCommerce storefront on the front end, and a faithful, more resilient rebuild of a decades-old integration on the back.
The challenge
Don't touch the system that runs the business.
Migrating a storefront is routine. Migrating one while a live legacy back office depends on it, with no framework and no vendor to call, is a different problem.
- ✓A live, load-bearing legacy system. The Order Manager handles customers, technicians, vendors, and support tickets in daily use. A schema mismatch or a dropped order doesn't just look bad — it breaks fulfillment.
- ✓No WooCommerce equivalent existed. Orders reached the Order Manager through a bespoke PrestaShop module written years earlier. Moving to WooCommerce meant that entire bridge had to be rebuilt from zero, matching the Order Manager's exact table structure and workflow.
- ✓Checkout can't wait on a legacy database. The old integration ran synchronously inside the admin request. A slow or unreachable Order Manager connection could never be allowed to add latency — or fail outright — a customer's checkout.
And underneath all of it, ~800 products — with variations, categories, and years of accumulated images and stock data — had to move to WooCommerce without breaking search rankings or losing inventory accuracy.
The approach
Understand the legacy system before replacing anything around it.
Nothing shipped to the storefront until the Order Manager's schema, and the logic of the module that used to feed it, were fully understood.
- 01
Map the real system of record
Before touching the storefront, we read the in-house Order Manager end to end — a PHP/MySQL back office running since the mid-2000s that staff use daily for orders, customers, technicians, vendors, and support tickets. It wasn't going anywhere, so everything else had to bend around it.
- 02
Migrate the catalog
A dry-run-first Node.js migration script pulled ~800 products, combinations, categories, images, and stock from PrestaShop's Webservice API and wrote them into WooCommerce via its REST API — matched by SKU, resumable, and safe to re-run without duplicating anything.
- 03
Build the custom theme
A bespoke WordPress theme for Water Filters of America, built on Webicode's own theme framework — widgetized layouts, custom page templates, and a full WooCommerce storefront skin.
- 04
Reverse-engineer the old bridge
The legacy PrestaShop store fed the Order Manager through a bespoke integration module. We read its logic — customer/address/product resolution, order header/detail/payment writes — and ported it faithfully rather than guessing at the Order Manager's schema.
- 05
Rebuild it async and idempotent
The new WooCommerce plugin hooks order-status changes (catching both gateway payments and manually-marked offline orders), defers the actual sync to Action Scheduler, and no-ops safely if an order was already migrated — so a slow legacy database can never hold up a customer's checkout.
- 06
Ship it HPOS-safe
Written entirely against WooCommerce's WC_Order/CRUD API — never raw postmeta — with compatibility explicitly declared for High-Performance Order Storage, so the integration keeps working as WooCommerce's own data layer evolves.
Selected screens
The storefront, and the bridge behind it.




Live screenshots from waterfiltersofamerica.com — the storefront, product, and category templates. The Order Manager Sync settings screen sits behind wp-admin and isn't publicly reachable, so that shot is a placeholder pending capture.
The results
What shipped.
Full PrestaShop catalog — variations, categories, images, and stock — moved into WooCommerce, matched by SKU and safe to re-run without duplicates.
Purpose-built WooCommerce ↔ Order Manager cross-reference tables, replacing the old PrestaShop-only mapping so IDs never collide.
Every Order Manager write happens on Action Scheduler after the request completes — an unreachable legacy database can never slow down or fail a sale.
Orders sync whether a gateway auto-completes them or staff mark an offline payment (BACS, cheque, COD) Processing by hand — the same trigger catches both.
Tech stack
Modern front end.
Untouched back office.
The Order Manager itself was never rewritten — only the pipeline feeding it. Every table name, disposition code, and payment field in the sync plugin mirrors the Order Manager's own schema, so from the operations team's side, nothing about their daily workflow changed.
"The interesting engineering problem here wasn't the new storefront — it was reading a stranger's decade-old integration module closely enough to rebuild it safer, without changing what the business on the other end actually sees."
Ready to start?
Have a legacy system you can't afford to break? Let us build it.
Tell us what you are building and we will reply within 24 hours with honest, practical next steps.


