Documentation Index
Fetch the complete documentation index at: https://support.affinity.co/llms.txt
Use this file to discover all available pages before exploring further.
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 and resolve conflicts
- 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
Three rough categories cover what most users need:| Source type | Tool | Tasks below |
|---|---|---|
| Another CRM (Salesforce, HubSpot, Pipedrive, Dynamics, Attio, Sevanta) | Data Importer with source-specific export | Task 2 + Task 3 |
| Other tools (Slack, Trello) | Data Importer with source-specific export | Task 2 + Task 3 |
| LinkedIn connections | Dedicated LinkedIn importer | Task 6 |
| Notes (markdown / plain text) | Notes importer | Task 7 |
| Generic CSV from any source | Data Importer | Task 2 |
| Updating existing records | Data Importer in Row ID mode | Task 8 |
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 a four-stage flow: Upload → Match Rows → Manage Conflicts → Complete.🎬 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.
- Click “List Options” in the list header, then select “Import data”.
- Stage 1 — Upload: Drag your CSV in (or click to browse). Affinity parses the file and shows a preview.
- Stage 2 — Match Rows: Affinity attempts to match each row to existing profiles using email (for people) or domain (for companies). Review the matches and override anything wrong.
- Stage 3 — Manage Conflicts: For matched rows, decide which value wins when source data differs from existing data. Common choices: “Keep existing”, “Use new value”, or “Update only if empty” per field.
- Stage 4 — Complete: Review the summary (new profiles created, profiles updated, rows skipped) and click “Begin Import”.
Expected Outcome
Your data is live in Affinity, in the destination list, with duplicates resolved per your conflict resolution choices.📚 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
Inside the Data Importer’s Match Rows stage, you’ll see each column from your CSV alongside a dropdown of Affinity fields to map it to. Mapping quality determines import quality.Action
- For each CSV column, the importer attempts auto-mapping (e.g., “Email” → Affinity’s email field). Confirm or override each one.
- For columns you don’t want to import, choose “Don’t import” from the dropdown.
- For columns that need a new field, click “Create new field” in the dropdown — but only if you forgot to create it in Tutorial 0.3.
- Required fields: Affinity highlights any required fields that weren’t mapped. Map them before continuing.
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 clicking “Run import”, the import runs server-side. Small imports (< 1k rows) complete in seconds; large ones can take minutes or longer.Action
- Stay on the import page until the progress indicator shows Complete.
- Once complete, the summary shows: X profiles created, Y profiles updated, Z rows skipped (with reasons).
- Open Settings → Manage Imports in a new tab to confirm the import is logged. You’ll need this if you ever need to undo.
- 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’s optimized for the specific shape of LinkedIn’s export.Action
- Export your LinkedIn connections from LinkedIn: Settings → Data Privacy → Get a copy of your data → Connections.
- LinkedIn emails you a ZIP file. Extract the
Connections.csvfile. - In Affinity, go to Settings → LinkedIn Data, then start a new import from the Import Data sub-page.
- Upload the
Connections.csvand follow the dedicated LinkedIn import flow — it’s simpler than the general Data Importer because the column structure is fixed. - Affinity will create person profiles for each connection and surface them in your My Network view.
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 has a dedicated Notes Importer.Action
- Format your notes as a CSV with columns: Title, Body, Associated Person/Company, Date.
- Notes import is an admin-only flow. Check your Settings sidebar for a Notes Import option (availability varies by configuration).
- Upload your notes CSV and map columns.
- Review the import preview and run.
Notes import may require admin access depending on your workspace configuration.
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
- First export the existing list from Affinity (this gives you the Row IDs).
- In your CSV, keep the Row ID column and add columns for the fields you want to update.
- Run the import as usual — Affinity will match by Row ID and update those rows.