CRM migration
Field-level mapping, validation, and rollback between Copper and HubSpot. We move data and schema; workflows are rebuilt natively in HubSpot.
Copper
Source
HubSpot
Destination
Compatibility
18 of 18
objects map 1:1 between Copper and HubSpot.
Complexity
BStandard
Timeline
48–72 hours
Overview
Copper CRM and HubSpot CRM take fundamentally different approaches to data organization. Copper uses a flat object model where People, Companies, and Opportunities link through direct association IDs. HubSpot uses a property-based model where Contacts, Companies, and Deals each have a unified set of standard and custom properties, with lifecycle stage as the primary contact classification mechanism rather than separate Lead and Contact objects. We map Copper People to HubSpot Contacts, Copper Companies to HubSpot Companies, and Copper Opportunities to HubSpot Deals. Lead records in Copper route to HubSpot Contacts tagged with a migrated lifecycle stage value. Projects in Copper become either HubSpot Deals or HubSpot Custom Objects depending on whether they map to the deal lifecycle or represent a distinct entity type. Activity history (calls, emails, meetings, notes) migrates as HubSpot Engagements with original timestamps and owner attribution preserved. Custom fields in Copper translate to HubSpot custom properties with equivalent data types — text, number, date, picklist, or currency. The migration uses Copper's REST API with its 180 requests-per-minute rate limit, extracting all objects in dependency order (Companies first, then People, then Opportunities with their association links) and loading into HubSpot via the Contacts API, Companies API, Deals API, and Associations API. Automations, workflows, and project templates in Copper do not migrate — those require a separate rebuild effort in HubSpot's workflow builder, and we provide an export of Copper's automation definitions to accelerate that work.
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 Copper 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.
Copper
Person
HubSpot
Contact
1:1Copper Persons map directly to HubSpot Contacts. The person's name, email, phone, address, job title, and social profiles become standard HubSpot Contact properties. Original Copper create date and last-modified date are preserved in HubSpot custom properties for reporting continuity. Copper's person ID is stored as a custom property to support delta-run de-duplication on subsequent migrations.
Copper
Company
HubSpot
Company
1:1Copper Companies map to HubSpot Companies. Company name, domain, industry, employee count, annual revenue, phone, and address fields translate to their HubSpot Company equivalents. Industry picklist values are mapped on a value-by-value basis with unknown values assigned to HubSpot's default. Parent-company hierarchies in Copper map to the HubSpot Parent Company association.
Copper
Opportunity
HubSpot
Deal
1:1Copper Opportunities become HubSpot Deals. Deal name, value, expected close date, stage, probability, and owner transfer directly. HubSpot Deal pipelines and stages are created to match Copper's pipeline configuration, including stage order, stage names, probability percentages, and forecast categories. Each Copper pipeline results in a corresponding HubSpot deal pipeline.
Copper
Lead
HubSpot
Contact
1:1Copper Leads map to HubSpot Contacts. The Lead status field (New, Working, Nurturing, Unqualified) is translated to a HubSpot custom property (Copper_Lead_Status__c) since HubSpot uses lifecycle stage instead of separate lead status. Leads with no associated Company create a HubSpot Company automatically.
Copper
Project
HubSpot
Custom Object or Deal
1:1Copper Projects require assessment: Projects tracking sales milestones map to HubSpot Deals with a Project_Type__c custom property set to 'Project'. Projects representing non-deal entities (e.g., implementation work, customer onboarding) map to a HubSpot Custom Object named 'Project' with custom properties mirroring Copper's project fields and milestones.
Copper
Task
HubSpot
Task
1:1Copper Tasks map to HubSpot Tasks. Task subject, body, due date, priority, status (complete/incomplete), and owner transfer to HubSpot. Completed status maps to HubSpot's completed checkbox. Open tasks retain their due dates and priority levels. Copper's task association to People or Companies is preserved through HubSpot task associations.
Copper
Activity (Call)
HubSpot
Engagement (Call)
1:1Copper call logs become HubSpot Call Engagements. Call direction (inbound/outbound), duration, outcome, recording link, and timestamp transfer to HubSpot. The engagement is associated to the correct Contact and Company using Copper's association IDs resolved during migration. Call recordings are downloaded and re-uploaded to HubSpot Files, then linked to the Call Engagement.
Copper
Activity (Email)
HubSpot
Engagement (Email)
1:1Copper email logs become HubSpot Email Engagements. Email subject, body (plain text or HTML), timestamp, and status (sent/replied/bounced) transfer to HubSpot. The email engagement is associated to the correct Contact. Note: email body content depends on whether Copper stored the full email or only metadata.
Copper
Activity (Meeting)
HubSpot
Engagement (Meeting)
1:1Copper meeting records become HubSpot Meeting Engagements. Meeting title, start time, end time, location, body, and attendees transfer to HubSpot. Attendee email addresses are resolved to HubSpot Contact records where matches exist; unresolved attendees are recorded as text on the engagement.
Copper
Activity (Note)
HubSpot
Engagement (Note) or Contact Note
1:1Copper notes become HubSpot engagements of type 'note'. Notes attached to specific records are associated to the correct Contact, Company, or Deal. The note body, create date, and owner transfer. Rich-text formatting in Copper notes is preserved where the format is compatible with HubSpot's note editor.
Copper
Custom Field (Person-level)
HubSpot
Custom Property (Contact)
1:1Copper custom fields on People (e.g., Birthday, Preferred Language, Referred By) become HubSpot Contact custom properties. Field types are mapped: text fields to single-line text, picklists to single-option or multi-option contact properties, date fields to date properties, number fields to number properties. HubSpot property names use underscores (e.g., referred_by) to match HubSpot naming conventions.
Copper
Custom Field (Company-level)
HubSpot
Custom Property (Company)
1:1Copper custom fields on Companies (e.g., Tax ID, Billing Cycle, Contract Status) become HubSpot Company custom properties with equivalent data types. Text, number, date, and picklist fields map directly. Multi-select picklists in Copper map to HubSpot multi-checkbox properties.
Copper
Custom Field (Opportunity-level)
HubSpot
Custom Property (Deal)
1:1Copper custom fields on Opportunities (e.g., Contract_Type, Upsell_Potential, Implementation_Owner) become HubSpot Deal custom properties. Stage-dependent fields in Copper require mapping to HubSpot deal properties that can be populated regardless of pipeline stage. All custom properties are created in HubSpot before data loading begins.
Copper
Person-Company Association
HubSpot
Contact-Company Association
1:1Copper's N:N person-to-company associations map to HubSpot Contact-Company associations. If a Copper Person has multiple associated Companies, the primary Company (most recently modified or by your specified rule) becomes the HubSpot primary association, and secondary companies are added as additional associations. Copper's association labels (e.g., Primary Contact, Billing Contact) become HubSpot association labels. Your team can review and adjust the primary designation post-migration.
Copper
Opportunity-Person Association
HubSpot
Deal-Contact Association
1:1Copper's Opportunity-to-Person associations (the people involved in a deal) map to HubSpot Deal-Contact associations. HubSpot Deal-Contact associations support an 'impact' field (Primary Decision Maker, Evaluator, End User) to capture deal role information. Copper association labels are translated to HubSpot deal contact roles.
Copper
Opportunity-Company Association
HubSpot
Deal-Company Association
1:1Copper's Opportunity-to-Company association maps directly to HubSpot Deal-Company association. Each HubSpot Deal is associated to one Company. If a Copper Opportunity links to multiple Companies, the primary Company becomes the HubSpot deal association.
Copper
Owner/User
HubSpot
Owner/User
1:1Copper Users (owners of records) are matched to HubSpot Users by email address. Unmatched owners are flagged before migration — your team either invites them to HubSpot first or assigns their records to a fallback HubSpot owner. No record lands in HubSpot without a valid owner assignment. The fallback owner is designated by your team during planning.
Copper
File/Attachment
HubSpot
File
1:1Files attached to Copper records (People, Companies, Opportunities, Projects) are downloaded and re-uploaded to HubSpot Files. Files are associated to the corresponding HubSpot record (Contact, Company, or Deal). File size limits apply: HubSpot's file upload limit is 256MB per file. Files exceeding this limit are flagged for manual handling.
| Copper | HubSpot | Compatibility | |
|---|---|---|---|
| Person | Contact1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Opportunity | Deal1:1 | Fully supported | |
| Lead | Contact1:1 | Fully supported | |
| Project | Custom Object or Deal1:1 | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Activity (Call) | Engagement (Call)1:1 | Fully supported | |
| Activity (Email) | Engagement (Email)1:1 | Fully supported | |
| Activity (Meeting) | Engagement (Meeting)1:1 | Fully supported | |
| Activity (Note) | Engagement (Note) or Contact Note1:1 | Fully supported | |
| Custom Field (Person-level) | Custom Property (Contact)1:1 | Fully supported | |
| Custom Field (Company-level) | Custom Property (Company)1:1 | Fully supported | |
| Custom Field (Opportunity-level) | Custom Property (Deal)1:1 | Fully supported | |
| Person-Company Association | Contact-Company Association1:1 | Fully supported | |
| Opportunity-Person Association | Deal-Contact Association1:1 | Fully supported | |
| Opportunity-Company Association | Deal-Company Association1:1 | Fully supported | |
| Owner/User | Owner/User1:1 | Fully supported | |
| File/Attachment | File1: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.
Copper gotchas
Contact limit enforcement varies by tier and can block imports
API rate limit of 180 requests per minute requires throttled extraction
Workflows, bulk email, and custom reports are tier-gated features
Attachment files live in Google Drive, not Copper's own storage
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
Audit Copper data structure and associations
FlitStack AI connects to your Copper account via API using read-only credentials. We extract a full inventory of all object types, record counts, custom field definitions, and association links. We specifically audit person-company associations (N:N resolution), project record structures (deal-like vs. custom-object-like), email logging depth, and workflow definitions for rebuild reference. The audit produces a migration plan document that identifies which objects map directly, which require custom property creation, and which need a rebuild-only approach (automations, templates).
Create HubSpot properties and pipelines
Before data loading begins, FlitStack AI creates all required HubSpot custom properties (Contact, Company, Deal) to match Copper's custom field definitions. Data types are mapped: Copper text fields become HubSpot single-line text, picklists become single-option or multi-option properties, date fields become date properties. We also create HubSpot deal pipelines and stages to match Copper's pipeline configuration, including stage probability weights. This step runs in parallel with Copper data extraction to save time.
Extract and sequence data by dependency order
Copper data is extracted in dependency order: Companies first (they have no dependencies), then People and Leads, then Opportunities, then Tasks, then Activities (calls, emails, meetings, notes). Association IDs are collected during extraction and resolved to HubSpot record IDs after each batch loads. Extraction respects Copper's 180 requests-per-minute API rate limit. For accounts with more than 100,000 records, extraction may run over multiple hours or overnight to stay within rate limits without impacting your team's Copper performance.
Run sample migration with field-level verification
A representative sample (typically 200–500 records spanning all object types) migrates first. We generate a field-level diff comparing source values in Copper against destination values in HubSpot. You review the sample to verify: person-to-contact mapping, company-to-account mapping, opportunity-to-deal stage mapping, association preservation (person-company, opportunity-contact), owner resolution, and date preservation. We correct any mapping errors before committing the full migration run.
Execute full migration with delta-pickup window
The full data migration runs against your HubSpot account. Records are loaded in dependency order with foreign-key resolution as each batch completes. A delta-pickup window (24–48 hours after initial load) captures any records created or modified in Copper during the migration window. The delta run applies only new records and changed field values, avoiding duplicates. All operations are logged to an audit trail. One-click rollback reverts the HubSpot account to its pre-migration state if reconciliation uncovers data integrity issues.
Platform deep dives
Copper
Source
Strengths
Weaknesses
HubSpot
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 4 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 Copper and HubSpot.
Object compatibility
4 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
Copper: 180 requests per minute on a rolling window, returning HTTP 429 when exceeded. Bulk endpoints have a separate ceiling of 3 requests per second..
Data volume sensitivity
Copper exposes a bulk API — large-volume migrations stream efficiently.
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 Copper to HubSpot migration scoping. Not seeing yours? Book a call.
Walk through your Copper 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 Copper
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.