Changelog

Every change to Shuttio that you can use today, newest first. A change appears here once it is live in production.

Last updated: 13 Nov 2026

November 2026

Capsule field review counts the 150 custom field limit#

· HubSpot

When Capsule is the destination, the field review shows how many of Capsule's custom fields the account holds plus the ones the current ticks would create, as "N of 150 Capsule custom fields". It updates as the customer ticks. Over 150, the review says how many to untick, and starting the move is refused until then. HubSpot system fields that HubSpot calculates or makes read-only now start unticked for Capsule, and the customer can tick them. Limit: Capsule allows 150 custom fields per account in total.

Import2 comparison and who-can-migrate guides for Attio#

· Attio, HubSpot, Pipedrive

The Import2 comparison page now opens by saying both Import2 (from Attio's Migrate button) and Shuttio are free into Attio, then what differs. Three new guides cover who can migrate Pipedrive, HubSpot and Affinity to Attio, with a table of options, price, fit and limit for each.

Attio user fields now migrate to HubSpot as owner fields matched by email#

· Attio, HubSpot

When you migrate from Attio to HubSpot, Attio fields that hold workspace users now land in HubSpot. This covers a custom field such as "LP owner" and a deal's owner. Before, these fields were proposed as plain text and arrived empty. A deal's owner goes to HubSpot's deal owner. Any other user field becomes a new HubSpot owner-type property, which the field review explains before you start. Each user is matched to the HubSpot user with the same email. If a cell names several users, the first one HubSpot has is used. Limit: no HubSpot users are created. If an email has no HubSpot user, that field is left empty and the run summary counts those people and lists their emails.

Attio to HubSpot migrations can now move record files#

· Attio, HubSpot

When you migrate from Attio to HubSpot, the Objects and Options steps now offer an Attachments switch. If you turn it on, files stored on your Attio people, companies and deals are uploaded to HubSpot and attached to the matching HubSpot contact, company or deal through a note. Only the objects you picked for the migration are scanned for files. Rolling the migration back deletes the uploaded files and archives the notes. Limit: files on Attio custom objects are not moved, because HubSpot files are attached only to contacts, companies and deals.

Fix: source lists migrate into Attio again; Lists and Files keep their row#

· Attio, HubSpot

Attio began rejecting the request Shuttio sent to create a list (400, 'Expected string, received array'), so a source list such as a HubSpot list failed on a migration into Attio. Shuttio now sends the list's parent object in the form Attio accepts. The run page also no longer files Lists and Files under 'Not migrated, no records in the source'. Shuttio never counts them in advance, so a count of 0 said nothing about the source. They now keep their own row. Limit: this applies to migrations into Attio.

HubSpot attachments use files.write and files.delete permissions#

· HubSpot

HubSpot retired the broad files permission, so attachments moved into HubSpot now ask for files.write to upload them, and rollback uses files.delete to remove them. The Into HubSpot help article now lists both permissions. Without a permission, the run writes one row about attachments and moves the rest. Applies to migrations into HubSpot.

Twenty: reserved names, every deal contact, employees and revenue currency#

· Attio, HubSpot, Pipedrive

Fixes from Attio and HubSpot moves into Twenty on 2 November. Twenty refuses objects and fields named with its reserved words, such as event, plan or type. Shuttio now gives them another internal name and keeps your labels, so an Attio Events object and a Plan field arrive. An Attio deal with several people keeps the first as Point of Contact, and a junction object between opportunities and people carries every person. An Attio company's Team is written as each person's company instead of being skipped. From HubSpot, employees go into a number field when the workspace has no standard one, and the revenue currency code becomes the currency of Twenty's annual revenue. In the app, the mapping shows Twenty's own field types, for example LINKS for Domains. A sample rolled back from the app returns to setup with its mapping, so you can edit it and sample again. A source record that duplicates one the run created adds its values as a note on that record, in Twenty and Pipedrive. A choice field reused from an earlier run no longer blocks the start when the sample has no values for it. Limit: the deal-people object has not yet been checked against Twenty Cloud.

October 2026

HubSpot destination now carries extra emails and phone numbers#

· HubSpot

When a migration writes contacts into HubSpot, a contact's second and later email addresses are now added as HubSpot secondary emails. This only happens on contacts the migration created or updated, never on a contact you already had. A second phone number goes into Mobile phone. Any further numbers go into one text property, Other phone numbers, which the migration creates and removes again on rollback. Limit: the secondary-email call has not been checked against a live HubSpot account, so a refused address shows as a failed row in the per-record report.

HubSpot calls into Odoo now carry their outcome#

· HubSpot, Odoo

When you move HubSpot calls into Odoo, each call arrives as a Done entry of Odoo's Call type in the chatter of its contact, company or opportunity. The note now includes the call's outcome, for example "Outcome: Connected", read from the HubSpot disposition label rather than an internal ID. The HubSpot help article now says calls move into Odoo. Other CRM sources add the outcome to call notes the same way.

HubSpot destination: a property that clashes is left out, not added as a _2 copy#

· HubSpot

When you move data into HubSpot, Shuttio no longer creates a second property with a numbered name such as score_2. If HubSpot already has a property with the same label or internal name that cannot take the values (a different type, computed, read-only or HubSpot-defined), nothing is created. The field is left out of the move and the field review shows a warning. From there you can remap it, create a custom property under your own name, or switch the field off. If a property with a different label already uses the internal name, the new property keeps your label and only its internal name gets a number. Applies to moves into HubSpot.

Activities now land as calls, emails, meetings and tasks, not merged into notes#

· HubSpot, Pipedrive, Odoo, Clarify

Each source activity type now goes into the matching type in the destination. HubSpot gets calls and emails (calls used to arrive as notes, emails were not written). Odoo gets calls as Call-type entries (they were dropped before). Pipedrive receives emails as Email-type activities instead of tasks. Calls from SugarCRM, SuiteCRM, Salesflare, Vtiger, Nutshell and Teamleader Focus into Clarify are now calls, not notes. Pipedrive's Activities stay one object, and each row is routed by its type (call, meeting, email, task) into HubSpot, Odoo or Clarify. Limit: where a destination has no matching type, the Objects step names the fallback. For example, Clarify takes meetings, calls and emails as comments.

Guide: migrate HubSpot to Attio#

· Attio, HubSpot

A new guide compares three ways to move HubSpot to Attio: Attio's Import2 flow, a CSV import and Shuttio. It lists what moves, what stays behind and how to check the result.

HubSpot SMS, WhatsApp and LinkedIn messages move to Attio#

· Attio, HubSpot

HubSpot messages sent over SMS, WhatsApp and LinkedIn now arrive in Attio as activities.

Older entries (5)

October 2026

Calls, logged emails and activity types land as Attio activities#

· Attio, HubSpot, Pipedrive

Calls from HubSpot, Affinity and Pipedrive arrive in Attio's Phone calls, and logged emails arrive as a Logged emails activity, unticked by default. Other done Pipedrive activity types become an activity of their own. If a workspace has no activity scope or plan, Shuttio falls back to notes and tasks and counts them in the run summary.

A page for each source and destination pair#

· Attio, HubSpot, Pipedrive, Odoo

Every pair a customer can finish today has its own page, such as HubSpot to Attio, Pipedrive to Attio and Pipedrive to Odoo. Each page lists the objects that move for the pair and links its guide.

HubSpot emails can be read with an optional scope#

· HubSpot

A HubSpot connection can ask for the optional sales-email-read scope. With it, Shuttio reads the emails logged in HubSpot, so they can migrate with the records they belong to. Without the scope, the connection works as before.

Attachments: files move with their records#

· Attio, HubSpot, Odoo

An Attachments switch on the Options step moves HubSpot files into Attio and into Odoo, with the file count and an estimate shown before the run. Files run as their own job after the records, and cancelling deletes the files first. Failed files are listed as rows with a reason.

Record filters: migrate only the records that match#

· Attio, HubSpot, Pipedrive

A Filters step lets you narrow each object by field values or dates before the run, and shows a live match count under the filter. HubSpot, Pipedrive and Attio apply the filter at the source, so records that do not match are not read. The run page shows how many records are in the source and how many were filtered out, and filters never lower the price.