Contact data being checked before import into a CRM platform.
Email Data

CRM Import Checklist for Cleaner HubSpot, Salesforce and Mailchimp Data

Muhammad Muhammad Ziauldin | | 7 min read | 0 Comments | 1 View
Share:

A CRM import can multiply a small spreadsheet mistake across sales assignments, automations, reports, and marketing audiences. The safest import begins with preservation. Keep the source unchanged, identify every record, and create an explicit mapping from source values to destination fields before uploading anything.

Back up the source file

Save a read-only copy with a date, source system, exporter, and purpose. Calculate a checksum if the process is sensitive or repeated. Work from a duplicate in a restricted folder. A backup is useful only if the team can identify it and knows who may restore it.

Record the number of rows, columns, blank email values, and obvious duplicate keys. These baseline counts make post-import reconciliation possible.

Preserve contact IDs

Export the stable identifier from the source system, not just names and addresses. If the destination assigns its own ID, store the source ID in a dedicated field or import ledger. This lets the team trace a result, reverse a batch, and distinguish updates from new contacts.

Never use an email address as the only durable identity. Addresses change and may be shared, reused, or duplicated across legitimate records.

Normalise email fields

Trim outer whitespace, remove non-printing characters, and make sure one cell represents one address. Do not split or invent values automatically without review. Preserve the original column beside a cleaned working column so every transformation is visible.

Case normalisation can aid matching, but the original local part should remain available. Avoid silently fixing domain typos. A plausible correction may belong to someone else.

Find duplicates carefully

Identify exact duplicates, normalised duplicates, and records that share an address but have different IDs. Each group needs a rule. Two records may represent a duplicate import, two contacts sharing a family inbox, or separate business entities using a central billing address.

Choose the surviving record by authoritative ownership, activity, consent, and field completeness. Do not merge suppression or objection history away.

Verify the email column

Send only the minimum necessary data to a verification service, typically a temporary row ID and the working email value. Record the result, reason, provider, and check time in new columns. Keep invalid, risky, and unknown rows in the reconciliation file even if they will not enter an active audience.

A positive result does not prove consent or ownership. A timeout does not prove invalidity. Map each category to a documented import action.

Preserve consent

Consent fields need their original source, wording or notice version, timestamp, and scope. Do not convert a blank into opted in. Do not treat a verified address as permission. If the destination cannot represent the same detail, stop and decide how the evidence will remain accessible.

Different platforms use different subscription models. Test how global, channel, and audience-level preferences map before the main import.

Preserve suppression records

Bring across hard-bounce, unsubscribe, complaint, and do-not-contact states before activating any automation. A record that is excluded from marketing may still need to exist for service or audit purposes. Keep eligibility separate from technical address status.

Compare the import file against the destination's existing suppression data as well. Otherwise, an old excluded address can re-enter through a new source ID.

Map status fields

Source evidenceDestination fieldDefault action
Clear usable resultVerification status and checked timeImport subject to consent
Invalid resultData-quality statusImport as excluded or hold outside active use
Catch-all or riskyReview reasonRoute by business context
Unknown or temporaryRetry stateDo not convert to invalid
Unsubscribed or complainedSuppression stateAlways preserve exclusion

Document destination pick-list values exactly. Free-text labels lead to variants that break filters and reporting.

Handle catch-all results

A catch-all response does not establish whether the named mailbox exists. Keep the record separate from clearly invalid addresses. For an existing customer or known vendor, relationship evidence may justify import. For an unconfirmed prospect, a manual-review or lower-priority queue may be more appropriate.

Do not repeatedly verify the same catch-all row expecting certainty. Use a retry cap and record the final policy decision.

Avoid duplicate contacts

Understand the destination's matching key and update mode. HubSpot, Salesforce, and Mailchimp are named in this checklist because teams commonly move data among them, not because their import behaviour is identical. Review the current documentation for the exact account configuration and object type.

Disable nonessential automations during a controlled import when possible. A duplicate created for seconds can still trigger a message, task, webhook, or attribution change.

Test a sample import

Build a representative sample containing blanks, duplicates, international characters, suppressed contacts, risky results, existing IDs, and new records. Import into a sandbox or isolated audience. Check field mappings, ownership, timestamps, automations, and rollback steps.

A sample of only clean rows proves very little. Include the cases that could cause harm.

Post-import checks

  1. Compare created, updated, skipped, and failed counts with the source ledger.
  2. Inspect a sample from every result category.
  3. Confirm suppression and consent states before enabling sends.
  4. Check that no unexpected workflows, notifications, or assignments fired.
  5. Store the import report and delete temporary verification exports on schedule.
  6. Assign unresolved rows to an owner with a deadline.

Mailthentic describes a CRM-oriented verification workflow. Whichever service and destination are used, the durable controls are source preservation, explicit mappings, a representative test, and row-count reconciliation.

Secure the working files

Import projects often create more copies than the production CRM: analyst downloads, verification uploads, corrected exports, rejected-row files, and emailed reports. List every copy, restrict it to the project team, and set a deletion date before work begins. Do not use personal cloud storage or email attachments as an informal transfer mechanism.

When the import is approved, keep the minimal ledger needed to explain it and remove temporary datasets. The final record should identify the source, transformation version, operator, approval, counts, and unresolved exceptions without preserving unnecessary duplicate contact data.

Ask a second reviewer to compare that ledger with the destination before the batch is declared complete.

Plan rollback before upload

Identify which destination records will be created, updated, or merged. Export the current values for every field the import can change, keyed by destination ID. Confirm whether the platform can reverse an import and whether that reversal also undoes automation side effects. Often it cannot.

Set a short observation window during which the team avoids unrelated bulk edits. If counts or mappings fail, stop automations, preserve the import report, and restore only the fields changed by the batch. A rollback that overwrites newer customer changes can cause more damage than the original import.

Account for platform differences

HubSpot may represent marketing eligibility differently from a Salesforce contact or a Mailchimp audience member. Custom fields, duplicate rules, required objects, and subscription categories also vary by account configuration. Use current vendor documentation and a sandbox rather than a generic spreadsheet template.

Map one concept at a time: identity, ownership, lifecycle stage, technical result, consent, and suppression. When a destination lacks an equivalent field, document the loss and keep the authoritative evidence elsewhere. Do not squeeze several meanings into one free-text status simply to finish the import.

Control what happens after import

List every workflow that can react to a created or updated contact, including welcome messages, lead assignments, webhooks, scoring, ad audiences, and data enrichment. Pause what is safe to pause, then re-enable in a defined order after reconciliation.

Watch error logs and queue depth as well as the CRM screen. A visually correct record can still have emitted an incorrect event to another system. Document downstream counts and resolve duplicates before declaring success.

Written by

Muhammad Ziauldin

Muhammad Ziauldin is an experienced software engineer based in Birmingham, specialising in Python, JavaScript, Django, REST APIs and SaaS development. He enjoys building scalable digital products and sharing practical insights about technology, software engineering and online business.

Guest Posts Open

Enjoyed this article? Write one yourself.

Have practical knowledge our readers can use? Pitch an original, editorially reviewed article for Reedablez.

Write for Us

Comments (0)

No comments yet. Be the first to share your thoughts!

Leave a Comment

Your email address will not be published. Required fields are marked *