Agent setup guide
Shift Swap Coordinator
Reads swap requests in Slack, checks them against your rota and rules, gets the manager's OK, then confirms and logs them.
What it does
Reads swap requests in Slack, checks them against your rota and rules, gets the manager's OK, then confirms and logs them.
- Starts within seconds of each new message in your shift-swaps channel in Slack (thread replies and bots are ignored).
- AI decides whether it's a swap request and reads who gives which shift to whom.
- Replies in the thread that it's being checked, then finds the shift on your rota sheet and both people on your staff list.
- Checks role match, weekly hours (with the arithmetic), rest between shifts, clashes and notice against your rules; when details are missing it asks in the thread instead.
- How many days ahead the shift is (for the notice check) is worked out in code, never by the AI.
- The manager approves or declines every swap in Reviews; approved swaps are confirmed in the thread and logged to your Swaps sheet, declined ones get a kind reply.
What it needs
- A paid plan (agents run live on paid plans).
- An AI provider key (Settings → AI Providers).
- Slack and Google Sheets, connected in Settings → Integrations, with the app invited to your shift-swaps channel.
- A rota sheet (one row per shift) and a staff list with each person's Slack ID, roles and max hours.
What it doesn't do
- It doesn't edit the rota: the manager updates it, and the swap is logged to your Swaps sheet.
- It never approves a swap itself; every swap waits for the manager.
- It doesn't handle pay, overtime approval or time-off requests.
- Its checks are only as good as the rota and staff list in your sheet.
Availability and plans
Available
Its workflow is built and tested, and every app it needs is live. You can get it and set it up now.
Included free on the Enterprise plan; on other paid plans it's a one-time purchase per workspace (the price is on the Agents page). The Agents page in the app always shows its current status.
Before you start
- A paid plan: agents run live, and the Free plan only runs Dry Runs.
- An AI provider key (OpenAI, Anthropic, Google and more) in Settings → AI Providers. AI usage is billed by your provider.
- These apps, connected in Settings → Integrations: Slack and Google Sheets.
- The app it watches, connected in Settings → Integrations (the agent starts from an app event).
- About 25 minutes.
Set it up step by step
Get the agent first (buy it, or it's already yours when your plan includes it), then in Agents → My agents press “Set up this agent”. That creates the agent's workflow in your workspace (it counts towards your plan's workflow limit) and opens the canvas with a setup checklist above it. Each item links to the exact place to go and ticks itself off when it's done.
1. Connect your AI provider
The AI steps run on your own key (OpenAI, Anthropic, Google and more). Add one in Settings → AI Providers.
2. Connect Slack
Connect your Slack workspace (Settings → Integrations → Slack) and invite the app to your shift-swaps channel.
3. Connect Google Sheets
Connect the Google account that can open your rota (Settings → Integrations → Google Sheets).
4. Pick your shift-swaps channel
Open the trigger, pick your Slack account and the channel.
| Setting | What to enter | In step |
|---|---|---|
| Slack account (swaps channel) | The Slack workspace with your shift-swaps channel. Pick your connected Slack account. | “New message in #shift-swaps” |
| Shift-swaps channel | The channel where staff post swap requests. Invite the app first (/invite @Fluxo Flow). | “New message in #shift-swaps” |
5. Pick your Slack account in each reply
Open the four Slack reply steps and pick your account.
| Setting | What to enter | In step |
|---|---|---|
| Slack account (reply) | The same Slack workspace. Pick your connected Slack account. | “Let them know it's being checked” |
| Slack account (ask for details) | The same Slack workspace. Pick your connected Slack account. | “Ask for the missing details” |
| Slack account (confirm) | The same Slack workspace. Pick your connected Slack account. | “Confirm in the thread” |
| Slack account (declined) | The same Slack workspace. Pick your connected Slack account. | “Tell them it wasn't approved” |
6. Describe your swap rules
Open “Check the swap against the rota and your rules” and replace the placeholder.
| Setting | What to enter | In step |
|---|---|---|
| Your swap rules | Replace the placeholder with your max hours per week, minimum rest between shifts, which roles can cover which, the notice you need and the manager's name. It starts as “[DESCRIBE YOUR SWAP RULES: MAX HOURS PER WEEK, MINIMUM REST BETWEEN SHIFTS, WHICH ROLES CAN COVER WHICH, NOTICE NEEDED AND THE MANAGER'S NAME HERE]” until you replace it. | “Check the swap against the rota and your rules” |
7. Pick your rota, staff list and Swaps log
Open “Read the rota”, “Read the staff list” and “Log the swap” and pick the account, spreadsheet and tab for each.
| Setting | What to enter | In step |
|---|---|---|
| Google account (rota) | The Google account that can open your rota spreadsheet. Pick your connected Google Sheets account. | “Read the rota” |
| Rota spreadsheet | Paste the link of your rota spreadsheet. | “Read the rota” |
| Rota tab | One row per shift: Date, Start, End, Role, Name. | “Read the rota” |
| Google account (staff list) | The same Google account. Pick your connected Google Sheets account. | “Read the staff list” |
| Staff list spreadsheet | Paste the link of the spreadsheet with your staff list (often the same as the rota). | “Read the staff list” |
| Staff list tab | Name, Slack ID, Roles, Max hours. | “Read the staff list” |
| Google account (Swaps log) | The same Google account, with edit access. Pick your connected Google Sheets account. | “Log the swap” |
| Swaps log spreadsheet | Paste the link of the spreadsheet with your Swaps tab. | “Log the swap” |
| Swaps tab | A tab where each approved swap is added as a row: Logged at, Shift date, Time, Role, From, To, Status, Checks. | “Log the swap” |
8. Test it with Dry Run
Press Dry Run: the agent runs on sample data with no messages sent and nothing written to your apps.
9. Switch the trigger on
Open the trigger and click “Activate app trigger”: new messages in the channel start a run within seconds.
How it works
The agent is a normal workflow with 18 steps (2 AI steps, with a person approving in Reviews). You can open, edit and monitor it like any other workflow.
- New message in #shift-swaps — Starts on “New message in channel (instant)” in Slack (an app event). Starts within seconds of each new message in your shift-swaps channel (delivered by Slack; the app's own messages and thread replies don't start it).
- Read the swap request — AI step (runs on your AI provider key). AI works out whether the message is a swap request and, if so, who is giving up which shift and who is covering it.
- A swap request? — Decision: picks the branch to follow. Messages that aren't swap requests are left alone.
- Not a swap — Kept in the run history. Branch: Not a swap. Ordinary chat in the channel: nothing posted.
- Let them know it's being checked — Slack: Reply in a thread. Branch: Swap request. Replies in the message's thread that the swap is being checked against the rota and sent to the manager.
- Read the rota — Google Sheets: Read rows. Reads your rota sheet: one row per shift (date, start, end, role, person).
- Read the staff list — Google Sheets: Read rows. Reads your staff list: name, Slack user id, roles they can work and contracted hours.
- Work out the shift date — Step. In code, not AI: how many days from today the shift is, and its weekday (for the notice check), in the trigger's time zone. It never stops the request.
- Check the swap against the rota and your rules — AI step (runs on your AI provider key). AI finds the shift on the rota, matches both people on the staff list, and checks role, weekly hours, rest between shifts and clashes against your rules. Problems are flagged for the manager; missing details are asked for in the thread.
- Enough to decide? — Decision: picks the branch to follow. When the shift, requester or cover can't be pinned down, the agent asks in the thread instead of bothering the manager.
- Ask for the missing details — Slack: Reply in a thread. Branch: Needs details. Replies in the thread asking for exactly what's missing (who covers, which shift).
- Asked for details — Kept in the run history. The question posted in the thread is in the run history. A new message in the channel starts a new check.
- Manager approves the swap — A person approves or rejects it in Reviews (the run waits). Branch: Ready. The swap, with every check (role, hours, rest, clashes, notice), waits in Reviews for the manager to approve or decline.
- Confirm in the thread — Slack: Reply in a thread. Branch: Approved. Posts the manager's approval in the request's thread, mentioning both people.
- Log the swap — Google Sheets: Add a row. Adds the approved swap to your Swaps sheet (date, time, role, from, to, checks), so the manager can update the rota and payroll can see it.
- Swap approved and logged — Kept in the run history. Confirmed in Slack and logged; the manager updates the rota.
- Tell them it wasn't approved — Slack: Reply in a thread. Branch: Declined. Posts a kind note in the thread asking the requester to speak to the manager.
- Declined — Kept in the run history. The manager declined; the requester was told in the thread.
Test it with Dry Run
Press Dry Run in the canvas. The agent runs on the sample data stored on its trigger (the “Sample data for Dry Run” box), so you can check every step's output before anything is live. The sample has the same shape as a real event from the app.
Sample data fields
text, user, ts, thread_ts, channel, subtype, bot_id, team_id, event_id.
- Nothing is sent or written: app actions, emails and Slack posts are simulated, and AI steps don't call your AI provider.
- Approval steps use the Dry Run decision you pick in the step's settings (approved, rejected or timeout), so you can try each branch.
Go live
- Open the trigger and click “Activate app trigger”: new messages in the channel start a run within seconds.
- Activating the app trigger needs the trigger's connected account. The first check only remembers what's already there, so older items don't start runs; the same item never starts two runs.
- The setup checklist adds a “paid plan” item before activation: live runs need a paid plan (the Free plan only runs Dry Runs).
- When every checklist item is done and the trigger is on, the checklist says “Live — this agent is running”. Follow its runs in the workflow's History tab and in Analytics → Agents.
Questions
Does it change the rota?
No. The manager approves the swap and updates the rota; the agent confirms it in Slack and logs it to your Swaps sheet.
What should the sheets look like?
Rota: one row per shift with Date, Start, End, Role and Name. Staff list: Name, Slack ID, Roles and Max hours per week. Swaps: any empty tab — each approved swap is added as a row.
Only restaurants?
No. Any shift-based team on Slack works: retail, care, venues, events, warehouses.
Troubleshooting
- “No AI provider connected” or a rejected key: connect or fix the key in Settings → AI Providers, then press Test there.
- A checklist item stays unticked: the setting is still empty or still contains its placeholder text. Open the step from the checklist and fill it in.
- An app step fails with “Needs reconnect”: the account's access was revoked or expired. Reconnect it in Settings → Integrations.
- Slack says the app isn't in the channel: in Slack, type /invite @Fluxo Flow in that channel (always needed for private channels).
- No runs start: activate the app trigger with a connected account. Only items created after activation start runs.
- A run shows as paused: it's waiting for someone in Reviews to approve or reject it.
- A step failed: open the run in History and check that step in the Trace tab for the error and what it received.
Generated from the agent's own workflow, so it always matches what the agent does. Last updated .