Salesforce Dashboard Limitations & Workarounds
Overview
Native Salesforce dashboards have significant aggregation limitations that force teams to build external data pipelines just to display basic counts and summaries. This is a known platform constraint — Salesforce acquired Tableau and subsequently deprioritized improvements to their native dashboard tooling, steering customers toward Tableau for advanced reporting.
The practical result: simple operations like "count the items in this list" are not possible natively, requiring workarounds that add complexity and fragility.
The Core Limitation
Salesforce's native dashboards cannot perform basic aggregations on arbitrary report data — counting records in a filtered list being the most common example. Standard reports can display lists and some metrics (opens, clicks, scheduled sends), but computed counts or cross-object aggregations often fall outside what the native dashboard builder supports.
"There's no way to get this number in Salesforce. No way. Like, you can't do it. Like, all the reports and stuff, they just don't work."
— Mark Hope, 2026-03-04 sync
The Workaround: API → Orbit → Salesforce
When native dashboards fall short, the pattern that has emerged is:
- Export data from Salesforce via API to an external database (Orbit)
- Perform calculations in Orbit — counts, aggregations, custom metrics
- Push results back to Salesforce so they can be surfaced in a dashboard widget
This allows the final dashboard to display the computed number as if it were native, while the actual math happens outside Salesforce entirely.
Known Implementation Cost
- Requires maintaining an active API connection between Salesforce and Orbit
- Any schema changes in Salesforce may break the pipeline
- The calculated values in the dashboard are only as fresh as the last sync
- Debugging failures requires tracing across two systems
This pattern was implemented for the PaperTube account. See also the related Apex scripting workaround required to make Salesforce Account Engagement (Pardot) behave as expected for that same client.
Why This Happens
Salesforce's acquisition of Tableau created a product strategy misalignment: native dashboards stopped receiving meaningful investment, but Tableau licensing is a significant additional cost most mid-market clients won't absorb. The result is a capability gap that falls squarely on implementation teams to bridge.
Salesforce Account Engagement (formerly Pardot) is priced at approximately $12,000/year, which similarly pushes clients toward workarounds rather than native tooling. See [1] for the broader pattern.
Related Issues
- [2] — HubSpot clients face an analogous cost-avoidance problem, routing email through Orbit → SES rather than paying for HubSpot Marketing Professional
- [3] — Primary account where this Salesforce/Orbit workaround is active
- [1] — General pattern: cost avoidance on native tools creates fragile multi-tool automations
Recommendations
- Document the pipeline for each account using this pattern: what triggers the export, where Orbit stores the data, what the push-back automation looks like, and what the dashboard widget is reading. If something breaks, there is currently no map.
- Evaluate Tableau only if the client's reporting needs are complex enough to justify the cost — for most clients, the Orbit workaround is cheaper but requires ongoing maintenance ownership.
- Set expectations with clients that dashboard numbers may lag real-time Salesforce data by the sync interval.