Webshopkoppeling
Webshop koppeling laten maken met de systemen die je al hebt
Je webshop blijft staan waar hij staat, net als je ERP, je boekhouding en je magazijnsysteem. Wij bouwen de koppeling ertussen op de API van jouw platform en de regels van jouw bedrijf, en draaien en bewaken hem daarna.
Waarmee je een webshop koppelt
Een webshop heeft zes kanten waar gegevens vandaan komen of naartoe gaan. Welke je koppelt hangt af van waar nu het overtypen zit.
| Kant | Systemen | Waarop gematcht wordt | Wat er over de lijn gaat |
|---|---|---|---|
| ERP | Exact Online, Business Central, SAP Business One, AFAS | artikelnummer, debiteurnummer | orders heen; prijzen, voorraad en orderstatus terug |
| Boekhouding | SnelStart, Twinfield, Moneybird | factuurnummer, btw-code, grootboekrekening | facturen, betalingen, creditnota's |
| WMS en vervoerder | Picqer, Monta, Sendcloud | ordernummer, SKU of EAN | pickopdracht heen; verzendstatus en trackcode terug |
| PIM | Akeneo, Pimcore | SKU | teksten, afbeeldingen en kenmerken, per taal |
| Leveranciers | CSV, XML of API van de leverancier | artikelnummer van de leverancier of EAN | voorraad, levertijd, inkoopprijs |
| Inkoopsysteem van je klant | OCI en PunchOut | de sessie van de inkoper | winkelmand terug naar het inkoopsysteem |
Business Central is de opvolger van Navision (Dynamics NAV). Alle systemen, ook de pakketten die hier niet genoemd zijn, staan op het overzicht van koppelingen.
Eén artikel, vier codes
De kolom "waarop gematcht wordt" is waar het in de praktijk op vastloopt. Hetzelfde koppelstuk heeft in elk systeem een andere code:
| Systeem | Code |
|---|---|
| Webshop | SKU KS-22-MS |
| ERP | artikelnummer 10482 |
| Leverancier | bestelnummer 44-1082 |
| WMS en vervoerder | EAN 8712345678906 |
Vier codes voor één artikel, en geen systeem kent ze alle vier. De koppeling houdt een kruistabel bij waarin ze naast elkaar staan. Een artikel zonder regel in die tabel gaat naar de controlelijst. Het wordt niet stil overgeslagen. Wat je als sleutel kiest en waarom staat in koppelen op SKU of op EAN.
Wat er heen en terug gaat
Eén order raakt op een dag vijf systemen. Een voorbeeld met order 20418, 12 stuks van KS-22-MS:
| Tijd | Wat er gebeurt | Van, naar | Velden |
|---|---|---|---|
| 10:02 | de klant rondt de bestelling af | webshop naar koppeling | ordernummer, regels, adressen, betaalstatus |
| 10:03 | de order staat in het ERP | koppeling naar ERP | debiteur, artikel per regel, btw-code, betaalconditie |
| 10:04 | de pickopdracht staat klaar | ERP naar WMS | artikel, aantal, locatie |
| 14:10 | het pakket is gescand | WMS naar koppeling | vervoerder, trackcode |
| 14:11 | de klant krijgt een verzendmail | koppeling naar webshop | status, trackcode, volglink |
| 23:00 | de factuur staat in de boekhouding | ERP naar boekhouding | factuurnummer, grootboekrekening, btw-bedrag |
Zes overdrachten, en bij elke overdracht verandert de vorm van de gegevens. Het bericht van 14:11 ziet er zo uit:
{
"order": "20418",
"status": "verzonden",
"zendingen": [
{
"vervoerder": "PostNL",
"trackcode": "3SABCD0123456",
"regels": [ { "sku": "KS-22-MS", "aantal": 12 } ]
}
]
}
zendingen is een lijst. Bij een deellevering staan er twee in, elk met een eigen trackcode en eigen regels, en de webshop toont de status per zending. Een koppeling die één trackcode per order doorgeeft, overschrijft bij de tweede zending de eerste.
Achter die ene order zitten vijf stromen, elk met een eigen richting en een eigen tempo:
- Productdata: van PIM, ERP of leverancier naar de webshop, bij wijziging of één keer per nacht.
- Voorraad en beschikbaarheid: naar de webshop, bij elke mutatie of om de paar minuten.
- Prijzen en klantafspraken: naar de webshop, meestal één keer per nacht.
- Orders, klanten en verzending: uit de webshop, direct na de bestelling, met de status terug.
- OCI en PunchOut: een sessie vanuit het inkoopsysteem van je klant.
Welke stroom direct moet en welke 's nachts kan, staat in realtime of batch.
Welk webshopplatform je ook draait
Elk platform geeft zijn gegevens op een eigen manier vrij en stelt eigen grenzen. Die grenzen bepalen hoe de koppeling wordt opgezet.
| Platform | Toegang | Gedocumenteerde grens |
|---|---|---|
| WooCommerce | REST API met sleutel en geheim | standaard 10 items per pagina en 100 objecten per batch; een webhook wordt na 5 mislukte afleveringen op rij uitgeschakeld |
| Shopify | GraphQL Admin API | 100 punten per seconde, 200 op Advanced, 1.000 op Plus; een webhook moet binnen 5 seconden beantwoord zijn |
| Magento | REST API met bulk-endpoints | een bulk-aanroep geeft een bulk_uuid terug en wordt verwerkt door een berichtenwachtrij op de server |
| Shopware | Admin API met Sync API | /api/_action/sync schrijft meerdere records in één aanroep, altijd als upsert |
| Lightspeed | REST API | 300 aanroepen per 5 minuten, 3.000 per uur, 12.000 per dag |
| CCV Shop | REST API met HMAC-handtekening | 150 per minuut op leesaanroepen, 100 op schrijfaanroepen; standaard 25 items per pagina |
| BigCommerce | REST API | 150 aanroepen per 30 seconden op Standard en Plus, 450 op Pro |
| PrestaShop | Webservice | een lijst geeft alleen ID's terug; velden vraag je op met display, pagina's met limit |
De getallen zijn op 3 oktober 2026 nagelezen in de documentatie van elk platform, waaronder die van Shopify, Lightspeed en WooCommerce.
8.000 artikelen bijwerken, op drie platformen
Dezelfde taak, de voorraad van 8.000 artikelen in de webshop zetten, kost per platform een ander aantal aanroepen:
- Lightspeed, 100 varianten per bulkaanroep (
PUT /variants/bulk.json). 8.000 gedeeld door 100 is 80 aanroepen. Per artikel apart zijn het er 8.000: 2 uur en 40 minuten bij de grens van 3.000 per uur, en 8.000 van de 12.000 aanroepen van die dag. - WooCommerce, 100 artikelen per batch. 8.000 gedeeld door 100 is 80 aanroepen.
- Shopify, 250 voorraadregels per aanroep. 8.000 gedeeld door 250 is 32 aanroepen.
Het verschil zit dus in hoe de koppeling schrijft, niet alleen in het platform. Op Lightspeed gaat ook de bulkaanroep in porties van 100, en bij 400 gewijzigde artikelen zijn dat 4 aanroepen. Is de webshop gekoppeld aan de Lightspeed-kassa (R-Series), dan zijn artikelen en varianten via de webshop-API alleen te lezen en loopt het schrijven via de kassa-API. De som voor je eigen aantallen maak je met doorvoer berekenen.
De grens bij webhooks werkt de andere kant op. Shopify wacht 5 seconden op een antwoord en probeert het bij een fout nog 8 keer in 4 uur. WooCommerce schakelt een webhook na 5 mislukte afleveringen op rij uit, en daarna komt er geen order meer binnen zonder dat iets een fout meldt. De koppeling beantwoordt een webhook daarom direct en verwerkt de order daarna vanuit de wachtrij. Elke nacht vergelijkt hij de orders in de webshop met wat er is aangekomen. Meer hierover in wat is een webhook.
Velden die het platform niet heeft
Een product in WooCommerce heeft een voorraadaantal (stock_quantity) en een voorraadstatus (stock_status), en geen veld voor de verwachte leverdatum van je leverancier. Een artikel met voorraad 0 dat morgen binnenkomt en een artikel met voorraad 0 dat over zes weken komt, zien er in de webshop hetzelfde uit. De datum staat wel in het bestand van de leverancier of in de inkooporder in het ERP.
De koppeling zet zo'n waarde in een eigen veld van het platform: een metafield bij Shopify, meta_data bij WooCommerce, een eigen attribuut bij Magento. Voor WooCommerce ziet de update van één artikel er zo uit:
{
"sku": "KS-22-MS",
"stock_quantity": 0,
"meta_data": [
{ "key": "verwachte_leverdatum", "value": "2026-10-14" }
]
}
Het thema van de webshop toont het veld daarna als "verwacht op 14 oktober". Hetzelfde geldt voor elke waarde waar het platform geen standaardveld voor heeft, zoals het bestelnummer 44-1082 van de leverancier: de koppeling vult een eigen veld. Hoe dat voor levertijden werkt staat bij levertijd synchroniseren.
Plugin, koppelplatform of maatwerk
Een plugin leest één bron in één formaat. Dat gaat goed tot de tweede leverancier. Dit zijn de eerste regels uit de bestanden van twee leveranciers voor hetzelfde artikel:
leverancier A (puntkomma, eigen bestelnummer, levertijd als duur)
artikelnr;voorraad;levertijd
44-1082;14;2 werkdagen
leverancier B (komma, EAN, levertijd als datum)
"ean","stock","eta"
"8712345678906","9","14-10-2026"
Drie verschillen in twee regels: het scheidingsteken, de sleutel en de vorm van de levertijd. "2 werkdagen" en "14-10-2026" zijn pas te vergelijken met een kalender van werkdagen erbij. Daarbovenop komt de vraag wat er geldt als beide leveranciers het artikel voeren: 14 plus 9 is 23 stuks, of alleen de 14 van de leverancier met de kortste levertijd. Een plugin met één mapping heeft voor die keuze geen instelling.
| Plugin of app | Koppelplatform | Maatwerk | |
|---|---|---|---|
| Bronnen | één feed, één formaat | de systemen uit de catalogus van het platform | elk systeem waar gegevens gecontroleerd in en uit kunnen |
| Velden | vaste set van de maker | instelbaar binnen het platform, prijzen per klantgroep | jouw velden, ook vrije velden |
| Kostenopbouw | een licentie per webshop | per stroom, per paar systemen, per maand | een vaste bouwprijs en een vast bedrag per maand |
| Bij een fout | een regel in het log van de webshop | een foutenlijst in het platform | wachtrij, herhaling en een controlelijst met de reden |
Maatwerk is aan de orde zodra een regel van jouw bedrijf niet in een instelling past. Wat dat inhoudt staat op maatwerk koppeling laten maken. De technische vergelijkingen staan in maatwerk of plugin en koppeling of koppelplatform.
Meerdere kanalen op één voorraad
Naast de webshop verkoop je via bol, een tweede shop of een B2B-portaal. Alle kanalen verkopen uit dezelfde voorraad en ze weten niet van elkaar wat er net is verkocht.
Twee regels houden dat kloppend. De eerste is een buffer per kanaal: van artikel 10482 liggen 14 stuks vrij, de webshop toont 14 en bol krijgt 12. De 2 stuks verschil vangen de minuten op tussen een verkoop op het ene kanaal en de update op het andere. De tweede is een voorvoegsel per kanaal op het ordernummer: WS-10482 en BOL-10482 zijn in het ERP twee orders, ook al gaf elk kanaal zelf het nummer 10482 uit.
Hoe groot de buffer moet zijn staat bij veiligheidsvoorraad. Wat er gebeurt als het toch misgaat, staat in twee klanten, het laatste exemplaar.
Wat je krijgt
Wij bouwen de koppeling voor een vaste prijs en hosten, draaien en bewaken hem daarna voor een vast bedrag per maand. De opbouw daarvan staat op koppeling laten bouwen.
De koppeling draait eerst als dry run: hij verwerkt de echte gegevens en schrijft niets, zodat je per artikel ziet wat er zou veranderen. Daarna kies je per stroom of wijzigingen op jouw akkoord wachten of direct doorgaan. In het dashboard staat per run wat er is gewijzigd, bijvoorbeeld artikel 10482, voorraad, van 14 naar 8, en wat er op de controlelijst staat met de reden erbij. Past een platform zijn API aan, dan passen wij de koppeling aan.
Vertel welk platform je draait en welke systemen erachter staan. Je hoort welke stromen er zijn en waar de grenzen van jouw platform liggen.
Veelgestelde vragen
Wat is een webshopkoppeling?
Een webshopkoppeling is de verbinding die gegevens tussen je webshop en een ander systeem overzet zonder dat iemand ze overtypt: orders naar het ERP of de boekhouding, voorraad en prijzen terug naar de webshop. De uitleg met voorbeelden staat in wat is een webshopkoppeling.
Kunnen jullie onze webshop koppelen aan ons ERP?
Ja. Exact Online, AFAS, Business Central en SAP Business One komen het vaakst voor, en elk geeft zijn gegevens op een eigen manier vrij: Exact Online met 60 aanroepen per minuut per administratie, AFAS via connectoren die je eigen beheerder beschikbaar stelt. Wat dat per ERP betekent staat op ERP koppeling met je webshop.
Kunnen jullie meerdere verkoopkanalen koppelen?
Ja. De voorraad komt uit één bron en gaat naar elk kanaal met een eigen regel, bijvoorbeeld 14 stuks naar de webshop en 12 naar bol. Orders krijgen per kanaal een voorvoegsel, zodat webshoporder 10482 en bol-order 10482 in het ERP twee verschillende orders blijven.
Mijn webshop of systeem staat er niet bij. Wat nu?
De naam van het pakket bepaalt niet of het te koppelen is. Bepalend is of gegevens er op een vaste, herhaalbare manier in en uit kunnen: via een API, een databaseview, een geplande export of als laatste een gescripte route door de schermen. Noem de systemen, dan hoor je welke route er is.
Waarom een koppeling in plaats van een import uit een spreadsheet?
Een import is een momentopname. Importeer je om 08:00 en raakt een artikel om 11:00 uitverkocht, dan verkoopt de webshop door tot de volgende import. Een bestand dat onderweg in Excel is geopend, verliest voorloopnullen: 00482 wordt 482 en het artikel wordt niet meer gevonden. Een koppeling verwerkt elke wijziging, controleert elke regel en meldt wat hij afkeurt.
Moet er iets in onze webshop geïnstalleerd worden?
Meestal is toegang tot de API genoeg. Bij WooCommerce is dat een sleutel met lees- en schrijfrechten, bij Shopify een app met alleen de rechten die de koppeling gebruikt. De koppeling zelf draait bij ons en niet op de server van je webshop.
Wat gebeurt er met de koppeling als we van webshopplatform wisselen?
De regels, de mapping en de kant van het ERP blijven dezelfde. De platformkant wordt opnieuw aangesloten op de API van het nieuwe platform, met de limieten die daar gelden. Voorwaarde is dat artikelnummers en klantnummers bij de overstap gelijk blijven, anders vindt de koppeling geen enkel artikel terug.
Hoe snel staat een order uit de webshop in het ERP?
De webshop meldt een nieuwe order met een webhook, en de koppeling zet hem direct in de wachtrij voor het ERP. In de regel staat de order er binnen enkele minuten. Is het ERP onbereikbaar of zit het aan zijn limiet, dan wacht de order in de wachtrij en komt hij daarna alsnog aan, één keer.
Vertel wat je nodig hebt
Vertel welke systemen je gebruikt en wat je wilt verbeteren. Je krijgt binnen één werkdag een persoonlijk antwoord. We helpen je de werkzaamheden helder te krijgen en spreken de prijs en planning af voordat je iets toezegt.
- Je weet de prijs en de doorlooptijd voordat je iets toezegt
- Wij zoeken uit welke koppeling het werk uit handen neemt
- Wij verzorgen de bouw, hosting, bewaking en het onderhoud
- Je team krijgt minder overtypwerk en minder uitzoekwerk