Eight-stage Keap contact import deduplication workflow from source freeze and consent protection through identity normalization, row classification, field mapping, test batch, import, and reconciliation

Keap Contact Import Deduplication Checklist: Avoid Unsafe Duplicates and Updates

A safe Keap contact import is not just a clean spreadsheet. It is a controlled decision about which rows create contacts, which rows update existing contacts, which rows must be held for review, which fields are allowed to change, and which consent or email-status evidence must survive the import.

Intent and ownership

This guide owns one Keap spreadsheet import, not every duplicate-contact problem

This guide owns the informational decision for one planned Keap spreadsheet import: prepare and verify one Keap contact import without unsafe duplicates or updates. It covers source-file quality, email identity, permission status, edition-specific import behavior, field mapping, tags, a small test batch, reconciliation, duplicate review, and handoff. It does not own live-account diagnosis, destructive cleanup, cross-source identity repair, tag retirement, or production certification.

Use How to Prevent Duplicate CRM Contacts Across Forms and Integrations when forms, bookings, apps, APIs, or webhook retries keep creating competing records. Use Keap Tag Cleanup when the main task is deciding which existing tags can be kept, merged, or retired. Use the Keap Tag and Custom Field Map when field and tag ownership must be documented before a broader cleanup or migration.

Use the Keap Contact Import Cleanup Plan when a real file needs a scoped pre-import map. Use the Keap CRM Cleanup Audit when duplicate or damaged records already exist. Use Systems Audit when Keap, forms, ecommerce, membership access, reporting, and several owners disagree about the source of truth.

Keap interfaces, limits, field behavior, permissions, and product names can change. The official pages below describe different behavior for Keap Pro, Keap Max, and Keap Max Classic. Confirm the selected application and current importer before making production changes. This is implementation guidance, not legal advice, vendor support, certification, or a substitute for the account's permission and privacy requirements.

Edition and operation

Choose the import path before editing the spreadsheet

"Keap import" can describe several materially different operations. A Pro or Max spreadsheet import can match by email and update fields on an existing contact. A Google Contacts import has its own matching scope. Max Classic separates a normal import from Modify Existing Records, duplicate checking, manual or automatic merge, and rollback. A checklist that ignores these boundaries can recommend the wrong identity key or recovery action.

Application and mode Documented identity behavior Primary risk Required evidence
Keap Pro or Max spreadsheet import Duplicate checking and existing-contact updates are based on email The correct contact may be matched while approved current fields are replaced by stale import values Edition, file hash, normalized email, field map, test result, and import tag
Keap Pro or Max Google Contacts import Keap documents comparison against the Email 1 and Work Email fields A one-way import can omit or misclassify contacts whose identity does not fit that comparison Selected Google account, selected contacts, permission answer, match samples, and result count
Max Classic new contact import Use the new-record import preparation and mapping path; do not treat an external system ID as a Keap Contact ID Duplicate records, malformed fields, wrong tags, or imported suppression failures Source export, approved CSV, field mapping, import record, and duplicate-check plan
Max Classic Modify Existing Records A current Keap Contact ID from a Keap export is required for the update path Permanent overwrites on the wrong records or fields Keap export, preserved Contact ID, update-only column set, preview, approver, and post-update sample
Max Classic duplicate merge Duplicate candidates are identified first, then manually or automatically merged False-positive merge and irreversible history consolidation Matching criteria, review sample, merge mode, owner approval, and retained result

Record the application name exactly as the account presents it, the import screen used, the operation selected, and the official page that supports the chosen behavior. Do not carry a Contact ID rule from Max Classic into a Pro or Max email-match import, and do not use a source CRM's internal ID as though it were a Keap Contact ID.

Source control

Freeze the source file and the current Keap state

Keep an untouched source export before cleaning. Work from a copy with a versioned filename, import purpose, source system, export timestamp, row count, column count, and accountable owner. A spreadsheet that changes while it is being reviewed cannot produce a defensible reconciliation result.

Capture the current Keap state needed for comparison. For a Pro or Max email-match import, export or safely sample existing contacts for the emails in scope and document which current fields must win. For a Max Classic Modify Existing operation, use a current Keap export that includes the Keap Contact ID and only the fields needed for the update. Restrict access to source and working files because contact exports can contain personal and commercial data.

Evidence item What to record Why it matters
Original export Source, generated time, file name, row count, headers, and restricted storage location Preserves the input before normalization or exclusion
Working file Version, editor, approved transformations, row-status column, and checksum or stable copy Separates deliberate changes from silent spreadsheet edits
Keap comparison export Selected existing records and fields required for match or overwrite review Shows whether the import creates, updates, or conflicts with current data
Field dictionary Source column, Keap field, type, allowed values, empty-value behavior, owner, and update rule Prevents a convenient mapping from becoming an unintended data contract
Import register File version, batch, start and finish time, operator, result count, import tag, exceptions, and approver Makes the change traceable after the importer closes

Permission and suppression

Do not use an import to manufacture marketing permission

Separate contact storage from permission to send marketing. Keap requires the importer to indicate whether the contacts gave explicit permission. Its documentation says a list imported without permission is non-marketable, and the platform does not automatically overwrite existing email-status values such as opt-out or non-marketable during a Pro or Max list import. Preserve the original permission source, collection date where available, purpose, policy or form context, and prior suppression state.

Exclude purchased, rented, shared, scraped, or otherwise unsupported marketing lists. Do not convert an old customer, event attendee, business card, association list, or partner-provided list into a marketing subscriber merely because the spreadsheet contains an email address. If the permission evidence is uncertain, import for the legitimate non-marketing business purpose only under the account's approved process, or hold the row until the responsible owner decides.

Source state Import decision Email decision Evidence to retain
Explicit permission is documented Eligible after identity, mapping, and quality checks Use the current Keap permission question accurately Source, form or agreement, date, purpose, and policy context
Existing opt-out, complaint, or non-marketable state Keep or exclude according to approved record-retention need Never restore marketing permission through the import Prior status, source, date, and approved handling
Customer record without marketing permission May be needed for service, transaction, or account history Do not mark as marketable without valid permission Business purpose, source system, owner, and communication limit
Permission is missing or disputed Hold for owner review or import as non-marketable only if justified No bulk marketing Reason for hold and named decision owner
Purchased, rented, shared, or scraped list Exclude Do not send Exclusion reason without retaining unnecessary private data

Row identity

Classify each row before Keap makes the match decision

Normalize identity fields conservatively. Trim leading and trailing whitespace, normalize email-domain case, preserve the original value in the working evidence, separate multiple values that were incorrectly placed in one field, and quarantine malformed or ambiguous rows. Do not invent an email, combine two people's data, or merge on name alone.

Deduplicate the source file against itself before comparing it with Keap. An exact repeated email can still represent conflicting source values, so group the rows and decide which field values are authoritative. A missing email, shared household address, role address, multiple valid emails, changed email, conflicting phone, or two existing Keap contacts with related identity evidence needs review rather than automatic creation or merge.

Row state Classification Action Minimum evidence
One valid email, no existing Keap match, permission and required fields pass Create Include in the controlled new-contact batch Source row ID, email, source, permission, field map, and import batch
One valid email matches one intended Keap contact Update Include only approved columns whose source is allowed to replace or fill current values Keap record, compared fields, winner rule, and expected result
Repeated email appears several times in the source Review or consolidate Create one approved row after conflicts are resolved Grouped source rows and field-by-field decision
Missing email or identity relies only on name, company, or phone Review Use a separate approved identity process or exclude from this email-match import Reason, possible matches, and owner decision
One email appears to belong to two people or two current records Review Do not auto-merge or overwrite Both records, activity context, and identity owner
Unsupported permission, opt-out conflict, malformed identity, or no legitimate purpose Exclude Remove from the import file and record the exclusion reason Reason code and safe count

Add a stable source-row key and a controlled row-status column to the working file. The key is for reconciliation, not for replacing Keap's documented identity rule. Keep it out of any Keap system ID field unless the target is a deliberately created external-ID custom field with an approved owner and purpose.

Field contract

Decide what each source is allowed to overwrite

A Pro or Max import with an existing email can update or replace contact information. Therefore, remove every column that does not have a deliberate write rule. An old export should not replace a current phone number, company, lifecycle value, address, source, or custom field just because the column exists. Treat blank, zero, false, and "unknown" as different values and confirm how the selected importer handles each one.

Review auto-matched fields rather than assuming the header is correct. Confirm custom field type before creation because Keap documents that existing custom field types cannot simply be changed later. Do not map an unverified owner value. Keap Pro and Max documentation says the importer does not allow mapping to contact owner. Route owner assignment through a separate approved workflow if needed.

Field group Recommended import rule Common failure QA sample
Email identity Required for the intended Pro or Max email-match path; preserve original and normalized values Wrong person, shared address, hidden whitespace, or secondary-email mismatch New, existing, uppercase-domain, whitespace, shared, and malformed cases
Name and company Update only when the source is current and authoritative Stale source replaces a corrected CRM value Existing preferred name, changed company, blank source, and punctuation
Phone and address Separate values into the target fields and retain country context Extensions, multiple numbers, or combined addresses import incorrectly International number, extension, secondary phone, and complete address
Tags Use approved existing tags or a reviewed naming plan; separate multiple values as documented One accidental long tag, duplicate labels, or campaign-trigger side effects Single tag, several tags, punctuation, unknown tag, and automation dependency
Custom fields Create only after name, type, allowed values, reporting use, and owner are approved Wrong field type or duplicate custom field becomes permanent cleanup work Date, number, yes/no, option, free text, blank, and invalid value
Permission and email status Answer the permission step accurately and preserve existing suppression evidence Import is treated as consent or a suppressed person re-enters marketing Marketable, non-marketable, opt-out, complaint, and unknown-permission cases
Lead source, owner, lifecycle, and automation controls Change only through the specifically supported and approved mechanism Attribution, assignment, campaign, or reporting ownership changes silently Existing owner, existing source, active automation, customer, and open opportunity

Acceptance batch

Test the decisions, not just one clean new contact

Build a small batch that represents the actual risk. Use clearly labeled synthetic contacts in a safe account where possible. If a production test must use existing records, use the minimum approved private data, named records, a controlled window, and a documented recovery plan. Do not upload private customer data to public tools or this worksheet.

Test case Expected result Pass evidence
Valid new email One new contact with only approved fields and tags Source row, contact ID, import tag, field comparison, and count
Existing email with one approved new value One intended contact is updated and protected fields remain unchanged Before and after record comparison
Existing email with stale conflicting data The stale column is excluded or the row is held Field-winner rule and unchanged current value
Repeated source email One reviewed import row, not silent last-row-wins behavior Grouped rows and consolidation decision
Missing or malformed email Held or excluded according to the approved rule Exception reason and no unintended contact
Existing opt-out or non-marketable contact Suppression status is not restored through the import Before and after email-status evidence
Several tags and custom field values Exact intended labels and valid typed values appear without unwanted automation Record, tag list, field values, automation history, and owner check
Known Max Classic update record The current Keap Contact ID updates only the approved fields Keap export ID, import preview, and before/after sample

Stop if the test creates an unexpected contact, changes a protected field, creates an unapproved tag or custom field, starts automation, changes marketability, loses source evidence, or cannot be reconciled. Fix the contract and repeat the small test. Do not treat a successful upload screen as acceptance.

Controlled execution

Run one approved file in bounded batches

Lock the approved file after the test. Record its version and final counts by create, update, review, and exclude. Schedule a low-risk window, pause or account for automations that can fire from imported tags or field changes, and make one person responsible for the import and one person responsible for acceptance.

Keap's current Pro and Max documentation states a maximum of 5,000 contacts per import and recommends batching larger files. Smaller batches are often easier to reconcile even below that limit. Name each batch, apply an approved import tag when appropriate, and preserve the exact mapping used. Do not improvise new fields, tags, permission answers, or exclusions inside the final import screen.

Stage Decision Required output Hold condition
1. Freeze source Which file and current Keap state are authoritative? Untouched export, working copy, counts, and owner Source changes during review
2. Protect consent Which rows may be stored or marketed to? Permission and suppression classifications Unsupported or disputed permission
3. Normalize identity Which transformations are safe and reversible? Original value, normalized value, and exception list Invented or ambiguous identity
4. Classify rows Does each row create, update, require review, or get excluded? One approved row status and reason Possible match has no owner decision
5. Map fields Which source may write each Keap field or tag? Field dictionary and overwrite rules Protected field or automation impact is unknown
6. Test batch Do the representative cases behave as expected? Before/after evidence and corrected contract Any unexpected create, update, tag, status, or automation
7. Import Is the locked file ready for a bounded production run? Batch register, mapping, operator, and result counts File or mapping differs from the approved version
8. Reconcile Did every included row reach one intended result? Count bridge, exceptions, samples, and signed handoff Unexplained variance or unsafe duplicate

Recovery and closeout

Reconcile before merging or rolling back

Compare approved input rows with created contacts, updated contacts, skipped rows, exceptions, and unresolved records. Sample every high-risk class, not only the first and last rows. Confirm protected fields, email status, tags, custom fields, automation history, ownership, attribution, and downstream membership or reporting effects when those were in scope.

If a dashboard is part of the post-import acceptance, define the trusted fields, date boundary, duplicate rule, and reconciliation totals before charting. Google returned the product name from Looker Studio to Data Studio in April 2026, so current documentation and interfaces use Data Studio while older searches and materials may still use Looker Studio. The Keap to Data Studio dashboard starter (formerly Looker Studio) is the fixed-scope route for one agreed Keap CSV export after the import data is trusted; it does not include cleanup, a live connector, or guaranteed source accuracy.

Max Classic documents a previous-import view and rollback function, but it also warns that rollback deletes the import history and data and can delete a merged person after duplicates were merged. Max Classic also documents that automatic merges cannot be undone. Therefore, do not merge first and assume rollback will recover the original records. Diagnose the import result, preserve evidence, choose the recovery order, and obtain approval before a destructive merge, rollback, or delete operation.

Observed result Next action Do not do Closure evidence
Counts and samples match Complete the handoff and monitor downstream effects Delete the working evidence immediately Input-to-result bridge, samples, exceptions, owner, and retention date
One field mapped incorrectly Stop later batches, identify affected records, and design a controlled correction Re-import the full file with more columns Affected set, before/after field, correction method, and sample
Unexpected duplicate candidates Identify why the match failed and review candidates individually or with proven criteria Auto-merge on name or a broad weak rule Root cause, criteria, retained record, merged or not-duplicate decision
Automation or access changed Contain the workflow, preserve history, and reconcile each affected contact Delete contacts to hide the automation result Trigger evidence, affected records, correction, and final state
Max Classic import is broadly wrong Review the documented previous-import and rollback behavior before any action Merge duplicates before deciding whether rollback is required Import record, rollback impact review, approval, action, and post-action counts
Result cannot be explained Hold acceptance and route to a scoped audit Run another import to see whether the variance disappears Known facts, unknowns, safe examples, and named next owner

Browser-local worksheet

Complete the 32-check Keap contact import review

The checkboxes and progress state stay in this browser through local storage. They are not submitted to eArif.com and they do not certify an account or import. Reset clears the saved state. Print can be used for a privacy-safe review record.

Do not place contact exports, email addresses, phone numbers, consent records, passwords, API keys, payment data, private customer information, or production credentials in this worksheet.

Hold: the review is incomplete.

0 of 32 checks complete

0 of 32
01Application and scope
02Source control
03Permission and suppression
04Identity and row decisions
05Fields and tags
06Acceptance batch
07Production import
08Reconciliation and ownership

Implementation route

Choose the route that matches the first unproven layer

Current evidence Best next route Why
One planned Keap spreadsheet import needs fields, tags, duplicate risks, and acceptance mapped Keap Contact Import Cleanup Plan The fixed-scope plan owns one pre-import file and decision path without promising a broad cleanup.
Existing tags and custom fields have unknown purpose or dependencies Keap Tag and Custom Field Map Field and tag ownership must be known before they become import destinations.
Duplicate, damaged, or conflicting Keap records already exist Keap CRM Cleanup Audit The central task is current-state diagnosis and cleanup planning, not only import acceptance.
Forms, integrations, APIs, or retries keep creating new contacts after cleanup CRM Automation Audit The source writer and cross-channel identity contract must be repaired.
The import affects membership access, ecommerce, payments, campaigns, reporting, or several business owners Systems Audit The first failed handoff and source of truth need cross-tool evidence.
The edition, file, risk, or service route is still unclear Contact Arif with privacy-safe context Routing can be decided from tool names, counts, fields, expected result, deadline, and redacted examples without a full private export.

Review Keap and Infusionsoft Services for adjacent fixed-scope routes, Proof before treating a public checklist as project evidence, Privacy before sharing data context, Learning Cave for related implementation guides, and the AI Search Profile when a search or research agent needs the correct source for Arif's role and service boundaries.

Primary sources reviewed July 31, 2026

Official Keap, Thryv, and Google documentation used for this checklist

Import interfaces, limits, product names, permission rules, field behavior, merge controls, and recovery options can change. Recheck the current official page, selected application, account permissions, and one controlled test before production work.

  1. Thryv: Import contacts into Keap for Pro and Max file types, email-based duplicate checking and updates, field mapping, company matching, custom fields, permission, tags, 5,000-contact batches, and import review.
  2. Thryv: Import Google Contacts into Keap for one-way import behavior, permission, and duplicate comparison against Email 1 and Work Email.
  3. Thryv: Email statuses explained for current marketability, opt-in, opt-out, complaint, bounce, and engagement-status meanings.
  4. Thryv: Importing Subscribers for explicit-permission requirements, prohibited list sources, non-marketable imports, and list-quality guidance.
  5. Thryv: Acceptable Use Policy quick reference for permission, prohibited third-party lists, unsubscribe handling, complaints, and list hygiene.
  6. Thryv: Custom field types for field-type purpose, edition limits, and the restriction on changing an existing custom field type.
  7. Thryv: View and manage tags in Keap for current tag creation, categories, editing, and contact usage.
  8. Keap Max Classic: Best Practices for Importing Contacts for permission-based list quality, suppression, engagement, and stale-contact guidance.
  9. Keap Max Classic: Prepare your CSV import file for CSV cleanup, headers, dates, phones, addresses, country names, tag separators, special characters, opt-outs, and new-import ID cautions.
  10. Keap Max Classic: Export data for export selection, delivery, retention, and including the ID field for a planned update import.
  11. Keap Max Classic: Update contacts with a CSV for Modify Existing Records, required Keap Contact ID, overwrite behavior, skipped empty fields, field limits, and irreversible updates.
  12. Keap Max Classic: View and rollback imports for previous-import review, rollback access, and the warning about history, imported data, and merged contacts.
  13. Keap Max Classic: Identify duplicate contact records for duplicate-check scope, criteria, repeated checks, and candidate review.
  14. Keap Max Classic: Manually merge duplicate contacts for individual review, retained values, merged history, and marking records as not duplicates.
  15. Keap Max Classic: Automatically merge duplicate contacts for overwrite versus add-only modes and the warning that automatic merges cannot be undone.
  16. Google Cloud: Welcome to Data Studio for Google's April 2026 return from the Looker Studio name to Data Studio and the current product URL.

Frequently asked questions

Keap contact import and duplicate questions

Does Keap automatically deduplicate imported contacts?

Keap Pro and Max currently document automatic duplicate checking based on email for spreadsheet imports. That can prevent two records with the same matched email, but it does not prove that every real person has one email, that every email belongs to one person, or that imported field values are safe. Keap Max Classic has separate new-import, duplicate-check, merge, and modify-existing workflows, so confirm the edition and operation.

What happens when an imported email already exists in Keap?

For the documented Keap Pro and Max spreadsheet path, contact information can be updated or replaced when the email already exists, except that the importer does not automatically overwrite existing email-status values. Remove unapproved columns, define field-winner rules, and test a known existing contact before the full import.

Can I import contacts that do not have an email address?

A file may contain records without email, but they do not fit the documented Pro or Max email-based duplicate rule. Do not match or merge them on name alone. Hold them for a separate approved identity process, use stronger current evidence, or exclude them from this import.

Should I include Contact ID in a Keap import?

It depends on the application and operation. Max Classic documentation says a current Keap Contact ID from a Keap export is required for Modify Existing Records, while its new-import preparation warns against importing contact IDs. Do not place a source CRM's ID into Keap's Contact ID field. Pro and Max spreadsheet imports use the documented email-match path instead.

Can a contact import restore someone who opted out?

A Pro or Max list import does not automatically overwrite existing email-status values such as opt-out or non-marketable. Still, the importer must answer the permission question accurately, preserve suppression evidence, and exclude unsupported lists. Never use an import as proof of consent or as a way to bypass an existing opt-out.

How should I test a Keap contact import before the full file?

Use a small privacy-safe batch covering a valid new email, intended existing-email update, stale conflicting field, repeated source email, malformed or missing email, protected email status, tags, custom fields, and any workflow dependency. Compare before and after records and stop on any unexpected create, update, status, tag, field, automation, owner, attribution, or access result.

Back to blog