Deforce Medical: B2B-webshop met Adsolut-koppeling
Een B2B-webshop voor een medische groothandel, met een op maat gebouwde bi-directionele koppeling naar het ERP-pakket Adsolut, waardoor het handmatig overtypen van orders volledig verdween.
De klant
Deforce Medical is een medische groothandel die levert aan thuisverpleegkundigen en artsen. Hun catalogus telt zo'n 6.000 producten, met prijzen en kortingen die per klant kunnen verschillen. Het ERP-pakket Adsolut is bij hen de bron van waarheid: daar staan de artikelen, de voorraad, de klantafspraken en de volledige orderhistoriek.
Dat maakt hun webshop een ander beestje dan een doorsnee online winkel. Het is geen catalogus met een winkelmandje, maar een venster op een ERP-systeem en alles wat de klant online doet, moet daar correct in terechtkomen.
De opdracht
Ik werd voor dit project ingeschakeld door Muskedeer, dat de projectleiding op zich nam. Mijn rol: de volledige technische realisatie, van de webshop zelf tot alle koppelingen, de migratie en het hostingbeheer.
De vraag zoals ze binnenkwam was helder: bouw de nieuwe webshop van A tot Z, inclusief de koppelingen.
Wat er écht aan de hand was
De bestaande webshop draaide op WooCommerce, met een koppeling naar Adsolut die er in theorie voor moest zorgen dat orders automatisch werden doorgestuurd. In de praktijk liep die push structureel mis. Het gevolg: orders die niet doorkwamen, werden manueel overgetypt in Adsolut. Dat kostte niet alleen tijd, het zorgde ook voor een tweede golf aan werk, klanten die belden omdat hun bestelling nergens te bekennen was, vragen bij customer service, correcties achteraf.
Het echte probleem was daarmee niet de webshop. Het was dat er geen enkel zicht was op wát er misging, en geen enkele manier om het recht te zetten zonder de gegevens opnieuw in te tikken. Een order verdween in een zwart gat en iemand moest achteraf raden waarom.
Dat herformuleerde de opdracht voor mij. Niet "maak een mooiere webshop", maar: zorg dat orders betrouwbaar in Adsolut geraken, en geef customer service de controle over de gevallen waarin dat niet lukt.
De aanpak
Waarom geen standaardplatform. Deforce had het standaardplatform al geprobeerd, daar kwamen ze net vandaan. De reden dat het daar strandde, is structureel: bij een shop als deze bepaalt het ERP de prijzen, de kortingen en de klantgegevens, terwijl platformen als WooCommerce en Shopify ervan uitgaan dat zíj de bron van waarheid zijn. Elke klantspecifieke prijsafspraak wordt dan een gevecht met het datamodel. Daar kwam bij dat de site ook een uitgebreid contentgedeelte moest dragen. Daarom bouwde ik de shop in een eigen CMS op Laravel, met Livewire voor de interactieve onderdelen, een opzet waarin de koppeling geen plug-in is maar het fundament.
Een bi-directionele koppeling met Adsolut. Vanuit Adsolut synchroniseren catalogi, producten, prijzen, voorraad en kortingen naar de webshop. Vanuit de webshop gaan orders en nieuwe klanten terug naar Adsolut.
Vastgelopen orders zichtbaar en herstelbaar maken. Een koppeling die nooit faalt, bestaat niet. Wat wél kan, is ervoor zorgen dat een mislukt order niet verdwijnt. Orders die niet doorgaan, worden in het CMS uitgelicht met een duidelijke reden erbij. Customer service kan het order daar aanpassen en opnieuw versturen. Geen overtypwerk meer, en geen giswerk over de oorzaak.
Het probleem van de dubbele klanten. Kort na de livegang bleken er klanten dubbel te worden aangemaakt in Adsolut. De oorzaak lag in de historisch gegroeide data: hoofdletters die niet overeenkwamen, spaties die niet weggeknipt waren. Vervelend detail: in Adsolut kunnen klanten niet verwijderd worden, dus elke dubbel bleef als vervuiling achter.
De oplossing werd geen slimmer matching-algoritme, bij dit soort data haal je nooit honderd procent zekerheid. In plaats daarvan legde ik de twijfel expliciet bij de mens. Wanneer het systeem vermoedt dat er een nieuwe klant aangemaakt moet worden, wordt het order geflagd met die vraag erbij. Customer service kiest dan: koppelen aan een bestaande klant, live opgezocht in Adsolut, of toch een nieuwe klant aanmaken. Daarna gaat het order gewoon door. Sindsdien worden er geen dubbels meer aangemaakt.
Orderhistoriek die pas laadt wanneer ze nodig is. Bestaande klanten moesten hun volledige historiek terugvinden in de nieuwe shop. Die vooraf importeren was geen optie: een groot deel van het klantenbestand kocht ooit eenmalig iets, en die orders zouden de databank vullen zonder ooit geraadpleegd te worden. Wanneer een bestaande klant voor het eerst inlogt, wordt daarom gecontroleerd of hij of zij in Adsolut gekend is, waarna zijn of haar orders via een queue worden opgehaald. Omdat de synchronisatie van orders wat tijd in beslag neemt, gebeurt dit bewust niet live. De gebruiker kan blijven doorklikken en beschikt binnen de minuut over zijn of haar historiek.
Maatwerkformulieren voor processen die geen bestelling zijn. Een sondevoedingsaanvraag is geen product in een winkelmandje. De patiënt of de thuisverpleegkundige vertrekt van een voedingsschema van de arts, met specifieke parameters en eisen. Dat formulier bouwde ik uit over vijf stappen, zodat de aanvrager het overzicht behoudt. Daarnaast kwamen er aparte formulieren voor opleidingen en voor bestellingen ten voordele van het goede doel.
Betaling, verzending en migratie. Mollie voor de betalingen, Sendcloud voor de verzending. De migratie van de oude naar de nieuwe shop, zo'n 6.000 producten en 75.000 klantrecords, gebeurde vlak voor de livegang, zonder downtime.
Het resultaat
Het handmatig overtypen van orders is haast volledig verdwenen. Waar bestellingen vroeger in een zwart gat konden belanden, komen ze nu ofwel meteen correct in Adsolut terecht, ofwel zichtbaar en met reden in het CMS, waar customer service ze zelf rechtzet.
De orderafhandeling neemt nu minder dan de helft van de tijd in. Daar komt een tweede effect bij dat minstens even belangrijk is: er zijn veel minder telefoons en supportvragen van klanten die niet weten waar hun bestelling blijft.
De webshop draait ondertussen in productie. Ik blijf betrokken voor onderhoud en voor uitbreidingen die er stap voor stap bijkomen.
Technisch overzicht
- Basis
- Eigen CMS op Laravel, met Livewire & Alpine.js
- ERP
- Adsolut, bi-directionele koppeling op maat
- Betalingen
- Mollie
- Verzending
- Sendcloud
- Omvang migratie
- ~6.000 producten, ~75.000 klantrecords, zonder downtime
Het was een plezier om samen te werken met Pieter-Jan. Staat open voor feedback en is altijd pro-actief met oplossing. We zijn zeer tevreden met het resultaat van onze nieuwe website. Vijf sterren van mij en ik zou Pieter-Jan zeker aanraden!
Werkt uw webshop tegen uw ERP in plaats van ermee samen?
Dat is zelden een probleem van het platform alleen. Meestal zit het in de aannames over waar uw data thuishoort, en in wat er gebeurt op het moment dat een koppeling faalt.
Daar denk ik graag met u over mee.