What's the best practice to sync an existing Marketo instance to a brand new SFDC instance? It is ideal to keep all the Marketo history and data, but we don't want duplicates in SFDC or Marketo.
This is a complex situation. In Marketo, your existing leads have been there for a while and have their whole activity log attached to them. You probably do no want to delete them because you care about this activity log, all the capability it gives you to target based on passed behavior.
But Marketo will not deduplicate what is arriving from SFDC. So 2 solutions here:
Another key point will to avoid existence of duplicate columns as well. You may have created fields in Marketo, that correspond to fields in SFDC. When you will be setting the sync, these 2 fields will NOT be merged. ou will have to remove all usage of the Marketo only fields (from any smart list, smart campaign or form) and then hide them, and then ask Marketo support to remove them from your user interface.
I agree with Greg, and just to reinforce, if this is a truly new SFDC instance, then your best choice is to allow Marketo to be the source of the data. Sync over the new leads from Marketo into SFDC instead of doing a dataload or any other method. This will preserve the connection between Marketo and SFDC records and avoid duplication.
Your Marketo custom fields will be an issue. Marketo support can do a remapping so that you can merge your existing Marketo field with a new Salesforce field without needing to remove all field references, but they will only do this for up to 10 fields for free. Beyond that you will need to contact Marketo professional services and do the remapping for a fee.
Depending on how these fields are in use it may be worth while to go this route, as opposed to removing your fields from every smart campaign and asset that references them (may be in the hundreds) and then moving all your data into the new fields and rebuilding all your smart campaigns and assets.