Deep Dive into the Update Contact Activity and Data Binding


On September 24th, 2024, I had the pleasure to deliver a session for Journey Builder Deep Dive series created by Salesforce Marketer Group (Marketing Cloud), Phoenix, US.

Here’s the recording of the session where you will find:

  • an exploration of the inner working of the Update Contact activity in Journey Builder
  • an explanation what data binding is and what values it allows to capture
  • trying out two different approaches to creating advanced journey logs (one of them ends in failure)

The Recording


The Slide Deck


Data Binding Expressions

Data Binding SyntaxDescription
{{Contact.Key}}The Subscriber / Contact key
{{InteractionDefaults.MobileNumber}}Default mobile number for this Journey Builder. This is set from Journey settings menu; this can be a phone number attribute from entry source or mobile number attribute from contacts
{{InteractionDefaults.Email}}Default email address for this Journey Builder. This is set from Journey settings menu; this can be an email attribute from entry source or email attribute from contacts
{{Contact.Attribute.“AttributeSet Name”.“Attribute Name”}}Value for contact attribute; this is found from data designer when we link data extension to contacts
{{Contact.Default.Twitter}}Default Twitter handle for contact
{{Contact.Default.Facebook}}Default Facebook address for contact
{{Contact.Default.SMS}}Default SMS address for contact
{{Interaction.{ActivityCustomerKey}.{OutArgumentName}}}Out argument from other journey builder activity
{{Context.PublicationId}}Version of the journey
{{Context.DefinitionId}}Definition of the journey
{{Context.DefinitionInstanceId}}Each time a contact runs through the engine, the engine creates a unique ID
{{Context.VersionNumber}}Version of the journey
{{Event.{my-custom-entry-event-key}.{field-name}}}Event field value
{{Event}}See what’s inside the journey snapshot

Three strings stand out for me are and really game changers:

  • {{Contact.Key}} with {{Context.DefinitionInstanceId}} allows you to build a unique row ID for your journey logging needs
  • {{Event}} allows us to peer into what’s contained in the journey data snapshot that’s frozen in time for the entire journey run

Key Takeaways

The Update Contact Activity

  • It can’t run Ampscript
    • This limits our options for the logged data and prevents us from generating  random IDs
  • The Subscriber Relationship acts like a hidden Primary Key
    • You don’t have to configure it for the field selected in the relationship explicitly – the activity takes care of that automatically
    • Using this we can populate up to 6 columns in a DE
      • 5 values defined explicitly in the activity + the Subscriber Key
    • Other Primary Keys are ignored
  • Hard Errors in the Activity eject customers from the journey
    • Test every use case before going on live

Data Binding

  • We can grab the following types of data:
    • Journey Data
      • {{Event}}
      • {{Event.{my-custom-entry-event-key}.{field-name}}}
    • Contact Data from Attributes
      • {{Contact.Key}}
      • {{Contact.Attribute.“AttributeSet Name”.“Attribute Name”}}
    • Journey Context Data
      • {{Context.DefinitionInstanceId}}
  • We can use multiple Data Binding expressions in one field allowing us to push even more data into data extension or Salesforce objects, for example:
    • {{Contact.Key}}#{{Context.DefinitionInstanceId}}
    • {{Context.VersionNumber}}@{{Context.DefinitionId}}
  • It also allows us to grab IDs of SF records we are creating/updating when you place the update contact activity after your Salesforce object activity of choice