Published 21 May 2026

Deduplication strategy when enriching CRM data

Last updated: 21 May 2026

Always deduplicate before you enrich. Duplicate records are charged twice (once per match), and enriching the duplicates produces inconsistent records that fragment your reporting. The four standard UK CRM dedup match strategies are exact email, fuzzy name plus postcode (Levenshtein distance below 3), name plus company normalised, and a composite score across three or more fields. A typical UK B2B CRM holds 5%–15% duplicates; B2C runs 8%–20%.

Key points

Why does deduplication matter specifically for enrichment?

Most CRM hygiene guides treat deduplication as a general housekeeping task. Enrichment adds a hard financial reason to act: you are charged per record that matches in the bureau's reference file. Submit 10,000 records with 12% duplication and you are paying to enrich roughly 1,200 contacts twice. At typical UK enrichment rates of £40–£80 per 1,000 records, that is £48–£96 wasted before you have even looked at the output.

The cost argument is obvious once stated. The data quality argument is subtler and, in the long run, more damaging. When you enrich duplicate A and duplicate B separately, the bureau may return slightly different results for each (different telephone numbers matched, different job title found, different company revenue band). You now hold two records for the same person with contradictory appended data. Your "mobile phone penetration" figure is overstated because it counts the same individual twice. Your suppression logic may suppress one record but not the other, exposing you to a compliance risk on GDPR's data minimisation principle.

The cleaner sequence is: deduplicate, select one survivor record per individual, enrich that record, then propagate the appended fields to any archived non-survivor records if your CRM requires the history. See our guide to what data enrichment involves for a broader overview of the process before turning to the deduplication mechanics below.

How much duplication should you expect in a UK CRM?

Duplication rates vary by how the CRM was built and how long it has run without active cleansing. The following figures come from bureau-side experience across UK B2B and B2C files submitted for enrichment:

Databases older than three years without a dedicated cleansing programme sit at the upper end of these ranges. Running a gap analysis on your CRM before enrichment is a useful way to quantify the problem rather than guessing.

The four match strategies for UK CRM deduplication

No single matching rule catches all duplicates. In practice, you apply several strategies in sequence, each with a different precision-recall trade-off. The table below summarises the four most commonly used in UK CRM deduplication projects.

Strategy How it works Best for False positive risk Typical recall
Exact email match Normalise email to lowercase, strip whitespace, compare character-for-character B2B and B2C records where email is reliably populated Very low (shared mailboxes are the main edge case) 30%–55% of all duplicates
Fuzzy name plus postcode Levenshtein distance <3 on surname, combined with exact Royal Mail full postcode B2C consumer records; catches spelling variants and data-entry errors Low to medium (common surnames in dense postcodes require a secondary check) 20%–40% of remaining duplicates
Name plus normalised company Strip legal suffixes (Ltd, PLC, LLP, Limited, plc) and common abbreviations; compare surname and normalised company name B2B records; catches the same contact entered once as "Acme Ltd" and once as "Acme" Medium (large companies with many contacts of the same surname) 15%–25% of remaining duplicates
Composite field score Weighted score across first name initial, surname, postal sector (first half of postcode), telephone last four digits, and optionally date of birth; threshold typically 85%+ Records missing email, or where multiple weak signals together create a strong match Medium to high; requires manual review above a lower confidence threshold 10%–20% of remaining duplicates

Run exact email first, as it is the fastest and most reliable pass. Then apply fuzzy name plus postcode. Company-normalised matching comes third, limited to B2B records. Finally, composite scoring sweeps up residual candidates, with anything scoring between 70% and 84% going to a manual review queue rather than auto-merging.

Preparing data before matching

Match quality is only as good as the data going in. Standardise before you score. For postal data this means parsing Royal Mail addresses through a postal cleansing service to PAF (Postcode Address File) standard, which resolves common variants like "St." vs "Street" and "Rd" vs "Road". For company names, build a normalisation function that removes punctuation, converts to uppercase, and strips the legal suffixes listed above. A company called "ACME LOGISTICS LIMITED" and "Acme Logistics Ltd." will not match on a raw string comparison; they will match once normalised.

Survivor record selection: most recent versus most complete?

Once you have identified duplicate pairs, you need to pick which record survives. Two philosophies dominate: "most recent wins" and "most complete wins". Neither is correct in all situations.

Most recent wins is the right default for contact-level fields: telephone number, email address, job title, company name. These fields decay. A telephone number recorded in 2019 is less likely to be current than one recorded in 2024. The most recently updated record is therefore the better source of truth for reaching the individual.

Most complete wins is better for demographic or firmographic fields that do not change often: date of birth, gender, SIC 2007 sector code, property ownership flag, household income band. If one duplicate has a populated date-of-birth field and the other does not, the populated record should survive (or contribute that field to a merged survivor), regardless of which record was updated more recently.

In practice, the best outcome is a field-level merge: create the survivor record by taking the most recent version of each contact field and the most complete version of each demographic field. Most CRM platforms support this logic through their duplicate merge tools, or you can implement it in SQL with a CASE WHEN structure that scores and ranks field values before selecting the winner per field.

Merge versus flag-only: which approach is right for your CRM?

Choosing between a merge strategy and a flag-only strategy depends on your CRM's data architecture and the confidence you have in your match logic.

Merge physically consolidates duplicates. The survivor record absorbs the best field values and the non-survivors are either deleted or archived as inactive. This is the cleanest outcome for enrichment: you submit one record per individual and receive one enriched record back. The risk is irreversibility. If your match logic produces false positives and you merge two genuinely different people into one record, recovering the original state requires a backup restore.

Flag-only leaves all records in place but adds a deduplication group ID (e.g. dedup_group_id = 7841) and a survivor flag (e.g. is_survivor = TRUE/FALSE) to each record. Downstream queries filter to is_survivor = TRUE for analysis and for building the enrichment submission file. The non-survivors remain in the database with their history intact, which matters if other systems hold foreign-key references to those record IDs, for example a sales activity log that points to a contact ID you cannot safely delete.

In our experience, flag-only is the safer starting point for most UK businesses enriching a CRM for the first time. It provides a full audit trail and makes it simple to roll back if a match is later found to be incorrect. Once the match logic has been validated over one or two enrichment cycles, a controlled merge of high-confidence groups (those identified by exact email match) is a sensible second step.

GDPR note on merged records

Under UK GDPR, if the two duplicate records have different consent or opt-out histories, the merged survivor must inherit the most restrictive preference. If record A is opted in to email and record B has an email opt-out, the survivor must carry the opt-out. Merging without preserving the strictest preference is a data protection failure. Build this logic into your merge procedure before running it.

Tools for CRM deduplication: SQL, Python, and specialist bureaus

SQL for exact matching

Exact-match deduplication requires nothing more than a SQL window function. A ROW_NUMBER() OVER (PARTITION BY LOWER(email) ORDER BY updated_at DESC) query ranks records within each email group by recency, and any record with row_num > 1 is a duplicate candidate. This handles the 30%–55% of duplicates that share a common email address without any external dependency.

Python for fuzzy matching

The rapidfuzz library (a faster implementation of the classic fuzzywuzzy approach) calculates Levenshtein distances at scale without needing to compare every record against every other record, which becomes computationally prohibitive above about 50,000 records. The dedupe library goes further: it uses active learning to train a probabilistic model on a small set of hand-labelled pairs, then predicts match probabilities across the full dataset. Both are well-documented and open-source.

For a CRM of under 100,000 records, a Python script combining rapidfuzz for name similarity and pandas for postcode blocking (running comparisons only within the same postcode sector) is adequate. Above that scale, blocking on multiple fields and parallel processing become necessary to keep runtimes under an hour.

Specialist data bureaus

Where the CRM lacks a reliable anchor field such as email or telephone, a specialist bureau adds genuine value. Bureaus match your records against reference files that include Companies House data, Royal Mail's PAF, and electoral roll-derived consumer reference data, producing a probabilistic match score and a suggested survivor record without you needing to build the matching infrastructure. The trade-off is cost: bureau deduplication for a 500,000-record B2C file typically runs from £800 to £2,500 depending on complexity, though that cost is usually recovered quickly in reduced enrichment charges.

Post-enrichment deduplication: a necessary second pass

Deduplicating before enrichment removes the obvious candidates. Enrichment itself, however, appends new fields that can expose duplicate pairs that were invisible beforehand. Two records for the same consumer with different name spellings and no email address will not match on a fuzzy-name-plus-postcode pass if one record has a full postcode and the other has only the outward code. Once enrichment appends the full postcode to both, a second dedup pass will catch the pair.

Post-enrichment deduplication typically finds 1%–3% of additional duplicates. Run it as a lighter pass: exact email on the newly appended email addresses, then fuzzy name plus now-complete postcode. The composite scoring step is usually not worth repeating unless you have significant concerns about data quality in the appended fields.

The total sequence is therefore: pre-enrichment dedup (full four-strategy pass), enrich the survivor file, post-enrichment dedup (lighter two-strategy pass), then propagate the final clean fields across your CRM.

Need GDPR-compliant data for your next campaign?

Tell us your targeting criteria and we will run a free count. B2B decision-makers, B2C consumer files, or CRM enrichment, all live verified.

Request Data Counts

Frequently asked questions

Why must you deduplicate before CRM enrichment rather than after?
Enrichment bureaus charge per matched record, so duplicate contacts are charged twice. Beyond cost, enriching the duplicates separately produces two records for the same person with potentially inconsistent appended data, which then fragments every downstream report, segment, and suppression check. Deduplicating first means you pay to enrich one clean record and you propagate consistent appended fields across your database in a single pass.
What are the four standard deduplication match strategies for a UK CRM?
The four standard strategies are: (1) exact email match, the most reliable for B2B and B2C records where email is populated; (2) fuzzy name plus postcode, using Levenshtein distance below 3 on the surname combined with the full Royal Mail postcode; (3) name plus normalised company, which strips legal suffixes such as Ltd, PLC, and LLP before comparing; and (4) a composite score across three or more fields, typically first name initial, surname, postal sector, and telephone last four digits, where a score threshold of 85% or above triggers a candidate pair.
How many duplicates should I expect in a typical UK B2B or B2C CRM?
A typical UK B2B CRM holds 5% to 15% duplicates. B2C databases run higher at 8% to 20%, because consumer records are often created across multiple touchpoints such as an ecommerce checkout, a competition entry, and a newsletter sign-up. Databases older than three years without active cleansing tend to sit at the upper end of these ranges.
What is the difference between a merge approach and a flag-only approach to deduplication?
A merge approach physically consolidates duplicate records into a single survivor record and deletes or archives the non-survivors. A flag-only approach marks duplicates with a deduplicate group ID and a survivor flag but leaves all records in place, so downstream systems can filter to survivors without losing the audit trail. Merge is cleaner for enrichment but carries higher risk if the match logic has false positives. Flag-only is safer for complex CRMs where other systems hold foreign-key references to the non-survivor records.
Can I run deduplication on my CRM myself, or do I need a specialist bureau?
For exact-match deduplication (email or phone), SQL window functions handle the job without external tools. Fuzzy matching at scale requires either a Python library such as rapidfuzz or dedupe, or a specialist data bureau that applies proprietary probabilistic matching against reference files. Bureaus add value when your CRM lacks a reliable anchor field, when address standardisation is needed first, or when you want a match confidence score rather than a binary yes or no.
Should I run deduplication again after enrichment?
Yes. Enrichment appends new fields, such as a standardised email address, a verified telephone, or a normalised company name, that may not have been present in the original record. Those new fields can expose duplicate pairs that were invisible before enrichment. A post-enrichment dedup pass is therefore a standard second step, though it typically catches far fewer duplicates, usually 1% to 3% of the file, than the initial pre-enrichment pass.