I recently received a request from a customer who was trying to update a person's email address via the API. He was trying to use the Create and Update Lead API, and because the lead had a new email address, he was getting a duplicate person record created with the new email address. What he wanted was to update the existing Person record with the new email address instead.
Since I have had this question a few times, I thought it would be helpful to write a blog post about it. The steps to follow are below, but...spoiler alert....the answer is to use the Sync Leads Using Post endpoint instead.
In order to update the right Person record, I'll need the Marketo Person ID for that person. I can get that using the Get Leads By Filter Type endpoint like this:
Once I have the id of the Person record, I can call the Sync Leads Using Post endpoint to update that record. As you can see from the screenshot below, I’m passing in an action of “updateOnly” and “id” for the “lookupField” value. Then I can pass the information in the “input” that I want to be updated; namely email in this case.
To verify that the email address was changed, I can make the Get Leads By Filter Type call again and pass the new email address.
Finally, there are several ways to get the person id that you’ll need to do this with. You can either do a Bulk Lead Export if there are a lot of them or you can call Get Leads by Filter Type if it's a one-off, and you need to look it up by email address.