CRM migration

Migrate from ChartMogul to Nutshell

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

ChartMogul logo

ChartMogul

Source

Nutshell

Destination

Nutshell logo

Compatibility

50%

5 of 10

objects map 1:1 between ChartMogul and Nutshell.

Complexity

CModerate

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

ChartMogul is a subscription analytics platform built around MRR, ARR, churn, and cohort reporting from billing data. Nutshell is a sales CRM built around People, Companies, Leads, and pipeline Deals for SMB teams executing daily sales. The structural gap between a metrics aggregation platform and a sales CRM is the central challenge of this migration: ChartMogul's parent Customer plus child Data Source Customer architecture must decompose into Nutshell's Company and Person records, and ChartMogul's MRR movements, subscriptions, plans, and invoices have no native Nutshell equivalents, so we migrate the attribute data as custom fields. We do not migrate workflows, sequences, or automations; ChartMogul's metric dashboards do not migrate because they require a dedicated analytics layer. We deliver a written inventory of every ChartMogul subscription and plan attribute that requires rebuild in Nutshell custom fields or a supplementary BI tool.

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

ChartMogul logo

ChartMogul

What's pushing teams away

  • The CRM module is lightweight compared to dedicated sales platforms—contacts lack deep activity timelines and deal management is basic, causing teams to outgrow it.
  • Multi-currency handling requires manual configuration and does not auto-detect currency switches mid-customer lifecycle, creating reporting drift for global businesses.
  • ChartMogul's export capabilities are limited to CSV and Google Sheets; teams needing real-time warehouse feeds find the BigQuery/S3 integration too batch-oriented for operational use.
  • Historical data older than your connection date is unavailable unless explicitly imported, and retroactive imports require re-running metric calculations that hit plan limits.

Choosing

Nutshell logo

Nutshell

What's pulling them in

  • Lowest cost entry point among mid-market CRMs—Foundation plan starts at $13/user/month, making it accessible for teams validating CRM fit before committing.
  • Integrated sales automation and email sequencing on Pro plans without requiring a separate email marketing platform, per verified Capterra reviews.
  • Consistently praised for intuitive interface and fast onboarding, with case studies reporting 100% team adoption rates within initial deployment periods.
  • Strong customer support responsiveness cited across G2 reviews, with dedicated support tiers available on Enterprise plans.
  • Native integrations with WhatsApp, Facebook Messenger, Instagram, and Slack reduce reliance on third-party middleware for common communication channels.

Object mapping

How ChartMogul objects map to Nutshell

Each row shows how a ChartMogul object lands in Nutshell, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

ChartMogul

Customer (parent object)

maps to

Nutshell

Company and Person

1:many
Fully supported

ChartMogul's parent Customer record (with name, website, country, state, city, owner, tags, and custom attributes) decomposes into a Nutshell Company record and a primary Nutshell Person record. The ChartMogul customer_uuid maps to an external_id custom field on both the Company and Person so that the relationship remains queryable post-migration. We set the Company name from ChartMogul's company field and create the primary Person from ChartMogul's contact data if present; additional contacts from ChartMogul's contact list become Person records linked to the same Company.

ChartMogul

Data Source Customer (child object)

maps to

Nutshell

Company custom fields

1:1
Fully supported

ChartMogul's per-billing-source child Data Source Customer records (Stripe, Chargebee, Recurly, PayPal) do not have a direct Nutshell equivalent. We extract the billing source name, external_id, and currency from each child record and write them into a set of Company-level custom fields: billing_source__c, billing_source_id__c, and currency__c. This preserves which billing system owns the subscription without creating orphaned child records in Nutshell.

ChartMogul

Subscription

maps to

Nutshell

Company custom fields

lossy
Fully supported

ChartMogul Subscriptions (plan_id, quantity, billing cycle, status) migrate as a group of Company custom fields: subscription_plan__c (text), subscription_quantity__c (number), subscription_interval__c (dropdown: monthly/annual/quarterly), subscription_status__c (dropdown: active/trial/cancelled/past_due), and subscription_mrr__c (currency). We derive subscription_mrr__c from the ChartMogul plan's mrr field at migration time. Closed or cancelled subscriptions migrate with their original status so that churn history is visible on the account record.

ChartMogul

Plan

maps to

Nutshell

Custom field configuration

lossy
Fully supported

ChartMogul Plan definitions (name, interval, amount, currency, trial period days) migrate as Company custom field values rather than as separate records, because Nutshell has no Plans object. We write plan_name__c, plan_interval__c, plan_amount__c, and trial_days__c onto the Company record at migration time. If the customer has multiple active plans, we write the primary plan as the default and include additional plan names in plan_name__c as a text list.

ChartMogul

Invoice

maps to

Nutshell

Person or Company custom fields

lossy
Fully supported

ChartMogul Invoice records (line items, amounts, taxes, transaction fees, dates) cannot be fully represented in Nutshell's standard CRM schema. We write a summary record onto the Company: last_invoice_date__c (date), total_invoiced_amount__c (currency), and invoice_count__c (number). For accounts where invoices represent key relationship milestones, we attach the invoice data as a note on the Company record with the invoice number, amount, and date in structured text format. Full invoice line-item detail requires a separate document management approach.

ChartMogul

Transaction

maps to

Nutshell

Company custom fields

1:1
Fully supported

ChartMogul Transactions (payments, refunds, chargebacks) migrate as aggregate summary fields on the Company: last_payment_date__c, total_payments_received__c (currency), and total_refunds__c (currency). Transaction fee handling for Google Play and PayPal sources is read from ChartMogul's fee setting and noted in a fee_handling_note__c text field so the customer can verify alignment with their accounting records. Individual transaction rows are not imported because Nutshell has no transaction ledger.

ChartMogul

Tag

maps to

Nutshell

Tag

1:1
Fully supported

ChartMogul tags on parent Customer records migrate to Nutshell Tags on the corresponding Company or Person. Tags are flat string labels in both platforms, so the mapping is direct. Tag counts for segmentation filters migrate as part of the tag set; the Nutshell Tags feature supports filtering by tag so segmentation intent is preserved. If ChartMogul tags contain hierarchical separators, we flatten them to a flat tag set in Nutshell.

ChartMogul

Custom Attributes

maps to

Nutshell

Company or Person custom fields

lossy
Fully supported

ChartMogul Customer-level custom attributes (key-value pairs of type String, Integer, Boolean, Date, or Timestamp) migrate to Nutshell custom fields of matching type on the Company object for company-scoped attributes or on the Person object for contact-scoped attributes. String attributes map to Nutshell text fields; Integer attributes map to number fields; Date and Timestamp attributes map to date fields; Boolean attributes map to Nutshell checkbox fields. We pre-create all custom fields in Nutshell before migration begins using the custom field API.

ChartMogul

Opportunity

maps to

Nutshell

Opportunity

1:1
Fully supported

ChartMogul CRM Opportunities (deal stage, value, owner) map to Nutshell Opportunities with stage, amount, and user preserved. ChartMogul's opportunity stages map to Nutshell pipeline stages by name; the Nutshell pipeline and stage values are configured before migration. Closed-won and closed-lost opportunities migrate with their original status. ChartMogul's MRR contribution per opportunity does not map directly; we write the opportunity amount and note the MRR impact in a custom field.

ChartMogul

Note and Call Log

maps to

Nutshell

Note

1:1
Fully supported

ChartMogul Notes and Call Logs on Customer records migrate to Nutshell Notes attached to the corresponding Company or Person. Note body text migrates as-is. Call log metadata (duration, disposition, recording URL if present) migrates to a custom note format: structured text including call duration, date, and any disposition field. Nutshell's AI call logging creates new Notes automatically after migration, so call logs migrated from ChartMogul appear alongside any new AI-logged calls in the same timeline.

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.

ChartMogul logo

ChartMogul gotchas

High

Customer vs. data source customer split requires dual-object migration

Medium

40 req/s API rate limit restricts bulk migration throughput

Medium

Transaction fee handling setting causes silent MRR discrepancies

Medium

Historical cohort data cannot be backdated after initial import

Nutshell logo

Nutshell gotchas

High

Contact tier limits enforced on import

Medium

No bulk API endpoint requires paginated extraction

Medium

Email sequences not exportable via API

Medium

Foundation plan disables key sales features

Pair-specific challenges

  • ChartMogul's two-level customer model requires explicit split

    ChartMogul enforces a parent Customer record holding tags, attributes, notes, and opportunities, while each billing source creates a child Data Source Customer holding invoices and transactions. Nutshell has no equivalent of a billing-source child record. We resolve this by extracting billing source identifiers into Company-level custom fields and writing subscription, invoice, and transaction summaries as structured custom fields. If this decomposition is skipped or the custom fields are not created before migration, the billing data is orphaned and the MRR attribution chain breaks. We handle this decomposition in the transform layer before any Nutshell API write.

  • MRR, ARR, churn, and cohort data have no Nutshell equivalent

    ChartMogul's core value proposition is its metric engine: MRR movements, ARR, churn rate, NRR, GRR, and cohort retention tables. Nutshell is a sales CRM with no native subscription analytics. We migrate the underlying subscription attributes as custom fields (plan, interval, MRR contribution, subscription status) but we cannot reproduce ChartMogul's metric calculations. Customers moving from ChartMogul to Nutshell must plan to either use Nutshell's reporting for pipeline-based revenue visibility, connect to a dedicated analytics BI tool (Metabase, Mixpanel, Amplitude), or accept that the investor-grade metric dashboards will not transfer. We flag this explicitly in the discovery output before migration begins.

  • ChartMogul's 40 req/s rate limit applies to all API calls

    ChartMogul's primary rate limit caps at 40 requests per second with an additional compute-time-per-minute ceiling and a 20-parallel-connection ceiling. Large account migrations with thousands of customer records, invoices, and transactions can exceed this during bulk export. We mitigate this by chunking API calls with 25ms delays, using cursor-based pagination to avoid the deprecated page parameter, and scheduling large export batches during off-peak hours. We read the current transaction fee handling setting during scoping and apply it consistently to all imported transactions.

  • Historical cohort membership cannot be backdated after import

    ChartMogul assigns cohort membership at import time based on the customer's first_seen_at timestamp. If the ChartMogul account imported customers with backdated first_seen_at values, cohort MRR movements will reflect the original cohort periods. Nutshell does not support cohort grouping natively, so cohort history is not portable as an analytical structure. We export the cohort data from ChartMogul as a structured CSV for the customer to use in a separate BI tool if cohort analysis is required post-migration. We advise customers of this limitation during discovery so that cohort reporting expectations are set correctly before migration.

  • Sequences and automations do not migrate between platforms

    ChartMogul Sequences and automated task workflows are sales engagement cadence features with no direct Nutshell equivalent. Nutshell's pipeline automation covers basic follow-up triggers but does not replicate ChartMogul's multi-step cadence model. We do not migrate Sequences as code. We deliver a written inventory of every active ChartMogul Sequence and automation with its trigger conditions, step cadence, and CRM action, with a recommended Nutshell automation equivalent where applicable. The customer's admin rebuilds the cadence model in Nutshell's automation builder post-migration.

Migration approach

Six steps for a successful ChartMogul to Nutshell data migration

  1. Discovery and billing source inventory

    We audit the source ChartMogul account across billing source connections (Stripe, Chargebee, Recurly, PayPal, app stores), customer count, subscription count, invoice volume, and engagement history. We identify the ChartMogul plan tier and the transaction fee handling setting for Google Play and PayPal sources. We extract the complete tag taxonomy, custom attribute schema, and opportunity pipeline structure. The discovery output is a written migration scope that includes the two-level customer decomposition plan, the custom field mapping schema for Nutshell, and an explicit statement of what ChartMogul metric data cannot be represented in Nutshell and requires a separate analytics plan.

  2. Nutshell custom field schema design

    We design the Nutshell custom field schema based on the ChartMogul data audit. Company-level custom fields cover billing_source__c, subscription_plan__c, subscription_mrr__c, subscription_interval__c, subscription_status__c, plan_amount__c, last_invoice_date__c, total_invoiced_amount__c, last_payment_date__c, total_payments_received__c, and currency__c. Person-level custom fields cover any contact-scoped custom attributes migrated from ChartMogul. We create all fields via the Nutshell API before any data migration begins so that the import process never fails on a missing field error.

  3. Sandbox migration and reconciliation

    We run a full migration into a Nutshell sandbox using the customer's actual ChartMogul data volume. The customer reconciles a sample of 25-50 Company records and Person records against the ChartMogul source, verifying that custom field values, tags, notes, and opportunity data match. Any mapping corrections (field type mismatches, tag naming conflicts, custom attribute scope errors) are resolved in the sandbox before the production migration begins. The sandbox sign-off is required before production migration proceeds.

  4. Parent customer and data source decomposition

    We run the two-level decomposition transform as the first migration step. For each ChartMogul parent Customer, we create a Nutshell Company with the ChartMogul customer_uuid stored in an external_id__c field. We then extract each child Data Source Customer's billing source name, external_id, and currency into Company-level custom fields. Only after the Company record exists with its billing source fields populated do we import the primary Person and any additional contacts. This ordering ensures that every Person is linked to a Company with its subscription context intact.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Company records (with billing source fields) first, then Person records linked to Companies, then Opportunities with stage and amount preserved, then Tags attached to Company and Person records, then Notes and Call Logs as structured Note records, then custom attribute values written to the pre-created custom fields. Subscription summaries and invoice summaries are written in a final pass after all parent records are committed. Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, validation, and metric handoff document

    We freeze ChartMogul writes during cutover and run a final delta migration of any records modified during the migration window. We validate total record counts (Companies, Persons, Opportunities, Notes) against the ChartMogul source totals. We deliver the Metric Handoff Document: a structured CSV of every ChartMogul customer with their MRR, ARR, subscription plan, invoice count, and cohort month, so the customer can connect this data to a BI tool or a dedicated subscription analytics platform if needed. We do not rebuild ChartMogul Workflows or Sequences as Nutshell automations inside the migration scope.

Platform deep dives

Context on both ends of the pair

ChartMogul logo

ChartMogul

Source

Strengths

  • Unifies billing data from Stripe, Chargebee, Recurly, PayPal, and app stores into a single MRR/ARR view
  • Generous free tier up to $10K MRR with full metric feature set
  • Built-in NRR, GRR, cohort retention, and churn segmentation out of the box
  • Two-way CRM sync with Pipedrive and HubSpot keeps sales and finance data aligned
  • Official SDKs for Ruby, Node.js, PHP, Go, and Python with built-in exponential backoff

Weaknesses

  • CRM module is shallow compared to dedicated sales platforms—limited deal management and activity tracking
  • Export options are limited to CSV and Google Sheets; real-time warehouse streaming requires paid integrations
  • Historical data is scoped to what is imported at connection time; retroactive imports are limited by plan
  • Multi-currency handling requires manual configuration and does not auto-detect mid-lifecycle currency changes
  • Transaction fee handling differs by billing source and must be explicitly configured to avoid MRR discrepancies
Nutshell logo

Nutshell

Destination

Strengths

  • Simple, intuitive interface with minimal learning curve for sales teams new to CRM
  • Per-seat pricing is transparent and predictable, with annual billing reducing monthly cost
  • Full data export tool available for all account data including backups
  • Open JSON-RPC API allows programmatic access to all core objects
  • Native multichannel engagement (email, SMS, WhatsApp) without third-party add-ons for communication

Weaknesses

  • Reporting and analytics are considered weak, requiring manual Excel exports for detailed analysis
  • No bulk API endpoint—migration requires paginated API reads that must be rate-limited carefully
  • JSON-RPC API is less common than REST, requiring custom integration code compared to standard REST CRMs
  • Add-on costs (Forms, Nutshell IQ, Email Marketing) are per-company charges that stack on top of per-seat pricing
  • Feature restrictions on entry-level plans mean teams often need mid-tier to get basic automation

Complexity grading

How hard is this migration?

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

C

Overall complexity

Moderate migration

Derived from compatibility, mapping clarity, API constraints, and data volume across ChartMogul and Nutshell.

  • 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

    C

    ChartMogul: 40 requests per second primary limit, plus compute time per minute per account and max 20 parallel connections.

  • Data volume sensitivity

    B

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

Estimator

Estimate your ChartMogul to Nutshell 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 ChartMogul to Nutshell data migrations

Answers to the questions buyers ask most during ChartMogul to Nutshell migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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

Book a free 30 minute consultation

Most migrations land between two and four weeks. Accounts under 5,000 ChartMogul customers with a single billing source and no complex custom attribute sets complete in two to three weeks. Migrations with multiple billing sources (Stripe plus Chargebee, for example), large invoice histories, or extensive custom attribute schemas requiring extended field mapping move to four to six weeks. The discovery and sandbox phases add one to two weeks before migration begins, so the full project from kickoff to cutover is typically four to eight weeks.

Adjacent paths

Related migrations to explore

Ready when you are

Move from ChartMogul.
Land in Nutshell, 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