こんにちは。プリンシプルの木田です。
コンテンツマーケティングについて「効果測定が難しい」という声をしばしば耳にします。
ランディングページの効果測定であれば、直帰率やスクロール率、ページ滞在時間、コンバージョン率といった「お馴染みの指標」で比較的簡単に評価が可能です。これと比べると、確かにコンテンツマーケティングの効果測定は少々複雑かもしれませんね。
この記事では、コンテンツマーケティングにおける効果測定について、基本的な考え方とGA4を利用した分析例をご紹介します。
まずはコンテンツマーケティングで「起きたら嬉しいこと」を考える
まずご紹介するのは、「どのように、どのような指標で効果測定したらよいか分からない」というときに利用できる汎用的な考え方です。
それは、
その活動からユーザーのどのような振る舞いが起きると嬉しいのか?
を考え、そしてその
- 嬉しいことが起きた回数
- 嬉しいことが起きた割合
を測定することです。
例えば「社員によるブログ執筆」というプリンシプルが行っているコンテンツマーケティングについて、起きたら嬉しいことは以下の3点にまとめることができます。
- 潜在的なお客様に解決したい課題があり、検索したときにプリンシプルのブログがヒットし、サイトに初回訪問してくれる。
- そのユーザーが(初回訪問時の体験を良いものと感じてくださって)初回訪問からあまり間隔を空けずに二回目訪問をしてくれる(※短期間での複数回訪問でプリンシプルを覚えて頂けると考えます)
- そのユーザーが初回訪問から一定期間内にお問い合わせやセミナー申し込みをしてくれる
実は「起きたら嬉しいこと」は「目的」とも言えます。しかしながら不思議なもので、「目的」と考えるよりも「起きたら嬉しいこと」の方が言語化しやすく、アイデアも湧いてきます。
「起きたら嬉しいこと」が言語化できたら「計測設計」
「起きたら嬉しいこと」が言語化できたら、それを「計測の仕様」に落とし込みます。計測設計を行うとも言えます。
例えば、先に例示したプリンシプルの「起きたら嬉しいこと」の1つ目(検索から初回訪問)で計測設計をすると以下のようになります。
- 一定期間内の「初回訪問」ユーザーの人数(A)
- Aのうち、自然検索からブログにランディングしたユーザーの数(B)
- サイト全体における(B)/(A) = コンテンツマーケティングが新規ユーザーを獲得した割合(C)
上記の(C)を月別に可視化すれば、1つ目の目的に対して、改善しているのかそうでもないのか?といった全体像を把握できます。
2つ目の「起きたら嬉しいこと」(短期間で複数回訪問し弊社を認知)も同様に、
- ユーザー(B)の数
- Bのうちサイトを再訪問(例えば3ヶ月以内)したユーザーの数(D)
- サイト全体における(D)/(B)の割合 = ブログ起因初回ユーザーの再訪問率(E)
(E)を初回訪問時のブログ記事ごとにまとめると、どのブログが再訪問を喚起する力が強かったのか?を測定することができます。
※実際には3つ目も同様に計測設計を行いますが、ここでは割愛します。
データを整形し可視化する
計測設計ができたら、次はそのデータを可視化します。
ここで利用するのは、GA(=Google Analytics)4から無料版GAでも入手が可能になった、BigQueryにエクスポートされたデータです。
なぜGA4ではコンテンツマーケティングの効果測定ができるようになったのか?というと、ユーザー(=ブラウザー)を特定するIDが全サイト訪問者についてBigQueryにデフォルトで記録されるからです。ちなみに、そのIDは、user_pseudo_id(ユーザー・シュード・アイディー)です。
もちろん、従来のGoogle アナリティクスでもカスタムディメンションを利用すればcidと呼ばれるブラウザー識別IDを記録することができましたが、カスタムディメンションの作成、GTMへのタグ投入と値の格納を行う必要があったので、一般のユーザーには多少のハードルがありました。
この記事では、上記の「起きたら嬉しいこと」の2つ目について可視化してみて、読者の皆さんに雰囲気を掴んでいただければと思います。
具体的な計測設計は以下とします。
- 2020年10月に自然検索から初回訪問し、ブログにランディングしたユーザー数を「first_visit_users = X」とする
- そのうち初回訪問日から3ヶ月位内に再訪問したユーザー数を「second_visit_users = Y」とする
- その上で、(X)/(Y)を、ブログ起因再訪問率「return_rate = Z」と定義
- さらに、ユーザーが初回訪問時にランディングしたブログ記事ごとに、Zを可視化し、Zが高い順にトップ10のブログ記事(ただし、first_vist_users=Xが50人以上)を取得する
データはBigQueryにエクスポートされた、Web+Appプロパティ(=当時。現GA4)を使います。
記述したSQLは以下です。
WITH first_visit AS (
SELECT user_pseudo_id
,MIN(event_date) AS first_visit_date
,MIN(session_count_1) AS min_session_count_1
,MIN(landing_page) AS min_landing_page
,MIN(lp_title) AS min_lp_title
,MIN(medium) AS first_visit_medium
FROM (
SELECT user_pseudo_id
,event_date
,(SELECT value.int_value FROM UNNEST(event_params) AS params WHERE params.key = 'ga_session_number') AS session_count_1
,(SELECT value.string_value FROM UNNEST(event_params) AS params WHERE params.key = 'page_location') AS landing_page
,(SELECT value.string_value FROM UNNEST(event_params) AS params WHERE params.key = 'page_title') AS lp_title
, traffic_source.medium AS medium
FROM `{{プロジェクト名}}.{{データセット名}}.events_*`
WHERE event_name = 'session_start' AND _TABLE_SUFFIX BETWEEN '20191001' AND '20191031'
)
GROUP BY user_pseudo_id
HAVING min_session_count_1 = 1 AND strpos(min_landing_page, '/column/') >0 AND first_visit_medium = 'organic'
),
second_visit AS (
SELECT user_pseudo_id
,MIN(event_date) AS second_visit_date
,MIN(session_count_2) AS min_session_count_2
FROM (
SELECT user_pseudo_id
,event_date
,(SELECT value.int_value FROM UNNEST(event_params) AS params WHERE params.key = 'ga_session_number') AS session_count_2
FROM `{{プロジェクト名}}.{{データセット名}}.events_*`
WHERE event_name = 'session_start' AND _TABLE_SUFFIX BETWEEN '20191001' AND '20191231'
)
WHERE session_count_2 = 2
GROUP BY user_pseudo_id
)
SELECT *, ROUND(second_visit_users / first_visit_users,2) AS return_rate
FROM (
SELECT min_lp_title, COUNT(DISTINCT user_pseudo_id) AS first_visit_users, SUM(visitor_flag) AS second_visit_users
FROM (
SELECT *
FROM (
SELECT *
,IF(DATE_DIFF(DATE(CAST(SUBSTR(second_visit_date,1,4) AS INT64), CAST(SUBSTR(second_visit_date, 5,2) AS INT64), CAST(SUBSTR(second_visit_date, 7,2) AS INT64)),
DATE(CAST(SUBSTR(first_visit_date,1,4) AS INT64), CAST(SUBSTR(first_visit_date, 5,2) AS INT64), CAST(SUBSTR(first_visit_date, 7,2) AS INT64)), DAY) <=90,1,0) AS visitor_flag FROM first_visit LEFT JOIN second_visit USING (user_pseudo_id) ) ) GROUP BY min_lp_title ) WHERE first_visit_users >=50
ORDER BY 4 DESC
LIMIT 10
上記のSQLでやっていることはおおよそ以下の通りです。
- WITH句で仮想テーブルを2つ作っています。
- 1つは、2019年10月に自然検索でブログに初回訪問したユーザーとそのとき使ったランディングページの表です。
- もう1つは、2019年10月~12月に2回目の訪問を行ったユーザーの表です。
- メインのクエリで、WITH句で作成した2つの仮想テーブルを左外部結合しています。
ユーザーごとに見て、左テーブルにも右テーブルにもデータがあれば再訪問者、左側にしかデータがなければ非再訪問者と分かります。 - 最後に、左側テーブルの初回訪問時にランディングしたブログ記事ごとに初回訪問者・再訪問者を集計し、比率を求めています。
結果テーブル
結果テーブルは以下の通りになりました。
如何でしょうか。GA4のレポートをブラウザから見ていただけでは分からなかった、「コンテンツマーケティングの効果測定」としての「ブログ記事別のユーザー再訪問率」が、BigQueryに出力されたデータとSQLで分かりました。
Tableauでの可視化
以下は上記の結果テーブルをTableauで可視化したものです。
さらに分かりやすくなっていますね。
GA4+BQで何ができるのか?の一例として、多少でも、皆さんの参考になれば幸いです。
まとめ
この記事では、コンテンツマーケティングの効果測定をする際の考え方と、GAを利用した具体例をご紹介しました。
プリンシプルに相談してみたいという方は、こちらのフォームから遠慮なくお問い合わせください。