Browse the docs

Agent setup guide

Donor Thank-You Writer for Stripe

Each Stripe donation gets a personal thank-you with your receipt wording, a HubSpot gift note and a Slack alert for major gifts.

Available About 20 min to set up

What it does

Each Stripe donation gets a personal thank-you with your receipt wording, a HubSpot gift note and a Slack alert for major gifts.

  • Starts the moment a Stripe payment succeeds (checkout, payment links, invoices, subscriptions), through a webhook added to your Stripe account.
  • AI keeps only payments that match your donations rule and writes a personal thank-you naming the amount and what the gift supports, using only your own descriptions of each fund.
  • Adds your receipt wording, copied word for word with only the blanks (name, amount, date, reference) filled in.
  • Creates or updates the donor's HubSpot contact and logs every gift on their timeline.
  • Posts a Slack “call this donor” alert for gifts at or above your major-gift amount, and a “thank by hand” alert for gifts without an email.
  • Thanks monthly donors on their first gift and then once a year (remembered 365 days). By default every thank-you waits for approval in Reviews.

What it needs

  • A paid plan (agents run live on paid plans).
  • An AI provider key (Settings → AI Providers).
  • Stripe, HubSpot and Slack, connected in Settings → Integrations. Stripe is waiting for vendor approval, so this agent switches on once it's live.
  • Your own receipt wording and a rule for which payments are donations.

What it doesn't do

  • It drafts and organises for a person to approve; it makes no tax decision — it never decides whether or how much of a gift is tax-deductible, and gifts with something received in return are flagged for you.
  • The receipt wording is yours and isn't tax or legal advice; have your accountant confirm your template.
  • Recurring gifts are thanked on the first gift and then once a year, not every month.
  • It doesn't create deals or donation records in HubSpot, and payments made before activation aren't processed.
  • It never invents amounts, impact figures or promises.

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: Stripe, HubSpot 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 Stripe

Connect Stripe (Settings → Integrations → Stripe) with a restricted key that can read events and charges and write webhook endpoints.

3. Connect HubSpot

Connect the HubSpot account your donors are kept in (Settings → Integrations → HubSpot).

4. Connect Slack

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

5. Pick your Stripe account

Open the trigger and pick the Stripe account donations are paid into.

SettingWhat to enterIn step
Stripe account (payments)The Stripe account your donations are paid into. The key needs Events: Read and Webhook Endpoints: Write. Pick your connected Stripe account.“New successful payment in Stripe”

6. Describe your organisation and paste your receipt wording

Open “Write the thank-you” and replace the placeholder with your funds, signer, major-gift amount, donations rule and receipt wording.

SettingWhat to enterIn step
Your organisation, donations rule and receipt wordingReplace the placeholder with your organisation's name, who signs thank-yous, each fund or campaign and one sentence on what it does, your major-gift amount (e.g. $1,000), which payments are donations (e.g. description contains “donation”, or every payment) and your receipt wording, word for word, with blanks for name, amount, date and reference. It starts as “[DESCRIBE YOUR ORGANISATION, WHO SIGNS THANK-YOUS, YOUR FUNDS OR GIFT PURPOSES, YOUR MAJOR-GIFT AMOUNT AND PASTE YOUR RECEIPT WORDING HERE]” until you replace it.“Write the thank-you”

7. Pick your HubSpot account

Pick the same HubSpot account in “Create or update the donor in HubSpot” and “Log the gift on the contact”.

SettingWhat to enterIn step
HubSpot account (contacts)The HubSpot account your donors are kept in. Pick your connected HubSpot account.“Create or update the donor in HubSpot”
HubSpot account (gift notes)The same HubSpot account, used to log the gift note. Pick your connected HubSpot account.“Log the gift on the contact”

8. Pick the Slack channel

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

SettingWhat to enterIn step
Slack accountThe Slack workspace your development team uses. Pick your connected Slack account.“Alert the team in Slack”
Development channelWhere “call this donor” and “thank by hand” alerts go, e.g. #development.“Alert the team in Slack”

9. Add your development inbox

Open “Email the thank-you” and enter the address donors' replies should go to.

SettingWhat to enterIn step
Your development inbox (Reply-to)Donors' replies to the thank-you come back to this address.“Email the thank-you”

10. Test it with Dry Run

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

11. Switch the trigger on

Open the trigger and click “Activate app trigger”: Fluxo Flow adds a webhook endpoint to your Stripe account, and payments from then on are picked up at once.

How it works

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

  • New successful payment in Stripe — Starts on “New successful payment (instant)” in Stripe (an app event). Starts a run the moment a Stripe charge succeeds (checkout, payment links, invoices and subscriptions) through a webhook Fluxo Flow adds to your Stripe account.
  • Thanked this donor this year? — Recalls what it remembered earlier (memory “donor-thank-you-writer-stripe”). Reads when this donor was last thanked (remembered for a year), so a monthly donor is thanked on the first gift and then once a year, not every month.
  • Write the thank-you — AI step (runs on your AI provider key). AI checks the payment is a donation (your rule), writes a personal thank-you that names what the gift is for with your receipt wording, and decides whether it needs a person (major gifts always do) or was already thanked this year.
  • A donation? — Decision: picks the branch to follow. Payments that don't match your donations rule (sales, fees, tickets…) stop here.
  • Not a donation — Kept in the run history. Branch: Not a donation. The payment didn't match your donations rule; nothing is sent or logged.
  • Call this donor? — Decision: picks the branch to follow. Branch: Donation. Major gifts and gifts without an email address are posted to Slack so a person calls or writes by hand.
  • Alert the team in Slack — Slack: Post a message. Branch: Major gift or no email. Posts “call this donor” (major gift) or “thank by phone or letter” (no email) with the details from the payment.
  • Team alerted — Kept in the run history. The run history keeps the alert that was posted.
  • No call needed — Kept in the run history. Branch: No call needed. Not a major gift and the donor has an email address: no Slack alert.
  • Email address? — Decision: picks the branch to follow. Branch: Donation. Gifts without an email address are thanked by hand; the rest are logged in HubSpot and get the thank-you email.
  • No email address — Kept in the run history. Branch: No email. No email or CRM contact can be created; the Slack alert asks for a call or letter.
  • Create or update the donor in HubSpot — HubSpot: Create or update a contact. Branch: Has email. Finds the donor's HubSpot contact by email (or creates it) with their name.
  • Log the gift on the contact — HubSpot: Add a note. Adds a note with the amount, date, purpose and reference to the donor's HubSpot timeline.
  • Logged in HubSpot — Kept in the run history. The run history keeps the contact id and the note.
  • Review first? — Decision: picks the branch to follow. Branch: Has email. Monthly gifts already thanked this year are only logged. With review switched on (the default) every thank-you waits for approval; with it off, major gifts and unusual gifts still do.
  • Approve the thank-you — A person approves or rejects it in Reviews (the run waits). Branch: Review first. A person checks the thank-you and the receipt wording in Reviews, edits them if needed and approves; nothing is sent before that.
  • Email the thank-you — Sends an email from your workspace's sender. Branch: Send without review / Approved. Sends the thank-you (with your receipt wording) to the donor from your workspace's sender, with replies going to your development inbox.
  • Monthly gift logged — Kept in the run history. Branch: Thanked this year. A monthly donor already thanked this year: the gift is logged in HubSpot, no new email.
  • Remember the thank-you — Remembers it for later runs (memory “donor-thank-you-writer-stripe”, kept 365 days). Remembers when this donor was thanked (kept 365 days), so their monthly gifts aren't thanked again until next year.
  • Thank-you sent — Kept in the run history. The run history keeps the thank-you that was sent.

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

event_id, livemode, charge_id, amount, currency, customer, email, name, description, payment_intent, receipt_url, metadata.fund, metadata.frequency.

  • 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.
  • 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”: Fluxo Flow adds a webhook endpoint to your Stripe account, and payments from then on are picked up at once.
  • 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 decide what is tax-deductible?

No. The receipt section is your own wording, copied word for word with only the blanks filled in from the payment. Gifts where the donor received something in return are flagged for a person to decide.

What about monthly donors?

They're thanked on their first gift and then once a year; every monthly gift is still logged in HubSpot. It remembers each donor's last thank-you for 365 days.

My Stripe account also takes non-donation payments.

Write your donations rule in the organisation section (e.g. description or metadata contains “donation”, or a specific payment link); other payments are ignored.

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 .