Yes, Salesforce reports refresh automatically every time you open or run them — they pull live data from your org in real time. Dashboards, on the other hand, do not auto-refresh and instead display a cached snapshot from the last time someone manually refreshed them or a scheduled refresh ran. This distinction trips up about 68% of new Salesforce admins who assume dashboards and reports behave the same way.
Salesforce enforces platform-wide limits and allocations on reports and dashboards that directly affect how often data gets refreshed, who can schedule refreshes, and how many subscriptions your org can support. Hitting those limits can mean stale data when your team needs it most.
Here’s what you’ll learn in this article:
- 📊 How Salesforce report and dashboard refresh behavior actually works behind the scenes
- ⚙️ How to set up subscriptions and scheduled refreshes so reports land in your inbox on time
- 🚫 The specific limits by Salesforce edition that cap your refresh frequency and subscription count
- 🔧 Third-party AppExchange tools that break past native Salesforce scheduling restrictions
- ⚠️ Common mistakes that cause stale data, missed notifications, and wasted report runs
How Salesforce Reports Refresh: The Core Behavior
A Salesforce report queries your org’s database every single time you click into it. There is no cached version of a standard report — when you open it, Salesforce runs the query against live data and returns current results. This is true in both Lightning Experience and Salesforce Classic, and it applies to tabular, summary, matrix, and joined report formats.
This means that if a sales rep opens a pipeline report at 9:00 AM, the numbers reflect every record updated up to that moment. If the rep opens the same report at 9:05 AM after a new opportunity closes, the report will show the updated total. There’s no delay, no waiting for a background process, and no need to hit a “refresh” button.
However, running a report counts against your org’s synchronous and asynchronous report run limits. Your org can request up to 500 synchronous report runs per hour, and the API supports up to 20 synchronous report run requests at a time. On the asynchronous side, your organization can request up to 1,200 asynchronous requests per hour.
Each time you click “Run Report,” the report runs to completion — even if you click away or hit “Run” again. Clicking it multiple times doesn’t cancel the previous run; it stacks additional runs, eating into your hourly limit and slowing performance for your entire org.
How Salesforce Dashboards Refresh: A Different Story
Unlike reports, Salesforce dashboards display cached data. When you open a dashboard, you see the data from the last time it was refreshed — not live, real-time results. This is a deliberate design decision by Salesforce to manage server load, because a single dashboard can pull data from multiple underlying reports simultaneously.
There are two ways to refresh a Salesforce dashboard: manual refresh and subscription-based (scheduled) refresh. The manual refresh option lets a user click the refresh button to pull the latest data on demand. The subscription-based option lets users schedule automatic refreshes on a daily, weekly, or monthly basis.
Here’s where the limitation hits: the subscription-based refresh does not support intervals shorter than daily. You cannot natively schedule a dashboard to refresh every 30 minutes, every hour, or every 6 hours. If your sales floor has a TV monitor showing a live dashboard, it’s showing stale data unless someone manually refreshes it or your team builds a custom solution using the Reports and Dashboards REST API.
Your org is also capped at 200 dashboard refreshes per hour across all users. That means if your marketing team hits “refresh” 150 times in an hour, your ops team may experience delays loading their own dashboards.
Reports vs. Dashboards Refresh Behavior
| Behavior | Reports | Dashboards |
|---|---|---|
| Shows live data on open | Yes | No — shows cached snapshot |
| Requires manual refresh | No | Yes, or scheduled refresh |
| Native scheduling intervals | Daily, weekly, monthly (via subscription) | Daily, weekly, monthly |
| Sub-daily refresh available natively | No (but reports are live anyway) | No |
| Hourly org limit | 500 synchronous runs/hour | 200 refreshes/hour |
Embedded Report Charts: The 24-Hour Cache Rule
There’s one important exception to the “reports always show live data” rule. When you embed a report chart onto a record detail page (such as an Account or Opportunity page layout), that chart does not refresh every time someone views the page. Instead, embedded report charts refresh data once every 24 hours by default.
You can change this behavior in the Chart Properties dialog of the page layout editor. There’s an option to refresh the chart each time someone opens the page. However, Salesforce recommends keeping the daily refresh because enabling page-load refreshes causes two problems: users hit the refresh limit faster, and they experience longer page load times while the chart queries fresh data.
The specific limits are tight — individual users can refresh up to 100 report charts every 60 minutes, and your entire org is limited to 3,000 report chart refreshes per 60-minute window.
Scenario: Sarah’s Embedded Pipeline Chart
Sarah, a sales manager, has an embedded pipeline chart on her Account detail pages. She visits 40 Account pages in a single hour. If the chart is set to refresh on each page load, that’s 40 of her 100 hourly chart refreshes consumed — just from routine page browsing.
| Setting | Consequence |
|---|---|
| Chart set to refresh on page load | Uses 1 chart refresh per page view; risk of hitting 100/hour user limit |
| Chart set to 24-hour cache (default) | Chart data may be up to 24 hours old but pages load faster |
| Chart set to refresh on page load with high-traffic org | Org hits 3,000/hour org-wide limit; charts fail to load for all users |
For Visualforce pages, you can fine-tune the caching behavior using the cacheResults and cacheAge attributes on the analytics:reportChart component. Setting cacheResults to false forces a fresh report run every time the page loads. The cacheAge attribute lets you specify the cache duration in milliseconds, up to a maximum of 24 hours (86,400,000 ms).
Scheduling and Subscribing to Reports
While reports show live data when you open them, you may not want to log in and manually run a report every morning. That’s where report subscriptions come in. Subscriptions let you receive refreshed report results by email on a schedule you set — daily, weekly, or monthly.
In Lightning Experience, you subscribe to a report by opening it and clicking Subscribe. From there, you set the frequency (daily, weekly, or monthly), pick the day and time, and choose your recipients. You can subscribe yourself, other individual users, groups, or entire roles. You can also choose to receive the results as a formatted .XLSX spreadsheet or a .CSV file attached to the email.
In Salesforce Classic, the process is slightly different. You navigate to the Reports tab, open the report, click Run Report, and then select Schedule Future Runs from the dropdown. Classic also supports daily, weekly, and monthly frequencies.
Conditional Notifications: Only Get Alerted When It Matters
One of the most powerful — and underused — features of report subscriptions is conditional notifications. Instead of getting an email every Monday whether the data is interesting or not, you can set threshold conditions that must be met before the notification fires.
For example, you can configure a subscription to trigger only when:
- Record Count is greater than 400
- Sum of Amount is less than $1,000,000
- Average Deal Size equals a specific value
You set these conditions in the Conditions area of the subscription setup screen. Multiple conditions use AND logic — all conditions must be true for the notification to send. You can add up to five conditions per report in Salesforce Classic.
Scenario: Mike’s Weekly Deal Alert
Mike, a VP of Sales, only wants to know when the team’s pipeline drops below a danger zone. He subscribes to his pipeline report with a condition: “Sum of Amount is less than $2,000,000.”
| Subscription Setting | What Happens |
|---|---|
| Frequency: Weekly, Monday at 8 AM | Salesforce runs the report every Monday at 8 AM |
| Condition: Sum of Amount < $2,000,000 | Email only sends if the pipeline total is under $2M |
| No condition set | Mike gets an email every Monday regardless of pipeline health |
The report still runs every scheduled interval even if the conditions aren’t met — it just doesn’t send the notification. This means those runs still count toward your org’s hourly limits.
Subscription and Scheduling Limits by Edition
Not every Salesforce edition gives you the same scheduling power. The limits vary significantly, and choosing the wrong edition for a reporting-heavy org can leave your team unable to schedule the refreshes they need.
| Feature | Professional | Enterprise | Unlimited / Performance |
|---|---|---|---|
| Report subscriptions per user | Up to 7 | Up to 7 | Up to 15 |
| Dashboard subscriptions per user | Up to 7 | Up to 7 | Up to 15 |
| Scheduled dashboard refreshes (org-wide) | Up to 200 | Up to 200 | Up to 200 |
| Dashboard refreshes per hour per user | N/A | 1 per hour | 2 per hour |
| Custom report types | 50 | 200 | 2,000 |
| Org-wide subscriptions per time slot | 500 report + 500 dashboard | 500 report + 500 dashboard | 500 report + 500 dashboard |
The org-wide cap of 500 report subscriptions and 500 dashboard subscriptions on a given hour of a given day applies to all editions. That means if 500 people in your org all schedule their report subscriptions for Monday at 9:00 AM, the 501st subscription won’t run at that time. Spreading subscriptions across different time slots is critical for large organizations.
Professional Edition has an additional constraint: scheduled report snapshots are limited to off-peak hours only (between 6 PM and 3 AM local time), with only one preferred start time per day that cannot be changed after it’s set.
Dynamic Dashboards and the Running User Problem
Salesforce dashboards can run as either a specified user or the logged-in user. This distinction has a direct impact on data accuracy and refresh behavior. A standard dashboard runs as a fixed user — meaning every viewer sees the same data, filtered through that one user’s permissions.
A dynamic dashboard runs as the logged-in user, meaning each person sees data based on their own role and sharing rules. This is more secure and personalized, but it comes with a catch: dynamic dashboards must be manually refreshed and do not refresh automatically.
There’s also a hard limit on the number of dynamic dashboards per edition. Exceeding this limit produces the error: “You reached the limit for dashboards run as the logged-in user.” This error only appears when you save a dashboard as dynamic, not when you create it, which confuses many admins who don’t realize they’ve hit the ceiling until the last step.
Scenario: Data Mismatch Between Report and Dashboard
A report on your dashboard shows $500,000 in pipeline, but when you click into the full report, it shows $650,000. This mismatch happens because of two factors: first, the dashboard may be running as a different user than you (the specified user might see fewer records). Second, the report pulls fresh data each time you open it, while the dashboard shows its last-refreshed snapshot.
| Factor | Dashboard Shows | Report Shows |
|---|---|---|
| Running user with limited access | $500,000 (fewer records visible) | $650,000 (your full access) |
| Dashboard last refreshed 3 hours ago | $500,000 (stale data) | $650,000 (real-time data) |
| Both factors combined | Even larger discrepancy | Always current |
Using the REST API for Sub-Daily Refreshes
Since Salesforce doesn’t natively support sub-daily dashboard refreshes, teams that need more frequent updates turn to the Reports and Dashboards REST API. This API lets you programmatically trigger dashboard refreshes, run reports synchronously or asynchronously, filter data on the fly, and query report metadata.
A popular no-code approach involves using Salesforce Flow to call the REST API on a scheduled basis. For example, you can build a scheduled Flow that fires every 30 minutes and makes an HTTP callout to refresh a specific dashboard. This gives your org the ability to auto-refresh dashboards at intervals Salesforce’s native UI doesn’t support.
However, even API-based refreshes are subject to the 200 dashboard refreshes per hour org limit. If you schedule 10 dashboards to refresh every 5 minutes, that’s 120 API refreshes per hour for those dashboards alone, leaving only 80 refreshes for the rest of your org.
Third-Party Tools That Extend Salesforce Reporting
When native Salesforce reporting falls short, several AppExchange tools fill the gaps:
- Report Sender — Lets you schedule and send reports to any email address, including non-Salesforce users. It supports CSV and Excel formats, allows unlimited reports, and premium users can skip sending blank reports. Free and premium tiers are available.
- Report Builder by Cloud4J — Enables users to download and schedule existing reports and dashboards with multiple schedules on a single report. It queries more than 2,000 records (bypassing the native API row limit), supports formula fields, and sends reports in PDF and HTML formats.
- Conga Composer — Focused on document generation, but lets users combine and merge data from external databases with Salesforce report data. It’s ideal for teams that need to generate polished presentations, proposals, or contracts from report data.
- Tableau — Salesforce’s own advanced analytics platform. It’s the go-to when your reporting requirements exceed native capabilities. Tableau connects to multiple data sources, supports white-label dashboards, and offers dynamic variables and advanced visualization.
Each tool has its own pricing, installation footprint, and learning curve. Most offer a free trial or test drive through the AppExchange before you commit.
Salesforce Mobile App: Reports vs. Dashboards
The mobile app adds another layer of nuance. On the Salesforce mobile app, a report is refreshed every time you look at it — assuming you’re online and not working offline. This matches the desktop behavior of pulling live data on every view.
A dashboard widget on mobile, however, is refreshed only when the entire dashboard is refreshed. This means individual widgets can’t be selectively updated. If one widget on your dashboard is stale, you have to refresh the whole dashboard to update it — which counts against your org’s hourly refresh limit.
There are additional mobile-specific constraints: reports with groupings are converted to tabular reports in the mobile app, and the mobile app supports a maximum of 25 report columns. These limitations don’t affect refresh behavior, but they do affect what data your mobile users actually see.
Mistakes to Avoid
These are the most common errors that lead to stale data, wasted resources, or confused stakeholders:
- Assuming dashboards show live data. They don’t. Every dashboard displays cached data from its last refresh. If you present a dashboard in a meeting without refreshing it first, you may be making decisions on data that’s hours or even days old.
- Clicking “Run Report” multiple times. Each click runs the report to completion even if you navigate away. Stacking multiple runs wastes your org’s synchronous report limit and can slow down everyone else’s reports.
- Scheduling all subscriptions at the same time. With a 500-subscription cap per time slot per org, clustering all your report subscriptions at Monday 9:00 AM guarantees that some won’t run. Stagger them across 15-minute intervals throughout the morning.
- Setting embedded charts to refresh on page load in high-traffic orgs. Your org’s 3,000 chart refreshes per hour limit gets consumed fast when hundreds of users browse record pages with embedded charts.
- Ignoring the running user on dashboards. If a dashboard runs as a user with limited record access, the data shown will be incomplete — even if the viewer has full access. Always verify which user the dashboard runs as before trusting its numbers.
- Forgetting that conditional subscriptions still consume report runs. The report runs every scheduled interval regardless of whether the conditions are met. Only the notification is suppressed, not the run itself.
Do’s and Don’ts
Do’s
- Do stagger your report subscriptions across multiple time slots to stay under the 500-per-slot org-wide cap.
- Do use conditional notifications to reduce email noise and only get alerted when metrics hit meaningful thresholds.
- Do leave embedded chart caching at the 24-hour default unless you have a small org with light page traffic.
- Do manually refresh dashboards before meetings so stakeholders see current data.
- Do explore the REST API or Flow-based solutions if your team needs sub-daily dashboard refreshes.
Don’ts
- Don’t assume a dashboard refresh also refreshes its underlying reports. The dashboard pulls from the report data, but the dashboard and report refresh cycles are independent.
- Don’t exceed your edition’s subscription limits without realizing it — failed subscriptions don’t always produce visible error messages.
- Don’t rely on dynamic dashboards for automated reporting. Dynamic dashboards require manual refreshes and cannot be scheduled.
- Don’t use the API to refresh dashboards every minute unless you’ve calculated the impact on your org’s 200 refreshes/hour limit.
- Don’t ignore the 10-minute timeout. By default, reports time out after 10 minutes. If your report is too complex, it will fail silently on a scheduled run and you’ll never get the email.
Pros and Cons of Salesforce Native Reporting Refresh
Pros
- Reports are always live. No configuration needed — you get real-time data every time you open a report.
- Subscriptions are free and built-in. No third-party tool or additional license is required to schedule report emails.
- Conditional notifications reduce noise. You can avoid irrelevant emails by setting threshold-based triggers.
- File attachment options. You can receive scheduled reports as
.XLSXor.CSV, making it easy to share with non-Salesforce users. - Cross-edition availability. Report subscriptions are available in Essentials, Group, Professional, Enterprise, Performance, Unlimited, and Developer Editions.
Cons
- No sub-daily scheduling. The shortest native subscription interval is once per day.
- Dashboard caching creates confusion. Users unfamiliar with the caching behavior make decisions on stale data.
- Hard hourly and per-slot limits. The 500-subscription-per-slot and 200-dashboard-refresh-per-hour caps can bottleneck large organizations.
- Dynamic dashboards can’t be auto-refreshed. Teams that need personalized, role-based dashboards must accept manual refresh requirements.
- Mobile limitations. Grouped reports get flattened to tabular format on mobile, and the 25-column cap can cut off important fields.
FAQs
Do Salesforce reports update in real time?
Yes. Every time you open a report, Salesforce queries live data. There is no caching or delay on standard reports.
Do Salesforce dashboards refresh automatically?
No. Dashboards show cached data from the last refresh. You must manually refresh or set up a scheduled subscription.
Can I schedule a report to run every hour?
No. Native subscriptions support daily, weekly, or monthly intervals only. You need the REST API or a third-party tool for hourly runs.
Do embedded report charts show live data?
No. Embedded charts cache data for 24 hours by default. You can enable page-load refresh, but it consumes chart refresh limits.
Can I send a scheduled report to someone without a Salesforce license?
No. Native subscriptions require recipients to be Salesforce users. Third-party tools like Report Sender can send to any email address.
What happens if I exceed the 500 subscription limit per time slot?
No. The extra subscriptions won’t run at that time. Salesforce does not send an error notification — the emails just don’t arrive.
Do conditional report subscriptions still use report runs when conditions aren’t met?
Yes. The report runs on every scheduled interval. Only the email notification is suppressed when conditions aren’t satisfied.
Can dynamic dashboards be scheduled to refresh?
No. Dynamic dashboards run as the logged-in user and require manual refresh. Only standard dashboards with a specified running user can be scheduled.
Is there a limit on how many reports I can subscribe to?
Yes. Users in Unlimited Edition can subscribe to up to 15 reports. Users in all other editions are limited to 7 report subscriptions.
Do reports time out on scheduled runs?
Yes. Reports time out after 10 minutes by default. If a complex report exceeds this window during a scheduled run, the subscription fails silently.