Immediate Value
After this tutorial, your existing data will be living inside Affinity, mapped to the right entities, with duplicates resolved and your team’s relationships intact.Prerequisites
- You’ve completed Tutorial 0.3 — you have a migration plan, your CSVs are prepped, and you know which lists you’re importing into.
- The destination list(s) exist in Affinity with the right field structure.
Quick-Start Roadmap
- Choose your import path
- Export from your source system
- Run the Data Importer
- Map your fields
- Confirm and monitor the import
- Import LinkedIn connections (separate flow)
- Import notes (separate flow)
- Advanced: Update existing records by Row ID
Why This Tutorial Branches by Source
Different source systems require different export steps. Affinity’s Data Importer is the same downstream, but how you get your data out of Salesforce, HubSpot, or LinkedIn is source-specific. This tutorial walks you through both halves.See How to import your data into Affinity for the canonical overview.
Task 1: Choose Your Import Path
Context
These categories cover what most users need:Action
- Identify which category your data falls into.
- Go to the corresponding task(s) below.
Expected Outcome
You know exactly which flow you’ll use.Task 2: Run the Data Importer (Generic CSV)
Context
The Data Importer is Affinity’s primary import tool. It handles any CSV, regardless of source. In New Lists it’s a guided wizard: Upload file → Map identity → Map columns → Match rows → Manage conflicts → Start import.🎬 Watch
The video shows the Classic importer. The New Lists importer below makes the same choices in a guided, six-step wizard.
Action
Need a list first? Imports go into a specific destination list — if you haven’t created one yet, in the left sidebar click “Add New” → “New List”, name your list, pick its type (Companies, People, or Opportunity), and click Create. For the full list-mechanics walkthrough (templates, views, filters), see Tutorial 1: Your First List in Foundation.
- Open the destination list in Affinity.
- Open List Options (the gear, top right) → Import data.
- Upload file — drop in your CSV (under 10 MB).
- Map identity — pick the columns Affinity matches on (see Task 4).
- Map columns — confirm or change the field Affinity suggests for each remaining column (see Task 4).
- Match rows — match on your identity columns, or on Affinity Row ID for a file you exported from Affinity (see Task 8).
- Manage conflicts — choose one option for rows that match a record already on the list:
- Append — fills empty single-value fields and adds to multi-value fields, without replacing anything
- Overwrite — replaces what’s in Affinity with the values from your file
- Skip — leaves the existing record alone and imports nothing from that row
- Duplicate — adds the row as a new entry (not offered for opportunity lists)
- Click Start import.
Expected Outcome
Your data is live in Affinity, in the destination list, handled according to the conflict option you chose.📚 Help Center
Task 3: Export from Your Source System
Context
Source-specific instructions for getting clean data out of common CRMs and other tools.Coming from Salesforce
Coming from Salesforce
Salesforce is the most common source. Affinity has a dedicated export guide that walks through the Salesforce reports you’ll need (Contacts, Accounts, Opportunities, Activities) and how to format each.
- In Salesforce, build a report for each object type you’re importing.
- Add all the columns you want in Affinity. Common ones: Name, Email, Phone, Company, Title, Source, Stage, Amount.
- Export each report as CSV.
- For each CSV, run through Task 2 above into the appropriate Affinity list.
Coming from HubSpot
Coming from HubSpot
HubSpot’s native export is the cleanest path. Export Companies, Contacts, and Deals separately.Help center: How to export data from HubSpot to import into Affinity
Coming from Pipedrive
Coming from Pipedrive
Pipedrive exports Persons, Organizations, and Deals as CSVs. The mapping is straightforward.Help center: How to export data from Pipedrive to import into Affinity
Coming from Microsoft Dynamics 365
Coming from Microsoft Dynamics 365
Dynamics 365 exports require an admin in some configurations. Coordinate access before starting.Help center: How to export data from Microsoft Dynamics 365 to import into Affinity
Coming from Attio
Coming from Attio
Attio is structurally similar to Affinity, so the field mapping is usually clean.Help center: How to export data from Attio to import into Affinity
Coming from Sevanta
Coming from Sevanta
Sevanta-specific export instructions for VC/PE workflows.Help center: How to export data from Sevanta to import into Affinity
From Slack channels
From Slack channels
If you’ve been tracking deals or contacts in Slack threads, you can extract them to CSV and import. Less structured than a CRM export — expect more manual cleanup.Help center: How to export data from Slack to import into Affinity
From Trello boards
From Trello boards
Trello cards map roughly to list entries. Each board becomes a list, each card becomes an entry.Help center: How to export data from Trello to import into Affinity
Expected Outcome
You have a clean CSV from your source, ready to feed into the Data Importer.Task 4: Map Your Fields
Context
After choosing your import option, you map each column from your CSV to an Affinity field. Mapping quality determines import quality.Action
- Identity columns first (the Map identity step) — these are required, because they’re how Affinity matches rows to existing records:
- Organization lists: Website and Organization Name
- People lists: Email Address and Full Name
- Opportunity lists: Opportunity Name
- Then the rest (the Map columns step). Affinity suggests a field for each column — confirm or change each one. Mapping to an enriched field asks you to confirm, because it breaks automatic enrichment for that field.
- If you map to global fields, you’ll choose how to update them at Manage conflicts, under Shared with your organization.
- Leave any column you don’t want to import unmapped — unmapped columns are skipped.
- Any new fields should already exist — create them before the import, as planned in Tutorial 0.3.
Expected Outcome
Every CSV column is either mapped to an Affinity field or explicitly excluded.📚 Help Center
Task 5: Confirm and Monitor the Import
Context
After you click Start import, the import runs in the background. Most imports take 5 to 15 minutes; large files can take up to 24 hours.Action
- You don’t need to wait on the page — Affinity sends you an email and an in-app notification when the import finishes.
- Open your import history (Settings → Manage Imports) to see the result, including any skipped rows and errors to download.
- Open the destination list and spot-check 5–10 rows to confirm the data landed correctly.
Expected Outcome
The import is complete, logged, and the data looks right in the list.📚 Help Center
Task 6: Import LinkedIn Connections
Context
LinkedIn connections use a separate flow from the general Data Importer — it doesn’t go through a list, and it doesn’t need Classic Lists.Action
- In LinkedIn, go to Settings & Privacy → Data Privacy → Download your data, choose Download larger data archive, and request it. LinkedIn can take 24–48 hours to email you.
- Download the archive, unzip it, and find
Connections.csv. Keep the original column headers. - In Affinity, go to Settings → LinkedIn Data and click Import Connections.
- Upload
Connections.csvand follow the prompts. - Your connections appear as a LinkedIn badge on profiles, in the LinkedIn Network tab, and through the LinkedIn Connected To list filter — and AI Chat can use them to find warm intros.
Expected Outcome
Your LinkedIn connections are in Affinity, contributing to Relationship Intelligence.📚 Help Center
Task 7: Import Notes
Context
If you’re migrating notes from another system (Evernote, Notion, Google Docs, or another CRM’s notes), Affinity Support imports them for you — running notes through the standard importer leads to errors.Action
- Build a CSV with these four columns:
- Author — the email address of the team member who wrote the note
- Date Created — one consistent date format throughout
- Tagged Entity — the person’s email, the organization’s website, or the opportunity name
- Content — the note itself
- Keep to one entity type per file — people, organizations, or opportunities.
- Email the file to support@affinity.co, and Support will import it.
Expected Outcome
Historical notes are attached to the right people/companies in Affinity.📚 Help Center
Task 8: Advanced — Update Existing Records by Row ID
Context
If you’re not creating new records but updating existing ones in bulk (e.g., refreshing all entries with new field values), you can match by Affinity’s internal Row ID instead of email/domain. This is the safest method for bulk updates because matching is unambiguous.Action
- Export the saved view from your list. The export includes an Affinity Row ID column (column A).
- Edit the values you want to change — but leave the Affinity Row ID column exactly as it is.
- Import the file into the same list and choose Match by Affinity Row ID at the Match rows step. Affinity updates those rows.