Getting 1007 error through API createOrUpdate
We have a third-party form on our branded site that is being submitted to Marketo via the REST API using createOrUpdate. We are getting this error fairly often:
result":[{"status":"skipped","reasons":[{"code":"1007","message":"Multiple lead match lookup criteria"}]}],"success":true}
As a result we aren't getting inquiries captured in Marketo (and eventually over into SFDC). We are using the email address as the matching criteria since these forms are how our customers can provide updates to us as well as prospects can make inquiries (we can't stop users from using the forms however it suites them). And we can't reasonably expect to have no duplicate emails.
Currently, the form is capturing all the inputs in custom fields (except for email) and we have an automation that copies the values from the custom fields into the standard fields (for example, submission_firstname >> first name) only if the standard fields are empty (so we don't overwrite existing values from previous form submissions or--more importantly from updates in SFDC). The custom fields from the form submission are then used to populate the description field in a task in SFDC so the actual form submission is captured as a unique record along with the corresponding values.
We need to solve the 1007 error and from what I gathered from Support and based on experience we have a couple of options:
1. Migrate off the API call to a rePOST to a Marketo form (since form POSTs auto-merge). I know this is no longer officially supported by Marketo, though I did have it unofficially recommended to me by another Support person. In a previous life I have leveraged this option.
2. Migrate off the API call and use the Javascript form submission on the page to rePOST the form (officially supported by Marketo)
3. Continue with the API route and when receiving 1007 call the API merge POST using one of the existing matches to merge the new form submission against.
I have spoken to our developer regarding 1 and 2 and their concern is the lack of descriptive return codes. I believe there are only there supported in the rePOST route: 200 - Success; 404 - Error; 429 - Exceeded Limit. They would prefer sticking with the API route (not that I can blame them).
Anyone have come across this scenario and have a recommended solution/experience they can share?
Thanks!
-mark