Our current situation:
We have an existing Salesforce Org and Marketo instance that we’d like to connect with (ideally) the native CRM sync.
All the Salesforce Contacts also exist in Marketo with a Credit Application custom object to hold their application data. But these were not created using the sync, so the SFDC ID link has not been established. We were planning to establish that link by using email addresses to get SFDC IDs from Salesforce and use the REST API to find matching Marketo contacts by email address, but were told by support that SFDC ID is read only and can’t be accessed by API. I assume Marketo’s native sync uses the API in some way, so it must be some kind of user access issue...anyway.
Problems we’re concerned about:
- Contacts exist in both databases without SFDC ID link, SFDC ID can’t be added retroactively w/the API
- Marketo will create duplicate records in CRM (and vice versa) if not tied by SFDC ID; it will not match on email address.
- Some race scenarios can occur, particularly in bulk updating large numbers of Leads/Contacts (we have ~200k in Marketo).
- Much of our data is held in Marketo custom objects, which don’t seem to be accessible by the native sync.
Our plan before discovering we couldn’t access SFDC ID:
- Activate Sync to CRM/Marketo filter fields with default value Unchecked to prevent sync from initiating upon Lead/Contact creation in SF.
- Never sync new People from Marketo to Leads/Contacts in SF, only go from SF to Marketo. Anyone uploaded to Marketo will remain in Engagement programs until filling out an Application or Inquiry form, which will add them to SF and initiate downstream sync.
- When new Lead/Contact is created in SF, initiate search for existing Marketo persons by email address with REST API call. If match is found, update SFDC ID field with the ID from the SF record. If no match is found, create a new Marketo Person with the SFDC ID.
- Also update Marketo custom object data in this API call since that can't be handled by the native sync.
- Once connection is established by SFDC ID, check 'Sync to CRM' / 'Sync to Marketo' boxes and initiate sync.
- Cheer and be happy because we'll never have any duplicates and everything will run smoothly... right?
So far, wrong . Since we can’t access SFDC ID we’re basically back to a square one scenario in which we use our own custom Salesforce ID field to rebuild the native CRM sync using some crazy combination of Webhooks, custom feeds, and a comma delimited list of Marketo interesting moments created by a smart campaign in a custom field.
On a scale of ID10T - Genius, what do you think of this plan? Will it work? Is it malformed, unnecessary? Your insight and time in this matter is very much appreciated. Sanford or Gregoire: if you deem my lengthy post worthy of your feedback, please take it easy on me, it’s my first time . Just kidding, I can handle whatever you got!
Basically, you have an unique situation. To mitigate risk, invest in the resources to do thorough testing, i.e. set up a sandbox to sandbox replica of your current set up with a portion of your database and actually test your plan.
Hi Jay! Thanks for the response. We always seem to be stuck in unique situations in higher ed... We already have Marketo and Salesforce sandboxes in place that we use for all of our custom development. In general, are there any glaring weaknesses or potential pitfalls that you can identify in the plan? We have a very small team and lots of work so I'm hoping to avoid fruitless efforts if at all possible.