Migrate Attio files to HubSpot with the Attachments switch

Shuttio now moves files on Attio people, companies and deals to HubSpot. Turn on the Attachments switch; files arrive on the matching record as notes.

Last updated: 4 November 2026

What changed

The Attachments switch is offered for the Attio to HubSpot pair.

Here is what Shuttio does with a file:

  1. It uploads the file to HubSpot.
  2. It creates a HubSpot note whose body reads Attachment: <file name> and attaches the uploaded file to that note.
  3. It associates the note with the contact, company or deal the file belonged to.

A file goes to the record it was stored on, once that record has landed in HubSpot. If that record did not migrate, Shuttio skips the file and writes no error row. Each file hangs on a note in the record's activity. Shuttio uploads each copy to HubSpot with private access.

Shuttio scans only the objects you ticked for the migration. If you migrate companies and people but not deals, it does not look for files on deals.

How to use it

  1. Pick Attio as the source and HubSpot as the destination on the first step.
  2. Connect both accounts on the Connect step. HubSpot shows files.write and files.delete as optional permissions, unticked by default. Tick both. Without files.write, no files move.
  3. On the Objects step, tick the objects you want. Tick people, companies and deals if you want their files.
  4. On the Options step, check that Attachments ("Move the files attached to your records.") is on. It is on by default.
  5. Review the fields and run the free sample. The sample moves no files. They move in the full migration.

If the HubSpot connection lacks the file permission, Shuttio writes one failed row and moves no files: "Reconnect HubSpot and approve the files.write permission to move attachments." The Attio connection also needs permission to read files. Without it, Shuttio writes one row, "Reconnect Attio (source) to move attachments.", and moves no files. The rest of the migration is not affected.

Rollback

Shuttio records every uploaded file and every note the moment each exists. Cancelling or rolling back the migration deletes the uploaded files and archives the notes. This holds even if a note was created but its association to the record failed.

Shuttio asks for files.delete so that rollback can delete the uploaded files.

What it does not cover

  • Files on Attio custom objects stay behind. Shuttio attaches files only to contacts, companies and deals. A file on a custom object is skipped, and no error row is written.
  • Other destinations are unchanged. Attio to Odoo gets no Attachments switch.
  • Files arrive on notes. Each file is attached to a note that reads Attachment: <file name>, not to a field on the record.
  • Files over 50 MB are listed, not copied. A file over 50 MB shows as a failed row.

FAQ

Do I need to turn on anything besides the switch? Yes, two things. Tick the optional files.write and files.delete permissions when you connect HubSpot. Give the Attio connection permission to read files; without it, the run writes one row and moves no files. Beyond that, pick the objects and leave Attachments on. Shuttio finds the files itself and walks only the objects you picked.

Which HubSpot records get the files? Contacts, companies and deals. A person in Attio becomes a contact, and the file's note is associated with that contact.

What does rollback remove? It deletes the uploaded files and archives their notes, along with everything else the migration created. A record that already existed in HubSpot and was matched stays.