CRM migration
Field-level mapping, validation, and rollback between Ascora and HubSpot. We move data and schema; workflows are rebuilt natively in HubSpot.
Ascora
Source
HubSpot
Destination
Compatibility
10 of 12
objects map 1:1 between Ascora and HubSpot.
Complexity
BStandard
Timeline
48–72 hours
Overview
Ascora is a field service management platform built for trade businesses — plumbers, electricians, HVAC technicians — handling quoting, scheduling, job tracking, and Xero or QuickBooks integration in one place. HubSpot is a full CRM with contacts, companies, deals, tickets, and custom objects. These platforms have fundamentally different data architectures: Ascora combines customer and site data in one record, while HubSpot separates contacts and companies; Ascora stores jobs as a distinct entity, while HubSpot models service work as tickets and financial opportunity as deals; Ascora's custom forms map to HubSpot's custom properties but carry HubSpot's per-tier property limits (Starter caps at 1,000 properties, Professional at 1,000, Enterprise at 2,000). We extract Ascora data via its API using a generated key, then load into HubSpot using the Contacts, Companies, Deals, and Tickets APIs — sequencing companies before contacts (since contacts require an AccountId), then deals and tickets, with activities last. Workflows, job automation rules, and email triggers cannot migrate and must be rebuilt as HubSpot workflows or sequences. Custom forms in Ascora become HubSpot custom properties; equipment and asset data requires a HubSpot custom object since no native equivalent exists. We run a sample migration with field-level diff before the full run, apply a 24–48-hour delta pickup window, and deliver an audit log with one-click rollback if reconciliation fails.
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 Ascora 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.
Ascora
Customer
HubSpot
Contact + Company
many:1Ascora Customer stores both the person (name, email, phone) and the business. We split this into a HubSpot Contact (name, email, phone) and a HubSpot Company (business name, domain, industry). The primary site address from the Customer record becomes the Company address. Each Customer may have multiple Sites — additional site addresses attach as secondary company address records or as a custom site-association property.
Ascora
Site
HubSpot
Company (secondary address) or Custom Object
1:1Ascora Sites store site name, full address, site contact (name, phone), and access notes. We map the primary site to the Company address fields. Additional sites on the same Customer map to a HubSpot custom object (Site__c) with address fields, contact fields, and a lookup to the parent Company. Site access notes migrate as a custom text property on the Site__c record.
Ascora
Job
HubSpot
Ticket + Deal
many:1Ascora Job is the central operational record — it links a Customer, a Site, a Quote (if applicable), and a technician. We split the Job into two HubSpot objects: a Ticket (for service-work tracking, status, technician assignment, and custom form responses) and a Deal (if the job has a billable amount, for financial pipeline visibility). The Ticket and Deal are linked via a custom field so the relationship is preserved.
Ascora
Quote
HubSpot
Deal
1:1Ascora Quotes store quote amount, line items, status (Draft, Sent, Accepted, Declined), and expiry date. Each Quote links to a Customer and optionally to a Job. We map Quote to HubSpot Deal — Deal name uses the Quote number, Deal amount uses the Quote total, Deal stage maps from Quote status via value-mapping, and close date maps from expiry date. Line items map to HubSpot Deal line items.
Ascora
Job Status
HubSpot
Ticket Pipeline + Ticket Status
1:1Ascora Job status values (Quoted, Scheduled, In Progress, On Hold, Completed, Cancelled) map to HubSpot Ticket pipeline stages. Each status gets a corresponding Ticket stage via value-by-value mapping. We preserve the original Ascora status transition timestamps as HubSpot custom datetime fields so historical stage progression is auditable in HubSpot reporting.
Ascora
Job Type / Trade Classification
HubSpot
Custom Property on Ticket
1:1Ascora stores trade type per job (Electrical, Plumbing, HVAC, Roofing, etc.). HubSpot Tickets have no native trade-type field. We create a custom pick-list property (Trade_Type__c) on the Ticket object and populate it from the Ascora Job type. Filterable and reportable in HubSpot dashboards.
Ascora
Equipment
HubSpot
Custom Object (Equipment__c)
1:1Ascora Equipment records store asset type, serial number, installed site, maintenance schedule, and linked job history. HubSpot has no native equipment object. We create an Equipment__c custom object with custom fields for serial number (text), asset type (pick-list), maintenance frequency (number), and site association (lookup to Site__c). Equipment-to-job links migrate as custom lookup fields.
Ascora
Custom Form Fields (Job Custom Details)
HubSpot
Custom Properties on Ticket
1:1Ascora custom forms define field codes and labels for job-specific data entry — Project Sign Off By, safety checklist answers, parts used, and so on. We create matching HubSpot custom properties on the Ticket object using the Ascora field code as the property name. Field type mapping: text to text, number to number, dropdown to pick-list, checkbox to single-checkbox. HubSpot Starter tier limits property counts — we flag any migration exceeding the tier limit before the run.
Ascora
Invoice
HubSpot
Deal Line Items + Reference to ERP
1:1Ascora Invoice stores line items, tax, payment status, and Xero/QuickBooks sync status. HubSpot has no invoice object — deals store line items for product quoting, not for billing. Invoice records migrate as Deal line items with a custom property storing the Ascora invoice ID and ERP sync status. Actual accounting and invoice PDF generation stays in Xero or QuickBooks, not in HubSpot.
Ascora
Technician / Staff
HubSpot
Contact + Owner (via email lookup)
1:1Ascora stores staff records with name, trade, phone, and email. Staff assigned to jobs appear as the technician on each Job record. We create HubSpot contacts for each technician, storing their trade classification and contact details. Job-to-technician assignments migrate as a custom contact property on the Ticket (Technician__c). If a technician email matches an existing HubSpot user, we resolve the assignment to the HubSpot OwnerId.
Ascora
Attachment / File
HubSpot
HubSpot Files
1:1Ascora file attachments on jobs (photos, job sign-off sheets, PDF invoices) re-upload to HubSpot Files and attach to the corresponding Ticket or Deal record. File size limits apply (HubSpot caps individual files at 25MB). Inline images in Ascora notes are downloaded and rehosted as HubSpot file attachments. The original filename is preserved for traceability.
Ascora
Xero / QuickBooks Sync Status
HubSpot
Custom Property on Deal + ERP reference
1:1Ascora tracks sync status with Xero or QuickBooks per invoice and job. HubSpot has no native accounting sync status field. We preserve the ERP sync state as a custom pick-list property (ERP_Sync_Status__c) on the Deal record with values: Synced, Pending, Failed, Not Applicable. Post-migration, re-establish the HubSpot-Xero or HubSpot-QuickBooks connection and re-enable the sync from the HubSpot side.
| Ascora | HubSpot | Compatibility | |
|---|---|---|---|
| Customer | Contact + Companymany:1 | Fully supported | |
| Site | Company (secondary address) or Custom Object1:1 | Fully supported | |
| Job | Ticket + Dealmany:1 | Fully supported | |
| Quote | Deal1:1 | Fully supported | |
| Job Status | Ticket Pipeline + Ticket Status1:1 | Fully supported | |
| Job Type / Trade Classification | Custom Property on Ticket1:1 | Fully supported | |
| Equipment | Custom Object (Equipment__c)1:1 | Mapping required | |
| Custom Form Fields (Job Custom Details) | Custom Properties on Ticket1:1 | Fully supported | |
| Invoice | Deal Line Items + Reference to ERP1:1 | Fully supported | |
| Technician / Staff | Contact + Owner (via email lookup)1:1 | Fully supported | |
| Attachment / File | HubSpot Files1:1 | Fully supported | |
| Xero / QuickBooks Sync Status | Custom Property on Deal + ERP reference1: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.
Ascora gotchas
No documented public REST API with published rate limits
Custom Forms use Word template field codes with no structured schema export
Xero two-way sync creates reconciliation risk during migration
Excel export is the primary bulk data extraction mechanism
No pricing transparency — plan tiers are not publicly documented
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
Generate Ascora API key and audit data model
We request an Ascora API key from your account (Administration > API Settings) and enumerate all objects available for export: Customers, Sites, Jobs, Quotes, Invoices, Equipment, and all active custom form definitions with their field codes and types. We count records per object, identify N:N relationships between Customers and Sites, and flag any Ascora custom form fields that will exceed HubSpot's property count on your current tier. This audit produces the schema map that drives the entire migration plan.
Create HubSpot custom objects and custom properties
Before data moves, we create the Equipment__c custom object (if Equipment records exist), the Site__c custom object for multi-site customers, and all custom properties on the Contact, Company, Ticket, and Deal objects. Each custom form field from Ascora becomes a HubSpot property with the correct type (text, number, pick-list, single-checkbox). We verify the property count against your HubSpot tier limit and escalate to Professional or Enterprise if the Ascora field count requires it. This step includes creating the custom Ticket pipeline stages that mirror Ascora job statuses.
Resolve technician and customer owner relationships by email
Ascora technician and staff records are matched against HubSpot users by email address. Unmatched staff are flagged before migration — your team either invites them as HubSpot users first or the technician assignment stores as a custom text property on the Ticket. Ascora customer records are resolved to HubSpot contacts by email match; contacts without an email receive a generated placeholder address and are flagged in the migration report for manual review. Sites are linked to Companies after the Company records are created.
Sequence migration: Companies → Contacts → Sites → Deals/Tickets → Equipment → Activities
We follow HubSpot's foreign-key constraints: Companies must exist before Contacts (Contacts require an AccountId), Contacts must exist before Tickets (Tickets can link to contacts), and Deals must exist before line items. Equipment__c custom object loads after Sites to support the site-lookup relationship. Activities (notes, emails, calls logged in Ascora) load last, linked to their parent Contact, Company, or Ticket record. Each phase generates a load report with record counts, error rates, and duplicate detection.
Run sample migration with field-level diff before full commit
A representative slice of 100–300 records — spanning customers across multiple sites, jobs in different statuses, quotes, and at least one equipment record — migrates first. We generate a field-level diff report comparing source values from Ascora against destination values in HubSpot for every mapped field. You review the diff to confirm trade-type classification, job-status mapping, site associations, and equipment-site linking before the full run commits. Any field mapping corrections are applied before the production migration starts.
Execute full migration with delta-pickup window and rollback plan
The full migration runs against your HubSpot portal using the validated mapping. A delta-pickup window (24–48 hours) captures any records created or modified in Ascora during the cutover. Audit log records every operation — insert, update, skip, error — with source record ID and destination record ID. If reconciliation fails (record counts, sampled field values, or deal amount totals), one-click rollback reverts all destination changes. Post-migration, we deliver a data quality report showing record counts by object, unmapped fields, and any Ascora records that could not be migrated.
Platform deep dives
Ascora
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 Ascora 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
Ascora: Not publicly documented.
Data volume sensitivity
Ascora 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 Ascora to HubSpot migration scoping. Not seeing yours? Book a call.
Walk through your Ascora 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 Ascora
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.