DOCS

Panduan pemasangan

Formchan bekerja sebagai tujuan pengiriman formulir Anda. Semua yang Anda perlukan untuk menghubungkannya ada di sini.

BUILD WITH AI

Mengembangkan dengan AI? Berikan URL dan spesifikasinya.

Berikan AI pengembang URL dari dasbor dan spesifikasi Markdown berbahasa Inggris ini. AI dapat menghubungkan formulir lama atau membuat yang baru.

Lihat instruksi untuk AI
Hubungkan formulir kontak situs ini ke Formchan.

URL pengiriman: [tempel URL khusus dari dasbor]
Spesifikasi: https://formchan.app/lp/integration-en.md

Baca spesifikasi dan terapkan integrasi dengan mempertahankan desain. Buat formulir jika belum ada. Sertakan validasi, status pengiriman, sukses dan gagal, pencegahan pengiriman ganda, serta panduan pengujian.

Memulai

Saat Anda mendaftar, formulir pertama langsung dibuatkan. Salin URL yang ditampilkan di dasbor dan masukkan ke action formulir Anda. Gunakan POST sebagai method.

Pengaturan formulir di dasbor. URL action dan kode untuk ditempel ke situs Anda ditampilkan di sini.
Pengaturan formulir di dasbor. URL action dan kode untuk ditempel ke situs Anda ditampilkan di sini.
<form action="https://formchan.app/f/YOUR_FORM_KEY" method="POST">
  <input name="name">
  <input name="email" type="email">
  <textarea name="message"></textarea>
  <button>Kirim</button>
</form>

Setelah seseorang mengirim formulir, ia melihat halaman konfirmasi. Pesan masuk ke kotak masuk Anda, dan AI menambahkan ★ dan tag.

Nama kolom

Anda bebas memberi nama kolom. Setiap kolom yang dikirim tampil apa adanya di kotak masuk dan di email notifikasi.

Alamat email untuk membalas dibaca dari kolom bernama email. mail dan _replyto juga bisa. Nama pengirim dibaca dari name atau fullname.

Satu kiriman bisa berukuran hingga 64 KB, dengan maksimal 50 kolom dan 5.000 karakter per kolom.

Setelah pengiriman

Jika Anda tidak mengatur apa pun, Formchan menampilkan halaman konfirmasinya sendiri dengan tautan kembali ke halaman sebelumnya.

Halaman konfirmasi yang tampil jika Anda tidak mengatur apa pun.
Halaman konfirmasi yang tampil jika Anda tidak mengatur apa pun.

Untuk mengarahkan pengunjung ke halaman Anda sendiri, masukkan URL-nya ke kolom tersembunyi bernama _next.

<input type="hidden" name="_next" value="https://example.com/thanks">

Mengirim dari JavaScript

Kirim dengan header Accept: application/json, dan Formchan menjawab dalam JSON alih-alih menampilkan halaman. Pengunjung tetap berada di halaman Anda.

const res = await fetch('https://formchan.app/f/YOUR_FORM_KEY', {
  method: 'POST',
  headers: { Accept: 'application/json' },
  body: new FormData(form),
});
const data = await res.json(); // { ok: true }

Jika berhasil, Anda menerima ok: true. Jika gagal, Anda menerima ok: false dan salah satu kode galat berikut.

KodeHTTPArti
not_found404Formulir tidak ada
origin403Dikirim dari situs yang tidak diterima formulir
rate429Terlalu banyak pesan dalam waktu singkat
body400Isi kiriman tidak dapat dibaca
empty400Semua kolom kosong

Perlindungan spam

Tambahkan kolom tersembunyi bernama _gotcha ke formulir Anda. Orang tidak bisa melihatnya, tetapi bot mengisinya. Kiriman seperti itu tampak diterima, lalu dibuang.

<input name="_gotcha" style="display:none" tabindex="-1" autocomplete="off">

Pesan yang dikirim berkali-kali dari tempat yang sama dalam waktu singkat akan ditolak.

Di pengaturan formulir, Anda bisa menentukan situs yang boleh mengirim ke formulir itu. Kiriman dari situs lain ditolak.

WordPress, Webflow, dan lainnya

HTML
Pakai kode formulir di atas apa adanya.
WordPress
Tempel kode formulir ke blok HTML Khusus.
Webflow
Di pengaturan formulir, masukkan URL ke Action dan atur Method ke POST.
React / Next.js
Kirim dengan fetch, seperti di bagian Mengirim dari JavaScript.

Notifikasi

Pesan ★3 dikirim ke alamat email notifikasi Anda begitu masuk. Saat Anda menambahkan alamat, kami mengirim email konfirmasi ke alamat itu. Notifikasi dimulai setelah tautan di dalamnya diklik.

Alamat email notifikasi. Email hanya dikirim ke alamat yang sudah dikonfirmasi.
Alamat email notifikasi. Email hanya dikirim ke alamat yang sudah dikonfirmasi.

★1 dan ★2 digabung dalam satu email per hari. Anda bisa mengubah jamnya, dan tidak ada email yang dikirim pada hari tanpa pesan baru.

Pengaturan notifikasi. Nyalakan atau matikan email ★3 dan ringkasan harian, lalu pilih jamnya.
Pengaturan notifikasi. Nyalakan atau matikan email ★3 dan ringkasan harian, lalu pilih jamnya.
Email untuk pesan ★3.
Email untuk pesan ★3.
Email ringkasan harian.
Email ringkasan harian.

Di paket Pro ke atas, Anda juga bisa mengirim pesan ke Slack, Chatwork, Microsoft Teams, Google Chat, dan Discord.

Notifikasi ke chat (paket Pro ke atas).
Notifikasi ke chat (paket Pro ke atas).

Webhook

Di paket Bisnis, Formchan mengirim POST berisi JSON ke URL Anda setiap kali pesan masuk dan selesai dibaca AI.

Pengaturan Webhook (paket Bisnis).
Pengaturan Webhook (paket Bisnis).

Header X-Formchan-Signature berisi HMAC-SHA256 dari isi permintaan, ditandatangani dengan secret webhook Anda, dalam format sha256=…. Hitung nilai yang sama di sisi Anda untuk memastikan permintaan benar-benar berasal dari Formchan.

Contoh isi

{
  "event": "submission.created",
  "at": "2026-10-12T09:29:41.000Z",
  "workspace": { "id": "w_…", "name": "Harbor Design Studio" },
  "submission": {
    "id": "sb_…",
    "number": 1,
    "form": { "id": "fm_…", "name": "Contact" },
    "received_at": "2026-10-12T09:29:38.000Z",
    "name": "Emily Parker",
    "email": "emily@example.com",
    "fields": { "name": "Emily Parker", "email": "emily@example.com", "message": "…" },
    "stars": 3,
    "tags": [{ "id": "tg_…", "name": "Inquiry", "by": "ai" }],
    "summary": "Wants a consultation on adding a second floor.",
    "reason": "Concrete request with budget and timeline.",
    "done": false
  }
}

Memeriksa tanda tangan (Node.js)

import crypto from 'node:crypto';

// rawBody: the request body as a string, before JSON.parse
function isFromFormchan(rawBody, signature, secret) {
  const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
  const a = Buffer.from(expected), b = Buffer.from(signature || '');
  return a.length === b.length && crypto.timingSafeEqual(a, b);
}

Jika pesan tidak masuk, periksa URL di action dan daftar "Terima kiriman hanya dari situs ini" di pengaturan formulir Anda.

Luangkan perhatian untuk pertanyaan penting.

Gratis hingga 100 pesan per bulan. Cukup alamat email. Tanpa kartu kredit.

Mulai gratis