Into HubSpot
What Shuttio writes into HubSpot, where each object lands, the permissions it asks for and why, and what a rollback leaves.
Last updated: 7 Nov 2026
Sources that can move into HubSpot: Spreadsheet / CSV, Pipedrive, Affinity, Freshsales, ActiveCampaign, OnePageCRM, Zendesk Sell, Close, folk, Insightly, Bitrix24, Capsule, HighLevel, SugarCRM, SuiteCRM, Salesflare, Vtiger, Twenty, Attio. A CSV import is free. A CRM migration is free under 5,000 records in total: contacts, companies, deals, notes, activities and files together; otherwise it is priced by record count. The sample is free. See pricing.
Object by object: What objects are supported for HubSpot migrations.
What Shuttio writes
- Contacts, companies and deals into HubSpot's own objects. Tickets, products and line items go to HubSpot's objects of those names. Any other object is created as a custom object, which needs HubSpot Enterprise: without it that object is skipped with one clear row and the rest imports.
- Your own fields as properties, in a property group called Shuttio migration. A property you already have with that name and type is used as it is; one with another type is never changed, the field is added under a numbered name instead. Picklist values the source uses are added to your own picklists, never to HubSpot's.
- Contacts are matched on email and companies on domain (or the key you choose) before anything is created. A match is linked and left untouched, and a rollback does not remove it.
- Pipelines and stages: each source pipeline becomes a HubSpot deal pipeline with its stages, won and lost as closed stages. A pipeline you already have with the same name is used as it is, and only missing stages are added to it.
- Associations between records, made after the records exist. A link to a record that did not migrate is listed, and a Retry makes it once that record is there.
- Notes, tasks, calls, meetings and logged emails as HubSpot activities, each associated with every record it names. A logged email keeps its subject, body, direction, sender and recipients. Task owners and record owners are matched to a HubSpot user by email.
- A contact's second and later email addresses as HubSpot secondary emails. A second phone number goes into Mobile phone when that is empty; any further numbers go into one text property, Other phone numbers.
- Attachments, with the full migration only (the sample moves none): each file is uploaded to HubSpot's file manager, in a folder called Shuttio migration, and attached to the contact, company or deal it was on through a note. The Attachments checkbox ticked Options turns them off.
- Your source's lists as static HubSpot lists of the contacts, companies or deals that migrated. A list that kept refilling itself from a filter arrives as a list of who matched on the day of the run. A list name you already use gets "(imported)" after it, so your own list is never changed.
- Two properties on every record Shuttio writes: Shuttio source ID and Shuttio migration. They are what keep a re-run from duplicating anything and let a lost answer be found again.
Where each thing lands
| From | Object | Lands in HubSpot as |
|---|---|---|
| Pipedrive | Persons | Contacts |
| Pipedrive | Organizations | Companies |
| Pipedrive | Deals | Deals |
| Pipedrive | Products | Products |
| Pipedrive | Deal products | Line items |
| Pipedrive | Projects | A custom object (HubSpot Enterprise), or the one you already have with that name |
| Pipedrive | Leads | A custom object (HubSpot Enterprise), or the one you already have with that name |
| Affinity | Persons | Contacts |
| Affinity | Organizations | Companies |
| Affinity | Opportunities | Deals |
| Freshsales | Accounts | Companies |
| Freshsales | Contacts | Contacts |
| Freshsales | Leads | A custom object (HubSpot Enterprise), or the one you already have with that name |
| Freshsales | Deals | Deals |
| ActiveCampaign | Accounts | Companies |
| ActiveCampaign | Contacts | Contacts |
| ActiveCampaign | Deals | Deals |
| OnePageCRM | Companies | Companies |
| OnePageCRM | Contacts | Contacts |
| OnePageCRM | Deals | Deals |
| Zendesk Sell | Companies | Companies |
| Zendesk Sell | People | Contacts |
| Zendesk Sell | Leads | A custom object (HubSpot Enterprise), or the one you already have with that name |
| Zendesk Sell | Deals | Deals |
| Close | Leads | Companies |
| Close | Contacts | Contacts |
| Close | Opportunities | Deals |
| folk | Companies | Companies |
| folk | People | Contacts |
| folk | Deals | Deals |
| Insightly | Organisations | Companies |
| Insightly | Contacts | Contacts |
| Insightly | Leads | A custom object (HubSpot Enterprise), or the one you already have with that name |
| Insightly | Opportunities | Deals |
| Insightly | Projects | A custom object (HubSpot Enterprise), or the one you already have with that name |
| Insightly | Products | Products |
| Bitrix24 | Companies | Companies |
| Bitrix24 | Contacts | Contacts |
| Bitrix24 | Leads | A custom object (HubSpot Enterprise), or the one you already have with that name |
| Bitrix24 | Deals | Deals |
| Bitrix24 | Products | Products |
| Capsule | Organisations | Companies |
| Capsule | People | Contacts |
| Capsule | Opportunities | Deals |
| Capsule | Projects | A custom object (HubSpot Enterprise), or the one you already have with that name |
| HighLevel | Businesses | Companies |
| HighLevel | Contacts | Contacts |
| HighLevel | Opportunities | Deals |
| SugarCRM | Accounts | Companies |
| SugarCRM | Contacts | Contacts |
| SugarCRM | Leads | A custom object (HubSpot Enterprise), or the one you already have with that name |
| SugarCRM | Opportunities | Deals |
| SugarCRM | Products | Products |
| SugarCRM | Cases | A custom object (HubSpot Enterprise), or the one you already have with that name |
| SugarCRM | Projects | A custom object (HubSpot Enterprise), or the one you already have with that name |
| SuiteCRM | Accounts | Companies |
| SuiteCRM | Contacts | Contacts |
| SuiteCRM | Leads | A custom object (HubSpot Enterprise), or the one you already have with that name |
| SuiteCRM | Opportunities | Deals |
| SuiteCRM | Products | Products |
| SuiteCRM | Cases | A custom object (HubSpot Enterprise), or the one you already have with that name |
| SuiteCRM | Projects | A custom object (HubSpot Enterprise), or the one you already have with that name |
| Salesflare | Accounts | Companies |
| Salesflare | Contacts | Contacts |
| Salesflare | Opportunities | Deals |
| Vtiger | Organizations | Companies |
| Vtiger | Contacts | Contacts |
| Vtiger | Leads | A custom object (HubSpot Enterprise), or the one you already have with that name |
| Vtiger | Opportunities | Deals |
| Vtiger | Products | Products |
| Vtiger | Tickets | Tickets |
| Vtiger | Projects | A custom object (HubSpot Enterprise), or the one you already have with that name |
| Twenty | Companies | Companies |
| Twenty | People | Contacts |
| Twenty | Opportunities | Deals |
| Attio | Companies | Companies |
| Attio | People | Contacts |
| Attio | Deals | Deals |
Permissions and why
Shuttio asks for the read permissions it always asks for, plus write permissions for the objects you migrate. HubSpot lets a portal or an approver leave some out; Shuttio refuses to save a connection that cannot write contacts, companies and deals.
| Permission | Why Shuttio needs it |
|---|---|
| crm.objects.contacts.write, companies, deals | Creates and updates the records, and archives them on rollback. |
| crm.schemas.contacts.write, companies, deals | Creates the properties and the property group, and removes them on rollback. |
| crm.objects.tickets.write, products, line_items | Only for the objects you tick. Left out, that object is reported and skipped. |
| crm.objects.custom.write, crm.schemas.custom.write | Custom objects (HubSpot Enterprise only). |
| crm.objects.owners.read | Matches record and task owners to HubSpot users by email. Without it records import without an owner and the run says so. |
| files.write | Uploads attachments. Without it the run writes one row about attachments and moves the rest. |
| files.delete | Deletes the uploaded attachments on rollback. |
| crm.lists.write | Creates the static lists, adds their members and deletes the lists on rollback. Without it the run writes one row about lists and moves the rest. |
Known limits
- A file over 50 MB, and a file that is only a link, is listed as a failed row and not copied. An attachment on a record of a custom object is not moved.
- A list of records other than contacts, companies or deals (products, tickets, custom objects) is listed as a failed row and not created.
- HubSpot allows about 100 requests every 10 seconds. A large migration paces itself under that, and if HubSpot still refuses it pauses with the reason and carries on when you resume.
- Rollback archives what Shuttio created, deletes the attachments it uploaded and the lists it made; HubSpot keeps archived records in the recycle bin for 90 days. A record Shuttio matched, or one a re-run updated, is not removed and its values are not restored. A property is kept while a record you own still holds a value in it, and named.
- HubSpot refuses a secondary email another contact already uses: the run counts these, and the contact keeps its first address.
How rollback works: Roll back.
Not answered here? Email help@shuttio.com.