GA4学習

スクロール率が測れないLPに、別の測り方を取り入れた

LPやサイトでスクロール深度を計測しているが、アンカーリンクのせいで数値が信用できない——そんな状況に心当たりがある方に向けて書く記事です。実験LP第2弾は、自分がこれから新しく立ち上げるサービス「外部Web担当」の集客用LPで、実績はまだこれからの段階です。このLPで、A/Bテストと計測の設計をどう決めたかを記録しました。今回は「問題を解決した」だけでなく、その解決策が生んだトレードオフまで書いています。同じ迷いを抱えている方に、測り方を選ぶときの考え方のひとつとして読んでもらえたら。

LP第2弾のA/Bテスト、差分はFVのキャッチコピーだけに絞った

このLPは、自分がこれから実際に提供していくサービス「外部Web担当(あなたの会社のWeb担当)」の集客用に作ったものだ。A面・B面の2パターンを用意し、LP一覧ページのJSでランダムに振り分けている。

  • A面:「止まったホームページを、動かします。」(痛み起点)
  • B面:「社外で持てる、専任Web担当という選択肢。」(欲求起点)

差分はこのFVのキャッチコピー(H1)だけで、§2以降——困りごとの確認・進め方・料金・FAQ・フォームは完全に共通にしている。

差分を1点に絞ったのは、変化の原因をはっきりさせたかったからだ。CTA到達率やセクションごとの読了に差が出たとき、それが「痛み起点か欲求起点か」によるものだと言い切れる設計にしたかった。複数箇所を同時に変えると、差が出ても何が効いたのか切り分けられなくなる。

LP第1弾の時点で分かっていた、スクロール率の限界

このLPのCTAボタンは、すべてhref="#contact"のアンカーリンクだ。クリックすると、ブラウザがページ最下部のフォームまで自動でスクロールする。

このとき困るのが、GA4のスクロールイベントだ。実験LP第1弾(架空のオンラインスクールLP)を設計した段階で、この問題はすでに想定していた。当時のGA4設計メモにはこう書いている。

スクロールイベントはCTAクリックによるジャンプで意図せず発火する場合がある → 限界を記事に明示した上で参考値として記録する方針

つまり、アンカーリンクのCTAがあるページでは、クリック時の自動スクロールが25%・50%・75%の到達イベントを一瞬で同時発火させてしまう。これは今回新しく見つけた問題ではなく、LP第1弾の設計時点で「そういうものだ」と受け入れて、参考値として記録する方針にとどめていた話だ。

今回は測り方自体を切り替えた

「参考値のまま」で終わらせなかった理由

LP第1弾はダミー題材だったこともあり、「参考値として記録する」で十分だった。ただ今回は、実際に問い合わせにつなげたいサービスのLPだ。数字が汚れたまま記録するだけでは、次の改善判断に使えない。

そこで、スクロール率のイベント(25/50/75%)自体を廃止することにした。

切り替えた先:セクション単位の表示計測

代わりに採用したのが、セクション単位の表示を計測する方式だ。IntersectionObserver(要素が画面内に入ったかどうかをブラウザ側で検知できる仕組み)を使い、各セクションが画面内に20%入った時点でlp_section_viewイベントを1回だけ発火させる。

対象のセクションは8つ。困りごとの確認・サービスの選択肢・進め方・相談内容・プロフィール・料金・FAQ・フォームに、それぞれIDを割り当てている。

この方式を選ぶ前に、他の方法も検討した。

検討した方法内容判断
scrollイベントの自前判定スクロール位置から各セクションの表示を自前で計算するそもそも今回問題になったscrollイベントの上に判定ロジックを足すだけで、根本的な解決にならない → 見送り
GTMの「要素の表示」トリガーGoogleタグマネージャー(GTM)を使えばコード不要で同様の検知ができるこのサイトはSEO SIMPLE PACKが直接gtag.jsを読み込む構成でGTMを挟んでおらず、導入するとタグ管理の仕組みごと変えることになる → 見送り
IntersectionObserverブラウザ標準の機能で要素の表示を検知する追加コストが低く、今回の規模に見合っている → 採用

この方式なら、ユーザーがスクロールで読み進めたのか、CTAクリックで一気に飛んだのかに関係なく、「そのセクションが画面に映ったかどうか」だけを見られる。アンカージャンプの影響を受けない計測に変えた、という設計判断だ。

振り返り:アンカーリンクをなくす選択肢もあった

ここまでは「うまく対応できた話」として書いてきたが、ひとつ反省がある。

もしLP第1弾との比較を優先するなら、別の選択肢もあった。CTAのアンカージャンプ自体をやめて、通常のスクロールで正しいスクロール深度を取得できる構造にし、ページ内移動が必要ならCTAとは別に追従ナビを用意する、というやり方だ。この方法なら、LP第1弾と同じ「スクロール率」という指標のまま、精度だけを上げられたと考えている。

今回選んだのは、指標そのものを「スクロール率」から「セクション表示」に変える方法だった。おかげでLP第2弾単体では読まれている場所がクリーンに分かるようになった一方で、LP第1弾のスクロール率データとはもう直接比較ができなくなっている。「今回のLPで何を知りたいか」だけを見て決めた設計で、「サイト全体でデータをどう積み上げていくか」までは考えが及んでいなかった、という反省だ。

まとめ

  • A/B差分をFVのキャッチコピー1点だけに絞ったことで、差が出たときに原因を言い切れる設計にした
  • スクロール率の限界はLP第1弾の時点で分かっていたが、「参考値として記録する」で終わらせず、今回はセクション表示計測に測り方を切り替えた
  • ただし指標を変えたことで、LP第1弾のデータとの直接比較はできなくなった。個別LPの計測設計と、サイト全体でのデータの積み上げ方は、別々に考える必要があると分かった

このLPでは、A面(痛み起点)/ B面(欲求起点)のCTA到達率とセクション表示の差を、これから観察していく。データが溜まった段階で、計測→改善フェーズとして続きを書く予定だ。

LP自体はこちらで公開している。→ 外部Web担当LP(あなたの会社のWeb担当)

実験LP第1弾の計測設計はこちらに記録している。→ LPに入れるGA4イベント、どう決めた?

更新はXで告知している。→ @AO_weblab