A scheduled report is judged on whether it was sent.

The person receiving it judges it on whether they read it. Those are two different tests, and almost every reporting setup in existence measures the first one. The job ran. The mail server accepted it. Nothing went red. By every signal available to the person who built it, the report succeeded.

This piece is about the gap between those two tests. It is not an argument about file formats, and it is not a claim that PDFs are bad. It is that a delivered report fails to be read in four distinct ways, only one of which is about the file, and the other three are usually invisible to whoever set it up.

There are no statistics in this article. There is a large amount of published guesswork about how many business reports go unread, none of which survives being checked, and adding to it would not help you. What follows is mechanisms instead, most of them documented by Sisense, all of them checkable against your own setup this afternoon.

Failure one: it arrives as a door

An attachment is not information. It is a decision to open something.

That decision gets made on a phone, between two meetings, by somebody who wanted one number. The number is on the other side of the door, and the door costs a download, an app switch and a pinch zoom. So the report that took the most work to produce gets the least attention in the company, and the reason is not that nobody cares.

What makes this one interesting is that it is the failure everybody notices and the only one anybody tries to fix. The usual response is to make the attachment better. Better layout, better chart, cleaner cover page. All of which improves the thing behind the door without touching the door.

Sisense will put the dashboard in the message body rather than attach it, and that is worth knowing because it is free and already installed. When you share a dashboard, in Sisense's own words, "you can configure Sisense to send periodic email notifications containing the dashboard inside the email's body or as a PDF attachment to your dashboard's Shared Users."1

An email setup screen for a scheduled report: a subject line reading Google campaign results, weekly report, a single recipient, and a message body where each figure is written as a measure token such as {{MEASURE:CPM Google}} rather than as a fixed number.
This is our own interface, and it is here because it is the clearest picture of what the alternative to an attachment looks like. Each figure in the message is written once as a token, and replaced with that job's own live value when it runs.

The interesting question is not how to make people open the attachment. It is whether the thing they actually wanted could have been in the sentence they already read.

The check: open your own scheduled report on a phone, as a recipient, not as its author. Count the taps to the number.

Failure two: it arrives on time and it is wrong

This is the expensive one, and it is almost impossible to see.

A report scheduled for seven in the morning is a bet that the overnight load finished before seven. Most weeks you win. The weeks you lose look exactly like the weeks you win, because the report went out on time, formatted correctly, containing the data that existed at the moment it ran. Nothing failed. The schedule did precisely what it was told.

Somebody acts on it. Then on Thursday a number does not reconcile, and an afternoon disappears working backwards to a Tuesday morning that looked completely normal.

The mechanism is that a clock does not know anything about your data. It knows the time. The question a reporting job is really asking is "has the thing I am reporting on finished arriving", and a schedule answers a different question that is usually correlated with it and occasionally is not.

That is why event triggers exist, and why it is worth checking whether your reporting layer has them. A job that starts when the load finishes, or when an alert fires, is asking the right question. A job that starts at seven is asking a proxy for it.

The check: find the gap between when your load usually finishes and when your report usually sends. If it is under an hour, you are running closer to the edge than you think.

Failure three: it arrives incomplete, and nobody notices

Two of these are documented by Sisense, and both are design decisions with reasons behind them rather than faults. They matter here because neither one announces itself. The report arrives. It looks like a report. It is missing things.

Custom JavaScript does not survive an export. Sisense's documentation states that any custom JavaScript in widget or dashboard scripts "will not appear in Excel or CSV exports", because "exports always use the raw data and built-in formatting only".2 So if somebody scripted a widget into the thing your users actually want to look at, what leaves the building is the underlying data rather than what was built. On screen it is right. In the file it is raw.

A dashboard exported to PDF gives you the first page of each pivot. In Sisense's words: "By default, when you export a dashboard to PDF, only the first page of each pivot widget is exported."3 Exporting the pivot widget on its own behaves differently. The reason is that rendering a full table on export is expensive, which is fair, and Sisense sells a premium add on that removes the limit.4

There is a hard number attached to the widget level export as well: "You can export your Pivot table or table widget of up to 1,000 rows to PDF. Larger and more complex tables may fail."5

None of that is hidden. All of it is published. The problem is that the person who set the schedule up read the dashboard, not the documentation, and the recipient has no way to know that page two existed.

The check: open your last exported report next to the dashboard it came from and compare the bottom of the table. This takes ninety seconds and it is the single most useful thing in this article.

Failure four: it arrives for somebody who left

Recipient lists are written once, at the moment somebody asks for a report, and then almost never revisited.

So the report goes on arriving, accurately, on schedule, at an address belonging to somebody who changed job eighteen months ago. Or at a distribution list that three people have quietly filtered into an archive folder. Or at a customer who churned three months ago and is still receiving Monday's figures, which is the version of this that becomes a conversation.

This is not a technology failure at all. It is a lifecycle failure, and it persists because nobody owns the question. The report has an author, a schedule and a recipient list, and no owner for whether any of that is still true.

The honest position on fixing it is that visibility is the achievable part. A view of every reporting job in the system, with its owner and its target, filtered by people who have left, will tell you what is still going out on behalf of whom. Acting on what you find is still somebody's afternoon. We do not automate the cleanup and neither, as far as we can tell, does anybody else.

The check: ask your team how many scheduled reports are running inside your product right now. Then go and count. The gap between the guess and the number is the finding.

What this adds up to

Three of those four are not format problems.

The clock is a trigger problem. The truncation is a scope problem. The departed recipient is a lifecycle problem. Not one of them is improved by a better looking PDF, and all three are invisible from the sending end, which is the only end most people ever look at.

That is why "our reports go out fine" is such a common sentence and such a weak one. It describes the half of the system you can see. The half you cannot see is whether the numbers were ready, whether all of them arrived, and whether anybody at the other end is still there.

Five questions worth asking about your own reporting

  1. Open one of your scheduled reports on a phone, as a recipient. How many taps to the number somebody actually wanted?
  2. What is the gap between your load finishing and your report sending? Would you notice if the load ran late?
  3. Does your reporting layer have a trigger that is not a clock? If a job can start from an event, the stale report problem mostly disappears.
  4. Open your last export next to its dashboard. Same rows at the bottom? Same formatting?
  5. How many scheduled reports are running right now, and who owns each one? If nobody can answer without asking an engineer, that is the answer.

If those five come back clean, your reporting is in better shape than most and this article was not for you. If two or three of them made you want to go and look at something, that is the useful outcome, and it costs nothing to check.

Related reading

If you are still choosing how to deliver a report at all, the companion piece walks through the five ways to do reporting in Sisense and which one fits which requirement. Ravid's broader piece on BI reporting in Sisense covers formats, delivery methods and use cases.

Sources

Every claim about Sisense on this page is linked to Sisense's own documentation or marketplace.

1 Sisense documentation, Sharing Dashboards
2 Sisense documentation, Downloading Widgets to CSV
3 Sisense documentation, PDF Reports Best Practices
4 Sisense Marketplace, Expand Pivot on PDF (premium)
5 Sisense documentation, Downloading Widgets to PDF

Want the ninety second check run on your own reporting?

read time

Why most scheduled reports never get read

Published by
Why most scheduled reports never get read
Ravid Paldi
Founder & CEO
September 11, 2026