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.
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:
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.
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.
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:
If these events are not available after migration, metrics such as historical stage conversion and sales-cycle duration may be difficult to reproduce accurately.
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.
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.
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 |
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.
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:
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.
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.
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.
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:
Do not assume that a standard deal export contains all these details. Confirm the available history in your source system before designing the migration.
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.
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:
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.
Stage timestamps help answer questions such as:
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.
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.
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.
Start with the reports used by leadership, sales managers, finance, and revenue operations.
For each report, capture:
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.
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.
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.
Once the data is in HubSpot, rebuild the reports using the agreed metric definitions.
Check that:
If the new CRM uses a different definition, label the report accordingly and explain the change.
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.
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.
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.
UTM parameters help identify the campaigns and links associated with website traffic.
Common parameters include:
utm_sourceutm_mediumutm_campaignutm_contentutm_termIf 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.
Identify the campaign and conversion data that the business needs after migration.
This may include:
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.
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.
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.
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.
List the reports and historical datasets that must remain available after migration.
Classify each item as:
This helps avoid trying to force every historical data point into the same CRM structure.
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.
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.
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.
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.
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.
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.
Compare the source and destination counts for each in-scope record type.
At a minimum, review:
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.
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:
If the new report intentionally uses a different definition, document that change rather than treating the difference as a data error.
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.
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.
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.