It’s really common for orgs to reach a point where their marketing automation is dying from a thousand paper cuts. Chances are the original architecture made sense when the org was smaller. But the more martech, enrichment, and BI tools you add – and the longer the lineage of admins – the more unreliable everything gets. Soon there are so many fields and dependencies that the Marketo <> Salesforce parallel processing gets… monstrous. And as multiple systems try to update records at the same time (AKA parallel processing), they start to override each other. UTMs disappear. MQLs revert. MQLs get routed and rerouted. It sucks.
If you’re relating to these woes, consider this your call to arms: stop band-aiding and ditch Marketo <> Salesforce parallel processing. Here’s how we rearchitect the order of operations in Marketo vs. Salesforce, and ensure Marketo is done processing before Leads are sent to Salesforce.
>> Related: 8 Lead Management Process Samples <<
In this post:
Risk factors
Not every org is vulnerable to inconsistencies from Marketo <> Salesforce parallel processing. Here are the risk factors:
You’re using Marketo
This is definitely Marketo-specific because most MAPs don’t let you sync directly to the Salesforce campaign member.
You’re only using Contacts
There are many pros/cons of using Salesforce Leads vs. Contacts, but a messy order-of-operations is definitely a con to the Contact-only model.
Marketo has a bit of a brain fart™️ when Leads are converted to Contacts in the first transaction with Salesforce. An example is when lifecycle information (like the funnel stage) is managed in Marketo:
- A new Lead syncs to Salesforce and gets converted to a Contact. All before Marketo finishes processing the funnel stage to “MQL”.
- Salesforce defaults the Contact to “Known”.
- After Marketo finishes processing the MQL stage, it gets “new information” from Salesforce: this Contact is now “Known.”
- Marketo updates “MQL” to “Known”. And now what should have been an MQL isn’t marked as one. 😭
You’re doing… a lot
Updating thousands of records at once? Flowing them through complex steps, enrichment, and routing? Either one can cause problems, and both combined can aggravate it.
No one’s QAing
Systems (and the humans that use them) are imperfect. Admins who build and review QA dashboards daily are simply better at preventing messes from accumulating. Here is the checklist we recommend >
You constantly change tools/processes
A big part of being an admin is thinking like an architect, not an order taker. Admins are on the hook for finding simple, elegant solutions. Which take a lot of time and consideration. When you relentlessly change processes or tools, “done is good enough” becomes the new [low] standard.
Early symptoms
Here are signs that you’re already needing to rearchitect how Marketo and Salesforce sync:
- Funnel stages rapidly “regress” when Contacts are created
- UTM attribution doesn’t reflect that latest campaign engagement
- Contacts are routed and re-routed
- You have to batch campaigns each night because Trigger campaigns consistently miss folks
How to rearchitect the order of operations
1. Process at scale in Marketo
If you’re using a Contact-only model, pull as much processing as possible into Marketo. Salesforce enforces governance limits on transaction volumes. So you only get a certain amount of processing time for every little update that you do. So the more you can deliver to Salesforce, the better.
The funnel is actually a good example: I typically have the MAP figure out what stage a person belongs in before sending to Salesforce. You don’t need to waste part of your Salesforce transaction processing time evaluating the lead score. Do all of that in the MAP.
Another example is normalizing data. If it’s not information that prevents a BDR from working an MQL, it can be managed by Marketo that night.
2. Sync to Salesforce via a Flow step
Instead of using the Marketo Program and SalesForce Campaign Sync at the program level, push data into Salesforce via a Flow step. And in that Flow step, use an executable campaign, not “request campaign” and not a wait step.
I don’t request campaigns or use wait steps in the MAP because they’re a proxy for, “wait until this thing is done.” But waiting for 5 minutes ≠ the processing has finished. It’s a weak cop out, and it gives false confidence in the architecture.
Sample order of operations between Marketo and Salesforce
What does “Okay, Marketo, do stuff then sync” look like in practice? Here’s a sample I made for a client: