Case study
A small feed script that ended up keeping a furniture dropship shop's stock and products in line with its suppliers for four years.
The problem
A Dutch webshop selling design furniture, run as dropshipping - it doesn't hold stock itself, it sells what its suppliers have and forwards the orders on. The shop ran on CCV Shop, a hosted Dutch platform.
The shop didn't rely on one supplier but on several - around four - and each delivered its catalogue its own way, in its own format. The data didn't come as one tidy file either: stock arrived separately from the product information and descriptions. Keeping the shop in line with all of that by hand isn't doable. Stock changes all the time, and selling something a supplier no longer has is exactly what you don't want. The ready-made CCV import add-ons either didn't fit or cost a fair bit per month, and he wanted his own setup kept private, not published on a marketplace.
The approach
It started as a small fixed-price job. CCV Shop has an API, so instead of an add-on I wrote a script that pulls the supplier feeds and updates the shop on a schedule, matched on the supplier's article number. How often it ran depended on the number of products.
That was the first version. It kept growing from there as the shop did.
The system built
- A scheduled pipeline against the CCV Shop API. The work started before anything reached the shop: each supplier's data came as separate feeds - stock in one, product information and descriptions in others - and these had to be combined into one record per product first.
- Per-feed filters, so only certain categories and product types were imported rather than the supplier's whole catalogue.
- Product names and descriptions rewritten to be unique. This was before AI, so it was done with rules in code, not a model - reworded so the shop wasn't running the exact same text as every other reseller of the same furniture.
- Automatic translation of new products into Dutch through the DeepL API.
- Stock and price updates per product, with rules for the exceptions: specific SKUs excluded from price updates, products without an image taken offline.
- The suppliers each delivered their data differently - one over FTP, another as an XML feed, another fetched from an API. Different formats, different logins, different schedules, all pulled into the same pipeline.
The outcome
It ran for about four years, from 2019 into 2023. Most of the time it sat in the background and did its job. The rest of the time a feed changed without warning, or a supplier moved a file, or the sync stopped - and then it's an urgent mail and a fix that same day.
That's the real shape of this kind of work. Not one clean delivery, but something that has to keep matching reality while the suppliers and the shop both keep changing underneath it. A small feed script to begin with, four years of keeping a shop's stock honest in the end.
Stack
- PHP
- CCV Shop API
- Scheduled CSV feed sync (cron)
- Multiple suppliers, mixed transports (FTP / XML / API)
- Merging multiple supplier feeds (stock + product data)
- Per-feed category/type filtering
- Rule-based product name & description rewriting
- DeepL translation API
Get in touch
Want a system that holds up at this kind of scale?
Send me a short email about what's breaking, what's slow, and who's currently doing the work. I'll reply within a working day.
Most things start with a short email - info@pawon.dev.