Affinity → Attio: take the data, leave the bill

Affinity does not make it easy to leave. There is no native migration path to Attio. The data models are fundamentally different: Affinity organizes everything around Lists and List Entries, while Attio uses Objects and Records with custom attributes. The relationship intelligence features (automated scoring, intro path finding) are proprietary and do not transfer. We have migrated VC and PE firms from Affinity to Attio. The relationship data moves. Your contacts, deal histories, notes, and custom fields come with you. The AI scores do not, but most funds we have worked with found those scores were confirming intuition rather than driving decisions. Here is exactly what the migration looks like.

Direction

Affinity → Attio (one-way, full-history migration)

Stack

Affinity API, Attio API, Python, Field mapping layer

The what

What transfers and what does not

This distinction matters before you decide. Most of your data moves cleanly. The piece that does not is the piece Affinity markets hardest. What transfers: All organizations (companies), all people, all custom field values, notes, and list membership. Interaction history from email sync moves as activity records on the relevant contacts. Deal flow entries from your active lists map to Attio pipeline records or custom object records depending on how you design the workspace. What does not transfer: Affinity's AI-generated relationship scores, relationship strength ratings, and intro-path visualizations. These are proprietary outputs of Affinity's engine and cannot be exported. The underlying interactions (emails, meetings, notes) exist in your data and will rebuild in Attio through email sync from day one.

The how

How we run the migration

  1. 1

    Audit the Affinity workspace: which Lists are active, which custom fields have real data, and how your team actually uses relationship scoring day-to-day (to assess what losing it will mean in practice).

  2. 2

    Design the Attio workspace: Affinity's List/List Entry model does not map 1:1 to Attio. Deal flow lists typically become Attio pipelines or custom objects. Contact lists become Attio lists or attributes. Co-investor and LP lists become custom objects with relationship links. We make these decisions before writing any migration code.

  3. 3

    Export from Affinity via the API: Organizations, Persons, Opportunities, Lists, List Entries, Notes, and Interaction history, pulled in paginated batches. For a typical fund, this takes 4-8 hours due to Affinity's API rate limits.

  4. 4

    Transform and load into Attio: standard field types (text, number, date, dropdown) map directly. Affinity-specific types (Ranked Tiered fields and Filterable Multi-Value fields) need to be re-modeled as Attio equivalents during the design phase. Notes and interactions load as Attio notes on their parent records.

  5. 5

    Dry-run into a staging Attio workspace: validate record counts, spot-check 50+ records across your main deal lists, and get team sign-off before touching production.

  6. 6

    Production migration in a defined weekend window: Attio goes live with full history. Affinity stays readable in read-only mode for 60-90 days while the team validates nothing was missed.

  7. 7

    Connect email sync in Attio (Gmail or Outlook) from day one so relationship history starts building immediately. Rebuild Affinity reminder automations as Attio automations.

Under the hood

What lives inside the migration pipeline

  • API-first throughout: no CSV exports, no manual copying. Everything moves via Affinity's REST API and Attio's write API: deterministic, auditable, repeatable.
  • List Entry mapping: Affinity's core unit is the List Entry, not the Record. A company can appear in 10 lists with different field values on each. We design how those list-specific fields map to Attio attributes, list entries, or custom object records before migration starts.
  • Field type coercion: Affinity's Ranked Tiered fields (used for relationship strength) and Filterable Multi-Value fields have no direct Attio equivalent. We re-design these in the workspace design phase (not during migration) so there are no surprises.
  • Interaction history: Affinity exports email and meeting interactions as structured JSON. We convert these to Attio notes attached to the relevant People and Company records, preserving dates and participants.
  • Deduplication: Affinity accumulates duplicate Person records over time, especially from email sync on multiple team members. We run dedup logic before inserting into Attio so you arrive clean.

Hard-earned lessons

What we learned the hard way

  • Affinity's Ranked Tiered field is not a standard dropdown, it is a scored tier used for relationship strength. Do not try to migrate it as-is. Replace it with a Select field with your own tier labels, or rely on Attio's email sync to rebuild the underlying signal.
  • List Entries are the atomic unit in Affinity, not Records. A person on 10 lists may have 10 different sets of custom field values. This must be a design decision before migration, not an afterthought.
  • Affinity's API rate limit is 10 requests/second. For a fund with years of interaction data, the export takes hours. Build this into your migration timeline and do not run it the day before the planned cutover.
  • Notes that reference other Affinity records using internal IDs need to be resolved to Attio record IDs before import. Otherwise the references render as dead text in the Attio UI.
  • Do not cancel the Affinity subscription on day one. Keep it in read-only mode for at least 60 days. Funds routinely discover a list or field they forgot to migrate in the first month.

Case study

Emerging VC fund, 3,000 organizations, 8,000 people, 4 active deal flow lists

Problem

Affinity was costing the fund significantly per year. The team was not actively using relationship intelligence, deals came through known channels and warm intros they already knew about. The pricing felt unjustifiable.

Solution

Three-week migration. Week one: Attio workspace design and staging migration. Week two: validation, team walkthrough, automation rebuild in Attio. Weekend three: production cutover, email sync connected.

Outcome

Full relationship history in Attio from day one. Affinity bill eliminated. The team adapted in two weeks. The main adjustment was tracking relationship strength manually, which most partners said they were already doing mentally rather than trusting the scores.

FAQ

Questions we get

No. Attio's help center covers general CSV imports, but there is no built-in Affinity connector. The right approach is API-first: export from Affinity via their API, transform the data to match Attio's schema, and load via Attio's write API. That is what we build.

You will lose Affinity's automated relationship scores and intro-path visualization, those are proprietary to Affinity's AI and cannot be exported. What you keep is the actual relationship data: contacts, interactions, notes, and history. That rebuilds quickly in Attio through email sync. Most funds we have migrated found their partners knew their network well enough that the AI scores were confirming intuition rather than surfacing new information.

For a typical emerging fund with 2,000-10,000 records and 3-5 active lists: 2-3 weeks. One week for workspace design and staging migration. One week for validation and automation rebuild. One weekend for production cutover. Larger funds with complex multi-list structures or heavy interaction history typically need 4-5 weeks.

Standard field types (text, number, date, dropdown) transfer cleanly. Affinity's proprietary field types (Ranked Tiered and Filterable Multi-Value) need to be re-designed as Attio equivalents before migration starts. We handle this in the workspace design phase so there are no data losses during the actual migration.

For a short window, yes. We recommend keeping Affinity in read-only mode for 60-90 days after go-live. Writing to two CRMs simultaneously creates data divergence: Attio becomes the system of record immediately after cutover, and Affinity becomes the auditable historical archive.

For a typical emerging fund, the range is €5k-€12k depending on workspace complexity and the number of active lists to re-model. The first call is free and we scope it honestly based on your actual data volume.

Want this running on your Attio?

Book a free 30-min call. We'll map your use case to what we've already shipped and tell you whether this fits - honestly.

Book a 30-min call
Book a Discovery Session