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

ActiveCampaign CSV Import: Fix Contact Upload Failures and Tag Errors

March 19, 2026
13
By SplitForge Team

ActiveCampaign CSV Import — Quick Reference:

  • Tags: comma-separated in CSV — Tag1, Tag2, Tag3 (NOT pipe-separated)
  • Multi-value checkbox/list-box fields: use double-pipe || as separator — Option A||Option B
  • List assignment: list name must match exactly (case-insensitive but whitespace-sensitive)
  • Large imports: split into smaller files with ~30–60 minutes between imports to avoid rate limits
  • Silent failures: contacts import as "unconfirmed" or with no list if format is wrong — check the import report
  • Custom field types: date fields require specific format; number fields reject non-numeric characters

Quick Answer

ActiveCampaign CSV imports fail in two ways: hard failures (import rejected before processing) and silent failures (contacts imported with wrong or missing data). Silent failures are the dangerous ones — the import says success, but your contacts have no tags, wrong list assignment, or missing custom field values.

Why it matters: An ActiveCampaign import that completes with 5,000 contacts "successfully imported" but no tags applied means 5,000 contacts who will receive every automation instead of segmented ones. The damage is invisible until your first send.

The fix: Verify tag format (comma-separated), list name matches, custom field types, and date formats before importing. Split large files and space imports 1 hour apart.

Root cause: ActiveCampaign uses a strict format for multi-value fields that differs from most email platforms — tags use commas while checkbox/list-box fields use double-pipe. Confusing the two is the single most common import failure.


Fast Fix (2 Minutes)

⏱ Expected time by error type:

  • Tag format fix (pipe → comma): 3–5 minutes (find-replace in Tags column)
  • Multi-value field delimiter fix: 5–10 minutes
  • List name mismatch: 5 minutes (copy-paste exact name from AC UI)
  • Date format fix: 10–15 minutes (reformat column to MM/DD/YYYY)
  • Rate limit (split + re-import): 30–60 minutes including wait time

If your ActiveCampaign import completed but tags or fields are missing:

  1. Check the import report — after import completes, click "View Report" to see how many contacts were created vs updated vs skipped
  2. Look for "tags not applied" — this is almost always a tag format error (pipe used instead of comma)
  3. Check list assignment count — if the "Added to List" count is lower than contacts imported, your list name has a format mismatch
  4. Download a test contact — export one imported contact and verify the fields populated correctly
  5. Fix format issues in your CSV and re-import — ActiveCampaign will update existing contacts on email match without creating duplicates

TL;DR: ActiveCampaign CSV imports are tricky because most failures are silent — the import "succeeds" but contacts are missing tags, list assignments, or custom field values. One of the most common causes is tag format (comma not pipe) or list name mismatch. Use Data Cleaner to clean your file locally before import — contact data never leaves your browser.


If your ActiveCampaign import just completed and the data looks wrong — or the import "succeeded" but your contacts are missing tags and list assignments — you're in the right place. Most ActiveCampaign failures are silent, and the import report won't tell you what went wrong.

Your ActiveCampaign import showed 8,432 contacts successfully imported. Automation sequences are ready. You send the first email.

Open rate: 2.1%. Your average is 28%.

You check a handful of contacts in ActiveCampaign. Tags: none. List assignment: none. Segmentation conditions that depend on tags or list: excluded everyone.

The import said "success." But every contact imported as an unconfirmed subscriber with no tags and no list assignment. Your segmentation is useless until you re-import correctly.

This guide covers every ActiveCampaign import failure — including the silent ones. All format specifications verified against ActiveCampaign's current import documentation, March 2026.


What ActiveCampaign's Import Errors Actually Mean

Contacts imported but tags are missing/wrong. Almost always a tag format error. ActiveCampaign expects tags to be comma-separated in a single column. If you used pipe separators, the entire tag string (including the pipes) was treated as one single tag name.

"List not found" or contacts have no list assignment. The list name in your CSV doesn't match any active list in your account. List matching is case-insensitive but whitespace-sensitive — a trailing space in your CSV will cause a mismatch.

Custom field values not appearing. Either the column header doesn't match the field label exactly, the field type doesn't match (text in a date field, non-numeric in a number field), or multi-value checkbox/list-box fields used comma instead of ||.

Import stuck or "currently processing." Large imports (10,000+ contacts) take longer than the UI suggests. The import continues in the background even if the browser tab closes. Check status in Contacts → Import Status.

Rate limit errors on consecutive imports. ActiveCampaign rate-limits imports. Space multiple large imports approximately 30–60 minutes apart — the exact window depends on account activity and file size. Their documentation recommends breaking large files into smaller batches.


Table of Contents


Fix 1: Tag Format (Comma Not Pipe)

This is the single most common ActiveCampaign import error — and the most confusing, because platforms use different delimiters for multi-value fields.

ActiveCampaign's rule: Tags in a CSV must be comma-separated in a single column called Tags.

❌ BROKEN — wrong tag formats (all fail silently):

Tags column:
Customer|VIP|2026-cohort
← WRONG: pipe separator. The entire string "Customer|VIP|2026-cohort" 
  becomes ONE tag with literal pipe characters in the name.

Customer;VIP;2026-cohort
← WRONG: semicolon separator. Same problem.

"Customer" "VIP" "2026-cohort"
← WRONG: space-separated with quotes. Same problem.

FIXED — correct ActiveCampaign tag format:

Tags column:
"Customer, VIP, 2026-cohort"
← CORRECT: comma-separated, wrapped in quotes because the value contains commas

Or without quotes (valid if no other commas in the field):
Customer, VIP, 2026-cohort

Both result in three separate tags: "Customer", "VIP", "2026-cohort"

IMPORTANT: Tag names are trimmed of leading/trailing whitespace.
"Customer, VIP" → tags: "Customer" and "VIP" (spaces trimmed)
"Customer,VIP"  → tags: "Customer" and "VIP" (same result)

What the broken import actually looks like in ActiveCampaign:

❌ BROKEN — what happens when you use pipes for tags:

Your CSV Tags column:    Customer|VIP|2026-cohort
What AC imports:         One tag named "Customer|VIP|2026-cohort"

In ActiveCampaign after import:
Contact → Tags section shows:
  ✗ [Customer|VIP|2026-cohort]   ← one long string, pipes visible in tag name

Automations that check for tag "Customer" → do NOT fire
Segments filtered by tag "VIP" → do NOT include this contact
Everything looks imported. Nothing is segmented correctly.

FIXED — with comma separation:
Your CSV Tags column:    "Customer, VIP, 2026-cohort"
What AC imports:         Three separate tags

In ActiveCampaign after import:
Contact → Tags section shows:
  ✓ [Customer]
  ✓ [VIP]
  ✓ [2026-cohort]   ← three individual tags, automations fire correctly

How to fix pipe-formatted tags in your file:

Open your CSV in a text editor or use Find & Replace. Replace | (pipe) with , (comma-space) in the Tags column only. Verify the fix by checking that tags now appear as individual items after import.


Fix 2: Multi-Value Custom Fields (Double Pipe)

ActiveCampaign has a different delimiter for custom checkbox and list-box fields than for tags. This is the source of the most confusion.

ACTIVECAMPAIGN DELIMITER RULES:

Field type → Correct delimiter:
Tags         → comma (,)
Checkbox     → double pipe (||)  ← DIFFERENT from tags
List-box     → double pipe (||)  ← DIFFERENT from tags
Radio        → single value only (no delimiter)
Text         → single value only
Date         → single value in required format
Number       → numeric only

❌ BROKEN — wrong delimiter for multi-value custom fields:

Interested_In column (type: checkbox with options: Email, Social, SEO, PPC):
"Email, Social, SEO"
← WRONG: comma-separated. ActiveCampaign treats this as one long option name.

Email|Social|SEO
← WRONG: single pipe. ActiveCampaign may treat as one value.

FIXED:
Email||Social||SEO
← CORRECT: double-pipe separator for checkbox/list-box fields

Your CSV for a checkbox field with multiple selections:
Email||Social||PPC

This imports as three checked options: Email ✅, Social ✅, PPC ✅

Important: The option names in your CSV must match the option labels in ActiveCampaign exactly. If the checkbox option is labeled "Email Marketing" in ActiveCampaign and your CSV says "Email", the value will not match and will be ignored silently.


Fix 3: List Assignment Failures

Every contact you import must be assigned to at least one list. If the list assignment fails, the contact is imported as "unconfirmed" — they won't receive automations or campaigns targeted to the list.

❌ LIST ASSIGNMENT FAILURES:

List column in CSV (or selected during import):
"Newsletter Subscribers"   → ✅ matches if an active list has this exact name
"newsletter subscribers"   → ✅ case-insensitive match
"Newsletter Subscribers "  → ❌ trailing space — no match (whitespace-sensitive)
"Newsletter"               → ❌ partial name — no match
"Newsletter Subscribers" → ❌ wrong list name — no match (different list)
[blank]                    → Contact imported with no list assignment

HOW LIST ASSIGNMENT WORKS:
Method 1: Select the list during import setup (applies to all contacts in file)
Method 2: Include a "List" or "Lists" column in CSV with list name per row

For Method 2 (per-contact list assignment):
Column header must be exactly: List or Lists (case-insensitive)
Value: exact list name, case-insensitive, no trailing spaces

HOW TO VERIFY YOUR LIST NAMES:
Lists → All Lists → copy the exact list name from the UI
Paste into your CSV (don't type it manually — avoid whitespace errors)

Multiple list assignment: To assign a contact to multiple lists, separate list names with a comma in the List/Lists column:

Newsletter, Product Updates, VIP Members

Each list name must match an existing active list exactly.


Fix 4: Custom Field Type Mismatches

ActiveCampaign custom fields have specific type requirements. Importing the wrong value type causes silent field-level failures — the contact imports but the custom field is blank.

CUSTOM FIELD TYPE REQUIREMENTS:

Field Type    → Required Format     → ❌ Common Mistakes
Text          → Any string          → Usually fine
Number        → Numeric only        → "23%" → ❌, "$45" → ❌, "45.5" → ✅
Currency      → Numeric (no symbol) → "$1,250" → ❌, "1250" → ✅
Date          → MM/DD/YYYY          → "2026-03-19" → ❌ (wrong format), "03/19/2026" → ✅
Datetime      → MM/DD/YYYY HH:MM:SS → "03/19/2026 14:30:00" → ✅
Checkbox      → option names, ||    → See Fix 2 above
Radio         → single option name  → Must match exactly one option label
Dropdown/List → option names, ||    → See Fix 2 above

DATE FORMAT IS CRITICAL:
ActiveCampaign requires MM/DD/YYYY for date fields.
ISO 8601 format (YYYY-MM-DD) used by many systems is NOT accepted.

Example:
March 19, 2026 → "03/19/2026" ✅
2026-03-19     → ❌ wrong format — field will be blank after import
19/03/2026     → ❌ wrong format (DD/MM/YYYY not accepted)

NUMBER FIELDS:
"$1,250" → ❌ dollar sign and comma
"1250.00" → ✅ accepted
"1,250"  → ❌ comma as thousand separator
"1250"   → ✅ plain integer

Finding custom field labels: Go to Lists → Manage Fields (or Contacts → Manage Fields) to see the exact field label. Your CSV column header must match the field label exactly (case-insensitive, but watch for spaces).


Fix 5: Large File Import Rate Limits

ActiveCampaign rate-limits imports to prevent server overload. For large contact lists, importing without considering rate limits causes timeouts, stuck imports, or partial imports where some contacts are processed and others are dropped.

ACTIVECAMPAIGN LARGE IMPORT GUIDELINES:

File size recommendations (per AC import documentation):
- Files under 10,000 contacts: standard import
- Files 10,000–100,000 contacts: split into batches of 5,000–10,000
- Files over 100,000 contacts: split into batches; wait ~30–60 minutes between imports

Column count affects performance:
AC provides a "max contacts by number of columns" recommendation in their docs.
More columns = more processing time per row = smaller recommended batch size.
General guidance: keep import files under 20-25 columns when possible.

IMPORT SPACING RECOMMENDATION:
Wait approximately 30–60 minutes between large imports (the exact window depends on account load and file size).
Starting a second import before the first completes can cause both to slow down
or produce incomplete results.

MONITORING LARGE IMPORTS:
Contacts → Import Status (gear icon or settings menu)
Shows: number processed, number remaining, estimated completion time

If an import is stuck for more than 2 hours on a file under 50,000 contacts:
1. Check Import Status — confirm it's actually stuck vs still processing
2. Contact ActiveCampaign support with the import ID
3. Do NOT start a new import of the same file — creates duplicates

✅ How to Confirm Your ActiveCampaign Import Worked

After re-importing, run these three checks before trusting the results:

  1. Check the import report counts — click "View Report" on the completed import. Look at: Created (new contacts), Updated (existing contacts matched by email), and Skipped. Skipped contacts with no error message usually mean list name mismatch.
  2. Open one imported contact — search for a contact you know was in the file. Verify: (a) Tags section shows individual tags, not a string with pipe characters; (b) List membership shows your list; (c) Custom fields show correct values in the right fields.
  3. Send a 1-contact test — send one automation to a contact you imported. If the automation fires correctly (tags match, list membership is active), your segmentation is working.

⚠️ Edge Case: If you imported a contact who was previously unsubscribed in ActiveCampaign, the re-import will not re-subscribe them. Their unsubscribe status is preserved regardless of what's in the CSV. You'll see them in the "Updated" count but they'll never receive emails. This is intentional behavior — not a bug.

Common ActiveCampaign Import Questions

Why did my ActiveCampaign import succeed but tags are missing?

The import completed because the contact was created — ActiveCampaign doesn't hard-fail on tag format errors. But your Tags column used pipe separators (|) instead of commas, so the entire tag string was imported as one tag name. Fix: re-export your file, replace | with , in the Tags column, and re-import. Existing contacts will be updated on email match — no duplicates.

Why did contacts import without a list assignment?

The list name in your CSV (or selected during import setup) doesn't exactly match any active list in your account. List matching is case-insensitive but whitespace-sensitive — a trailing space, an extra word, or a slightly different name all cause a mismatch. Fix: go to Lists → All Lists, copy the exact list name from the UI, and paste it into your CSV or re-select it during import.

Why does my import show the right count but contacts don't receive automations?

Two causes: (1) contacts imported as "unconfirmed" subscribers — they exist but aren't active on the list; (2) tag-based automation triggers didn't fire because tags weren't applied correctly (see tag format above). Check one imported contact manually. If "Unconfirmed" shows next to their list membership, the list assignment failed. If tags are missing or malformed, the tag format was wrong.

What's different about importing from HubSpot vs building a fresh ActiveCampaign CSV?

HubSpot exports use semicolons for some multi-value fields and may include columns like "Associated Company" that don't map to ActiveCampaign fields. When migrating from HubSpot to ActiveCampaign: (1) re-export with comma delimiters, (2) rename the "Email Address" column to "Email", (3) remap HubSpot lifecycle stage values to ActiveCampaign tags or custom fields — they don't have a direct equivalent. The tag format difference (HubSpot may export semicolons; ActiveCampaign requires commas) is the most common platform-switch failure.

ActiveCampaign CSV Column Reference

Use this table to build your import CSV with the correct column headers and formats.

Column HeaderRequiredFormatNotes
EmailYesstandard email formatDeduplication key — existing contact is updated if email matches
First NameNotext
Last NameNotext
PhoneNotextNo specific format enforced
TagsNocomma-separatedTag1, Tag2, Tag3 — NOT pipe-separated
ListNolist name(s), comma-separatedMust match active list names exactly
[Custom Text Field Label]NotextColumn header = exact field label
[Custom Date Field Label]NoMM/DD/YYYYUS date format only
[Custom Number Field Label]Nonumeric onlyNo symbols, no commas
[Custom Checkbox Field Label]Nooption names, `
[Custom Dropdown Field Label]Nosingle option nameMust match option label exactly

Column header matching: ActiveCampaign matches CSV column headers to field names case-insensitively. During the import mapping step, you can remap columns manually if headers don't match — but matching them in the file before import speeds up the process.


Why Clean Before Importing ActiveCampaign Subscriber Data

ActiveCampaign contact lists contain personally identifiable information — email addresses, names, phone numbers, behavioral data, and subscription history. Many teams process these files in cloud-based cleaning tools before import.

Many SaaS tools retain uploaded files temporarily for debugging, caching, or processing purposes — retention policies vary by vendor. For ActiveCampaign subscriber lists containing EU resident data, this retention may create a GDPR Article 28 data processor relationship requiring a signed Data Processing Agreement before any tool receives the file — separate from your ActiveCampaign DPA. SplitForge processes files in Web Worker threads in your browser — for raw file contents, nothing is transmitted to any server during processing.

For complete email validation before import, see email validation before CRM import. For the cross-platform error reference, see CRM import error codes explained. For the complete CRM import guide, see CRM import failures complete guide.


Import Mapping Failure Walkthrough

Most guides stop at the CSV format. The import mapping screen is where beginners lose time — a mismatch at the mapping step means every row imports to the wrong field, silently.

During the ActiveCampaign import wizard, you see a mapping screen that matches your CSV column headers to ActiveCampaign fields. Here is what correct vs incorrect mapping looks like:

IMPORT MAPPING SCREEN — CORRECT vs INCORRECT:

Your CSV column → ActiveCampaign field (what the wizard shows)

CORRECT MAPPINGS:
"Email"      → Email Address    ✅ auto-matched (standard header)
"First Name" → First Name       ✅ auto-matched
"Tags"       → Tags             ✅ auto-matched if header is exactly "Tags"
"List"       → Subscribe to List ✅ auto-matched if header is "List" or "Lists"

INCORRECT MAPPINGS (create new custom fields instead of mapping to existing):
"Tag"        → [creates new custom field called "Tag"]   ❌
  ← Singular "Tag" instead of plural "Tags" — AC auto-maps "Tags" but not "Tag"
  ← Result: all your tag values go into a new text custom field, not the Tags system

"tags"       → [creates new custom field called "tags"]  ❌ (older AC versions)
  ← Case sensitivity in older imports; newer AC is case-insensitive but verify

"Newsletter" → [creates new custom field called "Newsletter"]  ❌
  ← AC doesn't have a "Newsletter" built-in field
  ← This should be a tag value, not a column header

"Subscribed" → [creates new custom field called "Subscribed"]  ❌
  ← Should map to "Subscribe to List" or add as a tag, not a standalone field

THE RULE: if the mapping wizard shows "New Custom Field" next to your column,
that column will NOT go where you expect. Stop and fix the column header
before proceeding — don't click through hoping it works.

How to verify mapping before running the full import:

  1. Import a 3-row test file first
  2. Open one of the imported contacts in ActiveCampaign
  3. Verify: Tags section shows your tags (not a custom field with tag values)
  4. Verify: List membership shows your list
  5. Verify: Custom fields show the correct values in the correct fields

If anything is wrong at step 3–5, the mapping failed. Fix the CSV column headers and re-import the test before running your full file.


Tag vs Custom Field — Comparison Matrix

This is the table to save. The delimiter confusion between tags and multi-value fields causes more silent import failures than anything else in ActiveCampaign.

Field TypeCSV Column HeaderCSV SeparatorExample ValueCommon MistakeSilent Failure Result
TagsTagsComma ,Customer, VIP, 2026Using pipe ``
Checkbox (multi)[exact field label]Double pipe ||Email||Social||SEOUsing comma ,AC treats comma-separated value as one long option name
List-box (multi)[exact field label]Double pipe ||Weekly||MonthlyUsing pipe ``
Radio button[exact field label]None (single value)WeeklyMultiple valuesSecond value ignored
Date[exact field label]None (single value)03/19/2026ISO format 2026-03-19Field blank after import
Number[exact field label]None (single value)1250$1,250Field blank after import
Text[exact field label]None (single value)EnterpriseN/AUsually imports fine

The golden rule: Tags use commas. Everything else that accepts multiple values uses double-pipe ||. These two rules prevent 90%+ of silent import failures in ActiveCampaign.

🛡 Prevent This Next Time

ActiveCampaign import failures repeat until the source workflow changes:

  1. Save a working import file as your template — after your first clean import, save that exact CSV structure. Future imports use the same column headers and formatting. Never rebuild from scratch.
  2. Build a tag reference sheet — list all your standard tags in a spreadsheet. When building import files, copy-paste tags from the reference rather than typing. This prevents formatting variations.
  3. Always do a 3-row test first — import 3 contacts and check them manually before running 10,000. ActiveCampaign's silent failure modes mean a 3-row test can save hours of cleanup on a large import.

Additional Resources

Tested: Tag format, multi-value field delimiter, date format, and rate limit guidance verified against ActiveCampaign Help Center documentation. March 2026.

Official ActiveCampaign Documentation:

Email Marketing Standards:

Related Guides:


FAQ

Why are my tags showing as one long tag name instead of multiple tags?

This is the most common ActiveCampaign import issue. Your tag column is using pipe separators (|) instead of comma separators (,). When ActiveCampaign sees Customer|VIP|2026, it treats the entire string as one tag named "Customer|VIP|2026" rather than three separate tags. Fix: replace all pipe characters in the Tags column with comma-space. The correct format is: Customer, VIP, 2026.

What is the difference between tags and custom checkbox fields?

Tags in ActiveCampaign are free-form labels that can be added and removed flexibly — they use comma separators in CSV. Custom checkbox fields are structured fields with predefined options — they use double-pipe (||) separators. The practical difference: tags are for segmentation and automation triggering; custom checkbox fields are for structured data with controlled vocabularies. Both are useful, but they use different import formats.

How do I import contacts to multiple lists at once?

Include a List or Lists column in your CSV with list names separated by commas. For example: Newsletter, Product Updates, VIP Members. Each name must match an existing active list exactly. Alternatively, import to one list first, then use ActiveCampaign's Contacts → Bulk Edit to add the contacts to additional lists after import.

Can I update existing contacts without creating duplicates?

Yes. ActiveCampaign deduplicates on email address during import — if a contact with the matching email already exists, the existing record is updated rather than a new record created. The import report shows the count of "Updated" contacts vs "Created" contacts. Tags and custom fields in the import file are added/updated on the existing contact; they do not replace existing values unless explicitly overwritten.

Why do my date custom fields appear blank after import?

ActiveCampaign requires date fields in MM/DD/YYYY format (US format). If your source system exports in ISO 8601 format (YYYY-MM-DD) or European format (DD/MM/YYYY), the dates will fail silently — the contact imports but the date field is blank. Convert all date columns to MM/DD/YYYY before import. For example: 2026-03-19 → 03/19/2026.


Clean Your

ActiveCampaign Import File Without Exposing Your List

✅ Fix tag separators, date formats, and numeric field values before import ✅ Clean and normalize email addresses, phone numbers, and custom field values ✅ Remove duplicates and invalid emails before they corrupt your ActiveCampaign database ✅ Files process locally in your browser — subscriber data never transmitted to any server

Clean Your ActiveCampaign File →

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