Rood hangslot op een zwart computertoetsenbord
GidsUitgebreide gids25 oktober · 17:0018 min leestijd

Shopify AI-agent veilig vrijgeven: rechten, limieten en herstel

Geef een AI-agent toegang tot je webshop zonder prijzen, refunds, orders of publicaties buiten zijn mandaat te laten handelen. Met een rechtenmatrix, transactielimieten, menselijke vrijgave, read-back en herstelpaden.

Een agent die zonder controle een product publiceert, een order annuleert of € 49,95 terugstort, heeft geen handige assistent meer. Hij heeft een betaalde uitvoermacht met een onduidelijke eigenaar. De schade zit zelden in één spectaculaire fout. Ze zit in de vergeten tweede refund, de prijs die na goedkeuring nog veranderde of de API-token die tegelijk lezen, schrijven en publiceren mocht.

De laag vóór deze gids, met machineleesbare productdata, een productfeed en een veilige betaalflow, maakt je shop bereikbaar voor AI-agenten. Hier begint de operationele grens: wat mag jouw eigen agent doen zodra hij in Shopify, WooCommerce, Stripe of je voorraadlaag kan kijken?

Een veilige webshop-agent is een agent die per actie een kleine, controleerbare bevoegdheid krijgt. Hij leest eerst, maakt daarna een voorstel met een vast doel en bedrag, wacht bij risicovolle acties op menselijke vrijgave, schrijft met een afzonderlijke uitvoerder en leest het resultaat terug. Een prompt bepaalt die grens niet. De rechtenlaag en de vrijgaveprocedure doen dat.

Wat je nodig hebt voordat de agent mag handelen

Begin niet met de keuze voor een model. Begin met de handelingen die je wilt toestaan. Een product zoeken, een voorraadstatus lezen, een prijs wijzigen, een order annuleren, een refund starten en een product publiceren zijn zes verschillende bevoegdheden. Eén algemene optie als agent mag webshop beheren is geen beleid.

Je hebt deze bouwstenen nodig:

  • Een testshop of stagingomgeving. Gebruik een Shopify development store of een afgeschermde WooCommerce-testsite. Laat de eerste proef geen echte betaalmethode of klantmail raken.
  • Een concrete actielijst. Noteer per actie de doelgroep, het maximale bedrag, de maximale aantallen, de toegestane kanalen en de persoon die mag vrijgeven.
  • Minimale API-identiteiten. Gebruik op Shopify de GraphQL Admin API met aparte credentials voor lezen, voorstellen en uitvoeren. Op WooCommerce maak je een REST API-sleutel met read-only of read/write-rechten voor een specifieke gebruiker. De sleutel voor een refund hoort niet dezelfde te zijn als de sleutel waarmee een agent productteksten leest.
  • Een staginglaag. Dat kan een kleine PostgreSQL-tabel, Supabase, een wachtrij of een database achter n8n zijn. De workflowhistorie van Make of n8n is geen volledig bewijs van wat in je shop is gebeurd.
  • Een goedkeuringsscherm. Een melding in Slack of Microsoft Teams mag iemand wakker maken. De formele beslissing hoort in een record met een aanvraag-ID, doel-ID, payload-hash, goedkeurder, tijdstip en vervaldatum.
  • Een uitvoerder buiten het model. De agent mag een voorstel maken. Een policy-service of release-worker controleert de regels opnieuw en voert pas daarna de API-call uit.
  • Een herstel- en stopprocedure. Je moet één credential kunnen intrekken, de agent kunnen pauzeren en een onbekende write naar een uitzonderingsqueue kunnen sturen.
  • Een kleine proefset. Gebruik minimaal tien bestaande of synthetische orders en producten. Voeg dubbele webhooks, een gewijzigde order tijdens review, een timeout en een foutieve payload toe.
  • Vereiste vaardigheden. Reken op kennis van Shopify GraphQL Admin API, app-authenticatie en scopes, webhooks en HMAC-verificatie, een queue of database, secretsbeheer en basisobservability. Voor de policy en release-worker heb je ook ervaring nodig met concurrency, retries en financiële uitzonderingen.
  • Een verantwoordelijke eigenaar. Wijs één operations- of e-commerce-eigenaar aan die de actiematrix, limieten, goedkeurders en incidentbesluiten draagt. Een engineer beheert de implementatie, maar is niet automatisch de eigenaar van refunds of publicaties.
  • Implementatietijd. Voor één shop en lezen plus voorstellen is een realistische eerste proef 3 tot 5 werkdagen. Reken voor één productieklare write-route met staging, approval, read-back en herstel op 2 tot 4 weken, inclusief testen met echte uitzonderingen. Drie risicovolle acties of meerdere shops vragen meestal 4 tot 8 weken.
  • Budgetorde. Als indicatie exclusief btw: € 3.000 tot € 7.500 voor een beperkte proof of concept, € 10.000 tot € 25.000 voor één productie-shop met policylaag en release-worker, en vanaf € 25.000 voor meerdere shops, providers of uitgebreide reconciliatie. Reserveer daarnaast grofweg € 20 tot € 70 per maand voor een workflowlicentie zoals n8n, plus hosting, API-gebruik en doorlopend beheer. Dit zijn planningsordes, geen Shopify-tarieven.

Shopify beschrijft access scopes als de grens voor wat een app kan lezen en schrijven. Een schrijfscope geeft daarbij ook leesrechten op dezelfde bron. De scopes horen bij de app-installatie en het access token; een tweede token van dezelfde app maakt dus niet automatisch een read-only rol. De documentatie zegt ook dat je alleen scopes moet aanvragen die de app werkelijk nodig heeft; bij orders geeft read_orders standaard toegang tot de laatste zestig dagen en is read_all_orders alleen nodig wanneer je oudere orders moet kunnen lezen. Die scopegrenzen en de zestigdagengrens staan in Shopify’s actuele scope-overzicht, gecontroleerd op 25 oktober 2026.

Maak deze startcheck af

Startcheck voor een webshop-agent
0/9

Concrete stappen: van agentvoorstel naar gecontroleerde write

De veiligste route is smal: lezen, normaliseren, stagen, beoordelen, opnieuw controleren, één keer schrijven en teruglezen. De agent beslist niet zelf dat een uitzondering toch veilig is.

1. Schrijf eerst je actiematrix

Een transactielimiet is geen algemene instelling met één bedrag. Je hebt minimaal een grens per actie, een cumulatieve grens per tijdvak en voorwaarden voor de tegenpartij nodig. Een agent mag bijvoorbeeld wel een product zoeken, maar nooit zelf een prijs publiceren. Een refund van € 20 kan nog steeds menselijk toezicht vragen als hij na een verdachte orderwijziging komt.

Gebruik vier risiconiveaus:

ActieWat de agent mag doenLimiet die je vastlegtMenselijke poort
Product, voorraad of order lezenAlleen de noodzakelijke velden ophalenMaximaal aantal records per verzoekNee, wel logging
Productvoorstel makenTitel, prijs of kanaal als voorstel klaarzettenAlleen velden op de allowlistJa vóór publicatie
Order aanpassen of annulerenEen vaste payload voorstellenBedrag, orderstatus, aantal regels en kanaalAltijd
Refund aanmakenBedrag en reden voorstellenPer refund én cumulatief per dagAltijd, met tweede approver boven jouw drempel
Product publicerenExacte product- en kanaal-ID voorstellenAlleen vooraf toegestane publicatiesAltijd
Klantmail of betaalactieAlleen concept of aanvraag makenGeen directe uitvoermacht in de agentAparte goedkeuring

De bedragen in deze matrix zijn je eigen bedrijfsbeleid, geen Shopify-limieten. Begin voor een kleine webshop bijvoorbeeld met een refunddrempel van € 50 voor een eerste beoordelingsniveau, een dagplafond van € 250 en altijd een mens voor de uiteindelijke vrijgave. Zet een tweede goedkeurder boven € 250, bij een nieuwe klant of wanneer het bedrag niet naar de oorspronkelijke betaaltransactie gaat. Pas de bedragen aan op je marge, retourbeleid en frauderisico.

2. Splits lezen, voorstellen en uitvoeren

Geef de agent geen token die zowel producten kan wijzigen als orders kan annuleren. Op Shopify zijn scopes niet fijnmazig per functie. Een writescope omvat ook read op die bron, en scopes worden verleend aan de app-installatie en het access token. Drie tokens van één app vormen daarom niet vanzelf drie geïsoleerde rollen. Gebruik aparte apps of installaties als je de scheiding bij Shopify zelf wilt afdwingen, of geef één app-token uitsluitend vrij via een eigen policygateway die read, proposal en release als aparte beleidsrollen bewaakt. Vertrouw niet op de tokennaam of op de prompt als grens.

Maak drie functies of services:

  1. Read-service: haalt alleen product-, voorraad-, order- en publicatiestatus op.
  2. Proposal-service: normaliseert de agentuitkomst naar een vast schema en schrijft naar staging.
  3. Release-worker: accepteert alleen een goedgekeurd, niet-verlopen voorstel en heeft de minimale schrijfscope.

Op Shopify betekent dit in de praktijk dat je read-only gedrag bouwt met bijvoorbeeld read_products, read_inventory en read_orders. Alleen de release-worker krijgt write_products voor productwijzigingen, write_orders voor ordermutaties en write_publications voor publicatie. Een orderactie die alleen door jouw app is aangemaakt kan in sommige situaties met marketplace-orderscopes worden afgebakend, maar controleer dat verschil zorgvuldig. Een scope die breder is dan jouw agenttaak is geen goede standaard.

Shopify biedt een query om te controleren welke scopes de installatie werkelijk heeft gekregen. De beheerhandleiding laat zien dat je currentAppInstallation en accessScopes kunt uitlezen, gecontroleerd op 25 oktober 2026. Neem die controle op in je startcontrole en na iedere wijziging van de installatie. Wat je in je configuratie hebt gevraagd, is niet automatisch wat de shop daadwerkelijk heeft verleend.

Op WooCommerce is de keuze grover: een REST API-sleutel kan read-only of read/write zijn en is gekoppeld aan een gebruiker. Zet de gebruiker voor de leesagent op read-only en laat de write-sleutel alleen in de release-worker leven. De officiële WooCommerce REST-documentatie beschrijft deze read- en read/write-sleutels en de refundroute, geraadpleegd op 25 oktober 2026.

3. Zet elk voorstel in staging en bind de goedkeuring

Een voorstel is pas controleerbaar wanneer de beoordelaar exact hetzelfde ziet als de uitvoerder later verstuurt. Bewaar daarom minimaal:

  • request_id en business_key;
  • platform, winkel en doel-ID;
  • actie, bijvoorbeeld refund, order_cancel of publish_product;
  • bron-snapshot met order- of productversie en leestijd;
  • genormaliseerde payload;
  • toegestane limiet en de uitkomst van de limietcontrole;
  • payload_hash;
  • idempotency_key;
  • status, aanvrager, goedkeurder, goedgekeurd op en vervalt op;
  • API-response, read-back en eventuele foutcode.

Laat een goedkeurder niet alleen op een knop met goedkeuren drukken. Toon oud en nieuw, het bedrag, de refundreden, het doelkanaal, de voorraadkeuze en de gevolgen. Een refund met restock is een andere handeling dan een refund zonder restock. Een publicatie op Online Store is iets anders dan publicatie op een marktplaats.

De goedkeuring moet vastzitten aan de exacte handeling. De uitvoerder controleert vlak voor de API-call of actor, tool, doel, parameters, tijdstip en vervaldatum nog kloppen. OWASP adviseert voor financiële, administratieve, destructieve en extern zichtbare handelingen precies die scheiding tussen voorstel en uitvoering, met replaybescherming en een korte geldigheid van de autorisatie. De actuele AI Agent Security Cheat Sheet noemt ook auditsporen, rollback en fail-closed gedrag, gecontroleerd op 25 oktober 2026.

4. Dwing limieten af in de policylaag

Een prompt als geef nooit meer dan vijftig euro uit is geen beveiligingsgrens. De agent kan een verkeerde waarde lezen, een kwaadaardige instructie uit een ordernotitie volgen of een tweede tool kiezen. De policylaag moet daarom vóór iedere write zelf controleren:

  • staat deze actie op de allowlist;
  • is het doel-ID afkomstig uit de huidige shop en niet uit vrije modeltekst;
  • ligt het bedrag onder de grens per handeling;
  • blijft het cumulatieve dag- of uurplafond intact;
  • is de klant, leverancier of publicatiebestemming toegestaan;
  • is er geen lopende of al verwerkte aanvraag voor dezelfde business key;
  • is voor deze actie een geldige approval aanwezig;
  • is de snapshot nog actueel.

Onbekende acties krijgen automatisch de zwaarste route. OWASP beschrijft excessive agency als het risico van te veel functionaliteit, te veel permissies of te veel autonomie. Die drie oorzaken en het advies om bevoegdheden buiten het model te controleren staan in de OWASP-risicobeschrijving, gecontroleerd op 25 oktober 2026.

5. Schrijf ondersteunde mutations één keer en lees terug

Gebruik Shopify’s idempotency key alleen voor een mutation waarvan de API-documentatie expliciet ondersteuning voor @idempotent vermeldt. Sla de sleutel vóór de write op en maak hem uit de zakelijke handeling, niet uit een toevallig webhook-ID. Voorbeeld: refund:shopify-order-10482:case-2026-10-25:v1. Bij zo’n ondersteunde mutation gebruiken identieke retries met dezelfde variabelen dezelfde sleutel; verandert een parameter, dan is het een nieuwe zakelijke handeling met een nieuwe sleutel. Bij een mutation zonder @idempotent is jouw sleutel alleen een eigen business key en dedupliceert Shopify de request niet automatisch. De Shopify-richtlijn voor idempotency beperkt de retry- en parameterregels tot mutations met @idempotent, gecontroleerd op 25 oktober 2026.

Voor refunds en annuleringen zijn de API-acties inhoudelijk verschillend. refundCreate ondersteunt @idempotent: vanaf API-versie 2026-01 was de sleutel optioneel, maar vanaf API-versie 2026-04 is die sleutel verplicht. De versiepagina van refundCreate noemt die overgang en de order-scope, gecontroleerd op 25 oktober 2026. orderCancel en publishablePublish vallen niet onder die Shopify-idempotencyclaim. Bouw daar zelf een business key, lock of concurrency-check, snapshotcontrole en read-back met reconciliatie voor. orderCancel vereist write_orders en is onomkeerbaar; publishablePublish vereist write_publications plus de gebruikersrechten om producten of catalogi te bewerken. Shopify beschrijft de onomkeerbaarheid van orderCancel en de vereisten van publishablePublish, gecontroleerd op 25 oktober 2026.

Voor productpublicaties gebruik je een aparte mutation en aparte policy. publishablePublish vereist write_publications én dat de gebruiker producten of catalogi mag aanmaken en bewerken. Geef die macht dus niet mee met een gewone product-leesagent. Shopify noemt die twee voorwaarden expliciet in de referentie voor publishablePublish, gecontroleerd op 25 oktober 2026.

Gebruik je Stripe naast Shopify, dan blijft de grens hetzelfde. Stripe maakt een refund aan op een Charge of PaymentIntent, staat gedeeltelijke refunds toe en weigert een refund boven het nog beschikbare bedrag. De actuele Stripe-referentie beschrijft die voorwaarden voor refund-create, gecontroleerd op 25 oktober 2026. Herhaal bij een verbindingsfout dezelfde request met dezelfde idempotency key, nooit een nieuwe sleutel voor dezelfde zakelijke handeling. Stripe legt dat retryprincipe uit in de idempotency-documentatie, gecontroleerd op 25 oktober 2026.

Een succesvolle HTTP-response is daarna nog geen bewijs dat de juiste toestand live staat. Lees terug:

  • bij een refund: refund-ID, bedrag, valuta, totaal al terugbetaald en restockresultaat;
  • bij een order: orderstatus, financiële status, fulfilmentstatus en relevante regels;
  • bij een product: titel, prijs, productversie en exacte publicatiebestemmingen;
  • bij elke actie: dezelfde business key, response-ID en read-backstatus.

Een mismatch wordt unknown of exception, niet automatisch retry. Bronversie, write en read-back horen samen in een herstelbare sync wanneer een wijziging tijdens de review kan ontstaan.

6. Ontwerp herstel vóór je live gaat

Een herstelpad is geen algemene knop probeer opnieuw. Het hangt af van de actie.

Refund. Een uitgevoerde refund draai je niet terug met een tweede refund. Stop de agent, zoek op order-ID, refund-ID en idempotency key, controleer het werkelijke terugbetaalde bedrag en laat een menselijke eigenaar de correctie bepalen. Als er te veel is teruggestort, is een nieuwe betaling of klantafspraak een afzonderlijke handeling. Maak daar niet stiekem een automatische tegenboeking van.

Order. Behandel een foutieve orderwrite als financieel incident. Zet vervolgacties stil, bewaar de voor- en na-snapshot en laat een bevoegde medewerker bepalen of een correctie, annulering, hernieuwde order of handmatige klantactie nodig is. Omdat annuleren onomkeerbaar is, mag de agent nooit zelf een fout herstellen door meteen orderCancel te proberen.

Publicatie. Bewaar vóór publicatie de productversie en de lijst met bestaande publicaties. Bij een fout haal je de nieuwe publicatie met menselijke vrijgave weer weg en herstel je de vorige lijst. Publiceer niet opnieuw op basis van een nieuw modelvoorstel; herstel de goedgekeurde snapshot.

Webhook en timeout. Verifieer de HMAC, sla de Shopify delivery-ID op en behandel een dubbele aflevering als hetzelfde event. Shopify probeert mislukte webhookcalls maximaal acht keer binnen vier uur opnieuw; als de fouten aanhouden, wordt de subscription verwijderd. Bij app-specifieke subscriptions hoef je na een downtime niet opnieuw te subscriben: Shopify verwijdert die niet automatisch. Shop-specifieke subscriptions kunnen na herhaalde afleveringsfouten wel verdwijnen; controleer ze na herstel en maak alleen ontbrekende subscriptions opnieuw aan. De actuele troubleshootingdocumentatie beschrijft de acht retries, de vieruursgrens en het onderscheid tussen app- en shop-specifieke subscriptions, gecontroleerd op 25 oktober 2026. Bouw daarnaast periodieke reconciliatie, anders kan een verdwenen shop-specifieke subscription je controleketen stil laten vallen.

Een herstelbare webshop- of CRM-sync behandelt een timeout ook als onbekend: zoek dezelfde zakelijke handeling eerst terug en lees het doel opnieuw voordat je hervat.

Zet bij ieder incident drie dingen direct klaar: een kill-switch voor de release-worker, intrekking van de write-credential en een uitzonderingsrecord met eigenaar en deadline. De shop blijft draaien. Alleen de risicovolle actie staat stil.

Valkuilen die in productie pijn doen

  • De prompt als veiligheidsbeleid gebruiken. Zet limieten, allowlists en approvals in een policy-service die vóór de write opnieuw controleert.
  • Eén credential voor alles. Splits leesagent, voorstelservice en release-worker. Trek bij een incident alleen de smalle write-credential in.
  • Alleen een bedrag begrenzen. Een agent kan ook honderd kleine refunds doen. Gebruik per handeling, per uur en per dag een grens.
  • Een approval-record los van de payload bewaren. Hash de exacte payload en verval de approval zodra bedrag, doel, regel of publicatiekanaal verandert.
  • Slack als auditboek gebruiken. Gebruik Slack of Teams voor de melding, maar bewaar de formele beslissing in een onveranderlijk stagingrecord.
  • Een API-scope verwarren met veldrechten. write_orders geeft macht op een orderobject, niet de fijnmazige bedrijfsregel dat alleen een verzendnotitie mag veranderen.
  • Een 200-response als eindstatus nemen. Read-back moet de werkelijk opgeslagen bedragen, ID’s, status en publicatiebestemmingen vergelijken.
  • Een timeout met een nieuwe sleutel opnieuw posten. Zoek eerst de bestaande write en gebruik bij twijfel dezelfde sleutel. Een timeout betekent onbekend, niet automatisch mislukt.
  • Ordernotities en klanttekst als vertrouwde instructie behandelen. Externe tekst is data. Een onderzoek naar AI-agentaanvallen op webwinkels liet zien hoe een agent langere tijd vervolgstappen kan kiezen wanneer een omgeving te veel ruimte geeft. De beschreven aanvalsketen begon met een beperkte wijziging en eindigde in een webserver met uitvoermacht. Houd data en instructies uit elkaar en laat geen vrije tekst rechtstreeks in je policybesluit landen.
  • Geheimen in de log zetten. Bewaar hashes, referenties en geredigeerde payloads. Log geen volledige kaartnummers, tokens of meer klantdata dan nodig is voor herstel.

Beslis-kader: native, workflow of maatwerk?

Mijn praktische oordeel is helder. Een standaardworkflow past bij lezen, labelen en interne concepten. Een orkestratietool past bij meerdere systemen met een overzichtelijke wachtrij. Een eigen release-service past zodra refunds, annuleringen, productpublicaties, meerdere winkels of strikte functiescheiding samenkomen.

Kies Shopify Flow of native automatisering als de handeling deterministisch is, geen model nodig heeft en de gevolgen beperkt of eenvoudig herstelbaar zijn. Shopify Flow is een gratis app op Basic, Grow, Advanced en Plus. De HTTP Request-actie is beschikbaar op Grow, Advanced en Plus. Shopify beschrijft die planvoorwaarden op de actuele Flow-pagina, gecontroleerd op 25 oktober 2026. Gebruik Flow niet als vervanging voor een release-service wanneer een agent geld kan terugstorten of een order kan annuleren.

Kies n8n of Make met eigen staging als je Shopify, WooCommerce, Stripe, voorraad en een menselijke queue moet verbinden, maar je aantal acties en uitzonderingen overzichtelijk blijft. Laat de workflowtool triggers, meldingen en retries afhandelen. Bewaar business key, payload-hash, approval en read-back in je eigen laag. Een kant-en-klare flow is snel; de veiligheidsregels blijven jouw verantwoordelijkheid.

Kies maatwerk als de agent per actie verschillende rechten nodig heeft, wanneer een write niet zonder snapshotcontrole mag worden uitgevoerd of wanneer je meerdere winkels, valuta, betaalproviders en publicatiekanalen beheert. Dan bouw je een policylaag en release-worker die elke actie opnieuw beoordeelt. Dat is geen luxe. Het is de plek waar je eigenaar, limiet, goedkeuring en herstel samenbrengt.

Voor de juridische beoordeling geldt een aparte grens. Als een toepassing onder de categorie hoog-risico van de EU AI Act valt, beschrijft artikel 14 menselijk toezicht met kunnen monitoren, interpreteren, overrulen en veilig onderbreken. Of jouw webshop-agent daaronder valt, moet je voor jouw situatie laten beoordelen. De geconsolideerde uitleg van artikel 14 noemt deze toezichtsmogelijkheden en waarschuwt voor blind vertrouwen op modeluitvoer, gecontroleerd op 25 oktober 2026. De technische maatregelen in deze gids zijn ook buiten die categorie verstandig.

Kies niet automatiseren als je nog geen bronhouder, approver of herstelverantwoordelijke kunt aanwijzen. Een menselijk besluit is geen tijdelijke omweg wanneer niemand de gevolgen kan dragen.

Welke route past bij jouw webshop-agent?

Wat doet de eerste versie van je agent?

De uitkomsten zijn dezelfde drie routes als in het kader. De keuzehulp verkort de eerste beslissing, maar de geschreven criteria bepalen alsnog of een agent werkelijk klaar is voor productie.

Uitgewerkt voorbeeld: een Shopify-agent voor drie risicovolle acties

Dit is een synthetisch werkvoorbeeld voor het ontwerp, geen klantcase. Stel dat een webshop voor woonaccessoires een Shopify-agent heeft met de naam shop-ops-agent. De agent mag orders en producten lezen, retourinformatie samenvatten en voorstellen maken. Hij mag zelf niets schrijven.

De eigenaar legt deze matrix vast:

ActieAgentRelease-workerBeleid
Order lezenJaJa voor hercontroleAlleen noodzakelijke ordervelden
Refund van € 49,95 voorstellenJaJa na approvalOorspronkelijke betaling, geen automatische restock
Refund uitvoerenNeeJaElke refund menselijke vrijgave
Product publicerenVoorstelJaAlleen Online Store, geen andere kanalen
Order annulerenVoorstelJaAltijd menselijke vrijgave, nooit bij fulfilled zonder extra besluit

Geval 1: refund met verloren response

Order 10482 bevat één tafellamp met een totaal van € 121,00. De klant meldt transportschade. De agent leest de order, controleert of er nog geen refund bestaat en maakt in staging het voorstel voor € 49,95 zonder restock. De aanvraag krijgt:

  • business_key: refund:shopify:10482:damage:v1;
  • idempotency_key: refund:shopify:10482:damage:v1;
  • doel: order 10482;
  • limietcontrole: geslaagd onder de eerste beoordelingsdrempel;
  • payload_hash: hash van bedrag, valuta, reden en restockkeuze;
  • status: wacht_op_goedkeuring;
  • approver: operations-owner-02;
  • vervaltijd: 25 oktober 2026 om 18:00.

De operations-owner vergelijkt het bedrag met de foto en retourregistratie en keurt exact deze payload goed. De release-worker leest de order opnieuw, ziet dat het orderbedrag en de bestaande refunds niet veranderd zijn en verstuurt in API-versie 2026-04 refundCreate met dezelfde @idempotent-sleutel. Voor deze mutation is die sleutel sinds 2026-04 verplicht.

De verbinding valt weg na de request. De status wordt unknown. Voor deze ondersteunde refundCreate-mutation maakt de worker geen nieuwe sleutel: hij zoekt op order-ID, bestaande refund-ID en stagingrecord en kan bij een identieke retry dezelfde sleutel gebruiken. De teruggelezen refund bevat € 49,95 en verwijst naar order 10482. De status wordt verified. Was er € 99,90 teruggestort, dan bleef de status exception en werd de agent gepauzeerd. Er komt geen tweede automatische financiële actie achteraan. Voor orderCancel of publishablePublish zou dezelfde sleutel geen Shopify-deduplicatie garanderen; daar zijn de eigen business key, lock en reconciliatie verplicht.

Geval 2: productpublicatie die tijdens de review veroudert

De agent maakt een voorstel om product LAMP-42 op Online Store te publiceren. De stagingrecord bevat product-ID, kanaal-ID, titel, prijs, productversie, payload-hash en goedkeurder. Voor de write wijzigt een merchandiser de titel en zet het product tijdelijk op concept. De huidige productversie wijkt af van de snapshot die de goedkeurder zag.

De release-worker weigert de publicatie. Hij maakt geen nieuwe payload en gebruikt de oude approval niet opnieuw. Het item gaat naar de queue met reden source_changed_after_approval. De merchandiser krijgt een nieuwe beoordeling met de actuele titel en publicatiestatus. Dit is trager dan blind doorzetten. Het voorkomt dat iemand een oude goedkeuring gebruikt om nieuwe inhoud zichtbaar te maken.

Geval 3: foutieve order die niet automatisch mag worden geannuleerd

De agent ziet order 10483 met een verkeerd afleveradres en stelt annuleren plus opnieuw bestellen voor. De order is al gedeeltelijk fulfilled. De policylaag blokkeert het voorstel omdat orderCancel onomkeerbaar is en de fulfilmentstatus niet past bij de standaardregel.

De operationsmedewerker ziet de oude en nieuwe adresgegevens, fulfilmentstatus, betaalstatus en mogelijke klantactie. Die beslist handmatig of de vervoerder nog kan worden aangepast, of een correctie nodig is en of financiële gevolgen ontstaan. De agent krijgt geen extra macht omdat hij een overtuigende reden formuleerde. De beslissing blijft in de auditlog met een concrete eigenaar en vervolgstap.

In deze drie gevallen is de agent nuttig bij lezen, samenvatten en voorbereiden. De live shop ziet alleen acties die een menselijke eigenaar, een nog geldige snapshot, een limiet en een exact goedgekeurde payload hebben doorstaan.

Vergelijkingstabel: welke route koop je in?

Controleer prijzen en planvoorwaarden opnieuw vóór je start. De onderstaande gegevens zijn gecontroleerd op 25 oktober 2026.

RouteWat je krijgtPrijs of licentie, oktober 2026Past bij
Shopify FlowNative triggers, voorwaarden en acties binnen je shop en appsGratis app op Basic, Grow, Advanced en Plus. HTTP Request vanaf GrowDeterministische regels, signalen en interne concepten
n8n Cloud StarterOnbeperkte gebruikers en workflows, 2.500 workflow-executions met onbeperkte stappen€ 20 per maand bij jaarbetaling. Pro: € 50 voor 10.000 executionsEen kleine integratie met eigen staging en approval-queue
Make Free of betaaldVisuele scenario’s en veel appkoppelingen; credits per moduleactieFree: 1.000 credits per maand. Betaalde prijs hangt af van credits en factureringSnel verbinden wanneer de queue en policy overzichtelijk blijven
Eigen release-serviceEigen policylaag, queue, minimale credentials, idempotentie en read-backGeen vaste licentieprijs. Je betaalt bouw, hosting, onderhoud en toezichtRefunds, annuleringen, publicaties en meerdere shops
Niets automatiserenEerst bronhouderschap, eigenaar en herstelproces op ordeGeen extra automatiseringslicentieWanneer een write nog niemand heeft die hem kan vrijgeven of herstellen

n8n publiceert op zijn actuele prijspagina de grenzen van Starter en Pro en rekent per volledige workflowuitvoering. Make rekent credits voor acties in een scenario, waaronder lezen, zoeken, maken, bijwerken en verwijderen, zoals de actuele uitleg over Make-credits uitlegt. De bedragen van abonnementen zijn maar een deel van de keuze. De kosten van een foutieve write zitten vaak in herstel, klantcontact en verloren vertrouwen.

Een agent is pas vrijgegeven wanneer de macht buiten het model begrensd is, de mens de exacte handeling kan zien en een onbekende uitkomst veilig stilvalt. Wie dat ontwerp goed doet, maakt van AI geen extra beheerder met een sleutelbos, maar een snelle voorbereiding op een beslissing die nog steeds aantoonbaar van de juiste eigenaar komt.

Veelgestelde vragen

Alisina Nawabi
Geschreven doorAlisina Nawabi

AI Product Engineer & Solutions Architect

Webshop-agent veilig koppelen

Ik ontwerp de rechtenmatrix, staging en vrijgave rond jouw webshop en bouw de uitvoerlaag met limieten, logging, read-back en herstelpaden voor de acties die echt geld of zichtbaarheid raken.

Meer informatie

Dit artikel is geproduceerd samen met het Agent Team. Meer over de redactie.

Gerelateerde artikelen

API-limieten afhandelen: 429, batching en herstelbare orderflows
Gids
Uitgebreide gids18 min

18 okt 09:00

API-limieten afhandelen: 429, batching en herstelbare orderflows

Bouw een productieflow die 429’s respecteert, werk doseert, retries begrenst en onbekende writes veilig herstelt. Met idempotentie, reconciliatie en menselijke vrijgave blijven orders en facturen controleerbaar.

AI-agent voor logistieke uitzonderingen: van carrier-event naar claim en vervangzending
Gids
Uitgebreide gids25 min

11 okt 17:00

AI-agent voor logistieke uitzonderingen: van carrier-event naar claim en vervangzending

Een carrier meldt geleverd, je klant meldt schade of vermissing. Leer hoe je events normaliseert, claimbewijs verzamelt en claim, vervangzending, refund of herplanning veilig naar menselijke vrijgave routeert.

Available-to-promise per kanaal publiceren: maak van voorraad een leverbelofte
Gids
Uitgebreide gids20 min

11 okt 09:00

Available-to-promise per kanaal publiceren: maak van voorraad een leverbelofte

Bepaal welke voorraad je echt kunt beloven. Deze gids brengt bronhouder, reserveringen, quarantaine, verwachte ontvangsten, kanaalpublicatie, versheid en reconciliatie samen in één werkbare ATP-keten.

Data-sync met bronversie: voorkom stale writes en geef veilig vrij
Gids
Uitgebreide gids19 min

16 okt 09:00

Data-sync met bronversie: voorkom stale writes en geef veilig vrij

Voorkom dat oude synchronisatiedata nieuwe waarden overschrijft. Bouw bronversies, optimistic concurrency, idempotente retries, read-back en menselijke vrijgave in één herstelbare data-sync.

AI-agent in productie meten: uitzonderingsratio, vrijgavetijd en herstel
Gids
Uitgebreide gids20 min

13 okt 17:00

AI-agent in productie meten: uitzonderingsratio, vrijgavetijd en herstel

Bouw een operationele scorecard voor taakvolume, uitzonderingen, bewijs, menselijke vrijgave, herstel en ERP-read-back. Zo weet je wanneer een productie-agent meer werk krijgt, moet bijsturen of moet stoppen.

AI-agent voor verkooporders in de groothandel: veilige ERP-vrijgave
Gids
Uitgebreide gids18 min

10 okt 09:00

AI-agent voor verkooporders in de groothandel: veilige ERP-vrijgave

Laat e-mail-, pdf- en portalorders gecontroleerd naar je ERP gaan: bewijs klant, artikel, contractprijs en beschikbare voorraad vóór menselijke vrijgave.