Warteliste für ein neues SaaS8 Min. Lesezeit
So baust du eine Pre-Launch-E-Mail-Liste für einen Product-Hunt-Launch
Sammle Wochen vor Product Hunt eine Launch-Liste, markiere jede Anmeldung nach Kanal und sende die Launch-E-Mail in zwei Wellen, abgestimmt auf den Reset nach Pacific Time.
Fang vier bis sechs Wochen vor dem Launch an, auf deiner eigenen Seite E-Mails zu sammeln, mit einem versteckten Quellfeld, damit du weißt, über welchen Kanal jede Anmeldung kam. Bitte die Leute, einer Launch-Tag-E-Mail zuzustimmen, exportiere die Liste in der Woche davor und teile sie in zwei Versände auf: einen direkt nachdem der Product-Hunt-Tag um 0:01 Uhr Pacific Time beginnt, und einen für Amerika an dessen Vormittag.
Ein Product-Hunt-Launch hat ein festes Datum und ein 24-Stunden-Fenster. Die Leute, die dein Produkt am ehesten ausprobieren und einen durchdachten Kommentar hinterlassen, sind die, die von dir hören wollten, die Liste zählt also mehr als der Launch-Post. Diese Seite behandelt, was sich ändert, wenn die Liste für diesen einen Tag gebaut wird.
Was an einer Product-Hunt-Liste anders ist
- Die Deadline steht fest. Eine normale Warteliste kann warten, bis das Produkt fertig ist. Hier muss die Liste exportiert, bereinigt und in dein E-Mail-Tool geladen sein, bevor ein Datum kommt, das du vor Wochen gewählt hast.
- Der Tag läuft nach Pacific Time. Launches gehen um 0:01 Uhr PT live und konkurrieren um den Rang dieses Tages. Deine Liste lebt in allen Zeitzonen, ein einzelner Versand zu einer Uhrzeit erreicht also die Hälfte im Schlaf.
- Die Bitte ist Feedback, nicht Stimmen. Die Regeln von Product Hunt verbieten es, um Upvotes zu bitten, und das kann einen Launch disqualifizieren. Bitte die Liste, das Produkt auszuprobieren und zu kommentieren, was sie ändern würde. Das ist regelkonform, und Kommentare wirken ohnehin besser als eine Zahl.
- Der Launch-Tag bringt einen Ansturm. Besucher von Product Hunt landen auf deiner Site und melden sich innerhalb weniger Minuten an. Formularlimits, die wochenlang keine Rolle spielten, können für ein paar Stunden wichtig werden.
- Vier bis sechs Wochen vorher geht die Seite mit dem Formular live, und jeder Kanal, in dem du sie teilst, bekommt seinen eigenen ref-Wert.
- Exportiere eine Woche vorher die Liste, entferne Duplikate und teile die Leute, die zugestimmt haben, nach Land in zwei Wellen auf.
- Erhöhe am Tag davor das Limit für das ganze Formular, damit Launch-Traffic nicht abgewiesen wird.
- Um 0:01 Uhr Pacific Time geht der Launch live.
- Minuten später sendest du Welle 1 an alle außerhalb Amerikas, wo es Vormittag oder Nachmittag ist.
- Gegen 6 Uhr Pacific Time sendest du Welle 2 an Amerika.
- Bedanke dich am nächsten Tag bei der Liste und vergleiche, welche ref-Werte die Leute gebracht haben, die sich angemeldet haben und geblieben sind.
Das Formular
Starte mit dem reinen E-Mail-Formular aus der Hauptanleitung und füge zwei Dinge hinzu: eine Checkbox, die nach der Launch-Tag-E-Mail fragt, und ein verstecktes ref, das aus dem Link gefüllt wird, über den die Leute kamen.
<form id="launch-list" action="https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx" method="post">
<label for="email">Email</label>
<input id="email" name="email" type="email" autocomplete="email" required>
<label>
<input name="launch_reminder" type="checkbox" value="true">
Email me the morning we launch on Product Hunt
</label>
<input type="hidden" name="ref" value="direct">
<input name="_gotcha" type="text" tabindex="-1" autocomplete="off" hidden>
<button>Get early access</button>
</form>
<script>
const params = new URLSearchParams(location.search);
const ref = params.get("ref") || params.get("utm_source");
if (ref) {
document.querySelector('#launch-list [name="ref"]').value = ref.toLowerCase().replace(/[^a-z0-9_-]/g, "").slice(0, 40);
}
</script>- Die Checkbox ist anfangs nicht angehakt. Eine Launch-Tag-E-Mail ist etwas anderes als früher Zugang, die Leute stimmen ihr also ausdrücklich zu. Ikiform speichert
trueoderfalsemit dem Zeitstempel der Anmeldung. - Das Skript kopiert
?ref=oder?utm_source=in das versteckte Eingabefeld und entfernt alles, was kein Buchstabe, keine Ziffer, kein-oder_ist. Ohne beides bleibtrefaufdirect. - Product Hunt hängt den Links auf deiner Launch-Seite meist
ref=producthuntan, Anmeldungen am Launch-Tag markieren sich also selbst.
Füge die Felddefinition im Tab Fields des Formulars hinzu. Ikiform lehnt dann Posts ohne E-Mail ab, speichert die Checkbox als echtes true oder false und begrenzt ref auf 40 Zeichen, damit niemand es vollstopfen kann.
{
"version": 1,
"title": "Launch list",
"fields": [
{ "id": "email", "type": "email", "label": "Email", "required": true },
{ "id": "launch_reminder", "type": "checkbox", "label": "Email me the morning we launch on Product Hunt" },
{ "id": "ref", "type": "text", "label": "Source", "validation": { "max_length": 40 } }
]
}Ein ref pro Kanal
Leg die Werte fest, bevor du den Link irgendwo teilst, und nutze sie jedes Mal:
| Wo du teilst | Link | Gespeicherter ref |
|---|---|---|
| Deine Posts auf X oder Bluesky | example.com/?ref=x | x |
example.com/?ref=linkedin | linkedin | |
| Ein Community-Post, etwa auf Indie Hackers | example.com/?ref=ih | ih |
| Dein Newsletter oder Blog | example.com/?utm_source=newsletter | newsletter |
| Deine Product-Hunt-Launch-Seite | Von Product Hunt hinzugefügt | producthunt |
Mach das Formular bereit für Launch-Traffic
Die Standardlimits passen zu einer ruhigen Pre-Launch-Seite. Der Launch-Tag ist nicht ruhig. Jeder Besucher kann 5-mal pro Minute senden, was reichlich ist, aber das ganze Formular ist auf 300 pro Minute begrenzt. Ein Launch auf der Startseite kann in einer vollen Minute mehr Anmeldungen bringen.
- Öffne am Tag davor die Einstellungen des Formulars und wähle ein Custom-Rate-Limit mit einem höheren Limit für das Formular. Stell es nach der Launch-Woche zurück.
- Wenn du bei einem Meetup oder in einem Coworking-Space eine Demo zeigst, teilen sich alle eine IP. Wähle für diesen Tag Relaxed.
- Ein abgelehnter Post bekommt
429 rate_limitedund einenRetry-After-Header. Das einfache HTML-Formular zeigt Ikiforms Fehlerseite mit einem Link zurück. - Aktiviere die Menschlichkeitsprüfung unter Spam check, wenn der Launch-Tag Bots bringt. Das einfache Formular braucht dafür keine Änderung; siehe Spamschutz.
Die Launch-E-Mail in zwei Wellen aufteilen
Lies eine Woche vor dem Launch die Liste über die REST-API und teile sie auf. Dieses Skript behält die neueste Anmeldung pro E-Mail, verwirft alle, die das Häkchen nicht gesetzt haben, und schreibt nach dem Land, das Ikiform erfasst hat, zwei CSV-Dateien. Es braucht einen Secret Key mit submissions:read.
import { writeFileSync } from "node:fs";
import { createClient } from "@ikiform/sdk";
const AMERICAS = new Set(["US", "CA", "MX", "BR", "AR", "CO", "CL", "PE", "EC", "UY", "PY", "BO", "VE", "GT", "CR", "PA", "DO", "PR"]);
const ikiform = createClient({ apiKey: process.env.IKIFORM_SECRET_KEY });
const seen = new Set();
const waves = { midnight: [], morning: [] };
for await (const submission of ikiform.submissions.iterate({ formId: "frm_xxxxxxxxxxxxxxxx", status: "received", limit: 100 })) {
const email = String(submission.fields.email ?? "").trim().toLowerCase();
if (!email || seen.has(email)) continue;
seen.add(email);
if (submission.fields.launch_reminder !== true) continue;
const country = submission.meta.country ?? "";
const wave = !country || AMERICAS.has(country) ? waves.morning : waves.midnight;
wave.push([email, String(submission.fields.ref ?? "").replaceAll(",", ""), country].join(","));
}
for (const [name, rows] of Object.entries(waves)) {
writeFileSync(`wave-${name}.csv`, ["email,ref,country", ...rows].join("\n"));
console.log(`${name}: ${rows.length} people`);
}- Anmeldungen kommen neueste zuerst, eine Person, die sich zweimal angemeldet hat, wird also nach ihrer letzten Antwort beurteilt. Hat sie das Häkchen beim zweiten Mal entfernt, bleibt sie außen vor.
- Importiere beide Dateien als getrennte Segmente in dein E-Mail-Tool und plane sie: Welle 1 für ein paar Minuten nach 0:01 Uhr Pacific Time, Welle 2 für etwa 6 Uhr Pacific Time.
- Führe es am Vorabend des Launchs noch einmal aus, um die Anmeldungen der letzten Woche mitzunehmen.
Die Launch-Tag-E-Mail
Sende sie aus deinem E-Mail-Tool, damit Abmeldungen und Bounces behandelt werden. Stell das Produkt an den Anfang, verlinke die Launch-Seite an zweiter Stelle und bitte um einen Kommentar, nicht um eine Stimme:
Subject: We're on Product Hunt today
Hi,
You joined the Acme list a few weeks ago. Today we launched on Product Hunt,
and the product is open to everyone on this list first.
Try it: https://acme.example/start
Our launch page: https://www.producthunt.com/products/acme
If you have a minute, tell us on the launch page what you'd change.
Honest comments help more than anything else today.
Ada, founder of AcmeDer Tag danach
Exportiere die Liste erneut mit Export CSV, gefiltert auf die letzten 7 Tage, und zähle die Anmeldungen nach ref. Die Kanäle, die Leute gebracht haben, die sich später angemeldet haben, sind der Ort für deinen nächsten Launch-Post. Schick den Leuten, die sich am Launch-Tag eingetragen haben, aus deinem E-Mail-Tool ein kurzes Dankeschön; sie haben dich über Product Hunt gefunden und noch nichts von dir gehört.
Prüfen, ob es funktioniert
Mach das eine Woche vor dem Launch, nicht in der Nacht davor.
- 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. - Öffne die Seite mit
?ref=xund sende ab. Die Einsendung zeigtrefalsxundlaunch_reminderalsfalse. - Sende erneut mit gesetztem Häkchen und ohne Query-String.
reflautetdirectundlaunch_reminderlautettrue. - Öffne Submissions im Dashboard. Die neue Einsendung ist da, mit jedem Feld, das du gesendet hast.
- Führe das Wellen-Skript aus und prüfe, dass jede Testadresse in der Datei steht, die du für ihr Land erwartest.
- Nichts angekommen? Stell den Statusfilter im Dashboard auf Spam. Spam bekommt dieselbe Erfolgsantwort wie eine echte Einsendung.
Stolperfallen
| Problem | Was zu tun ist |
|---|---|
429 rate_limited | Ein 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. |
422 mit Unknown field für utm_source oder einen anderen Parameter | Nur ref ist definiert. Das Skript liest utm_source in ref ein, statt es zu senden, prüfe also, dass du kein weiteres verstecktes Eingabefeld hinzugefügt hast. |
Jede Anmeldung hat ref auf direct | Das Skript läuft, bevor das Formular existiert, oder die id des Formulars weicht ab. Setze das Skript hinter das Formular und behalte id="launch-list". |
| Ein Land ist im Export leer | Ikiform konnte nicht feststellen, wo der Besucher war. Das Skript steckt leere Länder in die Vormittagswelle, die Amerika wach erreicht und alle anderen später an ihrem Tag. |
| Die Einsendung ist im Dashboard, aber keine E-Mail und kein Webhook kam an | Sie 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. |
Fragen
Vier bis sechs Wochen geben dir Zeit, die Seite an ein paar Orten zu teilen und zu lernen, welche funktionieren. Fang früher an, wenn du noch kein Publikum hast; die Liste wächst anfangs langsam.
Nein. Die Regeln von Product Hunt verbieten es, um Upvotes zu bitten, und das kann einen Launch disqualifizieren. Bitte die Leute, das Produkt auszuprobieren und einen Kommentar zu hinterlassen, was sie ändern würden. So bleibst du regelkonform und bekommst Feedback, mit dem du arbeiten kannst.
Launches gehen um 0:01 Uhr Pacific Time live. Sende ein paar Minuten später eine Welle an Leute außerhalb Amerikas und eine zweite gegen 6 Uhr Pacific Time an Amerika, damit die meisten sie an ihrem Vormittag lesen.
Meistens. Jede Einsendung erfasst, wenn möglich, das Land der Verbindung des Besuchers, und es erscheint in der API und in Webhooks als meta.country. Es kann leer sein, nimm es also als Hinweis.
Nein, es gibt keinen kostenlosen Tarif. Testen ist kostenlos: Du kannst 50 Testeinsendungen pro Monat von localhost senden, bevor du zahlst. Für den Livebetrieb startet Pro bei $6/Monat für 500 Einsendungen, oder du zahlst einmalig 10.000 Einsendungen für $49 oder 50.000 Einsendungen für $149, mit Guthaben, das nie verfällt.
Hängst du bei einem Schritt fest oder willst eine Anleitung für deinen Fall? Schreib an hello@ikiform.com.