UTM data is intentionally transferred to Engagement records rather than being stored permanently on Leads and Contacts to ensure data integrity and accurate attribution tracking.
How the Process Works:
When UTMs are written in the Processing fields on Leads and Contacts, the system creates an Engagement record with those values, and they are removed from the Lead or Contact.
The UTMs are then accessible on the related Engagement record.
Here’s why:
Leveraging Existing Integration Points
Our system writes UTM data first to Leads and Contacts on the way to the Engagement object rather than directly to the Engagement object because external systems like marketing automation platforms already write to Leads and Contacts in attribution events like web form submissions and list uploads, so we piggyback on those existing processes to pass the UTM data. This also allows the code in Salesforce to determine how the Engagement records are created rather than an external integration.
Ensuring Data Integrity
Attribution data is controlled by the Engagement object in Salesforce following the principle that only one object should control a given type of information. This data can be accessed through relationships between objects. Thus, Leads and Contacts don’t store UTMs. They instead have relationships with Engagements, which store this info.
Each Lead or Contact can have multiple Engagements over time. Our system decides which Engagements should be used for reporting and how they are processed based on the states of Leads and Contacts at key moments. So we want to ensure users get their information from those Engagements, not necessarily the latest Engagement.
Ensuring Each Engagement Only Contains Info About One Interaction
Lastly, we want to ensure that all the UTMs on a given Engagement record represent the same interaction. For example, let’s say that a Lead is first created from a web form with complete UTM data and then later updated again through a trade show list import with only partial UTM data. If we didn't clear the values in the Lead/Contact Processing fields each time, we'd end up with the second Engagement record with some UTMs from the list upload but others from the prior form submission.
For these reasons, UTM values are only temporarily stored in the Processing fields on Leads and Contacts while being transferred to the Engagement object, after which they are cleared from the Lead/Contact record. This ensures data integrity and accurate attribution tracking.
If it would be helpful to have access to these values for troubleshooting purposes, simply add history tracking to the desired fields.
See also the Processing, RAW, and Reporting Fields article.