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

# Supplemental data

> Attach your own per-employee data points—like tenure, level, or prior ratings—to a review cycle so calibration participants can see the full picture.

Supplemental data lets cycle admins attach company-owned, per-employee data points to a performance review cycle—context that Windmill doesn't collect through review forms. Once loaded, that data appears inside [calibration](/features/performance-reviews/calibration) as extra axes, table columns, and packet details, so facilitators and committee members can compare reviewees with the full picture in front of them.

Common examples of supplemental data:

* Compensation band
* Tenure or time in role
* Sales attainment or other external performance metrics
* Promotion nominations or flags from another system

<Note>
  Supplemental data is loaded through the Windmill API—there's no in-app upload form or CSV importer today. See the [Supplemental cycle data API reference](/api-reference/performance-reviews/supplemental-cycle-data) for endpoint details.
</Note>

## How supplemental data works

Each review cycle can hold one set of supplemental **fields** (the definitions) and one set of **values** per employee (the data). Both are scoped to a single cycle—data loaded into one cycle doesn't appear in another.

<Steps>
  <Step title="Define the fields">
    A cycle admin defines the cycle's supplemental fields via the API—for example, a "Level" single-select field and a "Tenure (years)" scale field.
  </Step>

  <Step title="Load the values">
    The admin pushes per-employee values for those fields, matching employees by email or employee ID.
  </Step>

  <Step title="Use it in calibration">
    The data appears automatically in the cycle's calibrations—in the axis picker, grid, table, reviewee packets, and the AI pre-read report.
  </Step>
</Steps>

There's nothing to enable: supplemental data is available on every cycle, and any cycle admin can load it.

### Supported field types

Supplemental fields use the same types as review questions:

| Type          | Example                             |
| ------------- | ----------------------------------- |
| Text          | Free-form notes from another system |
| Single-select | Job level: L3 / L4 / L5             |
| Multi-select  | Skills or focus areas               |
| Boolean       | Promotion nominated: yes/no         |
| Scale         | Tenure in years: 0–20               |
| Numeric       | Sales attainment: 103.5%            |
| NPS           | A 0–10 score                        |
| Rating        | Prior cycle rating: 1–5 points      |

## Where supplemental data appears in calibration

Supplemental data is **read-only everywhere it appears**. To change supplemental data, a cycle admin updates it through the API.

### Axis picker and grid

Supplemental fields appear in the calibration axis picker under a **Supplemental data** group. A field only shows up once it has at least one value for a reviewee in that calibration—defined-but-empty fields stay out of the way.

In grid view, you can use a supplemental field as one or both of the grid's two dimensions. For example, plot overall rating against job level to check that ratings are consistent within each level. Reviewees are bucketed by their supplemental value, and the cells are read-only.

### Table view

Supplemental fields can be added as columns in table view and sorted like any other column. The one exception: multi-select fields can't be used as a sort column.

### Reviewee packets

When a calibration's cycle has supplemental data, each reviewee's packet gains a **Supplemental Data** tab listing every field and that reviewee's current value. Reviewees without a value for a field show "No response."

### Pre-read report

Supplemental values are included in the context Windy uses to generate the calibration pre-read report, so the narrative can reference them.

If supplemental fields or values change after the pre-read is generated, the report is marked stale. Facilitators can click **Regenerate** to refresh it with the latest data.

## Access and visibility

Supplemental data often contains sensitive information, so access is tightly scoped:

| Who                                            | What they can see                                                                 |
| ---------------------------------------------- | --------------------------------------------------------------------------------- |
| Cycle admins                                   | Everything—define fields and read or write all values via the API                 |
| Calibration facilitators and committee members | Values for reviewees in their calibration, read-only, inside calibration surfaces |
| Managers                                       | Nothing, unless they're in a calibration (as above)                               |
| Employees (reviewees)                          | Nothing—supplemental data is never shown to the person it describes               |

<Warning>
  Supplemental data is never visible to employees. It isn't part of the review packet employees receive when reviews are [shared](/features/performance-reviews/releasing-reviews), and it's excluded from every employee-facing surface.
</Warning>

For how this fits into review visibility more broadly, see [Who sees what](/features/performance-reviews/visibility).

## Updating data mid-cycle

Cycle admins can update supplemental data at any time—there's no lock when calibration starts. Updates follow a few safety rules:

* **Uploads are full replaces.** Removing a field deletes its values, and omitting a field when re-uploading an employee's values deletes that value—so always send each employee's complete data.
* **Renaming is safe.** Changing a field's label (or an option's label) keeps existing values. Changing a field's *type* deletes its old values, since they no longer fit.
* **Updates are per-employee.** Uploading values for some employees leaves everyone else's values untouched.
* **The pre-read notices.** Any change to fields or values marks generated calibration pre-reads as stale so facilitators know to regenerate.

## FAQs

<AccordionGroup>
  <Accordion title="Can employees see their own supplemental data?">
    No. Supplemental data is never shown to reviewees—not in their released review, not anywhere else in Windmill. It's visible only to cycle admins and, inside calibration, to that calibration's facilitators and committee members.
  </Accordion>

  <Accordion title="Do I need to enable anything to use supplemental data?">
    No. It's available on every review cycle. You just need to be a cycle admin and have a Windmill [API key](/api-reference/overview#authentication) to load the data.
  </Accordion>

  <Accordion title="Can I upload supplemental data with a CSV file?">
    Not currently. Supplemental data is loaded through the [API](/api-reference/performance-reviews/supplemental-cycle-data). Most teams script the upload from their HRIS or data warehouse so it stays in sync.
  </Accordion>

  <Accordion title="Why doesn't my field appear in the calibration axis picker?">
    A supplemental field only appears in a calibration once at least one reviewee in that calibration has a value for it. Check that you've uploaded values for employees who are actually in the calibration, and that a later upload didn't omit the field—each upload fully replaces an employee's values.
  </Accordion>

  <Accordion title="Can facilitators edit supplemental values during calibration?">
    No. Supplemental data is read-only on the calibration board, in packets, and in the table. Only cycle admins can change it, via the API. Facilitators can still adjust ratings from review questions as usual.
  </Accordion>

  <Accordion title="What happens if I update supplemental data after the pre-read is generated?">
    The pre-read report is marked stale so facilitators know it no longer reflects the latest data. A facilitator can click **Regenerate** to rebuild it with the updated values.
  </Accordion>
</AccordionGroup>

## Related reading

* [Supplemental cycle data API reference](/api-reference/performance-reviews/supplemental-cycle-data) — Endpoint details for loading fields and values
* [Calibration](/features/performance-reviews/calibration) — Where supplemental data is put to work
* [Who sees what](/features/performance-reviews/visibility) — Visibility rules across performance reviews
* [Cycles](/features/performance-reviews/cycles) — Setting up a review cycle
