# Auf das Ergebnis eines Requests in n8n reagieren

Starte einen Workflow, wenn ein Request abgeschlossen wird, abläuft oder storniert wird, oder pausiere den Workflow, der ihn gesendet hat, bis die empfangende Person antwortet, und verzweige nach dem Urteil.

## Auf das Ergebnis eines Requests in n8n reagieren

n8n kann auf zwei Wegen vom Ergebnis eines Requests erfahren: über einen formbase Trigger, der für jeden Request zu einem Formular läuft, oder über einen Wait-Node, der den Workflow pausiert, der den Request erstellt hat. Beide enden in einem Switch auf approve, decline oder changes.

<p>
  Du brauchst eine <a href="/de/guides/n8n/connect">formbase-Credential in n8n</a>, und dein n8n muss aus dem Internet über HTTPS erreichbar
  sein; siehe <a href="/de/guides/n8n/install-the-node">Den formbase-Node in n8n installieren</a>. Um nach einem Urteil zu verzweigen,
  braucht das Formular eine <a href="/de/requests/decisions-and-approvals">Entscheidungsfrage</a>. Diese Anleitung nutzt ein
  Genehmigungsformular mit einer.
</p>

<h2 id="trigger">Einen Workflow vom Trigger aus starten</h2>

<h3 id="pick-the-event">1. Das Event wählen</h3>

<p>
  Füg einen <strong>formbase Trigger</strong> hinzu, wähle die Credential und das Formular, und wähle eines der Request-Events unter{' '}
  <strong>Event</strong>:
</p>

<h3 id="test-the-trigger">2. Mit einem echten Request testen</h3>

<p>
  Ein Test-Request startet nie einen Request-Trigger, sende also einen echten mit Delivery auf None, wie in{' '}
  <a href="/de/guides/n8n/send-a-request">Einen Request aus einem n8n-Workflow senden</a>, und öffne seinen Link selbst. Klicke dann auf{' '}
  <strong>Execute step</strong> und sende das Formular innerhalb von zwei Minuten ab.
</p>

<p>
  Das Event trägt neben den Antworten ein <strong>data.request</strong>-Objekt. Sein <code>outcome</code> ist <code>approve</code>,{' '}
  <code>decline</code> oder <code>changes</code>, und seine <code>externalId</code> ist die ID, die du gesetzt hast, sodass du den Datensatz
  findest, um den es beim Request ging. Jedes Feld steht im <a href="/de/requests/callbacks#payload">Callback-Payload</a>.
</p>

<p>
  Abgelaufene und stornierte Events sind mit <strong>Execute step</strong> schwer abzufangen. Veröffentliche stattdessen den Workflow und
  schau in <strong>Executions</strong> nach.
</p>

<h3 id="branch-on-the-outcome">3. Nach dem Ergebnis verzweigen</h3>

<p>
  Füg einen <strong>Switch</strong>-Node mit einer Routing-Regel pro Urteil hinzu. Jede Regel vergleicht{' '}
  <code>{'{{ $json.data.request.outcome }}'}</code> mit einem Wert; schalt <strong>Rename Output</strong> ein, um den Zweig danach zu
  benennen:
</p>

<p>
  Verzweige nach <code>data.request.outcome</code> statt nach <code>data.answers.decision</code>: Es fehlt, statt einen anderen Wert zu
  tragen, wenn der Request abgelaufen oder storniert wurde. Vergleiche mit Werten, nie mit den Labels in <code>data.display</code>: Ein
  Label ändert sich, wenn du die Option umbenennst oder die empfangende Person in einer anderen Sprache antwortet.
</p>

<p>
  Verbinde jeden Zweig mit einem Node, dann <strong>Publish</strong> den Workflow. Von da an läuft er bei jedem abgeschlossenen Request zum
  Formular.
</p>

<h2 id="wait-for-the-outcome">Im selben Workflow auf das Ergebnis warten</h2>

<p>
  Hier pausiert der Workflow, der den Request sendet, bis die empfangende Person antwortet, und macht dann weiter. Es braucht drei
  Änderungen am Workflow aus <a href="/de/guides/n8n/send-a-request">Einen Request aus einem n8n-Workflow senden</a>.
</p>

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

<p>
  Schalt im Node <strong>Create request</strong> <strong>Wait for the Outcome</strong> ein. Der Node sendet formbase die Resume-URL dieser
  Ausführung als Callback des Requests. Lass <strong>Callback URL</strong> leer; der Node lehnt beide gleichzeitig ab.
</p>

<p>
  Jede Ausführung hat ihre eigene Resume-URL, eine aus einer früheren Ausführung wiederverwendete External ID schlägt also fehl. Nimm{' '}
  <code>{'{{ $execution.id }}'}</code> in sie auf, oder lass sie leer.
</p>

<h3 id="add-a-wait-node">2. Einen Wait-Node hinzufügen</h3>

<p>
  Füg direkt danach einen <strong>Wait</strong>-Node hinzu, mit <strong>Resume</strong> auf <strong>On Webhook Call</strong> und der
  HTTP-Methode bei <code>POST</code> belassen.
</p>

<h3 id="branch-on-the-event">3. Nach dem Event verzweigen</h3>

<p>
  Füg nach dem Wait-Node einen <strong>Switch</strong> hinzu. Der Wait-Node legt das Event unter <code>body</code> ab, vergleiche also{' '}
  <code>{'{{ $json.body.data.request.outcome }}'}</code>. Um einen abgeschlossenen Request von einem abgelaufenen oder stornierten zu
  unterscheiden, vergleiche <code>{'{{ $json.body.type }}'}</code> mit <code>request.completed</code>, <code>request.expired</code> oder{' '}
  <code>request.canceled</code>.
</p>

<p>
  Führ den Workflow aus. Die Ausführung stoppt am Wait-Node, bis die empfangende Person absendet, und macht dann im passenden Zweig weiter:
</p>

<ul>
  <li>
    Auch ein Lauf aus dem Editor wartet auf eine echte Antwort. Test Mode funktioniert hier: Der Callback eines Test-Requests setzt den
    Workflow trotzdem fort.
  </li>
  <li>
    Ein Request läuft nach 30 Tagen ab, sofern du kein <strong>Expires At</strong> setzt, und ein Ablauf setzt die Ausführung mit{' '}
    <code>request.expired</code> fort. Setz <strong>Expires At</strong>, um das Warten früher zu beenden.
  </li>
  <li>
    Der Wait-Node kann den <code>X-formbase-Signature</code>-Header nicht prüfen; er verlässt sich darauf, dass die Resume-URL schwer zu
    erraten ist. Reicht das nicht, nutze den formbase Trigger, der jede Zustellung prüft.
  </li>
</ul>

<h2 id="troubleshooting">Wenn nichts läuft</h2>

<ul>
  <li>
    <strong>Es war ein Test-Request.</strong> Ein mit aktiviertem Test Mode erstellter Request, oder mit <strong>Try it yourself</strong>,
    startet nie einen Request-Trigger. Nur sein <a href="/de/requests/callbacks">Callback</a> feuert.
  </li>
  <li>
    <strong>Der Request war für ein anderes Formular.</strong> Der Trigger hört auf das Formular, das du in ihm gewählt hast.
  </li>
  <li>
    <strong>Der Workflow ist nicht veröffentlicht, oder seine Credential erreicht einen anderen Workspace.</strong> Siehe die Prüfungen in{' '}
    <a href="/de/guides/n8n/public-link-submissions#troubleshooting">der Freigabelink-Anleitung</a>.
  </li>
  <li>
    <strong>
      Create request schlägt fehl mit <em>callbackUrl is not allowed</em>.
    </strong>{' '}
    Dein n8n gibt eine <code>http://</code>- oder private Resume-URL heraus. Siehe{' '}
    <a href="/de/guides/n8n/install-the-node#public-address">n8n seine öffentliche Adresse mitteilen</a>.
  </li>
  <li>
    <strong>Der Wait-Node setzt nie fort.</strong> formbase erreicht die Resume-URL nicht, zum Beispiel weil der Tunnel down ist oder der
    Proxy <code>/webhook-waiting/</code> blockiert.
  </li>
</ul>

<h2 id="next">Als Nächstes</h2>

<div class="not-prose grid gap-3 sm:grid-cols-2 mb-8">
  - [Requests in n8n nachschlagen, daran erinnern und stornieren](/de/guides/n8n/manage-requests) — Einen Request über die External ID finden, die empfangende Person anstoßen, oder ihn zurückziehen.
  - [Entscheidungen & Genehmigungen](/de/requests/decisions-and-approvals) — Die Entscheidungsfrage und ihre drei Werte.
</div>
