I have a journey that uses a Salesforce campaign as the entry event. This campaign has 7 statuses (Added, Sent, Opened, Clicked, Registered, Attended, and Not Attending). I’d like to track and update all these statuses, making them available for the sales team to see at any point.

When contacts/leads are added to the campaign from Salesforce, their status is set to Added. If they meet the criteria from a Decision Split in the journey, they will be sent an email and then a Campaign Member activity is used to update their status to Sent. After a Wait activity, if the email is opened, the status is updated again to Opened. The same process repeats for Clicked, and then again for Registered/Not Attending using a form on a CloudPage.

This all works as expected assuming the contact completes the engagement before the wait time. For example, if an open happens after the Wait activity, the status won’t update to Opened, and the same is true for all statuses.

Am I going about this the wrong way? Is it possible to track and update campaign member statuses throughout an entire journey no matter when the engagement occurs?

1 Answer 1


Unfortunately, there is no default way to achieve this in Journey Builder. However you could set up a workaround by creating an automation that queries the Click and Open data views. The update in Sales Cloud requires additional effort tough, as there is no neat way of using AMPscript in a script activity and not all HTTP-Methods are allowed in SSJS, so you cannot directly interact with the Sales Cloud API either. Possible options are:

  • Hacking a way to execute AMPscript (for example invoking a cloud page from the script activity, that in fact does the processing)
  • Building the update in Sales Cloud and query the Marketing Cloud Data Extension, that is populated by your queries

The ID of the send email activity's triggered sends change after emails are re-published or a new journey version is activated. Therefore you should query them using the JourneyActivity data view.

This is nowhere near an out-of-the-box solution, but as far as I know, the only solution currently.

Further information:

  • Thanks for your reply Markus. After a couple days trying to figure this out, I think I found a solution that will work. Journey Builder updates the Campaign Member immediately after the email invite to sent. AMPscript processes the rest when the email is opened, then clicked and finally a form is submitted on a landing page (CloudPage). A combination of Retrieve and Update functions depending on where the engagement takes place. Thanks again for your help!
    – Kyle Szabo
    Commented Mar 19, 2019 at 3:42
  • @KyleSzabo Just to let you know: Tracking an open won't work using AMPscript, as the code is interpreted on the Server at send time. So every send would be marked as opened as soon as it has been sent. However, the click tracking via code on the cloud page will work, if all relevant links lead to cloud pages. Commented Mar 19, 2019 at 11:25
  • You’re right! I was using Preview and Test in Marketing Cloud and watching the status change in Sales Cloud each time, not realizing this will process at the time of send. With the exception of Opened, every status update is working. I will have to experiment with your solution for opens and get back to you with the results. Thanks again!
    – Kyle Szabo
    Commented Mar 20, 2019 at 4:08
  • You are welcome! Glad I could help! :) Commented Mar 20, 2019 at 7:43

You must log in to answer this question.

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