CMS構築者が最初に理解すべき核心テーマです。「サイトのフォームを送信したら何が起きるか」を完全に理解することで、CMSとCRMをひとつの有機的なシステムとして設計できるようになります。フォームの種類・フィールド設計・hidden フィールド・UTMパラメータ連携・CTA・A/Bテスト・計測まで網羅します。
HubSpotフォームが送信されると、バックグラウンドで複数の処理が 自動的・連続的に実行されます。 この流れを正確に理解することが、CMS↔CRM連携の設計の出発点です。
HubSpot CMS または外部CMSに埋め込まれたフォームを送信。メールアドレスが必須。
HubL: {% form form_id="xxxx" %} / JS埋め込み: hbspt.forms.create()同じメールアドレスのコンタクトが存在する場合は既存レコードを更新。存在しない場合は新規コンタクトを作成。重複は自動で防がれる。
一意識別子:email プロパティフォームの各フィールドは対応するCRMプロパティと1対1で紐付いている。送信値がコンタクトのプロパティに自動でセットされる。hidden フィールドも同様に書き込まれる。
例:フォームの「氏名」フィールド → コンタクトの firstname / lastname プロパティフォームを送信したコンタクトは、ライフサイクルステージが自動的に「Lead」になる。すでにより進んだステージ(MQL・Customer等)の場合は上書きされない。
プロパティ:lifecyclestage = "lead"「このフォームを送信した」をトリガーとして設定されたワークフローが即座に起動。サンクスメールの送信・リードスコアの加算・担当者へのタスク通知等が自動実行される。
ワークフロー:Marketing Hub Professional 以上が必要フォーム設定で「サンクスページへリダイレクト」または「インラインサンクスメッセージを表示」を選択できる。サンクスページへのリダイレクトがコンバージョン計測に有利。
設定:フォームエディター → 「送信後オプション」
HubSpotトラッキングコードが設置されたページに訪問すると、
ブラウザに hubspotutk という Cookie が発行されます。
フォームを送信する際、このCookieの値もデータとして送られ、
フォーム送信前のページ閲覧履歴がコンタクトに紐付けられます。
| Cookie名 | 役割 | 有効期間 |
|---|---|---|
| hubspotutk | 訪問者を識別するユニークID。フォーム送信時にコンタクトと紐付けられ、以後の行動履歴を追跡する。 | 13ヶ月 |
| __hstc | 訪問者のセッション情報(初回訪問・前回訪問・現在のセッション等)を記録する。 | 13ヶ月 |
| __hssc | 現在のセッション情報。同一セッション内のページビュー数をカウント。 | 30分 |
HubSpot CMS で構築したサイトはトラッキングが自動で有効です。
{{ standard_header_includes }} タグがトラッキングコードを自動挿入するため、
別途設置は不要です。
WordPress等の外部CMSを使う場合は、HubSpotのトラッキングコードを
</body> 直前に手動で設置する必要があります。
設置場所:HubSpot管理画面 → ⚙️設定 → トラッキングとアナリティクス → トラッキングコード
HubSpotのフォームには複数の表示形式があります。 それぞれの特性を理解して適切な場面で使い分けることで、 コンバージョン率を最大化できます。
{% form %} タグで実装。{% form %} タグを組み込む形式。フォームIDをフィールドで指定できるため、マーケターがコード変更なしでフォームを差し替えられる。| トリガー種別 | 設定内容 | 効果的な使い方 |
|---|---|---|
| 時間トリガー | ページ表示後〇秒後に表示 | コンテンツを読み始めた頃(30〜60秒後)に表示。読んでいる最中に邪魔しない。 |
| スクロールトリガー | ページを〇%スクロールした時に表示 | ブログ記事の50〜70%まで読んだ読者に表示。エンゲージメントの高い読者に絞れる。 |
| 離脱トリガー | マウスがブラウザ上部に移動した時に表示 | 「閉じようとしている」訪問者への最後のキャッチ。割引・特典の訴求に有効。 |
| クリックトリガー | 特定の要素クリック時に表示 | 「資料をダウンロード」ボタンをクリックしたらフォームをポップアップ。 |
HubSpotフォームのすべてのフィールドはCRMのプロパティと1対1で紐付けられています。 フォームに追加できるフィールドは「HubSpotに存在するプロパティ」に限られます。 カスタムプロパティを追加したい場合は、先にCRM側でプロパティを作成してからフォームに追加します。
| フォームフィールドの設定項目 | 役割 |
|---|---|
| ラベル | フォーム上に表示されるテキスト。「会社名」等、ユーザーが見るテキストを日本語で設定。 |
| プロパティ(内部紐付け先) | 送信値を書き込むCRMプロパティ。内部名は変更不可なので慎重に設定。 |
| プレースホルダー | 未入力時に薄く表示されるガイドテキスト。例:「例:株式会社○○」 |
| 必須フラグ | ON にすると未入力では送信できない。メールアドレスは必ず必須にする。 |
| バリデーション | メール形式・電話番号形式等の入力値の形式チェック。 |
| 非表示フィールド(hidden) | ユーザーには見えないが値をCRMに送信するフィールド。UTM等に使用。 |
フォームのフィールド数とコンバージョン率は反比例の関係にあります。
初回接触(資料DL・セミナー申込)では3〜5フィールドが最適です。
最低限必須:メールアドレス / 氏名(姓・名)
BtoBでは追加推奨:会社名 / 電話番号
最初から聞かない:予算感・検討時期等の詳細情報(プログレッシブプロファイリングで後から取得)
プログレッシブプロファイリングは、同じコンタクトが2回目以降にフォームを送信する際、 すでに分かっている項目を非表示にして、まだ分かっていない情報を聞く機能です。 毎回同じ質問を繰り返すストレスを与えずに、段階的にリード情報を充実させられます。
設定方法:フォームエディター → フィールドを選択 → 「プログレッシブフィールドとして使用」をON。 代替フィールドとして表示したいフィールド(まだ値がない場合に聞く質問)を指定します。
hidden フィールドはユーザーには見えないが、フォーム送信時にCRMへ値を送信できる 特殊なフィールドです。「どのページから」「どの広告から」「どのキャンペーンから」 コンバージョンしたかを記録するために不可欠です。 これを設定しないと、マーケティング施策の効果測定ができません。
実は HubSpot はトラッキングコードが設置されているサイトで、
URLに UTM パラメータが含まれる場合、コンタクトの標準プロパティに自動で記録します。
HubSpot CMS を使っている場合は追加設定なしで機能します。
ただし、フォームに hidden フィールドを明示的に設定することで、
「そのフォームを送信した時点の」UTM値を確実に記録できます。
複数ページを回遊してからフォームを送信するケースで特に有効です。
{# ===== 方法1:{% form %} タグの form_field_values_json で値を渡す ===== ページのURLやHubLの変数を hidden フィールドに渡せる ===================================================== #} {% form form_id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" response_redirect_url="/thanks" form_field_values_json='[ { "name" : "hs_context", "value" : "download_page" }, { "name" : "landing_page_url", "value" : "{{ content.absolute_url }}" }, { "name" : "page_title", "value" : "{{ content.name|escape }}" } ]' %} {# ===== 方法2:JavaScriptでUTMパラメータをフォームに動的に注入 ===== フォームのonFormReadyコールバックを使う ===================================================== #} <script> // URLのクエリパラメータを取得してフォームのhiddenフィールドに注入 hbspt.forms.create({ portalId: "{{ hub_id }}", formId : "xxxx-xxxx-xxxx-xxxx", target : "#hs-form-target", onFormReady: function($form) { var params = new URLSearchParams(window.location.search); var utmFields = [ 'utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term' ]; utmFields.forEach(function(key) { var val = params.get(key); if (val) { // フォームのhiddenフィールドに値をセット $form.find('input[name="' + key + '"]').val(val); } }); } }); </script>
| フィールド名 | 取得する値 | 用途 |
|---|---|---|
| utm_source | 広告・流入元(google/facebook等) | どのチャネルからのリードか計測 |
| utm_medium | メディア種別(cpc/email/organic等) | 有料/無料の流入を区別 |
| utm_campaign | キャンペーン名 | 施策別の効果測定 |
| hs_landing_page | フォームのあるページURL | どのページでコンバージョンしたか |
| conversion_page_type | ページの種類(カスタム) | 資料DL/問い合わせ/セミナー等の種別 |
| referrer_url | document.referrer(前のページ) | 直前に見ていたページの記録 |
フォーム送信後のサンクスページは「コンバージョン直後の最も温度の高い瞬間」です。 単なる「送信完了」で終わらせず、次のアクションへ誘導する設計が重要です。
| サンクスページに含めるべき要素 | 目的 |
|---|---|
| 送信完了メッセージ | 「お問い合わせを受け付けました」等、確認の安心感を与える |
| 次のステップの案内 | 「担当者から〇営業日以内にご連絡します」等の期待値設定 |
| 関連コンテンツへの誘導 | 関連ブログ記事・事例・製品ページへのリンクでサイト回遊を促進 |
| SNSシェアボタン | セミナー申込・資料DL後のシェア促進。口コミ獲得 |
| GTMのコンバージョンタグ | Google広告・Meta広告のコンバージョン計測タグをサンクスページに設置 |
| 方法 | 設定場所 | メリット・デメリット |
|---|---|---|
| フォームエディターで設定 | マーケティング → フォーム → フォームを選択 → 「オプション」タブ → 「送信後にページへリダイレクト」 | ✅ 管理画面から設定。コード変更不要。 ⚠️ フォームIDが同じなら全ての設置箇所で同じサンクスページに飛ぶ。 |
| {% form %}タグで上書き | HubL の {% form %} タグの response_redirect_url パラメータ |
✅ ページごとに異なるサンクスページを指定できる。 ✅ フォームIDを使い回しながらリダイレクト先だけ変えられる。 |
フォーム送信後の自動返信メールはワークフローで設定します。 フォームエディターに「送信後メール」という設定はありません。 ワークフローが必要なため Marketing Hub Professional 以上が必要です。
【ワークフロー設定手順】
1. マーケティング → 自動化 → ワークフロー → 「ワークフローを作成」
2. トリガーの設定:
「コンタクトベースのワークフロー」を選択
トリガー:「フォームの送信」→ 対象フォームを指定
例:「資料DLフォームを送信した」
3. アクションの追加:
「メールを送信」→ 事前に作成したサンクスメールを選択
(送信遅延:0分 = 送信直後)
4. 追加アクション(任意):
- コンタクトプロパティを更新(例:lifeyclestage = "lead")
- 担当者にタスクを作成(例:「24時間以内にフォローアップ」)
- Slackに通知(インテグレーション設定が必要)
- リードスコアを加算
5. サンクスメールの内容:
件名:【資料名】をお送りします(パーソナライズトークン使用)
本文:氏名でパーソナライズ → 資料のダウンロードURL → 次のアクション案内
Marketing Hub Starter ではワークフローが使えません。
代替手段として以下が使えます:
① フォームの「送信後メール」機能(Starter可):
フォームエディター → オプション → 「フォームを送信したコンタクトにメールを送信」。
ただし内容のカスタマイズが限定的です。
② HubSpotのシーケンス(Sales Hub Starter):
営業担当者が手動でシーケンスに登録する方法。完全自動化にはなりません。
CTA(コール・トゥ・アクション)は「クリック数・コンバージョン数を計測できるボタン・画像」です。 通常のHTMLリンクと違い、HubSpotのCTAはクリック数・コンバージョン率が自動で計測され、 A/Bテストも可能です。
{# ===== 方法1:HubL タグで直接埋め込む(最も推奨)===== CTA のIDを使って HubL タグで組み込む方法。 管理画面でCTAの内容(テキスト・リンク先)を変更しても サイト側は自動で反映される。 ===================================================== #} {% cta "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" %} {# ===== 方法2:カスタムモジュールのフィールドで CTA を選択できるようにする ===== fields.json で hubspot_cta 型のフィールドを定義する ===================================================== #} // fields.json { "type" : "hubspot_cta", "name" : "cta", "label" : "CTA(コール・トゥ・アクション)" } // module.html {% if module.cta %} {% cta module.cta %} {% endif %} {# ===== 方法3:ブログ記事テンプレートにCTAを固定配置する ===== 記事本文の下にCTA を常に表示するパターン ===================================================== #} <div class="post__cta-block"> <p>この記事を読んで興味を持った方へ</p> {% cta "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" %} </div>
| HubSpot CTA | 通常のHTMLリンク | |
|---|---|---|
| クリック計測 | ✅ 自動で計測 | ❌ 別途GTM等が必要 |
| A/Bテスト | ✅ 管理画面から設定 | ❌ 別途ツールが必要 |
| スマートコンテンツ | ✅ ユーザー属性で出し分け | ❌ |
| コンテンツ変更の反映 | ✅ 管理画面から即時変更 | ❌ コード変更が必要 |
| 実装の簡単さ | ✅ HubLタグ1行 | ✅ シンプル |
A/Bテストは2つのバリアントを同時に表示し、どちらがより多くコンバージョンするかを統計的に検証する手法です。 HubSpot では LP・メール・CTAにA/Bテスト機能が組み込まれています。
現行のLP
例:見出し「業務効率を2倍に」
CTA「資料をダウンロード」
変更後のLP
例:見出し「3ステップで導入完了」
CTA「無料で試す」
| ルール | 理由 |
|---|---|
| 一度に変える要素は1つだけ | 複数を変えると「どの変更が効いたか」がわからなくなる。見出し・CTAテキスト・画像等、1要素ずつテストする。 |
| 十分なサンプル数を確保 | 各バリアント最低100〜200コンバージョンがないと統計的に有意な結論が出ない。アクセスが少ないページではテスト期間を長くする。 |
| テスト期間は最低2週間 | 曜日による変動(週末はアクセスが減る等)を均等化するために、少なくとも2週間は継続する。 |
| 勝者を決めたら次のテストへ | A/Bテストは「勝者が決まったら終わり」ではなく、継続的に改善仮説を立てて繰り返す。 |
1位:見出し(ヘッドライン):訴求ポイントの言い換えが最もインパクトが大きい。
2位:CTAボタンのテキスト:「資料をダウンロード」vs「無料で試す」等。
3位:CTAボタンの色・サイズ:目立ちやすさの改善。
4位:フォームのフィールド数:フィールドを減らすとCVR向上が期待できる。
リード獲得の施策が機能しているかどうかを判断するために、 正しい指標を正しい場所で確認することが必要です。 HubSpotは複数の計測ポイントを持っています。
| 確認できる指標 | 確認場所 | 活用方法 |
|---|---|---|
| フォーム表示回数 | マーケティング → フォーム → 対象フォームを選択 → 「パフォーマンス」タブ | フォームが表示されているかの確認。ページビューとの比較でフォームの視認性を確認。 |
| 送信数 / 送信率 | 同上 | 表示回数に対して何%が送信したか。10%以下なら改善の余地あり。 |
| 新規コンタクト数 | 同上 | 送信のうち新規リードになった数。既存コンタクトの再送信との区別。 |
| フォーム別CV数の比較 | レポート → 「フォーム送信数」カスタムレポート | どのフォーム・どのページが最もリードを獲得しているか比較。 |
| 計測したい内容 | 推奨ツール | 理由 |
|---|---|---|
| フォーム送信数・リード数 | HubSpot | CRMと直結しているため、「誰がフォームを送信したか」まで追える |
| サイト全体のセッション・PV | GA4 | より詳細なユーザー行動分析・ファネル分析・デバイス分析が得意 |
| 広告のコンバージョン計測 | GA4 + HubSpot両方 | Google広告との連携はGA4、HubSpot側でリードの質(MQL化率)を追う |
| マーケ〜成約までの全ファネル | HubSpot | リード→MQL→SQL→成約の流れはHubSpotだけで計測できる |
□ フォームのすべてのフィールドが正しいCRMプロパティに紐付いているか
□ サンクスページへのリダイレクトが設定されているか
□ サンクスメール用のワークフローが設定されているか(Pro以上)
□ UTM パラメータが hidden フィールドで取得されているか
□ HubSpotトラッキングコードがすべてのページに設置されているか
□ サンクスページに広告コンバージョンタグが設置されているか(GTM経由)
□ フォームのテスト送信を行い、CRMにコンタクトが正しく作成されることを確認したか
送信 → メール照合 → プロパティ書き込み → ライフサイクルLeadに自動変更 → ワークフロー起動 → サンクスページへ。この流れがCMS↔CRM連携の核心。
埋め込み(LP・問い合わせ)/ ポップアップ(ブログ・コンテンツ)/ 収集フォーム(外部CMS)/ CMSモジュール(使い回し可能なCTAセクション)を場面で使い分ける。
どの広告・どのキャンペーンからコンバージョンしたかを記録するhidden フィールドは必須設定。設定しないとマーケティング施策の効果測定ができない。
フォームエディターではなくワークフローでサンクスメールを設定する(Pro以上)。Starterではフォームの「送信後メール」機能で代替。
HubSpot CTAは計測・A/Bテスト・スマートコンテンツが自動で使える。通常のHTMLリンクより優れており、CMS実装では {% cta "ID" %} タグで1行実装。
初回は最低限のフィールド(3〜5項目)で送信ハードルを下げ、2回目以降で追加情報を収集。同じコンタクトに同じ質問を繰り返さない設計がベストプラクティス(Pro以上)。