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.
- 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:
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 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.
| Field | Existing | Incoming | Result |
|---|---|---|---|
| Name | Jane Smith | Jane S. | Jane Smith ✓ |
| Phone | empty | +1 555-0123 | +1 555-0123 ✓ |
| Title | VP Sales | Director | VP 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.
| Field | Existing | Incoming | Result |
|---|---|---|---|
| Name | Jane Smith | Jane S. | Jane S. ✓ |
| Phone | +1 555-0100 | +1 555-0123 | +1 555-0123 ✓ |
| Title | VP Sales | empty | VP 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.”
| Field | Existing | Incoming | Result |
|---|---|---|---|
| Name | Jane Smith | J. Smith | Jane Smith ✓ |
| Location | empty | San Francisco | San Francisco ✓ |
| Company | Acme Inc | Acme Corporation | Acme 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:
| Field | Recommended Strategy | Why |
|---|---|---|
existing_wins | Email is usually your dedup key — protect it | |
| Phone | fill_blanks | Hard to get; accept it from enrichment but don't overwrite |
| Title / Role | incoming_wins | Changes frequently; enrichment data is often more current |
| Company | fill_blanks | Protect manual entries from enrichment abbreviation variants |
| Location | incoming_wins | Enrichment services normalize location better than manual entry |
| Tags | merge (additive) | Never remove tags; only add new ones |
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.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"
}
}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.