# Completed Shifts Export

Source: https://docs.astalty.com.au/guide/exports/completed-shifts-export

> Download a CSV of completed Support Worker shifts by date range to compare rostered versus actual work.

Scheduling add-on - This feature requires the Scheduling add-on, which is available on Astalty Premium. See How to enable Scheduling.

## Overview

The [Completed Shifts Export](https://app.astalty.com.au/exports/create/completed-shifts) provides a CSV file of all Support Worker shifts that have been completed, filtered by date range. This export offers a clear overview of all scheduled work that has been completed, helps identify variations in what has been rostered vs what actually occurred, and can be customised to include missed clock ins/outs.

## Accessing the Completed Shifts Export

1. From the left-hand side menu, click **Exports** (under **Insights** when your menu is grouped into sections), then click **Create Export**.
2. Select the **Shifts** category.
3. Select **Completed Shifts**.

![The Create Export page with marker 1 on Exports under Insights in the main menu, marker 2 on the Shifts tab and marker 3 on the highlighted Completed Shifts row, Export all completed Shifts.](https://docs.astalty.com.au/assets/cus-737/completed-shifts-export-list.png)

## Configure the Export

Before selecting Create Export, use the available options to configure the export.

![The Completed Shifts Export form with the Export Filters section highlighted: From 02/11/2026, To 08/11/2026, Participants, Participant Tags, Users and the Include incomplete shifts option, with an arrow pointing to Create Export](https://docs.astalty.com.au/assets/cus-737/completed-shifts-export-filters.png)

### Set the Date Range

This will generate an export containing all completed shifts for the selected duration. You can also use the **This week**, **Last week**, **Last month**, and **Last quarter** shortcuts to set the range quickly.

A shift is exported when it **starts** inside the range and has already finished. A support running 4:00 PM Sunday to 9:00 AM Monday is exported for a range ending on the Sunday, but only once it has ended. One still running when you create the export is left out until the next time you run it. See [Date Ranges and Overnight Supports](https://docs.astalty.com.au/guide/scheduling/adding-shifts/creating-a-sleepover-or-active-overnight-support#date-ranges-and-overnight-supports).

Typing the **To** date and picking a shortcut give the same result: either way the range covers the whole of that final day.

> **Re-running an older export can return extra rows**
>
> Overnight shifts starting on the final day of the range were previously left out, as was the whole of that day when the **To** date was typed rather than set from a shortcut. Both are fixed, so re-creating an export you ran before may return rows the earlier file was missing.

### Participants

This field is optional. If left blank, the Export will include completed Shifts for **all Participants** within the selected date range, subject to the Users selection. You may select one or multiple Participants to limit the results to specific individuals.

### Participant Tags

This field is optional. Select one or more [Participant Tags](https://docs.astalty.com.au/guide/participants/profile/participant-tags) to include all Participants who have any of the selected tags. You can combine tags with individually selected Participants - the export covers everyone matched by either selection, with no duplicates. If left blank, the export uses your Participant selection (or all Participants if none are selected).

### Users

This field is also optional and allows you to further refine the Export based on the **Users involved in the completed Shifts**. If left blank, the Export will include completed Shifts for **all Users** within the selected date range, subject to the Participant selection.

### Include Incomplete Shifts

By default, the export only includes shifts with both a clock-in and a clock-out. Turn on **Include incomplete shifts** to also include finished shifts with no clock-in or no clock-out time.

## Generating the Export

Click on the **Create Export** button.

## Downloading the Export

When the export is ready it will appear on the [Exports](https://app.astalty.com.au/exports) page where you can click on **Download** to save it to your device.

> **Export taking longer than expected?**
>
> All exports run in the background. If the export takes at least 20 seconds to become ready, Astalty also emails you. Download it from the Exports page.

## Exported Fields

The export displays key details for each shift, including:

- **Support Worker**
- **Row Type** - Whether the row is the shift itself (**Shift**) or one of its travel records (**Travel Duration** or **Travel Distance**). See the note below on how travel appears.
- **Shift Type** - Distinguishes each shift as a **Support Shift**, **Group Support Shift**, **Internal Shift**, or **Unpaid Break**.
- **Cost Code** - The [cost code](https://docs.astalty.com.au/guide/finance/cost-codes) assigned to the shift. This column only appears when cost codes are enabled in your scheduling settings.
- **Custom Allowances** - The names of the shift's [custom allowances](https://docs.astalty.com.au/guide/scheduling/setup/custom-allowances), separated by commas. This column only appears when your account has shifts with custom allowances and your role can see them.
- **Rostered Start Time**
- **Rostered End Time**
- **Clock In Time**
- **Clock Out Time**
- **Timezone** - The shift's timezone, shown as the city name (for example **Sydney** or **Perth**). This column only appears when [Multi-Timezone Scheduling](https://docs.astalty.com.au/guide/scheduling/setup/scheduling-settings#multi-timezone-scheduling) is enabled.
- **Rostered Duration (minutes)** - The rostered length of the shift, as a whole number of minutes. A two-hour shift shows as `120`.
- **Actual Duration (minutes)** - The clocked length of the shift, as a whole number of minutes.
- **Rostered Travel Time (minutes)**
- **Actual Travel Time (minutes)**
- **Rostered Travel Distance (km)**
- **Actual Travel Distance (km)** - Calculated from the odometer readings recorded against the travel.
- **Approved Travel Distance (km)**
- **Participant Signed Off** - If the Participant has signed off on the shift, **Yes** will be displayed in this column.

Duration cells stay blank when Astalty does not have both times needed to calculate them. **Rostered Duration** needs the rostered start and end, **Actual Duration** needs clock-in and clock-out, and **Actual Travel Time** needs the travel start and end. This is especially useful when **Include incomplete shifts** is on: a missing time is not shown as zero minutes.

> **Travel is exported on its own rows**
>
> A shift with travel produces more than one row: one **Shift** row, plus a **Travel Duration** and/or **Travel Distance** row for each travel record. Each row only fills in the columns that apply to it, so travel rows leave the shift duration and sign-off columns blank, and the **Shift** row leaves the actual travel columns blank. Use the **Row Type** column to tell them apart, and filter to **Shift** rows if you only want one row per shift.

![A completed shifts export with three rows for one Support Worker, told apart by the Row Type column. The Shift row holds the rostered and clock times and both durations, the Travel Duration row holds the travel times, and the Travel Distance row holds the rostered travel distance.](https://docs.astalty.com.au/assets/complete-shifts-export-1-guide.png)
