Browse the docs

Agent setup guide

Closed-Won Handoff for Salesforce

When a Salesforce opportunity is won, writes the kickoff brief in Notion and alerts the delivery team, once per opportunity.

Available About 20 min to set up

What it does

When a Salesforce opportunity is won, writes the kickoff brief in Notion and alerts the delivery team, once per opportunity.

  • Starts when a Salesforce opportunity is created or changed (checked on your plan's schedule interval) and keeps only won ones (IsWon).
  • Remembers every opportunity it hands off, so later edits to a won opportunity don't start a second kickoff; opportunities closed more than 30 days ago are skipped.
  • Reads the opportunity (description, next step, amount, dates, type), its account and its contact roles in one SOQL query.
  • AI writes the kickoff brief: what was sold, stakeholders and roles, commitments recorded in the sale (quoted), gaps to confirm and first steps.
  • Creates the brief as a page in your Notion onboarding database and alerts your delivery team in Slack with the link.

What it needs

  • A paid plan (agents run live on paid plans).
  • An AI provider key (Settings → AI Providers).
  • Salesforce (with API access), Notion (with an onboarding database shared with Fluxo Flow) and Slack, connected in Settings → Integrations.
  • Opportunities with a filled-in description, next step and contact roles: the brief is only as good as the record.

What it doesn't do

  • It uses the opportunity's fields and description, its account and contact roles: not activity history, emails, Chatter or notes.
  • It doesn't create projects, tasks or invoices, or contact the customer.
  • It doesn't change anything in Salesforce.
  • It hands each opportunity off once; to hand one off again, clear its memory entry.

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

Connect your Salesforce org (Settings → Integrations → Salesforce). It needs API access (Enterprise edition or above).

3. Connect Notion

Connect Notion and share your onboarding database with Fluxo Flow (Settings → Integrations → Notion).

4. Connect Slack

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

5. Pick your Salesforce org

Open the trigger and “Read the opportunity, account and contacts” and pick your connected org in each.

SettingWhat to enterIn step
Salesforce account (opportunities)The Salesforce org whose won opportunities are handed off. Pick your connected Salesforce account.“Opportunity created or changed”
Salesforce account (query)The same Salesforce org, used to read the opportunity, account and contact roles. Pick your connected Salesforce account.“Read the opportunity, account and contacts”

6. Describe your services

Open “Write the kickoff brief” and replace the placeholder with your services and kickoff needs.

SettingWhat to enterIn step
Your services and kickoff needsReplace the placeholder with what you sell, who delivers it and what a good kickoff needs (start date, access, success criteria, billing contact…). It starts as “[DESCRIBE WHAT YOU SELL, YOUR DELIVERY TEAM AND WHAT A GOOD KICKOFF NEEDS HERE]” until you replace it.“Write the kickoff brief”

7. Pick the Notion onboarding database

Open “Create the onboarding page in Notion” and pick your account and database.

SettingWhat to enterIn step
Notion accountThe Notion workspace with your onboarding database. Pick your connected Notion account.“Create the onboarding page in Notion”
Onboarding databaseThe database each kickoff brief becomes a page in (title property “Name”). Share it with Fluxo Flow first: ••• → Connections.“Create the onboarding page in Notion”

8. Pick the Slack account and channel

Open “Alert the delivery team” and pick your account and channel. Invite the app to private channels first (/invite @Fluxo Flow).

SettingWhat to enterIn step
Slack accountThe Slack workspace the delivery team uses. Pick your connected Slack account.“Alert the delivery team”
Delivery team channelThe channel your delivery or onboarding team watches, e.g. #onboarding.“Alert the delivery team”

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 and click “Activate app trigger”: opportunity changes are checked on your plan's schedule interval and won ones are handed off.

How it works

The agent is a normal workflow with 14 steps (1 AI step). You can open, edit and monitor it like any other workflow.

  • Opportunity created or changed — Starts on “New or updated record” in Salesforce (an app event). Starts a run each time a Salesforce opportunity is created or changed (checked on your plan's schedule interval); the next step keeps only won ones.
  • Won? — Decision: picks the branch to follow. Only opportunities Salesforce marks as won (IsWon, i.e. a Closed Won stage) go on; every other change stops here.
  • Not won — Kept in the run history. Branch: Not won. The change wasn't a won opportunity; nothing is done.
  • Handed off already? — Recalls what it remembered earlier (memory “closed-won-handoff-salesforce”). Branch: Won. Checks whether this opportunity was already handed off, so later edits to a won opportunity don't start a second kickoff.
  • First time? — Decision: picks the branch to follow. An opportunity that was already handed off is skipped.
  • Already handed off — Kept in the run history. Branch: Already handed off. This opportunity's kickoff brief was created on an earlier run.
  • Read the opportunity, account and contacts — Salesforce: Run a SOQL query. Branch: First time. One SOQL query: the opportunity's description, next step, amount and dates, its account and its contact roles. Opportunities closed more than 30 days ago return nothing.
  • Closed recently? — Decision: picks the branch to follow. An old won opportunity that was merely edited (closed more than 30 days ago) returns no record and is skipped.
  • Old deal, skipped — Kept in the run history. Branch: Closed long ago. The opportunity was won more than 30 days ago (or isn't won any more); no kickoff is created.
  • Write the kickoff brief — AI step (runs on your AI provider key). Branch: Recent. AI turns the opportunity, account and contact roles into a kickoff brief: scope, stakeholders, commitments made, gaps to confirm and first steps.
  • Create the onboarding page in Notion — Notion: Create a page in a database. Creates a page in your onboarding database with the full kickoff brief.
  • Alert the delivery team — Slack: Post a message. Posts the win, the short summary and the link to the kickoff page to your delivery channel.
  • Remember the handoff — Remembers it for later runs (memory “closed-won-handoff-salesforce”, kept until deleted). Remembers that this opportunity was handed off (kept until you clear it), so it fires once per opportunity.
  • Handed off — Kept in the run history. The run history keeps the brief and the Notion page link.

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

id, name, modified_at, record.Id, record.Name, record.StageName, record.IsWon, record.IsClosed, record.Amount, record.CloseDate, record.Type, record.NextStep, record.Description, record.AccountId, record.OwnerId.

  • Nothing is sent or written: app actions, emails and Slack posts are simulated, and AI steps don't call your AI provider.
  • Memory steps don't read or write stored memory: a recall finds nothing, and a save only shows what it would store.

Go live

  • Open the trigger and click “Activate app trigger”: opportunity changes are checked on your plan's schedule interval and won ones are handed off.
  • 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

How does it know a deal is won?

Salesforce marks an opportunity as won (IsWon) when it moves to a Closed Won stage, whatever you call that stage. Each opportunity is handed off once.

Does it read activity history, emails or Chatter?

No. It reads the opportunity's fields (including its description and next step), its account and its contact roles. The fuller the opportunity, the better the brief.

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 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 .