International tablecloth shop
Rescuing a stalled Hyva migration and rebuilding a broken ERP integration
A Dutch tablecloth retailer came to us after their previous developer burned through most of the budget going in the wrong direction. We untangled the ERP, finished the Hyva migration, and launched four international storefronts.
The situation
The client sells tablecloths, oilcloths, and table protectors online across Europe. Their Magento store had a Luma frontend and a custom ERP integration that handled something specific to their business: calculating how to cut rolls of material into the right shapes and lengths per order.
They had hired a developer to migrate to Hyva and rebuild the ERP connection. By the time they reached out to us, most of the budget was gone. The Hyva migration was half-finished, and the ERP integration had been rebuilt in a way that technically worked but was impossible to actually use. The admin interface was so complex that warehouse staff couldn't operate it.
ERP integration was unusable
It worked on a technical level, but the interface for managing cut calculations was so convoluted that the warehouse team couldn't use it day to day
Hyva migration was half done
Some pages were migrated, others weren't. The previous developer had left the codebase in a mixed state between Luma and Hyva
Budget was mostly spent
The previous developer had consumed the bulk of the project budget with limited usable output to show for it
The real problem
An ERP nobody could use
The tricky part of this business is cutting material from rolls. Customers order tablecloths in specific shapes and lengths, and the ERP needs to figure out how to cut them efficiently from stock rolls. The previous developer had built an interface for this that was technically correct but required too many manual steps. In practice, orders were getting stuck because the staff couldn't work through the interface fast enough.
Our plan
One week to assess, then build
We spent the first week going through everything the previous developer had left behind. Some of the Hyva migration code was salvageable, some wasn't. The ERP integration needed a different approach entirely: less manual input, more automation. Within a week we had the plan ready.
Code audit
Went through the existing codebase to figure out what to keep and what to redo
ERP rebuild
Redesigned the cutting logic to automate most of the manual steps that were blocking orders
Finish Hyva
Completed the Hyva migration using salvageable code from the previous attempt
Go international
Set up store views for Netherlands, France, Spain and Portugal with Channable feeds
The team
Sized to match the budget
The client had already burned through most of their budget with the previous developer, so we couldn't throw a big team at this. We put together a setup that fit what they could afford while still moving fast enough: one full time developer, one on-demand developer for support, and two senior developers as advisors who could step in when the team hit a wall.
It worked. The small team meant less overhead and faster decisions. When questions came up about the ERP logic or Magento internals, the senior advisors had answers the same day instead of it becoming a blocker.
1
Full time developer
Day to day development work
1
On-demand support
Available when the workload peaked
2
Senior developer advisors
Architecture decisions and unblocking the team when needed
We finished ahead of schedule. That doesn't happen often, and it coincided with us rolling out some AI-assisted development practices that we had been testing and validating for Magento work specifically.
For a while we were in a slightly awkward spot: the project was wrapping up sooner than anyone expected. But the client was happy with the pace, so we agreed to use the remaining time to add features that weren't in the original scope. We set up additional international store views and wired up Channable product feeds for all four countries, all within the original development estimate.
Go-live was uneventful. QA was short and boring. That sounds like nothing worth writing about, but if you've been through a messy launch, you know that boring is the best outcome you can hope for.
What actually happened
Finished early, delivered more
The ERP integration was the hard part. The original developer had built something that required a warehouse operator to manually configure cutting parameters for each order. We automated most of that logic so the system figures out the cuts on its own, and the operator only steps in for edge cases.
For the Hyva migration, we kept what was usable from the previous developer's code and rebuilt the rest. No point starting from zero when half the templates were already done correctly.
Under the hood
The hard part nobody sees
Ask David what the hardest part of this project was, and the answer isn't the ERP or the migration. It was a third party custom options module. The module handled product customization, things like tablecloth shape, size, and material, and it had bugs that needed fixing.
But you can't just rewrite a third party module. Change too much of someone else's code and you're stuck maintaining it yourself every time there's an upgrade. The actual challenge was finding the balance: fix what's broken, improve what matters, but touch as little as possible so the module still upgrades cleanly. It wasn't technically difficult. It was a discipline problem.
How we got to 3x faster
Switching from Luma to Hyva got us most of the way, but the last stretch was grunt work. Page by page, script by script.
Deferred third party scripts
Anything that didn't need to run on initial page load got deferred. Tracking pixels, chat widgets, analytics. They still load, just not in the way of the content the customer actually came for.
Image optimization across the board
Enabled WebP conversion through Cloudflare, served appropriately sized images instead of scaling down huge originals in the browser, and defined different resolutions per viewport. No more 2000px hero images loading on a phone.
Lazy loading below the fold
Content that sits below the fold gets lazy loaded, as long as it doesn't carry SEO value. The visible part of the page renders fast. Everything else loads as the customer scrolls.
The results
Four countries, one store, fast
3x
Faster than the old Luma store
4
Countries: NL, FR, ES, PT
↑
Conversions rising monthly since launch
< est.
Delivered within original budget
The store now runs on Hyva across four country-specific storefronts with Channable integrations feeding products to marketplaces and comparison shopping engines. The ERP integration handles cutting calculations automatically. Orders don't get stuck anymore.
Conversions have been climbing each month since launch. The client attributes most of that to page speed: pages that used to take three or four seconds now load in under a second.
Stuck with a half-finished migration?
We've picked up projects from other developers before. Tell us where things stand and we'll figure out what it takes to get you to launch.