We're injecting records into a journey using a Salesforce data event. I also want to advance the people in the journey based on updates that happen in Salesforce (e.g., as an Opportunity record advances through the sales process), but I can't figure out how to do that. I've read all the documentation I can find, but there doesn't seem to be a Journey Builder widget that will wait to be prompted by an event in Salesforce before continuing someone on a journey. At the moment, I'm completely stuck.

I'd greatly appreciate any advice or information on how I can make journeys event-driven in this way. Thanks very much!


There's no "Wait Until Event Takes Place" activity in Journey Builder. You can place a wait activity in your journey and test data from your contact model in decision splits that take place after your fixed wait activity completes, go down path A for "New" or path B for "Closed Won". But you can't "wait until" the Opportunity Stage changes and then make your decision.

The best way to think of a Journey Builder Interaction is the stream of activities that should be executed in response to an event taking place - there's essentially a one-to-one relationship between the event and the JB Interaction. The change in the stage of your opportunity constitutes an event. In your instance, you may have multiple events - change to Prospecting, Qualification (...) and Close Won. Each would likely have it's own Journey Builder Interaction that handles the change to the opportunity stage (the event).

Where your Journey Builder Interactions contain multiple steps, you'll likely want to use Exit Criteria within them to remove contacts from that Interaction where the comms are no longer pertinent. For example, you have a stream of communications to send to Contacts with Opportunities in the "Prospecting" stage. When the stage of the Opportunity changes to something other than "Prospecting", you'd like to remove them from this Journey and have another Interaction take over, say the JB Interaction you've created that handles the "stage updated to Negotiation/Review" event. To exit these contacts out of your Prospecting Interaction, ensure you use Contact Builder's Data Stream feature to sync the data you need in the contact model so that it's available to make that determination in your decisioning in the Interaction.

Note: If you're managing your sales funnel using Opportunities, by default there's no lookup field in that object to the Lead/Contact (Marketing Cloud "sendable objects"). There are lookups to sendable objects like the Opportunity Owner (User - not very useful). To get your Journeys reliably firing off changes to Opportunities, you'll need to create a custom lookup field in the Opportunity object and populate it with the Contact/Lead associated with the Opportunity using a Process/Trigger/Flow in Sales Cloud. Without doing this, you'll only be able to inject Contacts that have at least one opportunity in stage x and make decisions about Contacts that have at least one opportunity in stage y.


You need to have the Opportunity Object data syncs within marketing cloud before you can run in-journey decisions on SFDC data.

So what you need to do is go into contact builder and set-up the data sync with the SFDC object. Then within you journey, you can use a decision split to access this data and progress them through the different opportunity stages.

Once things to watch out for is how often your data syncs and at which point in the journey the event hits the decision split.

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.