Gatsbyお問い合わせフォーム

Formgong team ·

Gatsbyのお問い合わせフォームは、ブラウザからFormgongへ送れます。Gatsbyは静的ファイルを出すので、POSTを受けるサーバーはありません。Gatsby Functionもメールの秘密も要りません。フォームを貼り、キーを替えれば、問い合わせはメールとTelegramに届きます。サイトは静的なままです。

Gatsby
<form action="https://formgong.com/submit" method="POST">
  <input type="hidden" name="access_key" value="fk_your_access_key">
  <input type="hidden" name="_lang" value="ja">
  <label>お名前 <input type="text" name="name" autocomplete="name" placeholder="山田 太郎" required></label>
  <label>メールアドレス <input type="email" name="email" autocomplete="email" placeholder="you@example.com" required></label>
  <label>メッセージ <textarea name="message" placeholder="ご用件をご記入ください" required></textarea></label>
  <div aria-hidden="true" style="position:absolute;inset-inline-start:0;top:0;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)">
  <label>この欄は空のままにしてください<input type="text" name="botcheck" tabindex="-1" autocomplete="off"></label>
</div>
  
  <button type="submit">送信</button>
</form>

Gatsbyでのフォームの仕組み

GatsbyはReactのページを静的HTMLにします。公式のフォーム案内は、フォームサービス、Netlify Forms、または自前のサーバーを挙げます。Gatsby Functionsは文書にあるサーバー側の道です。デプロイして保守する関数です。

src/pages のファイルに普通のHTMLフォームを置けます。https://formgong.com/submit へ access_key、_lang、botcheck を送ります。ブラウザに渡る名前は GATSBY_ で始まるものだけです。このキーは公開してよいので、その接頭辞で問題ありません。

Gatsbyでの設定手順

  1. Formgongでフォームを作り、キーをコピーします。fk_ で始まります。
  2. src/pages/contact.js を追加し、下のフォームを貼ります。actionは https://formgong.com/submit です。
  3. fk_your_access_key を置き換えます。GATSBY_FORMGONG_KEY のような名前は任意です。SMTPのパスワードを GATSBY_ の名前に入れないでください。
  4. gatsby develop を実行してテストを送り、その後 gatsby build を実行します。POSTはブラウザで動くので、公開ビルドも同じです。
  5. サイトがNetlifyにある場合、data-netlify は付けないでください。Reactだけで描くフォームはHTMLの走査に出ません。出すなら form-name 付きの隠しコピーも置きます。

FormgongとGatsby Functionのどちら?

送信で自分のデータベースを変える、または非公開APIを呼ぶときはGatsby Functionを使います。

問い合わせとリードにはFormgongを使います。SMTP、置く関数、React向けにNetlifyが求める隠しHTMLを省けます。

よくある質問

Gatsbyに問い合わせフォームは付いていますか?

いいえ。公式ガイドはフォームのバックエンド、そこでホストするならNetlify Forms、または自前のサーバーを挙げます。ページ自体は静的です。

NetlifyがGatsbyのフォームを見落とすのはなぜですか?

Netlifyはビルド後のHTMLを読みます。Reactが動いてから出るフォームは見つかりません。Formgongへ送るか、静的な隠しコピーを足します。

fetchのままページに留まれますか?

はい。https://formgong.com/submit に fetch し、Accept: application/json を送ります。JavaScriptがオフでもHTMLフォームは動きます。

Gatsbyのバンドルにキーを入れて安全ですか?

はい。そのフォームの送信だけを受け付けます。Proでは許可するドメインを限れます。非公開の鍵を GATSBY_ の名前に入れないでください。

無料ではじめる