How does Marketo see and pull data from Salesforce Formula Fields? | Community
Skip to main content
December 8, 2014

How does Marketo see and pull data from Salesforce Formula Fields?

  • December 8, 2014
  • 11 replies
  • 8653 views

Marketo has the ability to see and pull data from Salesforce Formula fields, there is however a catch which will be explained in this article.

 

Everytime the Marketo Sync connects to Salesforce it will scan records and look at the "SytemModStamp" (salesforce system field) for each one of them. It will compare this value with the stored value, which was pulled at the last scheduled sync. If the values match, Marketo will move on to the next record. If the values are different (new value later date than previous value), then Marketo will do a compare and contrast of all fields on that record in both systems and update the information as needed.

 

When a normal non-formula field is updated and changed on a Lead/Contact record in SFDC, the SytemModStamp value is updated. This is how on next sync Marketo knows to do a compare/contrast check and pull updates. Formula fields do not behave the same way. A formula field is calculated based on data in fields called upon in the formula; this means that the formula field calculation itself will not update the SytemModStamp in Salesforce.

 

Chances are you already have existing records in SFDC and Marketo. If you were to create a formula field today in your instance of SFDC and have it sync down into Marketo, the data calculated for the formula field in SFDC will not come into Marketo right away. The reason for this is, the formula field has created data based on already existing data, this does not result in a SytemModStamp change.

 

Typically formula fields will be a calculation of data from fields which are somehow related to the lead/contact record. This means that moving forward, any change in the normal field, will result in a SytemModStamp change as well as a recalculation of the formula field. In this case, Marketo will see the updated SytemModStamp due to the normal field change. Marketo will do the compare/contrast excercise and find that the formula field also needs updating.

 

If you create a formula field in SFDC and would like to have all the historical data for the formula field to come into Marketo, you can force an update on the records in SFDC to update the SytemModStamp. This way, on next sync, Marketo will see the formula data and pull it in. Alternatively, you can simply allow for natural SytemModStamp updates in SFDC to occur which should result in a slow trickle of historical data from SFDC into Marketo for the newly created formula field.

 

You can only use data from a formula field in Marketo to segment data and filter. If you try to do a change data value, Marketo will accept the change, tries to sync it to Salesforce and fails to update there. Eventually the Salesforce calculated value will come back into Marketo.

Is this article helpful ?

YesNo


This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.

11 replies

September 3, 2015

Another note on Salesforce formulas in Marketo: Use them sparingly to conserve API usage.

We were having problems with massive API usage a few months ago, and contacted Marketo support. After some troubleshooting, I was informed that Salesforce formulas require Marketo to query Salesforce for each value separately. We hid most of our formulas from Marketo, and our API usage returned to more acceptable levels.

November 10, 2015

If I am reading this correctly, it tells me I have to do an edit/save action on every lead record in my system in order for the change I just made to my formula field to show up correctly.  That is completely impractical.  Please tell me there is another way.

December 10, 2015

Hi Steve, you're able to do a mass impact of all records in Salesforce using a tool like data loader or DemandTools. Your Salesforce admin should be able to help you here.

Grégoire_Miche2
Level 10
January 26, 2016

The tactics to use in conjunction with Formula fields is to create a "force update" text field on leads, contacts and accounts. Just hide it from users, except from admins.

When you update a formula field or create one, just use a tool such as the ones listed above. We also use Enabler4Excel (very convenient) to set a value (any value) to this field. This will cause the refresh of values to Marketo.

You can update that field from SFDC (Data loader, for instance) or from Marketo.

-Greg

Level 4
May 26, 2016

This is massively useful info! We track 40 different category scores and want to find the highest category name and highest category score for segmentation. We currently use a webhook to do this, but I was pondering if it was better to use Salesforce sync with a formula for this and it sounds like a definite no! Plus we save a ton of columns on our Salesforce object.

September 16, 2016

I spent hours upon hours with Salesforce Process Builder, Workflow rules etc. And I finally found a good (and pretty simple) workaround for this that I thought I would share. Hopefully this will save someone many hours of testing! haha

In my scenario I needed to send out emails based on members who has a specific value in a text formula field on the Account Record in Salesforce. The issue as stated above was that formula fields do not trigger a System Modification (ie. Last Modified By field update). So the goal here is to have my SFDC Accounts update daily, therefore pushing all current data to Marketo for my Smart Campaigns to run. I was unable to get this to work with Process Builder or Workflows. (if have a developer you can achieve this with an apex triggers but I did not have that luxury) So I figured out how to accomplish this via Marketo.

INSTRUCTIONS

  1. In Salesforce, create a Date or Date/Time field on the Contact Record called "SystemModStamp".  Note: Even if your formula field is on the Account Record, you have to use a Contact field for the SystemModStamp in order for Marketo to "Sync Updates to SFDC" after the flow is complete. If you use an Account field, it will update the value in Marketo but not Salesforce. ( I learned this the hard way )
  2. Next, from Marketo, create a smart campaign.
  3. Under Status tab, be sure to set the Qualification Rules to "Run each lead through the campaign flow every time". Don't worry about your SFDC API limits, we will set up the frequency for this flow to run in the Schedule tab.
  4. For the SmartList, set up the filters for the records you'd like to update daily. I recommend being as specific as possible, again you don't want to max out your SFDC API limits.
  5. For the Flow, add a Change Data Value flow & Select your SystemModStamp date field
  6. Instead of choosing a date, enter the system token {{system.date}} for Date field or {{system.dateTime}} if you went with a Date/Time field type.
  7. Next, go to schedule and set up your recurring run. (make sure you test your campaign on 1 lead using "run now" before turing on)
  8. Give it about 5minutes and your field data will update Salesforce!

Good Luck!

Screenshot of my Smart Campaign Qualification Rules

Screenshot of my Smart List

Screenshot of my flow


Screenshot of My Schedule

Screenshot of my Results in Marketo

Screenshot of my Results in Salesforce

September 20, 2016

Thanks, Amy! This is a nice workaround to force Marketo to sync certain records.

It may also be worthwhile to add the custom field to the Lead object in Salesforce as well, in case you need to refresh those records too.

Grégoire_Miche2
Level 10
September 21, 2016

Vote here:

-Greg

February 23, 2017

Voted!

April 18, 2017

Thank you, @Amy Coplen​! Can you confirm if this would trigger a formula field on a related case to update as well? I'm trying to target based on Case Age (a Formula Number showing how many days old) on cases related to the Contact, but those formula values don't seem to be updating in Marketo. Thanks for your advice!

~Maggie