I am not the first come across this situation, there does not seem to be any SFMC best practice, so i am looking for some ideas.
New instance set up. We are using the Marketing Cloud connector to inject SFDC Leads and SFDC Contacts into their own journeys in real time based on CRM attributes changes.
It looks to me like this creates 2 'MC contacts' in the SFMC, the 'lead' and the 'contact' have different _cusomterkeys in the sync tables. They are connected by a converetedContactID, but still this feels very wrong and I assume will impact both our 360 view, reporting, and cost (as there is a SFMC contact record limit in contract).
Has one found a solution or best practice for handing this?
Best Answer
Yes.
Salesforce themselves (a detail which might really help making a case at a customer) have put out the following:
https://help.salesforce.com/articleView?id=cross_cloud_marketing_commerce_kit_engagement_models.htm&type=5
Which officially deals with retail, but tackles the general problem of leads vs. contacts and Marketing Cloud quite well. This applies to many B2C contexts, but can even drive conversations in b2c.
In essence the approach is this: Model a contact record type that does what leads are supposed to do, and use that instead of the Lead. If the Sales Cloud already makes heavy use of leads, then you would try and "convert" to such a model before Marketing Cloud is put into the picture. Make Marketing Cloud only deal with Contacts, even if Leads are in the Sales Cloud system.
One little thing to achieve this is creating a custom boolean field on the Lead Object which says "synch to marketing cloud == false" for all leads by default, then use it in the data stream's boolean filter for Lead: 'Synch all records where "synch to marketing cloud == true"'
Thus you'll have 0 leads but fulfil the technical requirement that "lead object has to be synched".
Here is the most relevant part from the document as a quote. Pages 12-13:
...