Skip to main content

Customer data enrichment

Customer Data Enrichment Without Losing Identity in SFMC

How to separate stable match keys, known context, editable profile fields, and newly captured attributes in a Salesforce Marketing Cloud enrichment flow.

9 min read

By Published Last updated

Profile enrichment sounds like a simple update: show what is already known, ask for what is missing, and write the result back. The difficult part is preserving identity while some customer attributes are allowed to change. A reliable flow defines that boundary before it defines the questions.

Separate identity from profile data

The identifier used to match a response to a Marketing Cloud record should not automatically be treated as an ordinary editable answer. Salesforce models the relationship between a sendable Data Extension field and a subscriber field explicitly, and Journey Builder requires a contact key for journey entry. Those relationships are part of the activation model, not just form labels.

A person may need to correct an email address or phone number while the journey still needs a stable key to identify the original record. Keeping the match key separate allows the changed address to be captured as a proposed profile value without silently changing which customer the submission belongs to.

  • Stable identity: the value used to resolve and deliver the customer record.
  • Known context: attributes available to personalize or route the experience.
  • Editable profile data: known values the customer is allowed to correct.
  • New enrichment data: attributes not previously present or deliberately re-collected.

Use prefill to remove questions, not merely populate them

Prefilling every known value into an editable field still asks the customer to inspect information the organization already has. A better enrichment flow uses context to determine which questions are necessary, which values should be displayed for confirmation, and which should remain hidden but attached to the delivery contract.

The experience should also handle uncertainty. A missing value, a stale value, and a value the customer is not authorized to change are different states. Treating all three as an empty text box weakens both the interface and the resulting data.

  • Skip questions whose current values are trusted and irrelevant to the campaign goal.
  • Confirm high-impact values when recency matters more than reduced friction.
  • Lock or hide identity fields that must remain stable during the journey.
  • Explain why a sensitive attribute is requested when the purpose is not obvious.

Define blank, unchanged, corrected, and removed

An empty answer can mean several things: the customer never saw the question, chose not to answer, intentionally cleared an existing value, or encountered an interrupted journey. The destination mapping should not turn those meanings into the same database update.

For every editable known field, define whether omission preserves the current value and whether the interface supports an explicit clear action. For new attributes, distinguish optional non-response from a meaningful negative choice. These semantics should be captured in the form configuration and understood by downstream users.

  • Unchanged: retain the existing destination value.
  • Corrected: update the editable attribute while preserving the match key.
  • Removed: send an explicit clear instruction only when the model supports it.
  • Not answered: do not infer a preference or profile value from absence alone.

Choose the destination model before mapping fields

An enrichment flow can update a current profile row, append a response event, or do both. Updating current state makes the latest attributes immediately useful, while an append-only event can preserve when, where, and why the customer supplied them. The campaign and governance model determine which representation is required.

If the destination represents current state, upsert behavior needs a stable and validated key. If every enrichment response is an event, insertion needs its own unique response identifier. A hybrid design can deliver current attributes to one destination while retaining response evidence separately.

Do not activate drafts by accident

Autosaved progress can be operationally valuable, but it does not necessarily represent customer-approved profile state. Sending each partial answer directly into the final audience Data Extension can make an unfinished journey look complete and can overwrite valid attributes with incomplete input.

Keep draft state identifiable and separate from completed response delivery. If partial intent has a legitimate campaign use, map it to a destination and status designed for partial data rather than reusing the final activation contract.

Review the failure and retry contract

Store the completed response before attempting downstream delivery so a temporary Marketing Cloud or CloudPage failure does not erase submitted enrichment data. Operations then need enough delivery status to understand whether the customer completed the flow, whether the handoff succeeded, and whether retrying is safe.

An enrichment design is ready when a retry preserves the original identity and intent without creating a duplicate or applying a stale update to the wrong record.

  • Can the same completed response be delivered twice safely?
  • Which identifier connects the stored response to the Marketing Cloud record?
  • How is a corrected contact address distinguished from the stable match key?
  • What does support see when capture succeeds but activation fails?
  • Can downstream teams tell which form version produced the profile change?