Agent setup guide
Donor Thank-You Writer for Square
Each Square donation gets a personal thank-you and a HubSpot gift note; in-person gifts without an email are listed in Slack for a handwritten note.
What it does
Each Square donation gets a personal thank-you and a HubSpot gift note; in-person gifts without an email are listed in Slack for a handwritten note.
- Starts from each new Square payment (in person, online or invoice), checked on your plan's schedule interval, and keeps only COMPLETED payments that match your donations rule.
- AI writes a personal thank-you naming the amount and what the gift supports, using only your own descriptions of each fund, with your receipt wording copied word for word.
- Creates or updates the donor's HubSpot contact and logs the gift on their timeline.
- Lists gifts without an email address (usual for in-person card payments) in Slack for a handwritten note, and posts a “call this donor” alert for major gifts.
- By default every thank-you waits for approval in Reviews; switch review off and only major gifts and unusual gifts wait.
What it needs
- A paid plan (agents run live on paid plans).
- An AI provider key (Settings → AI Providers).
- Square, HubSpot and Slack, connected in Settings → Integrations. Square 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.
- In-person card payments often carry no email or name: those can't be emailed and are listed in Slack for a handwritten note.
- It doesn't recognise recurring Square gifts: each completed donation is thanked.
- Payments not yet COMPLETED when they're picked up are skipped, and payments 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: Square, 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 Square
Connect Square (Settings → Integrations → Square) with access to payments.
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 Square account
Open the trigger and pick the Square account donations are paid into (and a location, if only one takes donations).
| Setting | What to enter | In step |
|---|---|---|
| Square account (payments) | The Square account your donations are paid into. Pick your connected Square account. | “New payment in Square” |
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.
| Setting | What to enter | In step |
|---|---|---|
| Your organisation, donations rule and receipt wording | Replace 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”.
| Setting | What to enter | In 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).
| Setting | What to enter | In step |
|---|---|---|
| Slack account | The Slack workspace your development team uses. Pick your connected Slack account. | “Alert the team in Slack” |
| Development channel | Where “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.
| Setting | What to enter | In 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”. New payments are picked up on your plan's schedule interval; earlier payments aren't processed.
How it works
The agent is a normal workflow with 19 steps (1 AI step, with a person approving in Reviews). You can open, edit and monitor it like any other workflow.
- New payment in Square — Starts on “New payment” in Square (an app event). Starts a run for each new Square payment (in person, online or invoice), checked on your plan's schedule interval. Leave the location empty for every location.
- Completed? — Decision: picks the branch to follow. Only payments with Status COMPLETED go on (pending, failed and cancelled ones stop here).
- Not completed — Kept in the run history. Branch: Not completed. The payment wasn't completed; nothing is done.
- Write the thank-you — AI step (runs on your AI provider key). Branch: Completed. 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 flags in-person gifts without an email for a handwritten note.
- A donation? — Decision: picks the branch to follow. Payments that don't match your donations rule (shop sales, 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. 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.
- 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
id, status, amount, currency, total, source, customer_id, order_id, location_id, email, receipt_url, note, created_at, payment.
- 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 and click “Activate app trigger”. New payments are picked up on your plan's schedule interval; earlier payments aren't processed.
- 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 about donations at the counter or an event?
In-person card payments usually have no email address, so no email can be sent: they're listed in Slack with the amount, date, receipt link and Square customer id for a handwritten note.
Does it decide what is tax-deductible?
No. The receipt section is your own wording with only the blanks filled in. Gifts where the donor received something in return are flagged for a person to decide.
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 .