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' );

フォームを作って設置する

  1. 管理画面の「Forms → New Form」を開き、フォーム名を付けて作成します。
  2. 右側の「Add Fields」から、名前(Name)、メールアドレス(Email)、電話番号(Phone)、選択肢(Drop Down)、本文(Paragraph Text)、同意のチェック(Consent)などのフィールドを配置します。
  3. 各フィールドをクリックすると設定が開きます。必須にする項目は「Required」をオンにします。
  4. 「Save Form」で保存します。

フォームをページに置くには、ブロックエディターで「Gravity Forms」ブロックを追加し、作ったフォームを選びます。ショートコードで置く場合は次の形で、id はフォーム一覧に表示されるフォームの ID です。

[gravityform id="1" title="false"]

条件ロジックで項目を出し分ける

「問い合わせ種別が『採用について』のときだけ、履歴書のアップロード欄を表示する」といった出し分けは、条件ロジック(Conditional Logic)で設定します。

  1. フォームエディターで、出し分けたいフィールド(例: 履歴書のファイルアップロード)をクリックします。
  2. フィールドの設定にある「Conditional Logic」を開き、「Enable Conditional Logic」をオンにします。
  3. 「Show(表示)」か「Hide(非表示)」と、条件を「All(すべて満たす)」か「Any(どれかを満たす)」で選びます。
  4. 条件の行で、元になるフィールド(問い合わせ種別)、比較(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 が合っているか、ステージング環境で動作を確認してください。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲