No easy answer on this. Marketo does not interact well with the GUIDs which are basically database Foreign Keys. What we have done is build a workaround solution in MSD. We created a text field for each Lookup field then have a workflow in CRM that converts the lookup value to a text value. The limitation you will have is Marketo does not update content on closed Records (e.g. Qualified Leads and Closed Won Opps). This fix will only work on open records and new records that you create going forward. You could in theory reopen, run the workflow and then close the Leads and Opps in MSD. There are ramifications in MSD reopening and closing records and this would also create a lot of Marketo synchronizations. We did not reopen any records. The testing I performed on automated record reopening and closing confirmed data integrity issues in MSD and Marketo. Let me know what you apply as a solution.
There is a method to have a paid Marketo Consultant build a custom solution for you but even Marketo recommends using the CRM as a workaround.
MSD 2016 Online
Marketo API with custom websites for Lead Forms
That's a great workaround that I didn't thought about. So how do you get the Text value from a lookup field on CRM?
I can do that while I figure out how to finish the Webhook.
this is in fact the way this is done in SFDC, excepted that in SFDC, whatever the status of the record, you can always update it, unless one has create some specific rules to prevent it (and even these rules can be overridden).
In SFDC, you may use either workflow/trigger-updated field or formula fields. Formula fields are even simpler to implement, but have the drawback that any update in the lookup record does not fire an update in the source record, and if it's not updated, then the new value is not sync'ed in Marketo. But formula fields are good enough when the lookup field is almost never updated, such as users (people do not usually change names).
Would the same be possible in MSD?