A MERGE statement needs more than a matching key. If several source rows match one target row, an update can become nondeterministic or fail, depending on account settings and the matched actions. Choose one source row per key before publishing profile changes. A complete timestamp and tie-breaker rule makes that choice repeatable.
Audit the feed first. Count repeated customer keys and compare deduplicated source keys with the target to see which rows will insert. Then apply the merge to a sandbox clone so you can inspect its effect without changing the sales source. Rerunning the same feed should leave the stored values unchanged. That is an idempotent load: retries don't create another customer row.