or currency symbols\n\n**Relational Integrity:**\n- [ ] All picklist/dropdown values match exact CRM options (case-sensitive in Salesforce)\n- [ ] Owner fields use email address, not full name (avoids \"owner matches multiple users\" errors)\n- [ ] Required fields have values in every row (no blanks in mandatory columns)\n- [ ] Lookup field IDs are valid 15 or 18-character Salesforce IDs (if applicable)\n\n**Uniqueness:**\n- [ ] Email addresses are unique (no duplicates within the file for contact imports)\n- [ ] Record IDs (if updating existing records) match actual IDs in your CRM\n- [ ] Product handles/SKUs are unique (for e-commerce platform imports)\n\n**Scale:**\n- [ ] File size under platform limit (Salesforce: 5MB/import wizard, HubSpot: no hard cap but 10MB recommended, Shopify: no official limit but 1,000 variant/day limit applies)\n- [ ] Row count within batch size (Salesforce Data Import Wizard: 50,000 max)\n\n\u003c!-- [Screenshot: SplitForge Data Validator showing a pre-import report for a 25,000-row contact list — green checkmarks for structure and uniqueness, yellow warnings for 3 columns with mixed date formats, red flags for 142 invalid email formats and 29 records missing required \"Company Name\" field] -->\n\n🔧 **Run this entire checklist automatically in seconds**\n\n**[Auto-Validate Your Import File →](/tools/data-validator)**\n\n---\n\n## Salesforce Import Errors: Causes and Fixes\n\nSalesforce has two main import tools: the Data Import Wizard (up to 50,000 records, web UI) and the Data Loader (bulk operations, command-line). Error behavior differs between them, but the underlying causes are the same.\n\n\u003c!-- [Screenshot: Salesforce Data Import Wizard error summary screen showing categories: Field Mapping (0 errors), Validation Rules (23 errors), Duplicate Detection (14 errors), Required Fields (8 errors) — with download error log button highlighted] -->\n\n### Error: \"Bad Value for Restricted Picklist Field\"\n\n**What it means:** A value in your CSV does not exactly match an existing picklist option in Salesforce. Picklist fields in Salesforce are strict—\"Hot,\" \"hot,\" and \"Hot Lead\" are three different values and only one of them (the one in the picklist) is valid.\n\n**Where it appears:** Record-level error in the failure log. The row is rejected entirely.\n\n**How to fix it:**\n1. Export your org's picklist values: Setup → Object Manager → [Object] → Fields & Relationships → [Field] → Values\n2. Open your CSV and run a find-replace for every variant of the wrong value\n3. If you need to add new picklist values, do it in Salesforce *before* importing\n\n**Prevention:** Before every Salesforce import, export a test record from the target object to see exact picklist values in use. Use those as your CSV template.\n\n\u003c!-- [Screenshot: Salesforce Setup → Object Manager → Lead → Lead Status picklist values — showing exact values \"Open - Not Contacted\", \"Working - Contacted\", \"Closed - Converted\", \"Closed - Not Converted\" — these are the exact strings required in the import CSV] -->\n\nOur detailed guide on [fixing Salesforce bad value restricted picklist errors](/blog/salesforce-bad-value-restricted-picklist) covers the multi-value picklist edge case and how to handle historical data with deprecated picklist values.\n\n🔧 **Standardize all picklist values across 50,000+ rows instantly**\n\n\n**[Fix Picklist Mismatches →](/tools/data-cleaner)**\n\n\n### Error: \"Invalid Number: [Field Name]\"\n\n**What it means:** A number field received a value it cannot parse—most commonly because your CSV has comma-formatted numbers (\"10,000\" instead of \"10000\") or currency symbols (\"$5,000\" instead of \"5000\").\n\n**The silent failure variant:** Salesforce may report the row as a success in the import log, but when you check the record, the number field is blank. This happens with the Data Import Wizard specifically. Data Loader is more likely to fail the row explicitly.\n\n**How to fix it:**\n1. In Excel/Sheets, select the number column\n2. Format → Number → No decimal places, no thousands separator\n3. For currency fields, use Find & Replace to remove ` CRM Import Failures: Salesforce, HubSpot, Shopify & More (2026) - SplitForge Blog , `€`, `£`, and comma separators\n4. Save as CSV and re-import\n\nFor the full walkthrough including the silent-blank failure detection method, see our guide on [fixing Salesforce invalid number comma separator errors](/blog/salesforce-invalid-number-comma-separator).\n\n### Error: \"TRANSFER_REQUIRES_READ on [Object]\"\n\n**What it means:** You are trying to assign a record to an owner who does not have read access to the object. This commonly happens when importing leads or contacts with an Owner field that contains a username from a different permission set or org unit.\n\n**How to fix it:**\n1. Verify the assigned owner has at minimum Read access to the object\n2. If bulk-assigning to a queue, use the Queue's exact API name, not its label\n3. If the error is on a large subset of records, check whether those records are associated with an account type that restricts ownership transfer\n\nFor the full context, see [fixing the Salesforce TRANSFER_REQUIRES_READ error before CSV import](/blog/salesforce-transfer-requires-read-error-csv-import-fix).\n\n### Error: Date Format Rejected\n\n**What it means:** Salesforce's Data Loader expects dates in ISO 8601 format (YYYY-MM-DD) and DateTime in YYYY-MM-DDThh:mm:ssZ format. The Data Import Wizard is more forgiving but still fails on many European date formats.\n\n**Common failures:**\n- `21/02/2026` → fails (DD/MM/YYYY is not accepted)\n- `02-21-26` → fails (abbreviated year, wrong separator)\n- `February 21, 2026` → fails (text month)\n- `1740787200` → fails in UI (Unix timestamps work in API only)\n\n**How to fix it:** In Excel, select the date column, format as YYYY-MM-DD using a custom format string, then save as CSV. Google Sheets: use `=TEXT(A2, \"YYYY-MM-DD\")` to convert.\n\n\u003c!-- [Screenshot: Excel cell with date value \"21/02/2026\" in column A, formula bar showing conversion formula =TEXT(A2,\"YYYY-MM-DD\") in column B, output showing \"2026-02-21\" — clean Salesforce-ready date format] -->\n\n### Error: \"Duplicate Record Detected\"\n\n**What it means:** Salesforce's duplicate rules (configured in Setup → Duplicate Management) have flagged this record as matching an existing one. The import may still create the record or block it entirely, depending on your duplicate rule action setting.\n\n**How to fix it:**\n1. If you want to update existing records: export them first, note their Salesforce IDs, add an ID column to your import file, and use Upsert (Data Loader) instead of Insert\n2. If you want to block true duplicates: clean your file before import using [Remove Duplicates](/tools/remove-duplicates) on the email column, then reimport\n3. If you're getting false positives: temporarily disable the duplicate alert (not recommended for production orgs without admin sign-off)\n\n\u003c!-- [Screenshot: Salesforce Duplicate Management setup screen showing a duplicate rule for Lead object — matching conditions: Email equals, Last Name equals — Action on save: \"Allow\" with alert vs \"Block\" — showing which setting causes import failure vs warning] -->\n\n---\n\n## HubSpot Import Errors: Causes and Fixes\n\nHubSpot's import engine is more forgiving than Salesforce in some areas (it uses email as the primary deduplication key and handles partial matches gracefully) but has its own rigid requirements—especially around deal stages, contact associations, and property type matching.\n\n\u003c!-- [Screenshot: HubSpot import completion screen showing summary: 4,823 contacts imported successfully, 142 contacts with errors — \"Download error file\" button highlighted — error file shown as ZIP containing CSV with Error Code and Reason columns] -->\n\n### Error: \"Field Mapping Failed\" / Column Not Recognized\n\n**What it means:** HubSpot's auto-mapping could not match your column header to a known property. This happens because HubSpot matches on property internal name (e.g., `hs_lead_status`), not display label. If your column says \"Lead Status\" but the property's internal name is `hs_lead_status`, HubSpot may not auto-map it.\n\n**How to fix it:**\n1. Before importing, go to Settings → Properties → export the property list\n2. Match your CSV headers to the property internal names\n3. Alternatively, use HubSpot's mapping UI to manually assign each column during import setup—don't rely on auto-mapping for non-standard properties\n\n**The ghost column problem:** If HubSpot shows far more columns than you have data columns, you have blank columns in your file (hidden spaces or empty cells after the last data column). Select all columns to the right of your data in Excel and delete their contents before saving. See our detailed guide on [fixing HubSpot CSV field mapping failed errors](/blog/hubspot-csv-field-mapping-failed).\n\n🔧 **Find and remove ghost columns before upload**\n\n\n**[Clean Ghost Columns Automatically →](/tools/data-validator)**\n\n### Error: \"Invalid Value for Email Property\"\n\n**What it means:** The email column contains a value that fails RFC 5322 validation—multiple `@` signs, consecutive dots, spaces, unescaped quotes, or domains with no TLD.\n\n**HubSpot's behavior:** The entire row is rejected (not imported at all) when the email is invalid, because email is the unique identifier HubSpot uses to match and deduplicate contacts.\n\n**Common invalid patterns:**\n- `john.smith` (no @ or domain)\n- `john@[email protected]` (two @ signs)\n- `[email protected]` (consecutive dots)\n- `\"john smith\"@company.com` (unescaped quotes)\n- `john@company` (no TLD)\n\n**How to fix it:** Use [Data Validator](/tools/data-validator) to flag every invalid email in a column before upload. Regex pattern for valid email: `^[a-zA-Z0-9._%+\\-]+@[a-zA-Z0-9.\\-]+\\.[a-zA-Z]{2,} CRM Import Failures: Salesforce, HubSpot, Shopify & More (2026) - SplitForge Blog . Our guide on [cleaning 100,000-row email lists in under 5 minutes](/blog/clean-100000-row-email-list) covers bulk validation at scale.\n\n\u003c!-- [Screenshot: SplitForge Data Validator results showing email column audit — 4,823 valid, 142 invalid — invalid emails listed with specific violation type: \"Missing domain\", \"Multiple @ signs\", \"Invalid TLD\", \"Contains spaces\" — Export Flagged Rows button visible] -->\n\n\n### Error: \"Duplicate Records in Import File\"\n\n**What it means:** Two or more rows in your CSV have the same email address. HubSpot will import one and skip the rest. Which one it keeps depends on row order.\n\n**Why this matters beyond import counts:** If you are importing an event attendee list merged from multiple sources, duplicates create artificially inflated enrollment counts for list-based workflows. Marketing automation runs against the surviving record—not both—meaning follow-up sequences may fire for only half the intended audience.\n\n**How to fix it:**\n1. Before import, sort your CSV by email, then manually review duplicates to decide which row to keep\n2. For large files, use [Remove Duplicates](/tools/remove-duplicates) to deduplicate on the email column—keeping either the first or last occurrence\n\nOur benchmark on [removing duplicates from 10 million rows in 23 seconds](/blog/remove-duplicates-benchmark-10m-rows) shows what client-side deduplication looks like at scale.\n\n🔧 **Remove duplicate contacts before HubSpot import—no upload required**\n\n\n**[Remove Duplicates Locally →](/tools/remove-duplicates)**\n\n### Error: \"Deal Stage Invalid\" / \"Pipeline Not Found\"\n\n**What it means:** The Deal Stage or Pipeline value in your CSV does not match an existing stage in HubSpot. Unlike contacts (where invalid property values are ignored and the record is still created), Deal Stage validation is hard—records with an invalid deal stage are rejected entirely.\n\n**How to fix it:**\n1. In HubSpot, navigate to Settings → CRM → Deals → Pipelines\n2. Export or note the exact stage names (they are case-insensitive in HubSpot, but the label must match exactly)\n3. If your stage names differ, use find-replace to standardize before import\n\n\n### Error: \"Owner Does Not Match a User in HubSpot\"\n\n**What it means:** The record owner value in your CSV (usually a name like \"John Smith\") matches more than one user in your HubSpot portal, or matches zero users. The record is imported but the Owner field is left blank.\n\n**How to fix it:** Use email addresses for the Owner column instead of display names. HubSpot resolves owners by email reliably; name resolution fails whenever two users share a name or when the name in your file differs from the HubSpot display name by a single character.\n\n---\n\n## Shopify CSV Import Errors: Causes and Fixes\n\nShopify's product CSV importer is stricter than most CRM importers because product data has relational constraints (handle → variant → image chain) and strict field type enforcement. Shopify's 2026 import engine rejects malformed rows without logging a detailed reason in the UI—you get \"X products failed to import\" with minimal guidance.\n\n\u003c!-- [Screenshot: Shopify Admin → Products → Import — completion notification showing \"42 products imported successfully, 8 products failed to be imported due to invalid information. Download the error report.\" — arrow pointing to the download button] -->\n\n### Error: \"Invalid CSV Header: Missing Headers\"\n\n**What it means:** The required header columns are not present. Shopify requires specific column headers in a specific format. The minimum required header row is:\n\n```\nHandle,Title,Body (HTML),Vendor,Type,Tags,Published,Option1 Name,Option1 Value,Variant SKU,Variant Price,Variant Inventory Qty,Image Src\n```\n\n**Common cause:** Downloading a Shopify CSV export, opening in Excel, saving without UTF-8 encoding, or having Excel convert the comma-delimited format. The header row gets corrupted or truncated.\n\n**How to fix it:**\n- Always export a sample from Shopify first and use it as your template\n- Save your file as \"CSV UTF-8\" (not just \"CSV\") in Excel\n- Never open a Shopify CSV in Excel and re-save it without checking encoding\n\n### Error: \"Validation Failed: Options Are Not Unique\"\n\n**What it means:** Two or more variant rows for the same product have identical option combinations. Shopify treats Size: M / Color: Black as a unique variant—you cannot have two rows with Handle: \"t-shirt\" and Option1: \"M\" / Option2: \"Black.\"\n\n**How to fix it:** Sort your CSV by Handle, then by Option1/Option2, and look for rows with identical combinations. Either merge them (keeping the one with the correct price/inventory) or add a differentiating option.\n\n### Error: \"Validation Failed: Price Can't Be Blank\"\n\n**What it means:** The `Variant Price` column has an empty or non-numeric value in one or more rows.\n\n**Common cause:** Excel auto-formatting. When a price column contains `$14.99`, Excel may interpret and strip the currency symbol when saving as CSV, leaving a blank or a value with formatting artifacts.\n\n**How to fix it:** In Excel, format the price column as \"Number\" with 2 decimal places before saving. Ensure no cells in the column are blank or contain currency symbols.\n\n### Shopify's 1,000 Variant/Day Limit\n\nNon-Plus Shopify stores can create a maximum of 1,000 new product variants per 24-hour period via CSV import. If your import creates more than 1,000 new variants, the import will appear to complete but many variants will be silently skipped.\n\n**Detection:** After import, compare variant counts in Shopify against your CSV. If the numbers don't match and you imported more than 1,000 lines, you've hit this limit.\n\n**Fix:** Split your product CSV into multiple files of ≤1,000 variants each and import across multiple days.\n\nFor large catalog migrations, [splitting CSVs while preserving row relationships](/blog/split-large-csv-files) is the right approach. Our [guide to cleaning product catalog CSVs for Shopify and WooCommerce](/blog/clean-product-catalog-csv-shopify-woocommerce) covers the full catalog import workflow. If your catalog also lists on Amazon Seller Central, see [fixing the invalid SKU format error in Amazon CSV imports](/blog/amazon-seller-csv-invalid-sku-format)—the handle and SKU requirements differ significantly between platforms.\n\n\u003c!-- [Screenshot: SplitForge CSV Splitter — 8,000-row product CSV loaded → split by row count → set to 900 rows per file → output: 9 files — showing file 1/9 through 9/9 in download list — 10 seconds] -->\n\n---\n\n## Airtable and QuickBooks Import Errors\n\n### Airtable: \"Invalid Date Format\"\n\nAirtable expects dates in ISO 8601 format (YYYY-MM-DD) for date fields and will silently drop values that don't match. Unlike Salesforce, Airtable won't tell you which rows failed date validation in the import UI—you'll see blank date fields on records you expected to be populated.\n\n**Fix:** Before importing to Airtable, convert all date columns to YYYY-MM-DD format. In Excel: select the date column → Format Cells → Custom → `YYYY-MM-DD`. Our guide on [fixing Airtable CSV invalid date format errors](/blog/airtable-csv-invalid-date-format) covers the mixed-date-format scenario where a single column has three different date formats from different data sources.\n\n\u003c!-- [Screenshot: SplitForge Data Cleaner — date column showing mixed formats: \"02/21/2026\", \"21 Feb 2026\", \"2/21/26\", \"2026-02-21\" → standardize all to YYYY-MM-DD → preview of uniform column → download — 6 seconds] -->\n\n🔧 **Standardize mixed date formats across 1M+ rows instantly**\n\n\n**[Fix Date Formats →](/tools/data-cleaner)**\n\n### QuickBooks: \"Continue Button Grayed Out\"\n\nThis error prevents the import from starting at all. The Continue button in QuickBooks' CSV import wizard goes gray when the file has structural problems: wrong number of columns, a header row it doesn't recognize, or blank rows before the data begins.\n\n**Fix:**\n1. Delete all blank rows above and below your data\n2. Ensure the column headers exactly match QuickBooks' expected format (export a sample from QuickBooks first)\n3. Remove any merged cells (if the file was originally an Excel workbook)\n4. Save as CSV UTF-8\n\nFor the full diagnostic, see [fixing QuickBooks CSV continue button grayed out](/blog/quickbooks-csv-continue-button-grayed).\n\n### QuickBooks: \"Zeros Not Allowed\" Import Error\n\nThis error appears when importing journal entries or transactions where a debit or credit amount column contains zero. QuickBooks requires every transaction line to have a non-zero amount in either Debit or Credit—a zero in both columns violates the double-entry accounting rule the importer enforces. Our full fix guide is at [fixing QuickBooks zeros not allowed CSV import error](/blog/quickbooks-csv-zeros-not-allowed-import-error-fix).\n\n---\n\n## Cross-Platform Data Quality Fixes\n\nThese four data quality issues cause import failures across all platforms. Fix them once before uploading anywhere.\n\n### 1. Duplicate Email Addresses\n\nThe single highest-volume cause of partial import failures across all CRMs. Before any contact or lead import, run deduplication on the email column.\n\n**SplitForge approach:** Use [Remove Duplicates](/tools/remove-duplicates), select Email as the deduplication key, choose \"Keep last occurrence\" (usually has the most recent data), download the cleaned file. For 100,000-row lists, this runs in under 5 seconds. For the business case on why deduplication matters before CRM upload, see [remove duplicate emails before CRM import](/blog/remove-duplicate-emails-before-crm-import).\n\n\u003c!-- [Screenshot: Remove Duplicates tool — email column selected as deduplication key — results: 87,432 unique records kept, 12,568 duplicates removed — showing the duplicate count by domain (gmail.com: 4,200 duplicates, company.com: 3,100 duplicates)] -->\n\n### 2. International Phone Number Formatting\n\nCRMs are opinionated about phone number format. Salesforce and HubSpot both accept multiple formats but normalize to E.164 internally. Shopify requires no specific format but validates length. If your list contains numbers from 50+ countries mixed with US numbers, you have a formatting problem.\n\nCommon failures:\n- `(555) 123-4567` → may fail country code detection\n- `+1-555-123-4567` → acceptable but inconsistent with `5551234567` in the same column\n- `0044 20 7946 0958` → UK number in trunk format, fails E.164 check\n\nThe [international phone number standardization guide](/blog/clean-international-phone-numbers-crm) covers the 50+ country format matrix. [SplitForge Data Cleaner](/tools/data-cleaner) handles bulk phone number normalization to E.164 format (e.g., `+15551234567`) that all major CRMs accept.\n\n🔧 **Standardize phone numbers from 50+ countries to E.164 — no code, no upload**\n\n\n**[Standardize Phone Numbers →](/tools/data-cleaner)**\n\n### 3. Date Format Normalization\n\nDifferent export sources use different date formats. When you merge data from Salesforce export (ISO 8601), a trade show scan (MM/DD/YYYY), and a European partner list (DD/MM/YYYY), you get a single column with three different date formats—and every CRM will silently drop the ones it doesn't recognize.\n\nDetection: Open the date column in a text editor (not Excel—Excel will auto-format and hide the problem). Look for values where the day/month interpretation is ambiguous (`02/03/2026`—is that February 3 or March 2?).\n\nFix: Sort by date column, identify format clusters, convert each cluster to YYYY-MM-DD using the appropriate conversion formula. Our guide on [fixing mixed date formats in CSV columns](/blog/csv-mixed-date-formats-same-column) has the exact Excel formulas for each format variant.\n\n### 4. Required Field Validation\n\nEvery CRM has required fields—fields that must have a value for the record to be created. Missing values in required fields cause row-level rejections that are easy to miss in large import files.\n\n**How to find them:**\n1. Export a single existing record from the target CRM object\n2. Note which fields are marked required in the field list\n3. Before import, run a blank-cell check on those columns in your CSV\n\n[SplitForge Data Validator](/tools/data-validator) profiles every column in your file: null percentage, data type, unique count. Any column with >0% null rate that maps to a required CRM field is a guaranteed partial failure.\n\n\n\u003c!-- [Screenshot: SplitForge Data Validator column profile — showing \"Company Name\" column: 89% populated, 11% null (2,231 rows) — warning badge reading \"Required field in HubSpot — 2,231 records will be imported without this field\" — Export Rows with Missing Values button] -->\n\n---\n\n## Salesforce vs HubSpot: Import Strictness Compared\n\nBoth are dominant CRMs. Their import engines behave very differently. Understanding the difference changes how you prep your file.\n\n| Dimension | Salesforce | HubSpot |\n|---|---|---|\n| **Primary deduplication key** | Salesforce ID (for updates) / Email (for leads) | Email (always) |\n| **Picklist enforcement** | Hard — row rejected if value doesn't exist | Soft — field blank, row still created |\n| **Required fields** | Hard — row rejected | Hard — row rejected |\n| **Invalid email** | Depends on field type | Hard — entire row rejected |\n| **Number with comma** | Silent blank (Wizard) / failure (Loader) | Silent blank |\n| **Date format** | Hard — ISO 8601 required for Loader | Soft — field blank |\n| **Deal stage** | N/A (Opportunity stage: soft drop) | Hard — deal rejected |\n| **Owner resolution** | Uses username / email | Uses email (name causes ambiguity) |\n| **Import row limit** | 50,000 (Wizard) / unlimited (Loader) | No hard cap, session timeout ~100K |\n| **Error reporting** | Downloadable failure log per import | Downloadable error CSV with error codes |\n| **Silent failures** | Common with Data Import Wizard | Common — HubSpot creates record regardless |\n\n**The key difference:** Salesforce fails loudly on strict fields (picklists, required fields, IDs) but can silently corrupt number and date fields. HubSpot fails loudly on emails (because email is the identity key) but silently drops almost everything else—creating records that look complete in the import count but are missing field values you need for automation and reporting.\n\nThis is why HubSpot imports often feel like they \"worked\" until your marketing sequences start firing on contacts with no phone number, no company, or no lifecycle stage. The import succeeded. The data didn't.\n\n\u003c!-- [Screenshot: Side-by-side — Left: Salesforce import failure log showing 45 hard rejections with error codes (FIELD_CUSTOM_VALIDATION_EXCEPTION, INVALID_FIELD_FOR_INSERT_UPDATE). Right: HubSpot import success screen showing \"4,823 contacts imported\" with small \"142 errors\" link — clicking reveals field-level failures that still created records] -->\n\n🔧 **Validate against Salesforce picklist rules AND HubSpot property types before you choose which file to upload where**\n\n**[Platform-Specific Pre-Import Validation →](/tools/data-validator)**\n\n---\n\n## Pre-Import Benchmark: What Clean Data Actually Looks Like\n\nImport success rates vary dramatically based on data quality at upload time. The following benchmarks are based on internal testing in February 2026 across 15 sample datasets (ranging from 5,000 to 75,000 rows) against live Salesforce Developer Edition, HubSpot Sales Hub Professional, and Shopify (non-Plus) accounts. Test environment: Chrome 132, Windows 11, 64GB RAM, Intel i5-12600KF. All datasets were sourced from real export formats (Salesforce report exports, trade show badge scanners, e-commerce catalog exports) with identifying information removed. Results vary by org configuration, active validation rules, duplicate detection settings, and data complexity.\n\n| Data State | Salesforce Success Rate | HubSpot Success Rate | Shopify Success Rate |\n|---|---|---|---|\n| Raw export, no cleaning | 58–65% | 70–78% | 62–70% |\n| After deduplication only | 72–80% | 83–88% | 72–80% |\n| After deduplication + type fixes | 87–93% | 91–96% | 88–94% |\n| After full pre-import validation | 97–99% | 98–99% | 96–99% |\n\nThe most consistent finding across all 15 datasets: **Salesforce orgs with active duplicate detection rules and restricted picklists have the highest raw failure rates** (58–65%) because both rule types reject rows outright rather than silently dropping field values. HubSpot's higher raw success rate (70–78%) reflects its more forgiving import behavior—it creates records even when field values fail, which inflates \"success\" counts while creating data quality debt downstream.\n\nThe gap between \"raw export, no cleaning\" and \"full pre-import validation\" represents hours of re-import cycles, manual record fixing, and data quality debt that persists in your CRM for months.\n\n\n\u003c!-- [Screenshot: Bar chart showing the four data states across three CRM platforms — color coded green for 97-99%, yellow for 87-93%, orange for 70-80%, red for 58-65% — labeled \"Pre-Import Data Quality Impact on CRM Success Rate\"] -->\n\nFor the performance benchmark of the underlying processing that powers pre-import validation at scale, see our detailed post on [processing 10 million CSV rows in 12 seconds](/blog/10-million-csv-rows-12-seconds-browser).\n\n---\n\n## FAQ\n\n### Why does my CRM import show \"success\" but records have blank fields?\n\nThis is a type mismatch or relational error that the CRM's import engine handles as a soft failure—the record is created but the problematic field value is silently dropped. Salesforce does this with invalid number formats (the row succeeds, the number field is blank). HubSpot does this with invalid property values for dropdown fields. The fix is to download HubSpot's error file (Settings → Imports → hover import → Download Error File) or Salesforce's failure log after import. These files show exactly which fields failed per row.\n\n### How do I import contacts without creating duplicates in HubSpot?\n\nHubSpot deduplicates contacts automatically on email address during import—if a contact with that email already exists, it will be updated, not duplicated. The problem is with contacts that have no email or have invalid emails: those are imported as net-new records regardless of whether they already exist. Before importing, [remove duplicate emails](/tools/remove-duplicates) from your file, then validate email format with [Data Validator](/tools/data-validator). Set the import to \"Update existing contacts\" if you want to update rather than add.\n\n### Salesforce keeps rejecting my picklist values even though they look correct. What am I missing?\n\nPicklist validation in Salesforce is case-sensitive and whitespace-sensitive. \"Hot Lead\" and \"Hot Lead \" (trailing space) are treated as different values. The most reliable fix: export the picklist values directly from Setup → Object Manager → Field → Values, copy-paste those exact strings into your CSV using find-replace, and verify there are no trailing spaces or hidden characters. Our guide on [Salesforce bad value restricted picklist errors](/blog/salesforce-bad-value-restricted-picklist) has the specific fix for multi-select picklist fields.\n\n### Why does Shopify silently skip products instead of showing me which ones failed?\n\nShopify's CSV import engine processes rows sequentially and stops logging errors after a threshold for large imports. To get useful error information, split your import file into smaller batches (under 500 rows). The error rate per batch is more visible and the fix-retry cycle is faster. For large catalog imports, our guide on [splitting large CSV files](/blog/split-large-csv-files) covers how to maintain row relationships (handle → variant → image) across split files.\n\n### My QuickBooks import says \"the data is not in the correct format\" but it looks fine. What's wrong?\n\nQuickBooks's CSV parser is sensitive to line endings and encoding. Files saved on Mac (LF line endings) or with non-standard encoding often trigger this generic error. The fix: open in a text editor, verify the encoding is UTF-8, and save with Windows-style CRLF line endings. If the error persists, check for any cell that contains a comma inside a value that isn't wrapped in quotes—QuickBooks's parser treats unquoted commas as column separators.\n\n### Is it safe to validate a CRM import file containing customer PII in an online tool?\n\nNo—for any file containing personal data. Uploading customer names, emails, phone numbers, or account data to a cloud validation tool creates data exposure risk under GDPR, CCPA, and sector regulations. SplitForge runs entirely in your browser—your file never leaves your machine. For teams processing customer data, see our full guide on [privacy-first data processing for GDPR and HIPAA compliance](/blog/privacy-first-data-processing-guide). Pre-import validation of sensitive data should always happen client-side.\n\n### How do I handle a 200,000-row CRM import that keeps timing out?\n\nMost CRM import tools have a per-import row limit or session timeout for large files. Salesforce's Data Import Wizard caps at 50,000 records per file; for larger loads, use Data Loader in batch mode. HubSpot handles large imports but times out on browser sessions—use the HubSpot API for imports over 100,000 records. For all platforms: split large files into chunks before attempting import. Use [CSV Splitter](/tools/csv-splitter) to divide the file, then import each chunk separately. Our guide on [batch processing 50+ CSV files without code](/blog/batch-process-csv-files) covers the multi-chunk import workflow.\n\n### What's the fastest way to standardize phone numbers for a CRM import from international event data?\n\nInternational phone number normalization is a two-step problem: detect the country of origin for each number, then apply the correct E.164 formatting. For data from known countries, prefix the country code manually in a helper column and strip non-numeric characters. For mixed-country data, use [SplitForge Data Cleaner's](/tools/data-cleaner) phone normalization feature, which handles E.164 conversion for 50+ country formats. Our complete guide on [cleaning international phone numbers for CRM import](/blog/clean-international-phone-numbers-crm) covers the format table for all major markets.\n\n---\n\n## Validate Before You Import with SplitForge\n\n✅ Detect invalid emails, duplicates, and blank required fields before upload \n✅ Validate against Salesforce picklist rules, HubSpot property types, and Shopify field requirements \n✅ Run against files with 10M+ rows—no upload, no cloud, no waiting \n✅ Export flagged rows for targeted fixing, not full-file re-processing \n✅ Zero data transmission—customer PII stays on your machine, GDPR-aligned and HIPAA-aligned by architecture \n✅ Works offline after initial load—validate sensitive CRM data completely air-gapped\n\n**[Validate Your CRM Import File →](/tools/data-validator)**\n\n---\n\n## Related Resources\n\n**Platform-Specific CRM Import Errors**\n- [Why Your CRM Rejects CSV Imports (Hidden Formatting Errors Revealed)](/blog/why-crm-rejects-csv-imports)\n- [Fix Salesforce 'Bad Value for Restricted Picklist Field' Error](/blog/salesforce-bad-value-restricted-picklist)\n- [Fix Salesforce TRANSFER_REQUIRES_READ Error Before CSV Import](/blog/salesforce-transfer-requires-read-error-csv-import-fix)\n- [Salesforce Invalid Number Comma Separator](/blog/salesforce-invalid-number-comma-separator)\n- [Salesforce Experience Cloud CSV Import: Fix Portal Errors (2026)](/blog/salesforce-community-cloud-csv-import)\n- [HubSpot CSV Import: Fix 'Field Mapping Failed' Error (2026 Guide)](/blog/hubspot-csv-field-mapping-failed)\n- [Keap (Infusionsoft) CSV Import: Fix Contact Upload Errors (2026)](/blog/keap-csv-import-errors)\n- [Close CRM CSV Import: Fix Lead and Contact Upload Errors (2026)](/blog/close-crm-csv-import-errors)\n- [Copper CRM CSV Import: Fix Google Workspace Upload Errors (2026)](/blog/copper-crm-csv-import-errors)\n- [Airtable CSV Import: Fix 'Invalid Date Format' Error (2026 Guide)](/blog/airtable-csv-invalid-date-format)\n- [Fix QuickBooks CSV 'Continue Button Grayed Out' Import Error](/blog/quickbooks-csv-continue-button-grayed)\n- [Fix QuickBooks 'Zeros Not Allowed' CSV Import Error](/blog/quickbooks-csv-zeros-not-allowed-import-error-fix)\n- [Stripe CSV Export to QuickBooks: Complete Import Guide (2026)](/blog/stripe-csv-export-quickbooks-import)\n- [Snowflake CSV Import Errors: Fix COPY INTO and Data Type Failures](/blog/snowflake-csv-import-errors)\n\n**Vertical and Use-Case Imports**\n- [WooCommerce CSV Import: Fix Product and Variation Errors (2026)](/blog/woocommerce-csv-import-errors)\n- [E-commerce to CRM: Import Orders, Customers, and Products (2026)](/blog/ecommerce-data-crm-import-csv)\n- [Real Estate CRM CSV Import: Fix MLS Data and Property Errors (2026)](/blog/real-estate-crm-csv-import)\n- [Healthcare CRM CSV Import: HIPAA Compliance and Patient Data Handling](/blog/healthcare-crm-csv-import-hipaa)\n- [Klaviyo to Mailchimp Migration: Export Subscribers Without Data Loss](/blog/klaviyo-to-mailchimp-migration-csv)\n- [How to Clean Product Catalog CSVs for Shopify/WooCommerce Imports](/blog/clean-product-catalog-csv-shopify-woocommerce)\n- [Fix 'Address Validation Failed' in MLS CSV Imports](/blog/mls-csv-import-address-validation-failed)\n- [Fix 'Invalid SKU Format' in Amazon Seller Central CSV](/blog/amazon-seller-csv-invalid-sku-format)\n- [How Accounting Firms Process Year-End CSV Reports 10x Faster](/blog/accounting-year-end-csv-reports)\n- [Fix 'Tax ID Format Invalid' Error in Accounting Software](/blog/fix-tax-id-format-invalid-accounting-csv)\n\n**Pre-Import Data Quality and Field Fixes**\n- [CRM Custom Field Validation: Fix Invalid Values Before Upload (2026)](/blog/crm-custom-field-validation-csv)\n- [Phone Validation for CRM Imports: Fix E.164 Format Errors (2026)](/blog/phone-number-validation-crm-import)\n- [Date Format Standardization for CRM: Fix MM/DD vs DD/MM Conflicts](/blog/date-format-standardization-crm-import)\n- [Remove Duplicate Emails Before CRM Import (Save Your Sender Score)](/blog/remove-duplicate-emails-before-crm-import)\n- [Clean International Phone Numbers for CRM: 50+ Countries](/blog/clean-international-phone-numbers-crm)\n- [How to Standardize Phone Numbers in CSV Files (For CRM Import)](/blog/standardize-phone-numbers-csv)\n- [Clean a 100,000-Row Email List in Under 5 Minutes](/blog/clean-100000-row-email-list)\n- [Fix Mixed Date Formats in CSV Column: 4 Methods (2025)](/blog/csv-mixed-date-formats-same-column)\n\n**Large-Volume Imports, Error Recovery, and Strategy**\n- [Batch CRM Import: Load 500K+ Records Without Timeouts (2026)](/blog/batch-crm-import-large-datasets)\n- [CRM Import File Size Limits: What Every Platform Allows (2026)](/blog/crm-import-file-size-limits)\n- [CRM Import Error Log: Read and Act on Failure Reports (2026)](/blog/crm-import-error-log-guide)\n- [How to Roll Back a Failed CRM Import: Recover Records Fast (2026)](/blog/crm-import-rollback-failed-import)\n- [CRM Import vs API: When to Use CSV Upload or Programmatic Load](/blog/crm-import-csv-vs-api)\n- [How to Split Large CSV Files Without Excel](/blog/split-large-csv-files)\n- [How to Fix CSV Import Errors in 5 Minutes (2025)](/blog/csv-import-error-fix-5-minutes)\n\n**CSV File Quality and Validation**\n- [15 Common CSV Errors and Instant Fixes (2025)](/blog/csv-troubleshooting-guide)\n- [CSV File Validation Before Upload Guide (2025)](/blog/csv-file-validation-guide)\n- [Validate CSV Files Before Import: Catch Errors in 10M Rows](/blog/validate-csv-before-import-catch-errors-automatically)\n- [Fix CSV Import Delimiter Errors (2025 Guide)](/blog/csv-import-failed-delimiter-problem)\n\n**Cost, Privacy, and Compliance**\n- [Duplicate Data Cost This Company $800/Quarter](/blog/duplicate-data-cost-company-800-quarter)\n- [How Duplicate Data Cost One Company $3,300/Year](/blog/duplicate-data-cost-case-study)\n- [The Hidden Cost of Manual CSV Processing](/blog/hidden-cost-manual-csv-processing)\n- [Privacy-First Data Processing: GDPR, HIPAA & Zero-Cloud Workflows (2026)](/blog/privacy-first-data-processing-guide)\n\n---\n\n## Run Your CRM File Through Validation Now\n\n✅ Detect invalid emails, blank required fields, and duplicate records before upload\n✅ Validate against Salesforce, HubSpot, Shopify, and Pipedrive field requirements\n✅ Files process locally in your browser — never uploaded, never retained, never at risk\n✅ Export only the flagged rows — fix a handful of errors, not the whole file\n\n**[Validate Your CRM File →](https://splitforge.app/tools/data-validator)**\n\n\u003c!-- INTENTIONAL OVERRIDES:\n- 6 CTA checkmarks (standard 3-4): Pillar post covering 6 distinct value props (detection, validation, scale, targeted fixing, privacy, offline). Each is genuinely distinct and relevant to the CRM audience. Reducing to 4 would lose offline capability and targeted row export — both high-value differentiators for enterprise CRM users.\n- Diagram placeholder retained as hidden HTML comment (line 84): Visual planned for production asset sprint.\n- Related Resources section positioned after CTA: Internal cluster links function differently from the external-only Additional Resources section. These 29 internal links are a ToC for the cluster, not external citations.\n-->"};
Navigated to blog › crm-import-failures-complete-guide
Back to Blog
crm-import

CRM Import Failures: Salesforce, HubSpot, Shopify & More (2026)

February 21, 2026
20
By SplitForge Team

CRM Import Failures: Salesforce, HubSpot, Shopify & More (2026)

Quick Answer

You uploaded the file. The progress bar filled. "Import complete." Then you opened the CRM and half the records have blank fields. Or 2,000 rows are simply gone. Or Salesforce threw 45 "Bad Value for Restricted Picklist Field" errors and you don't know which rows, which fields, or why.

CRM import failures are uniquely frustrating because they're silent. The platform often calls it a success. The data tells a different story.

Every failure traces to one of five root causes: structural problems in the file itself, data type mismatches, relational errors (picklist values your CRM doesn't recognize), uniqueness violations like duplicate emails, or permission and configuration blocks. The platform doesn't matter. Salesforce, HubSpot, Shopify, Airtable, QuickBooks—the same five causes, different error messages.

The fix is architectural: validate before upload, not after rejection. This guide covers every major error type across all five platforms with exact fixes, a cross-platform diagnostic matrix, and a pre-import framework that cuts failure rates from 40% to under 5%.

Already mid-failure? Jump straight to your platform:

Want to stop this happening again: run Data Validator on your file before the next upload. Catches every issue in seconds. Nothing leaves your machine.

🔧 Instant Fix: Catch every import error before it reaches your CRM

Validate Your CRM File Before Upload →


Table of Contents


Why CRM Imports Fail: The Root Cause Taxonomy

Every CRM import failure traces back to one of five root causes. Understanding the taxonomy before you open the error log saves hours of trial-and-error re-importing.

Root Cause 1: Structural Errors The file itself is malformed. Wrong delimiter (semicolons where CRM expects commas), extra blank columns after the data, a BOM character at the start of the file, or UTF-8 encoding with characters that the CRM's import engine misreads. These errors typically cause the entire import to reject before a single record is processed. If you get a "file cannot be parsed" or "invalid CSV format" error before reaching the field mapping screen, this is your problem. See our guide on fixing CSV delimiter and encoding problems for the full structural troubleshooting workflow.

Root Cause 2: Data Type Mismatches A CRM field expects a number, but your CSV contains "10,000" (with a comma). A date field expects YYYY-MM-DD, but your file has "21/02/26" (UK format). A picklist field expects exactly "Hot Lead," but your file has "Hot" or "hot lead." These errors let the file parse successfully but silently drop values or reject individual rows. They are the hardest to find because the import may report "success" while leaving fields blank.

Root Cause 3: Relational Errors CRMs are relational databases. Your CSV must reference values that already exist: picklist options, account IDs, owner email addresses, pipeline stage names. If your file references a stage named "Discovery Call" but the CRM only knows "Discovery," every row with that stage fails. Salesforce's picklist enforcement and HubSpot's deal stage validation are the most common triggers. This root cause is responsible for the majority of partial import failures—where the import completes but 20–60% of records are missing field values.

Root Cause 4: Uniqueness Violations CRMs enforce uniqueness on certain fields: email address for HubSpot contacts, Salesforce ID for Salesforce records, Handle for Shopify products. If your CSV has duplicate emails in a contact import, only one row per email makes it in. If you are importing 5,000 leads from an event list into HubSpot and 800 of them have emails already in the system, those 800 will merge (or fail, depending on your settings) rather than creating new records. Removing duplicate emails before import is the single highest-impact pre-import step for marketing list imports.

Root Cause 5: Permission and Configuration Errors The user running the import doesn't have write access to a field, or the field is controlled by a workflow that prevents manual update. In Salesforce, validation rules can silently reject records that violate business logic. In HubSpot, trying to import to a property that's set to read-only will silently drop that column's values. These errors are the most frustrating because the error message is often cryptic—or absent entirely.

For a broader overview of how CRM systems handle incoming data, our guide on why your CRM rejects CSV imports covers the architecture behind these validation layers.

CRM Import Error Diagnostic Matrix

Use this table to identify your error type, understand platform behavior, and go straight to the right fix.

Error TypeSalesforceHubSpotShopifyAirtableQuickBooksRow Rejected?Silent Drop?Fix Priority
Wrong delimiter / encoding Whole file fails Whole file fails Whole file fails Whole file fails Whole file failsYes — all rowsNoFix first
Missing required field Row rejected Row created, field blank Row rejected Row created, field blank Row rejectedPartialYes (HubSpot/Airtable)Fix before upload
Picklist value mismatch Row rejected Field dropped, row keptN/A Field dropped, row keptN/APartial (SF)Yes (HubSpot)High
Invalid email formatN/A Row rejectedN/AN/AN/AYesNoHigh
Duplicate email Depends on rules Merges to existingN/AN/AN/ANoNoMedium
Invalid date format Row rejected Field blankN/A Silent drop Row rejectedPartialYes (HubSpot/Airtable)Medium
Number with comma separator Silent blank Silent blankN/AN/A Row rejectedNo (SF/HS)YesMedium
Wrong owner / user name Owner field blank Owner field blankN/AN/AN/ANoYesLow
File over row limit Hard stop at 50K Timeout over 100K Variant limit at 1K/dayN/AN/AYes (beyond limit)NoPre-upload

🔧 Don't diagnose manually — scan your file and get the answer in seconds

Auto-Detect Your Error Type →


The Real Cost of Skipping Pre-Import Validation

Most teams treat CRM import errors as a minor inconvenience—spend 20 minutes fixing the file, try again. The actual cost is significantly higher.

The IBM Institute for Business Value's 2025 CDO study found that over a quarter of organizations lose more than $5 million annually due to poor data quality. U.S. businesses collectively lose an estimated $3.1 trillion per year to data quality problems according to IBM research, with CRM data being one of the primary vectors. For individual sales teams, the operational impact is concrete: Validity's 2025 State of CRM Data Management report found that 37% of teams report losing revenue directly attributable to poor CRM data quality. Sales reps waste an estimated 550 hours per year—nearly 14 working weeks—dealing with inaccurate CRM information including duplicate records and missing field values.

The specific cost of failed imports compounds over time. A typical scenario: a marketing team imports a 10,000-contact event list with 30% failure rate. The 3,000 failed records are either lost entirely, manually re-entered (at 3–5 minutes per record = 150–250 hours of work), or imported with blank fields that corrupt reporting and automation. The original bad import creates downstream errors for months: marketing automation triggering on incomplete profiles, sales reps calling numbers in the wrong format, and reporting dashboards showing inflated lead counts from duplicates.

Worse: 94% of organizations suspect their customer and prospect data is inaccurate, per Experian research, yet most validate after import rather than before. The fix is architectural: validate before upload, not after rejection. Our case studies on how duplicate data costs companies thousands per quarter and the hidden cost of manual CSV processing quantify what this looks like in practice.

What a Failed Import Actually Costs: A Real Scenario

A B2B marketing team finishes a three-day trade show. They collect 8,400 leads across badge scans, business cards, and a raffle form—three different data sources, three different formats. Monday morning, someone merges the lists in Excel and imports them into Salesforce. The import "succeeds."

What actually happened: 2,100 records failed silently—wrong picklist values for Lead Source, phone numbers formatted as "(555) 123-4567" instead of E.164, and 340 email addresses from the badge scanner with trailing spaces that Salesforce read as invalid. The remaining 6,300 records imported but 1,800 had blank Lead Source fields because the merge defaulted to an empty cell.

The sales team calls the 6,300. Pipeline projections are built off that number. Quota assignments go out. Two weeks later, someone notices the import log. The 2,100 "lost" leads are manually re-entered over three days—15 minutes per record, split across four SDRs. That's 525 hours of selling time gone. The pipeline projection was off by roughly $380,000.

The entire thing would have taken 4 minutes to catch with pre-import validation. Running Data Validator on the merged file would have surfaced every silent failure before a single record was submitted—picklist mismatches, email format errors, blank required fields, all flagged in one report, locally, without the data leaving the machine.

This is not a data engineering problem. It's a workflow timing problem. The data was fixable. The question is whether you fix it before the import or three weeks later, in a pipeline review meeting, in front of your VP of Sales.

🔧 Stop the bad-import cycle at the source — before it reaches your pipeline

Validate Once, Import Clean →


Pre-Import Data Quality Checklist

Run this checklist against any CSV before uploading to any CRM. It catches the top 10 causes of import failures across all platforms.

File Structure:

  • File is saved as UTF-8 CSV (not ANSI, not UTF-16)
  • No BOM character at start of file (open in text editor, check for  at line 1)
  • Single sheet only (Excel multi-tab files fail every CRM import)
  • Header row is row 1 with no blank columns to the right of your data
  • No blank rows between data rows or at the end of the file

Data Types:

  • Date fields match CRM-expected format (Salesforce: YYYY-MM-DD, HubSpot: MM/DD/YYYY by default)
  • Number fields contain only digits, no comma separators ("10000" not "10,000")
  • Boolean fields use only true/false or Yes/No (check your CRM's requirement)
  • Currency fields contain only numeric values, no $ or currency symbols

Relational Integrity:

  • All picklist/dropdown values match exact CRM options (case-sensitive in Salesforce)
  • Owner fields use email address, not full name (avoids "owner matches multiple users" errors)
  • Required fields have values in every row (no blanks in mandatory columns)
  • Lookup field IDs are valid 15 or 18-character Salesforce IDs (if applicable)

Uniqueness:

  • Email addresses are unique (no duplicates within the file for contact imports)
  • Record IDs (if updating existing records) match actual IDs in your CRM
  • Product handles/SKUs are unique (for e-commerce platform imports)

Scale:

  • File size under platform limit (Salesforce: 5MB/import wizard, HubSpot: no hard cap but 10MB recommended, Shopify: no official limit but 1,000 variant/day limit applies)
  • Row count within batch size (Salesforce Data Import Wizard: 50,000 max)

🔧 Run this entire checklist automatically in seconds

Auto-Validate Your Import File →


Salesforce Import Errors: Causes and Fixes

Salesforce has two main import tools: the Data Import Wizard (up to 50,000 records, web UI) and the Data Loader (bulk operations, command-line). Error behavior differs between them, but the underlying causes are the same.

Error: "Bad Value for Restricted Picklist Field"

What it means: A value in your CSV does not exactly match an existing picklist option in Salesforce. Picklist fields in Salesforce are strict—"Hot," "hot," and "Hot Lead" are three different values and only one of them (the one in the picklist) is valid.

Where it appears: Record-level error in the failure log. The row is rejected entirely.

How to fix it:

  1. Export your org's picklist values: Setup → Object Manager → [Object] → Fields & Relationships → [Field] → Values
  2. Open your CSV and run a find-replace for every variant of the wrong value
  3. If you need to add new picklist values, do it in Salesforce before importing

Prevention: Before every Salesforce import, export a test record from the target object to see exact picklist values in use. Use those as your CSV template.

Our detailed guide on fixing Salesforce bad value restricted picklist errors covers the multi-value picklist edge case and how to handle historical data with deprecated picklist values.

🔧 Standardize all picklist values across 50,000+ rows instantly

Fix Picklist Mismatches →

Error: "Invalid Number: [Field Name]"

What it means: A number field received a value it cannot parse—most commonly because your CSV has comma-formatted numbers ("10,000" instead of "10000") or currency symbols ("$5,000" instead of "5000").

The silent failure variant: Salesforce may report the row as a success in the import log, but when you check the record, the number field is blank. This happens with the Data Import Wizard specifically. Data Loader is more likely to fail the row explicitly.

How to fix it:

  1. In Excel/Sheets, select the number column
  2. Format → Number → No decimal places, no thousands separator
  3. For currency fields, use Find & Replace to remove $, , £, and comma separators
  4. Save as CSV and re-import

For the full walkthrough including the silent-blank failure detection method, see our guide on fixing Salesforce invalid number comma separator errors.

Error: "TRANSFER_REQUIRES_READ on [Object]"

What it means: You are trying to assign a record to an owner who does not have read access to the object. This commonly happens when importing leads or contacts with an Owner field that contains a username from a different permission set or org unit.

How to fix it:

  1. Verify the assigned owner has at minimum Read access to the object
  2. If bulk-assigning to a queue, use the Queue's exact API name, not its label
  3. If the error is on a large subset of records, check whether those records are associated with an account type that restricts ownership transfer

For the full context, see fixing the Salesforce TRANSFER_REQUIRES_READ error before CSV import.

Error: Date Format Rejected

What it means: Salesforce's Data Loader expects dates in ISO 8601 format (YYYY-MM-DD) and DateTime in YYYY-MM-DDThh:mm:ssZ format. The Data Import Wizard is more forgiving but still fails on many European date formats.

Common failures:

  • 21/02/2026 → fails (DD/MM/YYYY is not accepted)
  • 02-21-26 → fails (abbreviated year, wrong separator)
  • February 21, 2026 → fails (text month)
  • 1740787200 → fails in UI (Unix timestamps work in API only)

How to fix it: In Excel, select the date column, format as YYYY-MM-DD using a custom format string, then save as CSV. Google Sheets: use =TEXT(A2, "YYYY-MM-DD") to convert.

Error: "Duplicate Record Detected"

What it means: Salesforce's duplicate rules (configured in Setup → Duplicate Management) have flagged this record as matching an existing one. The import may still create the record or block it entirely, depending on your duplicate rule action setting.

How to fix it:

  1. If you want to update existing records: export them first, note their Salesforce IDs, add an ID column to your import file, and use Upsert (Data Loader) instead of Insert
  2. If you want to block true duplicates: clean your file before import using Remove Duplicates on the email column, then reimport
  3. If you're getting false positives: temporarily disable the duplicate alert (not recommended for production orgs without admin sign-off)

HubSpot Import Errors: Causes and Fixes

HubSpot's import engine is more forgiving than Salesforce in some areas (it uses email as the primary deduplication key and handles partial matches gracefully) but has its own rigid requirements—especially around deal stages, contact associations, and property type matching.

Error: "Field Mapping Failed" / Column Not Recognized

What it means: HubSpot's auto-mapping could not match your column header to a known property. This happens because HubSpot matches on property internal name (e.g., hs_lead_status), not display label. If your column says "Lead Status" but the property's internal name is hs_lead_status, HubSpot may not auto-map it.

How to fix it:

  1. Before importing, go to Settings → Properties → export the property list
  2. Match your CSV headers to the property internal names
  3. Alternatively, use HubSpot's mapping UI to manually assign each column during import setup—don't rely on auto-mapping for non-standard properties

The ghost column problem: If HubSpot shows far more columns than you have data columns, you have blank columns in your file (hidden spaces or empty cells after the last data column). Select all columns to the right of your data in Excel and delete their contents before saving. See our detailed guide on fixing HubSpot CSV field mapping failed errors.

🔧 Find and remove ghost columns before upload

Clean Ghost Columns Automatically →

Error: "Invalid Value for Email Property"

What it means: The email column contains a value that fails RFC 5322 validation—multiple @ signs, consecutive dots, spaces, unescaped quotes, or domains with no TLD.

HubSpot's behavior: The entire row is rejected (not imported at all) when the email is invalid, because email is the unique identifier HubSpot uses to match and deduplicate contacts.

Common invalid patterns:

How to fix it: Use Data Validator to flag every invalid email in a column before upload. Regex pattern for valid email: ^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$. Our guide on cleaning 100,000-row email lists in under 5 minutes covers bulk validation at scale.

Error: "Duplicate Records in Import File"

What it means: Two or more rows in your CSV have the same email address. HubSpot will import one and skip the rest. Which one it keeps depends on row order.

Why this matters beyond import counts: If you are importing an event attendee list merged from multiple sources, duplicates create artificially inflated enrollment counts for list-based workflows. Marketing automation runs against the surviving record—not both—meaning follow-up sequences may fire for only half the intended audience.

How to fix it:

  1. Before import, sort your CSV by email, then manually review duplicates to decide which row to keep
  2. For large files, use Remove Duplicates to deduplicate on the email column—keeping either the first or last occurrence

Our benchmark on removing duplicates from 10 million rows in 23 seconds shows what client-side deduplication looks like at scale.

🔧 Remove duplicate contacts before HubSpot import—no upload required

Remove Duplicates Locally →

Error: "Deal Stage Invalid" / "Pipeline Not Found"

What it means: The Deal Stage or Pipeline value in your CSV does not match an existing stage in HubSpot. Unlike contacts (where invalid property values are ignored and the record is still created), Deal Stage validation is hard—records with an invalid deal stage are rejected entirely.

How to fix it:

  1. In HubSpot, navigate to Settings → CRM → Deals → Pipelines
  2. Export or note the exact stage names (they are case-insensitive in HubSpot, but the label must match exactly)
  3. If your stage names differ, use find-replace to standardize before import

Error: "Owner Does Not Match a User in HubSpot"

What it means: The record owner value in your CSV (usually a name like "John Smith") matches more than one user in your HubSpot portal, or matches zero users. The record is imported but the Owner field is left blank.

How to fix it: Use email addresses for the Owner column instead of display names. HubSpot resolves owners by email reliably; name resolution fails whenever two users share a name or when the name in your file differs from the HubSpot display name by a single character.


Shopify CSV Import Errors: Causes and Fixes

Shopify's product CSV importer is stricter than most CRM importers because product data has relational constraints (handle → variant → image chain) and strict field type enforcement. Shopify's 2026 import engine rejects malformed rows without logging a detailed reason in the UI—you get "X products failed to import" with minimal guidance.

Error: "Invalid CSV Header: Missing Headers"

What it means: The required header columns are not present. Shopify requires specific column headers in a specific format. The minimum required header row is:

Handle,Title,Body (HTML),Vendor,Type,Tags,Published,Option1 Name,Option1 Value,Variant SKU,Variant Price,Variant Inventory Qty,Image Src

Common cause: Downloading a Shopify CSV export, opening in Excel, saving without UTF-8 encoding, or having Excel convert the comma-delimited format. The header row gets corrupted or truncated.

How to fix it:

  • Always export a sample from Shopify first and use it as your template
  • Save your file as "CSV UTF-8" (not just "CSV") in Excel
  • Never open a Shopify CSV in Excel and re-save it without checking encoding

Error: "Validation Failed: Options Are Not Unique"

What it means: Two or more variant rows for the same product have identical option combinations. Shopify treats Size: M / Color: Black as a unique variant—you cannot have two rows with Handle: "t-shirt" and Option1: "M" / Option2: "Black."

How to fix it: Sort your CSV by Handle, then by Option1/Option2, and look for rows with identical combinations. Either merge them (keeping the one with the correct price/inventory) or add a differentiating option.

Error: "Validation Failed: Price Can't Be Blank"

What it means: The Variant Price column has an empty or non-numeric value in one or more rows.

Common cause: Excel auto-formatting. When a price column contains $14.99, Excel may interpret and strip the currency symbol when saving as CSV, leaving a blank or a value with formatting artifacts.

How to fix it: In Excel, format the price column as "Number" with 2 decimal places before saving. Ensure no cells in the column are blank or contain currency symbols.

Shopify's 1,000 Variant/Day Limit

Non-Plus Shopify stores can create a maximum of 1,000 new product variants per 24-hour period via CSV import. If your import creates more than 1,000 new variants, the import will appear to complete but many variants will be silently skipped.

Detection: After import, compare variant counts in Shopify against your CSV. If the numbers don't match and you imported more than 1,000 lines, you've hit this limit.

Fix: Split your product CSV into multiple files of ≤1,000 variants each and import across multiple days.

For large catalog migrations, splitting CSVs while preserving row relationships is the right approach. Our guide to cleaning product catalog CSVs for Shopify and WooCommerce covers the full catalog import workflow. If your catalog also lists on Amazon Seller Central, see fixing the invalid SKU format error in Amazon CSV imports—the handle and SKU requirements differ significantly between platforms.


Airtable and QuickBooks Import Errors

Airtable: "Invalid Date Format"

Airtable expects dates in ISO 8601 format (YYYY-MM-DD) for date fields and will silently drop values that don't match. Unlike Salesforce, Airtable won't tell you which rows failed date validation in the import UI—you'll see blank date fields on records you expected to be populated.

Fix: Before importing to Airtable, convert all date columns to YYYY-MM-DD format. In Excel: select the date column → Format Cells → Custom → YYYY-MM-DD. Our guide on fixing Airtable CSV invalid date format errors covers the mixed-date-format scenario where a single column has three different date formats from different data sources.

🔧 Standardize mixed date formats across 1M+ rows instantly

Fix Date Formats →

QuickBooks: "Continue Button Grayed Out"

This error prevents the import from starting at all. The Continue button in QuickBooks' CSV import wizard goes gray when the file has structural problems: wrong number of columns, a header row it doesn't recognize, or blank rows before the data begins.

Fix:

  1. Delete all blank rows above and below your data
  2. Ensure the column headers exactly match QuickBooks' expected format (export a sample from QuickBooks first)
  3. Remove any merged cells (if the file was originally an Excel workbook)
  4. Save as CSV UTF-8

For the full diagnostic, see fixing QuickBooks CSV continue button grayed out.

QuickBooks: "Zeros Not Allowed" Import Error

This error appears when importing journal entries or transactions where a debit or credit amount column contains zero. QuickBooks requires every transaction line to have a non-zero amount in either Debit or Credit—a zero in both columns violates the double-entry accounting rule the importer enforces. Our full fix guide is at fixing QuickBooks zeros not allowed CSV import error.


Cross-Platform Data Quality Fixes

These four data quality issues cause import failures across all platforms. Fix them once before uploading anywhere.

1. Duplicate Email Addresses

The single highest-volume cause of partial import failures across all CRMs. Before any contact or lead import, run deduplication on the email column.

SplitForge approach: Use Remove Duplicates, select Email as the deduplication key, choose "Keep last occurrence" (usually has the most recent data), download the cleaned file. For 100,000-row lists, this runs in under 5 seconds. For the business case on why deduplication matters before CRM upload, see remove duplicate emails before CRM import.

2. International Phone Number Formatting

CRMs are opinionated about phone number format. Salesforce and HubSpot both accept multiple formats but normalize to E.164 internally. Shopify requires no specific format but validates length. If your list contains numbers from 50+ countries mixed with US numbers, you have a formatting problem.

Common failures:

  • (555) 123-4567 → may fail country code detection
  • +1-555-123-4567 → acceptable but inconsistent with 5551234567 in the same column
  • 0044 20 7946 0958 → UK number in trunk format, fails E.164 check

The international phone number standardization guide covers the 50+ country format matrix. SplitForge Data Cleaner handles bulk phone number normalization to E.164 format (e.g., +15551234567) that all major CRMs accept.

🔧 Standardize phone numbers from 50+ countries to E.164 — no code, no upload

Standardize Phone Numbers →

3. Date Format Normalization

Different export sources use different date formats. When you merge data from Salesforce export (ISO 8601), a trade show scan (MM/DD/YYYY), and a European partner list (DD/MM/YYYY), you get a single column with three different date formats—and every CRM will silently drop the ones it doesn't recognize.

Detection: Open the date column in a text editor (not Excel—Excel will auto-format and hide the problem). Look for values where the day/month interpretation is ambiguous (02/03/2026—is that February 3 or March 2?).

Fix: Sort by date column, identify format clusters, convert each cluster to YYYY-MM-DD using the appropriate conversion formula. Our guide on fixing mixed date formats in CSV columns has the exact Excel formulas for each format variant.

4. Required Field Validation

Every CRM has required fields—fields that must have a value for the record to be created. Missing values in required fields cause row-level rejections that are easy to miss in large import files.

How to find them:

  1. Export a single existing record from the target CRM object
  2. Note which fields are marked required in the field list
  3. Before import, run a blank-cell check on those columns in your CSV

SplitForge Data Validator profiles every column in your file: null percentage, data type, unique count. Any column with >0% null rate that maps to a required CRM field is a guaranteed partial failure.


Salesforce vs HubSpot: Import Strictness Compared

Both are dominant CRMs. Their import engines behave very differently. Understanding the difference changes how you prep your file.

DimensionSalesforceHubSpot
Primary deduplication keySalesforce ID (for updates) / Email (for leads)Email (always)
Picklist enforcementHard — row rejected if value doesn't existSoft — field blank, row still created
Required fieldsHard — row rejectedHard — row rejected
Invalid emailDepends on field typeHard — entire row rejected
Number with commaSilent blank (Wizard) / failure (Loader)Silent blank
Date formatHard — ISO 8601 required for LoaderSoft — field blank
Deal stageN/A (Opportunity stage: soft drop)Hard — deal rejected
Owner resolutionUses username / emailUses email (name causes ambiguity)
Import row limit50,000 (Wizard) / unlimited (Loader)No hard cap, session timeout ~100K
Error reportingDownloadable failure log per importDownloadable error CSV with error codes
Silent failuresCommon with Data Import WizardCommon — HubSpot creates record regardless

The key difference: Salesforce fails loudly on strict fields (picklists, required fields, IDs) but can silently corrupt number and date fields. HubSpot fails loudly on emails (because email is the identity key) but silently drops almost everything else—creating records that look complete in the import count but are missing field values you need for automation and reporting.

This is why HubSpot imports often feel like they "worked" until your marketing sequences start firing on contacts with no phone number, no company, or no lifecycle stage. The import succeeded. The data didn't.

🔧 Validate against Salesforce picklist rules AND HubSpot property types before you choose which file to upload where

Platform-Specific Pre-Import Validation →


Pre-Import Benchmark: What Clean Data Actually Looks Like

Import success rates vary dramatically based on data quality at upload time. The following benchmarks are based on internal testing in February 2026 across 15 sample datasets (ranging from 5,000 to 75,000 rows) against live Salesforce Developer Edition, HubSpot Sales Hub Professional, and Shopify (non-Plus) accounts. Test environment: Chrome 132, Windows 11, 64GB RAM, Intel i5-12600KF. All datasets were sourced from real export formats (Salesforce report exports, trade show badge scanners, e-commerce catalog exports) with identifying information removed. Results vary by org configuration, active validation rules, duplicate detection settings, and data complexity.

Data StateSalesforce Success RateHubSpot Success RateShopify Success Rate
Raw export, no cleaning58–65%70–78%62–70%
After deduplication only72–80%83–88%72–80%
After deduplication + type fixes87–93%91–96%88–94%
After full pre-import validation97–99%98–99%96–99%

The most consistent finding across all 15 datasets: Salesforce orgs with active duplicate detection rules and restricted picklists have the highest raw failure rates (58–65%) because both rule types reject rows outright rather than silently dropping field values. HubSpot's higher raw success rate (70–78%) reflects its more forgiving import behavior—it creates records even when field values fail, which inflates "success" counts while creating data quality debt downstream.

The gap between "raw export, no cleaning" and "full pre-import validation" represents hours of re-import cycles, manual record fixing, and data quality debt that persists in your CRM for months.

For the performance benchmark of the underlying processing that powers pre-import validation at scale, see our detailed post on processing 10 million CSV rows in 12 seconds.


FAQ

This is a type mismatch or relational error that the CRM's import engine handles as a soft failure—the record is created but the problematic field value is silently dropped. Salesforce does this with invalid number formats (the row succeeds, the number field is blank). HubSpot does this with invalid property values for dropdown fields. The fix is to download HubSpot's error file (Settings → Imports → hover import → Download Error File) or Salesforce's failure log after import. These files show exactly which fields failed per row.

HubSpot deduplicates contacts automatically on email address during import—if a contact with that email already exists, it will be updated, not duplicated. The problem is with contacts that have no email or have invalid emails: those are imported as net-new records regardless of whether they already exist. Before importing, remove duplicate emails from your file, then validate email format with Data Validator. Set the import to "Update existing contacts" if you want to update rather than add.

Picklist validation in Salesforce is case-sensitive and whitespace-sensitive. "Hot Lead" and "Hot Lead " (trailing space) are treated as different values. The most reliable fix: export the picklist values directly from Setup → Object Manager → Field → Values, copy-paste those exact strings into your CSV using find-replace, and verify there are no trailing spaces or hidden characters. Our guide on Salesforce bad value restricted picklist errors has the specific fix for multi-select picklist fields.

Shopify's CSV import engine processes rows sequentially and stops logging errors after a threshold for large imports. To get useful error information, split your import file into smaller batches (under 500 rows). The error rate per batch is more visible and the fix-retry cycle is faster. For large catalog imports, our guide on splitting large CSV files covers how to maintain row relationships (handle → variant → image) across split files.

QuickBooks's CSV parser is sensitive to line endings and encoding. Files saved on Mac (LF line endings) or with non-standard encoding often trigger this generic error. The fix: open in a text editor, verify the encoding is UTF-8, and save with Windows-style CRLF line endings. If the error persists, check for any cell that contains a comma inside a value that isn't wrapped in quotes—QuickBooks's parser treats unquoted commas as column separators.

No—for any file containing personal data. Uploading customer names, emails, phone numbers, or account data to a cloud validation tool creates data exposure risk under GDPR, CCPA, and sector regulations. SplitForge runs entirely in your browser—your file never leaves your machine. For teams processing customer data, see our full guide on privacy-first data processing for GDPR and HIPAA compliance. Pre-import validation of sensitive data should always happen client-side.

Most CRM import tools have a per-import row limit or session timeout for large files. Salesforce's Data Import Wizard caps at 50,000 records per file; for larger loads, use Data Loader in batch mode. HubSpot handles large imports but times out on browser sessions—use the HubSpot API for imports over 100,000 records. For all platforms: split large files into chunks before attempting import. Use CSV Splitter to divide the file, then import each chunk separately. Our guide on batch processing 50+ CSV files without code covers the multi-chunk import workflow.

International phone number normalization is a two-step problem: detect the country of origin for each number, then apply the correct E.164 formatting. For data from known countries, prefix the country code manually in a helper column and strip non-numeric characters. For mixed-country data, use SplitForge Data Cleaner's phone normalization feature, which handles E.164 conversion for 50+ country formats. Our complete guide on cleaning international phone numbers for CRM import covers the format table for all major markets.



Platform-Specific CRM Import Errors

Vertical and Use-Case Imports

Pre-Import Data Quality and Field Fixes

Large-Volume Imports, Error Recovery, and Strategy

CSV File Quality and Validation

Cost, Privacy, and Compliance


Validate Before You Import with SplitForge

Detect invalid emails, duplicates, and blank required fields before upload
Validate against Salesforce picklist rules, HubSpot property types, and Shopify field requirements
Run against files with 10M+ rows—no upload, no cloud, no waiting
Export flagged rows for targeted fixing, not full-file re-processing
Zero data transmission—customer PII stays on your machine, GDPR-aligned and HIPAA-aligned by architecture
Works offline after initial load—validate sensitive CRM data completely air-gapped

Run Your CRM File Through Validation Now

Detect invalid emails, blank required fields, and duplicate records before upload
Validate against Salesforce, HubSpot, Shopify, and Pipedrive field requirements
Files process locally in your browser — never uploaded, never retained, never at risk
Export only the flagged rows — fix a handful of errors, not the whole file

Continue Reading

More guides to help you work smarter with your data

ai-data-prep

AI-Ready Data Checklist: 10 Things to Verify Before Upload (2026)

Before uploading to ChatGPT, Claude, or a fine-tuning API, run through this 10-point checklist. UTF-8 encoding, clean headers, PII removed, size within limits.

Read More
ai-data-prep

Convert Excel to JSON for AI APIs and LLM Pipelines (2026)

AI APIs and LLM pipelines expect JSON, not spreadsheets. Fine-tuning needs JSONL; direct prompts take arrays. Convert locally — no upload, no conversion server.

Read More
ai-data-prep

Prepare Data for AI: The Complete Guide (Privacy-First, 2026)

How to prepare a CSV or Excel file for ChatGPT, Claude, or an AI API — encoding, PII, format, size, and privacy. The complete local-first prep workflow.

Read More