Naar de inhoud
SyncMyShop

Koppelingen

Dry run en goedkeuring: eerst zien wat er verandert, dan pas live

Een koppeling past één regel toe op duizenden artikelen of orders tegelijk. Wij bouwen hem zo dat elke run eerst een verschillenlijst maakt, dat je per bron kiest wat op jouw akkoord wacht en dat een run die te ver uitslaat niets schrijft.

Eén regel, 3.200 artikelen

Wie met de hand een levertijd verkeerd typt, raakt één artikel. Een koppeling die een ontbrekende regel leest als "niet leverbaar", raakt in één run elk artikel dat ontbreekt. Bij een leverancier met 3.200 artikelen en een export die halverwege afbreekt, zijn dat er 1.660. Shopify neemt 250 waarden per aanroep: 1.660 levertijden staan na 7 aanroepen in de webshop.

Met 200 artikelen ziet iemand het dezelfde ochtend. Met 3.200 artikelen en drie leveranciers ziet een klant het eerst, als hij een boormachine met 12 weken levertijd bij de concurrent bestelt. De controles op deze pagina zitten daarom tussen rekenen en schrijven. Ze gelden voor alle vier de stromen op koppelingen.

Wat een dry run is en welke fouten hij vindt, staat in waarom een dry run. Deze pagina gaat over wat er daarna geregeld wordt: welke bron wacht, wanneer een run stopt en wat er gebeurt bij het vrijgeven.

Hoe werkt het?

Een stand per bron

Elke run maakt eerst een verschillenlijst: per artikel of order de oude waarde, de nieuwe waarde en de regel die het verschil veroorzaakt. De stand van de bron bepaalt wat er daarna gebeurt.

Stand Wat er wordt geschreven Voorbeeld
Dry run niets een nieuwe leverancier, een gewijzigde mapping
Goedkeuring de verschillenlijst, na jouw akkoord prijslijsten, nieuwe producten, de eerste weken van een bestand
Automatisch met drempel direct, tenzij een drempel de run vasthoudt voorraad uit je ERP, orders, track-en-trace

De stand hoort bij de bron en niet bij de koppeling als geheel. Leverancier A gaat automatisch, leverancier B staat op goedkeuring en de ERP-voorraad gaat ernaast automatisch door.

Drempels die een run vasthouden

Een automatische run stopt als hij een grens overschrijdt die je zelf instelt. De getallen hieronder zijn voorbeelden. De juiste waarde volgt uit hoe een gewone dag er bij jou uitziet.

Stroom Voorbeeld van een drempel Wat hij tegenhoudt
Voorraad meer dan 20% van de artikelen naar 0 een afgebroken export, een leeg bestand
Levertijd meer dan 10% van de artikelen wijzigt een half bestand gelezen als "niet leverbaar"
Prijzen een prijs wijzigt meer dan 30% een komma-fout, een prijs per doos als prijs per stuk
Productdata een product verliest een variant een artikel per ongeluk op inactief
Orders ordertotaal in webshop en ERP verschilt dubbel gerekende btw, een afrondverschil

Op een gewone dag wijzigen bij deze leverancier 30 tot 50 levertijden, rond 1% van 3.200. Een drempel van 10% laat zo'n dag door en houdt een half bestand tegen.

Een half leveranciersbestand wordt vastgehouden, het volledige bestand gaat door Om 06:00 levert de leverancier een bestand met 1.540 van de 3.200 regels. De koppeling berekent dat 1.660 artikelen naar 12 weken levertijd zouden gaan, 52% van het assortiment, en houdt de run vast boven de drempel van 10%. Jij verwerpt het bestand in het dashboard. Om 07:10 komt het volledige bestand: 38 wijzigingen, 1,2%, die direct naar de webshop gaan. Leverancier voorraad.csv Koppeling bij ons Jij dashboard Webshop Shopify 06:00 1.540 van 3.200 regels Diff: 1.660 artikelen naar 12 weken levertijd, 52% van het assortiment. Drempel 10%: niets geschreven. run vastgehouden bestand verworpen 07:10 3.200 van 3.200 regels Diff: 38 wijzigingen, 1,2%: onder de drempel. 38 levertijden geschreven overzicht van de run
Een half bestand en een heel bestand van dezelfde leverancier. De drempel houdt het eerste tegen en laat het tweede door.

Vrijgeven met de waarde van nu

Een lijst die wacht, veroudert. De koppeling las om 06:00 voor artikel 10482 een voorraad van 96 in de webshop en wil 90 schrijven. Om 09:40 geef je de run vrij. Intussen zijn er 2 verkocht en staat er 94.

Shopify heeft daar een controle voor in inventorySetQuantities. Elke regel draagt changeFromQuantity: de waarde waarop de verschillenlijst is gebouwd. Wijkt de huidige waarde af, dan weigert Shopify die regel met CHANGE_FROM_QUANTITY_STALE. De koppeling rekent dat ene artikel opnieuw, 90 min 2 is 88, en schrijft 88. De andere wijzigingen gaan door zoals goedgekeurd. Het veld is verplicht: wie het weglaat krijgt een fout, wie null meegeeft zet de controle uit.

{
  "name": "available",
  "reason": "correction",
  "referenceDocumentUri": "gid://syncmyshop/Run/2026-10-03-0600",
  "quantities": [
    { "inventoryItemId": "gid://shopify/InventoryItem/4410482",
      "locationId": "gid://shopify/Location/1",
      "quantity": 88, "changeFromQuantity": 94 }
  ]
}

referenceDocumentUri zet het nummer van de run in de voorraadhistorie van Shopify. Wie daar een mutatie ziet, vindt dezelfde run terug in het dashboard en in de audit trail.

Uitsluitingen en overrides

Sommige waarden zet je bewust met de hand. Een uitsluiting haalt een artikel, een veld, een klant of een locatie uit een stroom. Een override houdt een waarde vast. Beide hebben een einddatum en de naam van wie ze heeft ingesteld:

uitsluitingen
10510   prijs        tot 31-10-2026   actieprijs 7,95, ingesteld door marketing
10533   omschrijving geen einddatum   eigen tekst voor de campagne
overrides
10484   levertijd    3 werkdagen      tot 15-12-2026, eigen voorraad op komst

Artikel 10510 wordt tot 31 oktober overgeslagen en komt op 1 november vanzelf terug in de prijsronde. Een uitsluiting zonder einddatum staat in elk overzicht apart. Een artikel dat twee jaar geleden is uitgesloten, heeft een prijs van twee jaar geleden.

Parallel naast je oude koppeling

Vervangt de koppeling een bestaande koppeling of een handmatig proces, dan draait hij eerst ernaast met schrijven uit. Hij krijgt dezelfde orders, rekent uit wat hij zou schrijven en legt dat naast wat de oude route schreef. Een voorbeeld over 21 dagen:

Uitkomst Orders Oorzaak
Gelijk aan de oude route 936
Btw op verzendkosten verschilt 12 het oude script rekende 21%, de nieuwe mapping volgt het tarief van de artikelen
Andere debiteur 7 het oude script zocht op naam, de nieuwe op debiteurnummer en e-mailadres
Totaal wijkt 1 cent af 5 afronden per regel tegenover afronden op het totaal
Totaal 960

24 van 960 orders wijken af, 2,5%. Elke groep is een besluit. De 12 laten een regel van het oude script zien die nergens beschreven stond. Daarna gaat de overstap per stroom: voorraad kan live terwijl orders nog via de oude route lopen. Het verloop staat in een bestaande koppeling vervangen.

Wat je ermee regelt

  • Dry run. Elke run op echte gegevens met schrijven uit, met een bewaarde verschillenlijst.
  • Goedkeuring per bron. Per leverancier, per ERP en per stroom een eigen stand.
  • Drempels. Grenzen op nullen, prijsbewegingen, levertijden, varianten en ordertotalen.
  • Uitsluitingen en overrides. Per artikel, veld, klant of locatie, met einddatum en naam.
  • Verschillenlijst per run. Oude waarde, nieuwe waarde en de regel erachter, bewaard als geschiedenis.

Wat elke stroom vasthoudt staat bij voorraad, prijzen, productdata en orders. Of de runs zelf draaien zoals verwacht, staat bij monitoring.

Met welke systemen

De controles gebruiken wat de systemen aan beide kanten al hebben:

Systeem Wat de controle gebruikt Effect
Shopify productstatus DRAFT een nieuw product staat klaar maar is niet zichtbaar tot het is goedgekeurd
Shopify changeFromQuantity bij het schrijven van voorraad een verouderde goedkeuring overschrijft geen verkoop
Shopify B2B orders van een bedrijfslocatie als concept ter beoordeling een B2B-order wordt eerst beoordeeld en dan geaccepteerd
Exact Online ApprovalStatus op een verkooporder: 0 wacht op goedkeuring, 2 goedgekeurd een order boven je grens wacht in het ERP
Business Central verkooporder met status Draft, In Review of Open een geïmporteerde order blijft concept tot hij is vrijgegeven
Leveranciersbestand het bestand zelf, ongewijzigd bewaard een dry run is te herhalen op dezelfde invoer

De velden zijn op 3 oktober 2026 nagelezen in de documentatie van Shopify, Exact Online en Microsoft. Per systeem: Shopify, Exact Online, Business Central.

Wat een standaardkoppeling hier niet doet

Standaardkoppelingen en koppelplatformen zetten een stroom aan of uit. Een stroom die aan staat schrijft wat hij uitrekent, en wat er misging verschijnt achteraf in een foutenlijst. Regels die de mapping niet kon plaatsen worden overgeslagen, zonder dat iemand een melding krijgt.

Er is geen bewaarde verschillenlijst om vrij te geven, geen drempel die een run stopt waarin de helft van het assortiment naar 12 weken levertijd gaat, en geen lijst met uitsluitingen die op een datum aflopen. In een koppeling die wij bouwen en draaien gaat de eerste echte run pas na dry runs op je eigen gegevens, en bepaal jij per bron wat op een akkoord wacht. Stuur één bestand of één dag orders mee, dan laat de eerste dry run zien wat hij zou wijzigen.

Veelgestelde vragen

Kan de koppeling een prijs overschrijven die ik zelf heb ingesteld?

Niet als het artikel op de uitsluitingslijst staat. Een actieprijs van € 7,95 die je in de webshop zet, krijgt een uitsluiting tot de einddatum van de actie. De prijsronde slaat dat artikel over en neemt het na de einddatum weer mee. Elke run telt hoeveel artikelen zijn overgeslagen, zodat een vergeten uitsluiting zichtbaar blijft.

Wie keurt goed, en hoe lang blijft een wijziging wachten?

Iedereen met een login op het dashboard die je daarvoor aanwijst. Een vastgehouden run wacht tot iemand hem vrijgeeft of verwerpt. Wat er gebeurt als er intussen een nieuw bestand van dezelfde bron komt, stel je in: bijvoorbeeld dat het nieuwe bestand de wachtende run vervangt, zodat je geen verouderde lijst goedkeurt.

Kan ik per leverancier kiezen tussen automatisch en goedkeuren?

Ja. De stand hoort bij de bron. Een leverancier die al twee jaar schone bestanden levert, gaat automatisch met een drempel. Een nieuwe leverancier staat de eerste weken op goedkeuring. De voorraad uit je eigen ERP gaat ernaast automatisch door.

Wat gebeurt er met de rest als één regel wordt vastgehouden?

Dat stel je per stroom in. Bij voorraad gaan de regels die geen drempel raken bijvoorbeeld door en wacht alleen de uitschieter. Bij een half bestand wacht de hele run, want dan is niet één artikel verdacht maar de bron zelf.

Kost een dry run API-verzoeken?

Alleen leesverzoeken. Hoeveel dat er zijn staat met de rekensom in waarom een dry run. Schrijven gebeurt pas na het vrijgeven, en dan alleen voor de regels in de verschillenlijst.

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