Table of contents

Show all table of contents

TL;DR

  • Audit your reports first: Identify the revenue, pipeline, and attribution metrics leadership relies on before changing systems.
  • Separate current values from historical events: A deal's current stage is not the same as its complete stage history.
  • Preserve source data: Retain original record IDs, timestamps, deal values, source fields, and relevant campaign information.
  • Define a historical data strategy: Decide what will be migrated as native CRM data, stored in custom properties, or retained in a reporting archive.
  • Document metric definitions: Make sure revenue, pipeline, conversion, and attribution calculations mean the same thing before and after migration.
  • Protect attribution context: Preserve original source and UTM values where available, while recognizing that historical touchpoint data may require a separate approach.
  • Validate before go-live: Reconcile record counts, revenue totals, pipeline snapshots, and attribution reports against the source system.

The objective is not just to move CRM data into HubSpot. It is to preserve the historical context your business needs to make reliable decisions.

At a glance

A CRM migration is often treated as a data transfer project. Export the records, map the fields, import everything into the new platform, and get the team back to work.

But for revenue teams, the real challenge is not simply moving customer and deal records. It is preserving the historical context behind those records.

Which deals were created in a particular quarter? How much pipeline did the sales team have at the end of last month? What was the original source of a lead that eventually became a customer? How has the conversion rate changed over time?

These questions depend on more than the current values stored in your CRM. They rely on historical snapshots, deal stage changes, timestamps, campaign interactions, attribution fields, and consistent reporting definitions.

During a HubSpot CRM migration, this context can be lost or become difficult to access if the migration focuses only on the latest state of each record.

For example, importing a deal with its current stage and amount does not necessarily preserve every stage it passed through, when those changes occurred, or how its value changed over time. Similarly, migrating a contact's latest source property may not recreate the original marketing touchpoints that influenced the conversion.

The result can be a CRM that looks complete but produces reports that no longer match the business's historical performance.

This guide explains how to preserve revenue reporting, pipeline history, and attribution during a HubSpot migration and how to validate that your historical data remains useful after the transition

 

Why historical revenue data gets lost during CRM migration

Historical reporting issues often begin when a migration is designed around records rather than the events and relationships behind those records.

A CRM may show the current value of a deal, its present stage, and the contact associated with it. But revenue reporting often depends on how those values changed over time.

There are several common reasons this information gets lost or becomes difficult to reproduce.

1. Only the latest record values are migrated

A standard CRM export may contain the current value of a field without providing a complete history of every change.

Consider a deal that moved through the following stages:

  • Qualification
  • Discovery
  • Proposal
  • Negotiation
  • Closed Won

If the migration transfers only the current stage, HubSpot may show the deal as Closed Won without providing the complete sequence of earlier stages.

The same issue applies to deal amount, close date, forecast category, owner, and other fields that may change during the sales process.

The key distinction: A record export represents a point-in-time view of data. Historical reporting may require a record of how that data evolved.

2. Historical reports depend on definitions that change

Revenue metrics are not always calculated in the same way across systems.

For example, one CRM report may define monthly revenue using the deal's close date, while another uses a contract start date or a separate revenue-recognition date.

Similarly, pipeline reports may include only open deals, or they may use a historical snapshot of all deals that were open at a particular point in time.

If these definitions are not documented before migration, reports created in HubSpot may produce different numbers even when the underlying records have been migrated correctly.

3. Deal stage history is not the same as current deal stage

A deal's current stage tells you where the opportunity stands now. Its stage history tells you how it progressed through the pipeline.

Historical pipeline analysis may depend on:

  • When the deal entered each stage
  • How long it remained in each stage
  • Whether it moved backward
  • When it was marked Closed Won or Closed Lost
  • How its amount changed during the sales cycle

If these events are not available after migration, metrics such as historical stage conversion and sales-cycle duration may be difficult to reproduce accurately.

4. Attribution fields lose their original context

Marketing attribution can be especially vulnerable during a CRM migration.

A contact might currently have a source value such as “Organic Search,” but the business may also need to know the original campaign, landing page, UTM parameters, or sequence of interactions that preceded conversion.

If only the latest source field is imported, the original acquisition context may be overwritten or omitted.

Historical attribution may also depend on tracking data held outside the CRM, including analytics platforms, marketing automation tools, and campaign systems.

5. Data relationships are not preserved

Revenue and attribution reporting often depend on relationships between contacts, companies, deals, campaigns, and activities.

If these relationships are missing or mapped incorrectly, the records may still exist in HubSpot, but reports that rely on their associations can become incomplete.

For example, a deal may be imported without its original contact association. The deal amount is preserved, but a report analyzing revenue by lead source may no longer connect that revenue to the correct contact or campaign data.

What revenue data should you preserve before migrating to HubSpot?

Before exporting data, create an inventory of the historical information your business needs to retain.

Not every field requires the same migration method. Some data can be represented in standard CRM properties, while other information may need a custom structure, an import process designed for historical records, or a separate reporting archive.

Use the following categories as a starting point.

Data category

What to preserve

Why it matters

Deal records

Deal ID, name, amount, currency, stage, owner, close date

Supports deal-level reporting and reconciliation

Pipeline history

Stage changes, timestamps, amount changes, status changes

Supports historical pipeline analysis

Revenue data

Closed-won deals, revenue dates, values, relevant classifications

Supports revenue trends and period-based reporting

Forecast data

Historical forecast values, categories, snapshots, where available

Supports comparisons between forecasts and outcomes

Contact and company data

IDs, ownership, lifecycle fields, associations

Connects revenue to the right customer records

Attribution data

Original source, latest source, campaign fields, UTMs, landing pages

Supports acquisition and conversion analysis

Marketing interactions

Relevant campaign memberships and available touchpoint records

Provides context for attribution and engagement

Reporting definitions

Filters, date fields, stage rules, formulas, exclusions

Keeps metric calculations consistent

Preserve the original record identifiers

Keep the original CRM record ID for each migrated record wherever practical.

A legacy ID gives you a reference point between the old and new systems. It can help identify whether a record was migrated, investigate discrepancies, and connect historical exports or reporting tables to the corresponding HubSpot record.

Avoid using names alone as identifiers. Deal names, company names, and email addresses can change or be shared.

Preserve the dates behind the numbers

Dates are essential to historical reporting.

For each important date field, document what it represents and whether it is a current value or a historical event.

Examples include:

  • Deal creation date
  • Date a deal entered a particular stage
  • Close date
  • Contract start date
  • Revenue recognition date
  • Original conversion date
  • Campaign interaction date

Do not treat these dates as interchangeable. A report grouped by close date may tell a different story from one grouped by contract start date.

Preserve currency and amount conventions

If your business works across multiple currencies, document how deal amounts were stored and reported in the source system.

Determine whether values represent original transaction currency, converted reporting currency, or another financial measure.

Also establish how historical exchange rates were handled. Recalculating historical values using current exchange rates can change past revenue totals, even when no CRM records have been lost.

Practical recommendation: Create a data preservation inventory before starting the migration. It should identify each required data point, its source, its destination, and how it will be validated.

How to preserve pipeline history during a HubSpot migration

Pipeline history is one of the most important and most easily misunderstood parts of a CRM migration.

A current deal record does not necessarily contain enough information to recreate historical pipeline reports. To preserve the story behind the pipeline, you need to understand which historical events and snapshots are available in your source system.

1. Export deal records and stage-change history separately

Start by exporting the deal records required for the migration.

Then determine how your existing CRM stores historical changes. Depending on the platform and configuration, stage changes may be available through field-history records, audit logs, activity records, reporting snapshots, or another data source.

Capture the available information for each relevant deal, including:

  • Original deal ID
  • Previous stage and new stage
  • Timestamp of the change
  • Deal amount at the relevant point in time, if available
  • Owner at the time, if available
  • Close-date changes, where relevant

Do not assume that a standard deal export contains all these details. Confirm the available history in your source system before designing the migration.

2. Decide how historical stage changes will be represented

There are several possible approaches, depending on your reporting needs and the capabilities available in your HubSpot setup.

Option A: Use native historical data where supported

If the relevant historical events can be migrated into a supported HubSpot structure, this may allow teams to access them alongside their current CRM records.

Validate the exact capabilities and import requirements before relying on this approach.

Option B: Store historical events in a separate structured dataset

For more complex histories, maintain a structured table containing deal IDs, stage changes, timestamps, and other relevant values.

The dataset can be used for historical analysis while HubSpot serves as the primary operational CRM.

This approach can be useful when the business needs detailed historical reporting that is not practical to recreate entirely within the CRM.

Option C: Preserve point-in-time pipeline snapshots

If the source system contains historical pipeline snapshots, preserve them with their snapshot dates and calculation rules.

A snapshot records the pipeline as it appeared at a particular time. It is different from a list of stage changes, and both may be needed for a complete historical view.

3. Preserve the meaning of each pipeline stage

Pipeline stages often change during CRM redesigns. For example, a source system may have stages called “Initial Review,” “Solution Fit,” and “Commercial Review,” while the new HubSpot pipeline uses different stage names.

Map stages based on their business meaning rather than their labels alone.

Document:

  • The source stage
  • The destination stage, if a direct mapping exists
  • Whether the stage is active, closed won, or closed lost
  • Any changes to qualification criteria
  • The effective date of the new definition

If the sales process has changed, historical reports should make that distinction clear rather than implying that the old and new stages are perfectly equivalent.

4. Preserve stage timestamps and deal age

Stage timestamps help answer questions such as:

  • How long did deals remain in discovery?
  • How many opportunities reached proposal?
  • How long did it take to close a deal?
  • Where did opportunities commonly stall?

If historical timestamps are available, retain them in a form that supports analysis.

If they are not available, document the limitation. Do not reconstruct exact historical stage dates from the current deal record unless you have a reliable source for those dates.

5. Keep historical pipeline reporting separate from current pipeline reporting

A current pipeline report answers: “What opportunities are open now?” A historical pipeline report answers: “What did our pipeline look like at the end of a previous week, month, or quarter?”

These are different questions. If the original CRM stored snapshots, preserve them. If it did not, determine whether historical stage events and deal changes are sufficient to reconstruct the required view.

Where reconstruction is not possible, retain the original reports or snapshots as a reference and clearly document the limitation.

How to preserve revenue reporting in HubSpot

Revenue reporting can become inconsistent after migration when date fields, deal stages, amounts, or report definitions change.

The best way to prevent this is to define the metrics before moving the data.

1. Document every business-critical revenue report

Start with the reports used by leadership, sales managers, finance, and revenue operations.

For each report, capture:

  • Report name and purpose
  • Data source
  • Date field used
  • Included deal stages
  • Filters and exclusions
  • Currency treatment
  • Grouping and aggregation
  • Reporting period
  • Owner responsible for the metric

For example, a “Monthly Closed-Won Revenue” report might use the deal close date, include only Closed Won deals, and sum the deal amount.

That definition should be written down—not left to interpretation during the migration.

2. Distinguish deal value from recognized revenue

A CRM deal amount is not automatically the same as accounting revenue. A deal may represent a total contract value, annual recurring revenue, monthly recurring revenue, or a one-time transaction. Finance may recognize revenue over a different period from the date the deal closes.

Before migration, identify the financial measure represented by each amount field. If your organization needs recognized revenue reporting, confirm where that data is maintained and how it should connect to HubSpot.

Do not assume that importing deal amounts alone will recreate finance-approved revenue reports.

3. Preserve historical close dates and amounts

Close dates and deal amounts can change over time.

For example, an opportunity may have been expected to close in March but ultimately closed in April. Its amount may also have changed during negotiations.

If your historical reporting depends on these changes, preserve the available history rather than retaining only the final values. At minimum, preserve the final deal amount and close date for the agreed reporting scope. For more detailed analysis, retain historical changes or snapshots where available.

4. Recreate reports using documented definitions

Once the data is in HubSpot, rebuild the reports using the agreed metric definitions.

Check that:

  • The correct date field is used.
  • Closed-won and open deals are treated appropriately.
  • Amount fields represent the intended financial measure.
  • Currency conversions follow the agreed convention.
  • Historical records are not unintentionally excluded.
  • The reporting period matches the original report.

If the new CRM uses a different definition, label the report accordingly and explain the change.

5. Keep a baseline of pre-migration results

Before migration, export or record the results of critical reports for specific periods. For example, retain monthly closed-won totals for the previous four quarters, along with the underlying deal records where possible.

These results provide a baseline for reconciliation. A baseline is particularly useful when the migration changes report structures, pipeline definitions, or the way data is associated across records.

What happens to attribution data during a CRM migration?

Attribution is more complicated than transferring a single source field.

A B2B customer journey may involve multiple interactions across search, paid campaigns, webinars, email, partner referrals, events, and sales outreach. Different systems may capture different parts of that journey.

A CRM migration can preserve some of this information, but it will not automatically recreate tracking data that was never stored in the source system or that remains in another platform.

Original source and latest source serve different purposes

A contact's original source describes how the contact was first acquired or recorded, according to the source system's tracking rules. A latest source field reflects a more recent source interaction or update, depending on the platform's definitions.

These fields answer different questions. If the migration overwrites the original source with the latest value, the business may lose an important part of its acquisition history.

Preserve original and latest source information separately where both are available and useful.

Preserve UTM parameters

UTM parameters help identify the campaigns and links associated with website traffic.

Common parameters include:

  • utm_source
  • utm_medium
  • utm_campaign
  • utm_content
  • utm_term

If these values are stored in your source CRM or another data source, determine which ones should be retained and where they should live in HubSpot.

Keep the original values intact when they are needed for historical analysis. If the source system contains normalized campaign names or transformed values, preserve the raw values as well where practical.

Importing UTM fields into HubSpot does not, by itself, recreate the original web analytics session or all of the tracking context behind that visit.

Preserve campaign and conversion context

Identify the campaign and conversion data that the business needs after migration.

This may include:

  • Campaign names and IDs
  • Original landing page
  • Form submission date
  • Lead creation date
  • Conversion event
  • Campaign membership
  • Relevant email or webinar engagement
  • Associated contact and deal IDs

Some information may be held in the CRM, while other data may reside in marketing automation or analytics platforms.

Map the relevant sources before deciding what to migrate.

Understand the difference between historical attribution and future attribution

Historical attribution uses information collected before the migration. Future attribution depends on tracking and data collection after HubSpot is live. These should be treated as separate workstreams.

For historical reporting, preserve the available source data, timestamps, campaign identifiers, and documented attribution rules. For future reporting, verify that HubSpot tracking, forms, campaign configuration, integrations, and consent settings are correctly implemented.

Do not assume that installing new tracking automatically recreates the historical customer journey.

Document changes to attribution methodology

Attribution models may differ between systems. One platform may report first-touch attribution, while another uses last-touch, multi-touch, or a different set of rules. Even when the underlying campaign data is preserved, the resulting numbers may differ.

Document the attribution model, reporting window, conversion event, and any exclusions used in the old and new systems.

This allows teams to distinguish between a real change in marketing performance and a change caused by the reporting methodology.

How to migrate historical data without breaking reporting

A reliable migration needs a plan for the data itself and for the reports that depend on it.

Use the following sequence to reduce the risk of broken dashboards and inconsistent metrics.

Step 1: Establish a historical data inventory

List the reports and historical datasets that must remain available after migration.

Classify each item as:

  • Required in HubSpot for daily operations
  • Required in HubSpot for reporting
  • Better retained in a separate reporting dataset
  • Required only for reference or compliance
  • No longer needed

This helps avoid trying to force every historical data point into the same CRM structure.

Step 2: Define the destination for each dataset

For each category, document where it will live after migration.

For example, current deal records may belong in HubSpot, while historical pipeline snapshots may remain in a structured warehouse or reporting table.

The key is to ensure that users know where to find the information and which system is authoritative for each metric.

Step 3: Preserve source identifiers and timestamps

Retain stable IDs and the dates associated with historical events. Use consistent identifiers to connect historical datasets to the corresponding HubSpot records.

If the migration requires new IDs, maintain a cross-reference table between the source and destination records.

Step 4: Run a test migration and validate the reporting logic

Use a representative sample of deals, contacts, companies, campaign data, and historical events. Validate the data and then run the reports that depend on it.

A record-level check is not enough. The migration should also be tested at the aggregate level to determine whether the numbers used by the business still reconcile.

Step 5: Plan the final data cutover

Decide when users will stop making changes in the old CRM and how late-arriving updates will be handled.

If the source system remains active during migration, determine how to capture new deals, changed amounts, updated close dates, and new attribution data.

Document the cutover time and the process for handling records created or modified around that point.

Step 6: Maintain a reporting archive where needed

Some historical reports may be difficult or impossible to recreate exactly in the new CRM. Retain the underlying datasets, exported reports, or snapshots required to support those analyses.

A reporting archive should have clear ownership, access controls, and documentation describing its data and calculation rules.

It should not become an undocumented second CRM. Its purpose is to preserve historical context that the operational system may not fully represent.

How to validate revenue, pipeline, and attribution after migration

Validation should test both the accuracy of individual records and the consistency of the resulting reports.

A migration can have the correct number of imported deals while still producing incorrect revenue totals because of a field-mapping issue, a missing association, or a different report filter.

1. Reconcile record counts

Compare the source and destination counts for each in-scope record type.

At a minimum, review:

  • Contacts
  • Companies
  • Deals
  • Custom records
  • Historical events or snapshots included in the migration

Account for intentional exclusions, duplicates, rejected records, and transformations.

The goal is not necessarily to make every count identical. It is to explain every difference.

2. Reconcile revenue totals by period

Compare historical revenue reports across matching periods.

For example, compare monthly closed-won totals for the same set of deals and the same close-date definition.

Investigate discrepancies caused by:

  • Missing deals
  • Incorrect deal amounts
  • Incorrect close dates
  • Currency conversion differences
  • Different stage definitions
  • Duplicate records
  • Changed report filters

If the new report intentionally uses a different definition, document that change rather than treating the difference as a data error.

3. Validate pipeline history

Select a sample of deals that changed stages multiple times. Compare the available source history with the information retained after migration.

Check whether the data supports the intended analysis, including stage progression, time in stage, historical pipeline value, and closed-won or closed-lost outcomes. If exact historical stage dates were not available in the source data, make that limitation explicit.

4. Validate attribution reports

Compare the key acquisition and attribution metrics used by the business. Check original source, latest source, UTM values, campaign associations, and the relevant conversion dates.

Ensure that the old and new reports use comparable attribution models and definitions. Where the historical data is incomplete, separate verified results from estimates or incomplete records.

5. Test the reports with business users

Ask the people who rely on the reports to review the migrated results. Sales leaders can validate pipeline and deal reporting. Marketing teams can validate source and campaign reporting. Finance or revenue operations can validate revenue definitions and period-based totals.

This review should happen before the new CRM becomes the sole source of truth for operational reporting. 

Need confidence in your numbers after a CRM move?

OneMetric can help define reporting requirements, map data, and validate the target HubSpot environment. 
Summarize and analyze this article with:

Frequently Asked Questions

Historical revenue-related data can often be migrated, but the exact approach depends on where the data is stored, how it is structured, and what reporting needs to be preserved.

Deal amounts, close dates, and related CRM fields may be migrated into HubSpot. Historical revenue snapshots, recognized revenue data, and complex financial calculations may require additional data structures or a separate reporting archive.

Define the revenue metric first, then identify the data required to reproduce it.

Attribution data may be preserved if it is included in the migration scope and available in the source systems.

Contact source fields, UTM parameters, campaign identifiers, and conversion dates should be reviewed separately. Some touchpoint information may exist outside the CRM, and a migration will not automatically recreate missing analytics or tracking history.

Preserve the available historical data and configure tracking correctly for future activity.

 

Attribution data may be preserved if it is included in the migration scope and available in the source systems.

Contact source fields, UTM parameters, campaign identifiers, and conversion dates should be reviewed separately. Some touchpoint information may exist outside the CRM, and a migration will not automatically recreate missing analytics or tracking history.

Preserve the available historical data and configure tracking correctly for future activity.

Identify where original source and UTM values are stored, then map them to appropriate HubSpot properties or another structured data destination.

Keep original source values distinct from latest source values where both are required. Preserve raw UTM values when they are important for historical analysis, and document any normalization or transformation rules.

Validate the imported values against the source data before relying on attribution reports.

The answer depends on the historical data available and the supported migration capabilities of your HubSpot setup.

A deal's current stage can be migrated as a property value, but its complete sequence of stage changes and timestamps may require separate handling.

Before migration, verify whether the source system exposes the required history and decide whether it will be stored in HubSpot or retained in a separate reporting dataset.

Relatable? We should definitely talk.

All that we’ll cover when we speak:

  • How to measure and multiply the ROI of your HubSpot investment
  • How can you integrate systems to eliminate data silos and make HubSpot the Single source of truth for your GTM teams
  • Your current GTM motions and future roadmap
  • Challenges that you face with your HubSpot
  • What would 'wins' look like for you
Book Meeting