Right now, when a person is created, we call a web hook that sends the person over to a database cleansing / sourcing solution. If that third party finds a match, they return the updated and normalized information over to Marketo where we map their fields to ours. But when they don't find a match, they return blank values, and Marketo is then nullifying the original values.
Shouldn't the web hook only update the value if it returns a response? Or am I missing something?
In the lead record activity log:
Actual web hook call and response:
This behavior has actually changed over time in Marketo. But the way it works now is the way I'd expect it to work -- why shouldn't an empty string in the response result in setting the field to, well, an empty string? (Marketo calls it [null] but it's not a real ANSI NULL here, it's the same thing you get if you change the field to blank in the UI.) If it didn't do this, then you wouldn't be able to blank a field from a webhook.
The 3rd party isn't doing being semantically accurate IMO. If they don't have a value, they shouldn't include the property in the response at all. Otherwise there's no choice but to treat "" as a value.