CRM migration

Migrate from Signpost to Twenty CRM

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

Signpost logo

Signpost

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

82%

9 of 11

objects map 1:1 between Signpost and Twenty CRM.

Complexity

BStandard

Timeline

4-6 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Signpost to Twenty CRM is a structural migration for local service businesses that have outgrown Signpost's opaque pricing and the manual oversight required to keep Mia's automated outreach from over-messaging customers. Twenty CRM, built on an AGPL-3.0 open-source license and backed by Y Combinator, offers self-hosted deployment at no licensing cost, giving businesses full data ownership with no per-contact billing. We map Signpost's Contacts to Twenty's People object, Signpost Businesses to Twenty Companies, and Signpost Campaigns to Twenty Opportunities or Tasks depending on the campaign type. The migration uses Twenty's REST and GraphQL APIs since Twenty does not have a native CSV import UI as of 2026. Mia's behavioral automation rules, the review solicitation history, and the shared inbox conversation record do not migrate; we document these for the customer's admin to reconstruct in Twenty and advise customers to archive shared inbox threads before migration begins. Pipeline staging, contact scoring logic, and campaign targeting rules require manual reconstruction post-migration.

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

Signpost logo

Signpost

What's pushing teams away

  • Customers report that Signpost's pricing feels high relative to what they use, especially when the automated features require ongoing supervision to avoid over-messaging clients.
  • Slow loading times and syncing issues with large contact lists frustrate users as their business grows, with the platform not handling scale gracefully.
  • The Mia algorithm requires babysitting—users describe manually unsubscribing clients from review requests and adjusting automated follow-up timing to avoid appearing pushy.
  • Onboarding gaps lead to misunderstandings about how features work, with customers discovering limitations only after signing contracts, eroding trust in the sales process.
  • Customers cite billing discrepancies—being charged additional fees not mentioned during sales conversations—as a driver for churn and a reason not to return.

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 Signpost objects map to Twenty CRM

Each row shows how a Signpost 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.

Signpost

Contact

maps to

Twenty CRM

Person (People)

1:1
Fully supported

Signpost Contacts map to Twenty People records. Standard fields (name, phone, email, address, business association) migrate 1:1. Signpost's behavioral properties managed by Mia (last_contacted_date, engagement_score, review_request_status) migrate as custom fields on the People object. Note that Twenty's standard Person schema is lean—fields like phone_type, multiple email addresses, and jobTitle require custom field creation in Settings → Data Model before import. We flag these at scoping and create them via API before data migration begins.

Signpost

Business

maps to

Twenty CRM

Company

1:1
Fully supported

Signpost's per-business CRM model maps directly to Twenty's Company object. Business name, address, website, and parent-child franchise structure migrate as Company fields. Custom properties on the Business record migrate as custom fields on the Company. The Company record is created before any related People import so that the People-Company relationship is satisfied at insert time.

Signpost

Campaign (Email/SMS)

maps to

Twenty CRM

Opportunity

lossy
Fully supported

Signpost campaigns (email and SMS) do not have a native Opportunity equivalent in Twenty. We map campaign records to a Campaign custom object we create in Twenty, capturing campaign name, type (email/SMS), target audience (tag-based), and campaign status. The automated trigger logic managed by Mia (send timing, delay intervals, branching conditions) cannot migrate; we document it as a written workflow audit and recommend the customer recreate campaign sequences in a tool like n8n or a custom automation script post-migration.

Signpost

Review Request

maps to

Twenty CRM

Custom field on Person

lossy
Fully supported

Signpost's review solicitation object tracks request timing, customer response, and positive/negative triage. Twenty has no native review object. The most recent review request status and customer response migrate as custom fields (most_recent_review_request_date, most_recent_review_status, review_response_type) on the People record. Full solicitation history across all time is flattened into a text notes field or a custom Reviews custom object with one record per solicitation event. We advise customers to export a historical review report from Signpost before migration begins.

Signpost

Appointment

maps to

Twenty CRM

Task

1:1
Fully supported

Signpost appointment records (scheduling data, customer association, status, appointment type) map to Twenty Task records. We set Task.status based on appointment status (scheduled → Open, completed → Completed, cancelled → Cancelled) and preserve appointment type as a custom Task field. Location and notes from the appointment migrate to Task.location and Task.body. Custom appointment types that do not map to Twenty's standard Task fields require custom field creation during schema setup.

Signpost

Custom Properties (Contact-level)

maps to

Twenty CRM

Custom fields on Person

1:1
Fully supported

Signpost custom fields on contacts migrate to Twenty People custom fields. Field types are preserved where possible (text → text, number → number, date → date, checkbox → boolean, picklist → select). Incompatible field types are flagged for customer review during scoping. Custom fields must be created in Twenty's Settings → Data Model before import; the CSV import creates records only, not fields.

Signpost

Custom Properties (Business-level)

maps to

Twenty CRM

Custom fields on Company

1:1
Fully supported

Signpost custom fields on businesses migrate to Twenty Company custom fields using the same type-preservation logic as contact-level custom properties. Industry, employee count, and annual revenue (common business-level fields in Signpost) migrate as custom Company fields if Twenty's standard fields do not cover the use case.

Signpost

Tag

maps to

Twenty CRM

Tag

1:1
Fully supported

Signpost contact tags migrate to Twenty Tags attached to the People record. Tags used for campaign targeting are preserved as tag values. Tags that represented Mia behavioral scoring segments (e.g., hot_lead, at_risk, review_requested) are migrated as tags but flagged in the scoping report since the behavioral scoring logic that assigned them is not transferable.

Signpost

User / Owner

maps to

Twenty CRM

User

1:1
Fully supported

Signpost user accounts and owner assignments on records map to Twenty User records. We resolve owners by email match. Inactive or permission-specific Signpost users may need to be created as placeholder User accounts in Twenty. IMPORTANT: Twenty requires all referenced Users to be created and active before importing records that assign OwnerId; we sequence User provisioning before Contact import.

Signpost

Loyalty / Referral Program

maps to

Twenty CRM

Custom Object

1:1
Fully supported

Referral and loyalty program enrollment records migrate as a custom LoyaltyProgram custom object in Twenty with fields for program_name, enrollment_date, referral_status, and points_balance. Program rules (earn rules, reward tiers, expiration logic) do not migrate; we document them in the written inventory for the customer's admin to reconstruct in Twenty's custom object logic or an external loyalty tool.

Signpost

Payments (Signpost Payments)

maps to

Twenty CRM

Custom Object

1:1
Fully supported

Signpost Payments tracks payment status against invoices or estimates. Payment records migrate as a custom Payments custom object linked to the People record, capturing payment_amount, payment_date, payment_status, and invoice_reference. Signpost Payments is a separate product tier; we scope this object only if the customer confirms Signpost Payments is in active use. Payment processing integration (Stripe, Square) is not migrated; the customer sets up payment processing separately in Twenty or retains the existing processor.

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.

Signpost logo

Signpost gotchas

High

Mia workflow automations are not exportable

High

Shared inbox message history is not exported

Medium

Slow contact list performance indicates export risk

Medium

Review request history requires custom property reconstruction

Low

Billing model and contract terms are opaque

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

  • Twenty has no native CSV import UI

    Twenty CRM does not have a built-in import wizard as of 2026. All data migration must occur through the REST or GraphQL API using scripts or community tools. This means no point-and-click field mapping during import. We build a custom migration script per customer that reads Signpost export CSVs and makes batch API calls to Twenty. Fields must be created in Settings → Data Model before import runs; the import creates records, not schema. This adds preparation time that teams accustomed to native import wizards in HubSpot or Salesforce do not expect.

  • Twenty standard field model is minimal

    Twenty ships with a lean standard schema. Fields that other CRMs include by default—multiple phone numbers with type labels, multiple email addresses, jobTitle, department, website, social profiles, contact source, and date of birth—require custom field creation before import. GitHub issue #13953 documents this as a known friction point. We create these custom fields via API during schema setup. If the customer has 30+ custom fields on Contacts and Businesses in Signpost, the pre-import field creation phase adds scope to the migration timeline.

  • Mia workflow automations are not exportable

    Signpost's AI assistant Mia manages behavioral triggers—automated review requests, follow-up timing, and campaign sequencing—based on proprietary scoring logic that is not accessible via any documented export endpoint. These automations cannot be migrated programmatically. During scoping, we document every active Mia rule as reported by the customer and provide a structured workflow audit form so the customer can manually rebuild those rules in Twenty or a companion automation tool. Failing to capture this leads to silent loss of the automation layer that drives Signpost's core value for the customer's business.

  • Shared inbox message history is not exported from Signpost

    Signpost's shared inbox stores two-way customer conversations, but the platform provides no mechanism to export message threads. Contact records, campaign history, and appointment data migrate cleanly, but the conversational record disappears. We flag this upfront during scoping and recommend customers screenshot or manually archive critical threads before migration begins. We cannot reconstruct this data post-migration. If the shared inbox contains contractually required communication records, the customer should consult their legal team before migration.

  • Users must be provisioned in Twenty before record import

    Twenty's API enforces referential integrity: any OwnerId or user assignment on a record requires the referenced User to exist in Twenty at the time of import. We invite all team members to Twenty before migration begins and wait for acceptance. Any Signpost Owner without a matching Twenty User is placed in a reconciliation queue for the customer's admin to provision. Migrations that skip this step result in null OwnerId fields on imported records, requiring a post-import correction pass.

Migration approach

Six steps for a successful Signpost to Twenty CRM data migration

  1. Discovery and scoping

    We audit the source Signpost account across objects in scope (Contacts, Businesses, Campaigns, Appointments, Review Requests, Custom Properties, Tags, Loyalty/Referral Programs, and Signpost Payments if applicable). We document active Mia automation rules via customer interview, capture shared inbox volume for archive planning, and assess export performance by running a sample contact extraction to identify any throttling or timeout behavior. The discovery output is a written migration scope, a data retention recommendation (what to migrate vs archive), and a Twenty workspace preparation checklist.

  2. Twenty workspace preparation

    We create the target schema in Twenty before any data migration begins. This includes creating all required custom fields on People and Company objects (phone_type, jobTitle, department, industry, most_recent_review_request_date, most_recent_review_status, and any other Signpost custom properties), creating the Campaign custom object, creating the Payments custom object if applicable, and creating the LoyaltyProgram custom object. We also create the Twenty Users matching the Signpost Owner list so that OwnerId references are valid at import time. Schema creation uses Twenty's Settings → Data Model API endpoints.

  3. Signpost export and data cleanup

    We export data from Signpost in object-dependent batches: Businesses first (to satisfy Company foreign keys), then Contacts, then Appointments, then Campaign records, then Custom Properties and Tags. For customers with more than 10,000 contacts, we segment the export by creation date cohort to avoid mid-job timeouts caused by Signpost's known contact list performance issues. We deduplicate records, standardize phone number formats, and flag any Signpost custom field types that are incompatible with Twenty's field model for customer review.

  4. Review solicitation history reconstruction

    We export Signpost's review request history and flatten it into a format suitable for Twenty's schema. The most recent review request status and response type become custom fields on the People record. Full solicitation history across all time (request dates, response dates, positive/negative flag) is written to a custom Reviews custom object or a notes text field depending on the customer's data volume. We advise customers to pull this report from Signpost's analytics module before migration begins.

  5. API-based import into Twenty

    We use Twenty's REST API to import data in dependency order: Companies (from Signpost Businesses) first, then People (from Signpost Contacts with CompanyId resolved), then Tasks (from Appointments), then custom object records. We batch records in groups of 100-500 per API call with error handling and retry logic for 429 rate limit responses. OwnerId is resolved at import time by email lookup against the pre-provisioned Twenty User list. Each import phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, validation, and automation rebuild handoff

    We freeze Signpost writes during cutover, run a final delta migration of any records modified during the migration window, and validate the Twenty workspace against the Signpost source by matching record counts, spot-checking 25-50 records, and confirming relationship integrity (People linked to correct Companies, Tasks linked to correct People). We deliver the Mia automation audit document to the customer's admin team with a recommended rebuild approach for campaign sequences in Twenty or a companion automation tool. Shared inbox archiving remains the customer's responsibility. We provide a one-week hypercare window for reconciliation issues.

Platform deep dives

Context on both ends of the pair

Signpost logo

Signpost

Source

Strengths

  • AI assistant Mia handles review requests, follow-ups, and campaign triggers automatically for small teams.
  • All-in-one CRM, marketing automation, appointment scheduling, and payments in a single platform for local businesses.
  • Automated review funnel with negative feedback triage protects online reputation before public posting.
  • Per-business organization model is straightforward for single-location service companies and small agencies managing multiple clients.
  • Managed setup and agency support make it accessible for businesses without dedicated marketing or IT staff.

Weaknesses

  • The platform does not scale well—slow loading and syncing issues emerge with large contact lists.
  • Automated outreach requires significant manual oversight to avoid over-messaging or embarrassing follow-up timing.
  • Shared inbox message history is not exportable, creating a data loss risk during migration.
  • Pricing is opaque and considered expensive by small businesses relative to the features actively used.
  • API is not publicly documented at a level that supports programmatic bulk exports of campaign logic or workflow rules.
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 Signpost 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

    Signpost: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Signpost 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 Signpost to Twenty CRM data migrations

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

Can't find your answer?

Walk through your Signpost 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 four and six weeks for accounts under 15,000 Contacts and 2,000 Businesses with no custom objects or Signpost Payments data. Migrations with custom properties across multiple objects, large campaign histories, appointment records requiring calendar reconstruction, or customers with over 10,000 contacts where Signpost's export performance degrades move to eight to twelve weeks because of export throttling, schema creation scope, and API-based import scripting. The preparation phase (Twenty workspace setup and field creation) typically takes one to two weeks before any data moves.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Signpost.
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