Agent setup guide
Membership Cancellation Saver
Reads why a member is leaving, suggests one fitting alternative (or none), and sends a respectful reply after staff approve it.
What it does
Reads why a member is leaving, suggests one fitting alternative (or none), and sends a respectful reply after staff approve it.
- Starts when your cancel-membership form posts a request to the workflow's webhook.
- AI reads the reason and picks one save offer from your own list only when it fits (pause, cheaper plan, coach session). It offers nothing for moving away, health reasons or members who just want to cancel.
- Drafts a respectful reply that explains exactly how the cancellation goes ahead under your policy, mentions the offer once as optional, and makes clear nothing else is needed to cancel.
- A staff member approves or edits every reply in Reviews.
- Emails the approved reply, logs a note on the member's HubSpot contact, and posts the follow-up (process it in billing, watch for a reply) to your Slack channel.
What it needs
- A paid plan (agents run live on paid plans).
- An AI provider key (Settings → AI Providers).
- HubSpot and Slack, connected in Settings → Integrations.
- A cancellation form on your site that posts to the webhook, plus your cancellation policy and allowed offers.
What it doesn't do
- It doesn't cancel, pause or change billing: staff do that in your billing system.
- It honours the cancellation: no guilt, pressure, fake urgency or repeated offers, and no offer at all when the member insists.
- It's non-clinical: it gives no health or injury advice to members leaving for health reasons.
- It never sends a reply before a staff member approves it.
- It doesn't read the member's reply; replies go to your front desk.
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: HubSpot and Slack.
- A form, app or system that can send each new item to a webhook URL (the agent starts from a webhook).
- 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 HubSpot
Connect the HubSpot account where you keep members (Settings → Integrations → HubSpot).
3. Connect Slack
Connect the Slack workspace your front-desk team uses (Settings → Integrations → Slack).
4. Write your policy and offers
Open “Read the reason and draft a respectful reply” and replace the placeholder with your cancellation policy, allowed offers and sign-off.
| Setting | What to enter | In step |
|---|---|---|
| Cancellation policy and save offers | Replace the placeholder with your business name, your cancellation policy (notice period, last billing date, how it's processed), the save offers you allow and your sign-off. It starts as “[YOUR BUSINESS NAME, YOUR CANCELLATION POLICY (NOTICE, LAST BILLING DATE, HOW IT'S PROCESSED), THE SAVE OFFERS YOU ALLOW (PAUSE, DOWNGRADE, COACH SESSION…) AND YOUR SIGN-OFF]” until you replace it. | “Read the reason and draft a respectful reply” |
5. Add your front-desk inbox
Open “Email the reply” and enter the inbox members' replies should go to.
| Setting | What to enter | In step |
|---|---|---|
| Front-desk inbox (replies) | The member's reply (for example, accepting the offer) comes back to this address. | “Email the reply” |
6. Pick HubSpot and the Slack channel
Open the two HubSpot steps and “Tell staff what to do next”, pick your accounts and the front-desk channel.
| Setting | What to enter | In step |
|---|---|---|
| HubSpot account (contacts) | The HubSpot account where member contacts are found or added. Pick your connected HubSpot account. | “Find or add the member in HubSpot” |
| HubSpot account (notes) | The same HubSpot account, to log the note. Pick your connected HubSpot account. | “Log the cancellation on the contact” |
| Slack workspace | The Slack workspace your front-desk team uses. Pick your connected Slack account. | “Tell staff what to do next” |
| Front-desk channel | The channel where staff get the follow-up, e.g. #front-desk (invite the Fluxo Flow app to private channels). | “Tell staff what to do next” |
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, copy the webhook URL and signing secret into your cancellation form, and switch it on.
How it works
The agent is a normal workflow with 11 steps (1 AI step, with a person approving in Reviews). You can open, edit and monitor it like any other workflow.
- Cancellation request from your form — Starts when your form or app sends data to the agent's webhook URL. Your cancel-membership form posts each request (member, email, membership, reason, comments) to the workflow's webhook URL.
- Read the reason and draft a respectful reply — AI step (runs on your AI provider key). AI reads why the member is leaving, picks one save offer from your list only when it fits (none for moving away, health reasons or a member who just wants to cancel), and drafts a respectful reply that explains how the cancellation goes ahead.
- A cancellation request? — Decision: picks the branch to follow. Spam and other requests are set aside; cancellation requests wait for a staff member to approve the reply.
- Not a cancellation — Kept in the run history. Branch: Not a cancellation. The run history keeps the submission and why it was set aside.
- Staff approve the reply — A person approves or rejects it in Reviews (the run waits). Branch: Cancellation. A staff member reads the member's reason and the drafted reply in Reviews, edits it or removes the offer, and approves it. Nothing is sent before that.
- Handled personally — Kept in the run history. Branch: Rejected. Rejected replies are kept in the run history; nothing was sent, logged or posted.
- Email the reply — Sends an email from your workspace's sender. Branch: Approved. Sends the approved reply to the member, with replies going to your front desk.
- Find or add the member in HubSpot — HubSpot: Create or update a contact. Creates the member's HubSpot contact, or updates the one with the same email.
- Log the cancellation on the contact — HubSpot: Add a note. Adds a note with the reason, the offer made (if any) and the reply sent to the member's HubSpot timeline.
- Tell staff what to do next — Slack: Post a message. Posts the cancellation, the offer made and the follow-up staff must do (process it in billing, watch for a reply) to your front-desk channel.
- Reply sent — Kept in the run history. The run history keeps the request, the approved reply and the HubSpot note.
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
member_name, email, membership, member_since, reason, comments, submitted_at.
- 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, copy the webhook URL and signing secret into your cancellation form, and switch it on.
- 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
Does it cancel the membership?
No. It replies and tells staff what to do; staff process the cancellation in your billing system as usual.
Will it argue with members?
No. It offers at most one alternative, once, and says clearly that the member doesn't need to do anything else to cancel (or the one step your policy requires). Members who just want to cancel, are moving away or leaving for health reasons get no offer.
Is every reply checked?
Yes. Every reply waits in Reviews for a staff member to approve or edit it.
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 .