← 一覧に戻る

お問い合わせフォームの作り方

blog-create-form.avif

静的サイトを作っていて必ずぶつかるのが「お問い合わせフォーム、どうやって送信を受け取ればいいんだ」問題です。サーバーサイドの言語を使わない手作りのHTMLサイトだと、フォームを<form>タグで書いただけでは何も起きません。送信先のバックエンドが必要です。

この記事では、presto.pwを使って実際にお問い合わせフォームを設置するまでの手順を、制作者目線で説明します。

そもそも何が必要なのか

静的サイトにフォームを置くには、最低限これだけあれば動きます。

  • フォームの送信を受け取ってくれるエンドポイント(バックエンド)
  • そこに送信するための <form> タグ

presto.pwはこのバックエンド部分を肩代わりします。サーバーを自前で用意する必要も、PHPやNode.jsを書く必要もありません。

手順1: 管理画面でフォームを作る

presto.pwの管理画面(/dashboard/forms)で「新規作成」からフォームを定義します。フォームに含めたい項目(お名前、メールアドレス、お問い合わせ内容など)を設定すると、貼り付け用のHTMLスニペットが自動生成されます。

生成されたスニペットはそのままコピーして、自分のサイトのHTMLに貼り付けるだけで動きます。

<form action="https://api.presto.pw/api/forms/xxxxxxxx/submit" method="POST">
  <input type="text" name="name" placeholder="お名前" required>
  <input type="email" name="email" placeholder="メールアドレス" required>
  <textarea name="message" placeholder="お問い合わせ内容" required></textarea>
  <button type="submit">送信する</button>
</form>

サーバー側の実装は一切不要です。ここが一番のポイントです。

手順2: 許可オリジンを必ず設定する

ここが最初につまずきやすいポイントです。管理画面の「設定」で、フォームを設置するページのオリジン(例: https://example.com)を必ず許可リストに追加してください。

許可オリジンに登録されていないページから送信すると、403エラーで拒否されます。「スニペットを貼っただけなのに動かない」というときは、まずここを疑ってください。

手順3: 送信後の挙動を確認する

デフォルトのフォーム送信(<form>タグの素朴な送信)は、成功すると元のページに303リダイレクトで戻ります。バリデーションエラーがあった場合は422のエラーページが表示されます。

「エラーメッセージを自分のデザインで出したい」「ページ遷移せずに送信したい」という場合は、fetchXHRで送信する方法もあります。Accept: application/jsonヘッダーを付けて送ると、422のフィールド別エラーをJSONで受け取れるので、ページ内にその場でエラー表示ができます。この方法の詳しい実装例はフォーム送信APIガイドにまとめています。

手順4: メール通知を設定する

フォームが送信されたときに通知メールを受け取りたい場合は、/dashboard/forms/mail-settingsでSMTP設定(ホスト・ポート・ユーザー・パスワード)を入力します。パスワードは暗号化して保存されるので安心してください。

自動返信メール(送信者への確認メール)も同じ画面から設定できます。問い合わせが来るたびに手動で返信する手間を減らせます。

制作者として気をつけたいポイント

  • 許可オリジンの設定忘れが一番多いハマりどころです。本番公開後に動かなくなったら、まずここを確認してください
  • 添付ファイルを受け付けたい場合、無料プランでは使えない機能なので、必要であれば有料プランへの切り替えを検討してください
  • スパム対策が気になる場合は、隠しフィールド(ハニーポット)などをフォーム側に仕込む工夫も併用すると効果的です

presto.pwを使えば、サーバーを一切書かずに「動くお問い合わせフォーム」を静的サイトに設置できます。手順は「フォーム作成→スニペット貼り付け→許可オリジン設定」のたった3ステップです。

まだ試していない方は、ぜひ無料プランで実際に触ってみてください。

自分のサイトでも、同じことができます。

無料プランで登録し、管理画面から記事を書き始めましょう。

無料ではじめる