2026年5月20日

2026年5月20日

Gravity Formsの基本的な使い方と設定手順

はじめに

Gravity Formsは高機能な有料フォームプラグインです。条件分岐・ファイルアップロード・決済連携・Webhook送信など企業サイトに必要な機能が揃っています。基本的なフォーム作成から実務で使う高度な設定まで解説します。

症状・原因

  • お問い合わせフォームに複雑な条件分岐が必要
  • フォーム送信データを外部システム(CRM・Slack等)に自動送信したい
  • 入力内容に応じて送信先メールアドレスを変えたい
  • フォームデータをWordPressのデータベースに保存したい

解決手順

ステップ1:インストールと有効化

Gravity FormsはWordPress.orgには掲載されていない有料プラグインです:

# 公式サイトからZIPをダウンロード後
wp plugin install /path/to/gravityforms.zip --activate

# ライセンスキーを設定
wp eval "GFCommon::update_key('YOUR_LICENSE_KEY');"

ステップ2:基本フォームを作成する

フォーム → 新規追加
→ フォーム名: お問い合わせフォーム
→ フィールドを追加:
  - テキスト(氏名)
  - メール(メールアドレス)
  - テキスト(電話番号)
  - ドロップダウン(お問い合わせ種別)
  - 段落テキスト(お問い合わせ内容)
  - チェックボックス(個人情報取り扱いに同意する)
→「更新」

ステップ3:条件分岐を設定する

フォーム → フォームを選択 → フィールドを選択
→「詳細設定」タブ →「条件を有効にする」✓
→ 表示する / 非表示にする
→ 条件: お問い合わせ種別 が「採用に関して」の場合 → 履歴書フィールドを表示

PHP でカスタム検証を追加:

// functions.php — 電話番号フォーマット検証
add_filter('gform_validation', function(array $validation_result) {
    $form  = $validation_result['form'];
    if ($form['id'] !== 1) return $validation_result;

    foreach ($form['fields'] as &$field) {
        if ($field->label !== '電話番号') continue;
        $value = rgpost("input_{$field->id}");
        if (!preg_match('/^\d{10,11}$/', str_replace('-', '', $value))) {
            $field->failed_validation  = true;
            $field->validation_message = '電話番号は10〜11桁の数字で入力してください。';
            $validation_result['is_valid'] = false;
        }
    }
    $validation_result['form'] = $form;
    return $validation_result;
});

ステップ4:通知メールを設定する

フォーム → 設定 →「通知」タブ →「通知を追加」
→ 名前: 管理者通知
→ 送信先: admin@example.com
→ 差出人メール: {admin_email}
→ 件名: 【お問い合わせ】{:1}(氏名フィールドのマージタグ)
→ メッセージ: {all_fields}(全フィールドを自動挿入)

→「通知を追加」(自動返信用)
→ 名前: 自動返信
→ 送信先: {メールフィールドのマージタグ}
→ 件名: お問い合わせを受け付けました

ステップ5:Webhookで外部システムに送信する

フォーム → 設定 →「Webhooks」タブ(Webhook Addon必要)
→「Webhookを追加」
→ URL: https://hooks.slack.com/services/xxx/yyy/zzz
→ メソッド: POST
→ フォーマット: JSON
→ フィールドマッピング:
  text → "【問い合わせ】{氏名}: {内容}"
// functions.php — 送信後にSlackへ通知(Webhookアドオンなし版)
add_action('gform_after_submission', function(array $entry, array $form) {
    if ($form['id'] !== 1) return;
    wp_remote_post('https://hooks.slack.com/services/xxx', [
        'body' => json_encode([
            'text' => sprintf('新しいお問い合わせ: %s', rgar($entry, '1')),
        ]),
        'headers' => ['Content-Type' => 'application/json'],
    ]);
}, 10, 2);

ステップ6:エントリーをエクスポートする

# WP-CLIでエントリーを確認
wp eval "echo json_encode(GFAPI::get_entries(1, [], [], ['offset'=>0,'page_size'=>10]));"

注意事項

  • Gravity Formsはライセンスによって使えるアドオンが異なります(Basic・Pro・Elite)
  • フォームデータはデフォルトでWordPressのDBに保存されます(GDPRに注意)
  • 決済連携(Stripe・PayPal)はPro以上のライセンスが必要です

まとめ

Gravity Formsは条件分岐・カスタム検証・Webhook送信・自動返信メールまでgform_validationgform_after_submissionフックで柔軟に制御できます。フォームID単位で処理を分岐させることで複数フォームを効率よく管理できます。

お気軽にご相談ください

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