01 · The constraint
Shared cPanel hosting, no SSH, and a live store with paying customers on the other side of the cut-over. The paid restore path for the migration plugin was unavailable, so the whole import had to run through the All-in-One WP Migration JavaScript API: chunked uploads, in the browser, against a host with default PHP limits.
02 · What I did
- 1Upgraded PHP 7 → 8 and raised MultiPHP INI limits for upload size, POST size and memory so the chunked import could complete.
- 2Carried 293 products, 1,156 variations, ~5,100 orders, 55 active plugins and a 213MB database across intact, then verified counts on both sides.
- 3Traced live Stripe webhook failures to a signing-secret mismatch between environments, fixed it, and reconciled the orders paid during the outage window.
- 4Diagnosed WooCommerce transactional email bypassing the mail service for the default wp_mail handler.
- 5Pre-launch QA caught GST calculated without shipping, a missing AU Terms & Conditions page and SKU-prefix collisions in search.
03 · What it cost
Roughly two weeks, one outage window during which orders still landed in Stripe but not in WooCommerce, and a handover document the client's team can follow without me: the correct cache-clear sequence, where the limits live, and what to check first when a webhook goes quiet.





