Text

  • MSI Non-Native feature enabled in order to expose the proper external fields for non-native CRM sync.
  • A Salesforce account with MSI Package set-up.
  • Marketo REST API successfully set up. The exposed CRUD APIs will be the basis of performing the non-native sync.
  • Read this blog post in order to get an understanding of the object and relationships.
  • Set up Salesforce objects to display the 18 character case-insensitive globally unique identifier rather than the 15 character case-sensitive globally unique identifier.

The REST API Configuration in the Marketo MSI Admin Panel cannot be used for the Non-Native sync.

Successful non-native sync for MSI requires the following

Sync the Salesforce Sales User to Marketo.

The Salesforce Sales User is an external user that owns the Leads/Contacts in Salesforce. A Marketo Sales Person needs to be upserted for the Salesforce Sales User. The externalSalesPersonId field is mandated for the upsert of the Sales Person.

Marketo Sales Person FieldSalesforce Sales User FieldDescription
externalSalesPersonIdSalesforce Sales User case-insensitive globally unique identifier

Identifies the Marketo Sales Person record to an external Salesforce Sales User object.

It's mandated that the Sales Person be synced first before syncing the other objects so that the proper relationships will be created.


API documentation for Sales Person: https://developers.marketo.com/rest-api/lead-database/sales-persons/
API documentation for syncing the Sales Person: https://developers.marketo.com/rest-api/endpoint-reference/lead-database-endpoint-reference/#!/Sales_Persons/syncSalesPersonsUsingPOST

Sync the Salesforce Accounts to Marketo.

A Marketo Company will need to be upserted for the Salesforce Account. The externalCompanyId and externalSalesPersonId fields are mandated for the upsert of the Company.

Marketo Company FieldSalesforce Account FieldDescription
externalCompanyIdSalesforce Account case-insensitive globally unique identifierIdentifies a Marketo Company record to an external Salesforce Account object.
externalSalesPersonIdSalesforce Sales User case-insensitive globally unique identifierIdentifies a Marketo Company record to an external Salesforce Sales User object who is the Account owner.

Also used within Marketo to associate the Company to the Sales Person who owns the Company record. It is mandated to have the Sales Person synced first before setting this field.


API documentation for Companies: 
https://developers.marketo.com/rest-api/lead-database/companies/
API documentation for syncing Companies: https://developers.marketo.com/rest-api/endpoint-reference/lead-database-endpoint-reference/#!/Companies/syncCompaniesUsingPOST

Sync the Salesforce Leads/Contacts to Marketo.

You will need to upsert a Marketo Lead for the Salesforce Lead/Contact. The externalPersonId, externalSalesPersonId, and externalCompanyId fields are mandated for the upsert of the Lead.

Marketo Lead FieldSalesforce Lead/Contact FieldDescription
externalPersonIdSalesforce Lead/Contact case-insensitive globally unique identifierIdentifies the Marketo Lead record to an external Salesforce Lead/Contact object.

This is a new field that is introduced for MSI Non-Native.
externalSalesPersonIdSalesforce Sales User case-insensitive globally unique identifierIdentifies the external Salesforce Sales User object who owns this Lead/Contact.

Also relates the Lead with the Sales Person in Marketo. It is mandated to have the Sales Person correctly synced first.
externalCompanyIdSalesforce Account case-insensitive globally unique identifierIdentifies the external Salesforce Account object that the Lead/Contact belongs to.

Also relates the lead record to a Company in Marketo. It is mandated that the Salesforce Account be correctly synced first.


API documentation for Leads is provided here: 
https://developers.marketo.com/rest-api/lead-database/leads/
API documentation for syncing Leads: https://developers.marketo.com/rest-api/endpoint-reference/lead-database-endpoint-reference/#!/Leads/syncLeadUsingPOST

Sync Salesforce Contact Roles to Marketo.

Salesforce Contact Roles for a Salesforce Opportunity can be then synced via the Marketo Opportunity Role. The Opportunity Role record mandates the externalOpportunityId, role, and leadId fields.





Marketo Opportunity Role FieldSalesforce Contact Role FieldDescription
externalOpportunityIdSalesforce Opportunity case-insensitive globally unique identifierIdentifies the Marketo Opportunity Role to an external Salesforce Opportunity object.

It is mandated that the Salesforce Opportunity be correctly synced first.
leadIdN/A, this would be a Marketo Lead IDThis would be the Marketo Lead ID of the synced Salesforce Contact.

Once the contact is synced in Marketo, you can use the Salesforce Contact case-insensitive globally unique identifier as the externalPersonId and query for the Marketo Lead using the Marketo REST API.
roleThe Role field for the Salesforce ContactDescribes the role of the contact for this opportunity.


API documentation for Opportunity: https://developers.marketo.com/rest-api/lead-database/opportunities/
API documentation for syncing Opportunities: https://developers.marketo.com/rest-api/endpoint-reference/lead-database-endpoint-reference/#!/Opportunities/syncOpportunitiesUsingPOST