メインコンテンツへスキップ
見出し画像
Photo bydaisaw33

【第395回】 Marketing Cloud Next : メールが送信されない場合のトラブルシューティング

    Nobuyuki Watanabe

    Marketing Cloud Next Growth & Advanced Edition では、フローが「完了」状態にもかかわらず特定の受信者にメールが送信されないことがあります。本記事では、そのような場合に確認すべきポイントと、具体的な調査手順をまとめます。

    画像

    💡 まず理解しておきたいこと

    フローでは多くの種類のエラーが返されますが「セグメントが適切に公開されていない」「データグラフが最新化されていない」といった状態はエラーとして検出されません。そのため、これらの項目は 事前に確実に管理・確認しておく必要があります。

    🔍 確認すべき4つの観点

    メールが送信されない場合は、次の流れでデータの整合性を確認してみてください。この順番がポイントです。

    1. Data Cloud へのレコードの取り込みが完了しているか

    2. ID 解決(Identity Resolution)が 1 の後に 行われているか

    3. 対象セグメントが 2 の後で 公開されているか

    4. データグラフの更新が 2 の後で 完了しているか

    そして、最終的には、プレビューやテスト配信時にエラーが出ないことを確認するのが最も効率的なチェック方法です。以下のようにプレビューでエラーが発生する場合は、本番送信でも失敗します。

    画像

    ① Data Cloud へのレコードの取り込みを確認する

    以下のクエリを Query Editor で実行し、データが取り込まれているか確認します。個人 ID を指定して、条件を絞り込んでください。

    SELECT 
        a.ssot__Id__c AS Id,
        a.ssot__FirstName__c AS FirstName,
        a.ssot__LastName__c AS LastName,
    	b.ssot__EmailAddress__c AS Email,
        a.ssot__DataSourceObjectId__c AS DataSource,
        a.ssot__IsAnonymous__c AS IsAnonymous,
        a.ssot__LastModifiedDate__c + interval '9 hour' AS LastModifiedDate,
        a.ssot__CreatedDate__c + interval '9 hour' AS CreatedDate
    FROM ssot__Individual__dlm a
    LEFT JOIN (
        SELECT ssot__PartyId__c,
               ssot__EmailAddress__c,
               ROW_NUMBER() OVER (PARTITION BY ssot__PartyId__c ORDER BY ssot__LastModifiedDate__c DESC) AS rn
        FROM ssot__ContactPointEmail__dlm
    ) b ON a.ssot__Id__c = b.ssot__PartyId__c
       AND b.rn = 1
    WHERE a.ssot__Id__c = '******************' /*Individual Id Filter*/
    -- WHERE a.ssot__IsAnonymous__c = '1'
    ORDER BY a.ssot__LastModifiedDate__c DESC
    LIMIT 10

    ② ID 解決(Identity Resolution)の確認

    以下のクエリで、個人 ID を指定して実行し、統合個人 ID が取得されているか確認します。IRUpdatedDate(ID 解決実行日時)が古くなっていないかもあわせてチェックしましょう。

    SELECT UnifiedId, Id, FirstName, LastName, Email, DataSource, IRUpdatedDate
    FROM (
        SELECT
            b.UnifiedRecordId__c AS UnifiedId,
            b.SourceRecordId__c AS Id,
            d.ssot__FirstName__c AS FirstName,
            d.ssot__LastName__c AS LastName,
            c.ssot__EmailAddress__c AS Email,
            b.ssot__DataSourceObjectId__c AS DataSource,
            b.CreatedDate__c + interval '9 hour' AS IRUpdatedDate,
            ROW_NUMBER() OVER (
                PARTITION BY b.SourceRecordId__c, c.ssot__EmailAddress__c
                ORDER BY c.ssot__LastModifiedDate__c DESC
            ) AS rn
        FROM
            IndividualIdentityLink__dlm a /* ← 自分の Unified Link Individual DMO の API 名に変更する */
        LEFT OUTER JOIN IndividualIdentityLink__dlm b /* ← 自分の Unified Link Individual DMO の API 名に変更する */
            ON a.UnifiedRecordId__c = b.UnifiedRecordId__c
        LEFT OUTER JOIN ssot__ContactPointEmail__dlm c 
            ON b.SourceRecordId__c = c.ssot__PartyId__c
        LEFT OUTER JOIN UnifiedIndividual__dlm d /* ← 自分の Unified Individual DMO の API 名に変更する */
            ON a.UnifiedRecordId__c = d.ssot__Id__c
        WHERE a.SourceRecordId__c = '******************' /*Individual Id Filter*/
    ) t
    WHERE rn = 1
    ORDER BY Id
    LIMIT 10

    ③ セグメントが公開されているか確認

    以下のクエリで、該当個人 ID がセグメントに公開済みかを確認します。
    PublishDateTime(公開日時)が最新かどうかをチェックしてください。

    SELECT
        a.Id__c AS UnifiedId,
        c.ssot__ExternalRecordId__c AS Id,
        c.ssot__FirstName__c AS FirstName,
        c.ssot__LastName__c AS LastName,
    	d.ssot__EmailAddress__c AS CurrentEmail,
        b.ssot__Name__c AS SegmentName,
        a.Delta_Type__c AS DeltaType,
        a.Timestamp__c + interval '9 hour' AS PublishDateTime
    FROM Individual_Unified_SM_1755567709613__dlm a /* ← 自分の Unified Individual - Latest DMO の API 名に変更する */
    JOIN ssot__MarketSegment__dlm b
        ON a.Segment_Id__c = SUBSTRING(b.ssot__Id__c, 1, 15)
    JOIN UnifiedIndividual__dlm c /* ← 自分の Unified Individual DMO の API 名に変更する */
        ON a.Id__c = c.ssot__Id__c
    LEFT JOIN ssot__ContactPointEmail__dlm d
        ON c.ssot__ExternalRecordId__c = d.ssot__PartyId__c
    -- WHERE b.ssot__Name__c = '***' /*Segment Name Filter*/
    WHERE c.ssot__ExternalRecordId__c = '******************' /*Individual ID Filter*/
    -- WHERE c.ssot__FirstName__c = '***' AND c.ssot__LastName__c = '***' /*Full Name Filter*/
    ORDER BY a.Timestamp__c DESC, a.Delta_Type__c DESC
    LIMIT 10

    ④ データグラフの更新状況を確認

    データグラフについてはクエリではなく、②で取得した 統合 ID を使って、Query Editor 内のデータグラフ専用 UI から検索するのが最も確実です。

    画像

    ✅ 最終チェック:プレビューとテスト配信

    これまでの確認をすべて終えたら、プレビューとテストに移動し、プレビュー機能でエラーが発生しないかを確認しましょう。

    もし以下のようなエラーが表示される場合は、ID 解決 または データグラフの最新化 が完了していない可能性が高いです。

    画像

    なお、統合個人 ID(Unified Individual ID)は状況に応じて変化することがあり、特定の 個人 ID に対して、固定の ID とは言えません。そのため、定期的に最新化を行い、最新の統合個人 ID で運用すること が重要になります。


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

    配信用データが生成されるまでの流れを正しく理解していないと、トラブルシューティングは難しくなります。

    エラーの原因として、他の要因が関係している可能性もありますが、まずは本記事で紹介した手順に沿って一つずつ確認してみてください。

    今回は以上です。


    次の記事はこちら

    前回の記事はこちら

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

     
     
     
    Salesforce Marketing Cloud、Agentforce、Data Cloud、Salesforce 認定資格に関する実践的な情報を発信しています。これらの記事が、皆さまの学習や日々の業務に少しでもお役に立てば幸いです。