# Broadcast open shifts

A broadcast offers one or more open shifts to a list of employees you pick, and the first person to accept is assigned there and then with no approval step. It is composed from the roster's More menu, has no entry in the main navigation, and cannot be withdrawn once sent. Only shifts starting within the next 30 days can be offered.

## Where is the composer?

On the roster, and nowhere else.

Open **Scheduling → Roster**, then either the **More** menu on the toolbar or the row of chips beneath it. Both carry **Broadcast**, and both go to `/dashboard/broadcast-shifts`. The page is headed **Broadcast Shifts**, with a **Back to Roster** link.

Nothing in the main navigation points at it. If you cannot find broadcasting, that is why.

Broadcasting is one of four ways a shift gets filled, and the comparison with the other three is on [Four ways to fill an open shift](/docs/concepts/four-ways-to-fill-an-open-shift).

## What has to be true before a shift can be offered?

The composer only lists a shift if all of the following hold.

- Its status is **scheduled**.
- It is either unassigned, or already flagged as available for application.
- Its date falls between today and the end of the range you pick — **Next 7 Days**, **Next 14 Days** or **Next 30 Days**.

The date range always starts today. A shift more than 30 days out cannot be broadcast at all, and neither can one in the past. If your roster is planned two months ahead, the composer will look empty until the week comes into range.

There is a matching set of conditions on the people.

- An employee is offered only if their **employment status** is active.
- Choosing a site narrows the list to employees whose **primary site** is that site. An employee marked available for other sites is still not listed against a site that is not their own.
- An employee with no linked login gets no notification. The broadcast record is still written against them; nothing reaches them.

There is no filtering by skill, licence or declared availability.

Your role must be **Admin**, **Manager** or **Control**.

## How do you send one?

1. Go to **Scheduling → Roster**, open **More**, and choose **Broadcast**.
2. Set **Site**. A site is pre-selected, so check it — it drives both lists on the page.
3. Set **Date Range**.
4. In **Available Shifts**, tick the shifts to offer. **Select All** and **Deselect All** are at the top of the panel.
5. In **Eligible Employees**, tick who should receive them.
6. Optionally fill **Message (Optional)**. It is appended to the notification each recipient gets.
7. Check the summary — *{n} shifts selected* and *Will be sent to {n} employees* — and press **Send Broadcast**.

There is no confirmation dialog and no undo. The send is immediate.

## What happens when you send?

For each selected shift, one broadcast is created and every selected employee is recorded against it as a recipient in **pending**. The shift is also flagged as available for application, which is what puts it in front of employees who were not on your list.

Each broadcast is given an expiry of 24 hours from the moment you sent it. That figure is an organisation setting with no screen behind it — there is no control anywhere in the application to change it.

Every recipient with a login is sent a notification titled **New shift available**, reading *A shift is open for application*, then the site, date and times, with your message appended if you wrote one. By default that goes to the in-app inbox and as a push; email is off for this notification type unless the recipient turns it on.

## Where do employees respond?

In the mobile app, under **More → Broadcast Offers**. That is the working path, and the one to tell people about.

The web portal has the same screen at `/employee/broadcast-offers`, headed **Shift Offers**, with **Pending** and **History** tabs, a *{h}h {m}m remaining* countdown and **Accept** and **Decline** buttons. But nothing in the employee portal's navigation links to it, and the notification a broadcast sends points at `/employee/shifts`, which is not a page in the employee portal. A web-portal employee has no route to the screen except typing the address.

Accepting assigns the shift immediately. The employee's own screen says so — *Shift accepted! You have been assigned to this shift.* — and the shift moves to **Confirmed**. There is no manager approval step, despite the mobile app's wording about an application being reviewed.

The first acceptance closes the broadcast, so a second person who taps **Accept** afterwards is told *Broadcast is no longer active*. Nobody else is notified that the shift has gone; the offer simply drops out of their pending list next time they look.

## How do you see what happened?

Open the shift on the roster. The shift details dialog grows a **Broadcast** tab when that shift has been broadcast, showing when it went out, its status, the message you wrote, and four counters: **Sent**, **Accepted**, **Declined** and **No response**.

There is no organisation-wide list of broadcasts. The shift dialog is the only admin-side view.

**No response** is always 0. Nothing in the application ever sets that state.

## If it goes wrong

**You sent it to the wrong people, or on the wrong shift.** Nothing can be done. There is no cancel, no withdraw and no delete — the API that creates a broadcast has no counterpart. Assigning somebody else to the shift does not end the broadcast either, so the offer stays live and acceptable until it expires. Fill the shift another way and warn the recipients directly.

**Fewer broadcasts were sent than shifts you ticked.** A shift that already has an active broadcast is skipped silently, and the success message counts only the ones that went out. Check the **Broadcast** tab on each shift you expected to send.

**A shift refuses to broadcast again after the offer lapsed.** This is the same skip, and it is permanent. Nothing sweeps expired broadcasts — the row stays **active** in the database forever, the countdown employees see is worked out at read time, and the rule that allows only one active broadcast per shift therefore blocks that shift from ever being broadcast again. Use direct assignment or shift applications for it instead.

**The Available Shifts panel is empty.** Most often the date range: it starts today, and the shifts you are thinking of are further out. Otherwise the shifts are assigned and not flagged for application, or their status is not **scheduled**.

**An employee you expected is not in Eligible Employees.** Their primary site is a different one, or their employment status is not active.

**A recipient says they never got it.** They may have no linked login, in which case nothing was sent. If they are on the web portal rather than the app, the notification's link is broken — send them to `/employee/broadcast-offers` directly.

## Related

- [Four ways to fill an open shift](/docs/concepts/four-ways-to-fill-an-open-shift)
- [Recurring shift patterns](/docs/organisation/recurring-shift-patterns)
- [Status reference](/docs/reference/status-reference)
- [Overtime and Working Time Directive](/docs/organisation/overtime-and-wtd)
