Navigated to blog › keap-csv-import-errors
Back to Blog
crm-import-guides

Keap (Infusionsoft) CSV Import: Fix Contact Upload Errors (2026)

March 21, 2026
14
By SplitForge Team

Quick Answer

Keap rejects CSV contacts for four primary reasons: missing required name fields (First Name OR Last Name must be present), date values in an unrecognized format, custom field column headers that don't map to any configured field, and opt-in status fields formatted incorrectly.

Why it happens: Keap validates every row against your account's field configuration before accepting it. Custom fields that don't map during the import wizard step are skipped silently.

The fix: Standardize all dates to a single consistent format (MM/DD/YYYY is the safest choice), verify name fields are populated, and map every CSV column to its Keap field during the import wizard step.

Root cause: Date parsing failures and custom field mapping misses are among the most common Keap import errors — often because different team members formatted dates differently in the same file.


Fast Fix (90 Seconds)

If your Keap import failed, try this first:

  1. Check your date columns — Find every date field in your CSV. Convert all values to MM/DD/YYYY format. This alone resolves the majority of Keap import failures.
  2. Check First Name and Last Name columns — At least one must be populated for every row. Blank rows on both name fields are rejected.
  3. Check your Tags column separator — Keap expects comma-separated tags. If your source used semicolons, do a find-and-replace: ;,.
  4. Check custom field columns during mapping — In the import wizard's field mapping step, any CSV column that doesn't match a Keap field is dropped. You can create new custom fields on the fly during this step — or pre-create them in Keap > Admin > Custom Fields before importing.
  5. Reimport only the failed rows — Fix the specific rows identified in the error report, not the entire file.

If date format errors span the entire file, continue below for bulk conversion methods.


TL;DR: Keap date parsing failures and custom field mapping misses are among the most common import errors. Keap accepts several date formats including MM/DD/YYYY, YYYY-MM-DD, and MM-DD-YYYY — standardize to one format across your entire file to eliminate parsing inconsistencies. During the import wizard, any unmatched column is silently dropped; map every field or create it on the fly. Run Data Cleaner to standardize dates and clean the full file before upload.


Your migration from ActiveCampaign to Keap is 80% done. The contacts are exported, the tags are mapped, and you upload the CSV. Keap processes 1,200 rows and rejects 740 of them. The error file says "Invalid date" on nearly every one. You open a few rows in your spreadsheet — the dates look fine. They're in YYYY-MM-DD format, which is how ActiveCampaign exports them.

That's the problem. Keap's date parser is strict about format consistency — mixed date formats across a file cause batch failures even when individual dates look valid. The dates weren't wrong; they were inconsistent with each other and with what the import expected.

Keap import files contain customer contact data — names, emails, phone numbers, and often purchase history or campaign engagement data. Most cloud-based data cleaning tools upload your file to a remote server to process it. For lists containing customer PII, that upload creates a GDPR Article 5(1)(c) data minimization exposure and potentially triggers GDPR Article 28 processor obligations if the tool processes on your behalf. SplitForge's Data Cleaner runs entirely in Web Worker threads in your browser — nothing is transmitted to any server. You can verify this with Chrome DevTools Network tab during cleaning.

Each error type in this guide was reproduced using the Keap contact import tool (Max Classic and Keap Pro), March 2026. For the complete CRM import failure taxonomy across all major platforms, see our CRM import failures complete guide. If your failures are structural rather than Keap-specific, Why Your CRM Rejects CSV Imports covers the file-level causes that apply across all CRMs. Teams migrating from ActiveCampaign to Keap will find ActiveCampaign CSV Import Errors useful for understanding the tag architecture differences.


What Keap's Error Messages Actually Mean

"First or last name is required" — Both the First Name and Last Name columns are empty for this row. Keap requires at least one of them to be populated.

"Invalid date" — The date value in a date field is in an unrecognized format or contains an impossible date (February 30). Keap accepts MM/DD/YYYY, YYYY-MM-DD, and MM-DD-YYYY — natural language ("April 15, 2026") and ambiguous formats are the most frequently seen triggers.

"Invalid email address" — The email field contains a malformed address format. Keap validates basic email structure before accepting the record.

"Field '[name]' not found" — Your CSV includes a column header that doesn't correspond to any field configured in your Keap account. This can mean a standard field name mismatch or a custom field that hasn't been created yet.

Contacts imported but tag not applied (no error shown) — The tag name in your CSV doesn't exist in Keap yet. By default, Keap creates new tags from imported values, but configuration differences can cause this to fail silently in some account setups.


Error / SymptomRoot CauseFix
"First or last name is required"Both name fields empty on the rowPopulate First Name or Last Name for every row
"Invalid date"Unrecognized format or impossible date (Feb 30)Standardize to MM/DD/YYYY; avoid natural language and ambiguous formats
"Invalid email address"Malformed email formatValidate email format ([email protected])
"Field not found"CSV column header doesn't match a Keap fieldCreate missing custom fields in Keap Admin first
Tags missing after importTag configuration issue or name mismatchVerify Keap account allows new tag creation on import
Opt-in status not setOpt-in column values not matching expected formatUse Keap's accepted opt-in values exactly

Table of Contents


This guide is for: Small business owners, marketing managers, and CRM admins importing contacts into Keap or legacy Infusionsoft accounts.

Already know your error type? Jump to the fix using the ToC above.


Why Keap's Date Import Failures Are So Common

Date failures are among the most common Keap import errors — not because Keap is unusually strict, but because mixed date formats across a file cause batch inconsistencies. Keap accepts several standard date formats, but they cannot be mixed within the same import. A file where half the rows use MM/DD/YYYY and half use YYYY-MM-DD will produce failures on the inconsistent rows.

The second reason: natural language dates (April 15, 2026), partial dates (April 2026), and impossible dates (February 30) are always rejected regardless of format.

Keap Accepted Date Formats

FormatExampleNotes
MM/DD/YYYY04/15/2026Most common; recommended default
YYYY-MM-DD2026-04-15ISO 8601; accepted in most Keap versions
MM-DD-YYYY04-15-2026Accepted; hyphens instead of slashes
M/D/YYYY4/15/2026Single-digit month/day; accepted in most versions
Natural languageApril 15, 2026❌ Rejected
DD/MM/YYYY15/04/2026❌ Rejected — European format not parsed
Impossible dates02/30/2026❌ Rejected — date doesn't exist

Recommendation: Standardize to MM/DD/YYYY before importing. Even if Keap accepts multiple formats, inconsistent formats within a single file are the primary source of batch date failures.

Date Format Source Decision Tree

What format is your source data in?

ISO 8601 (YYYY-MM-DD) from database export?
  → Already accepted by Keap. Standardize to keep consistent. ✓

European format (DD/MM/YYYY) from UK/EU spreadsheet?
  → NOT accepted. Must convert.
  → Excel: =TEXT(DATEVALUE(SUBSTITUTE(A2,"/","-")), "MM/DD/YYYY")
  → Or use Data Cleaner (browser, no upload)

Natural language (April 15, 2026) from manual entry?
  → NOT accepted. Must convert.
  → Excel: =TEXT(DATEVALUE(A2), "MM/DD/YYYY")
  → Or use Data Cleaner

Mixed formats (team entered dates differently)?
  → Biggest risk. Each non-standard row fails individually.
  → Standardize the entire column to MM/DD/YYYY before import.

Impossible dates (02/30, 09/31)?
  → Always rejected. Audit and correct manually.

What a Keap Date Failure Looks Like

❌ BROKEN — Mixed date formats in a single import file:

First Name,Last Name,Email,Birthday,Tags
Alice,Chen,[email protected],03/15/1985,customer        → MM/DD/YYYY: accepted
Bob,Smith,[email protected],1990-07-22,prospect            → YYYY-MM-DD: accepted
Carol,Jones,[email protected],15/04/1988,lead           → DD/MM/YYYY: rejected
David,Kim,[email protected],April 15 1988,newsletter    → natural language: rejected
Emma,White,[email protected],02/30/1995,customer          → impossible date: rejected

Error report:
Row 3: "Invalid date" — 15/04/1988 is DD/MM/YYYY; Keap interprets as month 15 (invalid)
Row 4: "Invalid date" — natural language date not recognized
Row 5: "Invalid date" — February 30 does not exist

FIXED — consistent MM/DD/YYYY across all rows:
Alice,Chen,[email protected],03/15/1985,customer
Bob,Smith,[email protected],07/22/1990,prospect
Carol,Jones,[email protected],04/15/1988,lead
David,Kim,[email protected],04/15/1988,newsletter
Emma,White,[email protected],03/01/1995,customer

Row 2 is also updated from YYYY-MM-DD to MM/DD/YYYY — keeping the entire column in one format eliminates any ambiguity during processing.


Fix 1: Date Format Failures

Standardize your entire date column to MM/DD/YYYY before importing. This eliminates one of the most common sources of Keap import row failures.

Bulk conversion in Excel / Google Sheets

If your dates are stored as actual date values in your spreadsheet (not text):

  1. Add a helper column.
  2. Use the formula: =TEXT(A2,"MM/DD/YYYY") where A2 is your source date cell.
  3. Apply this formula to the entire date column.
  4. Copy the helper column, paste as values only over the original column.
  5. Delete the helper column.

If your dates are stored as text strings in various formats, Data Cleaner can standardize bulk dates from ISO 8601, European DD/MM/YYYY, and natural language formats to MM/DD/YYYY — in your browser, without uploading the file anywhere.

Date Failure Quick Map

Source format          → Action needed
─────────────────────────────────────────────────────
ISO 8601 (2026-04-15)  → Accepted. Standardize to MM/DD/YYYY for consistency.
MM/DD/YYYY (04/15/26)  → Accepted. This is the recommended standard.
MM-DD-YYYY (04-15-2026)→ Accepted. Convert to MM/DD/YYYY to keep column uniform.
DD/MM/YYYY (15/04/2026)→ ❌ Not accepted. Must convert before import.
Natural language        → ❌ Not accepted. Must convert before import.
  (April 15, 2026)
Mixed formats in column → ❌ High failure risk. Standardize entire column first.
Impossible date         → ❌ Always rejected. Fix manually.
  (02/30/2026)

Rule of thumb: If your whole team entered dates the same way, you likely have one format — check one column and confirm. If the file came from multiple sources or people, assume mixed formats and standardize before importing.


Fix 2: Missing Name Fields

Keap requires either First Name or Last Name (or both) to be populated for every contact record. Rows where both are blank are rejected with "First or last name is required."

Company name does not substitute for First Name or Last Name in Keap's contact import. If you're importing B2B contacts where the company name is the primary identifier and individual contact names are unknown, use a placeholder (the company name or "Unknown") in the First Name field.

❌ BROKEN — Contact rows with missing name values:

First Name,Last Name,Email
Alice,Chen,[email protected]          → valid
,Smith,[email protected]                → First Name empty; Last Name present → valid
Carol,,[email protected]             → Last Name empty; First Name present → valid
,,[email protected]                  → Both empty → rejected
Acme Corp,,[email protected]           → "Acme Corp" in First Name → valid (workaround)

FIXED — rows 4 requires a value in at least one name field:
Unknown,Contact,[email protected]    → or use email domain as First Name

For imported contact lists where names aren't available, using the company name or the email local part as a placeholder is acceptable. Keap's segmentation and automation work on email address as the primary identifier — the name fields matter for personalization tags but don't affect core functionality.


Fix 3: Custom Field Mapping

Most overlooked step: The import wizard's field mapping screen is where most data loss happens. Every column you leave unmapped is silently dropped — no error, no warning. Spend 60 seconds mapping every column before proceeding.

If your CSV includes columns for custom field data, those columns must be mapped to a Keap custom field during the import wizard's mapping step. Keap gives you two paths: map to an existing custom field, or create a new one on the fly during the mapping step itself.

Columns that aren't mapped — either because you skip them or no matching field exists — are silently dropped. The contact imports; that field's data is lost.

Two options in the import wizard mapping step:

  1. Map to existing field — Select the matching Keap field from the dropdown next to your CSV column header.
  2. Create new custom field — Select "Add as custom field" in the mapping dropdown. Keap creates the field in your account and populates it during the same import.

Pre-creating fields in Keap > Admin > Custom Fields is the safer option when importing dropdown or multi-select custom fields, because it lets you define valid option values before the import runs.

❌ BROKEN — CSV with custom field columns, import without mapping:

CSV headers: "Lead Score", "Referral Source", "Contract Tier"

If skipped in mapping wizard:
- Contacts import with these columns silently dropped
- No error message — data is simply lost

FIXED — two paths:
Path A (pre-create): Admin > Custom Fields → create each field → import → map to existing field
Path B (on-the-fly): In import wizard → map column → "Add as custom field" → proceed

For dropdowns (Contract Tier): pre-creation is better — define valid option values first,
or imported values that don't match existing options will fail silently.

For dropdown custom fields, define all valid option values in the field definition before the import when possible. A dropdown value that doesn't match an existing option fails silently — the field is blank, not errored.


Fix 4: Tag Format and Assignment

Keap's tag system is one of its most powerful features and one of the most common import friction points. Tags are assigned during import by including a Tags column with the tag names you want applied to each contact.

Tag values in the Tags column should be comma-separated. Keap will create new tags from import values if they don't exist — but the tag name must be an exact match to any existing tag you want to reuse. "customer" and "Customer" create two separate tags in Keap.

❌ BROKEN — Tag formatting issues in Keap import:

Tags column values:
"customer;vip"              → semicolon separator; "customer;vip" becomes one tag
"CUSTOMER,VIP"              → imports as two tags "CUSTOMER" and "VIP"
                               — separate from existing "customer" and "vip" tags
"new customer, follow up"   → space after comma; "follow up" imports as " follow up"
                               (leading space creates a new tag distinct from "follow up")

FIXED:
"customer,vip"              → imports as "customer" and "vip" (matching existing tags)
"customer,vip"              → no leading spaces after commas

Tag names are case-sensitive in Keap's automation rules. An automation triggered by the tag "customer" won't fire for a contact tagged "Customer" — even though they look identical to the eye. Standardize tag case before importing.


Fix 5: Opt-In Status Field

Keap's opt-in status determines whether a contact can receive marketing emails. Getting this wrong during import has downstream consequences — contacts may be marked unsubscribed when they shouldn't be, or contacts who haven't opted in may receive marketing emails in violation of CAN-SPAM and GDPR.

Keap accepts the following opt-in status values during import (the exact labels vary slightly by Keap version and market):

  • Marketable — contact has opted in and can receive marketing emails
  • Non-Marketable — contact has not opted in; marketing emails are blocked
  • Unconfirmed — contact is pending double opt-in confirmation

If the Opt-In Status column is blank or contains an unrecognized value, Keap defaults to Non-Marketable in most configurations. This means a blank opt-in field doesn't cause an import error — it causes a suppressed list you'll discover only after a campaign fails to send.


Common Scenarios

Migrating from ActiveCampaign to Keap

ActiveCampaign exports dates in ISO 8601 format and uses a different tag architecture. Convert all dates to MM/DD/YYYY using a bulk date conversion before import. Map ActiveCampaign's list membership to Keap tags — a contact on "Hot Prospects" list in ActiveCampaign becomes tagged "hot-prospect" in Keap.

Importing from a spreadsheet built by multiple team members

Spreadsheets built collaboratively often accumulate mixed date formats — some team members typed "Jan 15 2026," others used the date picker in their locale format. Run a date standardization pass across all date columns before importing. The mixed format problem is invisible until Keap rejects the rows.

Reimporting after creating missing custom fields

After creating the missing custom fields in Keap Admin, re-import only the rows that failed — not the entire file. Keap deduplicates by email address. Full reimport of the file will attempt to update or duplicate all previously successful contacts depending on your import settings.


Additional Resources

Official Keap Documentation:

Technical Standards:

Privacy & Compliance:

Tested: Keap contact import tool (Max Classic and Keap Pro), March 2026. Each error type reproduced using standard import CSVs against a Keap account with configured custom fields, existing tags, and a five-segment opt-in configuration.

PLATFORM SPECIFICATION SOURCE
Platform: Keap (formerly Infusionsoft)
Source: Keap Help Center — Import Contacts
URL: https://help.keap.com/help/import-contacts
Verified: March 2026
Next re-verify: June 2026

Values in this post reflect official documentation at the verification date.
Keap updates import behavior with product releases — the official source is authoritative.
Note: Keap Max Classic (legacy Infusionsoft) and Keap Pro may have minor differences
in import field behavior. Verify against your specific account version.

FAQ

Keap accepts several date formats including MM/DD/YYYY, YYYY-MM-DD, and MM-DD-YYYY — but mixing formats within a single file is a common cause of batch date failures. The most common hidden issues are: (1) the date column has mixed formats from different team members, (2) the spreadsheet displays the date correctly on screen but the underlying text value is in an unrecognized format, or (3) the date contains an impossible value like February 30. Export to CSV and open the file in a plain text editor to see the exact raw value Keap will receive. Standardize the entire column to MM/DD/YYYY before importing to eliminate all format ambiguity.

You must create custom fields in Keap before the import. Keap does not auto-create custom fields from CSV column headers. Columns that don't map to an existing Keap field (standard or custom) are skipped, and that data is lost. Go to Admin > Custom Fields and create every field your CSV uses before starting the import.

Use the opt-in status that accurately reflects each contact's consent state. If a contact explicitly opted into your marketing emails in the source system, use Marketable. If their consent status is unknown, use Non-Marketable and run a re-opt-in campaign. Setting all contacts to Marketable without verified consent creates CAN-SPAM and GDPR compliance exposure.

Yes. Include a Tags column in your CSV with comma-separated tag names. Keap assigns the listed tags to each contact during import. If a tag doesn't exist in your Keap account, Keap creates it. Tags created this way are visible immediately in the Tags section. Automation rules tied to those tags trigger for newly imported contacts who receive them.

Keap deduplicates by email address during import. If a contact with the same email already exists, Keap merges the incoming data with the existing record rather than creating a duplicate — updating blank fields with new values, and leaving populated fields unchanged. If you want to overwrite existing field values, check your import settings for the merge behavior option.

Keap Pro (the simplified consumer product) and Keap Max Classic (legacy Infusionsoft) share the same core import validation rules — MM/DD/YYYY dates, required name fields, custom fields must exist first. The main practical difference is the UI: Keap Pro has a simplified import wizard, while Keap Max Classic has more granular configuration options. The CSV format requirements are the same.


Clean Your Keap Import File Before Uploading

Convert bulk date formats to MM/DD/YYYY from ISO 8601, European, and natural language formats
Standardize tag separators, remove leading spaces, and normalize tag case in seconds
Files clean entirely in your browser — your contact list never transmitted to any server
Fix the exact failure patterns that Keap rejects before the upload attempt

Continue Reading

More guides to help you work smarter with your data

csv-import-guides

CSV Delimiter Errors: Fix Comma vs Semicolon for International Teams

Stop all data in Column A errors. Learn comma, semicolon & tab CSV delimiters plus quick fixes for global teams.

Read More
csv-guides

How to Split Large CSV Files Without Excel (Even 1M+ Rows)

Need to split a massive CSV file but Excel keeps crashing? Learn how to split files with millions of rows safely in your browser without uploads.

Read More
excel-guides

Batch Convert Multiple Excel Files to CSV Without Opening Each One

Opening 50 Excel files one at a time to save as CSV takes 45 minutes and produces inconsistent results. Three methods handle the same task in under 60 seconds — none require opening a single file.

Read More

We use analytics cookies to improve SplitForge. Your files never leave your browser — ever. Privacy policy