Handleidingen · n8n (zelf gehost)
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.
Last checked
Je hebt een formbase-credential in n8n nodig, en je n8n moet bereikbaar zijn vanaf het internet over HTTPS; zie Installeer de formbase-node in n8n. Om op een oordeel te vertakken, heeft het formulier een beslissingsvraag nodig. Deze handleiding gebruikt een goedkeuringsformulier met één.
| Gebruik het wanneer | |
|---|---|
| formbase Trigger | Aanvragen voor het formulier worden overal vandaan verstuurd: het dashboard, de API, een agent of een andere workflow. Eén gepubliceerde workflow handelt ze allemaal af. |
| Wait for the Outcome | De workflow die de aanvraag aanmaakt, moet verdergaan met het antwoord, met behoud van alles wat hij al wist, zoals het record waaraan hij werkte. |
Start een workflow vanuit de trigger
1. Kies het event
Voeg een formbase Trigger toe, kies de credential en het formulier, en kies een van de aanvraagevents onder Event:
| Event | Draait wanneer | Draagt |
|---|---|---|
| Request Completed | De ontvanger dient het formulier in. | De aanvraag, de uitkomst en elk antwoord. |
| Request Expired | De aanvraag bereikt zijn vervaldatum onbeantwoord. | Alleen de aanvraag. |
| Request Canceled | Iemand annuleert de aanvraag, vanuit het dashboard, de API of een Cancel request-node, of formbase annuleert hem omdat het formulier naar de prullenbak is verplaatst. | De aanvraag en de reden van annulering. |
2. Test hem met een echte aanvraag
Een testaanvraag start nooit een aanvraagtrigger, dus stuur een echte met Delivery op None, zoals in Een aanvraag versturen vanuit een n8n-workflow, en open de link zelf. Klik dan op Execute step en dien het formulier binnen twee minuten in.
Het event draagt een data.request-object naast de antwoorden. De outcome ervan is approve,
decline of changes, en de externalId ervan is de ID die je instelde, zodat je het record kunt
opzoeken waar de aanvraag over ging. Elk veld staat beschreven in de callbackpayload.
Verlopen en geannuleerde events zijn lastig te vangen met Execute step. Publiceer in plaats daarvan de workflow en controleer Executions.
3. Vertak op de uitkomst
Voeg een Switch-node toe met één routeringsregel per oordeel. Elke regel vergelijkt
{{ $json.data.request.outcome }} met een waarde; zet Rename Output aan om de tak ernaar te noemen:

Vertak op data.request.outcome in plaats van data.answers.decision: 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 data.display:
een label verandert wanneer je de optie hernoemt of de ontvanger in een andere taal antwoordt.
Verbind een node met elke tak, en Publish dan de workflow. Vanaf dan draait elke voltooide aanvraag voor het formulier hem.
Wachten op de uitkomst in dezelfde workflow
Hier pauzeert de workflow die de aanvraag verstuurt totdat de ontvanger antwoordt, en gaat dan verder. Het vraagt drie wijzigingen aan de workflow uit Een aanvraag versturen vanuit een n8n-workflow.
1. Zet Wait for the Outcome aan
Zet in de node Create request Wait for the Outcome aan. De node stuurt formbase de resume-URL van deze uitvoering als callback van de aanvraag. Laat Callback URL leeg; de node weigert beide tegelijk.
Elke uitvoering heeft zijn eigen resume-URL, dus een External ID die je hergebruikt van een eerdere uitvoering mislukt. Neem
{{ $execution.id }} erin op, of laat hem leeg.
2. Voeg een Wait-node toe
Voeg direct erna een Wait-node toe, met Resume ingesteld op On Webhook Call en de
HTTP-methode op POST.
3. Vertak op het event
Voeg een Switch toe na de Wait-node. De Wait-node zet het event onder body, dus vergelijk
{{ $json.body.data.request.outcome }}. Om een voltooide aanvraag te onderscheiden van een verlopen of geannuleerde,
vergelijk {{ $json.body.type }} met request.completed, request.expired of
request.canceled.
Draai de workflow. De uitvoering stopt bij de Wait-node totdat de ontvanger indient, en gaat dan verder via de bijpassende tak:

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.
Een aanvraag verloopt na 30 dagen tenzij je Expires At instelt, en het verlopen hervat de uitvoering met
request.expired. Stel Expires At in om het wachten eerder te beëindigen.De Wait-node controleert de header
X-formbase-Signatureniet; 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.
Als er niets draait
Het was een testaanvraag. Een aanvraag aangemaakt met Test Mode aan, of met Try it yourself, start nooit een aanvraagtrigger. Alleen zijn callback vuurt af.
De aanvraag was voor een ander formulier. De trigger luistert naar het formulier dat je erin hebt gekozen.
De workflow is niet gepubliceerd, of zijn credential bereikt een andere werkruimte. Zie de controles in de handleiding over de openbare link.
Create request mislukt met callbackUrl is not allowed.
Je n8n geeft een
http://- of privé-resume-URL af. Zie Vertel n8n zijn openbare adres.De Wait-node hervat nooit. formbase kan de resume-URL niet bereiken, bijvoorbeeld omdat de tunnel plat ligt of de proxy
/webhook-waiting/blokkeert.