Table of contents

Show all table of contents

TL;DR

The records are the easy part of moving from Attio. What needs a plan is the structure around them: two-way relationships, lists that carry their own fields on every entry, and custom attributes whose types HubSpot names differently.

Choose a HubSpot home for each list before you export, because a segment cannot hold entry-level data. Load companies before contacts so the primary company is right, keep the Attio ID on every record, and settle early that emails are not part of the export.

 

Attio to HubSpot Migration: What Happens to Relationships Lists and Custom Attributes?

Attio and HubSpot both store people, companies and deals, so an Attio to HubSpot migration can look like a simple export and import. It rarely is. Attio's data model is built around flexible objects, two-way relationship attributes and lists that carry their own fields on each entry. HubSpot models the same ideas with objects, properties, associations and segments. The records move easily. The structure around them is what needs a plan.

This guide explains why teams move from Attio to HubSpot, what data can be migrated, how Attio relationships map to HubSpot objects and associations, how to handle lists and custom attributes, the common challenges, and how to validate the result once the data has landed.

Why Migrate from Attio to HubSpot?

Most teams that leave Attio are not unhappy with it as a database. They move because the CRM has to do more than hold records. Marketing wants email, forms and lead scoring in the same system as sales. Service wants tickets attached to the same companies. Leadership wants one set of reports across the funnel rather than exports stitched together in a spreadsheet.

HubSpot puts marketing, sales, service and reporting on one shared CRM, so a contact's form submissions, deals, tickets and emails sit on the same record. For a growing team, that removes integrations that were only there to move data between tools.

Common triggers for an Attio CRM migration include:

  • Consolidation: The team already uses HubSpot for marketing and wants sales data in the same place.
  • Process maturity: Sales has grown to the point where it needs structured pipelines, sequences, approval steps and forecasting.
  • Reporting: Leadership wants cross-object reports, such as revenue by campaign source, without manual joins.
  • Service: Customer support needs tickets linked to the same company and contact records that sales uses.

It also helps to be clear about what is staying the same. The records, the relationships between them and the fields your team relies on all have a home in HubSpot. What changes is the shape: lists become segments, properties or pipelines, relationship attributes become associations, and some flexibility in how Attio lets users build their own views gives way to a more structured model that marketing, sales and service can all share.

None of these reasons require you to give up what made Attio useful. They do require you to translate Attio's structure into HubSpot's, which is what the rest of this guide covers.

What Data Can Be Migrated from Attio to HubSpot?

To migrate Attio data to HubSpot, start with what Attio lets you take out. Attio's help center explains that workspace admins can export workspace data from Workspace settings, and that the export arrives as a zip file of CSV files. Attio lists the contents as including companies, people, deals, users, workspaces, custom objects, lists, list attributes, attribute options, notes, tasks, comments and files. Attio states that the workspace export is available on all plans but restricted to admins.

There are gaps. Attio notes that emails cannot be exported, and that meetings and call recordings can only be exported through its API. If email history matters, plan to rely on HubSpot's own inbox connection going forward, or decide that historical emails stay archived outside the CRM.

Attio data

HubSpot destination

Notes

People

Contacts

Email is HubSpot's main deduplication key for contacts

Companies

Companies

Domain is HubSpot's deduplication key for companies

Deals

Deals

Map Attio deal stages to a HubSpot pipeline first

Custom objects

Custom objects, or a standard object

HubSpot custom objects need an Enterprise subscription

Lists and list entries

Segments, properties, or pipelines

See the section on lists below

Notes, tasks, comments

Notes and tasks on the matching records

Plan how comments are represented

Files

Files attached to records

Check file size and count limits

Emails

Not available in the Attio export

Reconnect inboxes in HubSpot instead

Workspace members

HubSpot users

Create users before importing owners

 

Two decisions shape everything after this table. First, which Attio custom objects need a HubSpot custom object and which can live as a company, deal or ticket. Second, how each Attio list will be represented, because HubSpot has no direct equivalent of a list entry with its own fields.

How Attio Relationships Map to HubSpot Objects

Attio links records in two ways. Its help center describes a relationship attribute as one that establishes a bidirectional relationship between records and updates both sides, and notes that relationship attributes can only be created at the object level. A record attribute, by contrast, references another record as a value and can allow multiple values.

HubSpot handles links between records with associations. HubSpot's knowledge base states that associations are always two-way: if record A is associated to record B, record B is also associated to record A. That makes Attio relationship attributes a natural fit for HubSpot associations. Attio record references, which are one-way in Attio, also become associations in HubSpot, and gain a reverse side they did not have before.

Attio structure

HubSpot equivalent

What to check

Person to company relationship

Contact to company association

Which company becomes the primary company

Deal to person or company

Deal to contact and company associations

All participants are carried over

Relationship attribute between custom objects

Association between custom objects

Association is defined before import

Record reference with multiple values

Multiple associations

Optional association labels to name the role

Relationship with a role (e.g. "Champion")

Association label

Labels need Professional or Enterprise

 

Primary company. HubSpot gives each contact a primary company, and by default the first company associated becomes the primary one. HubSpot uses the primary company for activity logging, lifecycle stage syncing and some reports. If a person in Attio is linked to several companies, decide in advance which one should be primary, and import that association first.

Association labels. Where an Attio relationship carries meaning beyond the link itself, such as a champion, a billing contact or an advisor, use HubSpot association labels. HubSpot notes that labels are available on Professional and Enterprise subscriptions.

Custom objects. Attio lets teams create their own objects alongside people, companies and deals, and many workspaces use them for things like investors, partners or subscriptions. HubSpot's data model guidance recommends checking each entity against the standard objects first and creating custom objects only for what they cannot handle. HubSpot also states that an Enterprise subscription is required to create custom objects. In practice, an Attio "Partners" object often fits as a company with a label or a property, while an object with its own lifecycle and its own one-to-many links to other records is a better candidate for a HubSpot custom object. Make this call per object before the mapping sheet is written, because it changes every association that touches that object.

Import order. Load companies first, then contacts, then deals and custom objects, then associations. Keep the Attio record ID on every HubSpot record as a unique property so each association can be matched to the right record, and so later reimports update rather than duplicate.

Migrating Lists and Custom Attributes

Lists are where Attio and HubSpot differ most. Attio's help center describes a list entry as an instance of a record within a list, where list-specific attribute values are stored. Object attributes live on the record. List attributes live on the entry. Attio also notes that each list works with a single object type and that the same record can appear more than once in a single list.

HubSpot segments (formerly called lists) do not hold their own fields. HubSpot describes them as a way to group records based on property values and other characteristics, either as active segments that update automatically or static segments with fixed membership. So an Attio list with list attributes cannot simply become a HubSpot segment without losing the entry-level data.

Choose one of three patterns for each Attio list:

  • Segment: For lists that are simple groupings with no list attributes, such as "Q3 conference contacts". Recreate them as static segments, or as active segments if the membership can be expressed as criteria.
  • Properties on the record: For lists where each record appears once and the list attributes describe the record, such as a fit score. Create the list attributes as properties on the HubSpot object and add a property that flags membership.
  • Pipeline or custom object: For lists that track a process with stages, such as a fundraising or hiring pipeline, or where the same record appears more than once. Use a deal pipeline, or a custom object associated to the record, so each entry keeps its own stage and values.

For Attio custom attributes on objects, map each attribute type to a HubSpot property type before any data moves:

  • Text, Number, Checkbox, Date: Single-line text, number, single checkbox and date picker properties.
  • Timestamp: Date and time picker. Check the time zone of the export.
  • Currency: A number property formatted as currency, with the currency confirmed against HubSpot's account settings.
  • Select and multi-select: Dropdown select and multiple checkboxes. Create every option in HubSpot before the import, because HubSpot's import tool requires values to match existing options.
  • Status: A dropdown property, or a pipeline stage if the status drives a process.
  • Rating: A number or dropdown property holding 1 to 5.
  • User: A HubSpot user or owner property. Every Attio workspace member referenced must exist as a HubSpot user first.
  • Location: Separate address properties for street, city, state, postcode and country.
  • Record and relationship: Associations, not properties (see the section above).

Common Attio Migration Challenges

The same issues appear in most projects:

  • Losing list entry data. Importing an Attio list as a HubSpot segment drops every list attribute. Decide the pattern for each list before export.
  • Duplicate entries in one list. Because Attio allows the same record more than once in a list, a property based approach will overwrite values. Use a pipeline or custom object instead.
  • Missing email history. Attio does not include emails in its export. Agree on this with stakeholders early rather than discovering it at cutover.
  • Wrong primary company. People linked to several companies can end up with the wrong primary company if associations are imported in the wrong order.
  • Select options that do not exist. Values that do not match a HubSpot dropdown option fail at import or land blank.
  • Owner mismatches. Attio user attributes need a matching HubSpot user. Create and verify users before importing owner fields.
  • Expecting a live sync. Some teams look for an Attio HubSpot integration to keep both systems running. For a one-time move, a clean export, mapping and import is easier to validate than a sync that keeps writing data in both directions.
  • Custom objects without the right subscription. If HubSpot custom objects are not available on your plan, map Attio custom objects to standard objects or plan the upgrade before the build starts.

If your team would rather not manage these decisions in-house, our Attio to HubSpot migration services cover the mapping, import and validation steps end to end.

H2: How to Validate Data After Migration

Validation proves that the data in HubSpot matches the data that left Attio. It should be based on counts and comparisons, not on scrolling through a few records that look right.

Check

How to run it

Pass condition

Record counts

Compare rows per Attio CSV to records per HubSpot object

Counts match, minus records excluded on purpose

Duplicates

Search for duplicates on email, domain and the stored Attio ID

No unexpected duplicates

Associations

Compare relationship counts in Attio to association counts in HubSpot

Counts match per object pair

Primary company

Sample contacts linked to several companies

Correct primary company on each

List outcomes

Compare each Attio list's entry count to its HubSpot segment, pipeline or flag

Counts match

Custom attributes

Compare value distributions for select, status and number fields

Distributions match

Owners

Count records per owner in both systems

Counts match

Notes and tasks

Sample records with activity in Attio

Notes and tasks attached to the right record

 

Assign an owner to each check. The person who built the mapping should not be the only person signing it off: ask a sales manager to review a sample of their own team's deals, and a marketing lead to confirm that the segments they rely on have the right membership. Users know their data in ways a count cannot show, such as a deal that should be linked to two companies or a contact who changed jobs last month.

Run validation in two passes. First on a small test import that includes records with every attribute type, every list pattern and people with several companies. Fix the mapping, not the records, and repeat until the test passes. Then run the full migration and repeat every check above.

HubSpot's import tool also produces an error file for rows that failed. Fix the cause in the mapping or source file, then reimport only those rows using the Attio ID as the unique identifier so they update instead of creating duplicates.

Once the counts match, freeze Attio as read-only for a short overlap period so users can confirm nothing is missing before it is retired. If you want help planning the move, from the data model to cutover, OneMetric's HubSpot data migration services can support each step. 

 

Need confidence in your numbers after a CRM move?

OneMetric can help define reporting requirements, map data, and validate the target HubSpot environment. 
Summarize and analyze this article with:

Frequently Asked Questions

 Yes. Attio lets admins export workspace data as CSV files, including people, companies, deals, custom objects, lists, notes, tasks and files, and those can be imported into HubSpot. Emails are not part of Attio's export, so email history needs a separate decision. 

 They become associations. Attio relationship attributes are two-way, and HubSpot associations are always two-way, so the link carries over directly. Roles on a relationship can be kept with HubSpot association labels on Professional or Enterprise subscriptions. 

 Yes. Each Attio attribute type maps to a HubSpot property type, such as select to dropdown select and multi-select to multiple checkboxes. Create the properties and their options in HubSpot before importing, and map record and relationship attributes to associations instead of properties. 

 Not as they are. HubSpot segments group records but do not store their own fields, so Attio lists with list attributes need to become properties, a pipeline or a custom object. Simple lists without list attributes can be recreated as segments. 

Relatable? We should definitely talk.

All that we’ll cover when we speak:

  • How to measure and multiply the ROI of your HubSpot investment
  • How can you integrate systems to eliminate data silos and make HubSpot the Single source of truth for your GTM teams
  • Your current GTM motions and future roadmap
  • Challenges that you face with your HubSpot
  • What would 'wins' look like for you
Book Meeting