5

What ways could you create a data extension that contains all the subscribers (SubscriberKeys) that are currently “in” a Journey (Journey Builder)?

The Journey I would like to do this for is a complex activity with multiple decision branches resulting in multiple possible journey durations. For example; if the customer didn’t open Email1 after 2 days, then send Email2; else Exit Journey. If the customer didn’t open Email2 after 2 days, then send Email3; else Exit Journey. Wait 2 more days, then End Journey. The minimum journey duration for the above example is 2 days, while the maximum is 6 days.

Note that I don’t want a list of subscribers that “entered” a Journey, but a list of the ones that are “currently in” a Journey and have not yet exited. Answer must account for non-standard Journey exits including Unsubscribes/Contact Deletes, etc.

4
  • Maybe i am just dull but you can just do that with engagement splits inside a journey and select opens or clicks or whatever... then wait 2 days and send the next email. Where is the need for the dataextension? – Johannes Schapdick Feb 4 '20 at 13:44
  • Thanks Zuzannamj, however I’m look for a “currently in journey”, not a log of events after a subscriber has complete each journey activity - since it’s possible for a subscriber to complete an activity in the journey, and then be deleted/unsubscribed/etc shortly after; which will not show up in that API (to my understanding). – Cameron Robert Feb 4 '20 at 13:47
  • Hi Johannes, I’m looking for a DE of subscribers in a complex journey where the “journey duration” is not fixed. I used the engagement split example above to exemplify how this “unknown journey duration” could operate in a complex, multi-decision branching journey. – Cameron Robert Feb 4 '20 at 13:52
9

My best advice is to ask Salesforce for a custom data view. This is something that can easily be done, however it will have a cost, as it is a custom development. However, it will let you achieve exactly what you are after. Here is some sample data from such a custom data view, fetched in Query Studio: enter image description here

select JourneyVersionNumber
      ,JourneyName
      ,JourneyStatus
      ,ContactKey
      ,ContactID
      ,ContactStatus
      ,EntryDate
      ,ExitDate
from _ContactJourneyPresence

You can also use a WHERE clause, showing only those contacts who currently are a part of a journey:

select JourneyVersionNumber
      ,JourneyName
      ,JourneyStatus
      ,ContactKey
      ,ContactID
      ,ContactStatus
      ,EntryDate
      ,ExitDate
from _ContactJourneyPresence
where ContactStatus
= 'Active'

Here you will see all these records have an empty ExitDate, meaning they still are part of a journey:

enter image description here

Given that such a task is custom development, it is more or less up to you to define which fields you need to have as part of such a data view, as long as the information is available within the platform.

Any "exit" (regular exit, exit criteria, goal criteria) will be reflected in ExitDate. It is afaik also possible to provide the type of exit, kicking the contact out of the journey, as a separate column.

17
  • 3
    How on bloody earth shall a customer know that salesforce can provide something like that. It is just really stupid that they do not share this info. Atleast i did not know that they offer these services. Great advice though ;) Can you give an estimate of the cost? Again your answer "competes" against Jonas :D – Johannes Schapdick Feb 4 '20 at 15:02
  • 2
    Custom Data Views, who would have thought :-) And yes please do tell how much something like this could cost? – zuzannamj Feb 4 '20 at 15:07
  • 2
    @zuzannamj I'm an architect, not a salesman ;-) – Lukas Lunow Feb 4 '20 at 15:10
  • 1
    @AnonWonderer - yes, see my updated answer – Lukas Lunow Feb 4 '20 at 15:16
  • 2
    My recommendation I give every client and user I run into is if you have an idea on something but can't think of a good way to do it with the current toolset then put in a case in support or reach out to your account rep. Worst they can say is that it is not possible, but a lot of time (for a price) they can give you an option. – Gortonington Feb 4 '20 at 15:58
1

Sounds like a usecase for a journey tracking data extension:

Sendable DE: SubscriberKey, Status, Timestamp

On entering the journey use an update contact event to track a field "status" with value "entered" and set timestamp to "current date". You do not need to fill anything into the SubscriberKey field, this is populated automatically if it has that name.

On all exits, track the value "exit" in the same DE.

Then, build an SQL query that filters down all records in the tracking DE that do NOT have status "exit". Join this with your All Subscribers List, or wherever you track unsubscriptions to account for those. Since the tracking DE MUST be sendable anyway to use Update Contact, contact deletion will affect records in that DE and they won't be listed.

Limitation: Exit tracking doesn't work with Goal-based-exits or Exit criteria. These cannot really be tracked, so my suggestion is, refrain from using those.

4
  • Thanks Jonas, this is my current solution that I’ve been using since Journey Builder was released. I can confirm it works, however with limitations such as timing (how often you refresh the SQL) and goal based exits - as you mentioned. I’m glad that others have defaulted to this method of subscriber tracking! – Cameron Robert Feb 4 '20 at 18:41
  • 1
    We do something similar to this, except we have a sweeper that sweeps updates to a log with a proper primary key, since update contact doesn't respect PKs. – Adam Spriggs Feb 5 '20 at 14:02
  • Just do understand it correctly: You use the updatecontact activity like jonas said and you defined another dataextension with properly configured contraints like primary keys and then you use a sql query or something like this to get it to the log dataextension? Whats your schedule on the sweeper and what actually is your sweeper? Actually the schedule would be the most interesting part i guess. – Johannes Schapdick May 19 '20 at 13:29
  • @JohannesSchapdick - If you want more info on Adam's solution, he posted a blog post on this - sprignaturemoves.com/journey-logging-using-update-contact – Nathalie A Starr Feb 8 at 20:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.