DOCS

설정 가이드

Formchan은 폼의 전송 주소로 작동해요. 연결하는 데 필요한 내용을 이 페이지에 모았어요.

BUILD WITH AI

AI로 개발하고 있다면, URL과 명세서만 전달하세요.

관리 화면에서 얻은 폼 전송 URL과 영어 Markdown 명세서를 개발 AI에 전달하세요. 기존 폼 연결이나 새 폼 작성을 요청할 수 있습니다.

AI에 전달할 요청문 보기
이 사이트의 문의 폼을 Formchan에 연결해 주세요.

전송 URL: [관리 화면에서 얻은 전용 URL 입력]
연동 명세서: https://formchan.app/lp/integration-en.md

명세서를 읽고 기존 디자인을 유지하면서 구현해 주세요. 폼이 없으면 만들어 주세요. 입력 검증, 전송 중·성공·실패 표시, 중복 전송 방지와 테스트 방법도 포함해 주세요.

시작하기

가입하면 첫 번째 폼이 만들어져 있어요. 대시보드에 표시된 URL을 복사해 폼의 action에 넣으세요. method는 POST로 지정해요.

대시보드의 폼 설정. 전송할 URL과 사이트에 붙여 넣을 코드가 표시돼요.
대시보드의 폼 설정. 전송할 URL과 사이트에 붙여 넣을 코드가 표시돼요.
<form action="https://formchan.app/f/YOUR_FORM_KEY" method="POST">
  <input name="name">
  <input name="email" type="email">
  <textarea name="message"></textarea>
  <button>보내기</button>
</form>

폼을 보낸 사람에게는 완료 페이지가 표시돼요. 메시지는 수신함에 도착하고, AI가 ★와 태그를 붙여요.

필드 이름

필드 이름은 자유롭게 정할 수 있어요. 보낸 필드는 모두 그대로 수신함과 알림 메일에 표시돼요.

답장에 쓸 이메일 주소는 email이라는 이름의 필드에서 읽어요. mail이나 _replyto도 쓸 수 있어요. 보낸 사람 이름은 name이나 fullname에서 읽어요.

한 번에 보낼 수 있는 양은 64 KB까지, 필드는 50개까지, 필드 하나는 5,000자까지예요.

보낸 다음 화면

아무것도 지정하지 않으면 Formchan의 완료 페이지가 표시돼요. 이전 페이지로 돌아가는 링크도 있어요.

아무것도 지정하지 않았을 때 표시되는 완료 페이지.
아무것도 지정하지 않았을 때 표시되는 완료 페이지.

내 사이트의 페이지로 이동시키려면 _next라는 숨은 필드에 그 URL을 넣으세요.

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

JavaScript로 보내기

Accept: application/json 헤더를 붙여 보내면 페이지를 보여 주는 대신 JSON으로 응답해요. 방문자는 지금 페이지에 그대로 머물러요.

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 }

성공하면 ok: true가 돌아와요. 실패하면 ok: false와 함께 다음 오류 코드 중 하나가 돌아와요.

코드HTTP의미
not_found404폼이 존재하지 않음
origin403이 폼이 허용하지 않는 사이트에서 보냄
rate429짧은 시간에 너무 많이 보냄
body400내용을 읽을 수 없음
empty400모든 필드가 비어 있음

스팸 방지

_gotcha라는 이름의 숨은 필드를 폼에 넣으세요. 사람에게는 보이지 않지만 봇은 이 필드를 채워요. 이런 전송은 겉으로는 접수된 것처럼 보이고, 실제로는 버려져요.

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

같은 곳에서 짧은 시간에 여러 번 보낸 메시지는 거부해요.

폼 설정에서 전송을 허용할 사이트를 정할 수 있어요. 다른 사이트에서 보낸 것은 거부해요.

WordPress, Webflow 등에서 쓰기

HTML
위의 폼 코드를 그대로 쓰세요.
WordPress
사용자 정의 HTML 블록에 폼 코드를 붙여 넣으세요.
Webflow
폼 설정에서 Action에 URL을 넣고, Method를 POST로 지정하세요.
React / Next.js
“JavaScript로 보내기”에 나온 대로 fetch로 보내세요.

알림

★3 메시지는 도착하는 즉시 알림 받을 주소로 메일을 보내요. 주소를 추가하면 확인 메일이 가고, 그 안의 링크를 누르면 알림이 시작돼요.

알림 받을 이메일 주소. 확인을 마친 주소로만 보내요.
알림 받을 이메일 주소. 확인을 마친 주소로만 보내요.

★1과 ★2는 하루 한 통의 요약 메일로 받아요. 보내는 시간은 바꿀 수 있고, 새 메시지가 없는 날에는 보내지 않아요.

알림 설정. ★3 메일과 일일 요약을 켜고 끄고, 요약을 보낼 시간을 정해요.
알림 설정. ★3 메일과 일일 요약을 켜고 끄고, 요약을 보낼 시간을 정해요.
★3 메시지 알림 메일.
★3 메시지 알림 메일.
일일 요약 메일.
일일 요약 메일.

프로 플랜 이상에서는 Slack, Chatwork, Microsoft Teams, Google Chat, Discord로도 보낼 수 있어요.

채팅 알림 (프로 플랜 이상).
채팅 알림 (프로 플랜 이상).

Webhook

비즈니스 플랜에서는 메시지가 도착해 AI가 다 읽고 나면, 지정한 URL로 JSON을 POST로 보내요.

Webhook 설정 (비즈니스 플랜).
Webhook 설정 (비즈니스 플랜).

X-Formchan-Signature 헤더에는 요청 본문을 Webhook 서명 시크릿으로 서명한 HMAC-SHA256 값이 sha256=… 형식으로 들어 있어요. 받는 쪽에서 같은 값을 계산해 Formchan에서 온 요청이 맞는지 확인하세요.

본문 예시

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

서명 확인하기 (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);
}

메시지가 도착하지 않으면 action의 URL과, 폼 설정의 ‘이 사이트에서만 접수’를 확인하세요.

중요한 문의에 집중하는 일상으로.

월 100건까지 무료입니다. 이메일 주소만 있으면 돼요. 신용카드는 필요 없어요.

무료로 시작