CRM migration
Field-level mapping, validation, and rollback between Ascora and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Ascora
Source
Twenty CRM
Destination
Compatibility
12 of 12
objects map 1:1 between Ascora and Twenty CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Ascora is a field-service management platform built for trade businesses (electricians, plumbers, HVAC, landscaping) — it bundles job scheduling, quoting, invoicing, and mobile field forms into one tool. Twenty CRM is a general-purpose open-source CRM that stores People, Companies, Opportunities, Notes, and Tasks with full custom-object and custom-field support. The migration challenge is translating Ascora's job-centric data model (Jobs linked to Customers and Sites, with custom form fields capturing site details, equipment specs, and sign-off data) into Twenty's relationship-oriented schema. We map Ascora Customers to Twenty People, Ascora Sites to Company relations or a custom Site object, and Ascora Jobs to Twenty Opportunities with a custom pick-list field for job status. Custom form fields from Ascora become Twenty custom fields created in Settings → Data Model before import. The migration runs via Twenty's CSV import with companies loaded first, people second, and opportunities third to satisfy foreign-key ordering. A delta-pickup window captures any jobs created or updated during the cutover window. Workflows, scheduling rules, and invoicing logic in Ascora do not migrate — those must be rebuilt in Twenty or outside the CRM.
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 Twenty CRM, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Ascora
Customer
Twenty CRM
People
1:1Ascora Customers map directly to Twenty People. Each Customer record carries name, email, phone, and address fields that translate to Twenty People fields without transformation. The Customer's internal ID is stored as Source_System_ID__c for delta-run de-duplication. This cross-reference enables the migration pipeline to detect and skip duplicate records during subsequent import runs, maintaining data integrity across the migration timeline.
Ascora
Customer (company-type)
Twenty CRM
Company
1:1When an Ascora Customer record represents a business entity (rather than an individual), it maps to a Twenty Company. This requires flagging at audit time — Ascora does not enforce a Company/Individual split, so business-type customers are identified by domain name presence or explicit business-type flag if configured.
Ascora
Site
Twenty CRM
Custom Object: Site__c
1:1Ascora Sites are service-location records linked to Customers — address, site name, site contact, equipment list. Twenty has no native Site object. We create a custom Site__c object with fields for address, site contact name/phone, and a relation to the Company representing the Customer. Each Job in Ascora links to a Site; this relation migrates as a lookup field on the Opportunity.
Ascora
Job
Twenty CRM
Opportunity
1:1Ascora Jobs map to Twenty Opportunities — the job name becomes the Opportunity name, job amount maps to Opportunity amount, and the job's close date maps to the Opportunity close date. The job status value (Quoted, In Progress, Completed, Invoiced) maps to a custom Stage__c pick-list field on the Opportunity, not Twenty's native stage, because Twenty's stage is pipeline-specific.
Ascora
Job Status
Twenty CRM
Custom field: Job_Status__c (pick-list on Opportunity)
1:1Ascora job status values are mapped one-by-one to custom pick-list values in Twenty. Quoted maps to a prospecting stage, In Progress maps to a mid-pipeline stage, Completed maps to a closed-won value, Invoiced maps to a post-close stage. The mapping is documented and applied during CSV import transformation.
Ascora
Quote / Quotation
Twenty CRM
Custom field: Quote_Amount__c on Opportunity
1:1Ascora Quotations are separate records linked to Jobs. The quoted value migrates as a custom currency field on the Opportunity. Quote status (Sent, Accepted, Declined) becomes a separate custom pick-list field. Full quotation line items require a custom Quote_Line_Items__c custom object with a relation to Opportunity if line-item detail must be preserved.
Ascora
Invoice
Twenty CRM
No equivalent in Twenty CRM
1:1Ascora invoices have no direct equivalent in Twenty CRM — Twenty has no native invoicing module. Invoice number, amount, and status migrate as custom fields on the Opportunity for historical reference. Ongoing invoicing must continue in the accounting integration (Xero, QuickBooks, or MYOB) outside Twenty.
Ascora
Custom Form Fields (Job Custom Details)
Twenty CRM
Custom fields on Opportunity
1:1Ascora custom forms capture field data (site sign-off name, equipment model, job notes) via field codes embedded in Word templates. Each field code becomes a Twenty custom field on the Opportunity object. Fields must be pre-created in Twenty Settings → Data Model before the CSV import runs — CSV import creates records, not fields.
Ascora
Job Notes / Activity Log
Twenty CRM
Note
1:1Ascora job notes and activity log entries migrate as Twenty Notes attached to the corresponding Opportunity record. Original timestamps and author names are preserved. Activity type (call, site visit, etc.) is stored as a custom type field on the Note for filtering in Twenty's view.
Ascora
Attachment / File
Twenty CRM
Salesforce Files-style re-upload
1:1Ascora file attachments on jobs (photos, signed forms, equipment receipts) cannot be carried via CSV import into Twenty. We export files from Ascora and re-upload them to Twenty manually or via API after go-live. File-to-record linking is rebuilt using Twenty's attachment model.
Ascora
Owner / Assigned Technician
Twenty CRM
WorkspaceMember
1:1Ascora jobs are assigned to technicians or staff members. Twenty requires all Workspace Members to accept an invitation before user references can map. We resolve Ascora owner emails against Twenty Workspace Members — unmatched owners are flagged before migration and assigned to a fallback user.
Ascora
Integration references (Xero, QuickBooks, MYOB)
Twenty CRM
No equivalent
1:1Ascora integration links to Xero, QuickBooks, or MYOB are configuration-level connections that do not carry over. We document which accounting tool was connected per Customer and per Invoice so the team can reconnect the accounting integration in Twenty after go-live.
| Ascora | Twenty CRM | Compatibility | |
|---|---|---|---|
| Customer | People1:1 | Fully supported | |
| Customer (company-type) | Company1:1 | Fully supported | |
| Site | Custom Object: Site__c1:1 | Fully supported | |
| Job | Opportunity1:1 | Fully supported | |
| Job Status | Custom field: Job_Status__c (pick-list on Opportunity)1:1 | Fully supported | |
| Quote / Quotation | Custom field: Quote_Amount__c on Opportunity1:1 | Fully supported | |
| Invoice | No equivalent in Twenty CRM1:1 | Fully supported | |
| Custom Form Fields (Job Custom Details) | Custom fields on Opportunity1:1 | Fully supported | |
| Job Notes / Activity Log | Note1:1 | Fully supported | |
| Attachment / File | Salesforce Files-style re-upload1:1 | Fully supported | |
| Owner / Assigned Technician | WorkspaceMember1:1 | Fully supported | |
| Integration references (Xero, QuickBooks, MYOB) | No equivalent1: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
Twenty CRM gotchas
Import order is enforced and critical
Export limited to 20,000 records and visible columns only
Soft-deleted records count toward uniqueness and trigger restores
API rate limits cap at 200 req/min on Organization tier
No native email sequences — follow-up cadences require external tools
Pair-specific challenges
Migration approach
Audit Ascora data export and inventory all custom form fields
FlitStack AI exports every object from Ascora — Customers, Sites, Jobs, Quotes, Invoices, and any custom form field configurations. We build a field inventory listing every Ascora field code, its data type, and the custom form it belongs to. This inventory drives the Twenty custom field pre-creation checklist. Any Ascora field that has no Twenty equivalent is flagged for a custom field creation decision before the migration plan is finalized.
Create Twenty custom fields and custom Site__c object before import
We create all required custom fields in Twenty Settings → Data Model before any CSV import runs. This includes the Site__c custom object (with CompanyId relation, Address__c, Contact_Name__c, Contact_Phone__c, and Equipment_List__c fields), Job_Status__c pick-list on Opportunity, Quote fields (Quote_Number__c, Quote_Amount__c, Quote_Status__c), and Invoice fields (Invoice_Number__c, Invoice_Amount__c, Invoice_Status__c). We also create every Ascora custom form field as a named custom field on Opportunity. Workspace Members are invited and verified before this step to allow owner email resolution during import.
Migrate in Twenty's required object order: Companies → People → Opportunities
We execute the migration in the order Twenty enforces: Companies first (as the 'one' side of site and person relations), then People (linked to Companies via companyId), then Opportunities (linked to People via personId and to Site__c via Site__cId). Owner emails are resolved against Twenty Workspace Members during the People import. Any unmatched owner is flagged and assigned to a fallback user before Opportunities import. Each batch is validated against the Ascora record count before proceeding to the next object.
Run sample migration with field-level diff across all object types
A representative slice — typically 200–500 records spanning Customers, Sites, Jobs, and Quotes — migrates first. We generate a field-level diff comparing source values in Ascora to their corresponding Twenty fields post-import. The diff verifies custom pick-list value mapping for job status, Site-to-Company relation resolution, Quote amount preservation, and owner email matching. You review the diff and sign off before the full migration commits.
Execute full migration with delta-pickup window and file attachment plan
Full migration runs against Twenty with all objects. A 24–48 hour delta-pickup window captures any Jobs created or updated in Ascora during the cutover. All Ascora file attachment URLs are extracted and packaged with their linked Job ID into a re-upload guide. FlitStack AI generates an audit log of every record migrated, its source ID, and destination record ID. One-click rollback is available if reconciliation against the Ascora export count fails.
Platform deep dives
Ascora
Source
Strengths
Weaknesses
Twenty CRM
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 Twenty CRM.
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 Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Ascora to Twenty CRM 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 Twenty CRM
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.