CRM migration
Field-level mapping, validation, and rollback between Powered Now and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Powered Now
Source
Twenty CRM
Destination
Compatibility
14 of 14
objects map 1:1 between Powered Now and Twenty CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Powered Now organizes trade businesses around jobs, quotes, and invoices — each job links to a client, a diary slot, purchase orders, and certificates. Twenty CRM uses a People-Companies-Opportunities model with Tasks and Notes for activity tracking, and supports unlimited custom objects for anything that doesn't fit standard fields. The migration carries all Powered Now records (clients, jobs, quotes, invoices, supplier invoices, team members, and custom fields) into Twenty's equivalent objects. The harder problems are translating Powered Now's job-status lifecycle into Twenty's opportunity-stage model, preserving invoice line-item detail in custom fields or related records, and handling Powered Now's multi-address per client (site address vs billing address) which requires field splitting in Twenty. We export Powered Now data via CSV or API, transform field names and pick-list values, and load into Twenty using the REST API with relation resolution (companyId for People, opportunityId for Tasks). Workflows, automations, and digital forms do not migrate — these require manual rebuild in Twenty's workflow builder or via third-party automation tools. FlitStack sequences the migration so companies load before people, opportunities link after both exist, and attachments re-upload to Twenty's file storage.
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 Powered Now 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.
Powered Now
Client
Twenty CRM
Person
1:1Powered Now clients map to Twenty People records. The client name splits into firstName and lastName where available; single-field names land as a single lastName with firstName blank. Email, phone, and address fields map directly. Site address and billing address require field splitting — see field_mapping for detail.
Powered Now
Client
Twenty CRM
Company
1:1If the Powered Now client is a business entity (rather than an individual homeowner), it also maps to a Twenty Company record. The client's trading name or company name becomes the Company name. FlitStack creates both Person and Company records and links them via companyId on the Person side.
Powered Now
Job
Twenty CRM
Opportunity
1:1Powered Now jobs map to Twenty Opportunities. The job name becomes Opportunity name. Job status (Unscheduled, Scheduled, In Progress, Completed, Invoiced, Paid) migrates as a custom pick-list field (Job_Status__c) since Twenty has no native job object. Close date maps to the opportunity closeDate; the close date is set to the scheduled completion date or remains open-ended for unscheduled jobs.
Powered Now
Quote
Twenty CRM
Opportunity (or custom Quote object)
1:1Powered Now quotes map to Twenty Opportunities with a Quote_Number__c custom field and line-item details stored in custom fields (Quote_Line_Items__c as long-text or via a custom Quote_Line_Item__c custom object). If quotes need to remain standalone records, FlitStack creates a custom Quote object in Twenty before migration.
Powered Now
Invoice
Twenty CRM
Opportunity (or custom Invoice object)
1:1Powered Now invoices map to Opportunities with invoice number, total amount, balance due, and payment status stored in custom fields. Teams that need full invoice history as records create a custom Invoice object in Twenty before migration — FlitStack maps invoice line items to that object.
Powered Now
Purchase Order
Twenty CRM
Custom Purchase_Order__c object
1:1Powered Now purchase orders have no Twenty native equivalent, so FlitStack creates a custom Purchase_Order__c object before migration with fields for PO number, supplier, total cost, status, and a lookup to the related Opportunity via opportunityId. Supplier invoices map to a linked custom Supplier_Invoice__c object that records invoice number, supplier reference, amount, and payment status, enabling cost tracking against each job.
Powered Now
Diary Entry
Twenty CRM
Task or Event
1:1Powered Now diary entries (scheduled time slots for jobs) map to Twenty Tasks linked to the corresponding Opportunity. The task dueDate is the diary slot start time. All-day diary entries with no specific time become Tasks; entries with explicit start and end times become Events.
Powered Now
Certificate
Twenty CRM
Note
1:1Powered Now certificates (gas safety certificates, electrical certificates) attach to jobs. These migrate as Twenty Notes linked to the Opportunity (job) record, with the certificate type and expiry date stored in custom fields on the Note or as a custom Certificate__c object.
Powered Now
Custom Field (on Client)
Twenty CRM
Custom Field on Person
1:1Powered Now custom fields on clients (e.g., trade licence number, insurance policy reference) map to custom fields on the Twenty Person object. All custom fields must be created in Twenty Settings → Data Model before the CSV import step runs.
Powered Now
Custom Field (on Job)
Twenty CRM
Custom Field on Opportunity
1:1Powered Now custom fields on jobs map to custom fields on the Twenty Opportunity object. Examples include site access instructions, required materials, or engineer notes. Each custom field is created in Twenty before migration; transformation logic handles pick-list value mapping for select-type fields.
Powered Now
Team Member
Twenty CRM
WorkspaceMember
1:1Powered Now team members (engineers, office staff) map to Twenty Workspace Members. Owner assignment on jobs and quotes resolves by matching the Powered Now email address to a Twenty user account; FlitStack generates a pre‑migration mapping report showing matched and unmatched emails. For any unmatched owners, the admin must either invite the user to Twenty or reassign the record to a fallback owner before the import runs.
Powered Now
Attachment / File
Twenty CRM
Twenty Files
1:1Powered Now file attachments on jobs, quotes, and invoices are downloaded and re‑uploaded to Twenty's file storage, where each file is linked to its parent record (Opportunity, Person, or custom object) using the recordId. FlitStack uses Twenty's REST API to upload files, preserving the original filename. If a file exceeds Twenty's size limit, it is flagged for manual handling; otherwise the attachment appears in the record's Files section.
Powered Now
Automated Reminder
Twenty CRM
Twenty Workflow
1:1Powered Now automated certificate reminders, job routing triggers, and form-based automations do not have a native equivalent in Twenty. These must be rebuilt manually in Twenty's workflow builder (Settings → Workflows) or via an external automation platform. FlitStack exports the Powered Now workflow definitions as a reference document for the rebuild.
Powered Now
Supplier Invoice
Twenty CRM
Custom Supplier_Invoice__c object
1:1Powered Now supplier invoices link to purchase orders and track costs against jobs. These map to a custom Supplier_Invoice__c object created in Twenty, with fields for invoice number, supplier reference, amount, and linked opportunityId for cost tracking against the job.
| Powered Now | Twenty CRM | Compatibility | |
|---|---|---|---|
| Client | Person1:1 | Fully supported | |
| Client | Company1:1 | Fully supported | |
| Job | Opportunity1:1 | Fully supported | |
| Quote | Opportunity (or custom Quote object)1:1 | Fully supported | |
| Invoice | Opportunity (or custom Invoice object)1:1 | Fully supported | |
| Purchase Order | Custom Purchase_Order__c object1:1 | Fully supported | |
| Diary Entry | Task or Event1:1 | Fully supported | |
| Certificate | Note1:1 | Fully supported | |
| Custom Field (on Client) | Custom Field on Person1:1 | Fully supported | |
| Custom Field (on Job) | Custom Field on Opportunity1:1 | Fully supported | |
| Team Member | WorkspaceMember1:1 | Fully supported | |
| Attachment / File | Twenty Files1:1 | Fully supported | |
| Automated Reminder | Twenty Workflow1:1 | Fully supported | |
| Supplier Invoice | Custom Supplier_Invoice__c object1: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.
Powered Now gotchas
No public REST API means migration requires reverse-engineered data access
Certificate expiry dates require manual re-validation post-migration
Making Tax Digital data is tied to the Powered Now MTD-compliant invoice format
Attachment blobs export as raw files without a relational manifest
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 Powered Now data and design Twenty schema
FlitStack extracts a full data export from Powered Now covering clients, jobs, quotes, invoices, purchase orders, team members, diary entries, certificates, and all custom fields. We generate a data quality report flagging duplicate clients, missing email addresses, and records with no linked job. Simultaneously, your Twenty admin (or our team) creates the custom fields, custom objects (Invoice, Purchase Order, Supplier Invoice), and pick-list values identified in the Powered Now custom field inventory. We deliver a Twenty schema setup checklist so the destination workspace is ready before any import runs.
Resolve team member ownership by email
Powered Now team members map to Twenty Workspace Members. Owner assignment on jobs and quotes resolves by email match — each Powered Now engineer or staff member's email is matched against the email of a Twenty user account. Unmatched owners are flagged before migration for admin resolution: either invite the person to Twenty first, or assign their records to a fallback owner. No opportunity lands without a valid Twenty assignee.
Load Companies, then People, then Opportunities
Twenty requires the 'one' side of relationships to exist before the 'many' side can reference them. FlitStack sequences the migration in this order: (1) Companies from Powered Now client businesses, (2) People from Powered Now clients linked to their Company records via companyId, (3) Opportunities from Powered Now jobs, quotes, and invoices linked to their respective People and Companies. Purchase orders and supplier invoices load last after their related Opportunities exist. This sequencing ensures foreign keys resolve correctly and Twenty's data integrity checks pass.
Run a sample migration with field-level diff
A representative slice of records migrates first — typically 200–500 records spanning clients, jobs, quotes, invoices, and team members. We generate a field-level diff comparing source values against destination field contents so you can verify job-status mapping, address splitting, invoice field consolidation, and owner resolution before the full run commits. You approve the sample results, and any mapping corrections apply to the full dataset before re-migration.
Full migration with delta-pickup and rollback
The full export from Powered Now loads into Twenty via the REST API with batch processing. A delta-pickup window (24–48 hours) captures any new clients, modified jobs, or updated quotes created in Powered Now during the cutover. All operations are logged in an audit trail. If reconciliation reveals a field mapping error or missing relationship, FlitStack rolls back the destination and re-runs with corrected logic. Attachment files are re-uploaded to Twenty's file storage and linked to their parent records.
Platform deep dives
Powered Now
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 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 Powered Now and Twenty CRM.
Object compatibility
2 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
Powered Now: Not applicable..
Data volume sensitivity
Powered Now 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 Powered Now to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Powered Now 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 Powered Now
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.