> ## Documentation Index
> Fetch the complete documentation index at: https://docs.timetracker.in/llms.txt
> Use this file to discover all available pages before exploring further.

# Report problems

> Fix TimeTracker report issues – empty results, missing columns, two people seeing different totals, columns that will not calculate, and export failures.

Most report problems are one of three things: the source cannot answer that question,
a column is gated by a permission, or the rows you can see are not the rows your
colleague can see.

## Quick diagnosis

| What you see                          | Go to                                                      |
| ------------------------------------- | ---------------------------------------------------------- |
| The report returns nothing            | [Empty results](#the-report-is-empty)                      |
| A column you expected is not offered  | [Missing columns](#a-column-is-missing)                    |
| A column is refused when you add it   | [Wrong source](#that-column-is-not-on-this-source)         |
| Two people get different totals       | [Scoped rows](#two-people-see-different-totals)            |
| A report that used to work now errors | [Something changed](#a-report-that-used-to-work-now-fails) |
| Export is greyed out or fails         | [Export](#i-cannot-export)                                 |

## The report is empty

<Steps>
  <Step title="Widen the date range">
    The commonest cause. Check the range and the **date basis** – a Projects report
    dated by "Start date" behaves very differently from one dated by "Created".
  </Step>

  <Step title="Remove your filters one at a time">
    A filter that matches nothing returns nothing. Strip them back and add them again.
  </Step>

  <Step title="Check your scope">
    Rows are filtered to what you may see. If a colleague with wider
    [scope](/concepts/supervision-scope) sees rows, your reach is the issue, not the
    report.
  </Step>

  <Step title="Check the app is on">
    A report reading an area that has been switched off has nothing to read. The
    saved report is kept – switch the app back on and it works again.
  </Step>
</Steps>

## A column is missing

Columns are gated by capability. A column you cannot hold is not offered at all, and
is dropped from a saved report someone else built.

| Column family                                          | Capability you need   |
| ------------------------------------------------------ | --------------------- |
| Billing rate, revenue, tracked value                   | `rate.viewBilling`    |
| Labor cost, actual cost, expense cost, forecast margin | `time.viewCost`       |
| Profit, profit margin                                  | **Both** of the above |
| Invoiced (Projects source)                             | `invoice.manage`      |
| Group, Manager, Job title, Employment type             | `member.changeRole`   |

<Note>
  **Profit needs both cost and billing.** Holding only one is not enough. That stops
  someone reconstructing a hidden figure from the columns they can see.
</Note>

Ask an Owner or Admin if you need one. See
[report metrics](/reference/report-metrics).

## That column is not on this source

A report reads **one source**, and the source decides which columns exist.

> "budget" isn't something this report can group by.
>
> "estimate" can't be calculated on this report yet. Remove that column.

| You want                                   | Build it on      |
| ------------------------------------------ | ---------------- |
| Budget, spend, margin, project health      | **Projects**     |
| Estimate, tracked, remaining per task      | **Tasks**        |
| Hours, billable value, labor cost, revenue | **Time entries** |
| Who submitted and who did not              | **Timesheets**   |
| Invoice totals, outstanding, AR aging      | **Invoices**     |
| Attendance against schedule                | **Timecard**     |

Budget and estimate columns are **not** available on Time entries. That is the single
most common mismatch. See [report sources](/reports/report-sources).

## Two people see different totals

This is expected, and both numbers are right.

Report **rows** are filtered by your [supervision scope](/concepts/supervision-scope).
Priya at project scope sees the people on her projects. Tom at workspace scope sees
everyone. One saved report, two correct answers.

That is deliberate – it lets you share one report definition across a team without
leaking data.

| Difference                           | Why                                  |
| ------------------------------------ | ------------------------------------ |
| Fewer rows than a colleague          | Narrower scope                       |
| Fewer columns than a colleague       | Missing a money or roster capability |
| A different total for the same range | Both of the above compound           |

## A report that used to work now fails

<AccordionGroup>
  <Accordion title="An app was switched off">
    A report built on a hidden area has nothing to read. Switch the app back on. The
    saved report itself is kept.
  </Accordion>

  <Accordion title="Your role changed">
    Losing a capability drops the columns that needed it.
  </Accordion>

  <Accordion title="Your scope changed">
    Fewer people in scope means fewer rows.
  </Accordion>

  <Accordion title="The plan lapsed">
    Custom reports, scheduling and export are Pro. Building and reading is free. See
    [when a plan lapses](/billing/when-a-plan-lapses).
  </Accordion>

  <Accordion title="A grouping was removed from the source">
    > "jobTitle" isn't something this report can group by. Pick another grouping.

    Edit the report and choose a grouping the source supports.
  </Accordion>
</AccordionGroup>

## Grouping and pivot errors

| Message                                                                                 | Fix                                   |
| --------------------------------------------------------------------------------------- | ------------------------------------- |
| "That's too many grouping levels. A report can group by up to 3 at once."               | Remove a level.                       |
| "That's too many sort rules. A report can sort by up to 3 columns."                     | Remove a sort.                        |
| "A pivot needs a row, a column and a value. Pick all three."                            | Fill in all three axes.               |
| "A pivot's rows and columns have to be different things. Pick another for one of them." | Change one axis.                      |
| ""revenue" isn't a value this report can pivot on."                                     | Pick a metric the source can compute. |

See [grouping and pivots](/reports/grouping-and-pivots).

## Date range errors

| Message                                                                | Fix                                             |
| ---------------------------------------------------------------------- | ----------------------------------------------- |
| "A fixed date range needs both a start and an end."                    | Set both.                                       |
| "The end of that date range falls before its start. Check both dates." | Swap them.                                      |
| "Pick which rolling period this report should cover."                  | Choose a rolling period such as "last 30 days". |
| "That date range is too wide. Ask for up to 366 days at a time."       | Split the range.                                |

See [date ranges and periods](/reports/date-ranges-and-periods).

## I cannot export

<AccordionGroup>
  <Accordion title="The export menu is greyed out on a pivot">
    > Export isn't available for pivot reports yet.

    Rebuild it as a grouped report to export it.
  </Accordion>

  <Accordion title="Export is not offered at all">
    Exporting needs `report.export` – Owner and Admin by default – **and** a Pro plan.
  </Accordion>

  <Accordion title="The export never arrives">
    Over 5,000 rows the file is built in the background and you get a notification
    when it is ready. Narrowing the date range keeps it in the immediate lane.
  </Accordion>

  <Accordion title="The download link stopped working">
    > That export is no longer available. Exports are kept for a limited time, so run
    > a new one.
  </Accordion>

  <Accordion title="The export is missing a column that is on screen">
    You are exporting what you can see. A gated column you do not hold is dropped from
    the file too.
  </Accordion>
</AccordionGroup>

See [export formats](/reference/export-formats).

## A scheduled report is not arriving

<Steps>
  <Step title="Check the schedule still exists">
    A deleted schedule stops sending: "That schedule has been deleted. Pick an active
    one."
  </Step>

  <Step title="Check it has recipients and a report">
    Both are required: "Add at least one person to send this to." and "Pick which
    report this schedule should send."
  </Step>

  <Step title="Check the Reports app is on">
    Switching Reports off stops scheduled deliveries going out.
  </Step>

  <Step title="Check the plan">
    Scheduling is Pro.
  </Step>

  <Step title="Check the recipient's email">
    See [email not arriving](/troubleshooting/email-not-arriving).
  </Step>
</Steps>

## The numbers look wrong

If a report total disagrees with what you expect, the cause is usually upstream of the
report. Start with [missing or wrong hours](/troubleshooting/missing-or-wrong-hours) –
rounding, timezones and rate snapshots explain most of it.

The on-screen total, the CSV total and the Excel total are computed once and always
agree. If those three ever disagree, report it.

## Common questions

<AccordionGroup>
  <Accordion title="Can I report on budget against tracked hours?">
    Yes – build it on the **Projects** source, which carries budget, tracked value,
    actual cost and margin together.
  </Accordion>

  <Accordion title="Do archived projects appear in reports?">
    Yes. That is the difference between archiving and trashing. Archived work stays in
    every report; trashed work does not.
  </Accordion>

  <Accordion title="Why does a Timesheets report show people with no hours?">
    On purpose. It counts missing periods so you can see exactly who has not
    submitted.
  </Accordion>

  <Accordion title="Can a Contractor build reports?">
    No. Contractors hold none of the report capabilities. Members do.
  </Accordion>

  <Accordion title="Can I share one report with the whole team?">
    Yes, with `report.share`. Everyone sees the rows their own scope allows. See
    [share a report](/reports/share-a-report).
  </Accordion>
</AccordionGroup>

## Related guides

<CardGroup cols={2}>
  <Card title="Report metrics" icon="chart-column" href="/reference/report-metrics">
    Every metric and grouping, per source.
  </Card>

  <Card title="Report sources" icon="database" href="/reports/report-sources">
    Picking the source that can answer your question.
  </Card>

  <Card title="Report permissions" icon="lock" href="/reports/report-permissions">
    Who sees which rows and columns.
  </Card>

  <Card title="Export a report" icon="file-arrow-down" href="/reports/export-a-report">
    CSV, Excel and PDF.
  </Card>

  <Card title="Supervision scope" icon="user-group" href="/concepts/supervision-scope">
    Why your rows differ from a colleague's.
  </Card>

  <Card title="Missing or wrong hours" icon="clock" href="/troubleshooting/missing-or-wrong-hours">
    When the underlying data is the problem.
  </Card>
</CardGroup>
