広告、SNS、Googleマップ、MEO対策用のリンクなど、流入元ごとにURLパラメータを付けているサイトは多いです。
たとえば、次のようなURLです。
https://example.com/contact/?utm_source=google&utm_medium=meo&utm_id=organic
このURLから問い合わせが入ったとき、管理者宛の通知メールに次のように出せると、どこからコンバージョンしたかを確認できます。
campaign ID = organic
campaign Medium = meo
campaign source = google
ところが、Contact Form 7の設定を間違えると、どのURLから問い合わせても毎回同じ値が届きます。
よくある原因は次の2つです。
- hiddenフィールドに固定値を入れている
- URL側のパラメータ名と、Contact Form 7側の項目名が違う

この記事では、Contact Form 7でURLパラメータを取得し、通知メールに反映する方法を実務目線で整理します。
1. Contact Form 7ではURLパラメータを `default:get` で取得できる
Contact Form 7には、フォーム項目の初期値をURLパラメータから取得する機能があります。
使うのは `default:get` です。
公式ドキュメントでも、`default:get` を指定するとHTTP GET変数から値を取得できると説明されています。
たとえば、フォーム側に次の項目があるとします。
[text your-name default:get]
この状態で、フォームページに次のURLでアクセスします。
https://example.com/contact/?your-name=Taro
すると、`your-name` というURLパラメータの値が、フォーム項目 `your-name` に入ります。
重要なのは、URLパラメータ名とフォーム項目名を揃えることです。
URL側: ?your-name=Taro
CF7側: [text your-name default:get]
この名前がずれていると、値は入りません。
2. UTMパラメータをhiddenで受け取り、通知メールに出す基本設定
広告流入情報は、ユーザーに入力させる項目ではありません。
そのため、Contact Form 7では `hidden` フィールドを使います。
たとえば、次の3つを取得したい場合です。
utm_source=google
utm_medium=meo
utm_id=organic
フォームタブに、次のhiddenフィールドを追加します。
[hidden utm_source default:get]
[hidden utm_medium default:get]
[hidden utm_id default:get]
これで、URLに付いている `utm_source`、`utm_medium`、`utm_id` をContact Form 7が受け取れるようになります。
次に、メールタブの本文へメールタグを追加します。
【広告流入情報】
campaign ID = [utm_id]
campaign Medium = [utm_medium]
campaign source = [utm_source]
これで、問い合わせ通知メールにURLパラメータの値が出ます。

整理すると、対応関係はこうです。
| 取得したい値 | URLパラメータ | CF7フォームタグ | メール本文タグ |
|---|---|---|---|
| 流入元 | `utm_source` | `[hidden utm_source default:get]` | `[utm_source]` |
| メディア | `utm_medium` | `[hidden utm_medium default:get]` | `[utm_medium]` |
| キャンペーンID | `utm_id` | `[hidden utm_id default:get]` | `[utm_id]` |
URLパラメータ名、hiddenの名前、メールタグの名前を揃えることが基本です。
3. よくある失敗: hiddenに固定値を入れている
Contact Form 7で広告流入情報をメールに出す設定をしていても、毎回同じ値が届くことがあります。
その場合、フォーム側が次のようになっていないか確認してください。
[hidden campaign_id "bridge_lp_4josei"]
[hidden campaign_medium "display"]
[hidden campaign_source "meta"]
この書き方は、hiddenフィールドに固定値を入れています。
つまり、どのURLから問い合わせても、必ず次の値が送信されます。
campaign ID = bridge_lp_4josei
campaign Medium = display
campaign source = meta
広告ごとに流入情報を変えたい場合、この設定では目的を満たせません。
URLパラメータから取得するには、固定値ではなく `default:get` を使います。
[hidden utm_id default:get]
[hidden utm_medium default:get]
[hidden utm_source default:get]
そして、メール本文側も次のように変更します。
campaign ID = [utm_id]
campaign Medium = [utm_medium]
campaign source = [utm_source]
固定値を使うのは、「このフォームは必ずこのLPから来た問い合わせとして扱う」といったケースです。
広告・SNS・Googleマップなど、URLごとに値を変えたい場合は、固定値ではなくURLパラメータ取得にします。
4. よくある失敗: URL側とCF7側のパラメータ名が違う
もう一つ多いのが、パラメータ名の不一致です。
たとえば、URL側がこうなっているとします。
https://example.com/contact/?utm_source=google&utm_medium=meo&utm_id=organic
この場合、Contact Form 7側も `utm_source`、`utm_medium`、`utm_id` という名前で受け取る必要があります。
次のように、CF7側だけ `campaign_source` という名前にしていると、値は入りません。
[hidden campaign_source default:get]
なぜなら、URLには `campaign_source` というパラメータが存在しないからです。
この場合は、どちらかに統一します。
URL側を変えない場合
URLが `utm_source` のままなら、CF7側を `utm_source` にします。
[hidden utm_source default:get]
CF7側を変えない場合
CF7側を `campaign_source` のまま使うなら、URL側も `campaign_source` にします。
https://example.com/contact/?campaign_source=google
実務では、Googleアナリティクスや広告管理の運用に合わせて、`utm_source`、`utm_medium`、`utm_campaign`、`utm_id` などを使うことが多いです。
そのため、まずは「現在使っている広告URLのパラメータ名」を確認し、それにCF7側を合わせるのが安全です。

5. 実装手順: フォームとメールを修正する
ここからは、具体的な設定手順です。
手順1. 取得したいURLパラメータを決める
まず、広告URLやSNS投稿URLに付けるパラメータを決めます。
例:
utm_source=google
utm_medium=meo
utm_id=organic
この3つを通知メールに出すとします。
手順2. Contact Form 7のフォームタブにhiddenを追加する
フォームタブの送信ボタンより上に、次の3行を追加します。
[hidden utm_source default:get]
[hidden utm_medium default:get]
[hidden utm_id default:get]
追加位置は、フォームの最後の方で構いません。
例:
[text* your-name "お名前"]
[email* your-email "メールアドレス"]
[textarea your-message "お問い合わせ内容"]
[hidden utm_source default:get]
[hidden utm_medium default:get]
[hidden utm_id default:get]
[submit "送信する"]
手順3. メールタブにメールタグを追加する
管理者宛メールの本文に、次のように追加します。
【広告流入情報】
campaign ID = [utm_id]
campaign Medium = [utm_medium]
campaign source = [utm_source]
これで設定は完了です。
手順4. テストURLで送信する
次のようなURLでフォームページを開きます。
https://example.com/contact/?utm_source=google&utm_medium=meo&utm_id=organic
フォームを送信し、管理者宛メールに次の値が出ているか確認します。
campaign ID = organic
campaign Medium = meo
campaign source = google
この値が出ていれば、URLパラメータの取得はできています。
6. 値が入らないときのチェックリスト
設定しても通知メールに値が入らない場合は、次の順番で確認してください。
1. URLにパラメータが付いているか
まず、フォームページを開いたときのURLに、実際にパラメータが付いているか確認します。
OK: /contact/?utm_source=google&utm_medium=meo&utm_id=organic
NG: /contact/
`/contact/` だけになっている場合、Contact Form 7は値を取得できません。
2. URLパラメータ名とhidden名が一致しているか
次のように名前がずれていると、値は入りません。
URL: ?utm_source=google
CF7: [hidden campaign_source default:get]
この場合は、次のように揃えます。
URL: ?utm_source=google
CF7: [hidden utm_source default:get]
3. メール本文のタグ名が正しいか
フォーム側で `utm_source` と定義した場合、メール側は `[utm_source]` です。
フォーム: [hidden utm_source default:get]
メール: [utm_source]
メール側だけ `[campaign_source]` と書いても、値は出ません。
4. 確認画面プラグインやキャッシュの影響がないか
確認画面プラグイン、キャッシュプラグイン、独自テーマのJavaScriptが入っている場合、値の受け渡しに影響することがあります。
まずはキャッシュを削除し、シークレットウィンドウでテストしてください。
それでも値が入らない場合は、確認画面プラグインやフォーム周りのカスタマイズを切り分けます。
5. URLの途中でパラメータが消えていないか
広告のリンク先がLPで、そこからフォームページへ移動する導線の場合、フォームページに移動した時点でUTMパラメータが消えていることがあります。
例:
広告URL: /lp/?utm_source=google&utm_medium=meo&utm_id=organic
フォームURL: /contact/
この場合、フォームページのURLにはパラメータがないため、Contact Form 7だけでは値を取得できません。

7. ページ遷移でパラメータが消える場合の考え方
フォームが同じページにある場合は、`default:get` だけで対応できます。
/lp-form/?utm_source=google&utm_medium=meo&utm_id=organic
一方で、次のような導線では追加対応が必要です。
広告 → LP → フォームページ
LPにはUTMパラメータが付いていても、フォームページへ移動したときにURLが `/contact/` だけになると、Contact Form 7は値を取得できません。
この場合の対応は主に3つです。
対応1. フォームページへのリンクにもパラメータを引き継ぐ
LP内のボタンリンクを、パラメータ付きでフォームページへ渡す方法です。
/contact/?utm_source=google&utm_medium=meo&utm_id=organic
ただし、流入元ごとにボタンURLを書き換える必要があるため、広告数が多い場合は管理が面倒になります。
対応2. JavaScriptでURLパラメータを引き継ぐ
LPで受け取ったパラメータを、フォームへのリンクに自動で付け直す方法です。
サイト構成が単純なら、この方法で対応できます。
対応3. CookieやsessionStorageに保存して、フォームでhiddenへ入れる
広告からLPに来たタイミングでUTMパラメータを保存し、フォームページでhiddenフィールドへ入れる方法です。
複数ページを回遊してから問い合わせる導線では、この方法が現実的です。
ただし、これはContact Form 7の標準設定だけではなく、テーマ側のJavaScriptやプラグイン実装が必要になります。
まずは、フォームページのURLにパラメータが残っているか確認する。
ここが切り分けの出発点です。
8. hidden値を使うときの注意点
hiddenフィールドは、画面上には表示されません。
ただし、「ユーザーから完全に隠せる安全な値」ではありません。
ブラウザの開発者ツールを使えば、hiddenの値は確認・変更できます。
そのため、hiddenフィールドは次のような用途に使うのが安全です。
- 広告流入元の記録
- ページ名やLP名の記録
- 問い合わせ分類の補助
- 社内確認用のメモ情報
逆に、次の用途には使わないでください。
- 金額の確定
- 権限判定
- 本人確認
- セキュリティ上重要な情報
広告流入の確認や、問い合わせの分類には便利です。
しかし、重要な判定に使う値は、サーバー側で確認する設計にする必要があります。
まとめ
Contact Form 7でURLパラメータを通知メールに反映するには、`hidden` と `default:get` を使います。
基本形は次の3行です。
[hidden utm_source default:get]
[hidden utm_medium default:get]
[hidden utm_id default:get]
メール本文には、次のように出します。
【広告流入情報】
campaign ID = [utm_id]
campaign Medium = [utm_medium]
campaign source = [utm_source]
設定時に見るべきポイントは4つです。
1. URLパラメータ名とCF7の項目名を揃える `utm_source` を取得したいなら、hiddenも `utm_source` にする。
2. 固定値にしない `[hidden campaign_source “meta”]` のように書くと、毎回同じ値になる。
3. メールタグ名も揃える フォーム側が `utm_source` なら、メール側は `[utm_source]`。
4. フォームページのURLにパラメータが残っているか確認する LPから別ページのフォームへ遷移する場合、パラメータが消えていることがある。

Contact Form 7のフォーム修正、広告流入計測、LPから問い合わせフォームへのパラメータ引き継ぎで困っている場合は、現在のフォーム設定とURL設計を確認した上で対応できます。
参照
- Contact Form 7公式: Getting default values from the context
https://contactform7.com/getting-default-values-from-the-context/
- Contact Form 7公式: Hidden field
