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

# Understanding Your Dashboard Metrics

> The shared rules behind every Owlery dashboard — how spend, on-time, and dates are calculated.

**Where to find it:** `Analytics`

<Note>
  Analytics data refreshes on a schedule, not instantly. Under the dashboard title you'll see when the data was last updated and when the next refresh is due. If a change you just made in Owlery isn't showing yet, check there first.
</Note>

This page isn't one dashboard. The various dashboards under **Analytics** are built from a small set of shared ideas — cost, timing, contract versus spot, and a handful of common filters — so rather than define every tile on every dashboard, this page explains those ideas once. Once you know how spend or on time is worked out, you'll know what any tile using them is showing you.

## How Dashboard Data Behaves

### Your Numbers Come From Live Data

Dashboards aren't snapshots. Every number is worked out fresh from the current state of your data, so figures change as your freight moves and as you adjust your settings.

That means:

* **A load that hasn't been delivered yet won't appear in on-time numbers**: it joins the calculation once the delivery is recorded.
* **An uninvoiced load's cost is its tendered amount**, plus any in-transit updates. It switches to the invoiced amount when the invoice comes through.
* **Changing a setting changes history**: if you adjust your on-time grace period, update your item master, or reorganize your tags, your dashboards reflect the new setup across all time periods at the next refresh — not just going forward.

This is usually what you want. It does mean a number you screenshot today may not match the same number next week.

### What's Left Out

**Cancelled loads and test loads are filtered out of every dashboard.** They won't appear in counts, spend, or anything calculated from them.

### Missing Information Is Skipped, Not Guessed

**If a record is missing something a metric needs, that record is left out of the metric** — rather than counted as zero, guessed at, or treated as a failure. The same record still appears in the metrics it does have the data for.

For example:

* A stop with no recorded arrival time is left out of on-time figures. It isn't counted as late.
* A load with no cost data is left out of spend averages.
* A load whose items are missing conversion factors is left out of per-case and per-unit costs.
* An invoice with no awarded rate to compare against has no variance.

This keeps averages honest, but it means a metric can cover less of your freight than you'd assume. Dashboards show the gaps separately — missing time counts, missing POD counts, and similar — so you can see how much is being left out.

<Tip>
  When those gap counts are high, read the matching metric as a rough direction rather than a complete picture.
</Tip>

### Time Zones

Times are **facility local** unless a metric says otherwise. A pickup scheduled for 8:00 AM at a Denver facility is compared against 8:00 AM Mountain Time, and the load falls in whichever month that local date belongs to.

### Dashboards That Need an Add-On

Some dashboards are only available if you've turned on the matching product:

| Dashboard area                             | Requires                                                 |
| ------------------------------------------ | -------------------------------------------------------- |
| [Accruals & Cash Flow](/shippers/accruals) | [Freight Audit and Pay](/shippers/freight-audit-and-pay) |
| Appointments and dock scheduling           | [Dock scheduling](/dock-scheduling/overview)             |

If one of these is locked or has no data, that's the likely reason.

## Cost and Spend

### What Spend Means

**Spend is always the most current cost known for a load.** It follows the load through its life:

1. **Tendered price**: the rate the load was tendered and accepted at. This is the cost as soon as the load exists.
2. **In-transit updates**: if the price changes while the load is moving, spend reflects the updated amount.
3. **Final invoice price**: once an invoice is received and processed, spend uses the invoiced amount.

So spend isn't the tendered rate or the invoiced rate — it's whichever is most recent for that particular load. A dashboard covering last month is usually a blend: older loads valued at their invoiced amounts, recent loads still valued at their tendered rates.

<Note>
  A spend figure for a recent period will drift as invoices arrive and replace tendered estimates. If you're reconciling to the penny, wait until that period's invoices have been processed, or use the invoice metrics instead.
</Note>

### What's Included in Spend

**Spend is all-in by default** — linehaul, fuel surcharge, and accessorials together. The exception is dashboards and tabs that deliberately break those apart, like the fuel versus linehaul splits and accessorial breakdowns in invoice reporting. If a tile is labeled as one component, it's showing that component. Otherwise it's showing the all-in figure.

### Cost per Case, Pallet, or Mile

Metrics like **spend per case, per unit, per pallet, per pound, and per mile** take the load's cost and divide it by a volume figure.

For case, unit, pallet, and pound, that volume comes from the **orders on the load**, converted using your [item master](/shippers/item-master) — the conversion factors that say how many units are in a case, what a case weighs, how cases stack onto a pallet, and so on.

Two things follow from that:

* **These metrics need order data**: a load with no linked orders, or with items missing conversion factors, can't be converted and is left out.
* **Your item master drives accuracy**: if conversions are wrong or missing, per-case and per-unit costs will be wrong the same way. Updating the item master updates these numbers across all past periods.

## On-Time Performance

### Measured Against the Appointment

On-time pickup and on-time delivery are measured against the **appointment or requested date on the load** — the time the stop was actually scheduled for, in facility local time.

A stop is on time if the recorded arrival falls within the grace period around that scheduled time. Grace periods are yours to set in [Load Settings](/shippers/load-settings#on-time-performance), and changing them recalculates your on-time history.

<Note>
  This page covers your shipper dashboards. Dock scheduling analytics measure punctuality differently — see [Dock Scheduling Metrics](/facilities/dock-scheduling-metrics).
</Note>

### Measured Against the Requested Delivery Date

Some metrics are measured against the **order's requested delivery date (RDD)** instead of the load's appointment. These are labeled so you can tell the difference.

That difference matters more than it sounds:

* **Against the appointment**: did the carrier show up when they said they would? This is a carrier performance question.
* **Against the RDD**: did the customer get their freight when they asked for it? This is a customer service question.

A load can be perfectly on time against its appointment and still be late against the RDD, if the appointment was booked after the date the customer asked for.

### What Gets Measured

Only **completed stops with recorded arrival times**. A load that hasn't been picked up or delivered yet isn't late — it simply isn't in the calculation until the event is recorded. Stops missing arrival times are left out entirely.

## Contract vs. Spot

### How a Load Is Classified

A load is **contract** if it was tendered on a [contracted rate](/shippers/contract-rates-overview). Everything else is **spot**.

This one classification drives the contract versus spot splits, contract rate compliance, and every spot savings number.

### Contract Rate Compliance

For loads on lanes where you have a contracted rate, this asks one question: **did the load actually move at the contracted rate?**

It's a routing guide check. A lane with a contract rate that keeps moving at some other rate means either your routing guide is failing or the contract isn't being honored — both worth knowing. Loads on lanes with no contracted rate aren't part of this number.

### Tender Acceptance Rate

**This is per carrier.** For a given carrier, it's the share of tenders they accepted out of the tenders they were offered. **Average tender acceptance time** measures how long that carrier took to respond.

Because it's per carrier, a load tendered to one carrier who declined and then to a second who accepted counts as a declined tender for the first carrier and an accepted tender for the second.

### Spot Savings

Spot savings compares what you paid on a spot load against a benchmark drawn from the bids you received. There are several related figures — average savings per load, total savings, and the percentile versions — so they have their own page: [Spot Savings](/shippers/spot-savings).

## Invoices and Accruals

### Invoice Variance

Variance is the **difference between what was invoiced and the awarded rate** — the contracted rate on a contract load, or the accepted spot rate on a spot load.

It's the gap between what you agreed to pay and what you were billed, which is what freight audit is built around. Related metrics break the same figure down by dollars, by percentage, and by status, so you can see whether variance is concentrated in particular carriers, lanes, or charge types. An invoice with no awarded rate to compare against has no variance.

### Accruals

Accruals answer which freight you've already used but not yet paid for. Because the report has its own row structure and a pair of accrual-month columns, it has its own page: [Accruals](/shippers/accruals).

## Emissions and Sustainability

Emissions metrics — CO₂e, NOₓ, and particulate matter — use the emissions factors and SmartWay carrier rankings published by the EPA. Owlery doesn't model its own factors; the underlying data comes from the [EPA SmartWay program](https://www.epa.gov/smartway).

Because the rankings are carrier-specific, your emissions figures reflect both how far your freight moved and which carriers moved it. Shifting volume to higher-ranked carriers improves the numbers without changing the freight.

## Dates and Date Grouping

When a dashboard groups or filters by date, it uses the **load date** — the **pickup date of the load's first stop**, in facility local time. This holds across dashboards: a monthly spend chart shows loads that *picked up* that month, not loads that delivered, were tendered, or were invoiced that month.

Accruals are the deliberate exception, because they give you both a pickup-based and a delivery-based month.

## Common Dimensions

These are the filters and groupings shared across dashboards.

| Dimension            | What it means                                                                                                                                                                                                                       |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Lane**             | A **directional** origin and destination pair at the city, state level — for example, `Washington, DC → San Francisco, CA`. The reverse lane counts separately. More flexible definitions, such as 3-digit zip, are in development. |
| **Carrier / Broker** | The carrier or broker the load was tendered to.                                                                                                                                                                                     |
| **Mode**             | The transportation mode of the load.                                                                                                                                                                                                |
| **Equipment**        | The equipment type the load requires.                                                                                                                                                                                               |
| **Trading partner**  | The **customer** on a sales order, or the **vendor** on a purchase order.                                                                                                                                                           |
| **Tags**             | Your own tags, applied by hand or by your [tagging rules](/shippers/tagging-rules/overview). Editing tags changes how tagged metrics group across all periods.                                                                      |
| **GL code**          | The general ledger code on the load or charge, used mainly in finance and accrual reporting. See [Tagging Rules](/shippers/tagging-rules/overview).                                                                                 |
| **Date**             | The load date — the pickup date of the first stop — grouped by day, week, month, or quarter.                                                                                                                                        |

## When Two Numbers Don't Match

A few differences are expected rather than errors.

<AccordionGroup>
  <Accordion title="Spend on one dashboard doesn't match another">
    Check whether one is using order-level freight cost and the other load cost, whether one breaks out fuel and accessorials while the other is all-in, and whether the period holds a different mix of invoiced and uninvoiced loads.
  </Accordion>

  <Accordion title="Two on-time rates disagree">
    Almost always the appointment versus RDD difference, or one metric measuring pickup while the other measures delivery. Dock scheduling analytics are measured differently again — see [Dock Scheduling Metrics](/facilities/dock-scheduling-metrics).
  </Accordion>

  <Accordion title="A number changed since I last looked">
    Expected. Invoices arrived and replaced tendered costs, loads completed and entered the on-time calculation, or a setting changed and recalculated history.
  </Accordion>

  <Accordion title="Load counts differ between two metrics">
    Different metrics leave out different incomplete records. A count of all loads will be higher than the count behind per-case costs, because that one drops loads with no order data.
  </Accordion>

  <Accordion title="Load counts differ from another system">
    Owlery filters out cancelled and test loads.
  </Accordion>

  <Accordion title="A month boundary doesn't match my TMS or ERP">
    Owlery groups on pickup date, in facility local time. If your other system groups on delivery or invoice date, or converts everything to a single time zone, loads near the end of a month will land in different months.
  </Accordion>
</AccordionGroup>

If a difference isn't explained by one of these, email [support@owlery.ai](mailto:support@owlery.ai) with both dashboard names and the period you're looking at.

## More Dashboards Coming

We're documenting dashboards as they're finalized, so this section keeps growing. Dashboards for spend, lane performance, carrier scorecards, and invoice trends are under active development.

Have one you'd like documented first? Email [support@owlery.ai](mailto:support@owlery.ai) and let us know.
