Deals
Use the Deals grain for pipeline amounts, stages and deal-level counts. Do not turn CRM deal amount into accounting revenue without a defined business rule.
HubSpot to Power BI in 2026
Prepare authorised HubSpot companies, contacts, deals and supported activities as separate local reporting grains, then build the Power BI model without multiplying pipeline values through activity joins.
Reviewed and updated 5 September 2026
Authorise the HubSpot portal in Datplan, run the supported source pull, export the prepared Companies, Contacts, Deals and supported Activity tables to a stable folder, then connect Power BI to those files. Keep pipeline value measures on the Deals grain and activity measures on the Activity grain.
Choose the route that fits the job
Current competing approaches commonly use a hosted warehouse or live service. Datplan is intentionally a local file-based alternative.
| Route | Useful when | What you take responsibility for |
|---|---|---|
| Manual export | The report is occasional and the dataset is small | Repeat exports, cleanup and consistency between reporting periods. |
| Hosted connector/warehouse | Many users need a continuously available shared data layer | Vendor service dependency, hosted processing and subscription design. |
| Custom HubSpot API | An engineering team needs bespoke objects and transformations | OAuth, pagination, associations, scopes, schema changes and monitoring. |
| Datplan local files | A Windows reporting workflow needs repeatable local preparation and stable Power BI inputs | The Power BI semantic model and any later Power BI Service access route. |
The error to avoid
A flat join can repeat a deal amount once for every related activity. The data can be technically joined and still make the pipeline total wrong.
| Deal | Activity | Deal amount |
|---|---|---|
| Deal A | Call | £10,000 |
| Deal A | Meeting | £10,000 |
| Deal A | Call | £10,000 |
Naive SUM: £30,000.
Keep one Deals fact for pipeline value and a separate Activities fact for calls, meetings and other supported activity measures. Relate each through suitable dimensions or association structures rather than repeating the deal amount on every activity row.
Pipeline value: £10,000. Activity count: 3.
See the worked modelling guide →A visible refresh chain
Use the Deals grain for pipeline amounts, stages and deal-level counts. Do not turn CRM deal amount into accounting revenue without a defined business rule.
Use supported activity facts for work volume or duration. Activity availability depends on the authorised HubSpot scope and supported Datplan source configuration.
Use entity tables for descriptive context and grouping. Many-to-many associations need deliberate modelling rather than an unrestricted flat join.
Associations and permissions
CRM systems contain legitimate one-to-many and many-to-many relationships. A contact can relate to more than one company; a deal can have several activities; ownership and pipeline context can change. Model only the relationships needed by the reporting question and test row counts after each one.
Object availability also depends on the authorised HubSpot account, scopes and the supported Datplan source configuration. If a source request is unauthorised, that is a permission or coverage issue to resolve—not evidence that the business had zero activity.
Pipeline value, closed-won amount and sales activity are useful CRM measures, but they are not automatically recognised accounting revenue. Joining HubSpot to Xero or QuickBooks can be valuable later, but the matching key, timing rule and revenue definition must be explicit and independently validated.
The Windows app is free to download and includes Datplan Demo data, so you can test sync, dashboards, reporting grains and exports first.