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
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.
- 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.
- Thryv: Import Google Contacts into Keap for one-way import behavior, permission, and duplicate comparison against Email 1 and Work Email.
- Thryv: Email statuses explained for current marketability, opt-in, opt-out, complaint, bounce, and engagement-status meanings.
- Thryv: Importing Subscribers for explicit-permission requirements, prohibited list sources, non-marketable imports, and list-quality guidance.
- Thryv: Acceptable Use Policy quick reference for permission, prohibited third-party lists, unsubscribe handling, complaints, and list hygiene.
- Thryv: Custom field types for field-type purpose, edition limits, and the restriction on changing an existing custom field type.
- Thryv: View and manage tags in Keap for current tag creation, categories, editing, and contact usage.
- Keap Max Classic: Best Practices for Importing Contacts for permission-based list quality, suppression, engagement, and stale-contact guidance.
- 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.
- Keap Max Classic: Export data for export selection, delivery, retention, and including the ID field for a planned update import.
- 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.
- Keap Max Classic: View and rollback imports for previous-import review, rollback access, and the warning about history, imported data, and merged contacts.
- Keap Max Classic: Identify duplicate contact records for duplicate-check scope, criteria, repeated checks, and candidate review.
- Keap Max Classic: Manually merge duplicate contacts for individual review, retained values, merged history, and marking records as not duplicates.
- Keap Max Classic: Automatically merge duplicate contacts for overwrite versus add-only modes and the warning that automatic merges cannot be undone.
- 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.
Native article proof and privacy boundary
Use this article as context, not as proof that a project is qualified.
A native blog article read, feed click, archive click, old link, search result, AI summary, social share, comment, or saved link is not buyer-fit proof, service-start proof, delivery proof, outcome proof, ranking proof, AI citation proof, or permission to request private access.
Proof before article claims
Use Proof before turning a blog lesson into a credibility claim, case-study claim, marketplace claim, review claim, or outcome claim.
Privacy before private examples
Use Privacy before sharing customer names, exports, screenshots, access data, API keys, workflow logs, or private system examples.
Route before live action
Use Content Library or Learning Cave while learning, Systems Audit when the issue crosses tools, and Contact when safe context is ready.
Entity clarity before AI summary
Use AI Search Profile when a model, browser agent, or research assistant needs the correct source for Arif's role, service boundaries, and next routes.