I am working on a journey that kicks off when a custom object "Warranty" is created in Salesforce and the "Warranty Extended" field on that newly created warranty equals false. If at some point during the journey, that field becomes true, then the contact should exit the journey.

Every warranty object has 1 parent contact object, but a single contact object can have any number of related warranties, this is where I think my trouble is coming from. I have tried using "Contact Data" to set this as exit criteria, but that seems make the contact exit the journey if any of their Warranties are extended, not necessarily the one that started the journey.

Is there anyway within Journey Builder to check if the specific Warranty custom object which triggered the journey now has "Extended Warranty = True" and thus remove that contact from the journey?

Thanks in advance for your help!

4 Answers 4


You have to add the Journey entry DE to the the Contact Builder and map as follow:

1) Journey Entry DE.ID = Contact Builder Journey Entry DE.ID
2) Journey Entry DE.WarrantyId = Contact Builder Journey Entry DE.Warranty ID
3) Contact Builder Journey Entry DE.Warranty Status = True

1) AND 2) Represent a Composite Key to Identify a Record

  • If DE is a Salesforce Data, than it is already a part of the Contact Model.
    – Your Mum
    Apr 9, 2019 at 21:24
  • You can edit your first answer and consolidate without having to put in another answer. Apr 9, 2019 at 22:23
  • @YourMum I'm giving this a shot, I'll select your answer if it works out. Thanks for the help! Apr 10, 2019 at 20:58
  • Dunno if this is the only way of doing it, but what I did was set up an automation that runs daily (often enough for this use case) that queries all the Warranty objects from the synced DE and moves them to a standard DE. I linked this DE to the Journey Entry DE in the manner described in this answer. Then I used that as a look up in a few Decision Splits to filter out warranties that have become extended while the journey has been running. Apr 12, 2019 at 17:10

I don’t think it is achievable via Exit criteria. The only option would be to use Decision splits. Yes, it is not a perfect solution, as it adds more complexity and extra activities to the Journey Workflow, but that the SFMC platform limitation.

  • I forgot to mention that I tried redoing the Exit Critera as a part of decision splits throughout the journey, but it seemed to have the same effect. How would you set up these decision splits? I tried to make it so that the Id must equal the Warranty.Id from the journey AND Warranty Extended = True, but that did not seem to work either. I am not sure that it ran both criteria on a single Warranty, I think it just grabbed two Warranties that satisfied the criteria together, does that make sense? Apr 9, 2019 at 20:55

It sounds like you're using Salesforce Data as the Entry Event source. You'll need to query your Synchronized Data Extensions into a new data extension and use that data extension as the Entry Event source. As you mentioned, a single Contact can have multiple related Warranties, so technically the Journey is working as expected because it is exiting out the contact based on that.

You'll have to write a SQL query to JOIN the Contact and Warranty data in this new data extension so that the correct Warranty is attributed to that Contact.


I'm not entirely sure if it works with goals and exit criteria but you can try to use a concept called data binding to identify the warranty record in your contact data model that triggered the journey entry.

This is a "technical syntax", originally introduced for custom activities and the API context (Salesforce is actually using this for Salesforce object activities as you see further down in the linked thread), that can also be used to fetch entry data information in your criteria expressions. In your case the Id of the warranty record triggering the journey.

This thread explains how it works and also how you get the correct syntax for your journey based on a mock salesforce object update activity without needing to learn the syntax and finding the Eventdefinitionkey.

Select the Id field from your entry data as dynamic lookup value to find a record in Salesforce and copy the string that is inserted in the value field. The screenshot at the end of the linked thread shows what I mean.

If you try this approach please be so kind to share back your feedback if this works for the benefit of the community.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .