Often in Marketing Operations, we’ll get inquiries from Salesforce Users or the admin team asking why the Marketing Automation Platform (MAP) user, -Marketo, Pardot, Eloqua, HubSpot, etc.–is changing a tracked field or updating some record that isn’t related to Marketing, and possibly something the MAP shouldn’t even have access to. To add to the confusion, if that field is synced to the MAP, but not updated by it, you’ll see that change, in your MAP, as coming from Salesforce. You may be scratching your head as to how this can be possible with both systems pointing fingers at one another.
Why does this happen in the systems?
The short answer is: Automation in Salesforce executes activity on behalf of the marketing integration sync User, making it appear that the MAP user updated that field/record directly when it has not.
For the longer answer, let’s talk about transactions.
A transaction is a “set of operations that are executed as a single unit”. This means that all of those operations execute on behalf of the User who initiated the transaction. Additionally, if any of those operations encounter an error, the entire transaction is rolled back (usually), and any updates are not committed to the database. You’ll see these crop up in the MAP in your Sync Errors. In the context of Salesforce specifically, you can read about the types of operations that execute as part of a transaction, and in what order, here. If you want to get into the technical nitty-gritty, you can read why this concept is critical for modern software here, but I’ll skip straight to an example.
Let’s say you’re using Marketo as your MAP, which doesn’t edit Accounts directly (sync is one-way only) and you have a Flow in Salesforce that updates Accounts when related Contacts are updated to meet certain conditions (e.g. update Account Status = Qualified when a Contact MQLs). Because Marketo pushes the update to the Contact to set Contact Status = MQL, the Flow updates the Account Status, and (if Account Status is a tracked field), you would see Marketo Sync User changed Account Status from Prospect to Qualified. In this scenario, you’d also see that the sync User is the Last Modified By on the Account.
Okay…How do I track what is updating this field?
Identifying which automation is updating a particular field in Salesforce can often be difficult to pin down, but a good place to start is the “Where is this used?” button for custom fields. If that doesn’t help you identify it, you can also enable Debug Logs for the sync User to get even more detail. Of course, start with the Activity Log in your MAP to confirm that you aren’t directly making the change in the MAP, and then communicate with your team that there is automation in Salesforce executing on behalf of the sync User causing the update in question. You also might need to modify the firing conditions for said automation if the update is occurring in error.
In summary, no, you’re not going crazy.
This is common and expected behavior for Salesforce and the MAP to sometimes have conflicting opinions on which system is causing data to change. Knowing how Salesforce transactions work can help you explain both why this is happening, and potentially prevent similar incidents from occurring in the future.
Want to read more? Check out this blog on a similar topic: Top Three Marketo Troubleshooting Asks I Get From Clients