Browse the docs

Agent setup guide

Client Approval Chaser

Sends a clear approval request for each proof, a firmer reminder after 2 business days and a “deadline at risk” alert in Slack.

Available About 15 min to set up

What it does

Sends a clear approval request for each proof, a firmer reminder after 2 business days and a “deadline at risk” alert in Slack.

  • Starts from each row added to your approvals sheet (an item sent to a client for approval).
  • Reads the needed-by date in code, never by the AI (its weekday, long form and the days left); a past or unreadable date sends the request to the account manager first.
  • AI writes a clear approval request — what to check, how to approve, what the deadline means — and, once code has checked the email and that no placeholders are left, emails it with replies to your team inbox.
  • After 2 business days, checks the row's Status: approved or changes requested stops there; otherwise a firmer reminder goes out.
  • After 1 more business day, if it's still waiting, posts “deadline at risk” to your account team's Slack channel, naming the account manager.
  • Review is off by default; switch it on to approve every request (and its reminder) first.

What it needs

  • A paid plan (agents run live on paid plans).
  • An AI provider key (Settings → AI Providers).
  • Google Sheets and Slack, connected in Settings → Integrations.
  • An approvals sheet with a unique Item column and a Status column you (or your approval form) update.

What it doesn't do

  • It doesn't read email replies: approval is recorded in the sheet's Status, by you or your form.
  • It sends one reminder at most and doesn't change deadlines, the work or the proof.
  • It finds the row by its Item name, so duplicate item names can be confused.
  • Waits need Wait steps (migration 0062) in your workspace.

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: Google Sheets and Slack.
  • The app it watches, connected in Settings → Integrations (the agent starts from an app event).
  • About 15 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 Google Sheets

Connect the Google account that can open your approvals sheet (Settings → Integrations → Google Sheets).

3. Connect Slack

Connect the Slack workspace your account team uses (Settings → Integrations → Slack).

4. Add your approval details

Open “Write the approval request” and replace the placeholder with what clients check, how they approve and your sign-off.

SettingWhat to enterIn step
Your approval detailsReplace the placeholder with your company name, what clients should check, how they approve, what a missed deadline means, your sign-off and whether to review every request (no by default). It starts as “[PASTE YOUR STUDIO OR COMPANY NAME, WHAT CLIENTS SHOULD CHECK FOR YOUR KIND OF WORK, HOW THEY APPROVE (E.G. REPLY “APPROVED” OR USE YOUR APPROVAL FORM LINK), WHAT A MISSED DEADLINE MEANS FOR THEM, YOUR SIGN-OFF AND “REVIEW EVERY REQUEST: NO” (OR YES) HERE]” until you replace it.“Write the approval request”

5. Pick the approvals sheet

Open the trigger, “Check the row” and “Check the row again” and pick the same account, spreadsheet and tab in each.

SettingWhat to enterIn step
Google account (trigger)The Google account that can open your approvals sheet. Pick your connected Google Sheets account.“New item sent for approval”
Approvals spreadsheetPaste the link of the spreadsheet you log approvals in.“New item sent for approval”
Approvals tabThe tab with one row per item sent for approval, e.g. Approvals.“New item sent for approval”
Google account (first check)The same Google account, used to re-read the row. Pick your connected Google Sheets account.“Check the row”
Approvals spreadsheet (first check)The same spreadsheet link.“Check the row”
Approvals tab (first check)The same tab name.“Check the row”
Google account (second check)The same Google account. Pick your connected Google Sheets account.“Check the row again”
Approvals spreadsheet (second check)The same spreadsheet link.“Check the row again”
Approvals tab (second check)The same tab name.“Check the row again”

6. Add your inbox and Slack channel

Open the two email steps and enter the Reply-to address, then “Alert the account team” and pick the account and channel.

SettingWhat to enterIn step
Account team inbox (replies)Client replies to the request come back to this address.“Email the approval request”
Account team inbox (reminder replies)The same address, for replies to the reminder.“Send the firmer reminder”
Slack accountThe Slack workspace your account team uses. Pick your connected Slack account.“Alert the account team”
Account team Slack channelThe channel “deadline at risk” alerts go to, e.g. #account-team.“Alert the account team”

7. Test it with Dry Run

Press Dry Run: the agent runs on sample data with no messages sent and nothing written to your apps.

8. Switch the trigger on

Open the trigger and press “Activate app trigger”. New rows are picked up on your plan's schedule interval.

How it works

The agent is a normal workflow with 22 steps (3 AI steps, with a person approving in Reviews). You can open, edit and monitor it like any other workflow.

  • New item sent for approval — Starts on “New row” in Google Sheets (an app event). Starts a run for each row added to your approvals sheet: client, email, item, proof link, needed-by date and account manager.
  • Check the needed-by date — Step. In code, not AI: reads the row's needed-by date in your time zone (its weekday, long form and the days left) and checks it is today or later. A past or unreadable date doesn't stop the run: the request then waits for the account manager.
  • Write the approval request — AI step (runs on your AI provider key). AI writes a clear approval request: what to check, how to approve and what the deadline means — plus the firmer reminder, ready for later. The needed-by date and its weekday come from the date check.
  • Check before sending — Step. In code: the needed-by date is today or later, there is a client email, and the request and the reminder have no placeholders left. Anything that fails waits for the account manager instead of going out at once.
  • Approve it first? — Decision: picks the branch to follow. Review off (the default), nothing unclear and every code check passed: sent at once. Otherwise the account manager approves the request and its reminder first.
  • Check the request — A person approves or rejects it in Reviews (the run waits). Branch: Review first. The account manager checks the request (and the reminder) in Reviews, edits if needed and approves. Reject to send nothing.
  • Has an email? — Decision: picks the branch to follow. Branch: Send without review / Approved. Rows without a valid client email can't be sent; everything else is emailed (as approved, when review is on).
  • No client email — Kept in the run history. Branch: No email. The row has no valid client email; nothing was sent.
  • Email the approval request — Sends an email from your workspace's sender. Branch: Send. Emails the client the request, with replies to the account team's inbox.
  • Wait 2 business days — Waits 2 business days. Pauses for 2 business days (Monday–Friday).
  • Check the row — Google Sheets: Find a row. Finds the item's row in the approvals sheet to read its Status.
  • Approved yet? — AI step (runs on your AI provider key). AI reads the row's status: approved or changes requested stops here; still waiting gets the firmer reminder.
  • Still waiting? — Decision: picks the branch to follow. Approved or changes requested: stop. Still waiting: the firmer reminder goes out.
  • Dealt with — Kept in the run history. Branch: Dealt with. The client approved or asked for changes; no reminder sent.
  • Send the firmer reminder — Sends an email from your workspace's sender. Branch: Still waiting. Emails the reminder written (and approved, when review is on) with the request.
  • Wait 1 business day — Waits 1 business day. Pauses for 1 more business day.
  • Check the row again — Google Sheets: Find a row. Finds the item's row again to read its Status.
  • Approved now? — AI step (runs on your AI provider key). AI reads the status again and, if it's still waiting, writes the deadline-at-risk alert for the account manager.
  • Still waiting? — Decision: picks the branch to follow. Approved or changes requested: stop. Still waiting: the account manager is alerted.
  • Dealt with — Kept in the run history. Branch: Dealt with. The client approved or asked for changes after the reminder.
  • Alert the account team — Slack: Post a message. Branch: Still waiting. Posts “deadline at risk” to your account team's Slack channel, naming the account manager.
  • Account manager alerted — Kept in the run history. The run history keeps the request, the reminder and the alert.

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

sheet, row._row, row.Client, row.Email, row.Item, row.Proof link, row.Needed by, row.Account manager, row.Status, row_number.

  • 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.
  • Wait steps don't wait: they report how long they would wait and the run goes on.

Go live

  • Open the trigger and press “Activate app trigger”. New rows are picked up on your plan's schedule interval.
  • 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

What should the approvals sheet look like?

One row per item: Client, Email, Item (unique, e.g. “Spring menu proof v2 — job 1042”), Proof link, Needed by, Account manager, Status. The checks find the row by its Item, so keep item names unique and the column named exactly “Item”.

How does it know the client approved?

From the Status cell: type “Approved” (or “Changes requested”) when the client replies, or have your approval form write it. It doesn't read email replies.

Can I approve each request first?

Yes. Change “REVIEW EVERY REQUEST: no” to yes in the request step; the reminder is approved at the same time.

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 run shows “Waiting until …” in History: that's a Wait step; it continues on its own (it can be cancelled through the API).
  • 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 .