30-minute emergency response · 8:00-18:00 UK time

Why Is Zoho CRM Skipping Records When I Import a CSV?

When Zoho CRM skips records during a CSV import, the cause is almost always one of seven things: missing mandatory fields, picklist mismatches, duplicate checks, an invalid record owner, date or number format problems, email validation or layout-specific mandatory rules. Download the skipped-records file, fix the source data and re-import only the failures.

Why is Zoho CRM skipping records on my import?

Zoho CRM skips a record during a CSV import when something about that row fails a check: a mandatory field is blank, a picklist value does not match, the row trips the duplicate check, the record owner is invalid, a date or number is in the wrong format, an email address fails validation or the target layout has its own mandatory rules. Those seven causes cover nearly every skipped record we’re asked to investigate.

The good news is that Zoho records the exact reason for every skip. The bad news is that you have to download a file to see it, so most people never do. Start there before touching anything else.

Where is the skipped records file?

Go to Setup > Data Administration > Import. You’ll see a history of recent imports with counts against each one for records added, updated and skipped. Click into the import and download the skipped records file.

The file contains every rejected row exactly as it appeared in your CSV, plus a column stating why Zoho refused it. Sort by that column and you’ll usually find that one or two reasons account for almost everything.

One hard limit to know about: the skipped records file caps out at 10,000 rows. If your import skipped 30,000 records, you get reasons for the first 10,000 and nothing for the rest. For large jobs, keep each batch comfortably under 10,000 rows so no failure drops out of sight. Tedious, but far less tedious than guessing.

The reason text itself is terse and occasionally misleading, so the sections below translate the common ones into actual fixes.

Is a mandatory field missing or blank?

The most common cause. Every module has mandatory fields: Last Name on Leads and Contacts, Account Name on Accounts and so on, plus anything your admin has marked as required. A row missing any of them is skipped.

This happens in two ways. Either the column was never mapped during the import wizard, or it was mapped but some cells are blank. The wizard warns you about the first. It says nothing about the second, which is how an import succeeds for 4,800 rows and skips 200.

Check which fields are mandatory under Setup > Customization > Modules and Fields, open the module and look for the required flag on the layout. Then filter your source file for blanks in those columns and fill them before re-importing.

Does a picklist value not match?

If your CSV says “Hot Lead” and the picklist value in CRM is “Hot”, the row can be skipped. Matching is exact, so a trailing space, a different case or an ampersand where CRM has the word “and” is enough to fail.

Whether Zoho skips the row or quietly adds the unknown value to the picklist depends on how the field is configured, so don’t rely on either behaviour. Open the field under Setup > Customization > Modules and Fields, view its picklist values and make your source data match them character for character. A find-and-replace in the CSV takes two minutes and removes the ambiguity entirely.

Has the duplicate check skipped them deliberately?

This is the cause people miss. During the wizard, Zoho asks what to do when a row matches an existing record on a chosen field, typically Email or Record Id. If you selected Skip, every matching row lands in the skipped total, because that’s the option you picked.

The reason column will say a duplicate was found and name the matching field. If those rows were meant to update existing records instead of creating new ones, re-run the import with Overwrite selected, so the existing records are refreshed from your file.

Is the record owner invalid?

If you mapped a Record Owner or Lead Owner column, every value in it must correspond to an active user, normally identified by their CRM login email address. Rows pointing at a deactivated user, a misspelt address or someone who never had a licence get skipped.

Check Setup > Users and Control > Users and compare the active list against the owner values in your file. The usual culprit is a salesperson who left the company months ago. Reassign their rows to a current user in the CSV before importing, or leave the owner column unmapped, let the records default to you and reassign inside CRM afterwards.

Are your dates or numbers in the wrong format?

The import wizard asks you to declare the date format of your file. Every date in the column must then match it. A file with 12/04/2026 in some rows and 2026-04-12 in others will import some records and skip the rest, which looks random until you spot it.

Excel is the villain here more often than Zoho is. Opening a CSV in Excel silently rewrites dates into your local format and strips leading zeros while it’s at it. If you must edit in Excel, format the date columns as text first, or check the finished file in a plain text editor before uploading.

Number fields fail for blunter reasons: currency symbols, commas as thousand separators or text like “N/A” sitting in a numeric column. Strip all of it. CRM wants 12500, not £12,500.

Are email addresses failing validation?

Email fields validate syntax on import. Addresses with spaces, a missing @ or no domain are rejected, as are cells holding two addresses separated by a semicolon, which is remarkably common in exported data. Placeholders like “no email” fail too, obviously, yet they turn up in almost every legacy export we see.

Clean the column before import: one valid address per cell or leave it empty. If Email is also your duplicate-check field, an invalid address has knock-on effects, so give this column extra care.

Do layout-specific mandatory rules apply?

In modules with multiple layouts, each layout can mark its own fields as mandatory. The import wizard asks which layout the records should go into and the rows are judged against that layout’s rules. A field that’s optional on your default layout can be required on the one you picked, which produces skips that make no sense until you check the right layout.

Open Setup > Customization > Modules and Fields, select the module, then the specific layout you imported into and review which fields carry the required flag there. If the module uses validation rules as well, review those at the same time.

How do I re-import skipped records without creating duplicates?

Resist the urge to fix the CSV and re-upload the whole thing. The records that imported successfully the first time are already in CRM and a second full import is exactly how people end up with thousands of duplicates.

The safe sequence:

  1. Download the skipped records file. Work from that file only.
  2. Fix the issues the reason column describes and nothing else.
  3. Re-import the corrected file, mapping it exactly as before.
  4. On the duplicate-handling step, choose Skip on a reliable unique field such as Email, or better, a unique custom ID field if your data has one. Any row that somehow already exists is then left alone.
  5. Run a small test batch first, fifty rows or so, then check the results in CRM before committing the rest.

If a botched run has already created duplicates, check Import History promptly: a recent import can be undone from there, which removes everything that import created in one action. Past that window you’re into Zoho’s deduplication tools, which work but are slow at volume. If the duplication problem is bigger than one import, for example two whole CRM accounts holding overlapping data, see our guide on merging two Zoho CRM accounts.

One more behaviour worth knowing: records that arrive by import do not always fire your automations. If you expected workflows to run on the imported data and nothing fired, that’s a separate problem with its own causes. We cover it in why Zoho CRM workflows do not trigger.

Quick diagnostic checklist

  1. Download the skipped records file from Setup > Data Administration > Import and sort by the reason column.
  2. Were more than 10,000 rows skipped? Re-run in smaller batches so every reason is visible.
  3. Check mandatory fields are mapped with no blank cells in those columns.
  4. Compare picklist values in the file against the values configured in CRM, character for character.
  5. Read the duplicate reasons: did you choose Skip for duplicates on purpose?
  6. Confirm every record owner value matches an active user’s email address.
  7. Check date formats are consistent through every row and numbers carry no symbols or separators.
  8. Validate the email column: one syntactically valid address per cell.
  9. Confirm which layout you imported into and check its mandatory fields specifically.

When an import is worth handing over

A few hundred contacts from a spreadsheet is a job you can finish yourself with the checks above. Tens of thousands of records across related modules, with owners, notes and attachments coming out of another system, is a different kind of job and a half-imported dataset is genuinely worse than not having started. This is the point where most people should stop and get help.

Import failures are bread-and-butter work for our Zoho CRM consultants and full system moves are handled under our migration service. Prices are published on the pricing page and the discovery consultation is free, so get in touch and we’ll tell you whether your import is a quick fix or a proper project.

Frequently asked questions

Where do I find the records Zoho CRM skipped during an import?

Go to Setup > Data Administration > Import, open the relevant import in the history list and download the skipped records file. It contains every rejected row plus a reason column explaining why each one failed, up to a limit of 10,000 rows per import.

Why does Zoho CRM count duplicates as skipped records?

Because you told it to. The import wizard asks how to handle rows that match an existing record on a chosen field and if you selected Skip, every match is counted in the skipped total. Check the reason column before changing anything.

What is the 10,000 skipped records limit in Zoho CRM imports?

The skipped records file you download from Import History contains at most 10,000 rows. If an import skipped more than that, you can't see the reasons for the remainder. Import large datasets in batches comfortably under 10,000 rows so every failure stays visible, then fix and re-run.

How do I re-import skipped records without creating duplicates?

Fix the issues listed in the skipped records file, then re-import just that file instead of the original CSV. In the wizard, set duplicate handling to Skip on a unique field such as Email or a unique custom ID, so any record that already imported is left untouched.

Keep reading

More Zoho guides

Someone Deleted Records in Zoho CRM. How Do I Get Them Back?

How to recover deleted records in Zoho CRM: the 60-day recycle bin, who can restore, the audit log, backups and what is truly gone. A UK consultant's guide.

Read →

Why Has My Zoho Books UK Bank Feed Stopped Working?

Fix a broken UK bank feed in Zoho Books: 90-day consent lapses, silent refreshes, duplicates after reconnecting and a CSV fallback workflow, from a UK Zoho team.

Read →

Stuck on something like this?

Our emergency service puts a senior Zoho developer on your problem within 30 minutes during UK business hours - or book a free consultation for anything less urgent.