ブログ
Drupal 向け SignalHost:モジュールをインストールし、一度接続すれば、サーバーサイドのトラッキングが稼働
公開 · 読了 10 分
SignalHost モジュールは、コードを 1 行も貼り付けることなく、Drupal サイトにサーバーサイド Google Tag Manager を導入します。管理ページ以外のすべてのページにトラッキング用のローダーを追加し、当社側で何かが変われば最新の状態に保ち、接続を解除すれば再び取り除きます。このガイドは、実際に出会う順番に沿って進みます。モジュールのインストール、コンテナの接続、動作の確認、そしてうまくいかないときの対処です。
始める前に
- PHP 8.1 以降で動作する Drupal 10.3 または 11。PHP には sodium 拡張が必要ですが、これは PHP 7.2 から標準で含まれています。
- SignalHost のアカウント。試すだけなら無料プランで十分です。毎月 1 万リクエスト、コンテナ 1 つ。アカウントは接続の途中でも作成できます。
- Administer SignalHost Server-Side Tagging 権限を持つアカウント。この権限を持つユーザーだけが、サイトを接続したり接続を解除したりできます。
1. モジュールをインストールする
他のコントリビュートモジュールと同じように、drupal.org のプロジェクトページからインストールします。Composer で追加し、有効化してください。
composer require drupal/signalhost_server_side_tagging
drush en signalhost_server_side_taggingDrush を使わない場合は、「Extend」で有効化します。そこでは Statistics グループに SignalHost Server-Side Tagging として表示されます。サイトが接続されるまで、モジュールは何も出力しません。
2. サイトをコンテナに接続する
「Configuration › Web services › SignalHost」(/admin/config/services/signalhost)を開き、「Connect with SignalHost」を押します。まだアカウントがない場合は、「Create a free account」を押すと会員登録に進みます。「Connect with SignalHost」を押すまで、SignalHost に何かが送信されることはありません。
signalhost.io でログインします。次の画面には、モジュールができることとできないことが表示され、このサイトで使うコンテナを尋ねられます。コンテナとは、あなた専用のタギングサーバーです。Tag Manager のウェブコンテナとサーバーコンテナで構成され、あなた自身の Google アカウントに構築されるので、ずっとあなたのものです。
既存のコンテナを選ぶか、「(サイト名)用の新しいコンテナ」を押して短いウィザードを進めます。新しいコンテナの構築には数分かかりますが、すぐに接続でき、準備ができ次第コードが追加されます。「接続」を押すと、「Connected」というメッセージとともに Drupal の SignalHost ページに戻ります。これで SignalHost のコードがサイトの全ページに追加されました。
3. コードがサイトにあるか確認する
ページには「Tracking is live」と表示されます。新しいコンテナがまだ構築中の場合は「Tracking starts as soon as your container is ready」です。続いて「On your home page」の行を確認してください。接続の直後、モジュールは訪問者と同じようにホームページを取得し、自分のコードを探します。望ましい答えは「Code found」です。「Check again」でいつでもチェックを繰り返せます。その他の答えについては「うまくいかないとき」をご覧ください。
4. テストする
プライベートウィンドウでサイトを開き、いくつかのページをクリックして回ってください。Cookie バナーで拒否した訪問者も、Google の Cookie なしの ping として数えられます。次に「Open statistics & settings」を押して、signalhost.io のコンテナページを開きます。
「詳細アクセス解析」の「最近」タブには、あなたの訪問を含む直近 30 分のページビューが表示されます。ページ下部の「トラブルシューティング」にある「チェックを実行」は、タギングサーバーが受け取ったものと、同じ 30 分について Google アナリティクスが報告するものを比較します。アナリティクスのほうが少ないのは正常です。Cookie を拒否した訪問者が除外されるからです。Growth プラン以上では、「ライブイベント監視」に、届いたイベントが 1 件ずつ表示されます。
モジュールがサイトに追加するもの
追加されるのは、小さなスクリプト 1 つと、1 時間ごとの通信です:
- Google Tag Manager のローダー。管理ページ以外のすべてのページの head に置かれ、googletagmanager.com ではなくあなた自身のタギングアドレスを向いていて、そこから Tag Manager コンテナを読み込みます。モジュールは、検証済みの 2 つの値からローダーを自分で組み立てます。SignalHost が送ってきたものがスクリプトとして出力されることは決してありません。これらのページにはキャッシュタグが付いているので、ローダーが変わるたびにページキャッシュが更新されます。接続前にキャッシュされたページも同様です。
- 1 時間に 1 回、レスポンスを送信し終えた後に、モジュールは最新の状態を保つため signalhost.io と通信します。送るのは、モジュール、Drupal、PHP のバージョン、サイトのアドレス、ホームページでコードが見つかったかどうかだけです。訪問者のデータ、コンテンツ、ユーザーアカウントは送りません。signalhost.io に接続できない場合、サイトは最後に正常だった設定を使い続けます。モジュールが保存するものが、設定のエクスポートに含まれることはありません。
すべてのリクエストは広告ブロッカーが認識できない形でブラウザから送られ、タギングサーバーがそれを Google アナリティクス 4 と、コンテナページで設定した広告プラットフォーム(Google 広告、Meta、TikTok など)に転送します。トラッキングは Google Consent Mode を通じて Cookie バナーに従います。バナーのコードは SignalHost のコードより前に置いてください。
モジュールは、Drupal Commerce を含め、フォームや注文を読み取りません。ページビューは自動で届きます。購入やリードは、サイトがデータレイヤーにプッシュしたときにコンテナに届きます。
独自のトラッキングドメイン
コンテナは signalhost.io 配下のアドレスで始まります。有料プランでは、コンテナページの「カスタムドメインを設定する」を使うと、プロバイダで DNS レコードを 1 つ追加するだけで、sgtm.yoursite.com のような自社サイトのサブドメインに移せます。このアドレスはフィルタリストを生き延び、クリックの Cookie をファーストパーティに保ちます。ドメインが稼働すると、モジュールは次回の通信時(通常 1 時間以内)にサイトを切り替え、キャッシュタグによってキャッシュ済みのページが更新されます。手作業で置き換えるものはなく、それまでは古いアドレスが動作し続けます。
SignalHost を手作業で追加する
コードを自分で貼り付けることもできます。コンテナページの「サイトに設置する」カードでスニペットを見つけて「コピー」を押します。それを全ページの head(Drupal ではテーマ経由)の、Cookie バナーのスクリプトの直後に貼り付けて、「設置しました」を押します。「AI エージェント用にコピー」を使うと、同じ作業をコーディングエージェントに任せられます。
手作業で貼り付けると、モジュールが行うことは失われます。ホームページを確認するものはなく、接続を解除してもコードは削除されず、独自ドメインが稼働したときは、カードの「サイトのスニペットを更新してください」か、ドメインの稼働を知らせるメールから、自分でコードを置き換えることになります。両方の方法を併用しないでください。コードが 2 つあると、すべての訪問が二重に数えられます。
更新、管理、接続の解除
更新は Composer で行い、drupal.org のすべてのモジュールと同じく、新しいリリースは Drupal の更新ステータスに表示されます。
SignalHost ページの「Disconnect」は、「Disconnect this site from SignalHost?」と一度だけ確認します。確定すると、サイトのアクセス権を取り消し、全ページからコードを外し、キャッシュ済みのページを更新します。コンテナとそのアクセス解析は残り、いつでも再接続できます。
signalhost.io のコンテナページには「(サイト名)の Drupal モジュールで設置済み」と表示されます。その「管理」ボタンを押すと「設定 › 接続済みサイト」に移動し、そこでも「接続を解除」が使えます。モジュールは次回の通信時(通常 1 時間以内)に SignalHost の読み込みを停止します。
モジュールをアンインストールした場合も、サイトのアクセス権が取り消され、モジュールが保存したものはすべて削除されます。
うまくいかないとき
- 「Could not check (your server refused a request to itself)」:ホスティング事業者が、サーバー自身のアドレスへのリクエストをブロックしています。訪問者に関しては何も意味しません。ホームページのソースにタギングアドレスがあるか探してください。
- 「An older copy is on the page」または「The code is on the page twice」:テーマ、ブロック、別のモジュールに、手作業でコピーが貼り付けられています。それを削除してください。最新のコードはモジュールが追加します。コードが 2 つあると、すべての訪問が二重に数えられます。
- サイトがすでに Google 純正のスニペットで Tag Manager コンテナを読み込んでいるという通知:そのスニペットを削除してください。今は SignalHost がコンテナを読み込むので、両方があるとすべての訪問が二重に数えられます。Google Tag Manager モジュール(google_tag)も同様です。どちらか一方だけを使い、併用しないでください。
- 「This site's address has changed since it was connected」:ステージングなどのコピーでは何も送信されません。本番サイトが移転した場合は、接続を解除してからもう一度接続してください。
- 「Last update」が古い:モジュールはページへのリクエストの後に通信し、cron からは決して通信しません。SignalHost ページを開いても通信が行われ、「Check again」を押すと強制的に通信します。
- その他:サイトのアドレスを添えて hello@signalhost.io までご連絡ください。
商標について
SignalHost は Algorithmo GmbH の独立した製品であり、Drupal プロジェクト、Google、Meta、TikTok とは提携しておらず、これらから承認を受けたものでもありません。Google Analytics、Google Ads、Google Tag Manager は Google LLC の商標です。Meta は Meta Platforms, Inc. の商標です。TikTok は ByteDance Ltd. の商標です。Drupal は Dries Buytaert の登録商標です。

