2026年5月20日
2026年5月20日
Gravity Formsの使い方|フォーム作成・条件ロジック・通知メール・確認メッセージの設定
Gravity Forms は、WordPress.org では配布されていない有料のフォームプラグインです。条件によって項目を出し分ける「条件ロジック」、送信内容に応じた通知先の振り分け、送信データ(エントリー)のデータベース保存と書き出しなどを、管理画面から設定できます。この記事では、基本的なフォームの作り方と、開発者向けのフックの使い方を説明します。ライセンスの内容と画面の項目名は、2026年11月時点で Gravity Forms の公式サイトとドキュメント(英語)を確認した内容です。画面は英語の項目名で書いています。日本語で表示している場合は、表記が異なることがあります。
ライセンスと使えるアドオン
ライセンスによって、使えるサイト数とアドオンが変わります。
| ライセンス | サイト数 | 主なアドオン |
|---|---|---|
| Basic | 1 | Mailchimp、HubSpot、reCAPTCHA など基本のアドオン |
| Pro | 3 | Basic の内容に加え、Stripe、PayPal Checkout、Square、Zapier、Slack など |
| Elite | 無制限 | すべてのアドオン(Webhooks、User Registration、Signature、Survey など)。マルチサイトにも対応 |
外部のシステムに送信データを送る Webhooks アドオンは Elite(と非営利団体向けのライセンス)だけで使えます。決済の Stripe や PayPal Checkout は Pro 以上です。購入前に、必要なアドオンがどのライセンスに含まれるかを公式の料金ページで確認してください。
インストールとライセンスキーの登録
Gravity Forms の公式サイトのアカウントページからプラグインの ZIP ファイルをダウンロードし、「プラグイン → 新規追加 → プラグインのアップロード」でインストールして有効化します。WP-CLI を使う場合は次のとおりです。
wp plugin install /path/to/gravityforms.zip --activate
ライセンスキーは、「Forms → Settings」の画面で入力します。複数の環境に同じ設定を配るときは、wp-config.php に定数で書く方法もあります。定数を書くと、設定画面のライセンスキー欄は書き換えできない表示になります。
define( 'GF_LICENSE_KEY', 'YOUR-LICENSE-KEY-HERE' );
フォームを作って設置する
- 管理画面の「Forms → New Form」を開き、フォーム名を付けて作成します。
- 右側の「Add Fields」から、名前(Name)、メールアドレス(Email)、電話番号(Phone)、選択肢(Drop Down)、本文(Paragraph Text)、同意のチェック(Consent)などのフィールドを配置します。
- 各フィールドをクリックすると設定が開きます。必須にする項目は「Required」をオンにします。
- 「Save Form」で保存します。
フォームをページに置くには、ブロックエディターで「Gravity Forms」ブロックを追加し、作ったフォームを選びます。ショートコードで置く場合は次の形で、id はフォーム一覧に表示されるフォームの ID です。
[gravityform id="1" title="false"]
条件ロジックで項目を出し分ける
「問い合わせ種別が『採用について』のときだけ、履歴書のアップロード欄を表示する」といった出し分けは、条件ロジック(Conditional Logic)で設定します。
- フォームエディターで、出し分けたいフィールド(例: 履歴書のファイルアップロード)をクリックします。
- フィールドの設定にある「Conditional Logic」を開き、「Enable Conditional Logic」をオンにします。
- 「Show(表示)」か「Hide(非表示)」と、条件を「All(すべて満たす)」か「Any(どれかを満たす)」で選びます。
- 条件の行で、元になるフィールド(問い合わせ種別)、比較(is)、値(採用について)を選びます。行の横のプラスで条件を追加できます。
通知メールと確認メッセージにも、それぞれ条件ロジックを設定できます。
通知メールを設定する
通知メールは「Forms → 対象のフォーム → Form Settings → Notifications」で設定します。フォームを作ると管理者あての通知が1つ用意されています。「Add New」で、自動返信などの通知を追加します。
| 項目 | 内容 |
|---|---|
| Send To | 送信先。「Enter Email」は固定のアドレス、「Select a Field」はフォームのメールアドレス欄、「Configure Routing」は入力内容に応じて送信先を振り分け |
| From Email | 差出人。{admin_email}(WordPress の「設定 → 一般」の管理者メールアドレス)か固定のアドレス |
| Reply To | 返信先。管理者あての通知では、問い合わせた人のメールアドレス欄のマージタグを入れておくと返信しやすくなります |
| Subject / Message | 件名と本文。マージタグで入力内容を差し込めます |
マージタグは、送信された値を差し込む記号です。フィールドの値は {ラベル:フィールドID} の形(例: {Name:1}、ラベルは省略して {:1} でも可)、{all_fields} はすべての入力内容を表にして差し込みます。メッセージ欄の右上にあるマージタグのボタンから選ぶと、フィールド ID を調べずに入力できます。
差出人のアドレスは、サイトと同じドメインのアドレスにしておくと、迷惑メールとして扱われにくくなります。問い合わせた人のメールアドレスを差出人にするのは避け、Reply To に入れます。
送信後の確認メッセージ
送信後の表示は「Form Settings → Confirmations」で設定します。種類は次の3つです。
- Text: フォームの場所にメッセージを表示する(初期設定)
- Page: サイト内の固定ページに移動する
- Redirect: 指定した URL に移動する
送信完了ページを用意して広告やアクセス解析の計測に使う場合は、Page か Redirect を選びます。
PHP で入力チェックを追加する
管理画面の設定で足りない入力チェックは、gform_field_validation フィルターで追加できます。フック名の後ろに _フォームID_フィールドID を付けると、そのフィールドだけに適用されます。次の例は、フォーム ID 1 のフィールド ID 3 に入力された電話番号を検証します。テーマの functions.php か、自作のプラグインに書きます。
<?php
// フォームID 1・フィールドID 3 の電話番号を検証する
add_filter( 'gform_field_validation_1_3', function ( $result, $value, $form, $field ) {
if ( ! is_string( $value ) || '' === $value ) {
return $result; // 未入力の扱いはフィールドの「Required」設定に任せる
}
$digits = str_replace( array( '-', ' ' ), '', $value );
if ( ! preg_match( '/^0\d{9,10}$/', $digits ) ) {
$result['is_valid'] = false;
$result['message'] = '電話番号は0から始まる10桁か11桁の数字で入力してください(ハイフンは使えます)。';
}
return $result;
}, 10, 4 );
フォーム ID とフィールド ID は、フォームエディターでフィールドを選ぶと表示されます。フォームを作り直すと ID が変わるので、本番と開発環境で ID が同じかを確かめてください。
送信後に外部へ通知する
Webhooks アドオンがないライセンスで、送信のたびに Slack などへ知らせたい場合は、gform_after_submission アクションで処理を書けます。このアクションは、エントリーの保存と通知メールの送信が終わったあとに実行されます。スパムと判定されたエントリーでも実行されるので、状態を確かめてから送ります。なお、Pro 以上のライセンスであれば、Slack アドオンや Zapier アドオンで設定する方法もあります。
<?php
// フォームID 1 の送信後に Slack の Incoming Webhook へ通知する
add_action( 'gform_after_submission_1', function ( $entry, $form ) {
if ( 'spam' === rgar( $entry, 'status' ) ) {
return;
}
// Webhook の URL は wp-config.php に define( 'MY_SLACK_WEBHOOK_URL', '...' ); で書いておく
if ( ! defined( 'MY_SLACK_WEBHOOK_URL' ) ) {
return;
}
wp_remote_post( MY_SLACK_WEBHOOK_URL, array(
'headers' => array( 'Content-Type' => 'application/json' ),
'body' => wp_json_encode( array(
'text' => sprintf( '新しいお問い合わせ: %s', rgar( $entry, '1' ) ),
) ),
'timeout' => 5,
) );
}, 10, 2 );
rgar( $entry, '1' ) はフィールド ID 1 の値です。名前(Name)フィールドのように入力欄が複数あるフィールドは、'1.3'(名)、'1.6'(姓)のように小数点つきの ID で取り出します。Webhook の URL は秘密の情報なので、コードに直接書かず、公開リポジトリにも含めないようにします。
エントリーを確認・書き出す
送信されたデータは WordPress のデータベースに保存され、「Forms → Entries」で一覧できます。CSV で書き出すには「Forms → Import/Export」を開き、「Export Entries」でフォームを選び、書き出す項目と期間を指定してダウンロードします。
PHP から取り出す場合は GFAPI::get_entries() を使います。WP-CLI で最新の10件を確認する例です。
wp eval 'echo wp_json_encode( GFAPI::get_entries( 1, array(), null, array( "offset" => 0, "page_size" => 10 ) ) );'
注意点
- 送信データには個人情報が含まれます。保存が不要なら、フォームの設定で保存期間を決めて削除する、書き出した CSV を放置しないなど、扱いを決めておきます。
- 通知メールが届かない場合は、Gravity Forms ではなくサーバーのメール送信が原因のことが多くあります。SMTP 経由で送るプラグインを使うと改善する場合があります。
- PHP のコードを追加する前に、フォーム ID とフィールド ID が合っているか、ステージング環境で動作を確認してください。