GA4のデータをBigQueryに流すだけで、月30万円の広告費から年間72万円を浮かせた。
大げさに聞こえるかもしれないけど、やったことはシンプルだ。GA4・Search Console・Google広告のデータを1つのBigQueryプロジェクトに集めて、SQLで曜日×時間帯のCVパターンを出した。火曜と水曜の午前10〜12時にCVが集中していることがわかったから、そこに広告予算を寄せた。CPA(1件あたりの獲得コスト)が20%下がった。
この記事では、GA4→BigQueryの連携設定から、n8n(ノーコードの自動化ツール)でSearch ConsoleやGoogle広告のデータを流す手順、Looker Studioでダッシュボードを作るところまで、1日で終わるセットアップの全工程を書く。
GA4→BigQueryエクスポートの設定手順
ここが起点になる。GA4にはBigQueryへのデータエクスポート機能が無料で組み込まれている。Google公式の機能なので安定性が高い。
GCPプロジェクトの準備
まだGCPアカウントがなければ、Google Cloud Consoleにアクセスして新規プロジェクトを作成する。BigQuery APIは初期状態で有効になっているはずだが、もしなっていなければ「APIとサービス」→「ライブラリ」からBigQuery APIを有効にする。
課金アカウントの紐付けも必要だ。「無料なのに課金アカウント?」と思うかもしれないが、GCPは課金アカウントがないとリソースを作れない仕様になっている。毎月1TBまでのクエリと10GBまでのストレージは無料枠に収まるから、中小企業の規模で請求が発生することはほぼない。僕の場合、月額は200〜400円で推移している。
GA4管理画面での設定
- GA4にログインし、左下の歯車アイコン(管理)を開く
- プロパティ列にある「BigQueryのリンク」をクリック
- 「リンク」ボタンを押す
- 先ほど作ったGCPプロジェクトを選択する
- データロケーションを「東京(asia-northeast1)」に設定する。ここ、見落としがちだけど重要。後からロケーションは変更できない
- 「データストリームを設定」で、対象のウェブストリームにチェックを入れる
- エクスポートタイプは「毎日」を選ぶ。「ストリーミング」もあるけど、リアルタイム分析が不要なら毎日で十分だ。ストリーミングだと課金が跳ね上がる
- 「送信」で完了
設定後、24〜48時間でBigQueryにデータセットが自動生成される。データセット名は analytics_XXXXXXXXX(Xはプロパティ番号)。焦って「データが来ない」とならないように——翌日まで待つ。
(余談だけど、僕は最初にロケーションを「US」のまま進めてしまい、後で東京リージョンに変えたくなって、データセットを作り直す羽目になった。5分で済む設定をミスると1時間の手戻りになる。)
n8nでSearch Console・Google広告・Yahoo!広告をBigQueryに流す
GA4は管理画面だけで完結する。問題はそれ以外のデータソースだ。Search Console、Google広告、Yahoo!広告——これらはAPIを叩いてBigQueryに書き込む必要がある。
ここでn8nの出番だ。
Search Consoleの連携
n8nで新規ワークフローを作成し、以下のノードを順番に配置する。
Scheduleトリガー → 毎朝6時に実行するように設定する。Search Consoleのデータは2日遅れで確定するから、取得する日付範囲は「3日前〜2日前」にしておくのが安全だ。
Google Search Console ノード → n8nにはSearch Consoleの公式ノードがある。OAuthでGoogleアカウントを認証し、サイトURLを指定する。取得するディメンション(分析の切り口)は query(検索キーワード)と page(URL)。指標は表示回数・クリック数・CTR・掲載順位の4つ。
BigQuery ノード → 「Insert Rows」操作を選び、先ほどのGCPプロジェクトとデータセットを指定する。テーブルは事前にBigQuery側で作っておく。カラムは date, query, page, impressions, clicks, ctr, position の7つで足りる。
このワークフローの詳しい組み方はGA4レポート自動化の記事でも解説しているから、n8nが初めての人はそちらを先に読んでほしい。
Google広告の連携
Google広告のAPIは認証が少しだけ面倒だ。開発者トークンが必要になる。Google Ads API Centerから申請して、審査が通るまで数日かかることがある。
n8nでの構成はSearch Consoleとほぼ同じ。
Scheduleトリガー → 毎朝7時。
HTTP Requestノード → Google Ads APIのエンドポイントを叩く。n8nにはGoogle広告の公式ノードがないから、HTTP Requestノードで直接APIを呼ぶ。GAQL(Google Ads Query Language)で取得するフィールドを指定する。消化額、CV数、CPA、表示回数、クリック数あたりが基本だ。
BigQuery ノード → Insert Rowsで書き込む。
広告予算の最適化にBigQueryのデータを使う方法はGoogle広告の予算最適化ガイドが参考になる。
Yahoo!広告の連携
Yahoo!広告もHTTP Requestノードで処理する。Yahoo!広告APIはOAuth2.0認証で、レポート取得はリクエスト→ポーリング→ダウンロードの3ステップになる。Google広告より1手順多い。
レポートをリクエストしてからステータスが「完了」になるまで30秒〜数分かかるから、n8nのWaitノードを間に挟んでポーリングする設計にする。
SQLサンプル:BigQueryで横断分析する
データが集まったら、SQLで横断分析ができる。2つだけ、実務で使い倒しているクエリを共有する。
広告キーワードとオーガニック検索の突き合わせ
SELECT
sc.query AS search_keyword,
sc.clicks AS organic_clicks,
sc.impressions AS organic_impressions,
sc.position AS avg_position,
ads.cost_micros / 1000000 AS ad_spend,
ads.conversions AS ad_conversions
FROM
`project.dataset.search_console` sc
LEFT JOIN
`project.dataset.google_ads_keywords` ads
ON
sc.query = ads.keyword
AND sc.date = ads.date
WHERE
sc.date BETWEEN '2026-02-01' AND '2026-02-28'
ORDER BY
organic_clicks DESC
LIMIT 50
このクエリで「オーガニックでもクリックされていて、広告でもCVが出ているキーワード」を一覧できる。僕はこれを月1回走らせて、広告とSEO(検索エンジンからの自然流入を増やす施策)の相乗効果が出ているキーワードを特定している。特定のキーワードでGoogle広告を出稿していた期間に、同じキーワードのオーガニック順位が2〜5位上がっていたケースが3件あった。いわゆるハロー効果だ。広告データと検索データが別々だった頃には、絶対に見つけられなかった相関だと思う。
曜日×時間帯別のCV分析
SELECT
FORMAT_TIMESTAMP('%A', TIMESTAMP_MICROS(event_timestamp), 'Asia/Tokyo') AS day_of_week,
EXTRACT(HOUR FROM TIMESTAMP_MICROS(event_timestamp) AT TIME ZONE 'Asia/Tokyo') AS hour,
COUNT(*) AS conversions
FROM
`project.analytics_XXXXXXXXX.events_*`
WHERE
event_name = 'generate_lead'
AND _TABLE_SUFFIX BETWEEN '20260201' AND '20260228'
GROUP BY
day_of_week, hour
ORDER BY
conversions DESC
GA4のイベントデータはBigQueryに events_YYYYMMDD というテーブル名で日別に格納される。_TABLE_SUFFIX でワイルドカード検索する書き方はGA4×BigQuery特有のお作法だから覚えておくといい。
このクエリの結果を見て、僕は火曜・水曜の午前10〜12時にGoogle広告の入札単価を30%引き上げた。CPAが約20%改善した。月30万円の予算なら6万円の節約。年間72万円。
Looker Studioでダッシュボードを作る
BigQueryにデータが集まったら、Looker Studio(Googleの無料BIツール)で可視化する。
Looker Studioにアクセスして「空のレポート」を作成する。データソースの追加でBigQueryを選び、プロジェクト→データセット→テーブルの順に指定すればすぐに接続できる。
僕が作ったダッシュボードに載せているのは5つ。
セッション数・CV数・CVRの日別推移 → GA4のBigQueryデータから。折れ線グラフで3指標を重ねる。
広告チャネル別のCPA比較 → Google広告とYahoo!広告のテーブルをUNION ALLで結合して、チャネル別の棒グラフにする。どちらの広告媒体が効率的かが一目でわかる。
検索キーワードのクリック数ランキング → Search Consoleのデータから。直近7日間のTop 20。急に上がったキーワードがあれば、そこにコンテンツを追加投入する判断材料になる。
曜日×時間帯のヒートマップ → 先ほどのSQLクエリをビュー化して、ヒートマップで表示する。赤が濃い=CVが多い時間帯。
コンテンツ別の流入推移 → 記事URLごとの月別セッション数。公開から3〜6ヶ月でアクセスが落ちるパターンが多いことがデータで見える。どの記事をリライトすべきか、感覚ではなく数字で判断できるようになった。
Looker Studioのダッシュボードは共有URLを発行できるから、チームメンバーにURLを渡すだけで全員が同じ数字を見れる。Excelを添付してメールで送る、あの不毛な作業がなくなる。
コスト感:無料枠でどこまでいけるか
BigQueryの無料枠は毎月こうなっている。
クエリ処理: 1TBまで無料。中小企業のGA4データ(月間5万PV規模)だと、1回のクエリで処理するデータは数GB程度。1日10回クエリを叩いても月間300GB、無料枠に余裕で収まる。
ストレージ: アクティブストレージ10GBまで無料。90日間変更がないデータは自動で「長期保存ストレージ」に移行し、料金が半額になる。1年分のGA4データ+Search Console+広告データで、僕の環境では約3GB。
n8n: セルフホスト版は無料。クラウド版は月$20のStarterプランで十分。
Looker Studio: 完全無料。
トータルで月額数百円〜2,000円程度。これで年間300時間の手作業が消える。時給換算で考えるまでもない投資だ。
「データウェアハウスなんて大企業の話でしょ」への回答
McKinseyの調査で、データドリブンな意思決定をしている企業はそうでない企業より利益率が23%高いという数字がある。月商1,000万円の会社なら年間2,760万円の差がつく計算だ。
でも、大企業と中小企業ではデータの使い方が違う。大企業はペタバイト級のデータを機械学習に食わせる。中小企業に必要なのはもっと手前——「広告とWebアクセスを突き合わせて、何が効いてるか判断する」「先月と今月を比べて、何が変わったか把握する」。これだけでいい。
GA4の無料版はデータ保持期間が最大14ヶ月。Search Consoleは16ヶ月。それ以前のデータは消える。BigQueryに流しておけば永久に残る。2年前の同月比較も、SQLを1行叩くだけだ。
構築は1日で終わる。午前中にGA4→BigQueryの連携を設定して、午後にn8nでSearch ConsoleとGoogle広告のワークフローを組む。夕方にはLooker Studioでダッシュボードが動いている。
(正直、僕が最初にこれをやったとき、「なんで半年前にやらなかったんだ」と後悔した。半年分の手作業Excel突き合わせ時間を返してほしい。)
今日やるべき1つのこと
全部を一度にやる必要はない。今日やるのは1つだけでいい。
GA4の管理画面を開いて、BigQueryリンクの設定を完了させる。所要時間は30分。これでGA4のデータが毎日自動でBigQueryに流れ始める。データは設定した翌日から蓄積されるから、早く設定するほど過去データが厚くなる。
n8nでの広告データ連携やLooker Studioのダッシュボード構築は、BigQueryにGA4のデータが入ってからでいい。まず箱を用意して、データを貯め始める。分析は後からいくらでもできるが、過去のデータは後から取り戻せない。
参考文献
- McKinsey Global Institute「The age of analytics: Competing in a data-driven world」 https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-age-of-analytics-competing-in-a-data-driven-world
- Google Analytics ヘルプ「BigQuery Export のセットアップ」 https://support.google.com/analytics/answer/9358801
- Google Cloud「BigQuery の料金」 https://cloud.google.com/bigquery/pricing
- Google「Looker Studio」 https://lookerstudio.google.com/
- Ahrefs Blog「How SEO and PPC Can Work Together」 https://ahrefs.com/blog/seo-and-ppc/







