CRM migration
Field-level mapping, validation, and rollback between Act! and HubSpot. We move data and schema; workflows are rebuilt natively in HubSpot.
Act!
Source
HubSpot
Destination
Compatibility
11 of 13
objects map 1:1 between Act! and HubSpot.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Act! to HubSpot is a deployment-model decision before it's a data-model one. Act! Premium Cloud and Act! Premium Desktop are sold under the same brand but expose data through different paths — Cloud uses the Act! Web API (OAuth 2.0, REST), Desktop typically uses direct SQL Server SELECT against the Act! database. We identify the deployment model during scoping, then extract Contacts (Act!'s primary record) into HubSpot Contacts, attach Companies as Organization parents, and re-create Act! Groups as HubSpot Lists (static groups → static lists, dynamic groups → active lists with translated filter criteria). Opportunities and their Products map to HubSpot Deals with Line Items. The Activity + History timeline — every call, meeting, to-do, and logged interaction since the customer first opened Act! — migrates into HubSpot's engagement timeline so the salesperson opens HubSpot on day one with a contact's history intact. Act! Custom Tables (v18+) require HubSpot Enterprise to map cleanly as Custom Objects; on Professional, they migrate as serialized JSON notes attached to the parent Contact.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Act! object lands in HubSpot, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Act!
Contact
HubSpot
Contact
1:1Act! Contact records map 1:1 to HubSpot Contacts. We preserve standard fields (Name, Title, Email, Phone, Address) and migrate every populated custom field — including the long tail of legacy fields accumulated across Act! versions. Email is the HubSpot dedupe key; Act! records without an email go to a reconciliation queue and either migrate as no-email Contacts or get merged into the destination's parent Company record per customer decision.
Act!
Company
HubSpot
Company
1:1Act! Company records map to HubSpot Companies. Act! tenants that skipped Companies (very common in small-firm Act! installations) get derived Companies created from Contact.Company_Name fields, with deduplication on normalized domain. The Contact → Company association migrates explicitly so HubSpot's Account Manager view renders correctly.
Act!
Secondary Contact
HubSpot
Contact (with primary-contact custom property)
1:1Act! Secondary Contacts (assistants, spouses, alternative decision-makers linked to a primary Contact) migrate as standalone HubSpot Contacts with a 'Primary Contact' custom property pointing back to the parent Contact's HubSpot record ID. This preserves the relationship without duplicating engagement history.
Act!
Group (Static)
HubSpot
Static List
1:1Act! Static Groups (manually maintained membership) map to HubSpot Static Lists. We export the Group's contact membership set and create the destination List with matching members resolved by email. Group descriptions migrate as the List description.
Act!
Group (Dynamic)
HubSpot
Active List
lossyAct! Dynamic Groups use rule-based criteria (e.g., 'all Contacts where Industry = Manufacturing'). We capture the Act! query and translate to HubSpot Active List filter criteria. Some Act! query operators (regex, complex date math) don't translate 1:1; those rules get rewritten with the customer's sign-off and the original query saved as a description for audit.
Act!
Opportunity
HubSpot
Deal
1:1Act! Opportunities map to HubSpot Deals. Standard fields (name, value, stage, weighted forecast, close date, status) map directly. Stage names are Act!-tenant-specific and require a stage mapping table built during scoping — typically customers want to consolidate or rename Act! stages while migrating, so we treat stage mapping as a deliberate decision rather than an auto-translation.
Act!
Opportunity Product
HubSpot
Line Item
1:1Act! Opportunity Products (SKU, name, quantity, unit price, discount, extended price) map to HubSpot Line Items. We pre-create matching HubSpot Products as a master list during setup, then attach Line Items to Deals via the deals-line-items association endpoint.
Act!
Activity (scheduled)
HubSpot
Task / Meeting / Call
1:1Act! Activities split by type: Calls → HubSpot Calls, Meetings → HubSpot Meetings, To-dos and Personal Activities → HubSpot Tasks. Scheduled date, attendees, location, and description migrate. Recurring Activity Series are expanded within an active window (typically next 12 months + last 24 months) and the recurrence rule stored as a custom property so HubSpot can re-create the series in HubSpot Calendar if needed.
Act!
History (completed)
HubSpot
Engagement (Note / Task / Call / Meeting)
1:1Act! History items (completed activities, logged interactions) migrate to HubSpot engagements typed by their original Act! type. Each history item's timestamp is preserved as the engagement's timestamp so the HubSpot Contact timeline reads in correct chronological order. We chunk by date range during extraction to handle the high-volume nature of the History table.
Act!
Note
HubSpot
Note (engagement)
1:1Act! Notes attached to Contacts, Companies, Opportunities, or Groups migrate as HubSpot Notes on the parent record. RTF formatting is converted to HTML; embedded images extract to attachments. Author and timestamp are preserved.
Act!
Document
HubSpot
Attachment / File
1:1Act! Documents (Supplemental Files on Desktop, API attachments on Cloud) download individually and re-upload to HubSpot Files, then link to the parent Contact or Deal as an attachment. Very large Document libraries (>50 GB) get a dedicated migration window. Broken file-path references in Act! Desktop installations are reported to the customer so they can re-attach before migration.
Act!
Custom Table (v18+)
HubSpot
Custom Object (Enterprise) / JSON note (Professional)
lossyAct! Custom Tables map to HubSpot Custom Objects when the customer is on HubSpot Enterprise. On Professional tier we serialize Custom Table rows as JSON notes attached to the parent Contact, since Custom Objects are not available below Enterprise. The schema mapping is built during scoping after we capture the Custom Table definitions via Act!'s metadata endpoint or SQL system views.
Act!
User
HubSpot
User
1:1Act! User records (name, email, role) map to HubSpot Users by email match. Inactive Act! users are excluded by default; if they own records that must retain provenance, we either provision them as HubSpot users (subject to seat licensing) or re-assign their records to a designated 'Migrations' user.
| Act! | HubSpot | Compatibility | |
|---|---|---|---|
| Contact | Contact1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Secondary Contact | Contact (with primary-contact custom property)1:1 | Fully supported | |
| Group (Static) | Static List1:1 | Fully supported | |
| Group (Dynamic) | Active Listlossy | Fully supported | |
| Opportunity | Deal1:1 | Fully supported | |
| Opportunity Product | Line Item1:1 | Fully supported | |
| Activity (scheduled) | Task / Meeting / Call1:1 | Fully supported | |
| History (completed) | Engagement (Note / Task / Call / Meeting)1:1 | Fully supported | |
| Note | Note (engagement)1:1 | Fully supported | |
| Document | Attachment / File1:1 | Fully supported | |
| Custom Table (v18+) | Custom Object (Enterprise) / JSON note (Professional)lossy | Fully supported | |
| User | User1:1 | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
Act! gotchas
Act! Premium Desktop and Cloud use different export paths and cannot share a single migration script
Act! Custom Tables (v18+) have no standardized schema across customers
Activity Series (recurring activities) explode into thousands of occurrences
Act! Marketing Automation campaign history is in a separate database
Act! contact layouts can hide fields without dropping them from the schema
Document attachments in Act! Desktop are file-system pointers, not blobs
HubSpot gotchas
Marketing Contacts billing model is migration-critical
Feature tier gating is not visible until onboarding
Mandatory onboarding fees inflate year-one cost
HubSpot CSV importer cannot migrate engagements or attachments
Custom objects require Enterprise and a pre-existing schema
Pair-specific challenges
Migration approach
Discovery + deployment confirmation
We identify Act! Cloud vs Desktop, capture the SQL Server connection (Desktop) or OAuth credentials (Cloud), inventory the Contact custom fields actually populated, list all Group definitions (static + dynamic), enumerate Custom Tables (if any), and measure the Document library size. The output is a written scope with record counts per object and a deployment-specific extraction plan.
HubSpot pre-flight
We pre-create the HubSpot pipeline, deal stages, Lifecycle Stage values, custom properties for every populated Act! custom field, Custom Objects (Enterprise) or note-template structure (Professional) for Act! Custom Tables, and a Product catalog matching the Act! Opportunity Product master list. Owners get pre-provisioned so deals and contacts land on the right rep at import.
Sample migration + customer review
We migrate a representative slice — typically 200 Contacts, 50 Companies, 30 Opportunities with Line Items, 100 Activities, and 500 History items spanning two reps. The customer reviews mapping fidelity, stage translation accuracy, and ownership assignment before we commit to the full run.
Full extraction
Bulk extraction from Act! (API paginated or SQL chunked), staged in our migration database. We download Documents in parallel, expand Activity Series into the agreed active window, and pre-compute Group memberships for List re-creation.
Full load + validation
Bulk load into HubSpot via the Batch API for Contacts, Companies, Deals, and Engagements. Documents upload to Files API and link to parents. After load completes, we run a field-level hash diff between source and destination and surface any miss to the customer for review before declaring cutover.
Cutover + Act! decommission plan
On the agreed cutover date, we re-extract any records modified since the bulk load (delta sync), close the source migration user, and hand the customer a decommission checklist for Act! — covering license cancellation, SQL Server backup archival (Desktop), and AMA subscription wind-down.
Platform deep dives
Act!
Source
Strengths
Weaknesses
HubSpot
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Act! and HubSpot.
Object compatibility
1 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
Act!: Not publicly documented for Cloud; Desktop is limited only by the customer's SQL Server and IIS capacity.
Data volume sensitivity
Act! doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Act! to HubSpot migration scoping. Not seeing yours? Book a call.
Walk through your Act! to HubSpot migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Act!
Other ways to arrive at HubSpot
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.