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
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.
Files no longer make a free run paid; Pipedrive and Affinity files count#
· Pipedrive, Odoo, Clarify
Files no longer make a CRM migration into Clarify or Odoo need the paid plan. Pipedrive and Affinity files are counted after the free sample finishes, and they count toward the 5,000-record free limit. Files from other sources move free and do not count toward the limit. If the file count is not in when you press Run full migration, the files move free and add nothing to the total.
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.
Odoo app: open tasks and meetings now arrive as activities and Calendar events#
· Odoo
When you migrate into Odoo through the Shuttio app, an open task on a contact, company or deal is now written as a scheduled To-Do activity, and a meeting is written as a Calendar event. Before this, every note, task and meeting arrived as a chatter note. The task keeps its deadline and owner. The owner is matched by email and falls back to the fallback user you chose. The meeting keeps its start and end, with its contacts as attendees. Rollback removes them. Limit: done tasks, notes, calls and emails, and tasks or meetings on other parents such as tickets or orders, are still written as chatter notes.
Odoo 19+ connections keep working when Odoo drops its old API#
· Odoo
Odoo is removing its older /xmlrpc and /jsonrpc endpoints, starting with Odoo Online 21.1. Shuttio now recognises an Odoo 19 or newer server even when a proxy hides the standard version page or the server answers only on the web client's version endpoint, and connects to it over Odoo's newer JSON-2 API. If a server turns out not to have that endpoint, Shuttio logs in once over the older API and stays on it; if that login also fails, you see the original error. When Odoo 19 or newer refuses a key, the connect step says these versions accept only an API key, not your password, and points to Account Security → New API Key in your Odoo profile. This applies to Odoo connections with a URL, database, login and API key, not to the import package.
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.
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.
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.
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.
Odoo moves keep custom activity types like 'Lunch' on tasks#
· Pipedrive, Odoo
When a Pipedrive activity has a custom type such as 'Lunch', Shuttio now matches it by name to an existing Odoo activity type. If none exists, Shuttio creates one and files the to-do under it. Before, the type only appeared as a 'Type: Lunch' line in the task text. Activity types Shuttio creates are removed on rollback unless Odoo records already use them. Calls, meetings and emails keep their usual handling.
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.
Odoo: link user columns from HubSpot or Pipedrive to Odoo users#
· HubSpot, Pipedrive, Odoo
When you migrate into Odoo with an API key, a source column that holds a user (an owner, creator or assignee) can now be linked to an Odoo user instead of being copied as plain email text. On the field review you can pick an existing Odoo field that links to users, or create a new one ('link to an Odoo user'). Each user is matched to an Odoo user by email or login. If no Odoo user matches, the field stays empty, the run summary counts it, and the email is kept in the record's internal note. Limit: the Odoo import package and the Odoo app do not write this field, so it applies to the API-key write only.
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.
Long-form guides now live at /guides/<name>. The first one covers what moves from Pipedrive to Odoo, what needs a separate export, field types, links and rollback. It was updated on 21 October.
Pipedrive projects and project tasks into Odoo's Project app#
· Pipedrive, Odoo
Pipedrive projects and their tasks now move into Odoo's Project app, with the customer, the manager matched by email, dates, tags and task stages. If the Project app is not installed in Odoo, the Objects step says so and hides both objects.
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.
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.
Odoo as a destination: connect with an API key or install the Shuttio Migration app#
· Odoo
The From and To card now offers Odoo as a destination. You can connect with an API key, or download the Shuttio Migration app from the app step and import through it.
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.
Retry on an Odoo migration re-runs the failed records and the failed notes, tasks and meetings by id, and does not touch the records that already landed. A record that failed to link is counted as failed once, and the failure row carries its cause.
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.