How a Tea Company Left Legacy PHP Behind and Built One Store for Retail and Wholesale
1,500 products, 23,000 customers, 47,000 orders, zero loss.
It started with a tea company older than most of the web.
The Tao of Tea, a Portland original since 1997.
The Tao of Tea delivers authentic, sustainable tea experiences from Portland, Oregon, with a deep commitment to organic farming and cultural diversity. The brand runs multiple tea houses and an extensive range of fine teas and blends, guided by purity, craftsmanship, and respect for the environment, values that made it a pioneer in sustainable, community-driven tea culture.
But first, meet the company in its founder's words.
A brand built on tea, and on the people around the table.
What happens when the website ages slower than the business grows?
One storefront, two very different buyers.
As the company grew, the custom-built PHP site could no longer keep up with a modern eCommerce business. Updates meant rebuilding features from scratch, daily management demanded technical expertise, and even simple reporting required fresh development.
- Smooth checkout
- Gifts to many addresses
- Rewards that return
- Their own pricing
- Bulk ordering, fast
- Pay-later options
The real question
Retail and wholesale buy the same tea in completely different ways, and the legacy PHP stack treated them identically while making every change a developer ticket. The question was how one store could serve both without doubling the work.
All in all, it came down to these 4 non-negotiables.
The custom PHP stack had to go, since updating or enhancing it meant rebuilding features from scratch.
Products, stock, customers, and orders had to become manageable without heavy manual effort or technical expertise.
Reporting had to stop demanding custom development for every simple feature the business needed.
Orders, logistics, and website updates had to keep flowing while the business kept growing.
Building it meant moving everything first, then adding what PHP never could.
Six modules, and both kinds of buyers got their store.
01 · The Migration
Eighteen years of history, moved intact.
The project opened with the critical step: a large-scale move onto WordPress and WooCommerce. Over 1,500 products, 23,000+ registered users, and 47,000+ historical orders migrated with zero data loss and perfect mapping of attributes, variations, customer records, and order history, with product data restructured so future edits run faster.
-
Everything moved 1,500+ products, 23,000+ users, 47,000+ orders.
-
Zero data loss Attributes, variations, and history mapped perfectly.
-
Restructured data Product additions and edits now far faster.
02 · Selling Both Ways
One checkout, priced for whoever’s buying.
Dynamic shipping rates follow order weight and destination, with real-time taxes and a multi-address checkout that sends items to multiple people in one order. Role- and category-based pricing adjusts to customer type, purchase history, and cart contents, while an AJAX-powered quick order tool lets wholesalers type quantities like 250 instead of clicking.
-
Smarter shipping Weight- and location-based rates, live taxes.
-
Dynamic pricing Retail and wholesale each see their own numbers.
-
Quick wholesale orders Bulk quantities typed once, filled fast.
03 · Loyalty & the Back Office
Repeat buyers rewarded, operations on autopilot.
A category-based reward system earns points on eligible purchases, redeemable on future orders, with wholesale perks like pay later plus visibility and pricing by customer type. Behind the scenes, automated invoice PDFs, custom packaging workflow settings, and a login-free tracking widget (Order ID plus billing email) keep post-purchase running itself.
-
Points and perks Rewards for retail, pay later for wholesale.
-
Paperwork automated Invoice PDFs and packaging workflows built in.
-
Login-free tracking Order status with just an ID and email.
From a site only developers could touch to a store the tea team runs.
Orders processed faster
Wholesale orders, quicker
More repeat purchases
Of the data moved intact
With the new store live, here's what stopped being a developer job.
From every change a ticket to a store that runs itself.
every change, a dev job
Features rebuilt from scratch to update anything
Daily management demanding technical expertise
Reporting that required fresh development
one store, both buyers
Products, stock, and orders managed in-house
Retail rewards and wholesale pay later, live
Login-free tracking and automated invoices
One store serving retail and wholesale buyers at once?
Price based on customer type, add one-screen wholesale ordering & multi-address gifting, on a store your own team updates without a developer.
- See how legacy stores reach WooCommerce
- Check what decades of orders need to move
- Explore retirements for aging platforms
Tech Partners Driving Business Outcomes
For 14+ years, we’ve partnered with ambitious businesses across industries that are investing seriously in growth and need websites built for what comes next.