# 웹사이트 빌더의 폼 한계 넘어서기

> Webflow, Netlify, Carrd, Framer 폼이 한도나 빠진 기능에 부딪히면, 디자인한 폼은 그대로 두고 대신 폼 백엔드를 가리키게 하세요.

2026-10-25 게시 · https://ikiform.com/ko/guides/website-builder-forms

빌더가 그리는 폼은 그대로 두고 보내는 곳만 바꾸세요. Webflow에서는 커스텀 액션, Carrd에서는 **Send to URL**, Framer에서는 웹훅 대상, Netlify 호스팅 페이지에서는 일반 `action`입니다. 그러면 POST가 각 제출을 검증하고 거르고 저장하고 전달하는 폼 백엔드로 가므로, 빌더의 제출 한도와 플랜 제한이 더 이상 적용되지 않습니다. 파일 업로드와 빌더 자체 받은편지함처럼 포기하는 것을 먼저 확인하세요.

모든 사이트에 폼이 필요하므로 사이트 빌더는 폼을 제공합니다. 하지만 첫 번째 문의 폼을 위해 만들어졌지, 열 번째 폼이나 천 번째 제출을 위한 것은 아닙니다. 언젠가는 벽에 부딪힙니다. 제출 한도, 다른 이유로는 필요 없는 플랜이 있어야 쓸 수 있는 기능, 사이트가 한 호스트에 있을 때만 동작하는 폼, 또는 누가 연락했는지에 대한 유일한 기록인 받은편지함입니다.

이를 넘어서려고 폼을 다시 만들 필요는 없습니다. 주요 빌더는 모두 폼을 다른 곳으로 보낼 수 있습니다. 이 가이드는 그렇게 할 때 무엇이 바뀌는지, 제출을 하나도 잃지 않고 빌더마다 어떻게 하는지, 그리고 빌더의 폼에 머무는 것이 더 나은 경우는 언제인지 설명합니다.

## 폼이 빌더를 떠나면 바뀌는 것

빌더 폼은 두 부분으로 되어 있습니다. 빌더가 그리는 눈에 보이는 부분과, POST를 받는 부분입니다. 폼 백엔드로 옮기면 두 번째 부분만 바뀝니다. 레이아웃, 글꼴, 스타일은 그대로입니다.

다이어그램: 폼 백엔드로 POST하기 전과 후의 빌더 폼

1. 전: 방문자가 폼을 제출하면 빌더 자체 폼 핸들러가 POST를 받습니다.
2. 빌더는 이를 플랜의 제출 한도에 집계하고 받은편지함에 보관하거나 이메일로 보냅니다.
3. 후: 같은 디자인의 같은 폼이 대신 Ikiform 엔드포인트로 POST합니다.
4. Ikiform이 필드를 검증하고 POST의 스팸 점수를 매긴 뒤 저장합니다.
5. Ikiform이 팀에 이메일을 보내고 서명된 웹훅을 전송하며, 모든 제출을 검색하고 CSV로 내보낼 수 있게 보관합니다.

바뀌는 것은 목적지뿐입니다. 빌더는 POST를 보지 못하므로 그 폼에는 빌더의 제출 집계와 폼 기능이 더 이상 적용되지 않습니다.

## 사람들이 부딪히는 한도

빌더마다 선을 긋는 지점이 다릅니다. 아래 표는 2026년 10월 기준 각 빌더의 요금 및 도움말 페이지 내용을 요약한 것입니다. 플랜은 바뀌므로 결정하기 전에 링크된 세부 페이지와 빌더 사이트를 확인하세요.

| 빌더 | 폼이 하는 일 | 벽에 부딪히는 지점 | 해결 방법 |
| --- | --- | --- | --- |
| Webflow | 제출을 저장하고 알림 이메일을 보내며 CSV로 내보냄 | 무료 Starter 플랜은 사이트당 총 50건의 폼 제출을 허용하며 집계가 초기화되지 않습니다. 내보낸 사이트는 폼 처리가 전혀 없습니다 | Form Block 설정의 커스텀 액션. Starter에서도 동작합니다 |
| Netlify | 배포 시 `data-netlify` 폼을 감지하고 POST를 저장함 | 레거시 플랜은 사이트별 월 제출 수를 계량하고 한도를 넘으면 사이트를 유료 Forms 등급으로 올립니다. 폼은 Netlify가 빌드한 사이트에서만 동작합니다 | Netlify 속성을 제거하고 폼의 `action`을 설정 |
| Carrd | 문의 폼은 이메일로 보내고, 가입 폼은 이메일 도구에 사람을 추가함 | 모든 폼에 Pro Standard가 필요합니다. **Send to URL**을 포함한 커스텀 폼에는 Pro Plus가 필요합니다 | Pro Plus의 **Send to URL**, 또는 Pro Standard의 **Embed** |
| Framer | 각 제출을 이메일, Google Sheets 또는 웹훅으로 보냄 | 딱히 한도는 없습니다. 팀은 스팸 상태, 검증, 알림, 둘 이상의 목적지를 갖춘 저장된 기록을 원합니다 | 엔드포인트를 웹훅 대상으로 추가하거나 코드 컴포넌트를 사용 |

Framer 행을 보세요. Framer에는 이미 웹훅이 있으므로, 폼을 옮기는 것은 한도를 우회하는 것이 아니라 POST 이후에 일어날 일에 대한 선택입니다. [Framer 페이지](https://ikiform.com/ko/guides/website-builder-forms/framer-forms.md)는 Ikiform이 전혀 필요 없는 경우도 솔직하게 설명합니다.

## 한도를 넘는 네 가지 방법

폼 백엔드가 유일한 답은 아니며, 때로는 최선도 아닙니다.

| 방식 | 잘하는 것 | 단점 |
| --- | --- | --- |
| 빌더 플랜 업그레이드 | 마이그레이션이 전혀 없습니다. Webflow의 유료 사이트 플랜은 무제한 제출을 내세우고, Netlify의 크레딧 기반 플랜은 폼이 무료입니다 | 한도 하나를 풀려고 플랜 전체 비용을 냅니다. 폼은 그 빌더와 호스트에 묶인 채로 남습니다 |
| [Tally](https://ikiform.com/alternatives/tally)나 [Typeform](https://ikiform.com/alternatives/typeform) 같은 폼 빌더 임베드 | 코드 없이 다양한 질문 유형, 로직, 파일 업로드 | 자체 모양과 스크립트를 가진 iframe입니다. 빌더에서 만든 디자인은 사라지고, 한도는 그 제품의 플랜으로 옮겨 갑니다 |
| 서버리스 함수처럼 직접 핸들러 작성 | 완전한 제어, 원하는 어떤 로직이든 | 코드를 돌리지 않으려고 빌더를 고른 사이트에서, 이제 스팸 필터링, 레이트 리밋, 저장, 알림, 재시도를 직접 맡아야 합니다 |
| Ikiform 같은 폼 백엔드를 가리키게 하기 | 디자인을 유지합니다. 스팸 필터링, 저장, 팀 이메일, 서명된 웹훅, CSV로 내보내기가 모든 빌더에서 같습니다 | 아직 파일 업로드가 없고, 빌더 받은편지함도, 빌더 안에서 클릭으로 연결하는 통합도 없습니다. 일부 빌더는 외부로 보내려면 유료 플랜이 필요합니다 |

빌더의 폼이 이미 필요한 모든 것을 하고 다른 이유로도 플랜이 가치 있다면 업그레이드하세요. 한도가 폼 자체에 관한 것이라면 폼 백엔드로 옮기세요. 여러 사이트의 제출을 한곳에 모으고 싶거나, 빌더를 바꿀 수도 있거나, 제출이 다른 도구에 안정적으로 도달해야 하는 경우입니다. [Netlify Forms 비교](https://ikiform.com/alternatives/netlify-forms)는 한 호스트를 놓고 그 절충을 자세히 다룹니다.

## 포기하는 것

폼이 다른 곳으로 POST하면 빌더는 이를 일반 HTML 폼으로 취급합니다. 그 폼에는 빌더의 폼 기능이 적용되지 않습니다. 전환하기 전에 목록을 알아 두세요.

- **빌더의 받은편지함.** 새 제출은 빌더가 아니라 Ikiform 대시보드에 나타납니다. 이전 제출은 원래 있던 곳에 남습니다.
- **경우에 따라 빌더의 성공 메시지.** Webflow의 성공 및 오류 블록은 Webflow가 POST를 처리할 때만 동작합니다. Carrd의 AJAX 모드와 Framer의 웹훅 대상은 그대로 유지합니다.
- **파일 업로드.** 파일 업로드는 아직 지원하지 않습니다. 파일이 있는 POST는 `422 files_not_supported`를 받습니다. Webflow, Netlify, Carrd 커스텀 폼은 모두 파일을 받으므로 이것부터 확인하세요.
- **클릭으로 연결하는 통합.** 원클릭 통합은 없습니다. 모든 도구는 서명된 [웹훅](https://ikiform.com/ko/docs/webhooks.md)으로, 직접 또는 [Zapier](https://ikiform.com/blog/form-submissions-to-zapier.md)나 [n8n](https://ikiform.com/blog/form-submissions-to-n8n.md) 같은 자동화 도구를 거쳐 연결합니다.
- **빌더의 스팸 필터.** Ikiform의 허니팟, 스팸 점수, 레이트 리밋, 선택적 사람 확인이 대신합니다. 빌더에서 추가한 reCAPTCHA 요소는 커스텀 목적지에서는 아무 일도 하지 않으니 제거하세요.

> 폼에 파일 업로드가 필요하다면 그 폼 하나만 빌더에 두고 나머지를 옮기세요. 사이트의 모든 폼이 같은 백엔드를 써야 할 이유는 없습니다.

## 각 빌더가 Ikiform을 가리키게 하기

Ikiform 대시보드에서 폼을 만들고 엔드포인트를 복사하세요. 그런 다음 빌더 자체의 외부 목적지 설정을 쓰세요. [Webflow](https://ikiform.com/ko/docs/guides/webflow.md), [Carrd](https://ikiform.com/ko/docs/guides/carrd.md), [Framer](https://ikiform.com/ko/docs/guides/framer.md) 문서 가이드에 전체 클릭 경로가 있습니다. 여기서는 바꿀 것과 많은 사람이 놓치는 한 가지를 다룹니다.

### Webflow

1. Form Block 안의 폼을 선택하고 **Settings**를 여세요.
2. **Send to**에서 커스텀 액션을 고르고 **Action**에 엔드포인트를 붙여 넣은 뒤 **Method**를 **POST**로 설정하세요.
3. 각 입력의 **Name**을 `email` 같은 소문자 id로 바꾸세요. Webflow는 레이블로 이름을 채우므로 그대로 두면 `Email`과 `Field 2`를 받게 됩니다.
4. 게시한 뒤 `webflow.io` 도메인에서 제출하세요. 커스텀 액션은 Designer에서 실행되지 않습니다.

놓치기 쉬운 점: Webflow가 더 이상 결과를 보지 못하므로 Webflow의 성공 블록이 표시되지 않습니다. Ikiform에서 **Redirect after submit**을 설정하거나 [Webflow 문서](https://ikiform.com/ko/docs/guides/webflow.md#keep-success-state)의 스크립트를 추가하세요. 자세한 내용과 Starter 한도는 [Webflow 한도 페이지](https://ikiform.com/ko/guides/website-builder-forms/webflow-submission-limit.md)에 있습니다.

### Netlify

1. `data-netlify` 또는 `netlify`, `netlify-honeypot`, 숨겨진 `form-name` 입력을 모두 제거하세요.
2. 폼의 `action`을 엔드포인트로, `method`를 `post`로 설정하세요.
3. 기존 감사 페이지 경로를 전체 `https:` URL로 **Redirect after submit**에 옮기세요.
4. JavaScript 폼이라면 Netlify 빌드용으로 둔 숨겨진 정적 사본을 삭제하고, 자기 사이트 대신 엔드포인트로 POST하세요.

놓치기 쉬운 점: 배포 미리보기는 자체 `netlify.app` 서브도메인에 있으므로 **Allowed domains**의 프로덕션 도메인이 이를 포함하지 않습니다. [Netlify 페이지](https://ikiform.com/ko/guides/website-builder-forms/netlify-forms-limit.md)에 모든 프레임워크용 코드가 있습니다.

### Carrd

1. Pro Plus에서 **Form**을 추가하고 **Type**을 **Custom**으로, 그다음 **Send to URL**로 설정한 뒤 엔드포인트를 붙여 넣으세요.
2. Carrd가 On Success와 On Failure 동작을 유지하도록 **Method**를 **AJAX**로, **Format**을 **Default**로 설정하세요.
3. 모든 필드에 **ID** 또는 **Submitted ID**를 주세요. `name`, `email`, `message`처럼요.
4. Pro Standard에서는 대신 **Embed** 요소에 HTML 폼을 붙여 넣으세요.

놓치기 쉬운 점: **XML** 형식은 `415`로 실패하고, **File** 필드는 `422 files_not_supported`로 실패합니다. [Carrd 페이지](https://ikiform.com/ko/guides/website-builder-forms/carrd-forms.md)를 참고하세요.

### Framer

1. 각 입력에 소문자 이름을 주세요. Framer는 이름을 JSON 키로 보냅니다.
2. 폼을 선택하고 **Send To** 옆에서 **Add…** > **Webhook**을 고른 뒤 엔드포인트를 붙여 넣으세요.
3. Ikiform에서 **Allowed domains**는 비워 두고 **Spam check**는 끈 채로 두고, **Relaxed** 레이트 리밋을 고르세요.

놓치기 쉬운 점: Framer는 방문자의 브라우저가 아니라 자체 서버에서 POST하므로, origin 확인과 방문자별 레이트 리밋이 평소처럼 동작하지 않습니다. [Framer 페이지](https://ikiform.com/ko/guides/website-builder-forms/framer-forms.md)가 그 절충과 이를 해결하는 서명된 릴레이를 설명합니다.

### Squarespace, Wix, WordPress 등

외부 목적지 설정이 없는 빌더도 대개 HTML 임베드는 받습니다. 아래 같은 폼을 코드 또는 임베드 블록에 붙여 넣으세요. 방문자가 페이지에 머물도록 `fetch`로 POST하고, Ikiform의 첫 번째 필드 오류를 보여 주며, 스크립트가 실행되지 않으면 일반 POST로 대체됩니다.

`임베드 또는 코드 블록`:

```html
<form id="enquiry" action="https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx" method="post" target="_top">
  <label>Name <input name="name" autocomplete="name" required maxlength="120"></label>
  <label>Email <input name="email" type="email" autocomplete="email" required></label>
  <label>Budget
    <select name="budget">
      <option value="">Not sure yet</option>
      <option value="under_5k">Under $5k</option>
      <option value="5k_20k">$5k to $20k</option>
      <option value="over_20k">Over $20k</option>
    </select>
  </label>
  <label>What are you planning? <textarea name="message" rows="5" required minlength="20"></textarea></label>
  <input type="hidden" name="source" value="builder-embed">
  <input name="_gotcha" type="text" tabindex="-1" autocomplete="off" hidden>
  <p id="enquiry-status" role="status" hidden></p>
  <button type="submit">Send enquiry</button>
</form>
<script>
  document.getElementById("enquiry").addEventListener("submit", async (event) => {
    event.preventDefault();
    const form = event.currentTarget;
    const status = document.getElementById("enquiry-status");
    const button = form.querySelector("button");
    button.disabled = true;
    try {
      const response = await fetch(form.action, {
        method: "POST",
        headers: { Accept: "application/json" },
        body: new FormData(form),
      });
      const result = await response.json();
      if (result.ok) {
        form.replaceChildren(Object.assign(document.createElement("p"), {
          textContent: "Thanks. We reply within two working days.",
        }));
        return;
      }
      const fields = result.error.fields ?? {};
      const first = Object.keys(fields)[0];
      status.textContent = first ? `${first}: ${fields[first][0]}` : result.error.message;
    } catch {
      status.textContent = "Couldn't send. Check your connection and try again.";
    }
    status.hidden = false;
    button.disabled = false;
  });
</script>
```

- 빌더가 임베드를 iframe으로 감쌀 때는 `target="_top"`이 중요합니다. 없으면 일반 POST가 프레임 안에 감사 페이지를 불러옵니다.
- 숨겨진 `_gotcha` 입력이 허니팟입니다. 사람에게는 보이지 않으며, 모든 입력을 채우는 봇은 스스로 스팸임을 드러냅니다.
- 숨겨진 `source` 입력은 문의가 어느 빌더나 페이지에서 왔는지 기록하므로, 여러 사이트가 한 폼으로 POST할 때 도움이 됩니다.
- 스크립트가 `fetch`로 POST하므로 이 폼의 **Spam check**는 끈 채로 두거나, 스크립트를 제거하고 브라우저가 일반 POST를 하게 하세요. 그러면 추가 코드 없이 확인이 실행됩니다.

[Squarespace](https://ikiform.com/ko/docs/guides/squarespace.md), [Wix](https://ikiform.com/ko/docs/guides/wix.md), [WordPress](https://ikiform.com/ko/docs/guides/wordpress.md) 가이드가 각 빌더에서 코드를 붙여 넣을 수 있는 곳을 다루고, [사이트 빌더 임베드](https://ikiform.com/ko/docs/guides/site-builders.md#embed)에 스타일이 적용된 버전이 있습니다.

다이어그램: 빌더별로 누가 POST를 보내는지, 그리고 허용 도메인에 주는 의미

1. Webflow의 커스텀 액션은 방문자의 브라우저가 Ikiform으로 POST하게 하므로 Allowed domains에 도메인을 등록하세요.
2. Carrd의 Send to URL과 Embed도 브라우저에서 POST하므로 허용 도메인이 평소처럼 동작합니다.
3. 일반 action을 쓰는 Netlify 호스팅 폼은 브라우저에서 POST합니다. 프로덕션 도메인과 테스트하는 미리보기 도메인을 모두 등록하세요.
4. Framer의 웹훅 대상은 Origin 헤더 없이 Framer 서버에서 POST하므로 Allowed domains를 비워 두세요. 그렇지 않으면 모든 POST가 잘못된 사이트에서 온 것으로 취급됩니다.

세 빌더는 방문자의 브라우저에서 POST를 보냅니다. Framer의 웹훅은 Framer에서 보내므로 스팸 확인과 레이트 리밋이 이를 보는 방식이 달라집니다.

## 진짜 마이그레이션은 필드 이름입니다

빌더 폼을 옮기는 작업의 대부분은 이름 짓기입니다. Ikiform은 폼이 보내는 이름을 그대로 저장하며, 빌더마다 이름을 만드는 방식이 다릅니다.

| 빌더 | 이름의 출처 | 설정하지 않으면 받게 되는 것 |
| --- | --- | --- |
| Webflow | 각 입력의 **Name** 설정 | `Name`, `Email`, `Field 2` 같은 레이블 |
| Carrd | **Submitted ID**, 그다음 **ID** | 레이블에서 생성된 ID |
| Framer | 각 입력의 이름 | 입력을 추가했을 때 붙은 이름 |
| Netlify | HTML의 `name` 속성 | 직접 지은 이름이며 대개 이미 괜찮음 |

게시하기 전에 `name`, `email`, `budget`, `message` 같은 짧은 소문자 id로 바꾸세요. 알림 이메일과 CSV 열이 더 읽기 쉬워지고, `email` 필드는 모든 알림의 회신 주소가 됩니다. 실제 제출이 하나 도착하면 Ikiform 폼에 [필드](https://ikiform.com/ko/docs/fields.md)를 추가해 서버가 타입과 길이를 강제하게 하세요. 위의 문의 폼을 정의와 함께 시험해 보세요.

폼: Project enquiry

- **이름** (`name`, text, 필수)
- **이메일** (`email`, email, 필수)
- **예산** (`budget`, select)
- **무엇을 계획하고 계신가요?** (`message`, textarea, 필수)

위 임베드와 같은 필드입니다. 폼의 **Fields** 탭에 정의를 붙여 넣으면 빌더가 어떻게 보냈든 Ikiform이 모든 POST를 정의와 대조합니다.

> 필드는 실제 제출을 하나 본 뒤에 정의하세요. 그 전에는 하지 마세요. 빌더는 Carrd의 UTM 필드처럼 요청하지 않은 필드를 추가하며, 이를 포함하지 않는 정의는 모든 POST를 Unknown field 오류가 있는 `422`로 만듭니다.

## 스테이징 도메인과 허용 도메인

빌더는 내 도메인보다 먼저 스테이징 주소에 게시합니다. 폼의 **Allowed domains**에 없는 도메인에서 온 POST는 스팸으로 저장되거나 **Reject**로 거부됩니다. 테스트할 모든 주소를 등록하세요.

| 빌더 | 스테이징 주소 | 추가할 것 |
| --- | --- | --- |
| Webflow | `your-site.webflow.io` | 그 호스트와 내 도메인 |
| Carrd | `your-site.carrd.co`, Pro에서는 `crd.co` | 그 호스트와 내 도메인 |
| Netlify | `your-site.netlify.app`, 그리고 `deploy-preview-42--your-site.netlify.app` 같은 미리보기 | 테스트하는 각 호스트. 미리보기는 `your-site.netlify.app`의 서브도메인이 아닙니다 |
| Framer, 웹훅 | 해당 없음 | 없음. 목록을 비워 둡니다 |

`webflow.io`나 `netlify.app` 같은 공유 호스트 전체를 추가하지 마세요. 그 호스트의 모든 사이트가 내 폼으로 POST할 수 있게 됩니다. 등록한 도메인의 서브도메인은 이미 허용되므로 `example.com`은 `www.example.com`을 포함합니다.

## 이전 제출 가져오기

Ikiform에는 가져오기 기능이 없으므로 과거 제출은 원래 있던 곳에 남습니다. 전환하기 전에, 그리고 플랜 변경으로 지워질 수 있기 전에 내보내 두세요.

- **Webflow:** 사이트의 **Forms** 설정에서 각 폼의 제출을 CSV로 다운로드하세요.
- **Netlify:** 사이트의 Forms 섹션에서 각 폼의 제출을 CSV로 다운로드하세요.
- **Carrd:** 문의 폼과 커스텀 이메일 폼은 각 메시지를 이메일로 전달하므로 받은편지함이 기록입니다.
- **Framer:** 제출을 보낸 이메일 받은편지함이나 Google Sheet가 기록입니다.

하나의 기록으로 유지하려면 이전 내보내기와 Ikiform CSV 내보내기를 Google Sheet 한 문서의 두 탭에 넣고 쌓으세요. 이 수식은 각 탭에서 날짜, 이름, 이메일, 메시지 열을 가져와 최신순으로 정렬합니다. 열 문자는 파일에 맞게 조정하세요.

`Google Sheets`:

```text
=SORT({
  Webflow!A2:A, Webflow!C2:C, Webflow!D2:D, Webflow!E2:E;
  Ikiform!B2:B, Ikiform!F2:F, Ikiform!G2:G, Ikiform!H2:H
}, 1, FALSE)
```

Ikiform 내보내기는 `id`, `created_at`, `form`, `status`로 시작하고 필드마다 열이 하나씩 이어지며, 파일당 최대 100,000행을 담습니다.

## 제출을 하나도 잃지 않고 전환하기

1. Ikiform 폼을 만들고 알림 수신자를 추가한 뒤, **Allowed domains**에 스테이징과 실제 도메인을 추가하세요.
2. 스테이징 사이트에서 목적지를 바꾸고 휴대폰과 노트북에서 실제 테스트를 제출하세요.
3. 대시보드에서 제출의 필드 이름을 확인하세요. 자동 생성된 것은 이름을 바꾸고, 스테이징을 다시 게시해 재테스트하세요.
4. 한가한 시간에 실제 도메인에 게시하고 테스트를 한 번 더 보내세요.
5. 옮기지 않은 두 번째 폼처럼 빌더가 여전히 무언가를 받는다면 빌더의 알림을 일주일 동안 켜 두었다가 끄세요.
6. 빌더의 이전 제출을 내보내고 그 파일을 새 기록과 함께 보관하세요.

첫 주에는 하루이틀마다 Ikiform 대시보드의 **Spam** 필터를 확인하세요. 스팸으로 저장된 실제 문의도 정상 문의와 같은 성공 응답을 받으므로 방문자는 알지 못합니다. 스팸 아님으로 표시하면 그때 이메일과 웹훅이 나갑니다. 알림 이메일은 확인된 수신자 최대 10명에게 갑니다.

## 상황별 가이드

빌더마다 고유한 한도, 외부 목적지 설정, 함정이 있습니다. 이 페이지들은 빌더를 하나씩 다룹니다.

- [Webflow 제출 한도](https://ikiform.com/ko/guides/website-builder-forms/webflow-submission-limit.md): Webflow의 무료 Starter 플랜은 사이트당 폼 제출 50건 이후로 수집을 멈추고 내보낸 사이트는 아예 수집하지 않으니, 대신 Form Block이 Ikiform을 가리키게 하세요.
- [Netlify Forms 한도](https://ikiform.com/ko/guides/website-builder-forms/netlify-forms-limit.md): 레거시 Netlify 플랜은 사이트별 폼 제출을 계량해 자동으로 업그레이드하고, 크레딧 플랜은 사이트를 일시 중지할 수 있으니 폼을 백엔드로 옮기세요.
- [Carrd 폼](https://ikiform.com/ko/guides/website-builder-forms/carrd-forms.md): Carrd의 문의 폼은 이메일만 보내고 커스텀 폼에는 Pro Plus가 필요하므로, 모든 제출을 저장하려면 Plus에서는 Send to URL을, Standard에서는 HTML 임베드를 쓰세요.
- [Framer 폼](https://ikiform.com/ko/guides/website-builder-forms/framer-forms.md): Framer 폼은 이미 이메일, Sheets, 웹훅으로 보냅니다. 저장되고 걸러진 제출, 팀 알림, 더 많은 목적지를 원한다면 Ikiform을 웹훅으로 추가하세요.

## 작동 확인하기

먼저 스테이징에서, 그다음 실제 사이트에서 한 번 실행하세요. Ikiform에는 무료 플랜이 없습니다. 테스트는 무료입니다. 플랜이 없는 워크스페이스는 `localhost`에서 월 50건의 테스트 제출을 받습니다. 실제 운영하려면 월 $6부터 500건을 제공하는 Pro를 고르거나, 한 번 결제로 10,000건 $49 또는 50,000건 $149를 구매하세요. 크레딧은 만료되지 않습니다. [요금](https://ikiform.com/ko/pricing)을 참고하세요.

1. 폼의 **Allowed domains**에 사이트 도메인을 추가하고, 개발하는 동안에는 `localhost`도 추가하세요. 비워 두면 어디서든 POST를 받습니다.
2. 빌더의 스테이징 도메인에 게시하세요. 커스텀 목적지는 편집기나 디자이너에서 실행되지 않습니다.
3. 페이지에서 폼을 작성해 제출하세요. 여러분의 감사 페이지나 Ikiform의 호스팅 감사 페이지로 이동합니다.
4. 대시보드에서 **Submissions**를 여세요. 보낸 모든 필드가 담긴 새 제출이 있습니다.
5. 그 제출의 필드 이름을 확인하세요. 레이블이나 생성된 이름이 아니라 소문자 id여야 합니다.
6. 알림 수신자 각각의 받은편지함을 확인하세요. 각자 필드가 담긴 이메일을 받고, 폼에 `email` 필드가 있으면 **Reply**는 제출자에게 갑니다.
7. 허니팟을 채워서 `_gotcha=bot`으로 POST하세요. 여전히 성공 응답을 받지만, 제출은 스팸으로 저장되고 이메일이나 웹훅을 보내지 않습니다.
8. 아무것도 도착하지 않았나요? 대시보드의 상태 필터를 **Spam**으로 바꾸세요. 스팸도 실제 제출과 같은 성공 응답을 받습니다.
9. 실제 도메인에 게시한 뒤 그곳에서 한 번 더 제출하세요.

## 문제 해결

| 문제 | 해결 방법 |
| --- | --- |
| Webflow 폼 제출 뒤 `404 not_found` 응답 | **Method**가 GET이라 브라우저가 엔드포인트를 링크처럼 열었습니다. **POST**로 설정하고 다시 게시하세요. |
| Carrd가 제출할 때마다 On Failure를 보여 줌 | **Format**이 XML이거나(`415`), **File** 필드가 있거나(`422`), 필드 ID가 필드 정의와 맞지 않습니다. Default를 쓰고, 파일 필드를 제거하고, ID를 맞추세요. |
| Framer가 웹훅 전달 실패를 보고함 | Ikiform이 POST를 거부했습니다. **Allowed domains**를 비우고, 그 폼의 **Spam check**를 끄고, 입력 이름을 필드에 맞추세요. |
| Netlify의 Forms 탭에 폼이 여전히 표시됨 | 이전 배포나 폼의 정적 사본에 아직 `data-netlify`가 있습니다. 모든 곳에서 제거하고 다시 배포하세요. |
| `403 origin_not_allowed`, 또는 모든 POST가 스팸으로 분류됨 | 페이지의 도메인이 폼의 **Allowed domains**에 없습니다. 도메인을 추가하고, 로컬 테스트용으로 `localhost`도 추가하세요. 등록된 도메인의 하위 도메인은 허용됩니다. |
| `422 validation_failed` | POST가 폼의 필드 정의와 맞지 않습니다. `error.fields`에 각 필드와 이유가 나옵니다. 입력의 `name`을 필드 ID와 맞추세요. |
| `422 files_not_supported` | 폼에 파일이 선택된 `<input type="file">`이 있습니다. 파일 업로드는 아직 지원하지 않습니다. 입력을 지우거나 대신 링크를 요청하세요. |
| 제출은 대시보드에 있는데 이메일이나 웹훅이 오지 않았습니다 | 스팸으로 저장되었습니다. 스팸은 아무것도 보내지 않습니다. **Spam** 필터에서 열어 이유를 확인하고, 스팸이 아님으로 표시하면 이메일과 웹훅이 발송됩니다. |

## 질문

### 커스텀 액션을 쓰는 Webflow 폼도 50건 제출 한도에 집계되나요?

커스텀 액션이 있는 폼은 설정한 URL로 바로 POST하므로 Webflow가 처리하지 않고 Webflow의 폼 제출에도 나타나지 않습니다. Starter 한도는 Webflow가 직접 처리하는 폼에 관한 것입니다.

### 빌더의 디자인을 유지하면서 폼 백엔드를 쓸 수 있나요?

네. 이 가이드의 모든 빌더는 계속 폼을 그립니다. 목적지만 바꾸면 됩니다. Webflow에서는 커스텀 액션, Carrd에서는 Send to URL, Framer에서는 웹훅, Netlify 호스팅 페이지에서는 action 속성입니다.

### 일부 폼만 옮기고 나머지는 빌더에 둘 수 있나요?

네. 폼마다 목적지가 따로 있습니다. 흔한 방식은 파일 업로드 폼은 빌더에 두고 문의, 상담, 가입 폼을 Ikiform으로 옮기는 것입니다.

### 이전 Webflow나 Netlify 제출을 Ikiform으로 가져올 수 있나요?

아니요, Ikiform에는 가져오기 기능이 없습니다. 빌더에서 이전 제출을 CSV로 내보내 Ikiform의 CSV 내보내기 옆에 보관하거나, 둘을 한 스프레드시트에 쌓으세요.

### 방문자가 여전히 성공 메시지를 보나요?

AJAX를 쓰는 Carrd와 Framer의 웹훅에서는 그렇습니다. Webflow에서는 짧은 스크립트를 추가하지 않으면 성공 블록이 표시되지 않으니, 대신 Redirect after submit을 자체 감사 페이지로 설정하세요. 일반 HTML 폼은 Ikiform의 감사 페이지나 설정한 리디렉션으로 이동합니다.

### 폼으로 파일 업로드를 받을 수 있나요?

아직은 안 됩니다. 파일이 포함된 POST는 422 files_not_supported로 거부됩니다. 대신 공유 드라이브 URL 같은 파일 링크를 요청하세요.

### Ikiform은 무료인가요?

아니요, 무료 플랜은 없습니다. 테스트는 무료입니다. 결제 전에 localhost에서 테스트 제출을 매월 50건 보낼 수 있습니다. 실제로 운영하려면 Pro가 제출 500건에 월 $6부터이며, 한 번만 결제해 제출 10,000건을 $49에, 50,000건을 $149에 살 수도 있습니다. 크레딧은 만료되지 않습니다.

## 가이드 더 보기

- [Webflow 제출 한도](https://ikiform.com/ko/guides/website-builder-forms/webflow-submission-limit.md): Webflow의 무료 Starter 플랜은 사이트당 폼 제출 50건 이후로 수집을 멈추고 내보낸 사이트는 아예 수집하지 않으니, 대신 Form Block이 Ikiform을 가리키게 하세요.
- [Netlify Forms 한도](https://ikiform.com/ko/guides/website-builder-forms/netlify-forms-limit.md): 레거시 Netlify 플랜은 사이트별 폼 제출을 계량해 자동으로 업그레이드하고, 크레딧 플랜은 사이트를 일시 중지할 수 있으니 폼을 백엔드로 옮기세요.
- [Carrd 폼](https://ikiform.com/ko/guides/website-builder-forms/carrd-forms.md): Carrd의 문의 폼은 이메일만 보내고 커스텀 폼에는 Pro Plus가 필요하므로, 모든 제출을 저장하려면 Plus에서는 Send to URL을, Standard에서는 HTML 임베드를 쓰세요.
- [Framer 폼](https://ikiform.com/ko/guides/website-builder-forms/framer-forms.md): Framer 폼은 이미 이메일, Sheets, 웹훅으로 보냅니다. 저장되고 걸러진 제출, 팀 알림, 더 많은 목적지를 원한다면 Ikiform을 웹훅으로 추가하세요.
- [웹사이트나 앱용 피드백 폼](https://ikiform.com/ko/guides/feedback-form.md): 어떤 페이지나 앱 안에든 피드백 폼을 둡니다. 평점, 코멘트, 보낸 페이지, 스팸 필터링, 낮은 점수 알림까지 다룹니다.
- [리드 수집 폼](https://ikiform.com/ko/guides/lead-capture.md): reply-to가 설정된 이메일을 보내고, 팀 채팅에 알리고, CRM에 넣는 내 사이트의 리드 수집 폼입니다. 리드가 아직 있을 때 답할 수 있습니다.
- [뉴스레터 가입 폼](https://ikiform.com/ko/guides/newsletter-signup.md): 직접 작성한 마크업으로 뉴스레터 가입 폼을 만들고, 동의를 기록하고, 봇 가입을 막고, 각 구독자를 Kit, MailerLite, beehiiv 등 어떤 도구로든 넘깁니다.
