> ## 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.

# Budget alerts

> Get told before a project overruns. How TimeTracker fires budget alerts at 50, 75, 90 and 100 percent, plus forecast and margin warnings, and who is told.

TimeTracker warns you as a project consumes its budget. Alerts fire at **50%, 75%, 90% and 100%** of the budget, plus two extra warnings – one when the forecast breaks the budget, and one when the margin falls below your floor.

Each alert fires **once**. It will not nag you every time someone logs an hour.

## The four kinds of alert

| Alert                    | Fires when                                                    | Severity                       |
| ------------------------ | ------------------------------------------------------------- | ------------------------------ |
| **Budget usage**         | Approved cost crosses 50%, 75%, 90% or 100% of a money budget | Amber at 75 and 90, red at 100 |
| **Time budget**          | Logged hours cross 50%, 75%, 90% or 100% of an hours budget   | Amber at 75 and 90, red at 100 |
| **Forecast over budget** | The projected cost to complete exceeds the budget             | Red                            |
| **Margin below floor**   | The projected margin falls under the floor you set            | Red                            |

The first two are the ladder. The last two are breaches – they have no percentage, they are true or false.

## The ladder

The four rungs are fixed at 50, 75, 90 and 100 percent.

A rung fires only on the crossing – the moment usage moves from below it to at or above it. Re-evaluating the same position fires nothing, and usage dropping back down crosses nothing.

### Money budget – \$40,000

| Rung | Approved cost |
| ---- | ------------- |
| 50%  | \$20,000      |
| 75%  | \$30,000      |
| 90%  | \$36,000      |
| 100% | \$40,000      |

### Hours budget – 600 hours

| Rung | Hours logged |
| ---- | ------------ |
| 50%  | 300 hours    |
| 75%  | 450 hours    |
| 90%  | 540 hours    |
| 100% | 600 hours    |

### The two ladders are separate

A money budget and an hours budget use different counters and different alert copy.

|                    | Money ladder               | Hours ladder                     |
| ------------------ | -------------------------- | -------------------------------- |
| Counts             | Approved cost              | All logged time, approved or not |
| Headline at 75%    | "Budget usage reached 75%" | "Time budget reached 75%"        |
| Headline over 100% | "Project budget exceeded"  | "Time budget exceeded"           |

## Fires once – and what that really means

Each rung fires once per project, per pool.

| Budget               | The rung fires              |
| -------------------- | --------------------------- |
| **One-time**         | Once, ever                  |
| **Monthly retainer** | Once **per calendar month** |

A monthly budget re-arms the whole 50/75/90/100 sequence at the start of each month, read in your workspace timezone. See [recurring retainers](/budgets/recurring-retainers).

<Warning>
  Raising the budget does **not** re-arm an already-fired rung on a one-time budget. If a project crossed 90% of a $10,000 budget and you raise it to $20,000, the 90% alert has already fired. You will not get a second one when it crosses \$18,000.
</Warning>

### Crossing several rungs at once

Sometimes a single time entry crosses more than one rung. Logging 10 hours against a 1-hour budget crosses all four at once.

The alert copy handles that honestly. Instead of saying "reached 50%" while the project sits at 1000%, the message leads with the real figures – how much has been used and what the budget was.

## The two breach alerts

### Forecast over budget

Fires when the projected cost to complete exceeds the budget – even though the project has not spent it yet.

This is the early-warning alert. A project at 40% utilisation with a large remaining estimate is heading over long before it gets there.

Headline: **Forecast exceeds project budget.**

### Margin below floor

Fires when the projected profit margin drops under the **Alert if margin falls below** percentage on the project's Budget card.

If that field is blank, this alert can never fire on the project.

Headline: **Forecast margin below threshold.**

See [set a project budget](/budgets/set-a-project-budget) for where the floor is entered.

## Who gets told

Recipients are the **project managers plus workspace Owners and Admins**.

* Delivered **in-app** and by **email** by default.
* The person whose action triggered the alert is excluded – you are never emailed about your own click.
* Each person can tune their own notification preferences.

### What an over-budget email says

An over-budget message states where the project actually stands, then asks for a decision:

> Please review the project and decide whether to:
>
> * Increase the budget
> * Approve the overage
> * Pause further work on the project

An hours-budget message also names the entry that tipped it over and who logged it, because that is the reader's first question.

## Example

**Harbor Logistics – Mobile App. 600 hours, one-time.**

| Date    | Event                              | Total logged | Utilisation | Alert                       |
| ------- | ---------------------------------- | ------------ | ----------- | --------------------------- |
| 12 May  | Team logs through the week         | 288h         | 48%         | –                           |
| 15 May  | Jonas logs 14h                     | 302h         | 50.3%       | **Time budget reached 50%** |
| 3 June  | Team passes the three-quarter mark | 454h         | 75.7%       | **Time budget reached 75%** |
| 19 June | Sarah logs 9h                      | 543h         | 90.5%       | **Time budget reached 90%** |
| 2 July  | Ana logs 6h                        | 604h         | 100.7%      | **Time budget exceeded**    |

Check the maths: 302 ÷ 600 = 50.33%; 454 ÷ 600 = 75.67%; 543 ÷ 600 = 90.5%; 604 ÷ 600 = 100.67%.

At each rung, Priya Raman and Northwind's owners and admins get an in-app notification and an email. On 2 July the email says the total logged time has reached 604 hours, which exceeds the allocated budget of 600 hours, and offers the three decisions.

The project's health chip is now **Over budget**.

## The in-app Alerts list

Every project's Overview has an **Alerts** panel listing fired, non-dismissed alerts.

| Element            | What it shows                                                                                         |
| ------------------ | ----------------------------------------------------------------------------------------------------- |
| Row label          | `Budget usage reached 75%`, `Forecast now exceeds budget`, or `Forecast margin fell below your floor` |
| Icon               | Amber warning triangle for the 75 and 90 rungs, red circle for 100% and the two breaches              |
| **Dismiss** button | Removes the row from this list                                                                        |
| Empty state        | **No alerts** – "You'll see budget, forecast, and margin alerts here as thresholds are crossed."      |

### What Dismiss does and does not do

Dismiss removes the row from the in-app list. That is all.

| Dismiss does                                  | Dismiss does not                      |
| --------------------------------------------- | ------------------------------------- |
| Hide the row from this project's Alerts panel | Delete the record that the rung fired |
| Tidy up after you have acted                  | Re-arm the alert so it can fire again |
| Confirm with a toast, **Alert dismissed.**    | Recall an email that was already sent |

Dismissing is housekeeping. It can never accidentally cause a duplicate alert later.

## Health and alerts are different things

They are related but not the same.

|                  | Alerts                                            | Health                                       |
| ---------------- | ------------------------------------------------- | -------------------------------------------- |
| What it is       | An event – a rung was crossed at a moment in time | A state – where the project stands right now |
| Fires once       | Yes                                               | Not applicable                               |
| Can be dismissed | Yes                                               | No                                           |
| Recalculates     | No, it is a record of an event                    | Yes, on every change                         |

A project can be red without any un-dismissed alert, if someone dismissed them all. And a project can have an old 50% alert on screen while it is perfectly healthy today. Read health for the current position; read alerts for what happened.

See [how budgets work](/budgets/how-budgets-work) for the health rules.

## Permissions

| Action                                          | Capability           | Roles                                             |
| ----------------------------------------------- | -------------------- | ------------------------------------------------- |
| Receive budget alerts                           | –                    | Project managers plus workspace Owners and Admins |
| See the Alerts panel                            | – (workspace member) | Any member of the workspace                       |
| Dismiss an alert                                | – (workspace member) | Any member of the workspace                       |
| Set the margin floor that arms the margin alert | `budget.manage`      | Owner, Admin, Project Manager                     |
| Change the budget that the ladder measures      | `budget.manage`      | Owner, Admin, Project Manager                     |

## Common questions

<AccordionGroup>
  <Accordion title="Why did I only get one alert when the project jumped from 40% to 95%?">
    You should have received the 50%, 75% and 90% rungs. Each crossing is detected on the move, so a single large entry can fire several. Check your notification preferences if some are missing.
  </Accordion>

  <Accordion title="I raised the budget. Why no new alerts?">
    On a one-time budget each rung fires once, ever. Raising the ceiling does not un-fire a rung that has already gone.
  </Accordion>

  <Accordion title="Can I change the 50/75/90/100 thresholds?">
    No. The four rungs are fixed.
  </Accordion>

  <Accordion title="Can I turn budget alerts off?">
    Not per project. Each person tunes their own delivery in their notification settings. Leaving the **Alert if margin falls below** field blank does switch off the margin alert for that project.
  </Accordion>

  <Accordion title="Why did I not get an alert about my own time entry?">
    You are excluded as the actor from an event you triggered. Your project's other managers were notified.
  </Accordion>

  <Accordion title="Do task caps fire alerts?">
    No. Caps are informational and never alert. See [task-level caps](/budgets/task-level-caps).
  </Accordion>

  <Accordion title="Why does my hours budget alert before my money budget?">
    Because the hours ladder counts every logged hour and the money ladder counts only approved cost. The hours ladder always runs ahead.
  </Accordion>
</AccordionGroup>

## Troubleshooting

| Problem                                           | Cause and fix                                                                                                   |
| ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| No alerts at all on a project                     | No budget is set, or the budget amount is zero.                                                                 |
| The margin alert never fires                      | The **Alert if margin falls below** field is blank.                                                             |
| An alert reappeared after you dismissed it        | Dismiss is per alert row. A different rung, or a new month on a retainer, produces a new row.                   |
| You got the same alert twice in a month           | Check whether the project has both a money and an hours budget in play. The two ladders are tracked separately. |
| Emails are not arriving                           | Check your own notification preferences, and confirm you are a project manager or a workspace Owner or Admin.   |
| A monthly retainer alerted again in the new month | Correct. A monthly budget re-arms the whole ladder each calendar month.                                         |

## Related guides

<CardGroup cols={2}>
  <Card title="How budgets work" icon="gears" href="/budgets/how-budgets-work">
    Utilisation, forecast and the health rules.
  </Card>

  <Card title="Set a project budget" icon="pen-to-square" href="/budgets/set-a-project-budget">
    Setting the amount and the margin floor.
  </Card>

  <Card title="Recurring retainers" icon="rotate" href="/budgets/recurring-retainers">
    Why the ladder re-arms monthly.
  </Card>

  <Card title="Hours vs money budgets" icon="scale-balanced" href="/budgets/hours-vs-money-budgets">
    Why the two ladders move at different speeds.
  </Card>

  <Card title="Profitability and margin" icon="chart-pie" href="/budgets/profitability-and-margin">
    The margin the floor alert watches.
  </Card>

  <Card title="Budget permissions" icon="lock" href="/budgets/budget-permissions">
    Who can arm and change an alert.
  </Card>
</CardGroup>
