Dashboard empty state: sample data vs honest zeros in 93 products
We read the dashboard empty state across 262 screens from 93 SaaS products: who fills charts with sample data, who shows honest zeros, and where checklists fit.
The dashboard empty state is the first screen most new SaaS users see: of the 262 dashboard screens in our dashboards wall, 109 (42%) are first-run or empty, and 68 of the 93 products we captured showed us at least one. When those empty screens still have a chart to fill, products split into two camps: fill it with labelled sample data, or draw the frame and print an honest zero.
Neither camp is wrong. But the details inside each one, from where the "sample" label sits to whether a rate reads 0% or a dash, decide whether a new user learns something or just feels behind. Here is what we found.
How often the dashboard empty state shows a chart at all
Less often than you might expect. Only 11 of the 109 first-run screens still draw a chart. Most empty dashboards drop charts entirely and lead with something you can act on: 48 of the 109 put an AI prompt box on the page, and plenty more lead with create tiles or a single "new" button.
The 11 that keep a chart are the interesting ones, because they had to decide what goes inside it. Four of them, Amplitude's home and three PostHog screens, fill it with sample data. The other seven, from Sentry, GitBook, Gumroad, Voiceflow, Dub and Resend, plot nothing at all. You can browse all 11 in first-run screens with charts.
Camp one: sample data, labelled
Amplitude does not wait for your events. A new workspace opens on "Explore sample product insights": a "Sample conversion funnel" at 98.7% and a Daily Active Users chart at 4.18k, down 7.25%. It looks like a working product on day one.

The cost of realistic fake numbers is that you have to keep saying they are fake. Amplitude says it twice, in two banners with two different calls to action, before the first chart. Clockify does the same job with plainer copy: "You are currently using sample data to help you explore." appears in the blue trial bar at the top and again in a panel above the dashboard, with a bordered REMOVE SAMPLE DATA button.

PostHog takes the most granular approach. Instead of one page-level banner, every chart tile carries its own small "Sample data" tag, paired with a copyable npx @posthog/wizard chip that installs the real thing. On its web analytics screen the result is a page that tells the truth and the fiction side by side: the KPI tiles read Visitors 0, Page views 0, Sessions 0, "vs. 0 prior", while the Unique visitors chart directly below runs on a tagged sample line.

Twenty, the open-source CRM, is the quiet case. Its "My First Dashboard" is filled with sample deals (an "11 Total" donut, pipeline bars from 84k to 118k), and the only disclosure is a sentence inside the welcome text widget: "Don't forget to replace the sample data with your own." Maze uses the same idea in a list: a "Demo Maze" study with a DEMO tag and 20 participants sits under the user's own draft study with 0.
Camp two: honest zeros, with the frame intact
The other camp shows what is actually there, which is nothing, but keeps the furniture so you can see what the page will become. Sentry's saved dashboard is the clearest example: six widgets in a 3x2 grid, each keeping its title and axes.

That inconsistency is worth noticing. On a brand-new project, "Try adjusting the filters" points the user at the wrong problem: the filters are fine, the SDK has not sent anything. Wrike does the same in a list widget, "Nothing to show... yet!" followed by "To see data here, change this widget's settings."
The rest of the honest-zero camp varies in how much it draws. GitBook's Traffic page shows three zero stat cards and an orange line flat at 0 from Sep 24 to Oct 21. Dub's Analytics card shows Clicks 0, Leads 0 and Sales $0 over a flat line, with a "Complete setup" pill in the corner. Gumroad's sales chart covers 9/22/2026 to 10/22/2026 but holds a single pink dot at "Today", on a dual axis that tops out at $0.02 and 2. Resend keeps a 15-day axis from Sep 18 to Oct 02 with nothing plotted on it.
Neon has the most informative zero we found. Its Postgres Monitoring chart is hatched end to end and labelled ENDPOINT INACTIVE in the legend, with one thin RAM spike where the database briefly woke. The hatching says "this was asleep", which is different from "this is broken" or "you have no data".

Zero is a count, not a rate
One detail separates careful empty states from careless ones. Resend prints EMAILS 0 next to DELIVERABILITY RATE 0%, and bounce and complaint rates of 0%. A 0% deliverability rate on 0 emails is technically undefined, and at a glance it reads like an alarm. PostHog prints "No data for this period" for Session duration and Bounce rate. Voiceflow prints Total conversations 0 but a plain dash for Resolution rate and Cost per conversation.
Words also work where numbers would mislead. Prezi's Analytics report has four cards and not one number: "No activity yet" three times and "No views yet" once. Cloudinary keeps its four usage tiles at 0 and 0 B but replaces each chart with "Not Enough Data. After you start adding and delivering assets, check back here to track your activity."

Checklists: rarer than charts, and they cheat a little
Setup checklists are less common than their reputation suggests. Only 24 of the 262 screens (9%) carry a checklist, from 11 of the 93 products, against 109 first-run screens overall. Where they appear, they nearly always start you with progress already made.
Deepnote's Getting started panel reads 2/5 completed beside a 3-minute product demo video. Gumroad's eight hand-drawn sticker cards ("Welcome aboard", "Make an impression", "Cha-ching", "Money inbound") open with the first two ticked, and the first one is simply "Make a Gumroad account." Lucidchart and Maze strike through finished steps rather than just ticking them: Lucidchart's Education center crosses out "Create first document", and Maze crosses out "Create a study", then swaps its pitch to "You're almost ready to recruit!"

Wrike attaches a reward: its Quick start card says "Complete them all to get 1 month free!" with a progress bar at 20%. None of the other checklists above offer anything beyond the progress itself.
How we counted
We captured these screens in desktop browsers with research accounts between September and October 2026. A vision model recorded each screen's attributes, including whether it is first-run or empty, whether it shows a chart and whether it has a setup checklist; you can check each one on the screen's own page. The sample-versus-zero split above comes from opening every first-run chart screen and reading it. We record what we saw on brand-new accounts, not A/B tests, so nothing here says which approach converts better.
What to steal
- Pick a camp per widget, then label at the widget. PostHog's per-tile "Sample data" tag survives screenshots and scrolling in a way a page banner does not.
- Put the exit next to the fake. Clockify's REMOVE SAMPLE DATA and PostHog's install chip sit inside the thing they replace.
- Keep axes and titles when empty. Sentry, GitBook and Resend show the shape of the page before the data arrives.
- Show counts as 0 and rates as a dash. Follow Voiceflow and PostHog, not a 0% deliverability rate.
- Explain the specific reason it is empty. "Tests don't count here" beats "Try adjusting the filters" on a day-one account.
- Give a known state its own visual. Neon's hatched ENDPOINT INACTIVE turns a scary flat line into information.
- If you ship a checklist, start it at step two. Gumroad and Deepnote both open with progress on the board.
To compare these side by side while you build, browse the getting-started dashboards or the full PostHog and Sentry collections. Or connect the Screenrove MCP server and ask your agent for "first-run dashboards with sample data" before you design your own empty state.