---
title: "Define shifts and your timezone"
description: "How to set the hours IoTFlows reads your plant by. One Schedule Timezone covers the whole organization, and the work shifts sit under it in the Schedules panel of Organization Settings at /settings/organization; both save together behind one Edit and one Save, confirmed by a \"Work shifts modified\" toast. A shift carries a name, the days it runs, a start time, and an end time on 15-minute steps. A shift whose end time is at or before its start time runs past midnight and is entered on the day it starts, so a Friday night shift is one entry with Friday checked; the Assets page then shows that shift whole while reports split it at midnight unless Shift islands is on. Shifts cannot overlap, but the platform does not enforce it, so keeping them distinct is on you. Shifts bucket data as it arrives, so an edit changes how new data is bucketed and does not rewrite reports already computed."
category: "Organization settings"
source_url: "https://www.iotflows.com/docs/admin/shifts-and-timezone/"
---
# Define shifts and your timezone

Align every number in IoTFlows with the hours your plant actually works.

A *shift* is a named block of hours on named days, for example Night, 22:00 to 06:00, Monday through Friday. IoTFlows sorts every stop, cycle, and part count into the shift and the day it fell in, read against one organization-wide timezone. Both settings live in the **Schedules** panel of Organization Settings, at `/settings/organization`, and they save together.

**Before you start.** You need to be an *Organization Owner* or an *Organization Administrator*. See [Roles and permissions](/docs/admin/roles-reference/).

## Set the organization timezone
1. Open Organization Settings from the gear at the top right of the header, and scroll to the **Schedules** panel.
2. Select **Edit** at the panel's top right. Nothing in the panel is editable until you do.
3. Open **Schedule Timezone** and pick the zone the plant runs on.
4. Select **Save**. A "Work shifts modified" toast confirms it.

The dropdown lists named zones, for example `(GMT-05:00) Eastern Time (US & Canada)`, rather than raw offsets. A named zone carries its own daylight-saving rule, so your 06:00 shift still starts at 06:00 on the Monday after the clocks move.

One zone covers the whole organization. There is no per-shift timezone field, so an organization running plants in two zones aligns its shifts with one of them. Pick the zone of the plant whose reports are read most, and read [Troubleshoot wrong utilization or OEE](/docs/monitoring/troubleshoot-monitoring/#shift-boundaries) before you explain the other plant's numbers.

![The Schedules panel of Organization Settings in edit mode, with Cancel and Save at its top right. The Schedule Timezone row sits below them, its dropdown highlighted and reading (GMT-05:00) Eastern Time (US and Canada).](/images/admin/adm-shift-01.webp)

*The Schedule Timezone dropdown in the Schedules panel of Organization Settings. Set this first.*

## Why the timezone comes first
The zone decides which day and which shift each reading belongs to. Get it wrong and every number in the product is wrong by the offset, while each one still looks plausible. A machine in Ohio reporting under a Pacific zone credits its evening output to the following day, and the night shift reads as though it produced nothing.

Pick the plant's zone, not the head office's, and not the one you happen to be reading this in.

The timezone and the shift list save in a single request, so there is no way to change one without the other. Read both back before you leave the panel.

> **Info:**
> **Why can I open this panel without an admin role?**
>
> The **Schedules** panel renders its **Edit** button for every signed-in member, unlike the device-assignment block above it. IoTFlows enforces the role when the request reaches the platform. Treat the [permission matrix](/docs/admin/roles-reference/#matrix) as the rule, not the controls you happen to see.

## Add a shift
Still in **Edit** on the **Schedules** panel:

1. Enter a name in **Shift Name**, for example `Day`.
2. Check the days the shift runs. The checkboxes are Monday through Sunday.
3. Set **Shift Start** and **Shift End** on the two time pickers.
4. Select **Add another shift**, and repeat for each remaining shift.
5. Select **Save**. The "Work shifts modified" toast covers the shifts and the timezone together.

Nothing is written until you select **Save**, and **Cancel** discards every row you added.

Define shifts even if you run one. Every report, every [auto-downtime rule](/docs/monitoring/auto-downtime-rules/), and every [operator view](/docs/monitoring/operator-view/) buckets by shift, and a plant with no shifts defined reads its whole day as one undifferentiated block. [Working hours](/docs/production/scheduler/#working-hours) on the scheduler stays switched off until at least one shift exists.

![The Schedules panel with the Schedule Timezone row above the Work Schedule list and its note that shifts can't overlap in time. The list is alphabetical: Afternoon Shift, Mon through Fri, 14:00:00 to 22:00:00; Day Shift, Mon through Fri, 06:00:00 to 14:00:00; Night Shift, Mon through Fri, 22:00:00 to 06:00:00. Four callouts sit on the Day Shift entry: 1 on the shift name in italics, 2 on the days abbreviated to three letters, 3 on the start time and 4 on the end time.](/images/admin/adm-shift-02.webp)

*Three shifts covering the day, including one crossing midnight.*

A *shift window* is the stretch of clock time one shift covers on one date, for example Night on Friday 12 June, 22:00 to 06:00 the next morning. The shift selector on a report picks a window, not a shift. It preselects the window running right now, and falls back to **All Day** when the current time sits outside every shift.

## Shift fields
| Field | Required | Accepts | Notes |
|---|---|---|---|
| **Shift Name** | Yes | Free text | Labels the bucket in every shift filter, report, and gauge. Give each shift a distinct name. |
| Days | Yes | Any of the seven checkboxes, Monday through Sunday | A row with no day checked is ignored, so the shift never appears in a filter. Check the days the shift *starts*. |
| **Shift Start** | Yes | A time, on 15-minute steps | The field is not typeable: set it on the clock that opens when you select it. A new row starts at 8:00 AM. |
| **Shift End** | Yes | A time, on 15-minute steps | At or before the start time makes the shift [overnight](#overnight). A new row starts at 5:00 PM. |
| **Schedule Timezone** | Yes | One named zone for the whole organization | Saved with the shift list, never on its own. |

Times are stored and listed to the second, so the read-only list shows `06:00:00 - 14:00:00`. You cannot set the seconds, only the hours and the quarter hour.

![A single shift row in the Schedules panel in edit mode, under the Work Schedule heading and its italic note that shifts can't overlap in time. A text field holding Day Shift sits at the top with a remove cross to its right, checkboxes labeled Monday through Sunday sit below it with Monday through Friday checked, and two pickers labeled Shift Start and Shift End read 08:00 AM and 05:00 PM, each with a clock icon beside it.](/images/admin/adm-shift-03.webp)

*One shift row in edit mode: the Shift Name field, the seven day checkboxes, and the Shift Start and Shift End pickers.*

## Overnight shifts
A shift whose end time is at or before its start time runs past midnight into the next day. Night, 22:00 to 06:00, is one shift of eight hours, not two entries.

Check only the days the shift **starts**. A night shift that runs Friday 22:00 into Saturday 06:00 is a single entry with Friday checked. Adding a second entry for the Saturday morning both double-counts the hours and overlaps.

A shift that ends at the same time it starts, for example 06:00 to 06:00, covers a full 24 hours. Use it for a continuous operation that has no break in coverage on the days it runs.

### Where the overnight hours land
The live views and the reports divide an overnight shift differently, so the same Friday night shift can give you two different hour counts.

The [Assets page](/docs/monitoring/assets-overview/#window) and a machine's own page show the shift whole. Select Friday's night shift and you get all eight hours, 22:00 through 06:00, with no break at midnight.

Reports split the shift at midnight. A Friday report on that shift counts 22:00 to 24:00 only, and the six morning hours report on Saturday.

To report the shift whole, turn on **Shift islands** in the **Shifts** filter. It puts an overnight shift entirely on the day it begins, so Friday carries all eight hours. It is available on the [Advanced Report](/docs/monitoring/advanced-report/#shift-islands) and the [Downtimes report](/docs/monitoring/downtimes/#filters-reference), and nowhere else.

Turn it on for any shift that crosses midnight. For a shift that does not cross midnight it changes nothing: a 08:00 to 17:00 day shift and a 01:00 to 08:00 third shift report identically either way.

**The hours are moved, not lost.** The six morning hours are still counted, against the day after the one they were worked. Two things follow from that, and the second is what misleads people.

A day the shift never runs collects hours. A Monday-to-Friday night shift spills into Saturday, so a Saturday report shows time for a shift that was never scheduled.

A mid-week day can show the right total and the wrong night. Tuesday's eight hours are Tuesday's two before midnight plus Monday night's six after it. The total is right, so nothing on screen suggests you are reading two nights at once.

So the split is easiest to see at the ends of a run. Monday is short the hours that belong to it, and Saturday carries hours that do not.

![A daily stacked bar chart on the Advanced Report for one machine on the Evening Shift, which runs 5 PM to 1 AM Monday through Friday, with Shift islands off. Six blue bars stand over the day labels Mon Sep 21 through Sat Sep 26: Monday is visibly shorter than the four that follow it, Tuesday through Friday are equal, and Saturday is a stub about an eighth their height.](/images/admin/adm-shift-04.webp)

*A 5 PM to 1 AM shift with Shift islands off. Only one hour falls after midnight, so Monday is an hour short and that hour lands on Saturday.*

![The same daily stacked bar chart with Shift islands on. Five blue bars of equal height stand over Mon Sep 21 through Fri Sep 25, and the Saturday column is empty.](/images/admin/adm-shift-05.webp)

*The same shift with Shift islands on. Each night reports whole on the day it began, and Saturday is empty.*

> **Warning:**
> **A night-shift report is missing hours?**
>
> Check which view produced the number before you check the data. A report six hours short against the Assets page is the midnight split, not a sensor gap. Turn on **Shift islands**, or read the shift on the Assets page instead.

## Shifts cannot overlap
The panel states the rule under **Work Schedule**: shifts can't overlap in time. The platform does not enforce it. An overlapping schedule saves like any other, with the same **Work shifts modified** toast, so nothing on screen tells you the schedule is wrong.

Adjust the boundary rather than the second shift's start. A shift ends the instant the next one begins, so Day 06:00 to 14:00 and Afternoon 14:00 to 22:00 do not overlap. If the handover really takes 15 minutes, give the time to one shift or the other; it cannot be in both.

Keep the rule yourself, because nothing else will. Read the shift list back after every save and check that each shift ends where the next one begins.

You do not need a shift for scheduled breaks. A lunch or a cleandown inside the shift is configured as a [break rule](/docs/monitoring/auto-downtime-rules/#breaks), which classifies the stop without taking the time out of the shift. Carving a break out as its own shift instead leaves two shifts with a gap between them, and the machines keep reporting into the gap.

## Edit or delete a shift
Select **Edit** on the **Schedules** panel, change any field on any row, and select **Save**. Every row is rewritten on each save, so a single **Save** can rename one shift, move another's boundary, and change the timezone at once.

To delete a shift, select the cross at the right of its **Shift Name** field, then **Save**. The shift disappears from the shift filter everywhere, for past dates as well as future ones, because the filter lists the shifts you have now.

Renaming has the same reach. The name is how a bucket is labeled in every report and every export, so a rename shows up on historical windows too.

## What changing shifts does to existing data
Shifts bucket data as it arrives. Editing a shift changes how data recorded from now on is sorted, and does not rewrite a report that was already computed under the old schedule. A figure that moved after a shift edit is correct going forward and unchanged historically.

This is why the schedule is worth getting right on day one, before the first machine reports.

> **Warning:**
> **Changing shifts on a plant that is already running?**
>
> Make the edit at a boundary, ideally between the last shift of one week and the first of the next. An edit made mid-shift leaves one window that is half old schedule and half new, and that is the window somebody will question later.

If numbers look wrong straight after an edit, work the checks in order on [Troubleshoot wrong utilization or OEE](/docs/monitoring/troubleshoot-monitoring/#shift-boundaries). The timezone is check one, and the shift schedule is check two.

## See also
- [Classify downtime automatically](/docs/monitoring/auto-downtime-rules/), the start-of-shift, end-of-shift, and break rules that read this schedule
- [How each metric is calculated](/docs/monitoring/metrics-reference/), what a shift window does to each number
- [Troubleshoot wrong utilization or OEE](/docs/monitoring/troubleshoot-monitoring/#shift-boundaries), for production landing in the wrong shift or day
- [Set your organization name, logo, and handle](/docs/admin/org-profile/), the other half of the same settings screen
- [Track production against shift goals](/docs/production/shift-production/), the view that reads one shift at a time
