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

Attio: a ticked object turned off in Attio now blocks the start#

· Attio

Attio workspaces can turn off standard objects such as Deals, Users and Workspaces. If a ticked object would land in one of them, the Objects step now shows a red line under that row saying the Attio object is turned off and what to do. Review fields stays disabled while such a row is ticked, and the start is refused with the same text, so nothing is written. Quick start leaves those rows unticked. The check uses the object list the step already loads, so it makes no extra call to Attio. Only Attio is checked; if a migration is started anyway, the run reports the turned-off object again.

Comparison pages added for ClonePartner, Skyvia and Import2 alternatives#

· Attio

New pages compare Shuttio with ClonePartner and Skyvia row by row, including the rows where the other tool is ahead. A new page lists seven options for moving a CRM when Import2 is the starting point, including Attio's Migrate CRM button, which runs Import2. Facts about the other companies link to the public pages they were read from, on 4 November 2026. A fact not found there is marked "not published". Anyone can open the pages; no sign-in is needed.

Connector pages into Attio say the move is free and link to Import2 comparison#

· Attio, Odoo, Clarify

Each connector page whose destination is Attio now shows a line under the hero: migration into Attio is free at any record count, with a free sample first and a rollback. The line also says Attio's built-in Import2 is free too, and links to the Import2 comparison. Pages whose destination is Odoo or Clarify do not show the line.

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.

Reminder email a day after a migration is set up but nothing is connected#

· Attio

One email goes to the person who set up a migration from a connected CRM if nothing is connected 24 hours later. It names the source and destination, links to the Connect step and says that nothing has moved. It is sent once per migration. CSV migrations get no reminder, and drafts set up before this change get none. The sample run also says once, in its notes, when activities such as meetings and calls link to an object that is not ticked (for example companies): those links are left out, and the note tells the customer to tick the object to keep them. On the Connect step, an Attio to Attio migration now says that the two connected workspaces are the source and the destination.

Pipedrive deals with several pipelines now land in their own pipeline#

· Attio, Pipedrive, Odoo, Clarify

Deals migrated from Pipedrive now carry their pipeline when they are read. Before, every deal in an account with more than one Pipedrive pipeline was reported as being in an unknown pipeline and could not be placed. Deals now go to the pipeline and stage they had in Pipedrive. Available to anyone migrating Pipedrive deals to Attio, Clarify or Odoo. The fix was checked by tests, not by a new live run of a Pipedrive sample.

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.

Company Employee range now lands in Attio's own ranges instead of failing the run#

· Attio

When a migration into Attio writes the company Employee range field, each source value is now written into the Attio range its head count falls in. For example, 1-5 goes to 1-10, 25-50 goes to 11-50, and 1000+ goes to 1K-5K. Before this, Attio refused to add new options to that field, and the whole migration failed during its schema build. Now, if Attio refuses an option on a field whose options are fixed, only that option is dropped and the build continues. Any other permission error still stops the run. Limit: a value that names no head count, such as "Unknown", is not written and is reported.

Sample notes name your lists and objects instead of showing raw ids#

· Attio

The note on a free sample now names Attio lists and custom objects the way the field review showed them, so a raw 'list:' id no longer appears. Lists with no name are shown once as 'lists'. The sentence about objects that are not linked to the others now names them all, for example 'Events, Fundraising and Partnerships: not linked to the other objects, so each is sampled separately.' A source's files object is labelled 'Files' in the progress list. Limit: this changes wording only, and the sample rules are the same.

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

Twenty is now a source: move it into Attio, Clarify, Odoo or another Twenty#

· Attio, Odoo, Clarify

You can now pick Twenty as the source and connect it with a sign-in or an API key, on Twenty Cloud or a self-hosted server. Shuttio reads people, companies and opportunities (stages in Twenty's order), your own objects and fields, and notes and tasks with the records they were attached to. Owners and assignees are matched by email. Into Attio the move is free at any record count; into Clarify or Odoo it is priced once by record count, after the free sample. Twenty to Twenty is also available: self-hosted into Cloud, or one workspace merged into another. Shuttio refuses the same workspace as both source and destination. Emails and calendar events are not moved, because Twenty fills them from its own sync. Notes and tasks attached only to records of your own objects are not moved either.

Shuttio app for Twenty: set up and run a migration from inside Twenty#

· Attio

The Shuttio app for Twenty connects the CRM you are leaving, shows the field mapping, runs the free sample, takes payment through Stripe Checkout, runs the full migration and rolls it back, all from your Twenty workspace. The first time, you link the workspace by connecting Twenty to Shuttio; later migrations start without another consent screen. After the link, Shuttio sends you back to the app's import page in your workspace. The app names Attio lists and records by their names, and sums up records imported without some links in one sentence, for example people outside the sample. Limit: the link works while the person who made it is still a member of the Twenty workspace.

Attio into Twenty: custom objects, lists, owners, locations and two-way links#

· Attio

A move from Attio into Twenty now carries Attio custom objects, created in Twenty as objects with their fields. Each Attio list is offered on the Objects step and becomes a Twenty object of its own, one record per list entry, linked to its parent record. Owner fields on companies, opportunities, custom objects and lists link to the Twenty user with the same email. Locations arrive as Twenty addresses: street, city, state, postcode, country and coordinates. A two-way Attio link becomes one Twenty relation, and a link with many records on both sides becomes a junction object between the two, one record per link. A Twitter handle becomes an x.com link; a value that is not a valid link is left out and the record still imports. Also fixed for every destination: Attio record references now link records instead of arriving as text of record ids. Limit: an owner with no Twenty user of the same email stays empty, and the run counts these in one line.

Older entries (21)

October 2026

Standard fields and object names now follow the destination you pick#

· Attio, Odoo, Clarify

On the field review, a source's standard fields (Name, Email, Phone, Job title) now start on the destination's own field, not on "New field". The automatic field is always one of the picker options. Standard objects now use the destination's own word, for example Contacts and Opportunities when the destination is Odoo. The messages for Roll back, Restart sample, Run full retry, Change mapping, kept records, filters and plan limits now name the destination instead of saying Attio. This applies to Attio, Clarify and Odoo.

Site: one price block, a "Which CRMs move where" table and help in seven groups#

· Attio

The home page now gives the price in two cards: into Attio free at any record count, into any other CRM from $249 by record count, once per migration. A CSV import is free into every destination. A "Which CRMs move where" table replaces the Yes/No grid: one row per destination, with its price, every source that moves into it and a "What moves" link. The home picker lists each source once. The hero reads: "Migrate your entire CRM: pick two apps, connect them and run a free sample." Help at /help has seven groups (Getting started, Sources, Destinations, What moves where, Pricing and billing, Security, Troubleshooting) and a search box. Object tables now head their columns "Moves out of" and "Moves into" the CRM. Each pair page under /migrate opens with five short answers: can I move it, what moves, what doesn't, price and how long.

Checkout now has a promotion code field#

· Attio, Odoo, Clarify

The Stripe Checkout page for a paid migration now has a field for a promotion code. Stripe applies the discount and checks whether the code has expired. The Product Hunt code PH50 (50% off, valid until 2027-02-03) can be entered there. It applies to migrations that are priced by record count: CRM migrations into Clarify or Odoo, from $249. Moves into Attio and CSV imports are free and never reach Checkout. Payment is still confirmed by Stripe's payment status, so the price shown at Checkout is the price paid.

Source fields now map into existing destination fields of the same name#

· Attio, Odoo, Clarify

When you migrate into Attio, Clarify or Odoo, a source field now goes into the destination field with the same label, ignoring case, punctuation and spacing, so it no longer creates a duplicate. If that field's type cannot hold the values, the field review warns on the row, and for Attio and Clarify you remap it, create it as a custom field, or switch it off before the sample can start. Text values go into a same-named choice field by option label; a value with no matching option is left out and shown in the Errors tab, one row per field. When two source columns map to one field, the first non-empty value wins.

Site copy now describes the pick, connect, sample flow#

· Attio

The home page and the Attio page now describe the three steps: pick your apps, connect both, and run a free sample of 50 records per object. Fields are mapped automatically, and changing the mapping is optional. The home FAQ gains a "What does the free sample do?" answer, and the pricing page says fields the automatic mapping could not place are listed before the full run. The /vs/import2 page no longer shows a price row or plan-tier claims, and the footer now links to this changelog.

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.

Comparison: Shuttio vs MigrateMyCRM (formerly Trujay)#

· Attio, Odoo, Clarify

A comparison page sets Shuttio next to MigrateMyCRM by destination: Attio, Clarify and Odoo, and what to use when your pair is not covered.

Attio as a source of calls and other activities#

· Attio

When Attio is the source, Shuttio reads calls and other activities through Attio's Activities API, including the workspace's own call notes field.

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.

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.

Pricing page with the price per destination#

· Attio, Odoo, Clarify

The pricing page lists the price for each destination: free into Attio at any record count, and from $249 into Clarify or Odoo, set once per migration by record count. It also states the rollback and refund terms.

Attio to Attio: move records between two workspaces#

· Attio

Shuttio copies records, lists, meetings, files, options and statuses from one Attio workspace to another, and matches workspace members by email. It refuses a pair where both sides are the same workspace.

Change mapping: fix a mapping after a run without starting over#

· Attio

After a migration into Attio you can change the field mapping and run again. Shuttio removes what it imported, except records you edited in Attio, and writes the records with the new mapping.

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.

Retry on an Attio migration re-runs only the records that failed#

· Attio, Odoo

Retry on a done, failed or paused Attio migration marks only the objects with failures and queues those records again. A field that Attio cannot find now costs that one value, not the whole record. A field that is empty in every sampled record starts unticked on the Fields step, for Attio as for Odoo.

Faster schema setup and clearer refusals when writing into Attio#

· Attio

Shuttio now reads the live Attio state in parallel and writes fields and options eight at a time, in dependency order. An object that Attio refuses over the plan limit is skipped, and the plan continues. The rollback confirmation now says that custom objects the migration created are deleted too.