BigQueryとBraze Currents マルチチャネルROIレポートの骨子
目次 クリックで開く
高度なパーソナライズ配信を実現するカスタマーエンゲージメントプラットフォーム「Braze」。その真価を発揮させるには、単なる開封率やクリック率の測定に留まらず、配信したメッセージが最終的にどれだけの売上(ROI)に貢献したかを可視化することが不可欠です。しかし、Brazeの標準レポート機能だけでは、自社基幹システムに存在する「購買データ」と「メッセージ接触ログ」を統合した深い分析には限界があります。
そこで重要となるのが、Brazeのイベントストリーム機能であるBraze Currentsを活用し、Google BigQuery上にデータ基盤を構築する手法です。本記事では、IT実務者の視点から、Braze CurrentsとBigQueryを連携させ、マルチチャネルでのROIレポートを自動化するための完全なアーキテクチャと実装手順を詳述します。
Braze CurrentsとBigQueryを連携させるメリット
Braze単体でも強力な分析機能(Report Builderなど)は備わっていますが、BigQueryへデータを流し出すことで、以下の3つの付加価値が得られます。
1. 外部データとの「名寄せ」によるLTV分析
Braze内にあるのは、あくまで「アプリ内挙動」や「メッセージ反応」のデータです。BigQuery上で自社のECサイト、店舗POS、あるいはCRM基盤の売上データと結合することで、「メールを開封したユーザーが、その後3日以内に店舗で購入したか」といったオフライン・オンラインを跨ぐROI測定が可能になります。
2. 柔軟なアトリビューションモデルの適用
標準機能ではラストクリック(最後に触れたメッセージの貢献)に偏りがちですが、BigQueryに生データ(RAW DATA)を保持していれば、ファーストタッチや線形モデルなど、独自のロジックで各チャネルの貢献度を再計算できます。これはWeb行動とLINE IDをシームレスに統合する次世代データ基盤の考え方と同様、複数の接点を一貫したIDで捉えることが鍵となります。
3. 長期的なデータ保存と高速クエリ
Brazeのセグメントやユーザープロフィールには保持期間の制約がある場合があります。BigQueryにストックすることで、数年前のキャンペーンとの比較や、数億レコードに及ぶ大規模な行動ログの高速な集計が可能になります。
Braze CurrentsからBigQueryへのデータ転送設定
実務において、Brazeから直接BigQueryに書き込むコネクタもありますが、汎用性とエラー耐性を考慮し、Google Cloud Storage (GCS) を経由したパイプラインが推奨されます。公式ドキュメント(Braze Currents Documentation)に基づいた確実なステップを解説します。
Step 1: Google Cloud側の下準備
- GCSバケットの作成: Brazeからのデータを受け取る専用のバケットを作成します。リージョンはBigQueryのデータセットと合わせる(例:asia-northeast1)のが鉄則です。
- サービスアカウントの作成と権限付与: Brazeがバケットに書き込むための権限(
Storage Object Admin)を持つサービスアカウントを作成し、JSONキーを発行します。
Step 2: BrazeダッシュボードでのCurrents設定
- Brazeダッシュボードの[Data Settings] > [Currents] を開きます。
- [Integration Partners] から「Google Cloud Storage」を選択します。
- Step 1で作成したGCSバケット名とサービスアカウントのJSONキーを入力します。
- イベントの選択: 送出するイベント(Users, Messages, Conversions等)を選択します。ROI分析には、少なくとも「Sent」「Open」「Click」および「Purchases」が必要です。
Step 3: BigQuery Data Transfer Serviceによる自動ロード
GCSに書き込まれたAvro形式やJSON形式のファイルを、BigQueryに自動インポートする設定を行います。BigQueryコンソールの「データ転送(Data Transfer)」メニューから、GCSをソースとして定期的に読み込むようスケジュールします。これにより、エンジニアがコードを書くことなく、常に最新のBrazeログがBigQueryに同期されます。
UNNEST関数を用いた加工が必要です。
主要ツールの比較:データパイプラインの選定
BrazeとBigQueryを繋ぐ方法は複数存在します。それぞれの特性を比較表にまとめました。
| 手法 | コスト | 構築スピード | カスタマイズ性 | 主な用途 |
|---|---|---|---|---|
| Braze Currents (GCS経由) | 中(Brazeライセンス+GCP料金) | 早い | 高い | 全メッセージログの蓄積、分析基盤 |
| Fivetran / Stitch | 高(コネクタ費用) | 最速 | 低い | 開発リソースを最小化したい場合 |
| Custom API Integration | 低(開発工数大) | 遅い | 最高 | 特定のイベントのみを抽出したい場合 |
コストパフォーマンスと拡張性のバランスを考えると、中〜大規模なプロジェクトではBraze Currentsを選択するのが王道です。なお、より低コストで特定のチャネル(LINE等)に特化した施策を回したい場合は、高額MAツールは不要。BigQueryとリバースETLで構築する「行動トリガー型LINE配信」のような構成も検討に値します。
実践:ROI算出のためのSQL設計
BigQueryにデータが格納されたら、次はROI算出のための集計工程に入ります。Braze Currentsのデータは、チャネル(Email, Push, SMS, Content Card等)ごとにテーブルが分かれているか、一つの巨大なイベントテーブルに格納されています。
1. ユーザー接触ログのフラット化
Currentsのデータには、user_id (外部ID) や braze_id が含まれています。これをキーにして、特定のキャンペーン接触履歴を抽出します。
SELECT user_id, dispatch_id, campaign_name, message_variation_name, timestamp as interaction_time FROM project.dataset.users_messages_pushclick_event WHERE _PARTITIONTIME >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
2. 購買データとの突合(アトリビューション)
次に、自社の購買テーブル(orders)を結合します。ここでは「クリックから7日間以内の購入を有効とする」というアトリビューションウィンドウを設定する例です。
WITH interactions AS ( -- メッセージ接触ログの抽出 SELECT user_id, campaign_name, timestamp FROM project.dataset.braze_clicks ), purchases AS ( -- 自社購買データの抽出 SELECT user_id, order_id, total_amount, order_timestamp FROM project.dataset.orders ) SELECT i.campaign_name, COUNT(DISTINCT p.order_id) as converted_orders, SUM(p.total_amount) as total_revenue FROM interactions i JOIN purchases p ON i.user_id = p.user_id WHERE p.order_timestamp BETWEEN i.timestamp AND TIMESTAMP_ADD(i.timestamp, INTERVAL 7 DAY) GROUP BY 1
このクエリにより、Brazeのキャンペーンごとの売上貢献度が算出されます。これをチャネル別に集計すれば、マルチチャネルROIレポートの基礎データが完成します。さらに高度な最適化を目指す場合は、広告×AIの真価を引き出す。CAPIとBigQueryで構築する「自動最適化」データアーキテクチャを参考に、これらのデータを広告プラットフォームへフィードバックすることで、獲得単価の抑制にも繋がります。
運用コストとパフォーマンスの最適化
BigQueryは処理したデータ量に応じて課金されるため、数千万〜数億件のイベントログを扱うBraze運用では、コスト最適化が実務上の生命線となります。
パーティショニングの徹底
Braze Currentsから出力されるデータには、必ずタイムスタンプ(time または timestamp)が含まれています。BigQueryのテーブルを作成・更新する際は、必ず「日付分割テーブル(Partitioned Table)」として定義してください。これにより、直近1ヶ月のROIを出す際に、過去数年分のデータをスキャンする無駄なコストを回避できます。
スキーマ管理とネスト解除
Brazeのデータは、一つのカラム内に extra_data としてJSONオブジェクトが詰め込まれていることがあります。これらを JSON_EXTRACT_SCALAR などの関数で毎回パースするとクエリが重くなるため、定期的なバッチ処理(dbt等)でフラットな分析用テーブルに変換しておくのが、中長期的な運用のコツです。
まとめ:データ駆動型CRMの基盤として
Braze CurrentsとBigQueryの連携は、単なる「データ転送」ではなく、マーケティングの意思決定を科学するための「基盤構築」です。メールやプッシュ通知の結果を単体で追うのではなく、統合されたデータとしてROIを可視化することで、真に効果のあるチャネルへの予算配分が可能になります。
設定手順は公式ドキュメントに従えば比較的シンプルですが、その後の「名寄せ」や「アトリビューションロジックの設計」こそがIT実務者の腕の見せ所です。まずは最小限のイベントからBigQueryへの転送を開始し、徐々に自社データとの統合範囲を広げていくことをお勧めします。
公式参考資料:
- Braze公式: Currents Overview
- Google Cloud公式: BigQuery Data Transfer Service for GCS
実務導入前に抑えるべき「3つの技術的懸念点」
Braze CurrentsとBigQueryを繋ぐパイプラインが疎通した後、実際のレポート作成フェーズで多くの担当者が直面する実務上の壁があります。これらを事前に把握し、設計に組み込むことがプロジェクト成功の鍵です。
1. イベント発生時刻とGCS到達のタイムラグ
Braze Currentsは「準リアルタイム」でのデータ転送ですが、イベントが発生してからGCSにファイルとして書き出され、BigQueryにロードされるまでには数分から数十分の遅延が生じます。ダッシュボード上の数値とBigQueryの集計値に乖離がある場合、まずはこの「データの鮮度(Freshness)」の差を考慮する必要があります。
2. データ重複の排除(デデュープ)
ネットワークエラーや再試行処理により、稀に同一のイベントが重複してBigQueryに格納されることがあります。ROIの計算精度を高めるには、dispatch_id や braze_id、タイムスタンプをキーにして、クエリ側で DISTINCT もしくは ROW_NUMBER() を用いた重複排除ロジックを実装するのが実務上の定石です。
3. Braze IDと自社IDの紐付け運用
Brazeの external_id を自社DBのプライマリキーと一致させておくのは基本ですが、ログイン前の匿名ユーザーの行動ログ(Braze ID)と、ログイン後の購買履歴をどのように統合するかの設計も重要です。このID統合の重要性については、WebトラッキングとID連携の実践ガイドで詳しく解説しているアーキテクチャが参考になります。
データ量によるコスト増を防ぐ「データセット設計」
Brazeの大規模なセグメントに対して配信を行うと、Currents経由で出力されるログは膨大な数に達します。スキャン料金を最適化するための構成案を以下にまとめました。
| 階層(レイヤー) | 役割 | 推奨される処理 |
|---|---|---|
| Raw Data (Staging) | Currentsからの生ログ | パーティショニングのみ設定。直接の分析には使わない。 |
| Cleaned / Unified | ネスト解除後の正規化データ | dbt等で定期的に変換。ID名寄せや重複排除を完了させる。 |
| Mart / ROI Layer | BIツール参照用の集計テーブル | キャンペーン別、日別の売上貢献度をサマリー化。 |
次のステップ:レポーティングから「アクション」の自動化へ
BigQuery上でのROI可視化が実現した後は、そのデータを再びBrazeに戻して配信に活用する「リバースETL」のフェーズへと進むことができます。高額なCDPを導入せずとも、モダンデータスタックの組み合わせで、より精度の高いCRM運用が可能になります。詳細は、SFA・CRM・MA・Webの違いとデータ連携の全体設計図を併せてご確認ください。
実務における最新のフィールド定義については、Braze公式のCurrents Event Glossaryを常に参照し、データ構造の変更に備えてください。
ご相談・お問い合わせ
本記事の内容を自社の状況に当てはめたい場合や、導入・運用の設計を一緒に整理したい場合は、当社までお気軽にご相談ください。担当より折り返しご連絡いたします。