HubSpot one-time import: exactly what comes across
If you're moving off HubSpot — or just want your CRM history sitting next to your PSA book — the import brings companies, contacts, deals, and (optionally) your engagement history into Current in one guided pass. This article covers exactly what maps where, so nothing surprises you. For the short setup version, see "HubSpot: connect, import your book, and keep it in step." If you want HubSpot to keep updating Current afterward instead of a single import, read "HubSpot two-way sync vs one-time import: which to run."
Before you start: the private app token
Current reads HubSpot through a private app token, not a full OAuth login. Create the private app in HubSpot with read scopes for companies, contacts, deals, and (if you want list-based tagging) lists, then paste the token into Current.
- 1Create a private app in HubSpotIn HubSpot, go to Settings → Integrations → Private Apps, create a new app, and grant read scopes for companies, contacts, and deals. Add the lists read scope too if you want HubSpot lists to come across as tags.
- 2Copy the access tokenHubSpot shows the token once when you create the app. Copy it before leaving the page.
- 3Connect it in CurrentGo to Settings → Integrations → HubSpot and paste the token into the connection card. Current validates the token before saving it.
- 4Run the import from HubSpot → ManageOpen the HubSpot card's Manage view and start the import. Current stages everything from HubSpot first, then shows you a match plan to review before anything is written into your CRM.
- 5Review the match plan, then approveCurrent shows you what it found: new records, records it matched to something already in Current, and anything ambiguous that needs your call. Nothing is written into your live CRM data until you approve.
What imports, and where it lands
Three record types come across, plus your list memberships if you granted that scope:
| HubSpot object | What Current brings in |
|---|---|
| Companies | Name, domain/website, phone, and address fields (street, city, state, zip). Industry comes across too, converted from HubSpot's internal codes into a readable label (for example, HubSpot's raw "COMPUTER_SOFTWARE" becomes "Computer Software"). |
| Contacts | Name (first + last), email, phone/mobile, and job title. Each contact is linked to its HubSpot-associated company where one exists. |
| Deals | Deal name, pipeline and stage, amount (with recurring-revenue fields — new MRR, renewed MRR, MRR reduction, and one-time charges — mapped where HubSpot has them), and projected close date. The deal's HubSpot pipeline label decides whether it lands as a renewal, new-logo, expansion, or project deal in Current. |
| Lists + list memberships | Each list becomes a tag on the contacts in it (see below). Requires the lists read scope on your private app. |
| Engagement history (optional, separate step) | Notes, calls, meetings, emails, and tasks can be pulled in as a history read after the main import, so your team can see what was already said and done without leaving Current. |
Owners: deals stay attributed even before everyone has a Current login
Every imported deal remembers its HubSpot owner. If that person doesn't have a Current account yet, Current holds the owner's HubSpot ID and keeps the deal unassigned rather than dropping the attribution. The moment someone with a matching email joins Current, their historical HubSpot deals are automatically claimed and assigned to them — you don't need to re-run anything or hand-assign a backlog of deals to a new hire.
Lifecycle stage and lists: how HubSpot's own categories land
HubSpot's lifecycle stage (lead, MQL, customer, and so on) does not become a status field in Current — it becomes a tag, like "Lifecycle: Customer" or "Lifecycle: Marketing Qualified Lead," on the company or contact. The same is true of HubSpot's lead status. Whether a company is actually a customer in Current is decided independently, from your PSA's contract or agreement data — see the note below.
HubSpot lists work the same way: each list becomes a tag, named after the list ("HubSpot: Q3 Nurture," for example), applied to every contact that was a member. Those tags are then usable anywhere Current lets you filter or build an audience by tag — so a HubSpot list still drives targeting in Current, just via a tag rather than a separate list object.
Matching against your existing PSA-anchored companies
If you already run Current against a PSA, most of your companies exist there before you ever touch a HubSpot import. Current matches in this order, and the PSA-linked record always wins when there's a conflict between duplicates:
- +An existing link between the company and its HubSpot record (set once — on Autotask workspaces, from an Autotask custom field) — the strongest match.
- +A matching domain, if no link exists yet.
- +An exact match on the normalized company name, if there's no domain match.
- +More than one plausible candidate, or only a fuzzy match — Current marks it ambiguous and asks you to decide rather than guessing.
- +No match at all — the company imports as new.
Contacts match the same way, by an existing link first and then by email. Deals match by an existing link, or import fresh under whatever company they resolved to. Anything ambiguous is held out of the automatic import and shown to you separately — nothing gets merged on a guess.
What does not import
- +Marketing emails, workflows, and HubSpot ticket data — none of these are read by the import.
- +Deal line items — deal-level financials come across, but not itemized line items.
- +Anything on HubSpot's default "My Pipeline" board — Current treats this as HubSpot's junk/staging pipeline and always skips it.
Re-running an import safely
You can run the import more than once — to pick up records created in HubSpot since your last pass, or to bring in engagement history you skipped the first time. Each run only writes what it newly matches or creates; already-imported records aren't duplicated. If you need to reverse a specific import run entirely, Current can undo it — removing what that run created, in the safe order (activities, then deals, then contacts and tags, then companies) — without touching anything that was already in Current before the import, or overwriting a record that has since been matched to a real PSA record.
