Level 2: Advanced Import/Export

Level 2: Advanced Import/Export

Advanced Import Options

Field Mapping Strategies

Auto-Mapping Rules:

auto_mapping:
  exact_match:

    - email โ†’ email

    - first_name โ†’ firstName

    - firstname โ†’ firstName

    - fname โ†’ firstName

  fuzzy_match:

    - company_name โ†’ company (80% similarity)

    - org โ†’ company

    - organization โ†’ company

  custom_field_detection:

    - pattern: custom_*, cf_*

    - create_if_missing: true

Manual Mapping:


Custom Field Mapping:

CSV Column: "annual_revenue"
  โ†’ Map to: [Create New Custom Field]
     Field Name: annual_revenue
     Field Type: โ—‹ Text  โ— Number  โ—‹ Date  โ—‹ Boolean
     Validation: Min: 0, Max: 1000000000

CSV Column: "subscription_tier"
  โ†’ Map to: [Create New Custom Field]
     Field Name: subscription_tier
     Field Type: โ—‹ Text  โ— Select  โ—‹ Multi-Select
     Options: Free, Starter, Pro, Enterprise

Transformation Rules:

transformations:
  phone:
    normalize: true  # (555) 123-4567 โ†’ +15551234567
    default_country: US

  tags:
    delimiter: "|"  # or "," or ";"
    trim_whitespace: true
    lowercase: true

  custom_dates:
    format: "MM/DD/YYYY"  # or "YYYY-MM-DD", "DD-MM-YYYY"
    timezone: "America/New_York"

  company:
    title_case: true  # "acme inc" โ†’ "Acme Inc"

Validation Rules

Email Validation:

email_validation:
  syntax_check: true
  mx_record_validation: true  # Verify domain exists
  disposable_email_detection: true
  role_based_detection: true  # info@, support@, etc.

  actions:
    invalid_syntax: reject
    no_mx_record: warn
    disposable: warn
    role_based: accept

Duplicate Detection:

duplicate_detection:
  match_on:

    - email  # Primary key

  fuzzy_match:

    - first_name + last_name + company

    - phone

  similarity_threshold: 85%  # 85% match = duplicate

  resolution_strategy:

    - skip_new

    - update_existing

    - merge_fields

    - create_new

Data Validation:

field_validation:
  phone:
    pattern: "^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$"
    required: false

  company:
    min_length: 2
    max_length: 200

  lead_score:
    type: integer
    min: 0
    max: 100

  custom_fields:
    validate_type: true
    enforce_required: true

Merge Strategies

Update Existing Contacts:


When duplicate email found:

Strategy: Smart Merge
  โ—‹ Keep existing values (skip import)
  โ— Update with new values (overwrite)
  โ—‹ Merge non-empty values (fill blanks)
  โ—‹ Create duplicate contact

Per-Field Strategy:
  Email: [Keep existing]
  First Name: [Update if blank]
  Last Name: [Update if blank]
  Company: [Always update]
  Tags: [Append (merge)]
  Custom Fields: [Update if blank]
  Lead Score: [Keep existing]

Conflict Resolution:

conflict_resolution:
  email:
    action: keep_existing  # Never overwrite

  name:
    action: update_if_blank

  tags:
    action: merge

  custom_fields:
    action: update_if_newer
    criteria: updated_at timestamp

  lead_score:
    action: keep_higher_value

Advanced Export Options

Filtered Exports

Export by Segment:


Export Contacts

Segment: Hot Leads (Score 75+)
Filters:
  โ˜‘ Lead Score: 75-100
  โ˜‘ Last Activity: Within 30 days
  โ˜‘ Subscription: Active
  โ˜‘ Exclude: Bounced emails

Result: 1,247 contacts

Export by Date Range:


Export Contacts Added:
  From: 2025-10-01
  To: 2025-10-31

  Includes: 3,450 contacts

Export by Custom Criteria:


Advanced Filter:
  Country = "United States"
  AND Company Size รขโ€ฐยฅ "51-200"
  AND Lead Score > 50
  AND Tags contains "enterprise"

  Result: 892 contacts

Custom Field Selection


Select Fields to Export:

Standard Fields:
  โ˜‘ Email
  โ˜‘ First Name
  โ˜‘ Last Name
  โ˜‘ Company
  โ˜‘ Phone
  โ˜‘ Created Date
  โ˜‘ Last Activity
  โ˜‘ Lead Score
  โ˜‘ Tags
  โ˜ Internal Notes

Custom Fields:
  โ˜‘ Industry
  โ˜‘ Company Size
  โ˜‘ Annual Revenue
  โ˜ Account Type
  โ˜ Trial End Date

Engagement Metrics:
  โ˜‘ Total Emails Sent
  โ˜‘ Total Opens
  โ˜‘ Total Clicks
  โ˜‘ Last Opened Date
  โ˜ Average Open Rate
  โ˜ Average Click Rate

Segments:
  โ˜‘ Active Segments (comma-separated)

Export Formats

CSV Export:

email,first_name,last_name,company,phone,lead_score,tags,industry,created_at
john@example.com,John,Doe,Acme Inc,+15551234567,87,"customer,vip",SaaS,2025-10-15T14:30:00Z

Excel Export (.xlsx):


Features:

  - Multiple sheets (Contacts, Custom Fields, Segments)

  - Formatted headers

  - Data validation

  - Freeze panes

  - Auto-filter enabled

JSON Export:

[
  {
    "email": "john@example.com",
    "firstName": "John",
    "lastName": "Doe",
    "company": "Acme Inc",
    "phone": "+15551234567",
    "leadScore": 87,
    "tags": ["customer", "vip"],
    "customFields": {
      "industry": "SaaS",
      "companySize": "51-200"
    },
    "segments": ["Hot Leads", "Enterprise Tier"],
    "createdAt": "2025-10-15T14:30:00Z",
    "lastActivityAt": "2025-11-24T10:15:00Z"
  }
]

Import History & Rollback

View Import History


Import History

Date                User           File               Status    Records
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2025-11-25 14:30   Sarah Johnson  contacts_nov.csv   รขล“โ€œ Success  4,892
2025-11-18 09:15   Michael Chen   leads_q4.xlsx      รขล“โ€œ Success  2,341
2025-11-10 16:45   Sarah Johnson  trial_users.csv    รขลกย  Partial  1,450 / 1,500
2025-11-03 11:20   Emily Davis    webinar_list.csv   รขล“โ€” Failed   0 / 850
2025-10-28 13:00   Sarah Johnson  october_leads.csv  รขล“โ€œ Success  3,210

[View Details] [Download Report] [Rollback]

Import Details


Import Details: contacts_nov.csv
Imported: 2025-11-25 14:30:42
User: Sarah Johnson

Summary:
  File: contacts_nov.csv (2.5 MB)
  Total Rows: 5,000

  Imported Successfully: 4,892 (97.8%)

    - New Contacts: 4,460

    - Updated Existing: 432

  Skipped (Errors): 13 (0.3%)

    - Invalid Email: 13

  Skipped (Duplicates): 95 (1.9%)

Mapping:
  email โ†’ Email Address
  first_name โ†’ First Name
  last_name โ†’ Last Name
  company โ†’ Company
  tags โ†’ Tags

Tags Added:

  - imported_2025_11

  - bulk_upload

Segment Created:

  - "November Import" (4,892 contacts)

[Download Error Report] [Rollback Import]

Rollback Import


Rollback Import: contacts_nov.csv

รขลกย  Warning: This will:

  - Delete 4,460 contacts created by this import

  - Restore 432 contacts to their previous state

  - Remove tags: imported_2025_11, bulk_upload

  - Delete segment: "November Import"

This action CANNOT be undone.

Confirm rollback:
  โ˜ I understand this will delete 4,460 contacts
  โ˜ I have exported a backup

[Cancel] [Confirm Rollback]

Scheduled Imports

Automated CSV Import:

scheduled_import:
  name: "Daily Salesforce Export"

  source:
    type: sftp
    host: sftp.example.com
    path: /exports/contacts_daily.csv
    credentials: salesforce_sftp

  schedule:
    frequency: daily
    time: "02:00"  # 2 AM
    timezone: "America/New_York"

  mapping:
    auto_detect: true
    mappings:
      Id: external_id
      Email: email
      FirstName: firstName
      LastName: lastName
      Company: company

  options:
    duplicate_strategy: update_existing
    add_tag: "salesforce_sync"
    notification_email: admin@example.com

API Import Automation:

// Sync from external CRM daily
cron.schedule('0 2 * * *', async () => {
  const contacts = await externalCRM.fetchNewContacts();

  await importContacts({
    contacts,
    source: 'external_crm',
    duplicateStrategy: 'update_existing',
    tags: ['crm_sync', `sync_${new Date().toISOString().split('T')[0]}`],
  });
});