The first Monday after go-live is when most teams find out whether a CRM migration worked. The data is in. The pipeline looks right. Then the sales leader opens the forecast and the number is different from last week's, and nobody can say why. Reports are rarely part of the data migration plan, yet they are what leadership uses to judge it.
This guide explains how to rebuild CRM reports in HubSpot after a migration: why reports need attention, how to audit what you have, how to map source fields to HubSpot properties, how to rebuild sales dashboards and pipeline reports, how to validate filters and historical comparisons, and the issues that most often cause totals to change.
Reports do not migrate. They are definitions built on top of data: which records to include, which fields to group by, which dates to filter on and how to calculate the result. None of that moves when records are exported from one CRM and imported into another. Each report has to be rebuilt in HubSpot's own reporting tools.
Rebuilding is also not the same as recreating. A report in Salesforce, Dynamics 365 or Zoho CRM depends on that system's objects, fields and logic. HubSpot uses a different data model, so a report that counted "Opportunities in Stage 3 with Probability above 50%" needs to be translated into HubSpot deal stages, properties and filters. If the translation is loose, the numbers drift.
Three things make CRM reporting migration harder than it first looks:
Planning for reports before go-live avoids a week of confused leadership meetings afterwards.
Start with what people actually use, not with everything that exists. Most CRMs accumulate hundreds of reports, and many have not been opened in months.
Ask each team lead for the reports and dashboards they review weekly, the ones that go to leadership or the board, and any that feed other systems or spreadsheets. Then pull usage data from the source CRM where available, and list every report that has been run recently.
For each report you keep, write a short definition:
The last item is easy to skip and expensive to miss. Without a saved baseline, there is no way to prove the rebuilt report is correct.
|
Example report |
Metric |
Key date |
Audience |
Decision |
|---|---|---|---|---|
|
Weekly pipeline by stage |
Sum of amount, open deals |
Close date this quarter |
Sales leadership |
Rebuild |
|
New business won by rep |
Sum of amount, closed won |
Close date this month |
Sales managers |
Rebuild |
|
Lead source conversion |
Count of contacts to deals |
Create date |
Marketing |
Rebuild |
|
Average sales cycle |
Days from create to close |
Close date |
Sales operations |
Rebuild with care |
|
2021 territory split |
Sum of amount by region |
Close date 2021 |
Nobody |
Retire |
Turn the definitions into a short metrics glossary that sales, marketing and finance all agree on. A single page that states what counts as pipeline, what counts as a new customer and which date decides the month a deal belongs to will settle more arguments after go-live than any dashboard. It also gives the person rebuilding reports in HubSpot a clear specification to work from.
The rows above are examples to show the shape of the audit, not data from a real account.
Reports depend on fields. Before rebuilding anything, confirm that every field a report uses has a HubSpot property, and that the values mean the same thing.
Use the field mapping from the data migration as the starting point, then check each report's fields against it:
Pay special attention to calculated fields. A source CRM formula field becomes either a HubSpot calculation property or a static value imported at migration time. A static value will not update, so any report that relies on it will drift as records change.
Marketing reports need the same care as sales reports. Reports on lead source, campaign influence and conversion rates often depend on lifecycle stage and on the dates contacts reached each stage. Map the source CRM's lead status and lead stage fields to HubSpot's lifecycle stage and lead status properties explicitly, and agree how imported contacts should be staged. A contact imported as a customer with no history will count as a new customer on the import date unless the original dates are stored somewhere reports can use.
Historical stage data needs its own decision. HubSpot's stage calculated properties, such as date entered and time in stage, are described by HubSpot as read-only properties that update automatically based on movement through a pipeline. Because they are driven by movement inside HubSpot, they cannot show stage changes that happened in the old CRM. If reports need historical stage dates, import them into custom date properties and build those reports on the custom properties.
With definitions and properties in place, rebuild in HubSpot's tools. HubSpot dashboard setup usually combines three types of report:
|
Source report |
HubSpot approach |
Watch for |
|---|---|---|
|
Pipeline by stage |
Custom report on deals grouped by deal stage |
Stage mapping and close date filter |
|
Weighted pipeline |
Weighted pipeline forecast report |
Deal probability per stage |
|
Closed won by rep |
Custom report filtered to closed won |
Close date on imported deals |
|
Sales cycle length |
Deal velocity or custom report |
Create date on imported deals |
|
Stage conversion |
Deal funnel report |
Stage history starts at import |
|
Activity by rep |
Completed activities report |
Activities imported with original dates |
Organize dashboards by audience rather than by report type. A sales leadership dashboard, a manager dashboard and a rep dashboard each answer different questions. HubSpot lets you filter a whole dashboard by date range, owner, team or pipeline, which reduces the number of separate reports you need.
Build in a sensible order. Start with the one or two dashboards leadership reviews every week, validate them, and share them before go-live so leaders see familiar numbers on day one. Then rebuild manager and rep dashboards, and finally the long tail of occasional reports. Resist recreating every legacy report: if nobody can name its audience, leave it out and see whether anyone asks for it.
Dashboards are easier to get right when they are planned with the migration rather than after it. Our support for HubSpot reporting and dashboards is part of the migration work, so the reports leadership relies on are rebuilt and checked before go-live.
Set permissions as you build. HubSpot dashboards can be private to their owner or shared with everyone, and HubSpot notes that sharing with specific users and teams is an Enterprise feature. HubSpot also limits the number of reports per dashboard by subscription, so plan larger dashboards accordingly.
Validation proves that each rebuilt report gives the same answer as the source. Compare against the baseline values saved during the audit, for the same period and the same filters.
|
Check |
How to run it |
Pass condition |
|---|---|---|
|
Record totals |
Count of deals, contacts and companies in both systems |
Totals match, minus exclusions agreed in advance |
|
Pipeline value |
Sum of open deal amount by stage |
Matches the source baseline |
|
Closed won |
Sum of closed won amount by month for the last 12 months |
Matches by month |
|
Owner splits |
Totals per owner |
Match per owner |
|
Date filters |
Same report with "this quarter" and with fixed dates |
Same result in both |
|
Currency |
Amounts in company currency |
Match after conversion |
|
Time zone |
Reports at month boundaries |
Deals fall in the same month |
When a total does not match, investigate in order: filters first, then field mapping, then the data itself. Most differences come from a filter that was interpreted differently, not from missing data. HubSpot notes that date filters use the account time zone and that its weeks run Monday to Sunday, which can move records across boundaries if the source system used a different setting.
Run the old and new reports side by side for at least one full reporting cycle if you can, such as a month or a quarter close. Keep the source CRM in read-only mode during that period so the baseline does not move. Each week, compare the headline numbers and record any gap. A parallel run catches problems that a single comparison misses, such as a workflow that changes a property after import or a filter that only matters at quarter end.
Keep a log of every difference and its explanation. Leadership will accept a change in a number if they understand the reason. They will not accept a number that changed without one.
HubSpot reports refresh with new data every two hours, according to HubSpot, so allow for that before rechecking a total after a correction.
The same issues cause most sales reporting migration problems:
Most of these issues are cheaper to prevent than to fix. Add a reporting check to the migration test plan, so a sample import is validated against a handful of key reports before the full import runs. A problem found on a few hundred test records takes minutes to correct. The same problem found on the full dataset after go-live can take days, and it costs trust in the new system.
If you want help with the reporting side of a migration as well as the data, OneMetric's HubSpot CRM migration services include report audits, rebuilds and validation against your source baseline. To talk through your own CRM analytics migration, get in touch with OneMetric.