SEO x GTM:Web Vitalsの数値を集計したい|開発いらず、GTMだけでGA4に送って保存分析
POINT

この記事は、以下のような人にオススメです。

  • (GTMで)TTFBを測定したい人
  • 自分のサイトがユーザーのブラウザでどんなパフォーマンスしているかを知りたい人
  • Web VitalsのデータでGA4で集計したい人など…
オスカーの似顔絵

こんにちは!Webディレクターのオスカーです。

SEOにおいて、Core Web Vitalsの指標からくる影響があります。
そして、Core Web Vitalsの指標を測定するために、PageSpeed Insightsというツールがありますが。。。

さて、これ質問された時、あなたはどうしますか?
「先週実施した施策ですが、どうも施策期間中、サイトのパフォーマンスが良くないようですよ。先週のTTFBやLCPなどの指標を取ってもらえますかね?」

先週のコンテンツを再現して、PageSpeedで検証したら、ある程度できるかもしれません。
「先週の状況で、かつそのコンテンツのパフォーマンス」ではありません。

となるとやはりWeb Vitalsの数値を継続的取得できるようにして、集計できるようにしておいた方がいいと思います。

今回の記事では「Web Vitalsの数値を取得して、GA4で確認できるように、GTMの設定方法」を紹介します。
この記事は、SEOでもあり、GTMでもあり、GA4でもありますが、重点はGTMになりますので、カテゴリはGTMに設定しています。

この記事はあなたのディレクターレベルを1ランクUPできることを期待します。
ぜひ、最後までご覧いただけますと幸いです。

注意:この内容はGA4の内容になります。

Core Web Vitalsとは

Core Web Vitalsは、WebサイトのSEOに直接影響します。
これについては、2020年にGoogle検索セントラルでの発表があります。

数値が低いと、SEOにも悪影響を与えますので、要注意です。
Core Web Vitals は、ページの速度、応答性、そして視覚的安定性を評価して、結果に基づいてランキングでサイトを優先しています。

SEOの話を除いでも、これらの指標はUXにも直接反映しますので、Webディレクターとしては見逃してはいけない重要なポイントであります。

取得データについて

今回はGoogleChromeが提供しているWeb Vitals NPM packageをベースに、Web Vitalsをクライアント側から取得するようにします。
取得対象は以下の通りです。

  • Cumulative Layout Shift (CLS)
  • First Input Delay (FID)
  • Largest Contentful Paint (LCP)
  • First Contentful Paint (FCP)
  • Time to First Byte (TTFB)

TTFBについて

上記のうち、特にTTFBに関しては、PageSpeedにも取得できないデータです。

web.devからは「Chrome開発者ツール」または「WebPageTest」でテストすることを提案していますが、
WebPageTestではアメリカ、インドなどの国は選べられるが日本の選択肢がないため、正確な数字とは言えず。
Chrome開発者ツールでは個人のパソコン・ネットワークのスピードにも左右されますので、客観的な数字は取得できない状況です。

なので、オスカーはJSで取得することが一番ベストと思います。

GTMの設定

お待たせしました。ここから本題に入ります。

①タグ作成

設定は下記の通り、

  • タグ名称(名称を仮に「Web Vitals - JS」にしてます。)
  • タグタイプは「カスタムHTML」を選択
  • トリガーは「All Pages」

内容に下記のJS記入

下記内容をコピペして、保存します。

<script>
   (function() {
     var script = document.createElement('script');
     script.src = 'https://unpkg.com/web-vitals@0.2.3/dist/web-vitals.es5.umd.min.js';
     function sendToDataLayer(metric) {
     var name = metric.name;
     var delta = metric.delta;
     var value = metric.value;
   dataLayer.push({
       event: 'web-vitals',
       event_category: 'Web Vitals',
       event_action: name,
       event_value: Math.round(name === 'CLS' ? delta * 1000 : delta),
     })
   }
   script.onload = function(){
     webVitals.getCLS(sendToDataLayer);
     webVitals.getFID(sendToDataLayer);
     webVitals.getLCP(sendToDataLayer);
     webVitals.getTTFB(sendToDataLayer);
   }
     document.head.appendChild(script);
   }())
</script>

ざっと説明すると、JSを使ってWeb Vitalsの数字を取得し、それぞれデータレイヤーにして、「web-vitals」のイベントを発火する。
というものです。

②トリガー作成

この後GA4のイベントを作成しますが、そのためのトリガーを作成します。

設定は下記の通り、

  • トリガー名称(名称を仮に「Web Vitals」にしてます。)
  • トリガータイプは「カスタムイベント」を選択
  • イベント名は「web-vitals」を入力(上記のJSに入力しているものと完全一致する必要があります。)

設定後に保存します。

③変数作成

これも、GA4のイベントに使いますので、2つの変数が必要です。
「変数」メニューに入り、ユーザー定義変数の「新規」をクリックします。

設定は下記の通り、

  • 変数名称(名称を仮に「Web Vitals - Metric」にしてます。)
  • 変数タイプは「データレイヤー」を選択
  • 変数名は「event_action」を入力(上記のJSに入力しているものと完全一致する必要があります。)

もう一つの変数の設定は下記の通り、

  • 変数名称(名称を仮に「Web Vitals - Value」にしてます。)
  • 変数タイプは「データレイヤー」を選択
  • 変数名は「event_value」を入力(上記のJSに入力しているものと完全一致する必要があります。)

上記の2つも保存して、次最後のステップに入ります。

④タグ作成

設定は下記の通り、

  • タグ名称(名称を仮に「Web Vitals - GA4イベント」にしてます。)
  • タグタイプは「GA4イベント」を選択
  • 設定タグはGA4を設定しているタグを指定します
  • イベント名は先ほど、1個目の変数を設定
  • イベントパラメータに1つ目は"value"で、値は2個目の変数を設定
  • そしてトリガーには先ほどの作成した「カスタムイベント」を設定

これで設定完了です!

GTM Previewで確認

さて、公開する前に、Previewで確認しましょう。

まずはイベント発火の方はPreview開いてすぐ確認できると思います。
ざっとこんな感じです。

それぞれのweb-vitalsをクリックして、「Variables」のタブを確認すると、下記のように「Web Vitals - Metric」と「Web Vitals - Value」を確認することができます。

GA4 DebugViewで確認

次にGA4のDebugViewにも確認しましょう。

下記のように連携されます。
JSに書いてあった「web-vitals」イベントはGTMを発火させるものであって、GA4に連携するイベントはそれぞれのパラメータのはずです。

上記の場合、TTFBのvalueは706になりますので、web.dev推奨は800ms以下ですので、ギリギリセーフです。

ここまで確認できたら、問題なく公開できますので、実装しましょう!

探索レポートで確認

上記設定完了したら、翌日より探索レポートで確認できるようになります。

①新しいデータ探索作成

②変数設定

  • ディメンション:イベント名、ランディングページ+クエリ文字列
  • 指標:イベント数、イベントの値

③全ディメンションと指標追加

1回ずつダブルクリックすれば追加できて、以下のようになります、

④フィルタでイベント指定

さらに特定の数値を確認する場合、フィルタでイベントを指定できます。

例えば、イベントをCLSでフィルタする場合、下記のようになります。

現在、カスタムイベントで値を渡す場合、GA4は全部合計して表示するようになっています。
平均値はGA4で出せませんので、計算が必要になります。
上記の「/blog/ga4-measure-number-of-clicks-…」だと、1752/6=287.5。
平均0.28sになりますので、要改善ページでした。

他BigQueryやBIツールなどで計算を自動化するといいかもしれません。

おわりに

Core Web Vitalsの指標を日々の連携で、GA4を取り込むことで、
どのページに異常が発生するかがわかるし、過去のデータを追うことも可能になります。

問題ある場所はすぐ改善できて、SEOにも貢献します。

今日も読んでいただきありがとうございます。
少しでも役に立てれば幸いです。

それでは。

From Our Blog