CRM migration

Migrate from Groundhogg to Twenty CRM

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

Groundhogg logo

Groundhogg

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

73%

8 of 11

objects map 1:1 between Groundhogg and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Groundhogg is a WordPress plugin that bundles CRM, email marketing, and marketing automation in a single flat-rate package. Twenty CRM is a purpose-built, open-source CRM with a modern interface and a GraphQL-first API, but it has no native marketing automation, no email sending infrastructure, and no WordPress plugin ecosystem. The migration is straightforward for data records but requires a deliberate decision on automation and email strategy after cutover. We move People (from Groundhogg Contacts), Organizations (from Groundhogg Companies), Tags, Custom Field values, Notes, Activity history (emails, opens, clicks, form submissions), and Opportunities with pipeline stages. Groundhogg Flows and Tracks cannot be exported as logic and must be rebuilt manually in Twenty CRM. Broadcast emails do not migrate as sendable content; we carry recipient metadata and engagement timestamps only. WordPress plugin data from WooCommerce, LearnDash, and MemberPress does not have a direct Twenty CRM equivalent and requires a separate integration plan using webhooks or a middleware layer like Zapier, which Twenty CRM relies on for WordPress connectivity.

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

Groundhogg logo

Groundhogg

What's pushing teams away

  • Email deliverability depends entirely on the WordPress hosting environment — shared hosting with poor IP reputation can tank inbox rates with no ability to route through Groundhogg's own infrastructure.
  • Performance is hosting-bound — large contact lists and complex flows run on the same server as the WordPress site, so underpowered hosting creates slow automations and timeouts.
  • Workflow rebuild effort is significant — Flows and Tracks cannot be exported as logic and must be manually reconstructed in the new platform, making migrations time-consuming for automation-heavy accounts.
  • Support quality varies and documentation can lag behind new feature releases, leaving users without guidance on edge cases or API quirks.
  • Feature tier gating means Companies, Opportunities, and Tracks are locked behind paid upgrades, creating sticker shock when teams discover what they need costs more than the base plan.

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

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

Groundhogg

Contact

maps to

Twenty CRM

Person

1:1
Fully supported

Groundhogg's primary object maps to Twenty CRM's Person record. Standard properties (email, first_name, last_name, phone, postal_address) map to Twenty CRM's standard Person fields. Custom field values migrate as additional properties on the Person record. The contact's primary company link (if set in Groundhogg) maps to the Twenty CRM Organization lookup after Organizations are migrated. WordPress user owner references are remapped to Twenty CRM workspace member emails during import.

Groundhogg

Company

maps to

Twenty CRM

Organization

1:1
Fully supported

Groundhogg Companies map to Twenty CRM Organizations. Company name, address, phone, website, and domain fields migrate directly. Organization records are inserted before Person records so that the organization lookup is satisfied at Person import time. If Groundhogg stores multiple contacts per company, each Person record links to the same Organization after the Organization insert completes.

Groundhogg

Tag

maps to

Twenty CRM

Opportunity or Custom Field

lossy
Fully supported

Groundhogg's flat tag taxonomy has no native Twenty CRM equivalent. During scoping, the customer chooses between migrating tags as Opportunities (one per unique tag with a name-value structure), as a multi-select custom field on Person, or as a flat custom field with comma-separated values. Tags do not carry hierarchy information in Groundhogg, so no nesting logic applies.

Groundhogg

Custom Field

maps to

Twenty CRM

Custom Field

1:1
Fully supported

Groundhogg custom properties on contacts export with their field types preserved. We map text fields to Twenty CRM text properties, date fields to date properties, checkbox fields to boolean properties, and dropdown or choice fields to select properties. Choice field options are recreated in Twenty CRM's field configuration. Custom field schema is designed in Twenty CRM before any Person data import to avoid type-mismatch errors during insertion.

Groundhogg

Flow (Automation Sequence)

maps to

Twenty CRM

No direct equivalent — documented for rebuild

lossy
Fully supported

Groundhogg Flows store multi-step automation logic (trigger, conditions, time delays, actions) that cannot be exported via the REST API. We run a Flow Audit during discovery and produce a written document listing each Flow's trigger type, step count, step names, action types, and conditional logic. This document is the handoff artifact for the customer's admin to rebuild Flows manually in a third-party automation tool (Zapier, Make, or a custom script) or to accept the automation gap in Twenty CRM.

Groundhogg

Track (Visual Funnel)

maps to

Twenty CRM

No direct equivalent — documented for rebuild

lossy
Fully supported

Tracks are a visual funnel-building interface available in Groundhogg's Agency tier. We do not migrate Tracks as discrete objects. We document the funnel stage names, contact counts per stage, and any automation rules attached to track entry or exit. The customer uses this documentation to inform pipeline stage design in Twenty CRM and to rebuild the funnel visualization manually.

Groundhogg

Broadcast

maps to

Twenty CRM

Activity metadata (limited)

1:1
Fully supported

Groundhogg broadcast emails carry subject, send date, recipient count, open rate, click rate, and bounce metadata. We export this as a structured metadata report attached to the Person records who received each broadcast. The broadcast HTML content, email templates, and send history do not migrate as sendable email content. Recipients are identifiable in the activity metadata but the email itself is not reconstructed in Twenty CRM.

Groundhogg

Activity History

maps to

Twenty CRM

Activity

1:1
Mapping required

Groundhogg logs contact activities including email opens, link clicks, form submissions, tag applied or removed, note added, and appointment booked. We export the activity log per contact and create timestamped Activity records in Twenty CRM ordered chronologically. The activity type, timestamp, and any associated metadata (URL clicked, form name, tag name) are preserved. Activity records are inserted after Person and Organization migration so that the Person lookup is satisfied.

Groundhogg

Note

maps to

Twenty CRM

Comment or Activity

1:1
Fully supported

Groundhogg contact-level notes migrate as Comment records in Twenty CRM, linked to the corresponding Person. Each Comment preserves the note body text, creation timestamp, and author attribution. Notes authored by a WordPress user are attributed to the matching Twenty CRM workspace member after owner reconciliation.

Groundhogg

Opportunity / Deal

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Groundhogg Deals and Pipeline Stages (available on Pro and above tiers) map to Twenty CRM Opportunities. We export stage names, deal values, and associated contact and company links. Pipeline visual layout and deal probability percentages do not migrate. We deliver a stage name and order document for the customer to configure Opportunity stages in Twenty CRM before migration. Deal notes migrate as Comments attached to the Opportunity.

Groundhogg

User (Owner)

maps to

Twenty CRM

Workspace Member

1:1
Fully supported

Groundhogg maps ownership via WordPress user IDs. We export WP user email addresses and match them to Twenty CRM workspace members by email. Any Groundhogg owner without a matching Twenty CRM workspace member is held in a reconciliation queue for the customer's admin to provision before record import resumes. This step gates all subsequent record migration because owner references are required on most object imports.

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.

Groundhogg logo

Groundhogg gotchas

High

Email deliverability is fully self-hosted

High

Automation flows do not export as logic

Medium

API rate limits are host-dependent, not Groundhogg-enforced

Medium

Feature availability is tier-dependent and affects what we export

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

  • Groundhogg Flows and Tracks do not migrate as automation logic

    Groundhogg's Flow engine stores multi-step automation sequences with conditional branching, time delays, and action configurations that are not exposed via the REST API. We export the trigger type, step count, and step names as documentation, but the conditional logic, delay durations, and action parameters must be rebuilt manually in the destination platform. Twenty CRM has no native marketing automation, so the rebuild will require Zapier, Make, or a custom integration. We include a Flow Audit step in our migration scope to capture this documentation before cutover and deliver it as a written handoff artifact.

  • Twenty CRM requires Zapier or a custom integration for WordPress plugin data

    Groundhogg's native integrations with WooCommerce, LearnDash, BuddyBoss, and MemberPress work because Groundhogg is installed inside WordPress and can read plugin database tables directly. Twenty CRM has no WordPress plugin and no direct access to WooCommerce orders, LearnDash course progress, or MemberPress subscription data. Any data from these plugins that exists as Groundhogg contacts, tags, or custom fields can migrate, but new data flowing after cutover requires a separate integration setup. Groundhogg's own comparison page explicitly flags this as a limitation for Twenty CRM.

  • Groundhogg API rate limits are host-dependent, not application-enforced

    Groundhogg's REST API does not enforce its own rate limiting, but the customer's WordPress host, CDN, or security plugin (Wordfence, Sucuri, iThemes Security) may impose HTTP request caps that cause 429 errors during bulk export. We profile the customer's hosting environment during discovery, including any known security plugin configuration, and set migration batch sizes and throttle rates accordingly. A migration that skips this profiling step risks server-side rate-limit blocks mid-export.

  • Groundhogg Plus/Pro/Agency tier gating affects what data exists to migrate

    Companies, Opportunities, and Tracks are gated behind Groundhogg's Plus, Pro, and Agency tiers respectively. During scoping we verify the customer's active plan tier and audit the actual database for any records that exist despite tier limitations (legacy entitlements, workarounds, or test data). If the customer is on a Basic plan but has been using Companies via a legacy entitlement, those records may exist inconsistently. We audit before export to avoid partial object migration that leaves some contacts unlinked from their companies.

  • Groundhogg email sending reputation may be damaged before migration

    Groundhogg sends email from the customer's own WordPress server, not from Groundhogg's own infrastructure. There is no shared sending domain, dedicated IP, or warmup tooling. If the customer's current server has a poor sending reputation due to shared hosting or past deliverability issues, that reputation does not transfer to Twenty CRM but the email address domain does. We check domain sending reputation during scoping. If SPF, DKIM, or DMARC is misconfigured or the domain has a blocklist history, we flag this before migration so the customer can warm up a new sending domain or provision a fresh SendGrid or SES configuration before cutover.

Migration approach

Six steps for a successful Groundhogg to Twenty CRM data migration

  1. Discovery and tier verification

    We audit the source Groundhogg instance across plan tier, active contact count, company count, tag taxonomy, custom field schema, active Flows and Tracks, broadcast history, engagement activity volume, and Opportunity pipeline stages if applicable. We profile the WordPress hosting environment including web server software, any security plugins installed, and current SMTP configuration. We verify the active Groundhogg plan tier and cross-reference it against the objects present in the database to detect any records that exist despite tier limitations. The discovery output is a written migration scope and a pricing proposal covering record volume, schema complexity, and automation documentation scope.

  2. Twenty CRM workspace configuration and schema design

    We configure the destination Twenty CRM workspace before any data import. This includes provisioning workspace members for the owner reconciliation step, creating Organization records for every Groundhogg Company (so that Person import can satisfy the organization lookup), designing the custom field schema to match Groundhogg's custom property types, and documenting the Opportunity stage names and order from Groundhogg for manual configuration in Twenty CRM. If the customer chooses to migrate tags as Opportunities, we design the tag-as-Opportunity structure here.

  3. Flow Audit and automation documentation

    We run a Flow Audit across every active Groundhogg Flow. For each Flow we document the trigger type, the number of steps, the name and purpose of each step, any conditional branching logic, and the action type at each step. We produce a written Flow Inventory document that the customer's admin uses to rebuild automations in a third-party tool post-migration. This document is delivered before cutover so that the rebuild can begin in parallel with data validation.

  4. Owner reconciliation and workspace member provisioning

    We extract every distinct WordPress user ID referenced as an owner on Contact, Company, Deal, and Engagement records. We export the corresponding WP user email addresses and match them against Twenty CRM workspace members by email. Any Groundhogg owner without a matching Twenty CRM workspace member goes to a reconciliation queue. The customer's admin provisions any missing workspace members before record migration resumes. This step gates all subsequent record imports because owner references are required on most object types.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Organizations first (from Groundhogg Companies), then Persons (with organization lookup resolved), then Activities and Comments per Person, then Opportunities with pipeline stage names documented for manual configuration. Broadcast metadata migrates as a structured report attached to Person records. Tags migrate according to the strategy chosen during scoping. Each phase emits a row-count reconciliation report before the next phase begins. We throttle batch sizes based on the host profile gathered during discovery to avoid server-side 429 errors.

  6. Cutover, validation, and Flow rebuild handoff

    We freeze Groundhogg writes during cutover, run a final delta migration of any records modified during the migration window, then enable Twenty CRM as the system of record. We deliver the Flow Inventory document and the broadcast metadata report to the customer's admin team. We support a one-week hypercare window where we resolve any reconciliation issues raised by the team. We do not rebuild Groundhogg Flows as Zapier automations or custom scripts inside the migration scope; that is a separate engagement.

Platform deep dives

Context on both ends of the pair

Groundhogg logo

Groundhogg

Source

Strengths

  • Fixed-price model with no per-contact or per-email billing at any tier.
  • Full REST API, webhooks, and WP-CLI available on all plans including Basic.
  • Native WordPress integration with no separate cloud login or sync layer.
  • Hundreds of hooks and filters for developer extensibility and custom extensions.
  • Agency tier supports white-labeling and template libraries for client-facing deployments.

Weaknesses

  • No built-in email infrastructure — deliverability depends entirely on the customer's hosting and DNS setup.
  • Performance scales with hosting quality — large databases or heavy automation loads can degrade on entry-level WordPress hosts.
  • Automation logic (Flows, Tracks) cannot be exported as reusable templates or migrated directly; it requires manual rebuild.
  • Feature tier gates lock Companies, Opportunities, and Tracks behind Pro and Agency plans respectively.
  • No multi-tenant SaaS option — every customer runs their own WordPress instance, meaning no shared deliverability infrastructure or managed upgrades.
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. 2 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 Groundhogg and Twenty CRM.

  • Object compatibility

    B

    2 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

    Groundhogg: Not enforced by Groundhogg; governed by host, CDN, or security plugin limits.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your Groundhogg 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 contacts with no Opportunities, no custom objects, and a straightforward tag taxonomy. Migrations with Opportunities and pipeline stages, large activity histories (over 200,000 engagement records), extensive custom field schemas, or WooCommerce or LearnDash integration data move to six to ten weeks because of schema design, owner reconciliation, and the Flow documentation deliverable.

Adjacent paths

Related migrations to explore

Ready when you are

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