個人開発者が GA4 で最初に設定する 3 つのイベント
GA4 のアクティブユーザー・エンゲージメント率・ランディングページ ── 入門の 3 つの数字を 2 週間ほど追うと、サイトの体温は分かるようになります。
ところが、次の壁が来ます。「人は来た。読んでもいる。けれど、ボタンを押したかが、分からない」。Kindle へのリンク、登録フォーム、外部サイトへのリンク、料金ページのクリック ── プロダクトとして本当に見たい「動いた/動いていない」が、既定の画面には出てこない。GA4 は、その先を見るために イベント計測 を増やす設計になっています。
本記事は、GA4 を入れた個人開発者が、入門の数字を見たあとに 次に通る 3 段 を、実装例と挫折ポイントつきで整理します。確認は GA4(2025-2026 年時点の UI)と、このサイト(novelarena.jp)の最小実装(gtag.js + config)を一次情報にしています。先に 個人開発者が GA4 で最初に見る 3 つの数字 を読んでおくと、本記事の前提が早く入ります。
その前に:GA4 における「イベント」とは
GA4 は、すべての計測を イベント で表します。ページ表示も、スクロールも、クリックも、フォーム送信も、すべて「name と任意の parameters を持つイベント」として送られて、レポートに集計される ── という構造です。
イベントは、大きく次の 3 つに分かれます。
| 種類 | どこから来るか | 例 |
|---|---|---|
| 自動収集イベント | gtag.js / GA4 タグが既定で送る | page_view / scroll(90% 到達)/ click(外部リンク)/ file_download / first_visit |
| 推奨イベント | Google が「業種別に名前を揃えて送ってね」と推奨 | sign_up / login / purchase / share など |
| カスタムイベント | 自分で gtag('event', ...) を呼んで送る | kindle_cta_click / pricing_view_30s 等、任意 |
ここを混ぜて理解していると、「カスタムイベントを実装しなきゃ」と急いで gtag を呼ぶ前に、実は既定で取れている イベントを取りこぼします。本記事の 3 段は、この 3 種類の順に並んでいます。
段 1:自動収集イベントを「設定せずに」確認する
最初の一手は、コードを 1 行も書かないところから始めます。GA4 を入れただけで既に取れているイベントを、レポート画面で確認する ── ここからです。
このサイト(novelarena.jp)の GA4 実装は、極小です。レイアウトに gtag.js の読み込みと gtag('config', 'G-XXXX...') を置いているだけ。それでも、後述のイベントは設定ゼロで GA4 に届いています。
どこで見るか
- 「レポート」→「ライフサイクル」→「エンゲージメント」→「イベント」:直近 28 日に発生したイベント名と回数の一覧が出ます。
- ここに既定で並ぶ主なもの:
page_view:ページ表示scroll:ページ高さの 90% に到達 したセッションclick:別ドメインへの 外部リンク クリック(「拡張計測」の項目で ON/OFF)file_download:PDF / ZIP / DOCX 等の特定拡張子のクリックvideo_start/video_progress/video_complete:YouTube 埋め込みの再生(要 IFrame API)first_visit:そのブラウザの初回訪問session_start:セッション開始user_engagement:エンゲージメント条件(10 秒滞在等)を満たしたとき
何が嬉しいか
- 外部リンク(Amazon / GitHub / X 等)のクリックが、既に
clickで取れている。 - 記事を最後まで読まれたかが、
scroll(90% 到達)でざっくり取れている。 - 「資料 PDF」「サンプル
.zip」のダウンロードが、既にfile_downloadで取れている。
挫折ポイント
- 自動収集の
clickは「外部リンク」だけ:同じサイト内のリンクは取れません。サイト内クリックは、後述のカスタムイベントで送るか、Google タグマネージャー(GTM)でトリガー設定する必要があります。 - 「拡張計測」を一度確認:「管理」→「データストリーム」→ 該当ストリーム →「拡張計測機能」で、
scroll/click/site_search/video_engagement/file_download/form_interactionsを個別に ON/OFF できます。意図せず OFF だと取れません。 page_viewの「ページパス」が(not set)ばかり:SPA でルーティングしている場合、自動page_viewは最初の 1 回しか送られないことがあります(send_page_view: falseの設定や、history API 変更時の手動発火の有無を確認)。- イベント名はすべて小文字スネーク:英大文字・ハイフン・スペースは推奨されません。
「3 つの数字」で母数を見て、「自動収集イベント」で 無料で取れている動き を確認する ── ここまでで、すでに 8 割方の状況は把握できます。
段 2:キーイベント(旧コンバージョン)を 1 つだけ指定する
イベント一覧を見たら、次は そのうちのどれを KPI として扱うか を、GA4 上で宣言します。これが キーイベント(旧コンバージョン)です。実装は不要。GA4 の管理画面でチェックを入れるだけ。
「キーイベント」は、2024 年に GA4 で「コンバージョン」から改名された呼び名で、機能はほぼ同じです(Google 広告側だけは引き続き「コンバージョン」と呼ぶため、両方の語が並存しています)。
設定の手順
- 「管理」→「イベント」(または「データの表示」→「イベント」)を開く。
- 段 1 で見たイベント名の一覧が並んでいる。
- その中で 「これは目的の動作だ」 と決めたものの右側にあるトグル(あるいは「キーイベントとしてマーク」)を ON にする。
- ON にしたイベントは、以後 「キーイベント」レポート にまとめて集計されるようになります。
個人開発者が最初に指定するなら
- 自著 Kindle や外部商品のリンククリック(自動収集
clickの中で、対象 URL を絞ったカスタムイベントを別に作る、または GTM で個別トリガー)。 - フォーム送信(推奨イベント
generate_lead/sign_upを自分で送る、またはform_submitを拡張計測で取って指定)。 - 料金ページの到達(
page_viewのうちpage_locationが/pricingのものを、Audience または探索レポートで分ける)。
挫折ポイント
- キーイベント反映は「翌日」:イベント自体は数時間で見えますが、キーイベントのレポートに集計されるまでは 最大 24 時間 かかります。当日中に出ないからといって、設定を変えて回さないこと。
- キーイベントは「ボリュームを絞る」ことに意味がある:何でも指定してしまうと、全部が KPI になって全部が KPI でなくなる。まず 1 つ、多くて 3 つに絞ります。
- 段 1 の
clickをそのまま指定しても粒度が粗い:すべての外部リンクが等しく KPI になります。Kindle へのクリックだけ追いたいなら、後述のカスタムイベントを 1 つ送って、そちらをキーイベントに指定するほうが綺麗です。
段 3:カスタムイベントを「1 つだけ」送る
ここから、ようやくコードを書きます。自分の言葉で「動いた」と名付けたい動作を、1 つだけ gtag('event', ...) で送ります。
「1 つだけ」が大事です。最初に 10 個並べると、どれも実装は中途半端、レポートは雑然、キーイベントは何でもありになります。まず 1 つ送って、レポートに出ることを確認する。それから増やす。
最小コード(Kindle CTA クリックを送る例)
<a> タグの onclick に直接書く、最も短い書き方です。
<a
href="https://www.amazon.co.jp/dp/B0XXXXXXXX"
target="_blank"
rel="noopener"
onclick="gtag('event', 'kindle_cta_click', { location: 'article_footer' });"
>
Amazon で読む
</a>
gtag('event', '<イベント名>', { <パラメータ>: <値> }) の 3 段だけです。gtag 自体は、自動収集イベントが動いている時点で window に存在しているので、追加の読み込みは不要です。
Astro / React のコンポーネント化する場合は、props で location を変えると、記事フッター か サイドバー かが GA4 上で区別できます。
イベント名・パラメータの命名規則
- イベント名:小文字スネーク(
kindle_cta_click、pricing_section_view)。GA4 上でカスタムディメンションを切るのが楽になります。 - パラメータ名:同じく小文字スネーク。値は文字列・数値・真偽。個人情報(メール・名前)は絶対に入れない(PII。Google の規約違反で、アカウント停止の原因になります)。
- 既存の自動収集と名前が衝突しないように:
click、scroll、page_viewなどは予約済みの感覚で使う(同名で送ると挙動が混ざります)。 - パラメータを GA4 のレポートで分けたいなら、「カスタムディメンション」として登録:「管理」→「カスタム定義」→「カスタムディメンションを作成」で、パラメータ名を登録すると、レポートでフィルタ・ブレイクダウンが可能になります(登録しないと「すべて入りの 1 イベント」のままです)。
DebugView で送信を即時確認する
カスタムイベントを書いたあと、本番の集計画面で出るのを待つ必要はありません。
- ブラウザに 「Google Analytics Debugger」 拡張機能を入れる、または URL に
?gtm_debug=1を付ける、もしくは開発時のみgtag('config', 'G-XXXX', { 'debug_mode': true })を渡す。 - GA4 の 「管理」→「DebugView」 を開くと、自分のブラウザから送られたイベントが秒単位で流れます。
これで、コードを書いて → ボタンを押す → DebugView でイベント名とパラメータを確認 → OK なら本番レポートを待つ、の最短ループが回ります。
挫折ポイント(共通)
3 段に共通する、特に止まりやすいところを最後にまとめます。
- GA4 のデータは「数時間〜翌日」遅れる:当日のレポートで何も見えないからといって、計測が壊れていると判断しない。DebugView でリアルタイム確認ができる前提を覚える。
- 個人情報をパラメータに含めない:メール・氏名・住所・電話番号・ユーザー ID(自社の生 ID も避ける)。GA4 の規約違反になります。
- 「キーイベント」と「コンバージョン」が混在表示される:Google 広告連携時は「コンバージョン」表記、GA4 単体は「キーイベント」表記。同じものです。
onclickだけだと SPA でリンクが先に遷移してイベントが届かない:別タブで開くリンク(target="_blank")はだいたい届きますが、同一タブ遷移ではgtag('event', ..., { event_callback: ... })で送信完了を待つか、navigator.sendBeacon経由の transport(GA4 のデフォルト挙動)に任せます。- GTM を併用しているサイトでは、
gtag直書きと GTM トリガーが二重発火する:片方に統一します。個人開発の規模なら、最初はgtag直書きで十分(GTM は後から要件が増えたときに)。
まとめ
GA4 のイベント計測は、3 段だけです。
- 自動収集イベントを見る:実装ゼロで
page_view/scroll/click(外部)/file_downloadなどが既に流れている。「拡張計測」のチェックを確認。 - キーイベントを 1 つだけ指定する:管理画面でトグル ON。反映は翌日。最初は 1〜3 個に絞る。
- カスタムイベントを 1 つだけ送る:
gtag('event', 'name', { param: value })の 1 行から。命名は小文字スネーク、PII は入れない、DebugView で即確認。
この 3 段を通すと、サイトのレポートが 「人が来た/読んだ」だけの画面 から、「人が来て、読んで、動いた/動いていない」が出る画面 に変わります。動いた回数が分かれば、「動いていない理由」を初めて掘れる ── ここからが、コピーライティングの仕事に切り替わる地点です。
イベントが流れ始めたら、検索流入側の対の数字も対で見たくなります。GA4 と Search Console の組み合わせ方は 個人開発者が Search Console で最初に見る 3 つの場所 に整理しました。
そして、イベントは増えているのに「動いた」が増えない ── そう感じたとき、原因はだいたい計測ではなく、ボタンに辿り着く前の トップページの一行目 にあります。その構造を掘ったのが 個人開発者のサービスが「素通り」される、たったひとつの構造的な理由 と、作る側でつまずく 「プロダクトは語る」と思っていた個人開発者が陥る 3 つの誤算 です。GA4 で見えた「動いていない」の、その手前で何が起きているのかを、続けてどうぞ。
最初のカスタムイベントを、まず 1 つ、流すところから。
GA4 のイベントが示す現象 ── 「クリックされない」「滞在は長いのに動かない」── を、コピーライティングで直すところまでを 1 冊にまとめたのが、下記の本です。個人開発者・インディー Web 作者・動画作者向けに、LP・短文・メールの戦場別の書き方と、Claude を相棒にしたプロンプト連鎖の実演を含めて統合しています。