CRM migration

Migrate from OptiPub to Twenty CRM

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

OptiPub logo

OptiPub

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

50%

5 of 10

objects map 1:1 between OptiPub and Twenty CRM.

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

OptiPub organizes data around publishing-specific objects: Subscribers, Segments, Campaigns, Automation Rules, Templates, and Partners. Twenty CRM uses a standard CRM schema of People, Companies, Opportunities, Tasks, and Notes with a flexible custom object model. We resolve the subscriber-to-People mapping, convert segment membership into Twenty tags or custom picklist fields, preserve campaign subject and send metadata as Note records attached to the relevant People or Company, and flag OptiPub automation rules and partner funnel steps as non-migratable workflow items requiring manual rebuild in Twenty's workflow builder. The Twenty REST and GraphQL APIs handle the import with rate-limit handling and parent-record lookup resolution; the CSV import path requires pre-created schema and is better suited for smaller record sets. We do not migrate OptiPub Automation Rules as code, video embedding credentials, or partner funnel step logic.

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

OptiPub logo

OptiPub

What's pushing teams away

  • $800/month base is high entry for marketers outside the direct-response and publisher segments — small senders find more competitive flat-rate pricing elsewhere.
  • Per-message CPM (~$0.80 per 1,000) scales linearly — heavy senders with low revenue per recipient face margin pressure versus flat-rate ESPs.
  • Reviewers cite a learning curve on the campaign builder due to its breadth.
  • Single-tier 'every feature' pricing means buyers can't downgrade to remove unused capabilities.
  • Smaller third-party reviewer footprint than mainstream ESPs (Klaviyo, Mailchimp, ActiveCampaign).

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

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

OptiPub

Subscriber

maps to

Twenty CRM

People

1:1
Fully supported

OptiPub Subscribers map to Twenty People records. We extract email address, engagement history fields (last_open_date, last_click_date, total_sends), lifecycle status (active, unsubscribed, bounced), and any custom subscriber properties. The subscriber's subscription status becomes a custom picklist field on People. If OptiPub tracks subscriber source attribution, we map it to a custom text or picklist field in Twenty. The People record is created first so that any subsequent segment, campaign, or activity references can resolve the lookup.

OptiPub

Segment

maps to

Twenty CRM

Tag (multi-select picklist) or custom field

lossy
Fully supported

OptiPub Segments (dynamic or static subscriber groupings) map to Twenty Tags attached to People records. For segments with complex membership criteria (behavioral triggers, date-based rules), we document the segment definition and recommend rebuilding as a Twenty filter view rather than static tags, since Twenty does not have a native dynamic segment equivalent. If OptiPub segments are small in number (under 20) and used for campaign targeting, we create a custom multi-select picklist field (segment_name__c) on People to preserve the segment label. Segment-to-campaign associations migrate as Note records describing the campaign targeting rule.

OptiPub

Campaign

maps to

Twenty CRM

Note (attached to People)

1:many
Fully supported

OptiPub Campaigns (with subject, content body, send date, A/B test variants, and engagement metrics) do not have a direct Twenty CRM equivalent. We create a Note record for each campaign, attach it to the relevant People records, and populate the Note body with campaign subject, send timestamp, open rate, click rate, and A/B test variant details. If the campaign was sent to a known segment, the segment membership Note serves as the campaign targeting record. Customers needing campaign reporting in Twenty should plan for a custom Campaign object built in Settings -> Data Model before migration.

OptiPub

Template

maps to

Twenty CRM

Note (content archive)

1:1
Fully supported

OptiPub email templates (drag-and-drop or HTML) migrate as Note records attached to the originating admin's workspace. We preserve the template name, HTML source, and last-used date. The template HTML does not become a live asset in Twenty (Twenty has no native email template builder in the base CRM); the Note serves as an archive and reference for rebuilding in the customer's chosen email delivery tool post-migration.

OptiPub

Automation Rule

maps to

Twenty CRM

Workflow (manual rebuild)

lossy
Fully supported

OptiPub Automation Rules with publisher-specific triggers (paid publication triggers, partner funnel steps, engagement-based sequences) do not map to Twenty Workflows because the trigger conditions and branching logic are structurally different. We do not migrate automation rules as code. We deliver a written inventory of every active OptiPub automation with its trigger, conditions, actions, and recommended Twenty Workflow equivalent, including the specific record-triggered or scheduled flow variant that matches the use case. The customer's admin rebuilds them post-migration.

OptiPub

Partner

maps to

Twenty CRM

Company

1:1
Fully supported

OptiPub Partners (affiliate and partner management records with domain monitoring and partner-level stats) map to Twenty Companies with custom fields. We create a custom object or custom fields on Company for partner-specific metrics: partner_revenue__c, domain__c, partner_tier__c, and referral_source__c. Partner funnel step status becomes a custom picklist field. Partner-to-subscriber relationships (if tracked in OptiPub) map to Twenty's standard link between Company and People records.

OptiPub

Video (embedded)

maps to

Twenty CRM

URL text field

lossy
Fully supported

OptiPub campaigns embedding Wistia or YouTube videos store integration credentials and play statistics. We export play statistics as static data points in a Note attached to the relevant campaign record. The video URL itself migrates as a text field; playback within emails depends on the customer's chosen email delivery tool, not Twenty CRM. Video hosting credentials require re-authentication at the destination email tool.

OptiPub

Engagement (email, click, open)

maps to

Twenty CRM

Task

1:1
Fully supported

OptiPub engagement events (opens, clicks, unsubscribes) map to Twenty Task records attached to the relevant People record. We preserve the engagement timestamp, event type, and campaign reference. The engagement count summary (lifetime opens, lifetime clicks) migrates as custom number fields on the People record. This gives sales and editorial teams a view of subscriber engagement history within the CRM without a native campaign object.

OptiPub

Custom Subscriber Property

maps to

Twenty CRM

Custom Field on People

lossy
Fully supported

OptiPub's custom subscriber properties (publisher-specific fields beyond the standard schema) map to Twenty custom fields on People. We create these fields in Settings -> Data Model before migration. Field type mapping follows: text to TEXT, number to NUMBER, date to DATE, true/false to CHECKBOX, and dropdown values to SELECT. If a custom property references another object (e.g., a linked partner), we create the corresponding lookup relationship in Twenty first.

OptiPub

Owner

maps to

Twenty CRM

User

1:1
Fully supported

OptiPub Owner records (user assignments on subscribers, campaigns, and automations) map to Twenty User records. We resolve owners by email match against the Twenty workspace. Any OptiPub owner without a matching Twenty User goes to a reconciliation queue for the customer's admin to provision before record import resumes. Twenty requires users to accept their invitation before Owner lookups can resolve, per Twenty's documentation.

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.

OptiPub logo

OptiPub gotchas

Medium

Dedicated IP reputation transfer requires warmup

Medium

Automation workflow branching logic may not map 1:1

Low

Video integration references need re-authentication

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 lacks standard fields out of the box

    Twenty ships with a minimal set of standard fields on People and Companies. GitHub issue #13953 documents that fields common in other CRMs (job title, department, industry on Companies, multiple phone types, social profiles) must be created manually before import. We pre-create all required custom fields in Settings -> Data Model before any data loads. If a field is missing during CSV import, the import creates the record but silently skips the unmapped column, creating a data gap that is only discovered during reconciliation.

  • CSV import requires pre-created schema and user provisioning

    Twenty's CSV import path does not create fields dynamically; it only maps existing fields to records. Additionally, if your OptiPub data contains Owner references, those users must exist in Twenty (and have accepted their invitation) before the import runs, otherwise Owner lookups remain null. We coordinate with the customer's admin to provision all workspace users and create all custom fields before the first import phase begins. Skipping this step results in broken lookups and incomplete record relationships in the migrated data.

  • OptiPub automation rules do not map to Twenty workflows

    OptiPub automation rules use publisher-specific trigger conditions (paid publication triggers, partner funnel steps, behavioral sequences) that have no direct equivalent in Twenty's workflow builder. Twenty's workflows support record-triggered and scheduled variants, but the trigger logic, delay conditions, and branching rules differ structurally. We do not migrate automation rules as code. We deliver a written inventory of every active OptiPub automation requiring rebuild, with the recommended Twenty Workflow equivalent for the customer's admin to reimplement post-migration.

  • Campaign history requires custom object or Note strategy

    Twenty has no native campaign object for email marketing history. We map OptiPub campaign records to Note records attached to People, but this does not provide the same reporting depth as a dedicated campaign object. Teams that rely on campaign performance reporting (open rates, click rates, A/B test results) should plan to create a custom Campaign object in Twenty's Data Model before migration and configure a reporting view on top of it. We can scope this as a pre-migration configuration task.

Migration approach

Six steps for a successful OptiPub to Twenty CRM data migration

  1. Discovery and data audit

    We audit the source OptiPub workspace across objects: subscriber count and field inventory, segment count and membership criteria definitions, campaign volume and A/B test variant count, active automation rules, template count, partner records and associated revenue attribution fields, and video asset references. We extract a full field inventory from OptiPub and flag any custom subscriber properties that need pre-creation in Twenty. The discovery output is a written migration scope, a field mapping document, and a Twenty workspace configuration checklist.

  2. Twenty workspace pre-configuration

    Before any data moves, we configure the Twenty destination workspace: create all custom fields on People (matching OptiPub subscriber properties with correct field types), create all custom fields on Company (matching OptiPub partner fields), optionally create a Campaign custom object if the customer wants campaign-level reporting, and provision all workspace users and wait for invitations to be accepted. We deploy this configuration into a Twenty sandbox or staging workspace first for validation against a sample import.

  3. Data export and transformation

    We export each OptiPub object as a separate CSV: Subscribers, Segments (with membership export), Campaigns, Partners, and Templates. We transform the data during export: segment membership becomes tag values on People, engagement summaries become custom number fields, automation rule metadata is extracted to a separate JSON inventory document, and owner email references are extracted for User lookup resolution. We run deduplication on subscriber email addresses before generating the final import CSVs.

  4. Sandbox import and reconciliation

    We run a full import into the Twenty staging workspace using the transformed CSVs and REST or GraphQL API calls. The customer's admin reviews a random sample of migrated People, Companies, and campaign Note records against the OptiPub source. We reconcile record counts, check for null lookups on Owner and Company fields, and verify that segment tags appear correctly on People records. Any mapping corrections (field type mismatches, missing select options, incorrect lookup targets) are documented and fixed before production migration begins.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Companies (from OptiPub Partners), People (from OptiPub Subscribers, with CompanyId resolved), Tags or segment fields (as a second pass on People after People base records exist), Campaign Notes (attached to People by email match), and Template Notes (as a workspace reference archive). Each phase emits a row-count reconciliation report. We use Twenty's REST API with rate-limit handling and exponential backoff for API calls; CSV import supplements for bulk People loads if the REST path encounters timeout issues.

  6. Cutover, validation, and automation inventory delivery

    We freeze OptiPub writes during cutover, run a final delta migration of any records modified during the migration window, then hand over Twenty as the system of record. We deliver the Automation Rule inventory document to the customer's admin team with recommended Twenty Workflow equivalents for each rule requiring rebuild. We support a five-day hypercare window for reconciliation issues. We do not rebuild OptiPub automation rules, templates, or video integrations inside the migration scope; those are separate configuration tasks for the customer's admin.

Platform deep dives

Context on both ends of the pair

OptiPub logo

OptiPub

Source

Strengths

  • Dedicated IP infrastructure gives publishers full control over sender reputation without shared pool risks
  • Volume-based pricing model based on emails sent rather than contact count benefits high-volume senders
  • Publishing-specific workflow automation designed for subscription and content businesses
  • Modern interface built on contemporary infrastructure versus legacy platforms with outdated architectures
  • Responsive support team with demonstrated expertise in email deliverability optimization

Weaknesses

  • Smaller market presence and fewer third-party integrations compared to major platforms like HubSpot or Salesforce
  • Limited brand recognition may complicate procurement decisions in larger organizations
  • Pricing transparency is unclear from public documentation, requiring direct sales conversations
  • Feature set is narrower than enterprise marketing automation platforms with broader use cases
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 OptiPub 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

    OptiPub: Not publicly documented — typical SaaS limits assumed and confirmed during scoping.

  • Data volume sensitivity

    A

    OptiPub exposes a bulk API — large-volume migrations stream efficiently.

Estimator

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

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

Can't find your answer?

Walk through your OptiPub to Twenty CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Migrations under 15,000 subscribers, 200 segments, and 500 campaigns land between two and four weeks. Migrations with custom OptiPub fields, partner-level revenue attribution, large campaign histories (over 5,000 campaign records), or a custom Campaign object in Twenty move to six to ten weeks because of pre-migration schema design, custom field creation in Twenty's Data Model, and the extended reconciliation pass. Discovery and workspace configuration typically add one to two weeks before the first data load.

Adjacent paths

Related migrations to explore

Ready when you are

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