> ## Documentation Index
> Fetch the complete documentation index at: https://docs.thread.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Manual Account Upload

> Bulk import accounts using CSV, JSON, or raw data with AI-powered normalization

## Overview

Manual account upload allows you to import multiple accounts at once from various data sources. Thread uses AI to normalize messy data into structured account records.

***

## When to Use Manual Upload

### Good Use Cases

* **CRM migration** - Moving from another CS platform to Thread
* **Spreadsheet imports** - Bulk data from Excel or Google Sheets
* **Partner deals** - Importing customer lists from partners
* **Historical accounts** - Backfilling existing customers

### When to Use Workflows Instead

* **Ongoing deal flow** - Use CRM-triggered workflows
* **Single accounts** - Create manually in the UI
* **Automated processes** - Configure workflow triggers

***

## Supported Formats

### CSV (Recommended)

Standard comma-separated values with headers:

```csv theme={null}
company_name,arr,contact_email,contact_name,notes
Acme Corp,50000,john@acme.com,John Smith,Enterprise deal
Beta Inc,25000,jane@beta.io,Jane Doe,SMB self-serve
```

### JSON

Array of account objects:

```json theme={null}
[
  {
    "company_name": "Acme Corp",
    "arr": 50000,
    "contacts": [
      { "email": "john@acme.com", "name": "John Smith" }
    ]
  }
]
```

### Raw Text

Unstructured text that AI will parse:

```
New deals from last week:
- Acme Corp ($50k ARR) - Contact: John Smith (john@acme.com)
- Beta Inc ($25k) - Jane Doe, jane@beta.io, self-serve customer
```

<Tip>
  CSV is most reliable for consistent data. Use raw text only when you have messy, unstructured data.
</Tip>

***

## Upload Process

<Steps>
  <Step title="Navigate to Upload">
    Go to **Accounts** → **Upload** or click **"Import Accounts"** button.
  </Step>

  <Step title="Paste or Upload Data">
    Either:

    * Paste data directly into the text area
    * Upload a CSV/JSON file
    * Drag and drop a file
  </Step>

  <Step title="Add Context (Optional)">
    Provide additional context to help AI:

    * Source system
    * Default values
    * Data quality notes

    **Example:** "This data is from HubSpot export. ARR values are monthly, multiply by 12."
  </Step>

  <Step title="Process">
    Click **"Process"**. Thread's AI analyzes and normalizes the data.
  </Step>

  <Step title="Review Preview">
    AI shows you normalized records before import:

    * Extracted company names
    * Normalized ARR values
    * Parsed contacts
    * Identified risks or issues
  </Step>

  <Step title="Edit If Needed">
    Fix any incorrectly parsed data:

    * Click fields to edit inline
    * Remove duplicate entries
    * Add missing information
  </Step>

  <Step title="Select Template">
    Choose which onboarding template to apply to imported accounts.
  </Step>

  <Step title="Import">
    Click **"Import Accounts"** to create all accounts.
  </Step>
</Steps>

***

## AI Normalization

### What AI Does

Thread's AI automatically:

| Task                      | Example                                                       |
| ------------------------- | ------------------------------------------------------------- |
| **Extract company names** | "Acme Corp (\$50k)" → "Acme Corp"                             |
| **Parse contact info**    | "[john@acme.com](mailto:john@acme.com) (John)" → Email + Name |
| **Normalize ARR**         | "\$50k", "50000", "50K ARR" → 50000                           |
| **Identify duplicates**   | Same company appearing twice                                  |
| **Flag issues**           | Missing required fields, invalid emails                       |

### Helping AI Succeed

Provide context to improve results:

**Good context:**

> "This is a HubSpot export. 'Deal Amount' column is annual contract value. 'Owner' is the AE name, not the customer contact."

**Why it helps:**

* AI knows which column is ARR
* AI doesn't confuse internal contacts with customers
* AI understands the data source

***

## Field Mapping

### Required Fields

| Field            | Description  | Fallback              |
| ---------------- | ------------ | --------------------- |
| **Company Name** | Account name | Required, no fallback |

### Optional Fields

| Field          | Description              | AI Handling                             |
| -------------- | ------------------------ | --------------------------------------- |
| **ARR**        | Annual recurring revenue | Extracts from text, normalizes currency |
| **Contacts**   | Customer contacts        | Parses email, name pairs                |
| **Domain**     | Company website          | Extracts from email domain              |
| **Notes**      | Deal notes               | Preserves as-is                         |
| **Close Date** | When deal closed         | Parses various date formats             |

### Custom Fields

Any unrecognized fields are preserved in account metadata:

```csv theme={null}
company_name,arr,industry,sales_region
Acme Corp,50000,Technology,West
```

`industry` and `sales_region` are stored as custom fields.

***

## Handling Duplicates

### Detection

AI identifies potential duplicates by:

* Exact company name match
* Similar company names (fuzzy matching)
* Same domain
* Same contact email

### Resolution Options

When duplicates are found:

| Option             | Result                           |
| ------------------ | -------------------------------- |
| **Keep Both**      | Import as separate accounts      |
| **Skip Duplicate** | Only import the first occurrence |
| **Merge**          | Combine data from both records   |
| **Review**         | Flag for manual review           |

***

## Post-Import Actions

After accounts are imported:

### Automatic

* ✅ Accounts created with selected template
* ✅ Milestones initialized
* ✅ Upload source tracked for auditing

### Manual (Recommended)

* Assign CSMs to each account
* Review and edit any incorrectly parsed data
* Trigger handoff process if applicable

***

## Bulk Operations

### Assigning Templates

All imported accounts receive the template selected during upload. To use different templates:

1. Import in batches grouped by template
2. Or change template per-account after import

### Assigning CSMs

After import, assign CSMs in bulk:

1. Go to **Accounts** list
2. Filter by upload batch (date imported)
3. Select accounts
4. Click **"Bulk Assign CSM"**

***

## Troubleshooting

<AccordionGroup>
  <Accordion title="AI Can't Parse My Data">
    **Try:**

    * Add context explaining the data format
    * Use CSV with clear headers
    * Break into smaller batches
    * Clean data before uploading
  </Accordion>

  <Accordion title="Wrong Values Extracted">
    **Solution:** Edit in preview before importing. Click any field to fix.

    **Prevention:** Add context like "ARR column is monthly, not annual"
  </Accordion>

  <Accordion title="Missing Contacts">
    **Check:**

    * Contact columns are labeled clearly
    * Email addresses are valid format
    * Names are in a recognizable pattern

    **Tip:** Add context like "Contacts are in 'Primary Contact' column"
  </Accordion>

  <Accordion title="Import Failed">
    **Check:**

    * Required fields (company name) are present
    * No malformed data (broken JSON, invalid CSV)
    * File isn't too large (\< 10MB)
  </Accordion>
</AccordionGroup>

***

## Best Practices

<CardGroup cols={2}>
  <Card title="Clean Data First" icon="broom">
    Remove obvious errors before upload. Garbage in = garbage out.
  </Card>

  <Card title="Use CSV for Large Imports" icon="file-csv">
    CSV is most reliable. JSON for programmatic exports. Raw text only for messy data.
  </Card>

  <Card title="Review Carefully" icon="eye">
    Always review the preview. Fix issues before importing.
  </Card>

  <Card title="Import in Batches" icon="layer-group">
    For large imports, break into batches of 50-100 accounts.
  </Card>
</CardGroup>

***

## What's Next?

<CardGroup cols={2}>
  <Card title="Creating Accounts" icon="plus" href="/csm-guide/accounts/creating-accounts">
    Create accounts one at a time
  </Card>

  <Card title="Workflows" icon="diagram-project" href="/csm-guide/workflows/overview">
    Automate account creation from CRM
  </Card>
</CardGroup>
