CRM migration
Field-level mapping, validation, and rollback between Payaca and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Payaca
Source
Twenty CRM
Destination
Compatibility
6 of 12
objects map 1:1 between Payaca and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Payaca to Twenty CRM is a migration from a clean-tech-vertical platform to a general-purpose open-source CRM with a flexible custom object model. Payaca structures data around an installer's lifecycle: Customers linked to Projects with fixed pipeline stages (Lead, Survey, Quote, Install, Complete), line-item Items for panel and battery configurations, and Stripe-powered invoice records. Twenty CRM has no pre-built clean tech schema — we create a custom Project object to hold installation records, map Payaca pipeline stages to Twenty pipeline stages or Opportunity-like custom fields, and preserve compliance custom fields as Twenty custom fields. Payaca's CSV export is limited to contact names and addresses, so we combine CSV pulls with API queries to extract project records, invoice data, and custom field values before migration. Stripe transaction history requires a separate API export. Automations, templates, and workflow rules do not migrate as code; we deliver a written inventory for your admin to rebuild in Twenty's visual workflow builder.
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 Payaca 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.
Payaca
Customer
Twenty CRM
Person + Company
1:manyPayaca Customers map to both Twenty Person and Company records. Residential installations typically have one homeowner per customer record, which maps to a Person with the address stored in the address compound field. Commercial or multi-property customers with multiple contacts split to a Company record with multiple Person records linked via the Person.company field. We deduplicate on email address during import.
Payaca
Project
Twenty CRM
Project (Custom Object)
1:1Payaca Projects are the central data object for the install lifecycle and have no direct Twenty standard equivalent. We create a Project custom object via Twenty's /metadata API before migration, defining fields for stage (mapped from Payaca's pipeline stage), customer link (lookup to Person), site address, and any compliance custom fields. Project stage history is preserved as a text audit log field in the custom object.
Payaca
Pipeline Stage
Twenty CRM
Pipeline Stage (Custom Field on Project)
lossyPayaca's fixed stages (Lead, Survey, Quote, Install, Complete) map to a custom picklist field on the Project custom object in Twenty. Each stage value migrates as a picklist option. If the customer has added custom stages in Payaca, we extend the picklist during schema design. Automation triggers based on stage transitions are documented separately for rebuild in Twenty's workflow system.
Payaca
Item
Twenty CRM
Product2
1:1Payaca Items (panel configurations, battery sizes, labor rates) map to Twenty Product2 records. ProductCode migrates from Payaca's item SKU if populated. Standard Price Book entries are created during migration for any Items with pricing. Items without pricing become Products with no price book entry for manual quoting setup.
Payaca
Invoice
Twenty CRM
Project (Custom Object) or Opportunity
1:1Payaca Invoices are embedded in the Project lifecycle and carry line items, payment status, and Stripe transaction references. We store invoice data as a structured JSON blob in a custom field on the Project custom object in Twenty, preserving invoice number, line item summary, total amount, payment status, and Stripe charge ID. If the customer uses Opportunity-like deal tracking separately from project tracking, we map Invoice records to a separate Opportunities custom object.
Payaca
Document
Twenty CRM
Attachment
1:1Payaca documents attach to Projects and Customers and include proposals, permits, inspection reports, and signed agreements. We migrate document metadata (filename, type, upload date, signing status) as a related list on the Project or Person record in Twenty. Actual file binaries require separate download from Payaca's file storage and re-upload to Twenty's attachment system. Signed e-signature status is preserved as a custom field on the attachment record.
Payaca
Custom Field
Twenty CRM
Custom Field
1:1Payaca custom fields for compliance tracking, permit management, and AHJ requirements map to Twenty custom fields on the Project or Person custom object. We map field types directly: Payaca text fields to Twenty text fields, date fields to date fields, dropdowns to single-select picklists. Multi-select picklists from Payaca map to Twenty multi-select picklists. Field labels are preserved; help text migrates as field description.
Payaca
Service Reminder
Twenty CRM
Task
1:manyPayaca Service Reminders are associated with Customers or Projects and carry scheduling logic. We migrate active reminders as Twenty Task records linked to the corresponding Person or Project record. Completed reminders are optionally migrated as closed Tasks. Recurrence patterns are documented in a custom text field for manual rebuild in Twenty's calendar or task recurrence system.
Payaca
Integration (Stripe)
Twenty CRM
External Reference
1:1Stripe payment history does not live in Payaca's export scope. We coordinate a parallel Stripe API export to extract charge records, refund records, and dispute records, then map Stripe charge IDs as a custom field on the corresponding Project invoice record in Twenty. This ensures financial audit continuity even though Twenty has no native billing module.
Payaca
Integration (QuickBooks, Xero)
Twenty CRM
Configuration Notes
lossyPayaca accounting integrations (QuickBooks, Xero) carry OAuth credentials and webhook configurations that cannot be exported. We document the integration setup requirements for each connected accounting platform, including the objects synced, the field mapping, and the trigger events, so the customer's admin can reconfigure the integrations in Twenty or via Zapier after migration.
Payaca
Customer Portal
Twenty CRM
Configuration Notes
lossyPayaca's branded customer portal with custom domain, proposals, invoices, payments, and document signing has no Twenty equivalent. We document portal configuration including custom domain settings, branded assets, and the list of projects and documents visible in the portal. The customer's admin uses Twenty's workspace settings and a third-party portal solution (or Experience Cloud if Salesforce is added to the stack) to replicate the portal functionality.
Payaca
Automation Rule
Twenty CRM
Workflow Documentation
lossyPayaca automation rules with pipeline stage triggers, tag events, and multi-step sequences lack a native export format. We capture automation configurations during discovery, document each trigger, condition, and action as a written workflow specification, and provide a recommended Twenty equivalent using Twenty's workflow builder or a third-party automation tool. Custom automations with complex conditional logic are flagged as higher-effort rebuilds.
| Payaca | Twenty CRM | Compatibility | |
|---|---|---|---|
| Customer | Person + Company1:many | Fully supported | |
| Project | Project (Custom Object)1:1 | Fully supported | |
| Pipeline Stage | Pipeline Stage (Custom Field on Project)lossy | Fully supported | |
| Item | Product21:1 | Fully supported | |
| Invoice | Project (Custom Object) or Opportunity1:1 | Fully supported | |
| Document | Attachment1:1 | Fully supported | |
| Custom Field | Custom Field1:1 | Fully supported | |
| Service Reminder | Task1:many | Fully supported | |
| Integration (Stripe) | External Reference1:1 | Fully supported | |
| Integration (QuickBooks, Xero) | Configuration Noteslossy | Fully supported | |
| Customer Portal | Configuration Noteslossy | Mapping required | |
| Automation Rule | Workflow Documentationlossy | 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.
Payaca gotchas
CSV export only captures customer contact records
Project imports require pre-existing customer IDs
Automation rule portability is limited to templates
Stripe transaction fees are external to Payaca billing
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
Discovery and data audit
We audit Payaca across customer record volume, project record volume, invoice count, item catalog size, active custom fields, integration count (Stripe, QuickBooks, Xero, OpenSolar), and automation rule inventory. We pair this with a Twenty workspace readiness check: verifying the custom object creation workflow via /metadata API, identifying which standard fields need pre-creation on Person and Company, and confirming the Stripe API credentials for the parallel payment export. The discovery output is a written migration scope with record counts per object and a Twenty schema design document.
Stripe parallel export and reconciliation
We initiate a Stripe API export to pull charge records, refund records, and dispute records linked to Payaca customer and project references. This export runs in parallel with the Payaca data extraction to ensure the financial layer is ready before cutover. We match Stripe charges to Payaca invoice records by the external reference ID stored in both systems, producing a reconciled payment ledger that migrates alongside project records into Twenty's Project custom object.
Payaca data extraction: CSV contacts plus API queries
We run Payaca's CSV customer export for the base contact fields, then supplement with API queries to pull project records (including stage history and custom field values), invoice line items, item catalog, document metadata, and service reminder definitions. The combined dataset is validated for completeness: every project must have a corresponding customer reference, every invoice must have a project reference, and every Stripe charge must match an invoice. Gaps are flagged for manual correction before migration begins.
Twenty schema design and deployment
We create the Project custom object and all required custom fields (stage picklist, invoice JSON field, Stripe charge ID field, document metadata fields) via Twenty's /metadata API. Standard fields on Person and Company are pre-created based on the Payaca contact schema. The schema is validated in a Twenty test workspace before production deployment. Any multi-select picklists, date fields, or lookup relationships are confirmed to function correctly in the Twenty UI before data migration proceeds.
Production migration in dependency order
We run production migration in strict dependency order: Person and Company records first (deduped on email), then Project custom objects with customer lookups resolved, then Product2 records, then invoice data as structured fields on Project, then Stripe payment references, then document metadata, then service reminders as Tasks. Each phase emits a row-count reconciliation report. Stripe payment records are imported after Project records are confirmed to avoid orphaned references.
Cutover, validation, and automation handoff
We freeze Payaca writes during cutover, run a final delta migration of any records modified during the migration window, then designate Twenty as the system of record. We deliver the automation inventory document (each Payaca automation rule documented with trigger, conditions, actions, and recommended Twenty workflow equivalent) to the customer's admin. We do not rebuild automations as Twenty workflows; that work is handled by the customer's admin or a Twenty implementation partner. We support a one-week hypercare window for reconciliation issues.
Platform deep dives
Payaca
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 Payaca 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
Payaca: Not publicly documented in available help resources.
Data volume sensitivity
Payaca 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 Payaca to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Payaca 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 Payaca
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.