Pipedrive

What Shuttio reads from Pipedrive, where it lands in Attio, Clarify, Odoo, HubSpot, Breakcold, Twenty, which permissions it needs and why, and what does not move.

Last updated: 28 October 2026

OAuth. Company-scoped, so the migration reads only the company you picked.

Object by object: What objects are supported for Pipedrive migrations.

What Shuttio reads and moves

The list below describes the move into Attio. Where Clarify or Odoo differ, the destination's own article says so.

  • Persons, organizations and deals: Persons land as people, organizations as companies, including every custom field on them.
  • Products, deal products, projects and leads: Products and projects become their own Attio objects, a deal's products become line items linked to the deal and the product, and leads go where you choose: people, deals at the stage Lead, or their own object.
  • Notes, and activities split two ways: Pipedrive files meetings and to-dos through one activities endpoint. Meetings become Attio meetings and everything else becomes tasks, and the completion view names which rows went where.
  • Saved filters as lists: A filter is a saved query, so it crosses as a snapshot of the records matching it at the time of the run, with its conditions written out in plain text alongside.
  • Phone numbers Attio will accept: Attio requires country codes. Numbers are normalized toward E.164 against the country you pick; anything genuinely ambiguous passes through and fails visibly rather than being guessed at.

Where each thing lands

Pipedrive objectIn AttioIn ClarifyIn OdooIn HubSpotIn BreakcoldIn Twenty
PersonsPeoplePeoplePartners (contacts)ContactsPeoplePeople
OrganizationsCompaniesCompaniesPartners (companies)CompaniesCompaniesCompanies
DealsDealsDealsCRM opportunitiesDealsDealsOpportunities
ProductsIts own object, or the one you already have with that nameIts own object, created in Clarify when it has noneProductsProductsNot movedA custom object, created in Twenty when it has none, or the one you already have with that name
Deal productsIts own object, or the one you already have with that nameIts own object, created in Clarify when it has noneNot movedLine itemsNot movedA custom object, created in Twenty when it has none, or the one you already have with that name
ProjectsIts own object, or the one you already have with that nameIts own object, created in Clarify when it has noneProjects (Odoo Project app)A custom object (HubSpot Enterprise), or the one you already have with that nameNot movedA custom object, created in Twenty when it has none, or the one you already have with that name
LeadsPeople, deals at the stage Lead, or their own object (you choose)Its own object, created in Clarify when it has noneCRM leadsA custom object (HubSpot Enterprise), or the one you already have with that nameNot movedA custom object, created in Twenty when it has none, or the one you already have with that name
Project tasksNot movedNot movedProject tasks (Odoo Project app)Not movedNot movedNot moved

Notes, tasks, meetings, calls, files, owners and lists depend on the destination. This is the row for Pipedrive, generated from the same tables the runner uses:

Into Attio

FromObjectsNotesTasksMeetingsCallsEmailsFilesOwnersLists
PipedrivePersons, Organizations, Deals, Products, Deal products, Projects, LeadsYesYesYesYesYesYesYesYes

Into Clarify

FromObjectsNotesTasksMeetingsCallsEmailsFilesOwnersLists
PipedrivePersons, Organizations, Deals, Products, Deal products, Projects, LeadsYesYesAs commentsAs commentsAs commentsYesYesAs fields

Into Odoo

FromObjectsNotesTasksMeetingsCallsEmailsFilesOwnersLists
PipedrivePersons, Organizations, Deals, Products, Projects, Project tasks, LeadsYesYesYesYesYesWith an API keyYesNo

Into HubSpot

FromObjectsNotesTasksMeetingsCallsEmailsFilesOwnersLists
PipedrivePersons, Organizations, Deals, Products, Deal products, Projects, LeadsYesYesYesYesYesYesYesYes

Into Breakcold

FromObjectsNotesTasksMeetingsCallsEmailsFilesOwnersLists
PipedrivePersons, Organizations, DealsYesYesYesYesAs notesNoNoNo

Into Twenty

FromObjectsNotesTasksMeetingsCallsEmailsFilesOwnersLists
PipedrivePersons, Organizations, Deals, Products, Deal products, Projects, LeadsYesYesAs notesAs notesAs notesYesYesNo

Each destination's own article says how its data is written: Attio, Clarify, Odoo, HubSpot, Breakcold, Twenty.

Permissions and why

ScopeWhy Shuttio needs it
baseReads who connected (your user and company), to label the connection and handle uninstalls.
contacts:readReads persons and organizations, their custom fields and their notes.
deals:readReads deals, their custom fields and notes, and your saved filters.
activities:readReads activities, so meetings and tasks can move.
mail:readReads mail threads and messages, for a move into Clarify or Odoo. Without it on the connection, the emails step writes one "Reconnect Pipedrive to include emails" row and moves nothing.

Every scope is read-only. Pipedrive scopes are set on the Shuttio app in Pipedrive's Developer Hub, so the consent screen is the final list. The connection is company-scoped: Shuttio reads only the company you picked.

Known limits

  • Custom objects: Pipedrive does not have them. It has custom fields on its fixed entities, and those all migrate. This is a ceiling in Pipedrive, not a gap here.
  • Field history: Pipedrive's changelog is per-record rather than per-field, so there is no bulk read that could reconstruct a field's timeline honestly.
  • A record count before the run starts: Pipedrive charges a full page read for a total, so progress counts up from zero and settles on the true figure once the first pass finishes.
  • Emails: mail threads in the inbox, sent and archive folders that the connected user can see move into Clarify and Odoo; reading mail needs the mail:read permission, and without it the emails step writes one "Reconnect Pipedrive" row. Into Attio they land as a Logged emails activity, unticked by default because Attio's mailbox sync may already show them.
  • Large and linked files: a file over 50 MB, and an entry that is only a link, is listed as a failed row and not copied.

Not answered here? Email help@shuttio.com.