ガイド4 分で読めます
サイトビルダーのフォームの限界を超える
Webflow、Netlify、Carrd、Framer のフォームが上限や機能不足に当たったら、デザインしたフォームはそのままに、送信先をフォームバックエンドに変えましょう。
ビルダーが描画するフォームはそのままにして、送信先だけを変えます。Webflow ではカスタムアクション、Carrd では Send to URL、Framer では Webhook の送信先、Netlify でホストしているページではプレーンな action です。送信はフォームバックエンドに届き、そこで各送信データが検証、フィルタリング、保存、転送されるので、ビルダーの送信数の上限やプランの制約は適用されなくなります。ファイルアップロードやビルダー自体の受信箱など、何を手放すかを先に確認してください。
どのサイトにもフォームが必要なので、サイトビルダーにはフォームが付いています。ただし、それは最初のお問い合わせフォームのための作りで、10 個目のフォームや 1,000 件目の送信のためではありません。いずれ壁に当たります。送信数の上限、他では必要ないプランを要求する機能、サイトが 1 つのホストにいる間しか動かないフォーム、あるいは誰が連絡してきたかの唯一の記録が受信箱だけという状態です。
それを乗り越えるためにフォームを作り直す必要はありません。主要なビルダーはどれも、フォームを別の場所に送れます。このガイドでは、そうしたときに何が変わるか、送信を 1 件も失わずに各ビルダーで設定する方法、そしてビルダーのフォームのままにしておくほうがよい場合を説明します。
フォームがビルダーを離れると何が変わるか
ビルダーのフォームには 2 つの部分があります。ビルダーが描画する見える部分と、送信を受け取る部分です。フォームバックエンドに移すと、置き換わるのは後者だけです。レイアウト、フォント、スタイルはそのまま残ります。
- 前:訪問者がフォームを送信し、ビルダー自体のフォームハンドラーが送信を受け取ります。
- ビルダーはそれをプランの送信数の上限に数え、受信箱に保存するかメールで送ります。
- 後:同じデザインの同じフォームが、代わりに Ikiform のエンドポイントに送信します。
- Ikiform がフィールドを検証し、送信のスパムスコアを付け、保存します。
- Ikiform はチームにメールを送り、署名付きの Webhook を送り、すべての送信データを検索でき CSV でエクスポートできる状態で保管します。
よく当たる制限
どこで線を引くかはビルダーごとに異なります。この表は、2026 年 10 月時点で各ビルダーが料金ページとヘルプページに記載している内容をまとめたものです。プランは変わるので、判断する前にリンク先のページで詳細を、ビルダーのサイトで最新情報を確認してください。
| ビルダー | フォームでできること | 壁に当たるところ | 抜け道 |
|---|---|---|---|
| Webflow | 送信データを保存し、通知メールを送り、CSV をエクスポート | 無料の Starter プランでは、フォームの送信はサイトごとに合計 50 件までで、カウントはリセットされません。エクスポートしたサイトではフォームは一切処理されません | Form Block の設定でのカスタムアクション。Starter でも使えます |
| Netlify | デプロイ時に data-netlify のフォームを検出し、送信を保存 | 旧プランでは送信数をサイトごと・月ごとに計測し、上限を超えるとサイトを有料の Forms レベルにアップグレードします。フォームは Netlify がビルドしたサイトでしか動きません | Netlify の属性を削除し、フォームの action を設定 |
| Carrd | お問い合わせフォームはメールで届き、登録フォームはメールツールに人を追加 | どのフォームにも Pro Standard が必要。Send to URL を含むカスタムフォームには Pro Plus が必要 | Pro Plus の Send to URL、または Pro Standard の Embed |
| Framer | 各送信をメール、Google Sheets、Webhook に送信 | 上限と呼べるものはなし。チームが求めるのは、スパムの状態付きの保存記録、検証、通知、複数の送信先 | エンドポイントを Webhook の送信先として追加するか、コードコンポーネントを使う |
Framer の行に注目してください。Framer にはすでに Webhook があるので、そのフォームから移るのは上限を回避するためではなく、送信後に何が起きるかの選択です。Framer のページでは、Ikiform がまったく不要な場合についても正直に書いています。
制限を超える 4 つの方法
フォームバックエンドだけが答えではなく、最善でない場合もあります。
| 方法 | 得意なこと | トレードオフ |
|---|---|---|
| ビルダーのプランをアップグレードする | 移行作業はゼロ。Webflow の有料サイトプランは送信数無制限をうたい、Netlify のクレジット制プランではフォームが無料 | 1 つの制限を外すためにプラン全体の料金を払うことになります。フォームはそのビルダーとホストに縛られたまま |
| Tally や Typeform などのフォームビルダーを埋め込む | 豊富な質問タイプ、ロジック、ファイルアップロードをコードなしで | 独自の見た目とスクリプトを持つ iframe。ビルダーで作ったデザインは失われ、制限はその製品のプランに移ります |
| サーバーレス関数などで、独自のハンドラーを書く | 完全な制御。どんなロジックでも書ける | コードを動かさずに済むようにビルダーを選んだサイトで、スパムフィルタリング、レート制限、保存、通知、リトライを自分で抱えることになります |
| フォームの送信先を Ikiform などのフォームバックエンドにする | デザインはそのまま。スパムフィルタリング、保存、チームへのメール、署名付き Webhook、CSV エクスポートが、どのビルダーでも同じように使えます | ファイルアップロードはまだなく、ビルダーの受信箱も、ビルダー内でクリックして組む連携もありません。外部に送るのに有料プランが必要なビルダーもあります |
ビルダーのフォームで必要なことがすべてでき、他の理由でもプランに価値があるならアップグレードしましょう。制限がフォームそのものに関わるなら、フォームバックエンドに移りましょう。複数のサイトからの送信を 1 か所にまとめたい、ビルダーを乗り換えるかもしれない、送信データを他のツールに確実に届ける必要がある、といった場合です。Netlify Forms との比較では、1 つのホストについてこのトレードオフを詳しく扱っています。
手放すもの
フォームが別の場所に送信すると、ビルダーはそれをプレーンな HTML フォームとして扱います。そのフォームにはビルダーのフォーム機能が適用されなくなります。切り替える前に、次の点を把握しておいてください。
- ビルダーの受信箱。 新しい送信データはビルダーではなく Ikiform のダッシュボードに表示されます。古いものは元の場所に残ります。
- ビルダーの成功メッセージ(場合による)。 Webflow の成功ブロックとエラーブロックは、Webflow が送信を処理したときにしか動きません。Carrd の AJAX モードと Framer の Webhook 送信先では残ります。
- ファイルアップロード。 ファイルアップロードにはまだ対応していません。ファイル付きの送信には
422 files_not_supportedが返ります。Webflow、Netlify、Carrd のカスタムフォームはどれもファイルを受け付けるので、最初に確認してください。 - クリックで組む連携。 ワンクリックの連携はありません。どのツールにも、署名付きの Webhook で直接、または Zapier や n8n などの自動化ツール経由で届けます。
- ビルダーのスパムフィルター。 Ikiform のハニーポット、スパムスコアリング、レート制限、任意の人間確認が代わりを務めます。ビルダーで追加した reCAPTCHA 要素は、カスタムの送信先では何もしないので削除してください。
各ビルダーの送信先を Ikiform にする
Ikiform のダッシュボードでフォームを作成し、エンドポイントをコピーします。あとは、ビルダー自体の外部送信先の設定を使います。Webflow、Carrd、Framer のドキュメントのガイドに、クリックの手順がすべて載っています。ここでは変える箇所と、多くの人が見落とす 1 点を示します。
Webflow
- Form Block の中のフォームを選択し、Settings を開きます。
- Send to でカスタムアクションを選び、Action にエンドポイントを貼り付け、Method を POST にします。
- 各入力欄の Name を
emailのような小文字の id に変更します。Webflow はラベルから名前を付けるので、そのままだとEmailやField 2になります。 - 公開して、
webflow.ioのドメインから送信します。カスタムアクションは Designer の中では動きません。
見落としがちな点:Webflow はもう結果を受け取らないので、Webflow の成功ブロックは表示されなくなります。Ikiform で Redirect after submit を設定するか、Webflow のドキュメントのスクリプトを追加してください。詳細と Starter の上限は Webflow の制限のページにあります。
Netlify
data-netlifyまたはnetlify、netlify-honeypot、非表示のform-name入力欄を削除します。- フォームの
actionをエンドポイントに、methodをpostにします。 - 以前のサンクスページのパスを、完全な
https:の URL として Redirect after submit に移します。 - JavaScript のフォームでは、Netlify のビルド用に残していた非表示の静的コピーを削除し、自分のサイトではなくエンドポイントに送信します。
見落としがちな点:デプロイプレビューはそれぞれ独自の netlify.app サブドメインにあるので、Allowed domains の本番ドメインではカバーされません。Netlify のページに、各フレームワーク用のコードがあります。
Carrd
- Pro Plus で Form を追加し、Type を Custom に、続けて Send to URL を選び、エンドポイントを貼り付けます。
- Method を AJAX に、Format を Default にすると、Carrd の On Success と On Failure の動作が残ります。
- すべてのフィールドに ID または Submitted ID を付けます:
name、email、message。 - Pro Standard では、代わりに Embed 要素に HTML フォームを貼り付けます。
見落としがちな点:XML 形式は 415 で、File フィールドは 422 files_not_supported で失敗します。Carrd のページを参照してください。
Framer
- 各入力欄に小文字の名前を付けます。Framer は名前を JSON のキーとして送ります。
- フォームを選択し、Send To の横で Add… > Webhook を選び、エンドポイントを貼り付けます。
- Ikiform では Allowed domains を空にし、Spam check をオフにして、レート制限は Relaxed を選びます。
見落としがちな点:Framer は訪問者のブラウザーではなく自社のサーバーから送信するので、オリジンのチェックや訪問者ごとのレート制限は通常どおりには働きません。Framer のページで、そのトレードオフと、それを解決する署名付きリレーを説明しています。
Squarespace、Wix、WordPress など
外部の送信先を設定できないビルダーでも、たいていは HTML の埋め込みを受け付けます。下のようなフォームをコードブロックや埋め込みブロックに貼り付けてください。fetch で送信するので訪問者はページにとどまり、Ikiform からの最初のフィールドエラーを表示し、スクリプトが動かなければ通常の送信にフォールバックします。
<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"が重要です。これがないと、プレーンな送信ではサンクスページがフレームの中に読み込まれます。 - 非表示の
_gotcha入力欄がハニーポットです。人には見えず、すべての入力欄を埋めるボットは自らスパムだと示すことになります。 - 非表示の
source入力欄は、問い合わせがどのビルダーやページから来たかを記録します。複数のサイトが 1 つのフォームに送信するときに役立ちます。 - スクリプトは
fetchで送信するので、このフォームでは Spam check をオフのままにするか、スクリプトを削除してブラウザーに通常どおり送信させてください。そうすれば追加のコードなしでチェックが動きます。
Squarespace、Wix、WordPress のガイドで、各ビルダーのどこにコードを貼り付けられるかを解説しています。スタイル付きの版はサイトビルダーの埋め込みにあります。
- Webflow のカスタムアクションでは訪問者のブラウザーが Ikiform に送信するので、Allowed domains に自分のドメインを登録します。
- Carrd の Send to URL と Embed もブラウザーから送信するので、許可ドメインは通常どおり機能します。
- プレーンな action を持つ Netlify ホストのフォームはブラウザーから送信します。本番ドメインと、テストに使うプレビューのドメインを登録してください。
- Framer の Webhook 送信先は Origin ヘッダーなしで Framer のサーバーから送信するので、Allowed domains は空にしてください。そうしないと、すべての送信が別のサイトから来たものとして扱われます。
本当の移行作業はフィールド名
ビルダーのフォームを移す作業の大半は名前付けです。Ikiform はフォームが送った名前をそのまま保存し、ビルダーはそれぞれ独自の方法で名前を生成します。
| ビルダー | 名前の出どころ | 設定しなかった場合 |
|---|---|---|
| Webflow | 各入力欄の Name 設定 | Name、Email、Field 2 のようなラベル |
| Carrd | Submitted ID、次に ID | ラベルから生成された ID |
| Framer | 各入力欄の名前 | 追加したときに入力欄に付いていた名前 |
| Netlify | HTML の name 属性 | 自分で付けた名前。たいていはそのままで問題なし |
公開前に、name、email、budget、message のような短い小文字の id に変更しましょう。通知メールや CSV の列が読みやすくなり、email フィールドはすべての通知の返信先アドレスになります。本物の送信が 1 件届いたら、Ikiform のフォームにフィールドを追加して、サーバーで型と長さを強制します。上の問い合わせフォームを、その定義で試してみてください。
プレビュー
Ikiform のバリデーターをブラウザーで実行します。何も送信されません。
422 になります。ステージングのドメインと許可ドメイン
ビルダーは、自分のドメインより先にステージングのアドレスに公開します。フォームの Allowed domains にないドメインからの送信は、スパムとして保存されるか、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、Webhook | 該当なし | 何もしない。一覧は空のままにします |
webflow.io や netlify.app のような共有ホスト全体を追加しないでください。そのホスト上のすべてのサイトがあなたのフォームに送信できてしまいます。一覧にあるドメインのサブドメインはすでに許可されているので、example.com で www.example.com もカバーできます。
過去の送信データも持っていく
Ikiform にはインポート機能がないので、過去の送信データは元の場所に残ります。切り替える前に、そしてプランの変更で消える可能性がある前に、エクスポートしておいてください。
- Webflow: サイトの Forms 設定から、フォームごとの送信データを CSV でダウンロードします。
- Netlify: サイトの Forms セクションから、フォームごとの送信データを CSV でダウンロードします。
- Carrd: お問い合わせフォームとカスタムのメールフォームは各メッセージをメールで届けるので、受信トレイが記録になります。
- Framer: 送信データの送り先にしたメールの受信トレイか Google スプレッドシートが記録になります。
履歴を 1 つにまとめるには、古いエクスポートと Ikiform の CSV エクスポートを 1 つの Google スプレッドシートの 2 つのタブに入れて縦に積み重ねます。この数式は、それぞれから日付、名前、メールアドレス、メッセージの列を取り出し、新しい順に並べます。列の文字はファイルに合わせて調整してください。
=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 で始まり、その後にフィールドごとに 1 列が続きます。1 ファイルに最大 100,000 行入ります。
送信を 1 件も失わずに切り替える
- Ikiform のフォームを作り、通知の受信者を追加し、ステージングと本番のドメインを Allowed domains に追加します。
- ステージングのサイトで送信先を変更し、スマートフォンとノートパソコンから実際にテスト送信します。
- ダッシュボードで送信データのフィールド名を確認します。自動生成された名前があれば変更し、ステージングを再公開して再テストします。
- アクセスの少ない時間帯に本番のドメインへ公開し、もう一度テストを送ります。
- 移行していない別のフォームなど、ビルダーにまだ何か届くなら、ビルダーの通知を 1 週間はオンのままにし、その後オフにします。
- ビルダーの古い送信データをエクスポートし、新しい履歴と一緒にファイルを保管します。
最初の 1 週間は、1〜2 日おきに Ikiform のダッシュボードで Spam フィルターを確認してください。スパムとして保存された本物の問い合わせにも本物と同じ成功の応答が返るので、訪問者は気づきません。スパムではないとマークすると、その時点でメールと Webhook が送られます。通知メールは確認済みの受信者 10 人まで送れます。
状況に合わせて選ぶ
ビルダーごとに、上限も、外部の送信先の設定も、ハマりどころも違います。以下のページでは、ビルダーを 1 つずつ説明します。
- Webflow の送信上限Webflow の無料 Starter プランはサイトごとに 50 件で送信の受け付けが止まり、エクスポートしたサイトでは一切処理されないので、Form Block の送信先を Ikiform に向けましょう。
- Netlify Forms の上限Netlify の旧プランはサイトごとにフォーム送信を計測して自動でアップグレードし、クレジットプランはサイトを一時停止することがあるので、フォームをバックエンドに移しましょう。
- Carrd のフォームCarrd のお問い合わせフォームはメールで届けるだけで、カスタムフォームには Pro Plus が必要です。すべての送信を保存するには、Plus なら Send to URL、Standard なら HTML の埋め込みを使います。
- Framer のフォームFramer のフォームはメール、Sheets、Webhook に送れます。保存とフィルタリング、チームへの通知、送信先の追加がほしいなら Ikiform を Webhook にします。
動作を確認する
まずステージングで、次に本番のサイトで 1 回行ってください。Ikiform に無料プランはありません。テストは無料です。プランのないワークスペースでも、localhost からのテスト送信を月 50 件まで受け付けます。本番運用するには、500 件で月 $6 からの Pro を選ぶか、買い切りにしてください。10,000 件で $49、または 50,000 件で $149 で、クレジットに有効期限はありません。料金を参照してください。
- フォームの Allowed domains に自分のサイトのドメインを追加し、開発中は
localhostも追加します。空のままにすると、どこからの送信も受け付けます。 - ビルダーのステージング用ドメインに公開します。カスタムの送信先はエディターやデザイナーの中では動きません。
- ページのフォームに入力して送信します。自分のサンクスページか、Ikiform のサンクスページに移動します。
- ダッシュボードで Submissions を開きます。送ったすべてのフィールドを含む新しい送信データがあります。
- その送信データのフィールド名を確認します。ラベルや自動生成された名前ではなく、小文字の ID になっているはずです。
- 通知の各受信者の受信トレイを確認します。それぞれにフィールド入りのメールが届き、フォームに
emailフィールドがあれば Reply で送信者に返信できます。 - ハニーポットを埋めて
_gotcha=botで送信します。成功の応答は返りますが、送信データはスパムとして保存され、メールも Webhook も送られません。 - 何も届かない場合は、ダッシュボードのステータスフィルターを Spam に切り替えてください。スパムにも本物の送信と同じ成功の応答が返ります。
- 本番のドメインに公開したら、そこからもう一度送信します。
トラブルシューティング
| 問題 | 対処法 |
|---|---|
Webflow のフォームを送信すると 404 not_found が返る | Method が GET になっているので、ブラウザーがリンクのようにエンドポイントを開いています。POST に設定して再公開してください。 |
| Carrd で毎回 On Failure が表示される | Format が XML になっている(415)、File フィールドがある(422)、またはフィールド ID がフィールド定義と一致していません。Default を使い、ファイルのフィールドを削除し、ID を合わせてください。 |
| Framer が Webhook の配信失敗を報告する | Ikiform が送信を拒否しています。Allowed domains を空にし、そのフォームの Spam check をオフにして、入力欄の name をフィールドに合わせてください。 |
| Netlify の Forms タブにまだフォームが表示される | 古いデプロイかフォームの静的なコピーに、まだ data-netlify が残っています。すべての場所から削除して再デプロイしてください。 |
403 origin_not_allowed が返る、またはすべての送信がスパムになる | ページのドメインがフォームの Allowed domains にありません。ドメインと、ローカルテスト用の localhost を追加してください。登録したドメインのサブドメインは許可されます。 |
422 validation_failed | 送信がフォームのフィールド定義に合っていません。error.fields に各フィールドと理由が示されます。入力欄の name をフィールド ID に合わせてください。 |
422 files_not_supported | フォームの <input type="file"> でファイルが選択されています。ファイルアップロードにはまだ対応していません。入力欄を削除するか、代わりにリンクを尋ねてください。 |
| 送信データはダッシュボードにあるのに、メールも Webhook も届かない | スパムとして保存されています。スパムでは何も送られません。Spam フィルターで開いて理由を確認し、スパムではないとマークすると、メールと Webhook が送られます。 |
よくある質問
カスタムアクションを使ったフォームは設定した URL に直接送信するので、Webflow はそれを処理せず、Webflow のフォーム送信の一覧にも表示されません。Starter の上限は Webflow 自身が処理するフォームが対象です。
はい。このガイドのどのビルダーでも、フォームの描画はビルダーが続けます。変えるのは送信先だけです。Webflow ならカスタムアクション、Carrd なら Send to URL、Framer なら Webhook、Netlify でホストしているページなら action 属性です。
はい。フォームごとに送信先があります。よくある分け方は、ファイルアップロードのフォームはビルダーに残し、お問い合わせ、問い合わせ、登録のフォームを Ikiform に移すことです。
いいえ、Ikiform にはインポート機能がありません。古い送信データはビルダーから CSV でエクスポートして Ikiform の CSV エクスポートと並べて保管するか、両方を 1 つのスプレッドシートに積み重ねてください。
AJAX を使った Carrd と Framer の Webhook なら、はい。Webflow では短いスクリプトを追加しない限り成功ブロックは表示されなくなります。追加しないなら、Redirect after submit を自分のサンクスページに設定してください。素の HTML フォームは Ikiform のサンクスページか、設定したリダイレクト先に移動します。
まだできません。ファイルを含む送信は 422 files_not_supported で拒否されます。代わりに、共有ドライブの URL などファイルへのリンクを尋ねてください。
いいえ、無料プランはありません。テストは無料で、支払う前に localhost から月 50 件のテスト送信ができます。本番運用するには、月 $6 で 500 件からの Pro か、1 回払いで 10,000 件 $49 または 50,000 件 $149 のパックを選べます。クレジットに有効期限はありません。
手順で詰まったときや、あなたの状況に合うガイドがほしいときはメールでどうぞ: hello@ikiform.com