First, for clarity in later searches, let's use the term "enriching" rather than "appending" here. Of course, I know that what you mean is populating data values in full via a web service, but literally "appending" to data fields (as in concatenating new values with old values, instead of overwriting) is another area of interest.
As you've noticed, directly calling a "dumb" webhook service can result in some data management headaches.
There are 2 ways to deal with what you're describing:
- Write the webhook results to proxy fields (i.e. not the primary/production fields). Then trigger on Change Data Value and apply Flow-based logic to determine whether to update the primary fields. It seems like that's what you meant by "IF statement" but you didn't show what you'd tried. The problem with this approach is you need a separate proxy field for every field you want to conditionally update, which can lead to errors (and certainly leads to cosmetic clutter).
- Use a more intelligent webhook engine in-between. You pass that webhook the current value of the fields together with the logic for when/what to update. That engine relays the call to the external service and pre-processes the results, only passing back filtered data. This is, naturally, the way we do it.