# Reageren op de uitkomst van een aanvraag in n8n

Start een workflow wanneer een aanvraag wordt voltooid, verloopt of wordt geannuleerd, of pauzeer de workflow die hem heeft verstuurd totdat de ontvanger antwoordt, en vertak op het oordeel.

## Reageren op de uitkomst van een aanvraag in n8n

n8n kan op twee manieren over de uitkomst van een aanvraag horen: een formbase Trigger die draait voor elke aanvraag bij een formulier, of een Wait-node die de workflow pauzeert die de aanvraag heeft aangemaakt. Beide eindigen in een Switch op approve, decline of changes.

<p>
  Je hebt een <a href="/nl/guides/n8n/connect">formbase-credential in n8n</a> nodig, en je n8n moet bereikbaar zijn vanaf het internet over
  HTTPS; zie <a href="/nl/guides/n8n/install-the-node">Installeer de formbase-node in n8n</a>. Om op een oordeel te vertakken, heeft het
  formulier een <a href="/nl/requests/decisions-and-approvals">beslissingsvraag</a> nodig. Deze handleiding gebruikt een
  goedkeuringsformulier met één.
</p>

<h2 id="trigger">Start een workflow vanuit de trigger</h2>

<h3 id="pick-the-event">1. Kies het event</h3>

<p>
  Voeg een <strong>formbase Trigger</strong> toe, kies de credential en het formulier, en kies een van de aanvraagevents onder{' '}
  <strong>Event</strong>:
</p>

<h3 id="test-the-trigger">2. Test hem met een echte aanvraag</h3>

<p>
  Een testaanvraag start nooit een aanvraagtrigger, dus stuur een echte met Delivery op None, zoals in{' '}
  <a href="/nl/guides/n8n/send-a-request">Een aanvraag versturen vanuit een n8n-workflow</a>, en open de link zelf. Klik dan op{' '}
  <strong>Execute step</strong> en dien het formulier binnen twee minuten in.
</p>

<p>
  Het event draagt een <strong>data.request</strong>-object naast de antwoorden. De <code>outcome</code> ervan is <code>approve</code>,{' '}
  <code>decline</code> of <code>changes</code>, en de <code>externalId</code> ervan is de ID die je instelde, zodat je het record kunt
  opzoeken waar de aanvraag over ging. Elk veld staat beschreven in de <a href="/nl/requests/callbacks#payload">callbackpayload</a>.
</p>

<p>
  Verlopen en geannuleerde events zijn lastig te vangen met <strong>Execute step</strong>. Publiceer in plaats daarvan de workflow en
  controleer <strong>Executions</strong>.
</p>

<h3 id="branch-on-the-outcome">3. Vertak op de uitkomst</h3>

<p>
  Voeg een <strong>Switch</strong>-node toe met één routeringsregel per oordeel. Elke regel vergelijkt{' '}
  <code>{'{{ $json.data.request.outcome }}'}</code> met een waarde; zet <strong>Rename Output</strong> aan om de tak ernaar te noemen:
</p>

<p>
  Vertak op <code>data.request.outcome</code> in plaats van <code>data.answers.decision</code>: het ontbreekt, in plaats van een andere
  waarde te zijn, wanneer de aanvraag is verlopen of geannuleerd. Vergelijk met waarden, nooit met de labels in <code>data.display</code>:
  een label verandert wanneer je de optie hernoemt of de ontvanger in een andere taal antwoordt.
</p>

<p>
  Verbind een node met elke tak, en <strong>Publish</strong> dan de workflow. Vanaf dan draait elke voltooide aanvraag voor het formulier
  hem.
</p>

<h2 id="wait-for-the-outcome">Wachten op de uitkomst in dezelfde workflow</h2>

<p>
  Hier pauzeert de workflow die de aanvraag verstuurt totdat de ontvanger antwoordt, en gaat dan verder. Het vraagt drie wijzigingen aan de
  workflow uit <a href="/nl/guides/n8n/send-a-request">Een aanvraag versturen vanuit een n8n-workflow</a>.
</p>

<h3 id="turn-on-wait">1. Zet Wait for the Outcome aan</h3>

<p>
  Zet in de node <strong>Create request</strong> <strong>Wait for the Outcome</strong> aan. De node stuurt formbase de resume-URL van deze
  uitvoering als callback van de aanvraag. Laat <strong>Callback URL</strong> leeg; de node weigert beide tegelijk.
</p>

<p>
  Elke uitvoering heeft zijn eigen resume-URL, dus een External ID die je hergebruikt van een eerdere uitvoering mislukt. Neem{' '}
  <code>{'{{ $execution.id }}'}</code> erin op, of laat hem leeg.
</p>

<h3 id="add-a-wait-node">2. Voeg een Wait-node toe</h3>

<p>
  Voeg direct erna een <strong>Wait</strong>-node toe, met <strong>Resume</strong> ingesteld op <strong>On Webhook Call</strong> en de
  HTTP-methode op <code>POST</code>.
</p>

<h3 id="branch-on-the-event">3. Vertak op het event</h3>

<p>
  Voeg een <strong>Switch</strong> toe na de Wait-node. De Wait-node zet het event onder <code>body</code>, dus vergelijk{' '}
  <code>{'{{ $json.body.data.request.outcome }}'}</code>. Om een voltooide aanvraag te onderscheiden van een verlopen of geannuleerde,
  vergelijk <code>{'{{ $json.body.type }}'}</code> met <code>request.completed</code>, <code>request.expired</code> of{' '}
  <code>request.canceled</code>.
</p>

<p>Draai de workflow. De uitvoering stopt bij de Wait-node totdat de ontvanger indient, en gaat dan verder via de bijpassende tak:</p>

<ul>
  <li>
    Een run vanuit de editor wacht ook op een echt antwoord. Test Mode werkt hier: de callback van een testaanvraag hervat de workflow nog
    steeds.
  </li>
  <li>
    Een aanvraag verloopt na 30 dagen tenzij je <strong>Expires At</strong> instelt, en het verlopen hervat de uitvoering met{' '}
    <code>request.expired</code>. Stel <strong>Expires At</strong> in om het wachten eerder te beëindigen.
  </li>
  <li>
    De Wait-node controleert de header <code>X-formbase-Signature</code> niet; hij vertrouwt erop dat de resume-URL moeilijk te raden is.
    Als dat niet genoeg is, gebruik dan de formbase Trigger, die elk event controleert.
  </li>
</ul>

<h2 id="troubleshooting">Als er niets draait</h2>

<ul>
  <li>
    <strong>Het was een testaanvraag.</strong> Een aanvraag aangemaakt met Test Mode aan, of met <strong>Try it yourself</strong>, start
    nooit een aanvraagtrigger. Alleen zijn <a href="/nl/requests/callbacks">callback</a> vuurt af.
  </li>
  <li>
    <strong>De aanvraag was voor een ander formulier.</strong> De trigger luistert naar het formulier dat je erin hebt gekozen.
  </li>
  <li>
    <strong>De workflow is niet gepubliceerd, of zijn credential bereikt een andere werkruimte.</strong> Zie de controles in{' '}
    <a href="/nl/guides/n8n/public-link-submissions#troubleshooting">de handleiding over de openbare link</a>.
  </li>
  <li>
    <strong>
      Create request mislukt met <em>callbackUrl is not allowed</em>.
    </strong>{' '}
    Je n8n geeft een <code>http://</code>- of privé-resume-URL af. Zie{' '}
    <a href="/nl/guides/n8n/install-the-node#public-address">Vertel n8n zijn openbare adres</a>.
  </li>
  <li>
    <strong>De Wait-node hervat nooit.</strong> formbase kan de resume-URL niet bereiken, bijvoorbeeld omdat de tunnel plat ligt of de proxy{' '}
    <code>/webhook-waiting/</code> blokkeert.
  </li>
</ul>

<h2 id="next">Volgende</h2>

<div class="not-prose grid gap-3 sm:grid-cols-2 mb-8">
  - [Aanvragen opzoeken, eraan herinneren en annuleren in n8n](/nl/guides/n8n/manage-requests) — Zoek een aanvraag op External ID, spoor de ontvanger aan, of trek hem in.
  - [Beslissingen & goedkeuringen](/nl/requests/decisions-and-approvals) — De beslissingsvraag en zijn drie waarden.
</div>
