EMAIL NOT SENT IN JOURNEY BUILDER

TROUBLESHOOTING JOURNEY SENDS

First step towards troubleshooting in SFMC is to install Query Studio from AppExchange.


Once you have access to Query studio you can write SQL queries and troubleshoot the issues quickly.
If you are building a complex queries for a use case, you can write and execute the queries to see if it returns the desired output. Once, you are satisfied with your query you can save and add it to query activity.

You can also save the output into a data extension if required, by default query studio stores the output into a data extension under the folder QueryStudioResults. If you have to execute another SQL with the output of the previous result, you can reference the Data Extensions and apply it in your FROM statement.

FAQ :

1. How to find out who all did not receive email during journey send ?
Best practice is to enable send logging for your account. This will help a-lot during troubleshooting.

Step1 :
If you are aware of the journey Name leverage _JourneyActivity and _Journey data view to find out the email activity names

SQL:

Select
  ActivityName
, ActivityID
, JourneyActivityObjectID
, ActivityType
, ActivityExternalKey,
_JourneyActivity.VersionID
,JourneyName
from _JourneyActivity inner join _Journey on
_JourneyActivity.VersionID=_Journey.VersionID
where JourneyName='Journey 1'

Step 2:
If you are unaware of the journey Name leverage _JourneyActivity , _Journey and _Sent  data view to find out the email activity names

Select
     ActivityName
   , ActivityID
   , JourneyActivityObjectID
   , ActivityType
   , ActivityExternalKey
   , _JourneyActivity.VersionID
   ,  JourneyName
from _JourneyActivity
  inner join
  _sent on
      _JourneyActivity.JourneyActivityObjectID=_sent.TriggererSendDefinitionObjectID
   inner join
   _Journey on
      _JourneyActivity.VersionID=_Journey.VersionID
       where DATEDIFF(D,_sent.eventdate,GETDATE())=0


Step 3:
Find out how many attempted send for the email activity using _sent data view 

SELECT
  JOBID
, EVENTDATE
, SUBSCRIBERKEY
FROM _SENT
INNER JOIN
(
Select
  ActivityName
, ActivityID
, JourneyActivityObjectID
, ActivityType
, ActivityExternalKey,
_JourneyActivity.VersionID
,JourneyName
from _JourneyActivity inner join _Journey on
_JourneyActivity.VersionID=_Journey.VersionID
where JourneyName='Journey 1'
and ActivityName='Activity 1'
) JOURNEY
ON JourneyActivityObjectID =TriggererSendDefinitionObjectID


Step 4 :
From the attempted sends, how many were bounced [Bounced are included in the attempted Sends]
SELECT
  JOBID
, EVENTDATE
, SUBSCRIBERKEY
, BounceCategory
FROM _bounce
INNER JOIN
(
Select
  ActivityName
, ActivityID
, JourneyActivityObjectID
, ActivityType
, ActivityExternalKey,
_JourneyActivity.VersionID
,JourneyName
from _JourneyActivity inner join _Journey on
_JourneyActivity.VersionID=_Journey.VersionID
where JourneyName='Journey 1'
and ActivityName='Activity 1'
) JOURNEY
ON JourneyActivityObjectID =TriggererSendDefinitionObjectID

Step 5 :
Find out Not Sent from Target Data Extension 

Select
 SubscriberKey
,EmailAddress
from TargetDataExtension
where SubscriberKey not in
(SELECT
 SUBSCRIBERKEY
FROM _SENT
INNER JOIN
(
Select
  ActivityName
, ActivityID
, JourneyActivityObjectID
, ActivityType
, ActivityExternalKey,
_JourneyActivity.VersionID
,JourneyName
from _JourneyActivity inner join _Journey on
_JourneyActivity.VersionID=_Journey.VersionID
where JourneyName='Journey 1'
and ActivityName='Activity 1'
) JOURNEY
ON JourneyActivityObjectID =TriggererSendDefinitionObjectID )

Step 6 :
Find out Not Sent from Target Data Extension [Excluding Auto Suppression , Suppression and list detective ] , Send ID in the filter is the Job ID

<script runat="server">
    Platform.Load("core","1");
    try{
    var cols = ["BatchID","EventDate","SendID","SubscriberKey",
"EventType","TriggeredSendDefinitionObjectID",
                "EventType"];
    var prox = new Script.Util.WSProxy();
    var filterNull = {
        Property: "SendID",
    SimpleOperator: "Equals",
    Value: '1234'
    };
    var filterNotNull = {
        Property: "TriggeredSendDefinitionObjectID",
    SimpleOperator: "isNotNull",
    Value: ''
    };
    var res = prox.retrieve("NotSentEvent", cols,filterNull);
    //Write(Stringify(res.Results));
    Write(res.Results.length);
  }
    catch(ex)
    {
        Write(ex.message);
  }
</script>

Step 7: 
To find out hard errors , click  on Activity Summary > View Contact Details > View Summary > Click Details > Hard Error 

Full use case for troubleshooting








Comments

Post a Comment

Most Viewed

CLOUD PAGE ENABLEMENT - PART 1

CONSIDERATIONS FOR JOURNEY BUILDER

Understanding Transactional Messaging

Preference Center Demystified


Knowledge Article

Popular Posts

CLOUD PAGE ENABLEMENT - PART 1

CONSIDERATIONS FOR JOURNEY BUILDER

Understanding Transactional Messaging

Preference Center Demystified

Journey Builder REST API Documentation

Share with Friends

Disclaimer:

The information provided on this technical blog is for general informational purposes only. As a SFMC (Salesforce Marketing Cloud) Technical Architect, I strive to offer accurate and up-to-date content related to SFMC and its associated technologies. However, please note that technology is constantly evolving, and the information provided may become outdated or inaccurate over time.

The content published on this blog represents my personal views and experiences as a SFMC Technical Architect and does not necessarily reflect the official views or opinions of any organization or employer I may be affiliated with.

While I make every effort to ensure the accuracy and reliability of the information presented, I cannot guarantee its completeness, suitability, or applicability to your specific circumstances. Therefore, it is essential to verify any information provided and make your own independent assessments or seek professional advice if needed.

Furthermore, any actions taken based on the information provided on this blog are at your own risk. I shall not be held liable for any damages, losses, or inconveniences arising from the use of the information presented here.

Please keep in mind that SFMC and its associated technologies are complex and require technical expertise for proper implementation and management. It is recommended to consult with qualified professionals or official SFMC documentation for comprehensive guidance.

Finally, please note that any product or company names mentioned on this blog are trademarks or registered trademarks of their respective owners. The mention of these trademarks or registered trademarks does not imply any endorsement or affiliation with the blog.

By accessing and using this blog, you agree to the terms of this disclaimer. If you do not agree with any part of this disclaimer, please refrain from using this blog.