Browse all articles

HubSpot Import

If you are moving to Growee from HubSpot, you can bring your existing CRM data across in one pass: companies, contacts, deals, and the history logged against them. This article explains exactly what carries over, how the import is run safely, and where a few HubSpot concepts do not have a direct match in Growee yet. It is for the admin planning the migration, not for everyday CRM users.

The import is run by the Growee team together with you. There is no self-serve import screen in the app. You prepare a few things on the HubSpot side, the team runs a preview first so you can review exactly what would come across, and then runs it for real once you are happy with the result.

What carries over

The import maps your HubSpot records onto their Growee equivalents:

  • Companies become organizations. Each company’s lifecycle stage is mapped to a Growee lifecycle stage, and any custom company properties you use come across as custom fields on the organization.
  • Contacts become contacts. If a contact has more than one email address in HubSpot, every address carries over, not just the primary one.
  • Deals become leads, placed into a campaign you choose. Each HubSpot deal stage is mapped to a stage in that campaign, and the deal amount and close date become the lead’s revenue forecast.
  • Notes, emails, calls, and meetings become timeline activity on the matching record, keeping their original date and direction.
  • File attachments become documents, stored alongside the record they belong to.

Because the mapping is defined per account rather than hard-coded, the same import can be tuned to how your team uses HubSpot: which pipeline to pull deals from, how each stage lines up with a Growee stage, and how your company’s lifecycle values translate.

Imported history lands on the organization’s timeline, where the rolled-up view brings together activity from the organization and everything logged on its linked contacts and leads.

A dry run comes first

Before anything is written to your account, the team runs a dry run. A dry run reads your HubSpot data and produces a report, but makes no changes at all.

The report tells you:

  • How many companies, contacts, deals, activities, and attachments would be imported.
  • The full mapping being used, so you can confirm each lifecycle value, deal stage, and property lines up the way you expect.
  • Anything the import could not place, such as a HubSpot property with no Growee mapping or a record that references a company that is not being imported.

You review this report and adjust the mapping until it looks right. Nothing reaches your Growee account until you approve the real run.

The dry run is the same command used for the real import, with a preview flag added:

php artisan hubspot:import --client=<key> --tenant=<id> --dry-run

Running the real import

Once the dry run looks correct, the team runs the same import without the preview flag to bring the data in.

The import is safe to run more than once. Running it again does not create duplicate records — it recognizes what it already imported and updates those records instead. That means you can do an early import, keep working in HubSpot for a while, and re-run the import later to pick up the changes, without ending up with two copies of everything.

Large accounts take longer, especially ones with many file attachments, since files are downloaded one at a time within HubSpot’s rate limits. The team plans the timing with you for bigger migrations.

What does not translate one to one

Most core data migrates faithfully. A few HubSpot concepts do not have a matching feature in Growee yet, and the import is honest about them rather than guessing:

  • HubSpot tasks come across as notes, since Growee’s timeline does not have a separate task activity type. The original type is kept on the note so nothing is lost, just relabeled.
  • SMS and WhatsApp messages also come across as notes. LinkedIn messages keep their own activity type; other message channels become notes.
  • Email open and click history cannot be migrated. Growee does not store that kind of tracking data, so those events are left behind in HubSpot.
  • Deals in an unmapped stage are skipped and listed in the report, not forced into a stage they do not belong in. If you see skipped deals, you extend the stage mapping and re-run.
  • Products, quotes, and HubSpot’s own tickets and marketing assets are out of scope for this import. If you handle support in Growee, tickets are created going forward through the CRM’s own inbox and ticketing, covered in Inbox and Tickets.

A contact with no email address at all is skipped and reported, since Growee identifies contacts by email.

Note: Imported history appears on the organization’s timeline rather than inside an individual lead’s own activity feed, so the organization page is the best place to review everything that came across.

Before a live import

A short checklist for the admin, to confirm before the team runs the real import against your client data:

  • Access token: create a HubSpot private app with read access to contacts, companies, deals, and email content. Without the email content scope, message bodies come back redacted.
  • Pipeline: if you run more than one deal pipeline in HubSpot, decide which one to import. The mapping targets a single pipeline by default.
  • Owner mapping: review how HubSpot owners line up with your Growee teammates so activity is attributed to the right person. Matching by email address covers most people; anyone whose HubSpot address differs from their Growee address is mapped explicitly.

Once these are in place, the team runs the dry run, you review the report, and the real import follows.

Need more help? Contact support or email support@growee.net.