Case study

Een klein feed-script dat uiteindelijk vier jaar lang de voorraad en producten van een meubel-dropshipshop in lijn hield met de leveranciers.

Opdracht 2019 - 2023
Duur Ongeveer vier jaar
Branche E-commerce / dropshipping
Klant Design-meubel dropship-webshop, NL (geanonimiseerd)

Het probleem

Een Nederlandse webshop in designmeubels, gerund als dropshipping - hij houdt zelf geen voorraad, maar verkoopt wat de leveranciers hebben en zet de bestellingen door. De shop draaide op CCV Shop, een gehost Nederlands platform.

De shop draaide niet op één leverancier maar op meerdere - een stuk of vier - en elk leverde zijn catalogus op zijn eigen manier aan, in zijn eigen formaat. De data kwam ook niet als één net bestand binnen: voorraad kwam los van de productinformatie en beschrijvingen. Dat allemaal met de hand bijhouden is niet te doen. Voorraad verandert continu, en iets verkopen dat een leverancier niet meer heeft is precies wat je niet wilt. De kant-en-klare CCV-import add-ons pasten niet of kostten flink wat per maand, en hij wilde een eigen opzet die privé bleef, niet gepubliceerd op een marketplace.

De aanpak

Het begon als een kleine fixed-price klus. CCV Shop heeft een API, dus in plaats van een add-on schreef ik een script dat de leverancier-feeds ophaalt en de shop volgens een schema bijwerkt, gematcht op het artikelnummer van de leverancier. Hoe vaak het draaide hing af van het aantal producten.

Dat was de eerste versie. Vanaf daar groeide het mee met de shop.

Het gebouwde systeem

  • Een geplande pijplijn tegen de CCV Shop API. Het werk begon voordat er iets de shop bereikte: de data van elke leverancier kwam als losse feeds - voorraad in de ene, productinformatie en beschrijvingen in de andere - en die moesten eerst worden samengevoegd tot één record per product.
  • Filters per feed, zodat alleen bepaalde categorieën en producttypes werden geïmporteerd in plaats van de hele catalogus van de leverancier.
  • Productnamen en -beschrijvingen herschreven om uniek te zijn. Dit was vóór AI, dus het ging met regels in code, niet met een model - herschreven zodat de shop niet exact dezelfde tekst draaide als elke andere wederverkoper van hetzelfde meubel.
  • Automatische vertaling van nieuwe producten naar het Nederlands via de DeepL API.
  • Voorraad- en prijsupdates per product, met regels voor de uitzonderingen: bepaalde SKU's uitgesloten van prijsupdates, producten zonder afbeelding offline gehaald.
  • Elke leverancier leverde zijn data anders aan - de een via FTP, de ander als XML-feed, weer een ander op te halen via een API. Andere formaten, andere logins, andere schema's, allemaal de pijplijn in getrokken.

Het resultaat

Het draaide zo'n vier jaar, van 2019 tot in 2023. Het grootste deel van de tijd deed het zijn werk op de achtergrond. De rest van de tijd veranderde een feed zonder waarschuwing, of verplaatste een leverancier een bestand, of stopte de sync - en dan is het een spoedmail en een fix diezelfde dag.

Geen eenmalige oplevering dus, maar een script dat bleef meebewegen terwijl de leveranciers en de shop veranderden.

Stack

  • PHP
  • CCV Shop API
  • Geplande CSV-feed sync (cron)
  • Meerdere leveranciers, gemengde transports (FTP / XML / API)
  • Samenvoegen van meerdere leverancier-feeds (voorraad + productdata)
  • Filtering op categorie/type per feed
  • Regel-gebaseerde herschrijving van productnamen & -beschrijvingen
  • DeepL vertaal-API

Neem contact op

Wil je een systeem dat dit soort schaal aankan?

Stuur me een korte mail over wat er stuk is, wat traag is en wie er op dit moment aan werkt. Ik antwoord binnen een werkdag.