Importing from another CRM

Companies, contacts, deals and interactions from a HubSpot, Pipedrive or Salesforce export, with every row kept whole.

A team that moves its CRM into Alba Ticket brings its history: the companies, the contacts, the deals and what was said and done with each. An administrator imports them under Administration, Imports, CRM import, from the CSV files the other CRM exports. Nothing in the files is lost: every row is kept whole beside the record it became, whether or not its columns were used, and running the same export again changes nothing.

What you need

  • The export, as one ZIP of its CSV files or as single CSV files uploaded one at a time. With a ZIP, records find each other by the ids in the export; one file at a time they find each other by name (a contact's company, a deal's contact), so a ZIP is better when you have one.
  • A sales project for the deals to go into (see Sales pipeline), unless the export has no deals.
  • The time zone the export's times are in. A time written with an offset is taken as it is; one without is read in that zone.
  • Dates written as 2025-03-31 or 31 Mar 2025, with or without a time. A day, month and year that are all digits (03/04/2025) are refused rather than guessed, since they mean different days in different countries: set the CRM to export ISO dates.
  • Storage for the workspace, since the upload is kept there until it has been read (see Storage).

Exporting from HubSpot

Export each object from its list: Contacts, Companies and Deals, each with All properties and CSV as the format, and include the associated record ids so contacts and deals name their companies. Calls, meetings, notes, tasks and emails are exported from their own lists (or as engagements through an export of activities). Put the files in one ZIP. The file names HubSpot gives them say what each holds, and the columns are recognised: Record ID, Company Domain Name, Deal Stage, Associated Company IDs and the rest.

Exporting from Pipedrive

Under Tools and apps, Export data, export Organizations, People, Deals, Activities and Notes as CSV, each with all its columns. Pipedrive names records by name rather than id (a deal's Organization and Contact person), which the import follows, and a deal's Status (open, won, lost) decides whether it is won or lost whatever its stage.

Exporting from Salesforce

Under Setup, Data Export, export Account, Contact, Opportunity, Task, Event, Note and User. Salesforce names everything by id: AccountId, WhoId (the contact a task is with), WhatId (the account or the opportunity it is about) and OwnerId, which the User file turns into people, so keep User.csv in the ZIP.

Confirming the mapping

The upload is read once and nothing is written. The run's page then shows, for each file, what it was taken for (companies, contacts, deals, interactions, the users a Salesforce export names its owners by, or nothing) and which of its columns feeds which field, with its first rows above. Change either where the suggestion is wrong; a file set to leave it out is not imported.

Where the deal stages go lists every stage the deals name, each with the pipeline stage suggested for it. A stage you leave as it is becomes a stage of its own name in the project's pipeline, reachable from any stage, and the report says which were added.

Then choose the sales project, the time zone, and whether to keep the other columns as custom fields: with it, every column no field takes becomes a text field on the contacts, the companies or the deals. Without it those columns are still in each row's original record. A dry run does everything and rolls it back, so you can read the report before anything is kept.

What the import does

  1. Owners: everyone the export names as an owner or an author is matched to a member by email address, else by name. Anyone who is nobody here becomes a placeholder, shown by name and never given an account.
  2. Companies are matched to the companies the workspace has by their domain, then by their name, and made when neither finds one. A company that is already here is left as it is.
  3. Contacts are matched by any of their email addresses and made otherwise, with their addresses, numbers, postal address, company and owner. A contact that is already here is left as it is.
  4. Deals become tickets of the Deal type in the sales project, with their company, their people, their owner, their value, currency, expected close, probability and lost reason, the day they were made and, for a closed one, the day it was won or lost.
  5. Interactions: the calls, meetings, emails, tasks and notes, each with the member who logged it and the moment it happened, on the timeline of the contact, the company and the deal it names. A task keeps its due moment and whether it was done. A row that names nothing the import knows is skipped and listed.
  6. Verification compares the rows in the files with what is in the workspace, and lists any difference.

The report gives every stage's counts (created, matched, unchanged, skipped) and the review items: what was skipped and why, and which stages the pipeline gained.

Running it again

Running the same export again changes nothing: every row is recognised by its id in the export. A newer export adds what is new. What you changed here since is kept, because a record the import already brought is not written over.