CRM migration
Field-level mapping, validation, and rollback between ChartMogul and Nutshell. We move data and schema; workflows are rebuilt natively in Nutshell.
ChartMogul
Source
Nutshell
Destination
Compatibility
5 of 10
objects map 1:1 between ChartMogul and Nutshell.
Complexity
CModerate
Timeline
2-4 weeks
Overview
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.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
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)
Nutshell
Company and Person
1:manyChartMogul'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)
Nutshell
Company custom fields
1:1ChartMogul'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
Nutshell
Company custom fields
lossyChartMogul 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
Nutshell
Custom field configuration
lossyChartMogul 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
Nutshell
Person or Company custom fields
lossyChartMogul 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
Nutshell
Company custom fields
1:1ChartMogul 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
Nutshell
Tag
1:1ChartMogul 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
Nutshell
Company or Person custom fields
lossyChartMogul 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
Nutshell
Opportunity
1:1ChartMogul 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
Nutshell
Note
1:1ChartMogul 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.
| ChartMogul | Nutshell | Compatibility | |
|---|---|---|---|
| Customer (parent object) | Company and Person1:many | Fully supported | |
| Data Source Customer (child object) | Company custom fields1:1 | Fully supported | |
| Subscription | Company custom fieldslossy | Fully supported | |
| Plan | Custom field configurationlossy | Fully supported | |
| Invoice | Person or Company custom fieldslossy | Fully supported | |
| Transaction | Company custom fields1:1 | Fully supported | |
| Tag | Tag1:1 | Fully supported | |
| Custom Attributes | Company or Person custom fieldslossy | Fully supported | |
| Opportunity | Opportunity1:1 | Fully supported | |
| Note and Call Log | Note1:1 | Fully supported |
Gotchas + challenges
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 gotchas
Customer vs. data source customer split requires dual-object migration
40 req/s API rate limit restricts bulk migration throughput
Transaction fee handling setting causes silent MRR discrepancies
Historical cohort data cannot be backdated after initial import
Nutshell gotchas
Contact tier limits enforced on import
No bulk API endpoint requires paginated extraction
Email sequences not exportable via API
Foundation plan disables key sales features
Pair-specific challenges
Migration approach
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.
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.
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.
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.
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.
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
ChartMogul
Source
Strengths
Weaknesses
Nutshell
Destination
Strengths
Weaknesses
Complexity grading
Moderate CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across ChartMogul and Nutshell.
Object compatibility
1 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
ChartMogul: 40 requests per second primary limit, plus compute time per minute per account and max 20 parallel connections.
Data volume sensitivity
ChartMogul doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during ChartMogul to Nutshell migration scoping. Not seeing yours? Book a call.
Walk through your ChartMogul to Nutshell migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave ChartMogul
Other ways to arrive at Nutshell
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.