# Components

A component is a part of your service that customers see on a [status page](/status-pages/introduction), for example "API", "Website" or "Checkout". Spectate sets the status of each component from the incidents and maintenance that you publish. You do not set a component's status by hand.

## Add a component

1. In the dashboard, open the status page and go to the **Components** tab.
2. Select **Add component**.
3. Type a **Name**, for example `API`.
4. Optional: type a **Group**, for example `Core services`.
5. Optional: type a **Description**. Visitors see it on the public page.
6. Optional: select a **Linked monitor**.
7. Select **Create component**.

New components go to the end of the list. Use **Move up** and **Move down** on a component to change the order. Use **Edit** to change a component and **Delete** to remove it.

## Groups

A group is a heading with components under it. To put a component in a group, type the group name in the **Group** field. Components without a group show under **Ungrouped** in the dashboard.

Each group has a default state on the public page: **Expanded** or **Collapsed**. Visitors can open and close a group. The default state only sets how the group shows when the page loads.

## Component statuses

| Status | Value | Public label | Meaning |
|---|---|---|---|
| Operational | `operational` | Operational | Works normally. |
| Degraded | `degraded_performance` | Degraded performance | Slower or less reliable than usual. |
| Partial outage | `partial_outage` | Partial outage | Down for some visitors or some functions. |
| Full outage | `major_outage` | Full outage | Down. |
| Maintenance | `under_maintenance` | Maintenance | In planned maintenance. |

## How Spectate sets the status

A component's status is the worst of these, in this order:

1. The worst impact on the component from open [incidents](/status-pages/incidents). An incident impact is `degraded_performance`, `partial_outage` or `major_outage`.
2. `under_maintenance`, if a [maintenance](/status-pages/maintenance) that affects the component is in progress.
3. `operational`, if nothing else applies.

Any incident impact is worse than maintenance. Spectate calculates the status again each time an incident, an update, an impact period or a maintenance changes. When you resolve an incident, its components go back to `operational`, unless another incident or maintenance still affects them.

The headline of the page is the worst status of all components. On the **Components** tab, each component shows its status and the incident or maintenance that causes it, for example "Partial outage · from API errors".

### Change a component's status

You cannot set a status on a component directly. To change it, do one of these:

- Publish an incident, or post an update, with an impact on the component.
- Edit the impact timeline of an incident. See [incidents](/status-pages/incidents).
- Schedule a maintenance that affects the component.

## Link a monitor

Link a component to an [uptime monitor](/monitors/introduction) to get measured uptime and latency, and to let the monitor open incidents. Select the monitor in the **Linked monitor** field. You can link one monitor per component, from the same team. You cannot link a host.

A linked monitor gives the component these things:

- **Measured uptime.** The uptime bars use the checks of the monitor. A day's colour is the worse of the measured downtime and the incident impacts of that day.
- **A latency chart.** Turn on **Show primary-region latency chart** on the component. The chart shows the response time of the last 24 hours. It only shows for components with a linked monitor.
- **Automatic incidents.** These need the automation setting of the page. See below.

A linked monitor does not change the component's status by itself. Only incidents and maintenance change the status.

Components without a monitor also have an uptime history. Spectate calculates it from the incident impacts. `partial_outage` and `major_outage` count as down. `degraded_performance` and maintenance count as up.

## Automatic incidents from monitors

With automation, a monitor opens and resolves a public incident for each component that it is linked to.

1. Go to **Settings → Automation** on the status page.
2. Select **Open and resolve incidents from linked monitors**.
3. Optional: type a **Down message** and a **Recovered message**.
4. Select **Save automation**.

Automation is off by default. When it is on, Spectate does these things:

- **The monitor goes down.** When the downtime alert of the monitor fires, Spectate opens an incident "`<component>` is down" with the status `investigating`. The component gets `major_outage` from the time the monitor went down.
- **The monitor recovers.** When the alert resolves, Spectate resolves the incident at the recovery time, with the recovered message.
- **The monitor fails again within 30 minutes.** Spectate opens the same incident again, not a new one.
- **Another open incident already affects the component.** Spectate does not open a second incident.

Each component gets its own incident, also when several monitors fail at the same time. If the alert opened a team [incident](/incidents/introduction), Spectate links the public incident to it. Spectate emails subscribers about automatic incidents as for incidents that you publish.

Empty messages use the defaults:

| Message | Default |
|---|---|
| **Down message** | `We are investigating an outage affecting {component}.` |
| **Recovered message** | `{component} has recovered and is operating normally.` |

In all messages, Spectate replaces `{component}` with the component name and `{status_page}` with the page name.

### Take over an automatic incident

The dashboard marks an automatic incident with **Automatic**. If a person posts an update or edits the impact timeline, the incident is no longer automatic. After that, automation does not change or resolve it.

## Related

- [Status page incidents](/status-pages/incidents)
- [Scheduled maintenance](/status-pages/maintenance)
- [Status page components in the API reference](/api-reference/status-page-components)
