Browse the docs

Agent setup guide

Club Release Notifier

One run per release: a personal email for every wine, beer, coffee or cheese club member — their items, a pairing, the swap-or-skip deadline — approved as one batch.

Available About 25 min to set up

What it does

One run per release: a personal email for every wine, beer, coffee or cheese club member — their items, a pairing, the swap-or-skip deadline — approved as one batch.

  • Run once per release: your form posts the release name, ship and pickup dates and the customise-by deadline.
  • Reads the release's items from your Notion release-notes database and your members from Google Sheets.
  • AI drafts a personal email for each member (about 50 per run): their tier's items with tasting notes, a pairing that fits their preferences, how to swap or skip by the deadline, and pickup hours or shipping.
  • Members with a missing address, a ship-to state on your no-ship list, an unknown tier or no email are flagged instead of emailed.
  • The customise-by, ship and pickup dates are written out in code (with their weekdays), never by the AI.
  • The club manager approves the whole batch in Reviews; each approved email is checked in code (not flagged, still marked to send, one valid email, no placeholders) and by an AI wording check that only stops a printed street address, charges and AI mentions — then sent with replies to your club inbox.
  • The counts and the members who need you are posted to Slack.
  • The summary is counted in code from what each step really did (sent, held, skipped, failed), so it never reports a held message as sent.

What it needs

  • A paid plan (agents run live on paid plans).
  • An AI provider key (Settings → AI Providers).
  • Notion, Google Sheets and Slack, connected in Settings → Integrations.
  • A Notion release-notes database and a members tab with the listed columns.
  • A form or tool that posts each release to the webhook.

What it doesn't do

  • It doesn't charge cards or create shipments: process orders in your club system.
  • Age checks and alcohol-shipping law are yours; it only flags the states you list.
  • About 50 members per run by default (each run has a $2 AI cost ceiling); raise it with care.
  • Nothing is sent before the batch is approved.

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: Notion, Google Sheets and Slack.
  • A form, app or system that can send each new item to a webhook URL (the agent starts from a webhook).
  • 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 Notion

Connect Notion and share your release-notes database with the Fluxo Flow integration (Settings → Integrations → Notion).

3. Connect Google Sheets

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

4. Connect Slack

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

5. Pick the release-notes database

Open “Read the release notes” and pick your account and database.

SettingWhat to enterIn step
Notion accountThe Notion workspace with your release-notes database. Pick your connected Notion account.“Read the release notes”
Release-notes databaseThe Notion database with one page per release item: Name (title: the wine, beer, coffee or cheese), Release (select), Tasting notes (text), Pairing (text), Tiers (multi-select).“Read the release notes”

6. Pick your members tab

Open “Read your members” and pick your account, spreadsheet and tab.

SettingWhat to enterIn step
Google account (members)The Google account that can open your members sheet. Pick your connected Google Sheets account.“Read your members”
Members spreadsheetPaste the link of the spreadsheet with your members.“Read your members”
Members tabThe tab with one row per club member (Name, Email, Tier, Preferences, Fulfilment, Ship-to state, Address), e.g. “Members”.“Read your members”

7. Describe your club

Open “Draft the member's release email” and replace the placeholder with your tiers, swap / skip rules, pickup, shipping and no-ship states.

SettingWhat to enterIn step
Your club, tiers and shipping rulesReplace the placeholder with your club's name, each tier and what it gets, how members swap or skip, pickup location and hours, shipping details, the states you don't ship to and your sign-off. It starts as “[PASTE YOUR CLUB'S NAME, EACH TIER AND WHAT IT GETS IN A RELEASE, HOW MEMBERS SWAP OR SKIP (LINK OR REPLY), PICKUP LOCATION AND HOURS, SHIPPING DETAILS, THE STATES YOU DON'T SHIP TO AND YOUR SIGN-OFF HERE]” until you replace it.“Draft the member's release email”

8. Add your club inbox and channel

Open “Email the member” and enter the Reply-to address, then “Post the flagged list to Slack” and pick your account and channel.

SettingWhat to enterIn step
Club inbox (replies)Members' replies (swaps, skips, questions) come back to this address.“Email the member”
Slack accountThe Slack workspace your club team uses. Pick your connected Slack account.“Post the flagged list to Slack”
Club channelWhere the counts and flagged members are posted, e.g. #wine-club.“Post the flagged list to Slack”

9. Test it with Dry Run

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

10. Switch the trigger on

Open the trigger, switch the webhook on and copy its URL and secret into the form you use to announce a release.

How it works

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

  • New club release — Starts when your form or app sends data to the agent's webhook URL. Run once per release: your form or site posts the release name, ship or pickup dates and the customise-by deadline.
  • Read the release dates — Step. In code, not AI: writes out the customise-by deadline, ship date and pickup dates in full with their weekdays (UTC unless you set your time zone on this step), so the emails never get a weekday wrong.
  • Read the release notes — Notion: Query a database. Reads this release's items from your Notion release-notes database (tasting notes, pairings, which tiers get each).
  • Read your members — Google Sheets: Read rows. Reads your members tab: name, email, tier, preferences, pickup or ship, ship-to state and address.
  • Each member — Repeats the steps below for each item (up to 50 per run). Drafts a personal release email for every member row (up to 50 per run).
  • [For each item — “Each member”] Draft the member's release email — AI step (runs on your AI provider key). AI writes a personal release email for this member: their tier's items with tasting notes, a pairing that fits their preferences, how to swap or skip by the deadline, and pickup hours or shipping. Members with a missing address or a no-ship state are flagged instead.
  • Approve the release batch — A person approves or rejects it in Reviews (the run waits). All members' release emails wait in Reviews together. The club manager checks items, wording and flags, edits any email, sets send to false on any that shouldn't go, and approves; nothing is sent before that.
  • Batch rejected — Kept in the run history. Branch: Rejected. Nothing was sent; the run history keeps the drafts.
  • Each approved email — Repeats the steps below for each item (up to 50 per run). Branch: Approved. Checks and sends every approved release email.
  • [For each item — “Each approved email”] Final check on the wording — AI step (runs on your AI provider key). AI reads each approved email only for a printed street address, charges or price changes your club rules don't mention, and AI mentions — the items, tasting notes, dates and swap or skip steps are fine. It must quote the exact sentence it objects to.
  • [For each item — “Each approved email”] Check before sending — Step. In code: not flagged and still marked to send after review, exactly one valid email, and a subject and body with no placeholders left — plus the wording check's verdict. Anything that fails is held and listed in Slack with the reason.
  • [For each item — “Each approved email”] Send this email? — Decision: picks the branch to follow. Approved emails that pass every check are sent; flagged or held ones are listed in Slack.
  • [For each item — “Each approved email”] Email the member — Sends an email from your workspace's sender. Branch: Send. Sends the approved release email from your workspace's sender, with replies going to your club inbox.
  • [For each item — “Each approved email”] Held — Kept in the run history. Branch: Hold. Flagged, set to not send, or stopped by a check; listed in Slack with the reason.
  • Count what happened — Step. In code, not AI: sorts every member into sent, needs you (flagged or held, with the reason) or failed, from what each step really did.
  • Post the flagged list to Slack — Slack: Post a message. Posts the counts and the members who need you (counted in code) to your club channel.
  • Done — Kept in the run history. The run history keeps the drafts, the approved batch and every outcome.

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. Edit the sample to match the fields your own form or app sends.

Sample data fields

release_name, ship_date, pickup_start, pickup_end, customize_by, notes.

  • 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.
  • For-each loops repeat only the first 3 items.

Go live

  • Open the trigger, switch the webhook on and copy its URL and secret into the form you use to announce a release.
  • The webhook is protected by a secret: send it in the header shown in the Activation panel (requests without it are refused with 403). Each request starts one run.
  • 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 release form send?

A JSON POST with release_name (exactly as in your Notion Release field), ship_date, pickup_start, pickup_end, customize_by and notes. Post it once per release, with the webhook's signature header.

What do I need in Notion and Sheets?

A Notion release-notes database with Name (title: the wine, beer, coffee or cheese), Release (select), Tasting notes (text), Pairing (text), Tiers (multi-select), shared with the Fluxo Flow integration, and a members tab with Name, Email, Tier, Preferences, Fulfilment (Pickup or Ship), Ship-to state and Address.

How many members per run?

About 50 by default, which keeps each run inside the $2 AI cost ceiling. Raise “Each member” and “Each approved email” with care, or split members across two tabs and two runs.

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).
  • Nothing happens when your form sends data: check the webhook is switched on and the request carries the secret header (403 means it's missing or wrong).
  • 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 .