Loading tutorials…
Loading tutorials…
Importing into Close is fast — which is exactly why teams ship junk data on day 1 and spend the next 18 months apologizing for it. Here is the import sequence that holds up, the dedup discipline that prevents 'Acme Inc' from existing 4 times, and the cleanup cadence that keeps it that way.
Who this is forOps leads, sales managers, and founders importing data into Close for the first time — or anyone inheriting a Close workspace where the same Lead exists 4 times and nobody knows which is real. If 'duplicate management' is on your weekly to-do list, this tutorial is the diagnostic.
What you'll need
Step 1
Close dedups Leads by Company URL (root domain) and Contacts by email. Anything without those keys imports as new. Know this before you start.
Close auto-dedups Leads on the "url" field (Company website domain). "acme.com" matches both "acme.com" and "www.acme.com" — but NOT "acme.co.uk" or "acme.io."
Close auto-dedups Contacts on email address. Same email = merged into existing Contact.
Records without URL (Lead) or email (Contact) import as new every time. This is the #1 source of duplicates in Close — Leads with no website data, or scraped Contacts with no verified email.
Phone numbers are NOT a dedup key. Two Contacts with the same phone but different emails = two separate Contacts.
Names are NOT a dedup key. "John Smith" with email john@acme.com and "John Smith" with email johnsmith@acme.com = two Contacts.
Step 2
Close does not catch within-file duplicates. Open the CSV in Excel / Sheets, find duplicates, merge or remove, THEN import.
Open the CSV in Excel or Google Sheets. Sort by email column (Contacts) or by website domain (Leads).
Use Conditional Formatting → Highlight Duplicate Values (Excel) or =COUNTIF(A:A, A2)>1 (Sheets) to flag duplicates.
For Lead CSVs: also normalize domain values. Strip "https://" and "www." prefixes, lowercase everything. "Acme.com" and "acme.com" and "https://www.acme.com/" should all become "acme.com."
For Contact CSVs: normalize emails. Lowercase all email values. Strip whitespace. "Sarah@Acme.com" and "sarah@acme.com " are technically different to Close.
Decide for each duplicate set: keep the most-complete row, remove the others. Or use =CONCATENATE to merge fields where the rows have complementary data (one has phone, the other has title).
Step 3
Settings → Import → Map columns to Close fields. Wrong mapping during a 10K-row import is a 2-day cleanup. Test on 20 rows first.
Settings → Import → New Import → upload CSV.
Close auto-maps columns by name match: "Company Name" → Lead Name, "Email" → Contact Email, "Phone" → Contact Phone. Confirm every mapping.
For custom fields: explicit mapping required. "Industry" CSV column → Lead Custom Field "Industry." If not mapped, the column is skipped entirely (no error, no warning).
Pick the import type: Leads + Contacts (most common), Leads only, Contacts only, or Opportunities. Each requires different required columns.
For Leads + Contacts: required CSV columns = Company Name (or URL), Contact Name, Email. Optional but recommended: URL, Phone, Title, all custom fields.
Step 4
Settings → Import → "Update existing" toggle. Critical for re-imports. Wrong setting = either duplicates or overwritten data.
Settings → Import → during setup → "Update existing records if matched" toggle.
OFF = every row creates a new record. Use for first-time imports of fresh data.
ON = if email/URL matches existing record, update that record with CSV values (overwriting current values). Use for re-imports or enrichment imports.
Critical caveat: ON overwrites ALL mapped fields, even with empty CSV cells. If your CSV has blank Phone column and Close has Phone, the existing Phone gets cleared.
Best practice for enrichment imports: ONLY include columns for fields you want to update. Strip every column except the dedup key + the fields being enriched. Prevents accidental overwrites.
Step 5
Import completes. Before declaring victory, spot-check 20 random records. Anything weird now is weird forever — fix at import time.
After import: Close shows summary (X created, Y updated, Z errors). Errors usually = malformed emails, invalid characters, missing required fields. Download the error report.
Open Leads view → sort by Created Date descending → click into 20 random records from the import.
Check: are custom fields populated? Are associations correct (Contacts linked to right Lead)? Did dedup work (no obvious duplicates with previous data)?
Common issues to catch at this stage: phone numbers in wrong format, dates parsed incorrectly (US vs international), categorical fields with typos.
If anything is wrong: do not run more imports. Investigate root cause (field mapping, source data, normalization) and fix the SOP before next import.
Step 6
Even with clean imports, duplicates accumulate from manual rep entry, integrations, and scraped data. Use Search + Bulk Edit to clean.
Close does not have a built-in "Duplicates" tab like Pipedrive or HubSpot. Manual workflow required.
Search by partial company name (Leads view → search "Acme") to find spelling variants. Merge via: open one Lead → Actions → Merge → search for the duplicate → confirm merge.
Merge preserves: all activities, notes, emails, calls, Tasks, Opportunities. The "primary" (one you keep) inherits everything from the secondary.
For bulk dedup (100+ duplicates): export Leads CSV, dedupe in Sheets identifying duplicate IDs, then use Close API or a tool like Census/Hightouch to programmatically merge. Worth a specialist for this scale.
On Contact merges: pick the older Contact as primary (it usually has more email history). Conflicts on individual fields default to primary; you can override per-field during merge.
Step 7
Cleanup once = mess returns in 90 days. The cadence prevents re-accumulation.
Monthly recurring 1-hour block. Owner: ops lead or rotating rep.
Checklist: (1) Search for top 20 known-duplicate-prone companies (Acme, Microsoft, Google) → merge any new dupes. (2) Filter Leads with no URL → audit + add domain or merge. (3) Filter Contacts with no email → audit + remove or fix. (4) Filter Opportunities with no Lead association → reconnect or close. (5) Audit any new integrations that wrote to Close in the month — any junk data?
Quarterly: full audit. Walk every Custom Field → fill rate + cardinality. Fields under 25% fill rate are usually candidates for deletion. Fields with 200+ distinct values for what should be categorical = convert Text to Dropdown.
Document the cadence in a shared SOP. The discipline makes data trustworthy long-term — not the heroic occasional cleanup.
Track 3 hygiene metrics quarter-over-quarter: % of Leads with no URL (target <10%), # duplicate-suspected merges per month (target trending down), % of Opportunities with no Lead Owner (target 0%).
Common mistakes
Importing 10,000 Contacts without verified emails
What goes wrong: 70% of the file has scraped/guessed emails. After import, Sequences fire to all 10K. Bounce rate hits 18%. Sender domain reputation tanks within 7 days. Now ALL email (including 1:1 from reps) lands in spam. Recovery is 4-6 weeks of low-volume warm-up. Lost pipeline during recovery: $30-100K.
How to avoid: Verify emails BEFORE importing. Use NeverBounce, ZeroBounce, or Apollo verified emails. Cost ~$10 per 1K verifications. Import only valid + risky (drop unknown + invalid).
Within-file duplicates from skipping the pre-import dedup
What goes wrong: 12K-row CSV has 800 within-file duplicates (same email, different casing or whitespace). Close auto-merges on email — BUT does not catch within-file dupes in real-time. Result: imports merge into pre-existing records sometimes, create new sometimes. Inconsistent. 6 weeks later you cannot tell what is duplicate vs new.
How to avoid: Deduplicate the CSV in Excel/Sheets before upload. Normalize email casing + whitespace. Use COUNTIF to find within-file dupes. Sort + manual review of suspect groups.
Wrong field mapping discovered after 10K-row import
What goes wrong: CSV had 'Phone' and 'Mobile' as separate columns. Both mapped to Contact.Phone. Mobile values overwrote Phone values for every record. Lost direct-dial numbers across the import. Cleanup = re-export, manual merge from original CSV, re-import. 2 days of work + 2 days of dirty data while reps work around it.
How to avoid: Always test-import 20 rows first. Verify field mapping looks correct in the test records before scaling to full import.
Importing Opportunities without Lead associations
What goes wrong: Opportunity CSV imported with Company Name as text field, no URL. Close creates orphan Opportunities not linked to any Lead. Pipeline reports do not include them (filter by Lead Owner excludes orphans). Account-level revenue rollup is wrong. Customer success cannot see deal history per account.
How to avoid: Always import Leads first. Then import Opportunities with a "Lead URL" or "Lead Name" matching column for association. Close auto-links if the match succeeds.
Re-imports overwriting good data with blank CSV cells
What goes wrong: Enrichment CSV from Apollo has blank cells where Apollo did not have data. Re-import with 'Update existing = ON' wipes existing Close data wherever CSV is blank. Three months of rep-entered notes on Title and Industry get cleared in one import.
How to avoid: For enrichment imports: strip CSV down to ONLY columns being updated. Or set 'Skip empty values' if Close version supports it. Test on 20 rows + spot-check before scaling.
No monthly hygiene cadence
What goes wrong: One heroic cleanup at workspace launch. Six months later: 20% duplicate Leads, 200 orphan Opportunities, custom fields with 12 spelling variants. Reps lose trust. Search returns multiple matches for the same company. Pipeline reports are guesses.
How to avoid: Monthly 1-hour hygiene block. Owner assigned. Checklist documented. Without the cadence, the cleanup decays in 90 days.
Recap
Done — what's next
How to set up Close CRM from scratch for an outbound-heavy sales team
Read the next tutorial
Hand it off
Import + dedup discipline is invisible work that compounds for years. A specialist who has migrated 30+ workspaces knows which fields to normalize, which dedup-keys to enforce, and how to set up the monthly cadence. EverestX Close specialists handle this at $14-16/hr — typically $200-500 for a clean migration + first cleanup.
See specialist rates
Close handles up to 100,000 rows per import job in practice (no hard documented limit). For larger imports (200K+), split into batches of 50-100K — single-job imports past 100K are slower and harder to roll back if something goes wrong. Always test the field mapping on a 20-row file first regardless of total volume.
Partially. Close keeps an import log (Settings → Import → History) showing all records created in a given import. You can bulk-select those records and delete from the Leads/Contacts view. Updates to existing records are NOT reversible from the import history — Close does not snapshot pre-update values. Always export a backup before any 'Update existing = ON' import.
Export from the source as CSV (Contacts, Companies, Deals, Activities). Map to Close objects: Companies → Leads, Contacts → Contacts, Deals → Opportunities. Import in that order. For activity history (calls, emails, notes), export separately and use Close's API to attach to the right Leads. For migrations >10K records or with custom objects, hire a specialist — DIY at this scale typically loses 10-20% of data fidelity.
Yes via integrations: Apollo, ZoomInfo, Clearbit, Hunter all have Close integrations that enrich Leads/Contacts on creation. Configure carefully — auto-enrichment on every Lead burns enrichment credits and writes data on records you'll never call. Better: trigger enrichment only when a Lead reaches Qualified status (via Workflow).
Same field, two names. The 'url' field on Lead = company website domain (acme.com). Close uses this as the dedup key for Leads. Always include it on every import row. Even rough domains ('placeholder.com' for unknowns) are better than blank — blank URL = new Lead created on every re-import.
Close
Close is built for sales reps who pick up the phone 60+ times a day. It is fast, opinionated, and easy to break in the first month by treating it like HubSpot or Salesforce. Here is the from-scratch sequence that holds up once dial volume ramps.
Close
Close Opportunities are the canonical deal object. Pipelines (Opportunity Statuses) are how you forecast. Set them up wrong, the weighted pipeline number is fiction. Set them up right, the Monday review is grounded in real data. Here is the discipline.
Close
DIY Close is a great idea — until reps stall at 40 dials/day, Sequences burn the sender domain, and numbers start going spam-likely. This is the honest framework for when the cost of self-managing exceeds the cost of hiring help, and how to tell which side you are on.