The dashboard is an hour behind.

Both reports count each opportunity once. I export them at 10:00 UTC, but the dashboard last refreshed its data at 09:00. Opening it at ten does not give it the latest CRM changes. It also has a Team A filter that the CRM list does not.

DefinitionCRM listDashboard
Entity countedDistinct opportunity IDDistinct opportunity ID
Eligible statusActive opportunityActive opportunity
Team scopeAll teamsTeam A only
Data snapshot10:00 UTC09:00 UTC
Date rangeNo additional date filterNo additional date filter
Visible total1210

Find the missing opportunity IDs.

  1. 01

    Save both views

    Record the report, capture time, data freshness, active filters and intended user view. For dated metrics, include the date field, timezone and cutoff. Use authorised exports or report detail; keep customer information in the approved workspace.

  2. 02

    Check what a row represents

    Use the opportunity ID rather than a name that can be shared or changed. Check whether one row represents an opportunity, an activity or an association. Keep missing IDs unresolved instead of treating all blank identifiers as one matched record.

  3. 03

    Find records present on only one side

    Compare CRM IDs against dashboard IDs, then dashboard IDs against CRM IDs. A comparison in only one direction can miss records included solely by the other report. Retain repeated rows separately while investigating what caused them.

  4. 04

    Look at the records that differ

    Check the record against the actual filter and snapshot. If you cannot establish its earlier state, mark the cause unconfirmed. A current status alone does not prove what the status was when the dashboard last refreshed.

Try the two changes separately.

Include Team B, then refresh the example data. Watch which opportunity appears after each change. You can also compare two reports that both show ten, or count three activities belonging to one opportunity.

Find the two missing opportunities

Fictional example. These controls change the example only; they do not connect to a CRM.

CRM

12

Dashboard

10

Choose an example

Start with Team A and data saved at 09:00. Try each change and watch the count.

Dashboard data as of 09:00 UTC

2 opportunities are missing from the dashboard

O-011 became active at 09:30, after the saved data. O-012 belongs to Team B, which the dashboard excludes.

See all records in both reports

CRM list

12 opportunities

Dashboard

10 opportunities

Fictional reconciliation

Two records explain this difference.

The CRM contains O-001 through O-012. The dashboard contains O-001 through O-010. That leaves O-011 and O-012 to check. The record history shows when O-011 became active, and the saved dashboard filter explains why O-012 is excluded.

OpportunityEvidenceWhy it differs
O-001–O-010Present in both viewsTen shared opportunities
O-011Became active at 09:30; dashboard snapshot is 09:00The dashboard snapshot predates the stage change
O-012Active and owned by Team B; dashboard filter selects Team AThe reports have different team scopes

The meeting needs a number for the whole team.

Those two records account for the gap: twelve minus two is ten. There are no extra opportunities on the dashboard side. For a meeting covering all teams, I would ask the report owner to include Team B and refresh the data. If the dashboard is meant to show Team A at 09:00, its count is correct for that purpose. The CRM comparison needs the same team and time.

Three rows may still mean one opportunity.

O-001 has three related activities. A detail report can show O-001 three times because each activity occupies a row. There is still only one opportunity.

HubSpot documents that multi-source reports can count records more than once through associations. It also explains that changing the primary source changes which records appear. Check what the report counts before deleting repeated rows.

Opportunity IDActivity ID
O-001A-101
O-001A-102
O-001A-103

Opening the underlying report can change the view.

In HubSpot, dashboard filters interact with the report filters. Some matching filters are overridden; complex combinations can add conditions instead. Filters also depend on the report data source and type. Its individual view-and-filter action does not apply dashboard-level filters.

You can therefore open a report to investigate a dashboard total and find yourself looking at a different set of records. Save the filters from both views. These are HubSpot’s rules; check the equivalent behaviour in the tool you use.

When filters and refresh time do not explain it.

The next check depends on what differs. If both reports contain the same opportunity IDs but show different values, look at their calculations and saved data. Microsoft’s Power BI guidance also covers relationships between tables and access restrictions. The CRM records can be correct while the report still gives the wrong result.

FindingWhat to checkWho can help
A record is absent from one viewInspect its filter values, snapshot and intended access scopeReport owner
One ID occupies several rowsInspect associations and the entity the measure countsReport modeller
The same IDs have different displayed valuesCompare snapshot values and calculation logicReport and source-field owners
A source field is missing or invalidTrace the field to intake or the update that changed itSource-field owner
The evidence does not establish a causeKeep the discrepancy open with the missing evidence namedAssigned investigation owner

Matching totals can hide different opportunities.

In a second fictional example, both reports show ten. Nine IDs match, but the CRM includes O-010 while the dashboard includes O-013. Both counts are ten, but they describe different opportunities. If you are comparing pipeline value, check the amounts on the shared records as well.

MembershipCRMDashboard
Shared IDsO-001–O-009O-001–O-009
Present on one side onlyO-010O-013
Distinct total1010

Save the explanation with the report.

A note saying “fixed the total” will not help when the difference appears again. Keep the two missing IDs and the reason for each alongside the report. If you cannot explain a record yet, say what remains to be checked. Differences caused by access permissions need review by the owner.

RecordWhat to keep
ComparisonReports, entity/ID, filters, date boundaries, user view and data timestamps
DifferenceIDs present only on each side; repeated rows and same-ID value differences
ExplanationWhat explains each record, and what you have not confirmed
DecisionWhich teams and time the meeting needs the report to cover
Follow-throughWho will check or change the report, and how you will check it afterwards