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: upload → choose an import option → map the primary fields → map the remaining fields → Begin import.🎬 Watch
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.
- Switch the list to Classic — importing isn’t in New Lists yet. Click Switch to Classic in the list header, or open List Options (the gear, top right) and choose Switch back to Classic. Then open List Options → Import data. You can switch back to New Lists as soon as the import finishes — see Switching between New and Classic Lists.
- Upload your CSV.
- Choose one import option for the whole file:
- Add new values to existing contacts — fills empty single-value cells and adds to multi-value fields, without overwriting anything
- Create duplicate entries — a new entry for every row
- Skip duplicate entries — ignores rows already on the list
- Overwrite existing values — replaces what’s in Affinity with the CSV’s values
- Map the primary fields — the ones Affinity matches on (see Task 4).
- Map the remaining fields, then click Begin import.
Expected Outcome
Your data is live in Affinity, in the destination list, handled according to the import 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
- Primary fields first — 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. Some columns are auto-mapped — confirm or change each one. Person, organization, and location fields are never auto-mapped, because each needs several columns (for example, a person’s full name and email).
- If you map to global fields, you’ll be asked how to update them — using the same options as the import option in Task 2.
- Remove any columns you don’t want to import with the trash icon.
- 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 Begin 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.
- Switch the list to Classic and import the file, matching on the Row ID. Affinity updates those rows.