CRM migration

Migrate from Serviceform to Twenty CRM

Field-level mapping, validation, and rollback between Serviceform and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.

Serviceform logo

Serviceform

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

60%

6 of 10

objects map 1:1 between Serviceform and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Serviceform logo

Serviceform

What's pushing teams away

  • Integration documentation is sparse or missing, making it difficult for technical teams to connect Serviceform to existing software stacks without support.
  • WhatsApp and Telegram bot integrations are not yet available, forcing teams that rely on those channels to use alternative tools.
  • Some users report that advanced customization options feel limited compared to enterprise chatbot platforms.
  • Pricing can scale unexpectedly as conversation volume grows, especially for high-traffic campaigns.

Choosing

Twenty CRM logo

Twenty CRM

What's pulling them in

  • Top open-source CRM on GitHub with 40.6K stars, giving teams full source code access and infrastructure ownership without per-feature licensing surprises.
  • Free self-hosting under AGPL-3.0 means unlimited users and custom objects for the cost of cloud infrastructure alone, typically $20–100/month.
  • Pricing page explicitly mocks competitors for charging add-on fees for API access, webhooks, and workflows — transparency that resonates with RevOps teams burned by Salesforce.
  • Unlimited custom objects and fields with no price impact, letting teams shape the data model to their business rather than forcing business into rigid schemas.
  • Modern TypeScript/React/PostgreSQL stack means developer-led teams can extend, self-host, or integrate without fighting legacy architecture.

Object mapping

How Serviceform objects map to Twenty CRM

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

maps to

Twenty CRM

Person

1:1
Fully supported

Serviceform 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

maps to

Twenty CRM

Task

1:1
Fully supported

Serviceform 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

maps to

Twenty CRM

Task

1:many
Fully supported

Serviceform 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

maps to

Twenty CRM

Custom Object

1:1
Fully supported

Serviceform 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

maps to

Twenty CRM

Custom Object + Specification

lossy
Fully supported

Serviceform 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

maps to

Twenty CRM

Member

1:1
Fully supported

Serviceform 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)

maps to

Twenty CRM

Person + Custom Object

1:many
Fully supported

Serviceform 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

maps to

Twenty CRM

Company

1:1
Fully supported

If 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

maps to

Twenty CRM

Integration (documentation)

lossy
Fully supported

Serviceform 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

maps to

Twenty CRM

N/A

1:1
Not supported

Serviceform 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.

Gotchas + challenges

What specifically takes care here

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 logo

Serviceform gotchas

High

Usage-based billing means migration scope directly affects costs

High

No publicly documented public API

Medium

ATS module data is separate from core chatbot data

Medium

Conditional logic on forms may not transfer 1:1

Twenty CRM logo

Twenty CRM gotchas

High

Import order is enforced and critical

High

Export limited to 20,000 records and visible columns only

Medium

Soft-deleted records count toward uniqueness and trigger restores

Medium

API rate limits cap at 200 req/min on Organization tier

Low

No native email sequences — follow-up cadences require external tools

Pair-specific challenges

  • Serviceform has no documented public REST API

    Serviceform does not expose a publicly documented REST API for bulk data export or programmatic access. Migration requires coordinating a structured UI-based export with Serviceform's support team to obtain conversation logs, leads, form submissions, and chatbot flow definitions in a usable format (CSV, JSON, or structured file export). This coordination step adds time to the discovery and export phases. We request the export in a schema-aligned format during scoping and validate the exported file structure before building the Twenty import pipeline. If Serviceform support cannot fulfill the export request, we fall back to manual record extraction, which extends the timeline and increases cost.

  • Conversation volume can spike migration scope and costs

    Serviceform charges 0.79 EUR per conversation on the self-service tier, which means large historical conversation volumes directly affect what data exists to migrate. Teams running high-volume campaigns or operating for multiple years may have tens or hundreds of thousands of conversation records. During scoping, we profile conversation volume and discuss with the customer whether to migrate full transcripts, summary records, or only conversations from the past 12 months. This decision affects the migration timeline, cost, and the size of the Twenty workspace being populated with Task records.

  • Custom form objects require pre-creation in Twenty before import

    Twenty requires custom objects and fields to be created via the /metadata API before any data import, because the CSV import process creates records, not fields. We build the full custom object schema (form name as object, form fields as custom fields with types) during the schema design phase, deploy it to the Twenty workspace, and validate that the metadata is indexed before beginning data load. Fields created during import instead of beforehand cause silent field creation or import failure depending on the Twenty import tool version. We coordinate this with the customer's Twenty admin before production migration.

  • Conditional logic on Serviceform forms does not transfer 1:1

    Serviceform forms support conditional field visibility and routing rules. Twenty CRM has no native form builder with conditional logic. We document the original conditional rules during discovery as part of the form specification and deliver a written rebuild guide mapping each conditional rule to a recommended manual reconstruction approach. If the customer requires the same form behavior in Twenty, they configure it manually or build a custom form using Twenty's SDK after migration. We flag which forms have conditional rules and estimate rebuild effort during scoping.

  • ATS module data requires a separate export workflow

    Serviceform's ATS module stores applicant and resume data in a separate module from the main chatbot and lead capture flows. The ATS export must be requested separately and may use a different data format or field structure than the core lead export. We handle ATS data as a distinct data set during migration and ensure applicant records are mapped to the correct Twenty object type (Person with resume attachment and custom applicant fields). If the customer intends to use a dedicated HRIS for applicant tracking, we can split the ATS export to a parallel destination scope.

Migration approach

Six steps for a successful Serviceform to Twenty CRM data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

Serviceform logo

Serviceform

Source

Strengths

  • Usage-based pricing with no monthly minimum for the self-service tier.
  • AI-powered lead qualification and meeting booking without manual follow-up.
  • Multi-industry templates for real estate, automotive, ecommerce, and education verticals.
  • Multi-channel reach including website chat, email, SMS, and WhatsApp (roadmap).
  • Personal onboarding meeting included with managed service tiers.

Weaknesses

  • API documentation and technical reference materials are not publicly accessible or well-indexed.
  • WhatsApp and Telegram bot channels are not yet available.
  • Integration ecosystem is narrower than enterprise chatbot platforms.
  • Custom property support for chatbot nodes is not well-documented.
Twenty CRM logo

Twenty CRM

Destination

Strengths

  • AGPL-3.0 open-source license with full source code on GitHub — no vendor lock-in, no sunset risk.
  • Unlimited users and unlimited custom objects on self-hosted, with no feature gating based on headcount.
  • REST and GraphQL APIs available on all paid tiers, not locked behind an enterprise add-on fee.
  • MCP server and webhooks shipped as standard features, not premium upgrades.
  • Modern PostgreSQL-backed data model that developer teams can query, extend, and self-host.

Weaknesses

  • Recent v1.0 release means limited production hardening compared to CRMs with multi-year operational track records.
  • No native email sequencing or sales engagement tools — follow-up cadences require a separate platform.
  • No native two-way email sync or inbox integration, requiring third-party connectors for full activity logging.
  • Self-hosting 'free' pricing hides real infrastructure and DevOps costs that stack up over time.
  • Workflow automation is functional but lacks the complexity needed for sophisticated multi-step sales motions.

Complexity grading

How hard is this migration?

Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Serviceform and Twenty CRM.

  • Object compatibility

    B

    1 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Serviceform: Not publicly documented.

  • Data volume sensitivity

    B

    Serviceform doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Serviceform to Twenty CRM migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Serviceform to Twenty CRM data migrations

Answers to the questions buyers ask most during Serviceform to Twenty CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most migrations land between three and five weeks for accounts under 10,000 Leads, 50,000 conversation records, and a single form type. Migrations with large conversation histories (over 200,000 records), multiple form types with conditional logic, ATS module data, or chatbot flow documentation move to six to ten weeks because of the coordination required to obtain the Serviceform export, the custom object schema build in Twenty, and the sandbox reconciliation phase. The primary variable is conversation transcript volume and the complexity of the form data model.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Serviceform.
Land in Twenty CRM, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day