Daftar tunggu untuk SaaS baru

Daftar tunggu untuk SaaS baru7 menit baca

Cara membangun daftar email pra-peluncuran untuk peluncuran di Product Hunt

Kumpulkan daftar peluncuran berminggu-minggu sebelum Product Hunt, tandai setiap pendaftaran per channel, dan kirim email hari-H dalam dua gelombang mengikuti reset waktu Pasifik.

Preet SutharPendiri, Ikiform

Mulai kumpulkan email di halaman Anda sendiri empat sampai enam minggu sebelum peluncuran, dengan field sumber tersembunyi agar Anda tahu dari channel mana setiap pendaftaran datang. Minta orang menyetujui email di hari peluncuran, lalu ekspor daftarnya seminggu sebelumnya dan bagi menjadi dua pengiriman: satu tepat setelah hari Product Hunt dimulai pukul 12.01 dini hari waktu Pasifik, dan satu untuk wilayah Amerika di pagi hari mereka.

Peluncuran di Product Hunt punya tanggal tetap dan jendela 24 jam. Orang yang paling mungkin mencoba produk Anda dan meninggalkan komentar yang bermakna adalah mereka yang meminta dikabari, jadi daftarnya lebih penting daripada postingan peluncuran. Halaman ini membahas apa yang berubah ketika daftar dibangun untuk satu hari itu.

Apa bedanya daftar untuk Product Hunt

  • Tenggatnya tetap. Daftar tunggu biasa bisa menunggu sampai produk siap. Di sini, daftar harus diekspor, dibersihkan, dan dimuat ke tool email Anda sebelum tanggal yang Anda pilih berminggu-minggu lalu.
  • Harinya mengikuti waktu Pasifik. Peluncuran tayang pukul 12.01 dini hari PT dan bersaing untuk peringkat hari itu. Daftar Anda tersebar di semua zona waktu, jadi satu pengiriman di satu jam akan menemui setengahnya sedang tidur.
  • Yang diminta adalah masukan, bukan vote. Aturan Product Hunt melarang meminta upvote, dan melakukannya bisa membuat peluncuran didiskualifikasi. Minta daftar Anda mencoba produknya dan berkomentar tentang apa yang ingin mereka ubah. Ini sesuai aturan, dan komentar lebih menarik dibaca daripada sekadar angka.
  • Hari peluncuran membawa lonjakan. Pengunjung Product Hunt mendarat di situs Anda dan mendaftar dalam hitungan menit satu sama lain. Batas formulir yang tidak pernah berpengaruh selama berminggu-minggu bisa berpengaruh selama beberapa jam.
Daftar peluncuran Product Hunt dari pendaftaran pertama hingga sehari setelahnyaSebelumHari peluncuran, waktu Pasifik6hingga4minggusebelumhalamantayang,ref perchannel1minggusebelumekspor,dedupe,bagigelombangseharisebelumnaikkanbatasformulir12:01a.m.peluncurantayanggelombang1Eropa,Afrika,Asia,Oseania6 a.m.gelombang2:Amerikakeesokanhariterimakasih,bandingkanrefbagikan tiap minggumenitDaftar peluncuran Product Hunt dari pendaftaran pertama hingga sehari setelahnyaSebelumHari peluncuran, waktu Pasifik6 hingga 4 minggu sebelumhalaman tayang, ref per channel1 minggu sebelumekspor, dedupe, bagi gelombangsehari sebelumnaikkan batas formulir12:01 a.m.peluncuran tayanggelombang 1Eropa, Afrika, Asia, Oseania6 a.m.gelombang 2: Amerikakeesokan hariterima kasih, bandingkan refbagikan tiap minggumenit
  1. Empat sampai enam minggu sebelumnya, halaman tayang dengan formulir, dan setiap channel tempat Anda membagikannya mendapat nilai ref sendiri.
  2. Seminggu sebelumnya, ekspor daftar, hapus duplikat, dan bagi orang yang menyetujui menjadi dua gelombang berdasarkan negara.
  3. Sehari sebelumnya, naikkan batas untuk seluruh formulir agar trafik peluncuran tidak ditolak.
  4. Pukul 12.01 dini hari waktu Pasifik, peluncuran tayang.
  5. Beberapa menit kemudian, kirim gelombang 1 ke semua orang di luar wilayah Amerika, tempat saat itu pagi atau siang.
  6. Sekitar pukul 06.00 waktu Pasifik, kirim gelombang 2 ke wilayah Amerika.
  7. Keesokan harinya, ucapkan terima kasih ke daftar dan bandingkan nilai ref mana yang membawa orang yang mendaftar dan bertahan.
Ikiform mencatat negara setiap pendaftaran, jadi pembagian ini tidak butuh pertanyaan tambahan di formulir. Negara yang tidak diketahui masuk ke gelombang kedua.

Formulirnya

Mulai dari formulir yang hanya berisi email di panduan utama dan tambahkan dua hal: checkbox yang meminta persetujuan email di hari peluncuran, dan ref tersembunyi yang diisi dari link tempat orang datang.

index.html
<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>
  • Checkbox dimulai dalam keadaan tidak dicentang. Email di hari peluncuran berbeda dari akses awal, jadi orang harus menyetujuinya sendiri. Ikiform menyimpan true atau false bersama timestamp pendaftaran.
  • Skrip menyalin ?ref= atau ?utm_source= ke input tersembunyi dan membuang apa pun yang bukan huruf, angka, -, atau _. Tanpa keduanya, ref tetap direct.
  • Product Hunt biasanya menambahkan ref=producthunt ke link di halaman peluncuran Anda, jadi pendaftaran di hari peluncuran menandai dirinya sendiri.

Tambahkan definisi field di tab Fields formulir. Ikiform lalu menolak kiriman yang tidak menyertakan email, menyimpan checkbox sebagai true atau false sungguhan, dan membatasi ref hingga 40 karakter agar tidak ada yang bisa mengisinya berlebihan.

Field
{
  "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 } }
  ]
}

Satu ref per channel

Tentukan nilainya sebelum Anda membagikan link di mana pun, dan pakai setiap kali:

Tempat Anda membagikanLinkRef yang disimpan
Postingan X atau Bluesky Andaexample.com/?ref=xx
LinkedInexample.com/?ref=linkedinlinkedin
Postingan komunitas, seperti Indie Hackersexample.com/?ref=ihih
Newsletter atau blog Andaexample.com/?utm_source=newsletternewsletter
Halaman peluncuran Product Hunt AndaDitambahkan oleh Product Huntproducthunt

Siapkan formulir untuk trafik peluncuran

Batas default cocok untuk halaman pra-peluncuran yang sepi. Hari peluncuran tidak sepi. Setiap pengunjung bisa mengirim 5 per menit, yang sudah lebih dari cukup, tetapi seluruh formulir dibatasi 300 per menit. Peluncuran yang masuk halaman depan bisa mengirim lebih banyak pendaftaran dari itu di menit yang ramai.

  • Sehari sebelumnya, buka pengaturan formulir dan pilih rate limit Custom dengan batas formulir yang lebih tinggi. Kembalikan setelah minggu peluncuran.
  • Jika Anda melakukan demo di meetup atau co-working space, semua orang berbagi satu IP. Pilih Relaxed untuk hari itu.
  • Kiriman yang ditolak mendapat 429 rate_limited dan header Retry-After. Formulir HTML biasa menampilkan halaman error Ikiform dengan link untuk kembali.
  • Aktifkan pemeriksaan manusia di Spam check jika hari peluncuran mendatangkan bot. Formulir biasa tidak perlu diubah untuk itu; lihat perlindungan spam.

Bagi email peluncuran menjadi dua gelombang

Seminggu sebelum peluncuran, baca daftar lewat REST API dan bagi. Skrip ini menyimpan pendaftaran terbaru per email, membuang siapa pun yang tidak mencentang kotak, dan menulis dua file CSV berdasarkan negara yang dicatat Ikiform. Skrip ini butuh secret key dengan submissions:read.

waves.mjs
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`);
}
  • Pendaftaran datang dari yang terbaru, jadi orang yang mendaftar dua kali dinilai dari jawaban terakhirnya. Jika mereka tidak mencentang kotak di kali kedua, mereka tidak diikutkan.
  • Impor kedua file ke tool email Anda sebagai segmen terpisah dan jadwalkan: gelombang 1 beberapa menit setelah pukul 12.01 dini hari waktu Pasifik, gelombang 2 sekitar pukul 06.00 waktu Pasifik.
  • Jalankan sekali lagi pada malam sebelum peluncuran untuk menangkap pendaftaran minggu terakhir.

Email di hari peluncuran

Kirim dari tool email Anda, agar unsubscribe dan bounce tertangani. Awali dengan produknya, taruh link halaman peluncuran di urutan kedua, dan minta komentar, bukan vote:

Email hari peluncuran
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 Acme
Ikiform tidak mengirim email ke orang yang mengisi formulir. Email notifikasi hanya dikirim ke Anda dan tim Anda, jadi tidak ada autoresponder, email konfirmasi, atau double opt-in. Kirim semua itu dari tool email Anda, dipicu oleh webhook. Jika Anda ingin email sambutan begitu seseorang bergabung, teruskan pendaftaran lewat webhook ke tool email Anda; panduan utama menunjukkan relay-nya.

Sehari setelahnya

Ekspor daftar lagi dengan Export CSV, difilter ke 7 hari terakhir, dan hitung pendaftaran berdasarkan ref. Channel yang membawa orang yang kemudian sign-in adalah tempat postingan peluncuran Anda berikutnya. Kirim ucapan terima kasih singkat dari tool email Anda kepada orang yang bergabung di hari peluncuran; mereka menemukan Anda lewat Product Hunt dan belum pernah mendengar kabar dari Anda.

Pastikan berfungsi

Lakukan ini seminggu sebelum peluncuran, bukan di malam harinya.

  1. Di Allowed domains formulir, tambahkan domain situs Anda, ditambah localhost selama pengembangan. Biarkan kosong untuk menerima kiriman dari mana saja.
  2. Buka halaman dengan ?ref=x lalu kirim. Kiriman menampilkan ref sebagai x dan launch_reminder sebagai false.
  3. Kirim lagi dengan kotak dicentang dan tanpa query string. ref berisi direct dan launch_reminder berisi true.
  4. Buka Submissions di dashboard. Kiriman baru ada di sana dengan setiap field yang Anda kirim.
  5. Jalankan skrip gelombang dan pastikan setiap alamat uji ada di file yang sesuai dengan negaranya.
  6. Tidak ada yang masuk? Ubah filter status di dashboard ke Spam. Spam mendapat jawaban sukses yang sama dengan kiriman asli.

Jebakan

MasalahYang harus dilakukan
429 rate_limitedSatu pengunjung mengirim melebihi rate limit formulir. Standard mengizinkan 5 per menit per pengunjung. Tunggu sesuai Retry-After, atau pilih Relaxed atau Custom untuk formulir yang mengirim dari satu IP bersama.
422 dengan Unknown field untuk utm_source atau parameter lainHanya ref yang didefinisikan. Skrip membaca utm_source ke dalam ref alih-alih mengirimnya, jadi pastikan Anda tidak menambahkan input tersembunyi lain.
Setiap pendaftaran punya ref bernilai directSkrip berjalan sebelum formulirnya ada, atau id formulirnya berbeda. Letakkan skrip setelah formulir dan pertahankan id="launch-list".
Negara kosong di hasil eksporIkiform tidak bisa mengetahui lokasi pengunjung. Skrip menaruh negara kosong di gelombang pagi, yang menjangkau wilayah Amerika saat terjaga dan semua orang lainnya di siang atau sore hari mereka.
Kiriman ada di dashboard tetapi tidak ada email atau webhook yang datangKiriman itu disimpan sebagai spam. Spam tidak memicu apa pun. Buka di filter Spam untuk melihat alasannya, dan tandai sebagai bukan spam untuk mengirim email dan webhook-nya.

Pertanyaan

Mentok di salah satu langkah, atau ingin panduan untuk situasi Anda? Email hello@ikiform.com.