All articles
Data Hygiene6 min read

Merge Strategies Explained: fill_blanks vs. incoming_wins vs. existing_wins

When your CRM receives data from multiple sources — enrichment tools, CSV imports, APIs, manual updates — fields will conflict. Your merge strategy decides who wins. Here's how to choose.

Key Takeaways
  • A merge strategy defines what happens when incoming data conflicts with existing data on the same contact.
  • fill_blanks: only fill in empty fields, never overwrite existing values — safest default.
  • incoming_wins: new data always overwrites — use when the source is authoritative.
  • existing_wins: keep what you have, only accept new values for empty fields — same as fill_blanks, emphasizes trust in existing data.

Why Merge Strategies Matter

Most CRMs treat every update as a simple overwrite: new data replaces old data. This works fine when you have one data source. But modern teams typically ingest contact data from 3-5+ sources:

Manual entry by repsCSV importsWeb formsEnrichment providersAPI integrationsChrome extensionsEmail parsing

Each source has different reliability. Enrichment data might have a better phone number but a worse job title. A CSV import might have the right company but a stale email. Without a merge strategy, the last update wins — which is almost never what you want.

⚠️The silent data loss problem
Without per-field merge control, importing a CSV with a missing phone number column will overwrite your existing phone numbers with blank values. This is how carefully collected data disappears overnight.

The Three Merge Strategies

fill_blanks

Only populate fields that are currently empty. If a field already has a value, keep it — regardless of what the incoming data says.

FieldExistingIncomingResult
NameJane SmithJane S.Jane Smith ✓
Phoneempty+1 555-0123+1 555-0123 ✓
TitleVP SalesDirectorVP Sales ✓

Best for: Enrichment data that supplements existing records; situations where you trust your existing data.

incoming_wins

Incoming data always overwrites existing data — for every non-empty incoming field. Empty incoming fields are skipped.

FieldExistingIncomingResult
NameJane SmithJane S.Jane S. ✓
Phone+1 555-0100+1 555-0123+1 555-0123 ✓
TitleVP SalesemptyVP Sales ✓

Best for: Authoritative data sources (HRIS, verified directories); systems you trust more than CRM manual entry.

existing_wins

Keep existing data in all cases; incoming data only fills fields that are currently empty. Functionally similar to fill_blanks, but explicitly signals “we trust our existing data over anything incoming.”

FieldExistingIncomingResult
NameJane SmithJ. SmithJane Smith ✓
LocationemptySan FranciscoSan Francisco ✓
CompanyAcme IncAcme CorporationAcme Inc ✓

Best for: Protecting curated data from bulk updates; low-confidence data sources.

Per-Field Merge: The Advanced Play

The most powerful merge implementations let you set a different strategy per field. This is critical because different fields have different reliability profiles:

FieldRecommended StrategyWhy
Emailexisting_winsEmail is usually your dedup key — protect it
Phonefill_blanksHard to get; accept it from enrichment but don't overwrite
Title / Roleincoming_winsChanges frequently; enrichment data is often more current
Companyfill_blanksProtect manual entries from enrichment abbreviation variants
Locationincoming_winsEnrichment services normalize location better than manual entry
Tagsmerge (additive)Never remove tags; only add new ones
💡The golden rule
Default to fill_blanks and only switch to incoming_wins for fields where you explicitly trust the source more than your existing data. This prevents accidental data loss.
How crmzero handles this

crmzero supports per-field merge strategies on every upsert operation — through the REST API, CSV import, and enrichment pipeline. You can set a different strategy for each field in a single API call:

{
  "email": "jane@acme.com",
  "firstName": "Jane",
  "mergeStrategy": {
    "phone": "fill_blanks",
    "title": "incoming_wins",
    "company": "existing_wins"
  }
}
See the upsert API →

Frequently Asked Questions

What is a merge strategy in CRM?

A merge strategy defines what happens when incoming data conflicts with existing data on the same contact record. It determines whether the new value overwrites the old one, fills in blanks, or is ignored.

What does fill_blanks mean?

fill_blanks is a merge strategy that only populates fields that are currently empty. If a field already has a value, the incoming value is discarded. This is the safest default because it never overwrites existing data.

When should I use incoming_wins?

Use incoming_wins when the data source is more authoritative than your current CRM data — for example, a verified HRIS feed or a high-confidence enrichment provider. The incoming value will overwrite the existing value for every non-empty field.

Can I set different merge strategies for different fields?

Yes — this is called per-field merge control. The best CRM APIs let you specify a merge strategy per field in a single request, so enrichment fills blank phone numbers while your manually entered company names stay protected.

What happens to tags during a merge?

Tags should typically use an additive (union) merge: incoming tags are added to the existing set, but no existing tags are removed. This prevents automation from accidentally stripping tags that reps have manually applied.

Related Articles