I was supporting an organization that relied on new leads being forwarded over to Sales in minute not hours or even days on the worst sync mishaps. Our customer base was the small business and if they were interested in our product, our Sales team was trained to show the value add proposition to them quickly. We had a sophisticated Marketing process that tracked organic searches, paid searches, web lead Markto forms, and interacted with our email blasts in Marketo by calculations created by internal data, persona, and 3rd party analytic tools to external partners.
Our database consisted of new leads being entered by both Sales in Salesforce and Markto by the Marketing efforts. However, we received inconsistent results with our sync process. Sometimes syncs ran 20 minutes. Sometimes syncs ran an hour or two. In worst case scenarios syncs ran up to eight hours.
Working with a team of experts in the Marketo space, my org was able to bring our sync time consistently under 10 minutes. I would like to share my story with you and how this journey with its pitfalls may help your Marketo to Salesforce sync optimization in your org.
1. Did your Marketing department convince you that the Marketo Sync user needed God rights on your CRM? Truth be told, this is incorrect. More to come on this later. Your Marketing sync user must not have Administrator or high level privileges. In fact it’s the complete opposite in my opinion and will hurt you in most cases.
2. Are your syncing a lot of formula fields? Formula fields in Salesforce don’t store data. So every time Marketo is trying to pull the data over, Salesforce needs to recalculate the formula to give over the value. A Marketo Architect told me to keep the number closer to 0, but 10 Max on the formula fields. It’s pretty simple, the more formula fields your syncing the longer the sync will take to provide the on demand values.
3. Our Marketo was pulling over all of our Finance records. This was the people responsible for paying the bills and many times were face contacts for distribution lists like firstname.lastname@example.org. In my Salesforce org, we have over 16,000 finance users which were updated every 24 hours. The Finance system was king for these records and the users were modified in a batch file update even if the phone number, email or name did not change. All 16k records were touched making Marketo sync these records.
NOW FOR THE FIX!
A. The first thing you should consider is to create a T/F flag on Leads and Contacts. You can call it Share with Marketo or Access Marketo / [Your company name Access Marketo]. Make your leads and contacts Private if they are Read/Write transfer or Read/Write. The reason we made our leads and contacts private we wanted to hide all the Leads from the Finance user that was updated every 24 hours even though the data did not change. This was also beneficial for any test user that had @[ourcompany].com. We used a workflow that updated the record if Owner was the Finance API user account then Share with Marketo = False. Otherwise Share with Marketo = True. This is a very powerful option. We had to dataload the existing data but the workflow took care of the records created moving forward. This Share with Marketo would go on to include other records we either wanted to share or hide from Marketo.
B. The next thing you do is check the Marketo Profile. It should only have the Objects that Marketo needs access to. In my case, Marketo was using the SF out of the box Administrator account. It had view all / modify all on all objects. This makes it easy for Marketing when they are trying to pull data or write to data from the Marketo side. However, it exposed all our Finance Objects and we ported over financial data like payments for our Support organization into Salesforce. Data Marketing never needed or should have access to. We had many custom objects as well storing sensitive in house system integration information. Once again very important to the organization but not needed for Marketing to prospects.
C. I mentioned earlier about formula fields. If you really need the data for Marketo like in our case we were doing some complicated MQL Marketing Qualified Lead and SQL Sales Qualified Lead scoring try to use a workflow, process builder or a trigger to enter the value via Salesforce. Simply put running a bunch of formulas during the sync will slow your process down.
D. Use Salesforce FLS (Field Level Security) on fields not needed on objects that need to be synced over to Marketo like the Leads and Opportunities. Your leads may have formula fields added by an AppExchange partner or your internal Administrator that should NOT be synced with Marketo. Hide it via FLS. If your not using it in your Marketing Efforts don’t push it over to Marketo. It keeps it cleaner for your Marketo Admins and Creative Specialist working on material anyway.
E. Hidden Secret – Marketo can allow multi-threading for your Marketo Sync. They don’t like to do this unless the customers are really big or experiencing real performance issues. On the Marketo side, the sync can broke into two parts to do multiple threads during the sync process. You would have to work through Marketo to get this done. We did not do this at our Org so I’m not too sure on the process. The Tier III engineer I spoke with at Dreamforce told me it can be done.
So this was our workflow:
My Marketo Admin Miguel and I sat in various conference rooms for over two weeks to fix our Marketo Sync issue that plagued the organization for over a year. We changed the sharing rule to private in our Sandbox and tested the desired results. We rolled our changes into production as listed above with the Share with Marketo true false flag. Using the Organizational Wide Defaults and Sharing rules we were able to hide the records we did not want to port over. We then removed all the objects that made no sense for Marketo to have and removed them in production. We then tackled the Formula fields. We removed all the formula fields not needed via Field Level Security. Interesting enough we had about 4 formula fields that had to stay and they were involved with the Marketing mailing calculations. These had to be recreated as number fields and updated via workflows/triggers as mentioned earlier. The most time consuming but necessary part was going field by field comparing the use via the Maketo field management tool and removing the Field Level Security in Salesforce to hide the fields from Marketo. After this exercise regardless if the lead came in via Marketing or the prospect dialed in via a phone call Marketo and Salesforce were always in sync.