CRM migration
Field-level mapping, validation, and rollback between Serviceform and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Serviceform
Source
Twenty CRM
Destination
Compatibility
6 of 10
objects map 1:1 between Serviceform and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Serviceform to Twenty CRM is a conversion-platform-to-CRM migration: Serviceform organizes data around Conversations, Leads, Forms, and Chatbots, while Twenty CRM uses Company, Person, Opportunity, Task, and custom objects built through a metadata API. The primary technical challenge is that Serviceform does not expose a documented public REST API, so migration requires coordinating a structured UI-based export with their support team and then re-mapping chatbot flows, lead scores, and conversation transcripts into Twenty's standard and custom object schema. We extract Leads and map them to Twenty Person records, convert conversation transcripts to Task objects on the Person timeline, represent form submissions as custom objects with fields created in Twenty's /metadata API before import, and preserve chatbot flow structure as a written specification for manual rebuild. We do not migrate Serviceform Workflows, Automations, or Sequences; these are documented and handed off for the customer's team to reconstruct in Twenty.
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 Serviceform 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.
Serviceform
Lead
Twenty CRM
Person
1:1Serviceform Lead records (name, email, phone, source, qualification status, lead score) map to Twenty Person records. We use email as the dedupe key during import. The source property maps to a custom text field tracking the original channel (web_chat, form_submission, chatbot_qualification). Lead score from Serviceform migrates to a numeric custom field on Person. Any Person record that represents a company contact gets a lookup link to the corresponding Twenty Company record built from the company domain in the email address.
Serviceform
Conversation
Twenty CRM
Task
1:1Serviceform conversation transcripts (visitor messages, bot responses, timestamps, channel metadata) migrate to Twenty Task records attached to the corresponding Person. Each Task captures the full transcript as body text, the channel (website_chat, email, SMS) as a custom field, and the original conversation start time as ActivityDate. Task status is set to Completed for resolved conversations and Open for those awaiting follow-up. Long transcripts that exceed Task body limits are split into sequential Tasks with a shared conversation_id custom field.
Serviceform
Live Chat Session
Twenty CRM
Task
1:manyServiceform live chat session logs (visitor info, agent assignment, resolution status, wait time) map to Twenty Task records with a custom session_id field. Agent assignment resolves by matching agent email to a Twenty Member record. Resolution status maps to a custom picklist field on the Task. Multiple sessions for the same Person are imported as separate Task records, each with a unique session_id, so that the full chat history is preserved on the Person timeline.
Serviceform
Form
Twenty CRM
Custom Object
1:1Serviceform form definitions and submission data map to Twenty custom objects created via the /metadata API before import. Each form becomes a custom object (e.g., LeadCaptureForm, FeedbackSurvey) with custom fields corresponding to the form fields. Form submissions migrate as records of that custom object, with a lookup to the submitting Person. Conditional logic on Serviceform forms (field visibility rules, routing logic) is documented as a written specification for manual rebuild in Twenty because Twenty does not have a native conditional form builder.
Serviceform
Chatbot
Twenty CRM
Custom Object + Specification
lossyServiceform chatbot flows (nodes, intents, response rules, conversation trees) are not transferred as executable code because Twenty has no native chatbot builder. We export the flow structure as a JSON specification documenting each node, its trigger conditions, response content, and routing logic. This specification is delivered as a written handoff document for the customer's team to rebuild the chatbot flow in a dedicated chatbot platform or as a custom app using Twenty's v2.0 SDK. Intent mappings and lead qualification rules are preserved as text in the specification for reference.
Serviceform
Team Member
Twenty CRM
Member
1:1Serviceform user accounts with roles and seat assignments map to Twenty Member records. We match by email address. The user's role in Serviceform (admin, agent, viewer) maps to a custom field on the Twenty Member for reference. Members must be invited and accepted in Twenty before importing records that reference them as owners or assignees; we coordinate this provisioning step before production migration.
Serviceform
ATS (Applicant)
Twenty CRM
Person + Custom Object
1:manyServiceform ATS module applicant records (resume files, candidate profile, ranking data) are separate from chatbot data and require a distinct export workflow. We map the applicant profile to a Twenty Person record and the resume file as a ContentDocument attached via ContentDocumentLink. Ranking and status data migrate to a custom applicant_status custom field and a custom ranking_score numeric field. If the customer uses a separate HRIS, we can split ATS records to a different destination system as a parallel migration scope.
Serviceform
Company
Twenty CRM
Company
1:1If Serviceform lead records contain company domain data (extracted from email addresses or explicitly entered), we create Twenty Company records and link the corresponding Person records via the workEmail domain. Company name, domain, and industry migrate as standard Twenty Company fields. Company records are created before Person import so that the Person-Company lookup relationship is satisfied at insert time.
Serviceform
Integration
Twenty CRM
Integration (documentation)
lossyServiceform integration connections (CRM sync, email platform, analytics) are configuration references, not data records. We export the list of active integrations with their connection parameters and deliver it as a configuration audit document. The customer's team uses this list to reconfigure equivalent integrations in Twenty. Integrations requiring OAuth tokens or API keys that cannot be exported are flagged as requiring re-authentication post-migration.
Serviceform
Statistics and Analytics
Twenty CRM
N/A
1:1Serviceform aggregated analytics (conversion rates, chatbot performance metrics, lead source attribution) are calculated at read time from conversation data and are not independently stored records. These cannot be migrated. We flag which metrics are lost and recommend that the customer configure equivalent reports in Twenty's analytics layer using the imported conversation-as-Task data as the underlying source.
| Serviceform | Twenty CRM | Compatibility | |
|---|---|---|---|
| Lead | Person1:1 | Fully supported | |
| Conversation | Task1:1 | Fully supported | |
| Live Chat Session | Task1:many | Fully supported | |
| Form | Custom Object1:1 | Fully supported | |
| Chatbot | Custom Object + Specificationlossy | Fully supported | |
| Team Member | Member1:1 | Fully supported | |
| ATS (Applicant) | Person + Custom Object1:many | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Integration | Integration (documentation)lossy | Fully supported | |
| Statistics and Analytics | N/A1:1 | Not 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.
Serviceform gotchas
Usage-based billing means migration scope directly affects costs
No publicly documented public API
ATS module data is separate from core chatbot data
Conditional logic on forms may not transfer 1:1
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 export coordination
We audit the Serviceform account to establish the volume of Leads, conversation transcripts, form submissions, chatbot flows, and ATS records. We also identify the integrations list and team member accounts. Because Serviceform lacks a documented API, we coordinate with Serviceform's support team to request a structured bulk export of all migration-relevant data in a schema-consumable format. We validate the exported file structure against our mapping specification before proceeding. Any gaps in the export (missing fields, truncated transcripts, absent chatbot flow JSON) are flagged and remediation is requested from Serviceform before the mapping phase begins.
Schema design in Twenty
We design the Twenty destination schema based on the exported Serviceform data. This includes creating custom objects via Twenty's /metadata API for each Serviceform form type, adding custom fields to Person (lead_score, conversation_channel, source_channel), and setting up the Person-Company lookup relationship using email domain extraction. We also create the custom applicant object for ATS data if applicable. The schema is validated in Twenty's Sandbox or test workspace before any production data is loaded, ensuring that field types, required constraints, and lookup relationships are correctly configured.
Member provisioning in Twenty
All Serviceform team members are mapped to Twenty Member records. We request that the customer's Twenty admin provisions all Members in Twenty and sends invitations before the production migration window. Each Member must accept the invitation and have an active Twenty account before records referencing them as owners or assignees are imported, otherwise the OwnerId reference on Tasks and custom object records cannot be resolved. Any Serviceform user without a matching Twenty Member is placed in a reconciliation queue for the admin to resolve.
Sandbox migration and reconciliation
We run a full migration into the Twenty test workspace using a representative data sample. The customer's team spot-checks 25-50 records against the Serviceform source, verifying that lead scores, conversation transcripts, form submission fields, and company links are correctly populated in Twenty. Mapping corrections (field name mismatches, custom object field type errors, lookup resolution failures) are addressed in this phase. The customer signs off on the sandbox migration before production cutover is scheduled.
Production migration in dependency order
We execute the production migration in record-dependency order: Members (validated), Companies (from email domain), Persons (with Company lookup resolved, lead score and source preserved), custom form objects (form submissions with Person lookup), conversation Tasks (with Person lookup resolved), ATS applicant records (with resume attachments), and chatbot flow specifications (as JSON document records). Each phase emits a row-count reconciliation report. We flag any records that fail validation due to missing required fields or unresolved lookups and place them in a correction queue for the customer's admin.
Cutover, validation, and chatbot rebuild handoff
We freeze Serviceform write access during cutover, run a final delta migration of any records modified during the migration window, then mark Twenty as the system of record. We deliver the chatbot flow JSON specification, the form conditional logic rebuild guide, and the integration audit document to the customer's team. We support a one-week hypercare window for reconciliation issues. We do not rebuild Serviceform chatbot flows, automations, or Sequences in Twenty; those are documented and handed off as a separate rebuild task.
Platform deep dives
Serviceform
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 Serviceform 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
Serviceform: Not publicly documented.
Data volume sensitivity
Serviceform 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 Serviceform to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Serviceform 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 Serviceform
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.