How to import CRM data into Attio: CSV, API, and migration best practices

Moving to Attio often means bringing your existing CRM data with you. Whether you're migrating from HubSpot, Pipedrive, Zoho, ClickUp, or a spreadsheet, importing CRM data into Attio follows a clear path: export from the source, map fields to Attio's schema, import via CSV or API, then clean and deduplicate. This guide walks through the options and best practices so your migration doesn't create a mess.

Before you import: get your Attio structure ready

Import into a structure that matches how you sell. If you haven't already, define your objects (Companies, People, Deals), pipeline stages, and key attributes in Attio. Wkspace can generate a full Attio schema in about 60 seconds tailored to your business — then you import data into that structure. Importing into a half-built or inconsistent schema leads to rework and duplicate cleanup later.

Generate your Attio schema with Wkspace

Exporting from your current CRM

First, export your data from the source system. Most CRMs (HubSpot, Pipedrive, Zoho, ClickUp) support CSV or Excel export for contacts, companies, and deals. Export each object type separately — companies first, then people (contacts), then deals. Include all custom fields you care about; you'll map them to Attio in the next step. For large datasets, check rate limits and use bulk export or API if available. We have separate guides on exporting from HubSpot and from Pipedrive, Zoho, and ClickUp.

Export CRM data from HubSpot

Export CRM data from Pipedrive, Zoho, ClickUp

CSV import into Attio

Attio supports CSV import for companies, people, and other objects. In Attio, open the relevant object (e.g. Companies), go to the import flow, and upload your CSV. You'll map each CSV column to an Attio attribute. Match required fields (e.g. company name, deal stage) first. Map custom fields where the meaning aligns; leave unmapped columns out or add them as new attributes in Attio if you need them. Import in order: companies first (so they exist when you import deals that reference them), then people, then deals. That preserves relationships if you use company name or ID as the link.

Field mapping tips

Stage values in your export (e.g. "Negotiation", "Closed Won") may not exactly match Attio's stage options. Plan a mapping: "Negotiation" → "Negotiation", "Closed - Won" → "Closed Won". You may need to normalise the CSV in a spreadsheet first (find/replace or a mapping column) so the imported values match Attio's select options. For dates, use a format Attio accepts (e.g. ISO 8601). For numbers (deal value), strip currency symbols and use a single numeric column.

Using the Attio API for programmatic import

For larger or repeatable migrations, use the Attio API. You can create companies, people, and deals programmatically, set attributes, and link records. This is useful when CSV import doesn't support complex relationships or when you need to transform data (e.g. normalise stages, merge duplicates) during import. Attio's API documentation covers object and attribute creation; use it to script a one-off migration or to sync data from another system.

Attio API documentation

Deduplication after import

Imports often create duplicates — same company with a slightly different name, or the same contact from multiple lists. After importing, run a deduplication pass: search for companies by domain and merge duplicates; match people by email. Keep the record with the most complete data and move related deals and notes to it. See our guide on keeping CRM data clean for a full hygiene process.

How to keep your CRM data clean

Migrating from specific CRMs

HubSpot: Export contacts, companies, and deals to CSV from HubSpot's export tools. Map HubSpot lifecycle/lead status to your Attio stages; map custom properties to Attio attributes. Pipedrive: Export deals and persons (and organizations if you use them) to CSV; map pipeline stages to your Attio stage values. Zoho CRM: Use Zoho's export or reports to get contacts and deals; map Zoho stage names to Attio. ClickUp: Export from ClickUp views or use an integration/export; map custom fields to Attio. In all cases, clean and deduplicate after import.

What to do with historical data

You don't have to import everything. Consider importing only active deals and recent contacts; archive or leave behind very old closed deals if they don't affect reporting. That reduces noise and import errors. If you need history for compliance or reporting, import it but use a "Migration" or "Legacy" tag so you can filter it in views.

Frequently asked questions

Can I import deals before companies in Attio?

It depends on how Attio handles the import. Typically you import companies first so that when you import deals, you can link each deal to an existing company (by name or ID). If you import deals first, you may need to link or reassign them to companies in a second step. Check Attio's import flow for the recommended order.

How do I map different stage names from my old CRM to Attio?

Create a mapping table (e.g. in a spreadsheet): Old CRM stage → Attio stage. Before or during import, normalise your CSV so the stage column contains only Attio's exact stage values. Use find/replace or a formula in the spreadsheet, or transform the data in a script if you use the API.

Will Attio deduplicate during import?

Attio may offer duplicate detection on import (e.g. match by domain for companies, email for people). Check the import UI and enable it if available. Regardless, run a manual deduplication pass after import to catch near-duplicates and merged records from the source.

How long does a CRM migration to Attio take?

For a few hundred companies and deals, plan for a day: export, map, import, deduplicate, and spot-check. For thousands of records or complex custom objects, allow 2–3 days and consider using the API for a scripted migration. Getting your Attio structure right first (e.g. with Wkspace) speeds up the rest.

Generate your Attio schema with Wkspace
Auto-generated in 60 seconds. No templates, no manual setup. Home · Pricing
Get started →