You’ve just loaded a list from an event where you have multiple hot leads into your Marketo program and are anxious awaiting the sales team picking them up. And yet…a day later, or even longer, the leads still haven’t synced to Salesforce OR only some of the data has been picked up by your CRM.
You do all the usual troubleshooting — check your Marketo sync user’s password, look at your call limits…and yet you can’t seem to find an explanation.
You’re now having to get into the dredges of the Marketo to Salesforce sync, how the sync itself works, and a new (for most people) consideration of how to make syncing more efficient.
First off, let’s look at the behind-the-scenes work of the Marketo to Salesforce sync. Most of the time, you don’t notice syncing because it looks like magic, but really the native Salesforce sync in Marketo is just a built-out API integration. What this means really is that in order to optimize your Marketo to Salesforce sync speed, you have to understand how the API is actually working to push and pull data back and forth between the two systems.
When your database is at small sizes (generally under 100k leads), it’s pretty rare to run up against sync issues like this (unless something wonky happened like your SFDC-Marketo sync user credentials changed/expired). Once you start running into the API calls-per-day limit, you’ll start to notice delays. It’s important to understand that every time there is a value change on the SFDC or Marketo side, or a Marketo/SFDC campaign membership changes, or a lead is created, that requires a call between the two systems.
Understanding how to maximize the efficiency of your system requires detailed knowledge of how all of this is working.
API Call Efficiency between Marketo and Salesforce
The speed/efficiency of the sync depends on what kind of flow step you are using, or how you are looking to sync data. In terms of your choices for an initial lead sync, the following is true:
- “Sync lead to SFDC” is a 1:1 for API calls and is a very inefficient use of API calls.
- “Add lead to SFDC Campaign” is a 1:1 for API calls, and is a very inefficient use of API calls.
- A Marketo program/SFDC campaign sync batches all API calls that queue between sync cycles so it is very efficient. There’s a catch, though. We’ll get to that in a minute.
Timeliness of the Marketo to Salesforce sync
In addition to efficiency, you also have to worry about timeliness, which means when the sync is happening, how often, and how quickly.
- “Sync lead to SFDC” and “Add lead to SFDC Campaign” are both an immediate sync without a queue. When a lead runs through that flow step, the sync to SFDC happens.
- Marketo program/SFDC campaign sync happens through a queue every 7 (or so) minutes. You can actually see this in the Admin section of Marketo, where “Last time Salesforce was synced” is. While this happens every 7 (or so) minutes, there’s a set limit of campaign syncs happening with each call, and extra campaign syncs will be queued, waiting for a later program/campaign sync opportunity if there’s room next time.
So, Marketo program/SFDC campaign syncs are more API-call efficient, but you run into queueing bottlenecks faster, which means there isn’t a slam dunk solution for everyone as to how best to optimize the system. This type of sync is also more prone to silent errors – syncs not happening with no error logged.
Lead updates also happen every 5 (or so) minutes. That is, when you update a field value on a lead in Marketo, it’s checked against the System Mod date/time stamp (the record of when a field change was made) every time to see which record – the Marketo record or the Salesforce record – was updated more recently. The sync then pushes/pulls updates appropriately. This faces the same lead-value-change queueing problem as Marketo programs/SFDC campaigns.
What does this actually mean, then?
Again, there’s no single answer, but here are a few tips for certain common situations:
- If you’re running out of API calls on a daily basis, check and remove unnecessary “sync to SFDC” flow steps. You should also take steps to ensure that downstream processing is not causing leads to flow through multiple “sync to SFDC” flow steps unnecessarily. You can do this by requesting a “sync to SFDC” campaign/flow step once processing is complete and the lead is ready for handoff to the sales team.
- Check workflows on the SFDC side. If those workflows are updating lead/contact records frequently, every updated lead will add to the sync processing queue.
- Fields like, “Days since created” or “Date last updated” that result in daily lead field data value changes result in a resync of your entire database every day—at small database sizes, processes like this might not be a problem, but at 100k+, you’re looking at a backlog that is going to slow all API-sync related processes.
- Block field updates and/or remove Marketo sync user visibility for custom SFDC fields that no longer need to be referenced in Marketo. Marketo Support can provide a list of the most updated fields by volume of updates, which is a great place to start when auditing unnecessary synced fields.
Munchkin API—the API you never thought about.
Want to know what else is using your API? Munchkin tracking. Munchkin communicates with your database through API calls, but it’s seamless enough that you don’t know about it. What should you know about it if you’re having Marketo to Salesforce sync issues?
- “Visits web page” is the one piece that constantly ends up being a “my Marketo activity is being really slow for some reason” gotcha—if you have lots of web activity on your website (I’d consider around 80k sessions per day to be “lots”), your “web activity” ends up queueing. If you’re running triggers off of “visits web page,” it is going to be too noisy to be reliable for timely actions. With large-volume websites, I pretty consistently see this delayed by multiple hours before “visits web page” shows up in a lead’s activity log. This is considered a more “noisy” activity. Imagine if each session consists of 1.5 page visits, that’s 160k activities to be logged. (Then spread that out over business hours, so around 16k page visits per hour.) That’s a ton of activity to log.
- “Fills out Form” is an activity that is more reliable and timely for triggering and showing up in Marketo. If you have 100k visitors per day, and 7 out of 100 fills out a form (a desirable form conversion rate, and probably an exaggeration for actual traffic numbers), you only have 7k form fills per day. With the same business-hour spread, that’s around 700 form fills per hour.
You can see this intuitively makes sense if you imagine that each Marketo Munchkin action is just a big team of interns in a room typing in separate actions into each of your leads’ Activity Logs—when you only have a few hundred visitors per day, your intern team can type fast enough that you don’t notice. But when you have tens of thousands of web visits per day, and each visitor visits something like 10 pages per visit, you’re going to overwhelm that intern team. In the example above, you’d be picking between working at 700 activities per hour (form fills) versus 16,000 activities per hour (web page visits).
So, what is up with the Marketo to Salesforce sync?!?
Marketo to Salesforce sync problems could be any of the above. When you’re on the upper end of database size (400k+ of inbound leads—if you’re doing list purchases a lot, you can deal with a larger database with fewer problems, because you have a significantly lower percentage of leads actually active… also shame on you for doing that much list-purchasing), you’re reaching the right side of the bell curve for Marketo database sizes. You’ll have to tweak what you’re doing to play into existing efficiencies to get the performance you need.
If you are still wondering how you can make your API calls to Salesforce more efficient, or more about how the Marketo to Salesforce sync works, contact us or schedule time with one of our consultants.