Anleitungen

Anleitungen14 Min. Lesezeit

Kontaktformular auf einer statischen Site ohne Backend einbauen

Bau ein funktionierendes Kontaktformular in eine statische Site ohne Server ein: wohin der POST geht, Spam, Antworten per E-Mail und Code für jeden Host und jedes Framework.

Preet SutharGründer, Ikiform

Ein statischer Host liefert Dateien aus und lehnt einen Formular-POST ab, meist mit 405 oder 404, also muss das Formular woandershin senden. Richte die action des Formulars auf ein Formular-Backend wie Ikiform aus, das jede Nachricht speichert, Spam filtert und dir eine E-Mail mit dem Absender als Reply-To-Adresse schickt. Deine Site bleibt statisch: kein Servercode, keine Secret Keys in der Seite und keine Änderung an deinem Deployment.

Eine statische Site ist ein Ordner mit HTML, CSS und JavaScript, den ein Host als Dateien ausliefert. Deshalb ist sie schnell, günstig und schwer kaputtzumachen. Und deshalb ist das Kontaktformular das Erste, was nicht mehr funktioniert: Eine Formulareinsendung ist ein Request, den irgendetwas annehmen muss, und auf einem statischen Host hört niemand zu.

Warum das Formular auf einem statischen Host scheitert

Ein <form method="post"> ohne action sendet an die Seite, auf der es steht. Auf einem statischen Host ist das eine Datei, und Dateien beantworten nur GET und HEAD. Wir haben am 25.10.2026 bei jedem großen Host einen POST an eine live geschaltete statische Seite gesendet. Keiner hat etwas gespeichert:

HostWas ein POST an eine statische Seite bekommt
GitHub Pages405 Not Allowed, als kleine HTML-Seite
Vercel405 mit leerem Body
Netlify404, mit der 404-Seite der Site, falls vorhanden, außer Netlify Forms hat das Formular beim Deployment erkannt
Cloudflare Pages405 mit leerem Body
Website-Endpunkt von Amazon S3405 Method Not Allowed, Code MethodNotAllowed

Die Lösung ist überall dieselbe: Schick den Post an eine URL, die ihn annimmt. Diese URL kann Code sein, den du selbst schreibst und hostest, eine Funktion deines Hosts oder ein Formular-Backend. Der Rest dieser Anleitung nutzt ein Formular-Backend, weil die Site so statisch bleibt.

Wohin ein Kontaktformular-Post geht, vor und nach der Lösungaction zeigt auf deine eigene Siteaction zeigt auf IkiformKontaktseitestatisches HTMLstatischer Hostliefert Dateien,beantwortet GET405 oder 404Nachricht verlorenKontaktseitegleiches HTML, neueactionIkiformprüft, speichert, mailtDankeseitezurück auf deiner SitePOSTPOST303Wohin ein Kontaktformular-Post geht, vor und nach der Lösungaction zeigt auf deine eigene Siteaction zeigt auf IkiformKontaktseitestatisches HTMLstatischer Hostliefert Dateien, beantwortetGET405 oder 404Nachricht verlorenKontaktseitegleiches HTML, neue actionIkiformprüft, speichert, mailtDankeseitezurück auf deiner SitePOSTPOST303
  1. Ohne action oder mit einer action, die auf einen Pfad deiner eigenen Site zeigt, sendet der Browser an den statischen Host.
  2. Der Host hat keinen Code, den er für einen POST ausführen könnte, also antwortet er mit 405 oder 404, und die Nachricht ist weg.
  3. Zeigt die action auf deinen Ikiform-Endpunkt, geht der Post an einen Server, der ihn annimmt.
  4. Ikiform prüft die Nachricht auf Spam, speichert sie und schickt dir eine E-Mail.
  5. Ikiform antwortet mit einer 303-Weiterleitung, und der Browser lädt die Dankeseite auf deiner eigenen Site.
Nur die action des Formulars ändert sich. Seite, Host und Deployment bleiben, wie sie sind.

Was mit jeder Nachricht passiert

Ikiform ist der Endpunkt, an den das Formular sendet. Es hostet weder deine Seite noch rendert es dein Formular; beides behältst du. Für jeden Post führt es die Spamprüfungen aus, speichert die Nachricht und verteilt sie an die Orte, an denen du sie liest.

Was Ikiform mit einer Kontaktformular-Nachricht machtKontaktformularauf jedem statischenHostIkiformSpamprüfung, dannspeichernBenachrichtigungs-E-MailAntwort geht an denAbsenderDashboardSuche, Spamfilter, CSVsignierter WebhookSlack, Discord, dein CodePostWas Ikiform mit einer Kontaktformular-Nachricht machtKontaktformularauf jedemstatischenHostIkiformSpamprüfung,dann speichernBenachrichtigungs-E-MailAntwort geht an denAbsenderDashboardSuche, Spamfilter,CSVsignierterWebhookSlack, Discord,dein CodePost
  1. Ein Besucher füllt das Kontaktformular aus, und es wird an deinen Ikiform-Endpunkt gesendet.
  2. Ikiform prüft Honeypot, Rate-Limit und Spam-Score und speichert dann die Nachricht.
  3. Jeder Benachrichtigungsempfänger bekommt eine E-Mail, mit der Adresse des Absenders als Reply-To.
  4. Die Nachricht erscheint im Dashboard, wo du sie durchsuchen, Spam wiederherstellen und als CSV exportieren kannst.
  5. Wenn du einen Webhook hinzufügst, sendet Ikiform eine signierte Kopie an Slack, Discord, ein Automatisierungstool oder deinen eigenen Code.
Für die meisten Kontaktformulare reicht E-Mail. Füge einen Webhook hinzu, wenn Nachrichten dort landen sollen, wo du ohnehin arbeitest.

Fünf Wege, das Formular einer statischen Site zu empfangen

AnsatzStark beiNachteile
Ein mailto:-Link oder action="mailto:..."Null Einrichtung. Reicht für eine persönliche Seite mit wenig Traffic.Öffnet die Mail-App des Besuchers, falls eine eingerichtet ist. Nichts wird gespeichert oder gefiltert, und deine Adresse steht für Scraper im HTML.
Die Formularfunktion deines Hosts, etwa Netlify FormsEin Attribut, kein weiteres Konto und meist im Hosting-Tarif enthalten.Funktioniert nur bei diesem Host. Ein Hostwechsel bedeutet, das Formular neu zu bauen, und per JavaScript gerenderte Formulare brauchen Umwege.
Eine Serverless-Funktion, die du selbst schreibstVolle Kontrolle über Validierung, Speicherung und die E-Mail, die du verschickst.Du betreibst jetzt ein Backend: einen API-Schlüssel für E-Mail, Spamfilter, Rate-Limits, Wiederholungsversuche und Logs. Das Funktionsformat ist bei jedem Host anders.
Ein gehostetes Formular-Embed, etwa Google Forms, Tally oder TypeformKein Code. Gut für lange oder mehrstufige Formulare.Ein iframe oder ein Link zu einer anderen Site, mit deren Look und deren Skripten auf deiner Seite.
Ein Formular-Backend, etwa Ikiform, Formspree, Basin oder Web3FormsDein eigenes HTML auf jedem Host. Speicherung, Spamfilter und E-Mail ohne Server.Ein weiteres Konto und eine weitere Rechnung, und die Formulardaten liegen bei diesem Dienst.

Wenn du auf Netlify bist und nie wechseln willst, ist Netlify Forms vom Aufwand her kaum zu schlagen. Wenn du das Backend selbst schreiben willst, ist eine Funktion ein gutes Wochenendprojekt. Wenn das Formular weiter funktionieren soll, wenn du Host oder Framework wechselst, nimm ein Formular-Backend. Die Vergleiche stellen die Backends nebeneinander.

Das Formular

Jedes Beispiel unten sendet aus dem Browser, weil ein statisches Deployment keinen Server hat, von dem aus es senden könnte. Wähle deinen Stack; die Wahl gilt für jedes Codebeispiel in diesen Anleitungen. Static-Site-Generatoren haben eigene Einrichtungsseiten: Jekyll, Hugo, Eleventy und Gatsby.

Das ist die ganze Integration für eine handgeschriebene Site. Das Formular sendet auf klassischem Weg, funktioniert also auch mit ausgeschaltetem JavaScript, und der Browser landet nach erfolgreichem Senden auf deiner thanks.html.

contact.html
<form id="contact" action="https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx" method="post">
  <label for="name">Name</label>
  <input id="name" name="name" autocomplete="name" maxlength="120" required />
  <p class="field-error" data-error-for="name" hidden></p>

  <label for="email">Email</label>
  <input id="email" name="email" type="email" autocomplete="email" required />
  <p class="field-error" data-error-for="email" hidden></p>

  <label for="message">Message</label>
  <textarea id="message" name="message" rows="6" minlength="10" maxlength="5000" required></textarea>
  <p class="field-error" data-error-for="message" hidden></p>

  <input type="hidden" name="_redirect" value="https://example.com/thanks.html" />
  <input name="_gotcha" type="text" tabindex="-1" autocomplete="off" hidden />
  <button type="submit">Send message</button>
  <p id="contact-status" role="status"></p>
</form>
<p id="contact-sent" role="status" hidden>Thanks. Your message is on its way, and I'll reply by email.</p>

<script src="/contact.js" defer></script>

Das Skript ist optional. Es hält den Besucher auf der Seite, zeigt jeden Feldfehler unter dem zugehörigen Eingabefeld und lässt die getippte Nachricht stehen, wenn etwas schiefgeht.

contact.js
const form = document.querySelector("#contact");
const status = document.querySelector("#contact-status");
const done = document.querySelector("#contact-sent");
const button = form.querySelector("button");

function showErrors(fields = {}) {
  for (const slot of form.querySelectorAll("[data-error-for]")) {
    const name = slot.dataset.errorFor;
    const message = fields[name]?.[0] ?? "";
    slot.textContent = message;
    slot.hidden = !message;
    form.elements[name]?.setAttribute("aria-invalid", message ? "true" : "false");
  }
}

form.addEventListener("submit", async (event) => {
  event.preventDefault();
  button.disabled = true;
  status.textContent = "Sending";
  try {
    const response = await fetch(form.action, {
      method: "POST",
      headers: { Accept: "application/json" },
      body: new FormData(form),
    });
    const result = await response.json();
    if (result.ok) {
      form.hidden = true;
      done.hidden = false;
      return;
    }
    showErrors(result.error.fields);
    status.textContent = result.error.message;
  } catch {
    status.textContent = "Couldn't send. Check your connection and try again.";
  }
  button.disabled = false;
});
  • Ersetze frm_xxxxxxxxxxxxxxxx durch die ID deines Formulars aus dem Dashboard. Die ID ist absichtlich öffentlich: Sie steht in deinem HTML, sobald du deployst. Leg niemals einen geheimen API-Schlüssel in eine statische Site.
  • Behalte für das E-Mail-Feld den Namen email. Ikiform setzt es als Reply-To-Adresse der Benachrichtigungs-E-Mails und prüft es gegen Domains von Wegwerfadressen.
  • Das versteckte Eingabefeld _gotcha ist der Honeypot. Menschen sehen es nie; Bots, die jedes Eingabefeld ausfüllen, markieren sich selbst als Spam.
  • Die JavaScript-Versionen senden Accept: application/json, daher antwortet Ikiform bei Erfolg mit 201 oder mit 422 und einem error.fields-Objekt, das jedes Feld und das Problem nennt.

Wenn dein Framework in Produktion doch auf einem Server läuft, kannst du stattdessen von dort senden und den Endpunkt aus der Seite heraushalten. Die Anleitungen zu Next.js, SvelteKit und Nuxt zeigen die Server-Versionen, und Von einem Server behandelt Secret Keys.

Die serverseitigen Versionen senden mit einem Secret Key, daher überspringt Ikiform Allowed domains und seine Menschlichkeitsprüfung. Jeder Post kommt dann von der IP deines Servers, und das Standard-Limit von 5 pro Minute und Besucher zählt alle deine Besucher zusammen. Wähle für ein Formular, das du über einen Server sendest, das Rate-Limit Relaxed oder Custom, und halte IKIFORM_SECRET_KEY in reinen Server-Umgebungsvariablen.

Felder für ein Kontaktformular

Name, E-Mail und Nachricht decken fast jedes Kontaktformular ab. Eine Themenauswahl lohnt sich, wenn verschiedene Leute verschiedene Arten von Nachrichten beantworten. Probier das Formular unten aus: Es führt den Validator von Ikiform in deinem Browser aus und zeigt, was gespeichert würde, oder den 422, den du zurückbekämst.

Vorschau

Führt den Validator von Ikiform in deinem Browser aus. Es wird nichts gesendet.

Dieselbe Definition wie in der Kontaktformular-Vorlage. Füge sie im Tab Fields des Formulars ein, und Ikiform setzt sie serverseitig durch, egal was im HTML steht.
FeldWarumBeachte
nameWie du die Person in der Antwort ansprichstEin Link in einem Namensfeld ist ein starkes Spam-Signal, also behalte die ID name
emailWohin die Antwort gehtPflicht. type="email" öffnet auf dem Handy die passende Tastatur
topicVertrieb und Support an die richtige Person leitenEin Select akzeptiert nur die aufgeführten Werte, darauf lässt sich also sicher filtern
messageDer Sinn des FormularsEine Mindestlänge von 10 verhindert Ein-Wort-Posts

Lass Telefonnummern, Firmengröße und alles andere weg, was du in deiner ersten Antwort nicht brauchst. Jedes zusätzliche Feld kostet Nachrichten. Ohne Felddefinition speichert Ikiform alle benannten Eingabefelder, die das Formular sendet; mit einer lehnt es Posts ab, die nicht passen.

Datei-Uploads werden noch nicht unterstützt. Ein Post mit einer Datei bekommt 422 files_not_supported.

Aus deinem Postfach antworten

Benachrichtigungs-E-Mails gehen an bis zu 10 bestätigte Empfänger pro Formular. Hat das Formular ein email-Feld, ist der Absender die Reply-To-Adresse der E-Mail, sodass Reply in deiner Mail-App direkt an ihn zurückschreibt. Du kopierst nie eine Adresse aus einem Dashboard.

Benachrichtigungen sind auf 50 E-Mails pro Formular und Stunde begrenzt, danach kommt eine stündliche Zusammenfassung, sodass eine Spamwelle dein Postfach nicht zuschütten kann. Als Spam markierte Nachrichten lösen gar keine E-Mail aus. _subject ändert nicht den Betreff der Benachrichtigungs-E-Mails. Es wird als meta.subject an Webhooks und die API weitergegeben.

Ikiform schickt der Person, die das Formular ausfüllt, keine E-Mail. Benachrichtigungs-E-Mails gehen nur an dich und dein Team, es gibt also keinen Autoresponder, keine Bestätigungs-E-Mail und kein Double-Opt-in. Verschicke sie aus deinem E-Mail-Tool, ausgelöst durch einen Webhook.

Willst du Nachrichten statt oder zusätzlich zur E-Mail in einem Team-Chat? Füge einen Webhook hinzu und folge der Anleitung für Slack, Discord oder Telegram.

Was der Besucher nach dem Senden sieht

Ein einfacher HTML-Post endet mit einer Weiterleitung. Ikiform beantwortet einen erfolgreichen Browser-Post mit 303 See Other, und der Browser lädt das Ziel mit einem GET, den dein statischer Host gern ausliefert.

Die drei Requests hinter einer einfachen HTML-FormulareinsendungBrowserBesucher klicktauf Sendenikiform.com/f/…speichert dieNachrichtdeine/thanks.htmleine statischeDateiPOST303, dann GETDie drei Requests hinter einer einfachen HTML-FormulareinsendungBrowserBesucher klickt auf Sendenikiform.com/f/…speichert die Nachrichtdeine /thanks.htmleine statische DateiPOST303, dann GET
  1. Der Browser sendet die Formularfelder an deinen Ikiform-Endpunkt.
  2. Ikiform speichert die Nachricht und antwortet mit 303 See Other und einem Location-Header.
  3. Der Browser folgt der Weiterleitung mit einem GET auf deine Dankeseite, die der statische Host wie jede andere Datei ausliefert.
Ohne Weiterleitungsziel lädt Schritt 3 die gehostete Dankeseite von Ikiform statt deiner.

Ikiform wählt das Ziel in dieser Reihenfolge:

  • Redirect after submit in den Einstellungen des Formulars. Jede http:- oder https:-URL funktioniert, weil nur dein Team sie setzen kann. Für eine einzelne Site ist das die einfachste Wahl.
  • Ein _redirect-Feld im Formular, wenn es eine https:-URL auf einer der Allowed domains des Formulars ist. Nutze es, wenn ein Formular mehrere Sites oder Sprachen bedient.
  • Andernfalls die gehostete Dankeseite von Ikiform, die zurück auf deine Site verlinkt, wenn der Post von einer erlaubten https:-Seite kam.

Mach die Dankeseite zu einer echten Datei und halte sie aus den Suchergebnissen heraus. Sag, wann du antwortest; das erspart dir eine zweite E-Mail von derselben Person.

thanks.html
<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="robots" content="noindex" />
    <title>Message sent</title>
  </head>
  <body>
    <h1>Thanks, your message is on its way</h1>
    <p>I read every message and reply within two working days, from the address on this site.</p>
    <p><a href="/">Back to the home page</a></p>
  </body>
</html>

Die JavaScript-Versionen oben überspringen die Weiterleitung. Ein Post mit Accept: application/json bekommt JSON zurück, und die Seite zeigt die Erfolgszeile selbst an.

Spam bei einem statischen Formular

Dein Endpunkt steht im Quelltext deiner Seite, und Bots lesen Quelltext. Rechne innerhalb weniger Tage nach dem Livegang mit Spam. Ikiform schichtet seine Abwehr so, dass du ohne jede Einrichtung starten kannst:

AbwehrWas sie stopptEinrichtung
HoneypotBots, die jedes Eingabefeld ausfüllenDas versteckte Eingabefeld _gotcha
Spam-BewertungLinks im Namen (+3), viele Links (+2), bekannte Spam-Phrasen (+2) und Wegwerfadressen. Ab 5 wird eine Nachricht als Spam gespeichertKeine
Rate-LimitsSkripte, die in einer Schleife sendenStandardmäßig aktiv: Standard, 5 pro Minute und Besucher
Erlaubte DomainsKopien deines Formulars, die von anderen Sites sendenFüge deine Domains in den Einstellungen des Formulars hinzu
MenschlichkeitsprüfungBots, die einen echten Browser steuernSetze Spam check auf Ikiform für Cloudflare Turnstile ohne Schlüssel

Spam bekommt dieselbe Erfolgsantwort wie eine echte Nachricht, ein Bot lernt also nichts, und es wird weder E-Mail noch Webhook ausgelöst. Ein Kontaktformular braucht selten mehr als einen Post pro Person in ein paar Minuten, daher passt Strict mit 2 alle 10 Minuten pro Besucher, sobald du live bist. Die Spam-Dokumentation behandelt jede Schicht, und die Menschlichkeitsprüfung braucht in den JavaScript-Versionen einen zusätzlichen Aufruf: challenge() aus dem SDK.

Erlaubte Domains und Preview-Deployments

Allowed domains passt auf eine Domain und ihre Subdomains. Statische Hosts geben dir mehr Domains, als du denkst: die Produktionsdomain, die eigene Subdomain des Hosts und eine Preview-Adresse pro Branch oder Pull Request. Manche Previews sind Subdomains der Host-Adresse deiner Site und passen dazu; andere nicht und brauchen einen eigenen Eintrag.

HostHinzufügenPreviews
GitHub Pagesusername.github.io und deine eigene DomainStandardmäßig keine Previews
Vercelyour-project.vercel.app und deine DomainBranch-URLs passen nicht; füge beim Testen den genauen Host hinzu
Netlifyyour-site.netlify.app und deine Domaindeploy-preview-12--your-site.netlify.app passt nicht
Cloudflare Pagesyour-project.pages.dev und deine Domainabc123.your-project.pages.dev passt bereits

Füge niemals einen geteilten Host allein hinzu, etwa github.io, vercel.app oder netlify.app. Jede Site auf diesem Host würde passen, auch die von anderen Leuten.

Wenn deine Site eine Content-Security-Policy sendet

Viele statische Templates bringen eine strenge Content-Security-Policy mit. Zwei Direktiven entscheiden, ob das Formular funktioniert: form-action für den einfachen HTML-Post und connect-src für die fetch-Versionen. Fehlt eine davon, blockiert der Browser den Request, bevor er die Seite verlässt, und zeigt dazu nur eine Meldung in der Konsole.

Response-Header
Content-Security-Policy: default-src 'self'; form-action 'self' https://ikiform.com; connect-src 'self' https://ikiform.com

Behalte 'self' in form-action: Manche Browser prüfen auch die Weiterleitung zurück auf deine Dankeseite dagegen. Wo der Header liegt, hängt vom Host ab: _headers bei Netlify und Cloudflare Pages, vercel.json bei Vercel, ein <meta>-Tag bei GitHub Pages und eine CloudFront-Response-Headers-Policy vor S3. Die Host-Seiten unten zeigen jeden Fall.

Vor dem Deployment testen

Öffne die Seite über einen lokalen Server, nicht per Doppelklick auf die Datei. Eine als file:// geöffnete Seite sendet Origin: null, was zu keiner erlaubten Domain passt und nicht als lokaler Test zählt. Jeder dieser Befehle liefert den aktuellen Ordner aus:

Terminal
npx serve .

python3 -m http.server 8000

Füge beim Testen localhost zu Allowed domains hinzu. Posts von localhost zählen als Tests: Ein Workspace ohne Tarif bekommt 50 pro Monat, du kannst also das ganze Formular bauen, bevor du zahlst.

Wähle deinen Fall

Das Formular oben funktioniert auf jedem statischen Host. Jeder Host scheitert auf seine eigene Art und hat eigene Preview-Domains und Header-Dateien. Diese Seiten behandeln sie.

Prüfen, ob es funktioniert

Geh das einmal auf deiner Live-Domain und einmal auf einer Preview durch, falls dein Host welche erstellt. Ikiform hat keinen kostenlosen Tarif. Testen ist kostenlos: Ein Workspace ohne Tarif nimmt 50 Testeinsendungen pro Monat von localhost an. Für den Livebetrieb wähle Pro ab $6/Monat für 500 Einsendungen oder zahle einmalig: 10.000 Einsendungen für $49 oder 50.000 Einsendungen für $149, mit Guthaben, das nie verfällt. Siehe Preise.

  1. Füge unter Allowed domains des Formulars die Domain deiner Site hinzu, plus localhost, während du entwickelst. Lass das Feld leer, um Posts von überall anzunehmen.
  2. Sende von deinem lokalen Server und prüfe, ob die Nachricht unter Submissions erscheint.
  3. Deploye und sende dann von der Live-Site mit ausgeschaltetem JavaScript. Du solltest auf deiner eigenen Dankeseite landen.
  4. Schalte JavaScript wieder ein und sende mit leerer Nachricht. Der Fehler sollte auf der Seite erscheinen, nicht als gehostete Fehlerseite.
  5. Prüfe das Postfach jedes Benachrichtigungsempfängers. Jeder bekommt eine E-Mail mit den Feldern, und Reply geht an den Absender, wenn das Formular ein email-Feld hat.
  6. Sende einen Post mit ausgefülltem Honeypot, _gotcha=bot. Er bekommt trotzdem eine Erfolgsantwort, aber die Einsendung wird als Spam gespeichert und löst weder E-Mail noch Webhook aus.
  7. Nichts angekommen? Stell den Statusfilter im Dashboard auf Spam. Spam bekommt dieselbe Erfolgsantwort wie eine echte Einsendung.

Fehlerbehebung

ProblemWas zu tun ist
405 Method Not Allowed oder 404 direkt nach dem Klick auf SendenDas Formular hat an deine eigene Site gesendet. Prüfe das action-Attribut im deployten HTML, nicht in deinem Quellcode; ein Build-Schritt oder eine <Form>-Komponente eines Frameworks kann es ersetzt haben.
Nichts passiert, und die Konsole erwähnt Content-Security-PolicyFüge https://ikiform.com zu form-action für einfache Posts und zu connect-src für fetch hinzu.
403 origin_not_allowed, oder jeder Post landet im SpamDie Domain der Seite steht nicht unter Allowed domains des Formulars. Füge sie hinzu, plus localhost für lokale Tests. Subdomains einer eingetragenen Domain sind erlaubt.
Lokale Tests werden mit 402 plan_required abgelehntDie Seite wurde als file://-URL geöffnet, daher hatte der Post keinen brauchbaren Origin und zählte als live. Liefere den Ordner über einen lokalen Server aus und teste von localhost.
Der Browser landet auf der Dankeseite von Ikiform statt auf deiner_redirect wird ignoriert, außer seine Domain steht unter Allowed domains und es ist eine https:-URL. Füge die Domain hinzu oder setze stattdessen Redirect after submit in den Einstellungen des Formulars.
422 validation_failedDer Post passt nicht zur Felddefinition des Formulars. error.fields nennt jedes Feld und den Grund. Gleiche den name des Eingabefelds an die Feld-ID an.
Die Einsendung ist im Dashboard, aber keine E-Mail und kein Webhook kam anSie wurde als Spam gespeichert. Spam löst nichts aus. Öffne sie unter dem Filter Spam, um die Gründe zu sehen, und markiere sie als kein Spam, um ihre E-Mail und Webhooks zu senden.
429 rate_limitedEin Besucher hat mehr gesendet, als das Rate-Limit des Formulars erlaubt. Standard erlaubt 5 pro Minute und Besucher. Warte Retry-After ab oder wähle Relaxed oder Custom für Formulare, die von einer gemeinsamen IP aus senden.

Fragen

Hängst du bei einem Schritt fest oder willst eine Anleitung für deinen Fall? Schreib an hello@ikiform.com.