Melampaui formulir builder

Melampaui formulir builder6 menit baca

Batas Netlify Forms: apa yang terjadi di 100 kiriman, dan jalan keluarnya

Paket Netlify lama menghitung kiriman formulir per situs dan meng-upgrade Anda otomatis, dan paket kredit bisa menjeda situs, jadi pindahkan formulir ke backend.

Preet SutharPendiri, Ikiform

Di paket lama Netlify, setiap situs mendapat 100 kiriman formulir per bulan, dan melewatinya meng-upgrade situs ke level Forms berbayar secara otomatis. Di paket berbasis kredit untuk akun yang dibuat sejak September 2025, formulir gratis, tetapi tim gratis yang kehabisan kredit akan dijeda semua situsnya, termasuk formulir. Memindahkan formulir ke Ikiform berarti menghapus atribut Netlify dan mengatur action, di HTML biasa atau framework apa pun.

Apa yang berbeda di Netlify

Netlify bukan site builder; ia host dengan formulir bawaan. Itu membentuk batasnya sekaligus jalan keluarnya. Batas mana yang berlaku tergantung kapan akun Anda dibuat:

AkunApa kata dokumentasi NetlifyApa artinya bagi formulir yang ramai
Paket lama, dibuat sebelum 4 September 2025Forms Level 0 mencakup 100 kiriman dan 10 MB upload per situs per bulan. Melewatinya meng-upgrade situs ke Forms Level 1, dengan 1.000 kiriman, ditagih di akhir siklus penagihan. Setelah itu, paket penggunaan tambahan menambah 500 sekaligusGelombang spam bisa memindahkan situs ke level berbayar tanpa ada yang memutuskannya. Di tier gratis lama, mencapai batas menjeda setiap situs di akun
Paket berbasis kredit, dibuat sejak saat ituKiriman formulir gratis dan tanpa batas, tanpa levelFormulirnya sendiri tidak berbiaya. Tetapi saat tim gratis menghabiskan kredit bulanannya, Netlify menjeda semua proyeknya, dan proyek yang dijeda tidak menerima kiriman formulir

Dokumentasi Netlify sendiri jelas menyatakan upgrade lama terjadi otomatis dan Anda tidak bisa turun lagi selama penggunaan di atas level yang lebih rendah. Periksa jenis paket tim Anda dan penggunaan formulir situs di dashboard Netlify sebelum memutuskan apa pun.

Alasan kedua orang pindah tidak ada hubungannya dengan angka. Netlify Forms bekerja dengan membaca HTML yang Anda deploy:

  • Formulir ditemukan saat deploy. Formulir yang dirender React, Vue, atau Svelte tidak ada di HTML itu, jadi Anda menyimpan salinan statis tersembunyi agar ditemukan build, dan mengirim ke sana dengan field form-name.
  • Dengan Next.js, adapter OpenNext butuh salinan itu sebagai file statis di public/, dan post harus pergi ke file statis itu, bukan ke halaman Next.js. Build gagal jika data-netlify muncul di kode React tanpa salinan itu.
  • Kiriman harus urlencoded atau multipart. JSON tidak diterima.
  • Formulir hanya berfungsi selama situs di-deploy di Netlify. Pindah host berarti memindahkan formulir.
Bagaimana penggunaan formulir situs Netlify lama naik dalam sebulan, dan apa yang diubah dengan mengirim ke IkiformPaket lama, satu situs, satu bulanFormulir mengirim ke IkiformLevel0100kirimantermasukkirimanke-101spamjugadihitungLevel11.000perbulan,ditagihpakettambahanmasing-masingtambah500halamansama diNetlifyendpointIkiformURLactionbiasaNetlifyFormstidakada yangdihitungupgrade otomatiskirimBagaimana penggunaan formulir situs Netlify lama naik dalam sebulan, dan apa yang diubah dengan mengirim ke IkiformPaket lama, satu situs, satu bulanFormulir mengirim ke IkiformLevel 0100 kiriman termasukkiriman ke-101spam juga dihitungLevel 11.000 per bulan, ditagihpaket tambahanmasing-masing tambah 500halaman sama di Netlifyendpoint IkiformURL action biasaNetlify Formstidak ada yang dihitungupgrade otomatiskirim
  1. Di paket lama, situs memulai bulan di Forms Level 0 dengan 100 kiriman termasuk.
  2. Kiriman ke-101 tiba. Dokumentasi penggunaan Netlify menggambarkan penggunaan situs, jadi lonjakan spam bisa menjadi pendorongnya melewati batas.
  3. Netlify meng-upgrade situs ke Forms Level 1, dengan 1.000 kiriman, dan menagihnya di akhir siklus.
  4. Setelah Level 1, paket penggunaan tambahan menambah 500 kiriman sekaligus.
  5. Dengan formulir mengirim ke Ikiform, halaman tetap di Netlify tetapi post pergi ke endpoint Ikiform.
  6. Netlify Forms tidak pernah menerima post, jadi tidak ada yang perlu dihitung atau di-upgrade.
Hosting tetap di Netlify. Hanya tujuan formulir yang pindah, dan bersama itu penghitungannya.

Pindahkan formulir, per stack

Sebelum mengubah kode apa pun, buat satu formulir Ikiform per nama formulir Netlify dan atur Honeypot field-nya ke bot-field. Dengan begitu input tersembunyi yang sudah ada tetap berfungsi sebagai honeypot, tanpa ganti nama. Pilih stack Anda:

HTML biasa di Netlify butuh perubahan paling sedikit. Hapus atribut Netlify dan input form-name, arahkan action ke endpoint, dan pindahkan path halaman terima kasih ke _redirect sebagai URL lengkap. Input bot-field tetap sebagai honeypot Anda.

<form name="contact" method="POST" action="/thanks" data-netlify="true" netlify-honeypot="bot-field">
  <input type="hidden" name="form-name" value="contact" />
  <p hidden><input name="bot-field" /></p>
  <label>Email <input type="email" name="email" required /></label>
  <label>Topic
    <select name="topic">
      <option value="question">A question</option>
      <option value="bug">Something is broken</option>
      <option value="work">Working together</option>
    </select>
  </label>
  <label>Message <textarea name="message" required></textarea></label>
  <button type="submit">Send</button>
</form>
Versi TanStack Start dan React Router mengirim dari server Anda. Versi sisi server mengirim dengan secret key, jadi Ikiform melewati Allowed domains dan pemeriksaan manusianya. Setiap post lalu datang dari IP server Anda, dan batas Standard 5 per menit per pengunjung menghitung semua pengunjung Anda bersama-sama. Pilih rate limit Relaxed atau Custom untuk formulir yang Anda kirim lewat server, dan simpan IKIFORM_SECRET_KEY di environment variable khusus server.

Setiap versi mempertahankan nama field yang sama seperti di Netlify, jadi email notifikasi dan kolom CSV terasa familier. Perbandingan Netlify Forms berisi pemetaan atribut lengkap, termasuk data-netlify-recaptcha dan input file.

Deploy preview dan allowed domains

Netlify memberi setiap pull request alamatnya sendiri, seperti deploy-preview-42--your-site.netlify.app. Itu bukan subdomain dari your-site.netlify.app, jadi mencantumkan alamat situs Anda di Allowed domains tidak mencakup preview, dan post dari preview masuk ke spam dengan origin_mismatch.

  • Tambahkan your-site.netlify.app dan domain kustom Anda untuk produksi.
  • Tambahkan host preview tertentu selama Anda mengujinya, lalu hapus.
  • Jangan tambahkan netlify.app saja. Setiap situs di Netlify akan diizinkan mengirim ke formulir Anda.
  • Atau arahkan preview ke formulir Ikiform kedua tanpa allowed domains, lewat environment variable, dan jaga produksi tetap ketat.

Beralih tanpa kehilangan kiriman

  1. Unduh kiriman lama setiap formulir sebagai CSV dari bagian Forms situs. Ikiform tidak punya fitur import.
  2. Deploy formulir baru ke preview dan kirim uji. Periksa nama field di dashboard Ikiform.
  3. Merge ke produksi dan kirim uji lagi dari domain live.
  4. Ganti outgoing webhook Netlify dengan webhook Ikiform. Netlify menandatangani dengan token JWS; Ikiform memakai header Standard Webhooks, jadi verifier Anda juga berubah.
  5. Setelah tidak ada post yang sampai ke Netlify selama beberapa hari, matikan deteksi formulir di pengaturan Forms situs.
Netlify menerima upload file dan menjalankan Akismet di setiap kiriman. Upload file belum didukung. Kiriman dengan file mendapat 422 files_not_supported. Jika formulir butuh file, biarkan formulir itu di Netlify Forms dan pindahkan sisanya.

Pastikan berfungsi di Netlify

  1. Di Allowed domains formulir, tambahkan domain situs Anda, ditambah localhost selama pengembangan. Biarkan kosong untuk menerima kiriman dari mana saja.
  2. Deploy preview, tambahkan host-nya, dan kirim formulir dari sana.
  3. Buka Submissions di dashboard. Kiriman baru ada di sana dengan setiap field yang Anda kirim.
  4. Pastikan field-nya email, topic, dan message, tanpa form-name dan tanpa bot-field.
  5. Buka tab Forms situs di Netlify dan pastikan uji tadi tidak ada di sana.
  6. Kirim sekali dengan bot-field terisi. Kiriman itu disimpan sebagai spam dan tidak mengirim apa pun.
  7. Cek inbox setiap penerima notifikasi. Masing-masing mendapat email berisi field, dan Reply terkirim ke pengirim formulir jika formulir punya field email.

Hal yang sering menjebak

MasalahYang harus dilakukan
Field form-name muncul di IkiformInput form-name tersembunyi masih ada di formulir, atau kode Anda masih mengaturnya. Hapus; Ikiform mengenali formulir dari URL.
Build Next.js gagal dengan menyebut formsAtribut netlify atau data-netlify masih ada di kode React Anda. Hapus bersama public/__forms.html.
Post dari preview masuk ke spamHost preview tidak ada di Allowed domains. Tambahkan selama Anda menguji, atau gunakan formulir kedua untuk preview.
Setiap post ditandai spam, bahkan yang asliHoneypot field masih _gotcha sementara input Anda bot-field, atau sebaliknya. Samakan keduanya.
422 files_not_supportedFormulir punya <input type="file"> dengan file yang dipilih. Upload file belum didukung; hapus input itu atau minta link sebagai gantinya.
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.

Pertanyaan

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