Naar de inhoud
SyncMyShop

Kennisbank

Hoe een koppeling werkt

Hoe gegevens tussen je webshop en backoffice worden verwerkt: toegang, controles, wachtrijen en goedkeuring, met voorbeelden en diagrammen.

Bijgewerkt op

Welke gegevens tussen je systemen bewegen

Tussen een webshop en de systemen erachter lopen vijf stromen. Vier daarvan verplaatsen gegevens: productdata, voorraad, prijzen en orders. De vijfde, OCI en PunchOut, is een sessie: de inkoper van je klant komt vanuit zijn eigen inkoopsysteem je webshop binnen en neemt zijn winkelmand mee terug.

Bij elke stroom begint het werk met dezelfde drie vragen. Uit welk systeem komt het gegeven? Wanneer moet het in het andere systeem staan? En welk systeem is leidend als de twee iets anders zeggen?

Stroom Richting Wat er over de lijn gaat Meestal leidend
1. Productdata naar de webshop artikelnummer, EAN, omschrijving, attributen, afbeeldingen, varianten PIM of ERP
2. Voorraad en beschikbaarheid naar de webshop vrije voorraad per locatie, levertijd, verwachte leverdatum WMS, ERP of leverancier
3. Prijzen en klantafspraken naar de webshop basisprijs, prijslijst, staffel, klantprijs, assortiment per klant ERP
4. Orders, klanten en verzending uit de webshop, status terug orderregels, debiteur, afleveradres, betaalstatus, track-and-trace webshop voor de order, ERP voor de debiteur
5. OCI en PunchOut sessie heen, winkelmand terug inlog vanuit het inkoopsysteem, artikelregels in NEW_ITEM-velden inkoopsysteem van je klant
De vijf stromen tussen een webshop en de systemen erachter Productdata komt uit het PIM of van de leverancier, prijzen en klantafspraken uit het ERP, voorraad en levertijd uit het WMS. De koppeling zet ze door naar de webshop. Orders en klanten gaan terug naar het ERP. Het inkoopsysteem van een zakelijke klant opent via OCI een sessie in de webshop en krijgt de winkelmand terug. Systemen achter je webshop PIM of leverancier Akeneo, CSV op SFTP ERP Exact Online, AFAS WMS Picqer Koppeling regels, wachtrij, logs Webshop Shopify, WooCommerce Inkoopsysteem van je klant 1 productdata 2 voorraad, levertijd 3 prijzen, klantafspraken 4 orders, klanten productdata, voorraad, prijzen 4 orders, klanten 5 OCI-sessie
De vijf stromen. De nummers komen overeen met de tabel hierboven.

Eén eigenaar per gegeven

Onder alle vijf ligt dezelfde regel: elk gegeven heeft precies één systeem dat erover beslist. Dat leg je vast per veld, niet per systeem. De voorraad komt uit het WMS, de prijs uit het ERP en de productomschrijving uit het PIM, ook als alle drie de systemen een veld voor voorraad, prijs en omschrijving hebben.

Zonder die afspraak overschrijven systemen elkaar. Het ERP heeft voor artikel 10482 een verkoopprijs van € 12,50. Iemand zet de prijs in de webshop voor een actie op € 9,95. De prijsronde van die nacht zet er weer € 12,50 neer, en de actie die morgen in de nieuwsbrief staat klopt niet meer.

Met een eigenaar per veld staat de uitkomst vooraf vast. Het ERP is leidend voor de prijs, en artikel 10482 staat tot het einde van de actie op de lijst met uitzonderingen die de koppeling overslaat.

Waar de koppeling draait

Een koppeling van ons draait op onze servers, tussen je systemen. Je webshop, je ERP en je WMS blijven zoals ze zijn. De koppeling praat met elk systeem langs de weg die dat systeem aanbiedt: een API, een webhook, een bestand op SFTP. Elk systeem krijgt zijn eigen toegang, die je in dat systeem kunt intrekken.

Systeem Toegang Waar je op let
Shopify app met de rechten die nodig zijn, zoals read_orders en write_inventory sinds 1 januari 2026 maak je zo'n app in het Dev Dashboard
WooCommerce REST API-sleutel en geheim het geheim zie je één keer; zonder "mooie" permalinks werkt de API niet
Exact Online OAuth, één keer toestemming toegangstoken geldig 600 seconden, vernieuwingstoken 30 dagen
Picqer API-sleutel één sleutel per koppeling, los in te trekken
AFAS Profit app connector klassieke tokens stoppen na 31 augustus 2027; nieuwe koppelingen gebruiken OAuth
Waar een koppeling van SyncMyShop draait De koppeling draait bij ons, tussen Shopify en Exact Online. Shopify meldt een nieuwe order met een webhook, de koppeling zet hem als verkooporder in Exact Online en leest de voorraad terug naar Shopify. Elke run komt met zijn wijzigingen en fouten in het dashboard. Webshop Shopify Koppeling bij ons gehost ERP Exact Online Dashboard bij ons, jouw login orders/create, webhook inventorySetQuantities POST SalesOrders sync/Inventory/StockPositions runs, wijzigingen, fouten Je webshop en je ERP blijven zoals ze zijn. De koppeling praat met hun API's met een eigen sleutel per systeem, die je in dat systeem kunt intrekken.
De koppeling draait tussen je systemen, niet erin. Je webshop en je ERP blijven zoals ze zijn.

De koppeling is gebouwd op jouw systemen en jouw regels: welk systeem leidend is voor welk gegeven, welke voorraad meetelt, welke klant welke prijs krijgt. Die regels zitten in de koppeling en niet in een instellingenscherm met vaste keuzes. Waar standaardkoppelingen technisch ophouden staat op maatwerk koppeling laten maken.

Per stroom: per wijziging of in rondes

Niet elke stroom hoeft even snel. Een order hoort binnen een minuut in het ERP, een prijslijst die eens per week verandert niet. Per stroom ligt vast wat hem start:

Stroom Start Waarom
Orders webhook per order elke minuut vertraging is een minuut waarin voorraad niet gereserveerd is
Voorraad webhook per wijziging, of een ronde elke 5 minuten het ERP of WMS stuurt niet altijd een melding
Verzending en track-en-trace webhook of een ronde elke 15 minuten de klant krijgt de mail van de webshop
Artikelen en prijzen ronde met alleen de wijzigingen, elk uur of 's nachts grote aantallen, weinig haast

Elke ronde kost verzoeken, en een API heeft een limiet. Een rekenvoorbeeld met Exact Online, dat 60 verzoeken per minuut en 5.000 per dag toestaat. 400 orders per dag à 3 verzoeken is 1.200. Een voorraadronde elke 5 minuten met 1 verzoek is 288 per dag. Een prijsronde elk uur is 24. Samen 1.512, en er blijven er 3.488 over voor herhaalde pogingen en een volledige inlees na een storing. Diezelfde voorraad per artikel opvragen zou bij 8.000 artikelen elke ronde 8.000 verzoeken kosten, meer dan het hele dagbudget. De som voor je eigen aantallen maak je met doorvoer berekenen; de afweging staat in realtime of batch.

Als een systeem niet antwoordt

Systemen zijn soms traag, in onderhoud of over hun limiet. Een koppeling die dan een bericht laat vallen, verliest een order. Daarom gaat alles via een wachtrij.

De koppeling neemt een webhook direct aan en verwerkt hem daarna. Dat is nodig, want de afzender wacht niet lang: Shopify geeft 5 seconden, Picqer 10. Wie te laat antwoordt, krijgt het bericht opnieuw. Bij herhaald falen zet de afzender de webhook uit: WooCommerce na 5 mislukte meldingen op rij, Picqer na 5 volledig mislukte meldingen binnen 24 uur.

Weigert het ERP een verzoek, dan volgt een nieuwe poging met een pauze die steeds langer wordt, bijvoorbeeld na 1, 2, 4 en 8 minuten. Elke poging draagt dezelfde sleutel, het ordernummer uit de webshop, zodat order 20418 één keer in het ERP komt, ook na drie pogingen. Wat na de laatste poging niet is aangekomen, gaat naar een lijst met mislukte berichten, met de oorspronkelijke inhoud en de foutmelding. Er verdwijnt niets zonder dat het ergens staat. Hoe wij een afwijking zien voordat je klant hem ziet, staat bij monitoring.

Wat je ziet in je login

Bij de koppeling hoort een dashboard met een eigen login. Per run staat er wat er is gelezen, wat er is gewijzigd en wat niet is gelukt:

run 03-10-2026 10:15   orders   Shopify naar Exact Online
gelezen 37   aangemaakt 35   overgeslagen 1   mislukt 1
20418   SalesOrder 7731 aangemaakt
20419   overgeslagen   staat op de uitsluitingslijst: proefzending
20420   mislukt        debiteur niet gevonden, btw-nummer NL001234567B01

Vier dingen houden de koppeling in jouw hand. Een dry run rekent alles door en schrijft niets: je ziet per order en per artikel wat er zou gebeuren. Goedkeuring laat een stroom wachten op jouw akkoord, of een run die meer dan een ingesteld percentage wijzigt. Uitsluitingen laten artikelen of klanten met een handmatige afspraak met rust. Overrides zetten een eigen waarde vast, zoals een levertijd. Na elke run staat per wijziging van welke waarde naar welke, en waardoor. De onderdelen staan bij dry run en goedkeuring en audit trail.

Als een bron verandert

Een koppeling die vandaag werkt, heeft over een jaar onderhoud nodig. De systemen eromheen veranderen, op aangekondigde data:

Systeem Wat er verandert Wanneer
Shopify elke drie maanden een nieuwe API-versie, elke versie minstens 12 maanden ondersteund doorlopend
AFAS Profit klassieke tokens verlopen; OAuth is de standaard 15 februari of 1 mei 2027 volgens AFAS' twee documentatiesites, stop na 31 augustus 2027
Picqer ontvangsten v1 wordt uitgefaseerd, v2 is de opvolger in 2026
Sendcloud API v2 in onderhoudsmodus, nieuw werk op v3 sinds april 2026
Odoo XML-RPC verdwijnt; sinds Odoo 19 meldt een koppeling zich aan met een API-sleutel, die voor een gewone gebruiker na hoogstens 90 dagen verloopt Odoo 22

Daarnaast veranderen leveranciers hun bestanden zonder aankondiging: een kolom heet stock in plaats van voorraad, een tabblad schuift op. Een run die zo'n verandering tegenkomt, stopt en meldt welk veld ontbreekt. Wij passen de koppeling aan, op de nieuwe versie of het nieuwe bestand, voordat de oude stopt.

De bouw heeft een vaste prijs, afgesproken voordat het werk begint. Het hosten, draaien, bewaken en het dashboard vallen onder een vast bedrag per maand. Welke systemen we koppelen staat op koppelingen. Vertel welke systemen je hebt en waar het vastloopt.

Gegevensuitwisseling bij verkoop aan bedrijven

Van alle software koppelingen rond een webshop komen deze vijf het vaakst voor:

  • Webshop en ERP. Orders gaan het ERP in. Voorraad, prijzen en verzendstatus komen terug.
  • ERP en boekhouding. Facturen, betalingen en grootboekregels lopen door, met per verkoopkanaal een eigen grootboekrekening en dagboek.
  • CRM en ERP. De verkoper ziet in het CRM wat een klant heeft afgenomen en welke facturen openstaan.
  • WMS en vervoerder. De zending wordt aangemeld, het label komt terug en de track-and-tracecode gaat naar de klant.
  • PIM en verkoopkanalen. Een nieuw artikel of een gewijzigde omschrijving gaat in één keer naar de webshop en de marktplaatsen.

De rekensom achter de eerste: vijftig orders per dag die elk drie minuten overtypen kosten, zijn 150 minuten. Dat is tweeënhalf uur per dag, en elke overgetypte order is een kans op een fout in een adres of een aantal.

Voor een webshop lopen de gegevens in drie richtingen:

Richting Gegevens Wat er misgaat zonder regel
Van de webshop naar binnen orders, klantgegevens, retouraanmeldingen een klant die al in het ERP staat wordt als tweede debiteur aangemaakt
Van binnen naar de webshop voorraadstanden, prijzen, verzendstatussen een artikel dat vandaag niet in het bestand staat gaat op nul en verdwijnt uit de verkoop
Naar buiten zendingen naar de vervoerder, boekingen naar de boekhouding een bedrijfsnaam wordt op het label afgekapt op 35 tekens

De B2B-laag erbovenop

Verkoop je zakelijk, dan komen er drie dingen bij: prijsafspraken per klant, staffels en bestellen op rekening. Hier houden standaardkoppelingen en koppelplatformen meestal op: ze zetten prijzen door op het niveau van een klantgroep, niet per klant.

De omvang bepaalt de aanpak. Vijftig klanten met een eigen prijs houd je met de hand bij. Vijfhonderd klanten op een assortiment van 2.000 artikelen zijn 1.000.000 mogelijke combinaties van klant en artikel. Die zet je niet een voor een over. De koppeling neemt de regels over waaruit het ERP de prijs opbouwt: prijslijst, klantkorting en staffel. Hoe dat per onderdeel werkt staat bij klantspecifieke prijzen, staffelprijzen en bestellen op rekening.

Veldmapping, wachtrijen, toegang en bewaking

Gegevens van A naar B brengen is het kleinste deel. Wat een koppeling betrouwbaar maakt, staat eromheen:

Onderdeel Wat het doet Voorbeeld
Vertaling zet waarden om naar wat het andere systeem verwacht 19,95 wordt 1995; Dorpsstraat 12 A wordt straat, huisnummer en toevoeging
Richting en frequentie legt per stroom vast wat wanneer waarheen gaat voorraad bij elke wijziging, grootboekregels één keer per nacht
Sleutels en rechten houdt toegangssleutels buiten de code en beperkt de rechten lezen op artikelen, schrijven op orders, geen beheerdersaccount
Wachtrij houdt berichten vast als een systeem traag of onbereikbaar is een order wacht 42 minuten en komt daarna alsnog aan
Overzicht laat per run zien wat is doorgezet en wat is blijven staan 1.240 regels verwerkt, 3 afgekeurd, met de reden per regel
Meldingen waarschuwt als een run mislukt of de wachtrij groeit een controle om de vijf minuten

Als een systeem onbereikbaar is

Het ERP is van 14:00 tot 14:40 onbereikbaar door een update. Order 10482 komt om 14:00 binnen. De koppeling probeert het direct, dan na 30 seconden, na 2 minuten en na 8 minuten: elke pauze is vier keer zo lang als de vorige. De vijfde poging, 32 minuten later om 14:42:30, lukt. De order heeft 42 minuten en 30 seconden in de wachtrij gestaan en staat één keer in het ERP.

Een order wacht in de wachtrij terwijl het ERP 40 minuten onbereikbaar is Het ERP is van 14:00 tot 14:40 onbereikbaar. De koppeling probeert order 10482 door te zetten om 14:00, na 30 seconden, na 2 minuten en na 8 minuten, telkens zonder succes. De vijfde poging, 32 minuten later om 14:42, lukt. De order heeft al die tijd in de wachtrij gestaan. ERP onbereikbaar, 40 minuten bereikbaar Pogingen van de koppeling, pauze telkens 4 keer zo lang poging 1, 2, 3 poging 4 poging 5 lukt Order 10482 in de wachtrij, 42 min 30 s in het ERP 14:00 14:10 14:20 14:30 14:40 14:50
Het ERP ligt 40 minuten plat. De order wacht in de wachtrij en komt bij de vijfde poging aan.

Elke poging stuurt dezelfde sleutel voor de order mee, zodat een herhaling geen tweede order aanmaakt. Een bericht dat na de laatste poging nog niet is aangekomen, gaat met de oorspronkelijke inhoud naar een foutenlijst en wordt na herstel opnieuw verwerkt. Er verdwijnt niets ongemerkt. De kant van de binnenkomende berichten staat in wat is een webhook; het hele verloop van een storing in wat gebeurt er als een koppeling uitvalt.

Rechten en sleutels

Een koppeling krijgt alleen de rechten die hij gebruikt. Leest hij artikelen en schrijft hij orders, dan heeft hij geen toegang tot de salarisadministratie nodig. Een koppeling onder een beheerdersaccount is bij de bouw sneller en komt daardoor veel voor. Elk lek in zo'n koppeling is dan een lek in het hele pakket.

Verbindingen lopen over TLS. Sleutels horen in een kluis voor geheimen en niet in code, in een configuratiebestand of in een spreadsheet, zodat een sleutel vervangen kan worden zonder de koppeling opnieuw te bouwen.

Jij houdt de controle

Een nieuwe koppeling draait eerst droog. Een dry run verwerkt de echte gegevens zonder iets naar de webshop of het ERP te schrijven en laat zien wat er zou veranderen. Daarna bepaal je per stroom of wijzigingen op goedkeuring wachten of direct doorgaan. Artikelen met een handmatige afspraak, zoals een vaste actieprijs, zet je op een uitsluitingslijst. Een eigen levertijd leg je vast met een override.

Na elke run staat er een overzicht van wat er is gewijzigd, per artikel en per veld: artikel 10482, voorraad, van 14 naar 8. Belt een klant over een verkeerde levertijd, dan zie je terug wanneer die waarde binnenkwam en uit welke bron. De onderdelen hebben elk een eigen pagina: dry run en goedkeuring, monitoring en audit trail.

Wij bouwen de koppeling voor een vaste prijs op jouw systemen en jouw regels. Daarna hosten, draaien en bewaken we hem voor een vast bedrag per maand, en passen we hem aan als een bron verandert. Je krijgt een dashboard met logs en een eigen login. Meer over die opzet staat op maatwerk koppeling laten maken.

Veelgestelde vragen

Moet ik iets installeren in mijn webshop of ERP?

Meestal alleen toegang. In Shopify is dat een app in het Dev Dashboard, met de rechten die de koppeling nodig heeft. In WooCommerce een REST API-sleutel, aangemaakt onder WooCommerce, Instellingen, Geavanceerd, REST API. In Exact Online geef je één keer toestemming via OAuth, zodat je wachtwoord nooit bij de koppeling komt. Een plugin of extensie komt er alleen bij als een systeem een gegeven niet via zijn API vrijgeeft.

Wat als de koppeling zelf een uur uitvalt?

Je webshop blijft verkopen. Shopify probeert een webhook die niet aankomt 8 keer opnieuw in 4 uur, en na herstel vraagt de koppeling alles op wat sinds de laatste geslaagde run is gewijzigd. Orders komen dan alsnog in het ERP, één keer per order. Wat er met de berichten gebeurt staat in wat gebeurt er als een koppeling uitvalt.

Kan een bestaande koppeling worden vervangen zonder dat er iets stilvalt?

Ja. De nieuwe koppeling draait eerst mee in een dry run naast de oude, zodat de verschillen per order en per artikel zichtbaar worden. Daarna gaat het om per stroom: eerst de voorraad, dan de orders. De volgorde en het terugdraaien staan in een bestaande koppeling vervangen.

Wat gebeurt er nadat ik het formulier heb ingevuld?

Je krijgt een persoonlijke e-mail terug, geen automatisch antwoord. Daarin vragen we wat er nog nodig is om je systemen en stromen te begrijpen, zoals de namen van je systemen, de aantallen artikelen en orders, en de regel waar het nu op vastloopt.

Wie past de koppeling aan als Shopify of mijn ERP iets verandert?

Wij. Een nieuwe API-versie, een kolom die een leverancier hernoemt of een uitgefaseerde aanmeldmethode zijn het werk van degene die de koppeling draait. Zo'n wijziging zien we in de monitoring of staat in de aankondiging van de leverancier, en wordt aangepast voordat de oude versie stopt.

Hoeveel systemen kunnen jullie aan elkaar koppelen?

Het aantal is geen grens. Vanaf drie of vier systemen lopen de stromen via één laag in het midden in plaats van rechtstreeks tussen elk paar: vier systemen hebben zes mogelijke paren, zes systemen vijftien. Elke koppeling draait als eigen onderdeel met eigen logs, zodat een storing bij één leverancier de andere stromen laat doorlopen. Wat bij meer systemen het zwaarst weegt, is de lijst met welk systeem per veld leidend is.

Kunnen jullie koppelen met software zonder API?

Ja. Zonder API zijn er drie andere routes: een databaseview of alleen-lezen kopie, een geplande export als CSV of XML via SFTP, en als laatste een gescripte browserroute die inlogt op het portaal. Zo werkt ook de koppeling met leveranciersbestanden. Vraag de leverancier van het pakket ook om een export of een endpoint: een concrete vraag van een klant levert er vaak een op.

Moeten we een van onze systemen vervangen om te kunnen koppelen?

Nee. De koppeling sluit aan op het ERP, het PIM, het WMS en het webshopplatform die je nu gebruikt. Wat wel vooraf vaststaat is welk systeem per gegeven leidend is, bijvoorbeeld voorraad uit het WMS en prijzen uit het ERP. Die afspraak verandert niets aan de systemen zelf.

Blijft de koppeling werken na een update van onze software?

Leveranciers passen hun API aan en melden dat in een changelog of een nieuwsbrief. Wij volgen die aankondigingen en passen de koppeling aan als een bron verandert; dat hoort bij het maandelijkse beheer. Verandert er onverwacht iets, bijvoorbeeld een kolomnaam in een export, dan draait de run niet half door: hij stopt en meldt welk veld ontbreekt.

Wat gebeurt er als een van de systemen even niet bereikbaar is?

Het bericht blijft in de wachtrij staan. De koppeling probeert het opnieuw met pauzes die steeds langer worden, eerst seconden en daarna minuten. Lukt het na het laatste aantal pogingen nog niet, dan gaat het bericht met de oorspronkelijke inhoud naar een foutenlijst en wordt het na herstel opnieuw verwerkt. Er verdwijnt niets ongemerkt.

Is mijn voorraad dan live?

Dat wordt per stroom bepaald, en de vraag is wie er op het antwoord staat te wachten. De voorraad op de productpagina en een betaling die een order vrijgeeft gaan bij elke wijziging of binnen enkele minuten door. Grootboekregels en prijslijsten gaan in een nachtelijke ronde. De grens ligt bij de limiet van het bronsysteem: 60 verzoeken per minuut laat geen volledige ronde van 15.000 artikelen per kwartier toe.

Wat is het verschil tussen een standaardkoppeling, een koppelplatform en maatwerk?

Een standaardkoppeling zet een vaste set velden in een vaste richting over tussen twee pakketten. Op een koppelplatform stel je de stromen zelf in binnen de mogelijkheden van het platform. Maatwerk wordt gebouwd op jouw velden en jouw regels, zoals prijzen per klant in plaats van per klantgroep, of een leverdatum uit het bestand van een leverancier.

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

Leveranciers, producten, orders per dag, een ruwe schatting is prima.

Of mail direct: carsten@syncmyshop.com