Anleitungen

Anleitungen16 Min. Lesezeit

So erstellst du eine Warteliste für ein neues SaaS

Baue eine Pre-Launch-Warteliste auf deiner eigenen Landingpage: das Formular, Spamschutz, Duplikate, Bestätigungs-E-Mails und ein sauberer Export am Launch-Tag.

Preet SutharGründer, Ikiform

Setze ein einfaches HTML-Formular auf deine Landingpage, das die E-Mail des Besuchers an ein Formular-Backend sendet, damit du vor dem Launch keinen Server betreibst. Leite jede Anmeldung per Webhook an das E-Mail-Tool weiter, mit dem du launchst, und lass dieses Tool eine eventuelle Bestätigung senden. Exportiere am Launch-Tag die Liste als CSV, entferne Duplikate nach E-Mail und sende eine Launch-E-Mail.

Eine Warteliste ist der günstigste Test einer SaaS-Idee. Wenn Fremde ihre E-Mail für etwas hinterlassen, das es noch nicht gibt, hast du einen Grund, es zu bauen, und eine Liste von Leuten, denen du Bescheid gibst, wenn es erscheint. Diese Anleitung baut eine auf deiner eigenen Landingpage, ohne Datenbank oder Server, und macht sie bereit für den Launch-Tag.

So funktioniert eine Warteliste

Jede Warteliste hat dieselben drei Teile: ein Formular auf deiner Seite, einen Ort, der jede Anmeldung speichert, und das Tool, mit dem du die Liste anschreibst. Hier sendet das Formular an Ikiform. Ikiform prüft den Post auf Spam, speichert ihn, benachrichtigt dich per E-Mail und sendet einen signierten Webhook. Ein kleines Relay oder ein Automatisierungstool übergibt die Adresse an dein E-Mail-Tool.

Wie eine Wartelisten-Anmeldung von deiner Landingpage zu deinem E-Mail-Tool gelangtLandingpagedein Formular,jede Site oderjeder BaukastenIkiformprüft Spam,speichert dieAnmeldungDashboardsuchen, filtern,CSVexportierenBenachrichtigungs-E-Mailan dich, nichtan dieAnmeldungsignierterWebhooksubmission.createdE-Mail-Toolbestätigt undsendet zumLaunchPostRelayWie eine Wartelisten-Anmeldung von deiner Landingpage zu deinem E-Mail-Tool gelangtLandingpagedein Formular,jede Site oderjederBaukastenIkiformprüft Spam,speichert dieAnmeldungDashboardsuchen, filtern,CSV exportierenBenachrichtigungs-E-Mailan dich, nicht andie AnmeldungsignierterWebhooksubmission.createdE-Mail-Toolbestätigt undsendet zum LaunchPostRelay
  1. Ein Besucher gibt auf deiner Landingpage seine E-Mail ein, und das Formular sendet an deinen Ikiform-Endpunkt.
  2. Ikiform prüft Honeypot, Spam-Score und Rate-Limit und speichert dann die Anmeldung.
  3. Die Anmeldung erscheint im Dashboard, wo du sie durchsuchen und die Liste als CSV exportieren kannst.
  4. Ikiform benachrichtigt dich und dein Team per E-Mail. Der Person, die sich angemeldet hat, schreibt es nie.
  5. Ikiform sendet einen signierten submission.created-Webhook.
  6. Ein Relay oder ein Automatisierungstool fügt die Adresse deinem E-Mail-Tool hinzu, das eine eventuelle Bestätigung und später die Launch-E-Mail sendet.
Das E-Mail-Tool ist am ersten Tag optional. Du kannst wochenlang sammeln und später eine CSV importieren; der Webhook hält beides von Anfang an synchron.

Vier Wege, eine Warteliste zu betreiben

Es gibt nicht das eine richtige Tool. Die Tabelle vergleicht die vier üblichen Setups danach, worin sie gut sind und was sie dich später kosten.

AnsatzStark beiNachteile
Wartelisten-SaaS wie LaunchList oder WaitlisterEmpfehlungslinks, Bestenlisten und Platz in der Warteschlange, sofort einsatzbereit. Eine gehostete Seite, falls du noch keine Site hast.Deine Liste lebt in einem anderen Produkt. Das Widget sieht aus wie ihres, außer du zahlst oder gestaltest es um. Die Preise wachsen meist mit den Anmeldungen.
Eingebetteter Formular-Baukasten wie Typeform oder TallyAusgefeilte Abläufe mit einer Frage pro Schritt, ganz ohne Code.Ein iframe, das nicht zu deiner Seite passt und eigene Skripte lädt. Branding, Antwortlimits und Webhooks hängen vom Tarif ab.
Deine eigene Datenbank und API-RouteVolle Kontrolle über die Daten und jede Logik, etwa Empfehlungscodes.Du baust Spamschutz, Rate-Limits, Benachrichtigungen und Export selbst und brauchst einen Server, auch wenn die Landingpage statisch ist.
Formular-Backend wie IkiformDein eigenes HTML auf jeder Site. Spamfilter, Speicherung, E-Mail-Benachrichtigungen, signierte Webhooks und CSV-Export ohne Server.Keine Empfehlungs-Bestenliste und keine E-Mails an die Person, die sich anmeldet. Die kommen von deinem E-Mail-Tool.

Nimm ein Wartelisten-SaaS, wenn Empfehlungsmechaniken der ganze Plan sind. Nimm ein Formular-Backend, wenn das Formular aussehen soll wie der Rest deiner Site, die Liste portabel bleiben soll und du E-Mails aus dem Tool senden willst, das du nach dem Launch ohnehin nutzt. Der Rest dieser Anleitung nutzt das Formular-Backend.

Das Formular

Frag zu Beginn nur nach einer E-Mail. Jedes zusätzliche Feld kostet Anmeldungen, und Fragen kannst du später per E-Mail an Leute stellen, die schon Ja gesagt haben. Wähle unten deinen Stack; die Wahl gilt für jedes Codebeispiel in diesen Anleitungen.

Füge das Formular dort ein, wo die Anmeldung erscheinen soll. Es sendet auf die einfache Art und leitet weiter, funktioniert also ganz ohne JavaScript.

index.html
<form action="https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx" method="post">
  <label for="email">Email</label>
  <input id="email" name="email" type="email" placeholder="you@company.com" autocomplete="email" required />
  <input type="hidden" name="ref" value="homepage" />
  <input name="_gotcha" type="text" tabindex="-1" autocomplete="off" hidden />
  <button>Join the waitlist</button>
</form>

Damit Besucher auf der Seite bleiben, füge dieses Skript nach dem Formular ein. Es sendet mit fetch, ersetzt das Formular durch die Dankeszeile und zeigt die Feldfehler des Servers an.

waitlist.js
const form = document.querySelector('form[action="https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx"]');
const status = document.createElement("p");
status.setAttribute("role", "alert");
form.append(status);

const labels = {
  email: "Email",
};

form.addEventListener("submit", async (event) => {
  event.preventDefault();
  const button = form.querySelector("button");
  button.disabled = true;
  status.textContent = "";
  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.replaceWith("You're on the list. We'll email you at launch.");
      return;
    }
    const fields = Object.entries(result.error.fields ?? {});
    status.textContent = fields.length
      ? fields.map(([id, messages]) => `${labels[id] ?? id}: ${messages[0]}`).join(" ")
      : result.error.message;
  } catch {
    status.textContent = "Couldn't reach the server. Try again.";
  }
  button.disabled = false;
});

Mehr zu HTML? Lies So fügst du jeder Landingpage ein Wartelisten-Formular in reinem HTML hinzu.

  • Der Endpunkt ist die URL deines Formulars. Ersetze frm_xxxxxxxxxxxxxxxx durch die ID aus dem Dashboard.
  • name="email" ist die Feld-ID. Lass sie bei email: Ikiform nutzt sie als Reply-to-Adresse der Benachrichtigungs-E-Mails und prüft sie gegen Wegwerf-E-Mail-Domains.
  • Das versteckte Eingabefeld _gotcha ist der Honeypot. Menschen sehen es nie. Bots, die jedes Eingabefeld ausfüllen, markieren sich selbst als Spam, und die Server-Versionen reichen es unverändert weiter.
  • Das versteckte Eingabefeld ref hält fest, woher die Anmeldung kam. Ändere seinen Wert pro Seite oder Kampagne.
  • Mit einer Felddefinition im Tab Fields wird ein Eingabefeld, das sie nicht auflistet, mit 422 und einem unknown_field-Fehler abgelehnt, liste also ref ebenso auf wie email, wie unten.
  • Ein einfacher HTML-Post leitet den Browser nach dem Erfolg weiter. Setze Redirect after submit in den Einstellungen des Formulars auf deine eigene Dankeseite, sonst zeigt Ikiform seine gehostete.
Felder
{
  "version": 1,
  "title": "Waitlist",
  "fields": [
    { "id": "email", "type": "email", "label": "Email", "required": true, "placeholder": "you@company.com" },
    { "id": "ref", "type": "text", "label": "Source", "validation": { "max_length": 40 } }
  ]
}
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.

Die Server-Versionen reichen den Origin-Header des Browsers weiter, weil Ikiform kostenlose localhost-Tests daran erkennt und das eigene fetch eines Servers keinen sendet.

Die Framework-Anleitungen in der Doku gehen tiefer: Next.js, Astro, SvelteKit, Nuxt, React, Vue und reines HTML. Das SDK kapselt den Browser-Request als submit(), und die Wartelisten-Formularvorlage erzeugt die Version mit vier Feldern.

Felder, nach denen es sich zu fragen lohnt

E-Mail ist das einzige Feld, das du brauchst. Wenn du die Liste vor dem Launch sortieren willst, füge höchstens zwei weitere hinzu. Probier unten die Version mit vier Feldern aus: Sie führt Ikiforms Validator 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.

Die Felder der Wartelisten-Vorlage plus ref, das deine Seite mit einem versteckten Eingabefeld statt eines sichtbaren Felds füllt. Füge es im Tab Fields des Formulars ein, und Ikiform setzt es auf dem Server durch.
FeldWarum du fragen würdestBeachte
emailDie Liste selbstPflicht. Nutze type="email", damit Handys die richtige Tastatur zeigen
nameEine persönliche Launch-E-MailOptional. Ein Vorname reicht
roleGründer zuerst einladen oder Entwicklern eine andere E-Mail schreibenEin select hält die Antworten sauber zum Filtern
sourceErfahren, welcher Kanal funktioniert, bevor du Geld dafür ausgibstFreitext ist ehrlich, aber unordentlich. Ein verstecktes ref-Eingabefeld ist sauberer, siehe unten
refAnmeldungen pro Seite oder Kampagne zählen, ohne zu fragenEin verstecktes Eingabefeld. Optionaler text mit max_length 40

Um ohne Nachfrage zu verfolgen, woher Anmeldungen kommen, füge pro Seite oder Kampagne ein verstecktes Eingabefeld hinzu. Namen, die mit _ beginnen, sind Anweisungen an Ikiform und werden nie gespeichert, nutze also einen einfachen Namen wie ref:

Versteckte Eingabefelder
<input type="hidden" name="ref" value="homepage" />
<input type="hidden" name="_redirect" value="https://example.com/thanks" />

Jede Einsendung hält außerdem Origin und Referrer der Seite fest, du siehst also auch ohne ref, von welcher Seite eine Anmeldung kam. Das Eingabefeld _redirect schickt den Browser auf deine eigene Dankeseite; es funktioniert nur für eine https:-URL auf einer der Allowed domains des Formulars.

Wenn du mehr als Launch-Neuigkeiten senden wirst, etwa einen Newsletter, füge eine Pflicht-Checkbox für die Einwilligung hinzu, mit dem genauen Versprechen als Beschriftung. Ikiform speichert true mit dem Zeitstempel der Einsendung, was festhält, wann die Person zugestimmt hat. Die Newsletter-Vorlage hat eine.

Halte Bots von der Liste fern

Ein öffentliches Formular mit E-Mail-Feld zieht innerhalb von Tagen Bots an. Falsche Anmeldungen blähen deine Zahlen auf, und schlimmer noch, deine Launch-E-Mail landet in Spam-Fallen, die deiner Absender-Reputation schaden. Ikiform stapelt vier Schutzschichten; die ersten beiden sind ohne Einrichtung aktiv.

AbwehrWas sie stopptEinrichtung
HoneypotEinfache Bots, die jedes Eingabefeld ausfüllenDas versteckte Eingabefeld _gotcha im Formular oben
Spam-BewertungWegwerfadressen (+2), identische Wiederholungen (+3), Links und bekannte Spam-Phrasen. Ab 5 wird eine Anmeldung als Spam gespeichertKeine
Rate-LimitsSkripte, die in einer Schleife sendenStandardmäßig aktiv: Standard, 5 pro Minute pro Besucher, und 300 pro Minute für das ganze Formular
MenschlichkeitsprüfungBots, die einen echten Browser ausführenSetze Spam check auf Ikiform. Es führt Cloudflare Turnstile aus, ohne dass du Schlüssel verwalten musst

Spam wird mit einer normalen Erfolgsantwort gespeichert, ein Bot erfährt also nichts. Er löst keine E-Mail und keinen Webhook aus und zählt nicht zu deiner Nutzung. Schau im ersten Monat einmal pro Woche in den Filter Spam im Dashboard; landet dort eine echte Anmeldung, markiere sie als kein Spam, und ihr Webhook geht dann raus.

Füge deine Domain auch unter Allowed domains hinzu. Posts von anderen Sites werden dann als Spam markiert oder mit 403 origin_not_allowed abgelehnt, wenn du Reject wählst. Mit aktiver Menschlichkeitsprüfung braucht das HTML-Formular keine Änderung. Die fetch-Version muss zuerst mit challenge() aus @ikiform/sdk ein Token anfordern; die Spam-Doku zeigt die vier Zeilen.

Launch-Posts kommen in Schüben. Wenn du die Seite irgendwo Großes postest, kann das formularweite Limit von 300 pro Minute greifen, bevor es das Limit eines einzelnen Besuchers tut. Erhöhe es am Tag davor mit einem Custom-Rate-Limit. Ein ganzes Büro oder eine Konferenz teilt sich eine IP, für solche Tage passt also Relaxed, 20 pro Minute pro Besucher.

Dieselbe Person, zweimal

Leute melden sich erneut an, aus einem anderen Tab, von einem zweiten Gerät oder eine Woche später, weil sie es vergessen haben. Ikiform speichert jeden angenommenen Post und führt Wiederholungen nach E-Mail weder zusammen noch lehnt es sie ab. Das passiert mit einer Wiederholung:

FallErgebnis
Gleiche E-Mail, andere Felder oder mehr als 24 Stunden späterEine zweite, normale Einsendung
Dieselben Felder erneut innerhalb von 24 Stunden+3 auf den Spam-Score, unter 5, also eine zweite normale Einsendung
Eine identische Wiederholung von einer Wegwerf-E-Mail-Domain+3 und +2, das ergibt 5: als Spam gespeichert

Rechne also mit einigen Duplikaten und entferne sie dort, wo die Liste landet. Drei Stellen funktionieren, vom geringsten zum größten Aufwand:

  1. Im E-Mail-Tool. Die meisten E-Mail-Tools identifizieren Kontakte über die Adresse, dieselbe Adresse zweimal hinzuzufügen aktualisiert also einen Kontakt, statt zwei anzulegen.
  2. Beim Export. Entferne doppelte E-Mails aus der CSV, bevor du sie irgendwo importierst. Zwei Wege stehen unten.
  3. In deinem Relay. Schreib die Adresse klein und trimme sie, und füge sie dann mit einem Unique-Constraint oder einem Upsert ein, sodass eine Wiederholung nichts bewirkt.

Willst du verhindern, dass ein Doppelklick überhaupt zwei Zeilen erzeugt? Sende mit der fetch-Version pro Seitenaufruf einen Idempotenzschlüssel. Das stoppt versehentliche Wiederholungen; es hindert niemanden daran, sich absichtlich zweimal anzumelden.

Anmeldungen bestätigen

Ikiform schreibt 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. Sende diese aus deinem E-Mail-Tool, ausgelöst durch einen Webhook. Das ist Absicht: Das Tool, das deine Launch-E-Mail sendet, sollte auch die Bestätigung senden, damit Abmeldungen und Bounces an einem Ort erfasst werden.

Zwei Wege, Ikiform damit zu verbinden:

  • Ohne Code. Füge einen Webhook-Endpunkt hinzu, der auf ein Automatisierungstool zeigt, und nutze dann dessen Action für dein E-Mail-Tool. Siehe Zapier, Make oder n8n.
  • Ein kleines Relay. Ein Route-Handler auf einem beliebigen Node-Host verifiziert die Signatur und ruft die API deines E-Mail-Tools auf. Das Beispiel unten ist eine Next.js-Route; derselbe Code läuft in einem Cloudflare Worker.
app/api/waitlist/route.ts
import { verifyWebhook, WebhookVerificationError } from "@ikiform/sdk/webhooks";

export async function POST(request: Request) {
  const payload = await request.text();
  try {
    const event = await verifyWebhook({
      payload,
      headers: request.headers,
      secret: process.env.IKIFORM_WEBHOOK_SECRET!,
    });
    if (event.type !== "submission.created") return new Response(null, { status: 204 });
    const email = String(event.data.fields.email ?? "").trim().toLowerCase();
    if (!email) return new Response(null, { status: 204 });
    const response = await fetch(process.env.LIST_API_URL!, {
      method: "POST",
      headers: {
        authorization: `Bearer ${process.env.LIST_API_KEY}`,
        "content-type": "application/json",
      },
      body: JSON.stringify({
        email,
        name: event.data.fields.name ?? null,
        tags: ["waitlist", String(event.data.fields.role ?? "unknown")],
      }),
    });
    if (response.status === 409) return new Response(null, { status: 204 });
    if (!response.ok) return new Response(`List answered ${response.status}`, { status: 502 });
    return new Response(null, { status: 204 });
  } catch (error) {
    if (error instanceof WebhookVerificationError) return new Response(error.reason, { status: 400 });
    throw error;
  }
}
  • verifyWebhook prüft Signatur und Zeitstempel, damit niemand sonst über diese URL Adressen hinzufügen kann.
  • Ersetze das fetch durch den Kontakt-hinzufügen-Aufruf deines E-Mail-Tools. Die meisten nehmen eine E-Mail und eine Liste oder einen Tag und senden ihre eigene Bestätigungs-E-Mail, wenn in diesem Tool Double-Opt-in aktiv ist.
  • Mit 204 zu antworten sagt Ikiform, dass die Zustellung geklappt hat. Ein 502 lässt Ikiform es erneut versuchen, mit derselben webhook-id, ein kurzer Ausfall deines E-Mail-Tools kostet also keine Anmeldungen.

Füge den Endpunkt im Dashboard unter Webhooks hinzu und kopiere sein whsec_-Secret in IKIFORM_WEBHOOK_SECRET. Ein Workspace kann 3 Endpunkte haben. Die Webhook-Doku behandelt Wiederholungen und die Payload, und dein eigener Server hat eine Version, die jede Zustellung genau einmal speichert.

Launch-Tag

Eine Warteliste von der ersten Anmeldung bis zum Launch-TagSeite liveFormular sendetan Ikiformjede Wocheteilen,Anmeldungenleseneine Wochevorherexportieren,deduplizieren,segmentierenLaunch-Tageine E-Mail andie ListeWochenEine Warteliste von der ersten Anmeldung bis zum Launch-TagSeite liveFormular sendet an Ikiformjede Wocheteilen, Anmeldungen leseneine Woche vorherexportieren, deduplizieren,segmentierenLaunch-Tageine E-Mail an die ListeWochen
  1. Die Seite geht live, und das Formular sendet an Ikiform.
  2. Teile die Seite jede Woche und lies die neuen Anmeldungen und ihre Antworten.
  3. Exportiere eine Woche vor dem Launch die Liste als CSV, entferne Duplikate und teile sie nach Rolle auf.
  4. Sende am Launch-Tag eine E-Mail aus deinem E-Mail-Tool an die Liste.
Die meiste Arbeit steckt im Export eine Woche vorher. Die Launch-E-Mail selbst ist kurz.

Die Liste exportieren

Öffne im Dashboard Submissions, wähle das Wartelisten-Formular, setze den Status auf Received und den Zeitraum auf All time und wähle dann Export CSV. Die Spalten sind id, created_at, form und status, dann eine Spalte pro Feld. Die Datei ist UTF-8 mit Byte Order Mark, Umlaute und Akzente überstehen also Excel. Ein Export umfasst bis zu 100.000 Zeilen; darüber hinaus blätterst du über die REST-API.

Um Duplikate in Google Sheets zu entfernen, importiere die CSV und nutze diese Formel in einem leeren Tabellenblatt, mit der E-Mail in Spalte E:

Google Sheets
=SORTN(A2:F, 9^9, 2, LOWER(TRIM(E2:E)), TRUE)

Sie behält eine Zeile pro Adresse, ignoriert Groß- und Kleinschreibung sowie Leerzeichen und sortiert nach E-Mail. Oder führe das hier mit Node in dem Ordner aus, der den Export enthält. Es behält die erste Zeile pro Adresse und setzt voraus, dass Werte keine Kommas enthalten, was für ein reines E-Mail-Formular zutrifft:

dedupe.mjs
import { readFileSync, writeFileSync } from "node:fs";

const [header = "", ...rows] = readFileSync("submissions.csv", "utf8").replace(/^\uFEFF/, "").trim().split(/\r?\n/);
const columns = header.split(",");
const emailAt = columns.indexOf("email");
const seen = new Set();
const unique = rows.filter((row) => {
  const email = row.split(",")[emailAt]?.trim().toLowerCase();
  if (!email || seen.has(email)) return false;
  seen.add(email);
  return true;
});

writeFileSync("waitlist.csv", [header, ...unique].join("\n"));
console.log(`${rows.length} rows, ${unique.length} unique emails`);

Die Launch-E-Mail senden

Sende sie aus deinem E-Mail-Tool, nicht aus deinem eigenen Postfach. Ein privates Postfach, das gleichzeitig an Hunderte Adressen sendet, sieht für Mail-Anbieter wie Spam aus, und sobald du sendest, brauchst du eine Abmeldefunktion. Halte sie kurz:

Launch-E-Mail
Subject: Acme is live. You're in.

Hi Ada,

You joined the Acme waitlist in the spring. Today it's open.

Sign in here: https://acme.example/start

You get the first 30 days free because you waited.
Reply to this email if anything breaks. It comes to me.

Ada, founder of Acme
  • Sag, was live ist, und verlinke direkt auf die Registrierungs- oder Anmeldeseite.
  • Belohne das Warten, etwa mit einer längeren Testphase oder einem Rabatt, und sag es einmal.
  • Sende sie von einer Person. Antworten sind das beste frühe Feedback, das du bekommst.
  • Gib Gründern und Entwicklern unterschiedliche erste Zeilen, wenn du role gesammelt hast. Genau dafür sammelst du es.
Wenn du monatelang gesammelt hast, ohne Adressen zu bestätigen, sende zuerst an einen kleinen Teil und beobachte die Bounce-Rate. Eine Liste voller Tippfehler und toter Adressen schadet der Domain, von der du Produkt-E-Mails senden wirst.

Wähle deinen Fall

Die Schritte oben funktionieren überall. Diese Seiten behandeln, was sich für einen bestimmten Launch oder Website-Baukasten ändert.

Prüfen, ob es funktioniert

Geh das durch, bevor du die Seite teilst. 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. Füll das Formular auf deiner Seite aus und sende es ab. Du landest auf deiner Dankeseite oder der gehosteten von Ikiform.
  3. Öffne Submissions im Dashboard. Die neue Einsendung ist da, mit jedem Feld, das du gesendet hast.
  4. 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.
  5. Wenn du einen Webhook hinzugefügt hast, öffne den Endpunkt unter Webhooks. Die Zustellung zeigt succeeded mit der Antwort deines Servers.
  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.
  8. Melde dich zweimal mit derselben Adresse an und prüfe, dass dein E-Mail-Tool weiterhin einen Kontakt zeigt.

Fehlerbehebung

ProblemWas zu tun ist
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.
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.
403 challenge_requiredDie Spamprüfung des Formulars steht auf Ikiform, und ein fetch-Post hatte kein Token. Hol dir vor jedem Absenden eins mit challenge(formId) aus @ikiform/sdk oder schalte die Prüfung aus.
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.
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.
Dieselbe E-Mail erscheint zweimalZu erwarten. Ikiform dedupliziert nicht nach E-Mail. Entferne Wiederholungen beim Export oder mach in deinem Relay oder E-Mail-Tool einen Upsert nach E-Mail.
Anmeldungen kommen in Ikiform an, aber nicht im E-Mail-ToolÖffne den Endpunkt unter Webhooks und lies das Zustellungsprotokoll. Ein 400 heißt, das Secret ist falsch; ein 502 mit dem Status deines Tools heißt, das Tool hat den Kontakt abgelehnt.
402 test_limit_reachedDer Workspace hat keinen Tarif und hat seine 50 kostenlosen localhost-Tests diesen Monat aufgebraucht. Wähle einen Tarif oder nutze Send test im Dashboard.

Fragen

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