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

Intercom CSV Import: Fix User Import Failures and Company Association Errors

March 19, 2026
12
By SplitForge Team

Intercom CSV Import — Critical Facts First:

  • Company data CANNOT be imported via CSV — Intercom's CSV import is for users and leads only. Companies must be created via the UI or API.
  • User CSV import updates existing users on email match — no duplicates created
  • Custom user attributes: column header must match attribute name exactly (case-sensitive)
  • created_at field: ISO 8601 timestamp format required (2026-03-19T14:30:00Z)
  • Company association via CSV: include company_id attribute to associate imported users with existing companies
  • Segment assignment: CSV import does not assign segments — segments are evaluated based on user attributes after import

Quick Answer

Intercom CSV import is for users (contacts) and leads only. Company records cannot be created or updated via CSV. If you're trying to import company data, the CSV path does not exist — you need the API or manual UI entry.

Why it matters: Teams migrating to Intercom from other CRMs expect to import both contacts and companies in one CSV operation. Intercom's architecture separates these completely. Understanding this architecture before import prevents a frustrating discovery mid-workflow.

The fix for users: validate custom attribute names match exactly, format created_at as ISO 8601 if included, and use the company_id attribute to associate users with pre-existing company records.

What actually happens when company association fails:

CONSEQUENCE LADDER:

Users imported without company_id:
→ Account-based segments don't include these users
→ Company-level sequences don't trigger
→ Account health scores are missing user engagement data
→ CS team can't see which users belong to at-risk accounts
→ Churn risk undetected until renewal conversation

Revenue impact:
→ Account expansion plays require knowing which users are at which companies
→ Without association: upsell targeting is blind
→ Product usage by company is unavailable
→ QBRs lack usage data for the imported cohort

Root cause: Intercom's data model treats companies as parent records that users associate with — not as importable objects themselves. Companies must exist before users can be associated with them.


What Intercom's Error Messages Actually Mean

"Some users couldn't be imported" — One or more rows failed validation. Download the import error CSV from the import results page for per-row detail.

"Invalid attribute type for [field]" — A custom attribute received a value that doesn't match its configured data type (number field received text, date field received non-ISO format).

"User already exists — updated" — Informational. An existing user with the same email was updated. Not a failure.

"Company not found" — The company_id value in your CSV doesn't match any existing Intercom company record. The company must exist before user association via CSV is possible.

"Invalid email address" — Email format validation failed (missing @, invalid domain, non-ASCII characters).

Import completed but users have no company association — The company_id column was either missing, used the wrong ID format, or referenced companies that don't exist in Intercom yet.


Fast Fix (90 Seconds)

⏱ Expected time by error type:

  • Custom attribute name fix: 5–10 minutes (check Settings → People Data)
  • created_at format fix: 5 minutes (reformat to ISO 8601)
  • Company association fix: 15–30 minutes (export company IDs, VLOOKUP)
  • Email format fix: 5 minutes (trim spaces, remove non-ASCII)

If your Intercom import just failed:

  1. Download the error CSV from the import results page — per-row failure reasons
  2. Check the error type — attribute type errors mean field format issues; company errors mean the company doesn't exist yet
  3. For company association issues: export your existing Intercom companies via Settings → Companies → Export — get the correct id values
  4. Validate locally before re-importing — run through Data Cleaner without sending user data to another server

TL;DR: Intercom CSV import handles users only — not companies. Fix custom attribute type errors, format created_at as ISO 8601, and use company_id to associate users with existing companies. Use Data Cleaner — your user data never leaves your browser.


You're migrating your customer database to Intercom. You've exported contacts and companies from your old CRM. You go to import companies first. You look for the company import option. It doesn't exist.

You search Intercom's help docs. Companies cannot be imported via CSV. They must be created via the API or manually through the UI. This is not buried in a footnote — it's a fundamental architectural decision Intercom made. The CSV import is for users (people) only.

Once you understand this, everything changes: you create companies first (via API or UI), then import users with a company_id attribute that associates each user with their company.

This guide covers the full Intercom user import workflow including company association. All behavior verified against Intercom's current documentation, March 2026.


Table of Contents


The Company CSV Limit — What It Means and Your Options

This is the most important thing to understand before attempting any Intercom import.

INTERCOM DATA MODEL — WHAT CSV IMPORT COVERS:

CSV IMPORT: ✅ Users (people), ✅ Leads
CSV IMPORT: ❌ Companies (organizations), ❌ Events, ❌ Custom Objects

WHY companies aren't CSV-importable:
Intercom's company records are parent objects. Users associate with companies
via a company_id. The architecture requires companies to exist before
user-company associations can be created.

YOUR OPTIONS FOR COMPANY DATA:

Option 1 — Intercom API (recommended for bulk company creation):
POST /companies with name, company_id, and custom attributes
Requires API access and basic scripting ability

Option 2 — Manual UI entry:
Intercom → Companies → New Company
Practical only for small numbers of companies (<50)

Option 3 — Third-party integration:
Segment, Census, Hightouch, or similar tools can sync company data from
your data warehouse to Intercom without manual API calls

Once companies exist in Intercom:
→ Export companies via Settings → Data → Export
→ Get the Intercom-generated company IDs
→ Map those IDs to your user CSV's company_id column
→ Import users — they will be associated with the correct companies
CORRECT IMPORT WORKFLOW:

Step 1 → Create companies in Intercom (API or UI)
           ↓
Step 2 → Export company IDs from Intercom
           ↓
Step 3 → Map IDs to your user CSV (VLOOKUP)
           ↓
Step 4 → Import users with company_id column
           ↓
Step 5 → Users are associated with correct companies ✅

WRONG WORKFLOW (what teams try first):

Step 1 → Try to import companies via CSV ❌
           ↓
         "Company import" option does not exist in Intercom
           ↓
         Search for it for 20 minutes, find nothing
           ↓
         Import users anyway without company_id
           ↓
         Users imported — company associations all blank ❌
           ↓
         Re-import required with correct company_id values

⚠️ Migration trap — the most expensive Intercom mistake:

If you import users BEFORE creating companies:

Result:
→ All users import successfully (no errors)
→ company_id column references companies that don't exist yet
→ Intercom silently ignores the company_id values
→ Import summary shows 0 errors — everything looks fine
→ You trigger onboarding sequences
→ Two weeks later: every user in Intercom has no company association
→ Account-based reporting is useless
→ Fix requires: create companies, then re-import all users with company_id

Time cost: 2+ hours of re-work
Prevention: create companies first, always

This is the single most common Intercom migration failure. The fix is architectural, not technical — change the order of operations, not the file format.


🚨 Import Success ≠ Company Association in Intercom

Intercom's import summary is the most misleading success message in any CRM context:

INTERCOM IMPORT SUMMARY — WHAT IT HIDES:

"3,847 users imported successfully"

What it tells you:
→ User records were created or updated ✅

What it does NOT tell you:
→ Whether company_id values matched existing companies
→ Whether custom attributes populated correctly
→ Whether created_at preserved original dates

Silent failure: you can have 3,847 "successfully imported" users
with zero company associations, wrong attribute values, and
created_at set to today's date — all in one "successful" import.

"Successfully imported" = records exist in Intercom.
It does not mean = data is correct.

Always open 5 imported users and verify fields manually.

Fix 1: Custom Attribute Type Errors

Intercom custom user attributes have specific data types (string, number, boolean, date). The value in your CSV must match the attribute's configured type.

❌ BROKEN — custom attribute type mismatches:

Intercom attribute: "Monthly Revenue" (type: number)
CSV value: "$5,000"   → ❌ currency symbol and comma — not a number
CSV value: "5000"     → ✅ plain integer accepted
CSV value: "5000.00"  → ✅ decimal accepted

Intercom attribute: "Account Tier" (type: string)
CSV value: "Enterprise" → ✅ string is flexible
CSV value: "1"          → ✅ string accepts numeric-looking values

Intercom attribute: "Trial Started" (type: date)
CSV value: "03/19/2026" → ❌ not ISO 8601
CSV value: "2026-03-19" → ❌ date only without time — may be accepted or may fail
CSV value: "2026-03-19T00:00:00Z" → ✅ full ISO 8601 with time and timezone

Intercom attribute: "Is Churned" (type: boolean)
CSV value: "true"  → ✅ lowercase boolean
CSV value: "True"  → depends on Intercom version — use lowercase to be safe
CSV value: "Yes"   → ❌ not a boolean — use "true" or "false"
CSV value: "1"     → ❌ numeric boolean not accepted — use "true" or "false"

HOW TO CHECK ATTRIBUTE TYPES:
Settings → People Data → Custom Data → view each attribute's type
Match your CSV values to the type shown for each attribute.

Fix 2: created_at Format Requirements

The created_at field in Intercom represents when the user record was originally created (e.g., when they first signed up in your product). If you include this field in your import, it must be formatted as a Unix timestamp (seconds since epoch) or ISO 8601 datetime.

CREATED_AT FORMAT OPTIONS:

Unix timestamp (recommended for precision):
1710849000  → ✅ March 19, 2026 14:30:00 UTC
1710849000.000 → ✅ milliseconds also accepted by some Intercom versions

ISO 8601 datetime (human-readable alternative):
"2026-03-19T14:30:00Z"       → ✅ UTC timezone (Z suffix)
"2026-03-19T14:30:00+00:00"  → ✅ UTC with explicit offset
"2026-03-19T14:30:00"        → ⚠️ no timezone — may default to UTC or reject
"2026-03-19"                 → ❌ date without time — rejected
"03/19/2026"                 → ❌ US date format — rejected
"March 19, 2026"             → ❌ long-form date — rejected

CONVERT DATES TO UNIX TIMESTAMP IN EXCEL:
=(A2-DATE(1970,1,1))*86400
Where A2 contains a standard Excel date value.
This gives you seconds since Unix epoch (January 1, 1970).

Why include created_at at all? If you don't include it, Intercom sets the user's creation date to the import date — losing the original signup history. For migrating users from another system, preserving original creation dates is important for lifecycle reporting and customer tenure calculations.


Fix 3: Company Association via company_id

Since you can't import companies via CSV, company association happens through the company_id attribute in your user import file. This attribute must match the company_id of an existing Intercom company record.

COMPANY ASSOCIATION WORKFLOW:

Step 1 — Create companies in Intercom (choose one method):
  a) API: POST to /companies with your company data
  b) UI: Intercom → New Company (for small numbers)
  c) Integration: Segment/Census sync from data warehouse

Step 2 — Export company IDs from Intercom:
  Settings → Data → Export → Companies
  The export includes Intercom's internal company IDs

Step 3 — Map company IDs to your user CSV:
  Your source data: User "[email protected]" belongs to "Acme Corp"
  Intercom export: "Acme Corp" has company_id = "comp_abc123"
  VLOOKUP: match company name → get company_id

Step 4 — Add company_id column to user CSV:
  email,name,company_id
  [email protected],Alice Chen,comp_abc123
  [email protected],Bob Smith,comp_abc123
  [email protected],Carol Jones,comp_def456

Step 5 — Import users with company_id column
  Intercom associates each user with the matching company automatically.

❌ BROKEN — company_id not found:
company_id: "ACME-001"   ← your internal CRM ID, not Intercom's ID
company_id: "Acme Corp"  ← company name, not ID
company_id: "123456"     ← wrong ID format

FIXED — using Intercom's actual company ID:
company_id: "comp_abc123" ← from Intercom company export

❌ BROKEN — company_id column using wrong ID format:

Your user CSV:
email,name,company_id
[email protected],Alice Chen,ACME-001
[email protected],Bob Smith,Acme Corp
[email protected],Carol Jones,456

Intercom behavior:
[email protected]  → company_id "ACME-001" → not found (your internal ID, not Intercom's)
[email protected]    → company_id "Acme Corp" → not found (company name, not ID)
[email protected] → company_id "456" → not found (numeric, not Intercom's comp_ format)

Import result: 3 users created, 0 company associations.
No error shown. Import summary says "3 users imported."

FIXED — using Intercom's actual company IDs (from company export):
email,name,company_id
[email protected],Alice Chen,comp_abc123
[email protected],Bob Smith,comp_abc123
[email protected],Carol Jones,comp_def456

Import result: 3 users created, all associated with correct companies.

HOW TO GET INTERCOM COMPANY IDs:
Settings → Data → Export → select Companies → download CSV
The "id" column contains the comp_xxxxxxxx format IDs to use.

Fix 4: Email Validation in Intercom

Intercom's email validation follows standard format rules with a few additional behaviors:

INTERCOM EMAIL VALIDATION:

Standard validation (same as most CRMs):
✅ [email protected]
❌ alice @company.com (space before @)
❌ alicecompany.com (missing @)
❌ alice@ (missing domain)

Intercom-specific behavior:
→ Email updates: if you import a user with an email that already exists,
  the existing user is UPDATED — not a new user created
→ Multiple emails: Intercom supports multiple email addresses per user via API,
  but CSV import only handles one email per row
→ Unsubscribed users: import does not change email subscription status —
  previously unsubscribed users remain unsubscribed after CSV update

DUPLICATE HANDLING:
Intercom deduplicates on email address.
Same email = update existing user.
This is usually correct — verify import values before uploading if you're
unsure whether you want to overwrite existing attributes.

Company Association Checklist

Use this before every Intercom user import where company association is needed.

COMPANY ASSOCIATION CHECKLIST:

□ Step 1: Companies exist in Intercom
  → Go to Intercom → Companies
  → Confirm all companies in your import are already created
  → If any are missing: create via API or UI before continuing

□ Step 2: Export Intercom company IDs
  → Settings → Data → Export → Companies
  → Open the export CSV
  → Identify the "id" column (format: comp_xxxxxxxx)
  → Save this as your company_id reference file

□ Step 3: Map your user data to Intercom company IDs
  → In your user CSV: add a "company_id" column
  → VLOOKUP: =VLOOKUP([company name], company_reference, [id column], FALSE)
  → Verify: spot-check 5 rows — company names resolved to correct IDs?

□ Step 4: Validate company_id values before import
  → Check for blank company_id rows (user has no company → expected or error?)
  → Check for "N/A" or "#N/A" VLOOKUP errors → company not found in Intercom
  → Fix any #N/A rows before importing — these will fail silently

□ Step 5: Import users
  → Include company_id column in final CSV
  → After import: open 3 users → verify company association shows correctly
  → If blank: company_id value didn't match any existing company

Time to complete checklist: 15–20 minutes
Failures prevented: all silent company association errors

Intercom CSV Import Template Reference

Use this table to build your import file correctly on the first attempt.

Column NameRequiredFormatNotes
emailYesstandard emailDedup key — existing user updated on match
nameNotextFull name or display name
user_idNotextYour internal user ID — use for API dedup key
created_atNoUnix timestamp or ISO 8601Original signup date — defaults to import date if omitted
company_idNoIntercom company IDMust match existing Intercom company record
[custom attribute]Nomatches attribute typeColumn header = exact attribute name

How custom attribute column names work:

  • Column header: exact attribute name as defined in Settings → People Data
  • Case-sensitive in most Intercom versions — "Monthly Revenue" ≠ "monthly revenue"
  • Spaces in names: include as-is — "Monthly Revenue" not "Monthly_Revenue"
  • New attributes: if your CSV includes a column that doesn't match any existing attribute, Intercom creates a new custom attribute (if you have permissions) or fails silently

✅ How to Confirm Your Intercom Import Worked

  1. Check the import results page — shows: total rows, users created, users updated, rows failed. Download the error CSV if any rows failed.
  2. Open 3 imported users — verify custom attributes populated correctly, company association shows the right company, created_at shows the original date (not today's date).
  3. Search by a known email — confirm the user exists in Intercom and attributes are correct.
  4. Check company association — open a company that should have associated users. Verify the user count and the specific users are listed.

🔁 Safe Re-Run Workflow

Intercom deduplicates on email — re-importing a partially successful file is safe. Existing users are updated, failed rows are retried. No duplicates are created.

For rows that failed due to missing company associations: create the companies first (API or UI), then re-import the failed rows with the correct company_id values.

⚠️ Edge Case: If you import a user who is already in Intercom as a Lead (not a User), the import behavior depends on your account's lead conversion settings. In some configurations, importing a Lead's email as a User converts the Lead to a User automatically. Verify this behavior with your Intercom admin before bulk-importing if you have an active Lead pipeline.

🛡 Prevent This Next Time

  1. Create the API company import workflow before your next migration — company CSV import won't arrive in Intercom. Build a simple script or use a sync tool (Segment, Census) to handle company data. Having this workflow ready prevents the blocking step that most teams hit mid-migration.
  2. Export Intercom company IDs before every user import — company IDs change if you re-create companies. Always pull a fresh export.
  3. Map created_at at the source — preserve original signup dates in your data warehouse or CRM export. Converting and including created_at on every import keeps your historical data accurate.

⏱ Recovery Cost: Import Order Matters

The company-before-users rule is not a preference — it's architecture. Getting it wrong has a specific recovery cost:

Did ThisRecovery RequiredTime
Created companies first, imported usersNothing — correct workflow
Imported users without company_idRe-import all users with company_id30–60 minutes
Imported users with wrong company_id formatCreate companies → export IDs → re-import1–2 hours
Didn't include created_atRe-import to fix dates (all users updated)30–60 minutes
Triggered sequences before verifyingSequence fired to users with no company contextDays to recover attribution

The company_id mapping step (VLOOKUP from Intercom export) takes 15–20 minutes. The re-import after getting it wrong takes 1–2 hours — and if sequences have already fired, there's no clean recovery for the attribution data.

🧠 Cross-CRM Pattern: The "import order matters" principle — create parent records before child records — applies across all CRM platforms. In Salesforce, import Accounts before Contacts. In HubSpot, create Companies before importing Contacts with company association. In Intercom, create Companies before importing Users. In every platform, the child-to-parent relationship fails silently when the parent doesn't exist yet. Build this order-of-operations awareness into every CRM migration you run.

Why Validate Intercom Import Files Locally

Intercom import files contain your product's user base — names, email addresses, behavioral attributes, account tier, and revenue data. This is among the most sensitive customer data in a SaaS company's stack. Many teams clean these files in cloud-based tools before importing, creating an exposure point separate from Intercom's own data processing.

SaaS customer data is subject to GDPR Article 6 obligations (lawful basis for processing) and may require GDPR Article 28 Data Processing Agreements with any tool that receives the data — including pre-import validation services. SplitForge validates files in Web Worker threads in your browser — for raw file contents, nothing is transmitted to any server during processing.

For general CRM import error codes, see CRM import error codes explained. For email validation before import, see email validation before CRM import. For the complete CRM import guide, see CRM import failures complete guide.


Additional Resources

Tested: Intercom user import behavior, CSV format requirements, and company association workflow verified against Intercom Developer Documentation and Intercom Help Center. March 2026.

Official Intercom Documentation:

Standards:

Related Guides:


FAQ

No. Intercom's CSV import is for users and leads only. Company data must be created via the Intercom API (POST /companies endpoint) or manually through the UI. There is no company CSV import and none is planned per current Intercom documentation. For bulk company creation, use the API with a simple script, or use a data sync tool like Segment, Census, or Hightouch.

Include a company_id column in your user CSV. The value must be the Intercom-generated company ID (not your internal ID, not the company name). Export your company list from Intercom Settings → Data → Export → Companies, then use VLOOKUP to map company names from your source data to Intercom company IDs. Import users with the company_id column populated.

Intercom deduplicates on email address. If an existing user has the same email as a row in your import file, the existing user record is updated with your imported values. A new duplicate user is not created. Custom attributes in your CSV overwrite existing values for those attributes; attributes not in your CSV are left unchanged.

You didn't include a created_at column in your import file, or the format was incorrect so Intercom ignored it. For Intercom, created_at must be a Unix timestamp (seconds since epoch) or an ISO 8601 datetime string with timezone (2026-03-19T14:30:00Z). If the format doesn't match, Intercom silently ignores the field and sets created_at to the import date. Convert your dates using the Excel formula =(A2-DATE(1970,1,1))*86400.

The company_id values in your CSV don't match any existing Intercom company IDs. This happens when: (1) the companies haven't been created in Intercom yet — create them first; (2) you used your own internal company IDs instead of Intercom's IDs — export from Intercom and use those; (3) the company IDs changed because companies were deleted and recreated. Export a fresh company list from Intercom immediately before the import run.


Clean Your Intercom Import File Without Exposing Your User Data

Clean custom attribute values, fix date formats, remove duplicate emails
Validate company_id column format and identify blank required fields
Works on user files of any size — no upload needed
Files process locally in your browser — SaaS customer data never transmitted to any server

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