No, you do not need to add a “Wait” after “Change Data Value” to use the new value

Saw this rumor resurface on another blog last week and felt like correcting the record. (Though it feels like it won’t be the last time!)

You may have heard a Change Data Value flow step is not guaranteed to complete — i.e. to commit its changes fully to Marketo’s backend database — by the time the next step runs in the Smart Campaign. This leads to people introducing arbitrarily long, and indeed unnecessary, Wait steps.

This rumor is false. Change Data Value is always complete by the time subsequent steps read the value. You don’t need a Wait.

It’s also impossible for Change Data Value steps to fire out of order within the same Smart Campaign. (Really just another way of stating the above.)

  • Say you CDV the First Name field to the value “Bartholomew” in flow step #1.
  • Then you CDV the First Name field to the value “Bart” in flow step #2.
  • Then you CDV the Notes field to the value “{{Lead.First Name}} in step #3.
  • Step #3 cannot accidentally/randomly set Notes to “Bartholomew.” It won’t happen, ever.

A visual example

At the risk of giving any more airtime to That Which Is Wrong™, these flow steps will always, 100% of the time result in the final value of Middle Name being “A B C D”:

No other outcome is possible — regardless of instance load, and regardless of what you’ve heard!

Potential sources of the rumor

I suspect that the rumor emerged from one or more of these sources (which are all true in their own right):

  • Database updates from a Call Webhook step are not guaranteed to complete by the time the next flow step fires. That’s why you should use a Webhook is Called or Data Value Changed trigger instead to make sure everything’s in order. But Call Webhook isn’t the same as Change Data Value.
  • Independent campaign runs for the same lead, if they start at roughly the same time, can each update the same field in an unpredictable order. But that’s not the same as Change Data Value steps in a single run. (And you can’t possibly solve that problem with a Wait, either.)
  • Marketo lazily processes form posts, so even when the Thank You URL is loaded, there’s no guarantee that the database has been updated with the recently posted values — the update can commit a few seconds to a few minutes later. But again, that’s not Change Data Value.
  • Adding field value filters to a Person is Created trigger will not work predictably, because Marketo doesn’t always commit the initial field values before firing the trigger. Vital knowledge, but doesn’t involve Change Data Value.