Beware Marketo <> Salesforce Parallel Processing with a Contact-Only Model

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 <<

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:

  1. A new Lead syncs to Salesforce and gets converted to a Contact.  All before Marketo finishes processing the funnel stage to “MQL”.
  2. Salesforce defaults the Contact to “Known”.
  3. After Marketo finishes processing the MQL stage, it gets “new information” from Salesforce:  this Contact is now “Known.”
  4. 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 campaignnot “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:

Within your original processing program:
  1. Person is Created
    1. do stuff
    2. do stuff
    3. sync to SFDC
Within your content program:
  1. Fills Out Form
    1. do stuff
    2. do stuff (scoring, executable campaign in centralized scoring program)
    3. Add to List (done scoring)
    4. If existing, add to campaign, else do nothing
    5. Remove from List
  2. Sales Insight Changes (you can use any field that gets populated once a record is synced, but I like to use this one. Fun fact: SFDC Type does change, but you do NOT get a DVC trigger for it 😭) AND Filled Out that Form
    1. Add to Campaign
    2. Remove from List

 

Sponge.io | Marketing and Revenue Ops

Get a System Audit

Whether you inherited a new instance or just want a second opinion, we'll dive in and benchmark your tech stack.

  • This field is hidden when viewing the form
  • This field is hidden when viewing the form
  • This field is hidden when viewing the form
  • This field is hidden when viewing the form
  • This field is hidden when viewing the form

Sponge.io | Marketing and Revenue Ops

Download Resource

Use this form to recieve your free resource in your inbox today!