見出し画像

【第257回】 Marketing Cloud Next : エンゲージメントデータの確認方法

Marketing Cloud Next(Marketing Cloud Growth & Advanced Edition)において、Marketing Cloud Engagement の「データビュー」(送信・開封・クリック・バウンス・購読解除などの履歴レコードを蓄積する仕組み)に相当するものが存在するのかを調査しました。

メールのエンゲージメントデータは、以下のデータストリームおよび同名のデータレイクオブジェクトに格納されます。

  • MessagingEventsEmail-EmailEngagement(Summer '25 以前)

  • MessagingEventsEmailV2-EmailEngagement(Summer '25 以後)

さらに、これらは以下のデータモデルオブジェクトに保存されます。

  • Email Engagement

これらのオブジェクトを解析することで、Marketing Cloud Engagement のデータビューと同様の検索や分析が可能になります。


MessagingEventsEmail-EmailEngagement DLO について

このデータレイクオブジェクトには、以下のイベント種別に該当するデータが、イベントが発生する度に記録されます。

  • Sent(送信)

  • Open(開封)

  • Click(クリック)

  • Bounce(バウンス)

  • Unsubscribe(購読取り消し)

  • Complaint(苦情)

特徴

  • 統合個人 ID とは無関係で、個人 ID に紐づくデータです。

  • イベント発生から約 2~3 分後に記録されます。

  • 複数回の開封は、すべて履歴として残ります。

  • Apple の MPP や Gmail アプリによる自動開封も「開封」としてカウントされます。

  • 送信されなかった場合の情報(Not Sent)も記録されます。

  • プレビュー送信やテスト送信の履歴も記録されます。

  • 統合個人のレコードに同じメールアドレスの個人レコードが複数紐づいている場合、Email Engagement に使用される Individual Id の値は、紐づいている複数の個人レコード内、いずれかの Individual Id が使用されますが「どの個人レコードの値が使用されるのか、決まったロジックはありません」と、Salesforce の開発担当の方に調査頂いて回答頂きました。私の所感では、ID 解決の調整ルールによって変わるという認識です。

プレビューとテストの送信については、以下の記事を参照してください。


データエクスプローラーの活用

データを効率よく検索するために、以下の項目を並び替えると便利です。データエクスプローラーは最大 10 項目のみ検索可能です。

おすすめの設定

MessagingEventsEmailV2-EmailEngagement 用
- IndividualId ・・・ Salesforce ID(18 桁)
- ContactPointEmailAddress ・・・ メールアドレス
- EventDateTime ・・・ イベント日時
- EventType ・・・ エンゲージメント種別
- SendStatus ・・・ 送信ステータス
- NotSentReason ・・・ 未送信理由
- BounceType ・・・ バウンスの種類
- BounceReason ・・・ バウンスした理由
- SendName ・・・ メール要素名
- ResolvedUrl ・・・ クリック URL

データエクスプローラーで上記の項目順で表示した後、生成された SOQL クエリをコピーすることで以下のようなクエリテキストを取得できます。

SELECT
    IndividualId__c,
    ContactPointEmailAddress__c,
    EventDateTime__c,
    EventType__c,
    SendStatus__c,
    NotSentReason__c,
    BounceType__c,
    BounceReason__c,
    SendName__c,
    ResolvedUrl__c
FROM
    MessagingEventsEmailV2_EmailEng_6C0EBACA__dll
ORDER BY
    EventDateTime__c DESC
LIMIT 10

Query Editor の活用

Query Editor に上記のクエリテキストを貼り付けることで、さらに詳細な検索が可能になります。もちろん、一から Query Editor でこのクエリを書くこともできますが、データエクスプローラーで生成されたクエリテキストを利用することで、構文ミスを防ぎ効率的に作業を進められます。

おすすめの設定

  • 表示件数をデータエクスプローラーのデフォルトの 100 件から 10 件程度に絞ると横スクロールバーが近くに表示されるため、見やすくなります。

  • SELECT 句でアスタリスク(*)を使用することで、このデータレイクオブジェクトにおけるすべての項目を取得できます。

SELECT *
FROM 
    MessagingEventsEmailV2_EmailEng_6C0EBACA__dll
ORDER BY 
    EventDateTime__c DESC
LIMIT 
    10

加えて、WHERE 句でお好みの条件設定をして、確認したい内容でデータを取得してみてください。先ほど、例に挙げた「プレビューとテスト」におけるテスト送信の送信情報を取得したい場合は、以下のような形になります。

SELECT 
    IndividualId__c, 
    ContactPointEmailAddress__c, 
    EventDateTime__c, 
    EventType__c, 
    SendStatus__c, 
    NotSentReason__c, 
    BounceType__c, 
    BounceReason__c, 
    ContentName__c, 
    ResolvedUrl__c
FROM 
    MessagingEventsEmailV2_EmailEng_6C0EBACA__dll
WHERE 
    IndividualId__c = 'test-send-individual-id'
ORDER BY 
    EventDateTime__c DESC
LIMIT 
    10

注意点:Query Editor の EventDateTime__c は UTC で表示されるため、日本の場合は 9 時間前で表示されます。


Email Engagement DMO について

「Email Engagement」データモデルオブジェクトを使っても、上と同じような内容が取得できますが、通常、「メール要素名」や「メール件名」などのコンテンツ情報が取得できません。なぜなら、コンテンツに関する項目が、「Email Engagement」にマッピングされていないからです

そこでいくつかのデータモデルオブジェクトを連結して表示する必要があります。参考までに、Query Editor では、以下のクエリをお試しください。

SELECT
    a.ssot__IndividualId__c AS Id,
    a.ssot__SendtimeEmailAddress__c AS Email,
    i.ssot__FirstName__c AS FirstName,
    i.ssot__LastName__c AS LastName,
    a.ssot__EngagementDateTm__c + interval '9 hour' AS EngagementDateTime,
    a.ssot__EngagementChannelActionId__c AS ActionName,
    a.ssot__EmailRecipientSendStatus__c AS SendStatus,
    c.ssot__Name__c AS EmailElementAPIName,
    e.ssot__Name__c AS FlowName,
    d.ssot__VersionNumber__c AS VersionNumber,
    h.ssot__Name__c AS SegmentName,
    a.ssot__EngagementActionReasonText__c AS ActionReason,
    a.ssot__EmailBounceType__c AS BounceType,
    a.ssot__BounceReasonText__c AS BounceReason,
    a.ssot__UnsubscribeSourceText__c AS UnsubscribeSource,
    a.ssot__ResolvedURL__c AS LinkURL,
    g.ssot__Subject__c AS EmailSubject,
    g.ssot__FromAddress__c AS FromAddress,
    g.ssot__MessagePurpose__c AS MessagePurpose
FROM ssot__EmailEngagement__dlm a
JOIN ssot__FlowElementRun__dlm b ON a.ssot__FlowElementRunId__c = b.ssot__Id__c
JOIN ssot__FlowElement__dlm c ON b.ssot__FlowElementId__c = c.ssot__Id__c
JOIN ssot__FlowVersion__dlm d ON c.ssot__FlowVersionId__c = d.ssot__Id__c
JOIN ssot__Flow__dlm e ON d.ssot__FlowId__c = e.ssot__Id__c
JOIN ssot__BulkEmailMessage__dlm g ON a.ssot__BulkEmailMessageId__c = g.ssot__Id__c
LEFT OUTER JOIN ssot__MarketSegment__dlm h ON g.ssot__MarketSegmentId__c = h.ssot__Id__c
LEFT OUTER JOIN ssot__Individual__dlm i ON a.ssot__IndividualId__c = i.ssot__Id__c
-- WHERE a.ssot__EngagementChannelActionId__c != 'OPEN' /*Action Name Filter*/
-- WHERE a.ssot__IndividualId__c = '***' /*Individual Id Filter*/
-- WHERE a.ssot__SendtimeEmailAddress__c = '***' /*Email Filter*/
-- WHERE i.ssot__FirstName__c = '***' AND i.ssot__LastName__c = '***' /*Name Filter*/
-- WHERE e.ssot__Name__c = '***' /*Flow Name Filter*/
-- WHERE h.ssot__Name__c = '***' /*Segment Name Filter*/
-- WHERE c.ssot__Name__c = '***' /*Email Element API Name Filter*/
ORDER BY a.ssot__EngagementDateTm__c DESC
LIMIT 10

Email Engagement の項目
  - ssot__IndividualId__c:個人 ID
  - ssot__SendtimeEmailAddress__c:メールアドレス
  - ssot__EngagementDateTm__c:エンゲージメント日時(UTC 表記)
※ 日本時間に合わせるため、9 時間プラスしています
  - ssot__EngagementChannelActionId__c:エンゲージメント種別
  - ssot__EmailRecipientSendStatus__c:送信ステータス
  - ssot__EngagementActionReasonText__c: 未送信理由
  - ssot__EmailBounceType__c:バウンスの種類
  - ssot__BounceReasonText__c:バウンスした理由
  - ssot__UnsubscribeSourceText__c:購読取り消しのソース
  - ssot__ResolvedURL__c:クリックしたリンク URL
Flow Element Run の項目
  - なし:連結用
Flow Element の項目
  - ssot__Name__c:メール要素の API 名
Flow Version の項目
  - ssot__FlowId__c:フローの ID
  - ssot__VersionNumber__c:フローバージョン番号
Flow の項目
  - ssot__Flow__dlm:フローの名前
Bulk Email Message の項目
  - ssot__Subject__c:メールの件名
  - ssot__FromAddress__c:送信元メールアドレス
  - ssot__MessagePurpose__c:商用 or トランザクション分類
Market Segment の項目
  - ssot__Name__c:使用されたセグメント名
Individual の項目
  - ssot__FirstName__c:名前
  - ssot__LastName__c:苗字

Email Engagement DMO に関連する参考ヘルプドキュメント


いかがでしたでしょうか。

今回、紹介したデータエクスプローラーや Query Editor のようなレコードを可視化する Data Cloud の標準機能については、以下の記事でまとめていますので確認してください。

次の記事では、ここで確認した Email Engagement データモデルオブジェクトのデータの活用方法について解説したいと思います。

今回は以上です。


次の記事はこちら

前回の記事はこちら

私の note のトップページはこちら