Connect your donation platform to Make so each successful gift starts a scenario: it logs the donor, asks an AI module to draft a short thank-you from facts you supply, and queues the draft for a person to approve before Gmail sends it. Paid plans start from about $9 a month.
Two things decide whether this helps or embarrasses you: the approval step and what the AI is allowed to say. Donors forgive a slow thank-you more easily than a wrong name, a wrong amount or an invented claim about what their gift achieved. So the AI writes one middle paragraph only, from an approved impact line and no personal details, and every draft waits for a person in month one. For an animal-rescue charity taking about 120 online gifts a month, that review costs roughly three hours a month, against about eight hours of writing each thank-you by hand.
The flow in one view, before any module names
A donor pays through your donation page. Stripe tells Make that the payment succeeded. Make checks that it is a finished payment and that it hasn't already handled it, asks an AI module for the middle paragraph, merges that into a fixed template with the donor's first name, and stores the result in a Google Sheet with the status "Ready for review". A staff member reads the draft and changes the status to "Approved". Once a day a second scenario sends the approved emails through Gmail and marks each row "Sent". Nothing reaches a donor unless a person has approved it.
Why a sheet for approval? Make has a Human in the Loop app, but it is limited to the Enterprise plan, so a status column that staff edit is the practical substitute. It also gives you a log of every thank-you for free. The simplest alternative is to skip the sheet and have the first scenario create a draft email in Gmail, so a person opens Drafts, reads and presses Send. That is a fine first version, and the cost comparison later shows what the sheet adds.
Stripe is the example here because Make's Stripe app has an instant trigger called Watch Events. If your donation platform can send webhooks, Make's custom webhook trigger does the same job, and if the platform already sends a decent thank-you of its own, check that before you build anything. For the basics of Make itself, building your first AI automation in Make, step by step covers the Make screens assumed here.
Three decisions to make before you build
What the AI sees. The AI doesn't need a donor's name, email or address to write a good middle paragraph, so don't send them. Give it only the campaign name, the gift type (one-off or monthly), whether it is a first gift, and an approved impact line. The first name goes in afterwards, when Make merges the draft into the template. Donor names and emails are personal data, and if you have donors in the EU your data-processing terms with every service in the chain need to be in place; ask your data-protection adviser. What donor data must never be pasted into ChatGPT and your own small-charity AI policy should say the same thing.
What the AI may say. One middle paragraph of two or three sentences. The greeting, sign-off, charity name and any receipt note are fixed text. No claims about results beyond the approved impact line, no urgency, and no ask for more money in the first thank-you. Honest wording matters more here than anywhere: an invented "your gift will feed 12 dogs this week" is the sort of sentence a donor remembers.
Who approves what. In month one a person reads every draft. After that, some gifts can go out with a lighter check, and some must never skip a human.
| Type of gift | Month one | After month one |
|---|---|---|
| First-time one-off gift | Person approves each draft | Person approves each draft |
| First payment of a monthly gift | Person approves each draft | Person approves each draft |
| Repeat one-off gift from a known donor | Person approves each draft | Sample five a week |
| Gift above your personal-thanks threshold (say $250) | Flag for a personal note from a senior person; no automated email | Same |
| "In memory of" or "in honour of" gifts, or any gift with a donor note | Hold; a person writes the reply | Hold; a person writes the reply |
| Refunds, failed or disputed payments | Never triggers a thank-you | Never triggers a thank-you |
Step by step: the donation scenario in Make
Scenario one turns a donation into a reviewable draft. The module names below are the ones in Make's Stripe, Google Sheets and Gmail apps.
- Stripe, Watch Events. This is an instant trigger: Stripe notifies Make when something happens, so Make doesn't poll and doesn't spend credits checking for gifts that haven't arrived. Make attaches the webhook when you save the module, and you choose which events to watch. For a Payment Link or Checkout page, Stripe sends a
checkout.session.completedevent when the donor pays. If you accept bank debits, Stripe also sendscheckout.session.async_payment_succeededwhen a delayed payment clears, which can be days later. - Filter: payment status is paid. Stripe's own guidance is to check the session's payment status before fulfilling anything, because the completed event can arrive while a bank debit is still pending. A filter costs no credits, and a bundle that stops at a filter doesn't use any.
- Google Sheets, Search Rows, then an Array aggregator. Look in your "Donations" sheet for a row with this checkout session's ID. Stripe's documentation says the same event can reach your system more than once, so this duplicate check stops a donor receiving two thank-yous. There is a catch: a search that finds nothing returns no bundles, and that ends the route, so on its own it would stop every new donor here. Put an Array aggregator straight after it with the search as its source module. Make's help says an aggregator outputs its result by default even when no bundles reach it, so the route carries on either way, and a filter after the aggregator lets the gift through only when the length of the aggregated array is 0.
- The AI module. Make's apps for Claude and Gemini each have a "Simple Text Prompt" module that needs no API key and draws on your Make credits by the amount of text; the vendors' other modules need your own API key and the AI vendor bills you directly. For a short thank-you, either is fine. The prompt is in the next section.
- Google Sheets, Add a Row. Write the received time, session ID, first name, email, campaign, gift type, a flags column, the AI's paragraph, and the status "Ready for review". Putting the AI step before this one saves a credit, because you add the row once with the draft already in it.
Scenario two turns an approved row into a sent email. Schedule it once a day, or hourly during an appeal.
- Google Sheets, Search Rows with the filter "Status equals Approved". Each matching row travels down the route as its own bundle.
- Gmail, Send an email. To the donor's address, a fixed subject such as "Thank you, [first name]", and a body built from the fixed opening, the approved paragraph from the sheet and the fixed sign-off.
- Google Sheets, Update a Row to set the status to "Sent" and record the time. Add an error handler on the Gmail step that retries a temporary failure, and a second route that sets the status to "Failed" so a failure shows in the sheet instead of disappearing.
Avoid using "Watch New Rows" as the trigger for scenario two. It reacts to rows being added, and approval doesn't add a row: it changes the Status cell of a row that already exists. A row-watching trigger would see each row once, while it still says "Ready for review", and never look at it again, which is the kind of failure nobody notices for a fortnight. A scheduled Search Rows on the Status column finds every approved row, however long ago someone approved it. How to stop Zapier and Make automations breaking silently covers error handling in more depth.
The wording prompt, with three sample donors and their edits
Keep the prompt short and put the fixed facts in a block, so the AI has nothing to invent from. The values in square brackets are Make fields that you map in; the impact line is written and approved by a person at the charity.
You write one middle paragraph (two or three sentences, under 60 words) for a thank-you email from a small animal-rescue charity to someone who has just donated.
Use only the FACTS. Do not mention an amount, a date, a payment, a name or any result the gift will achieve beyond the IMPACT LINE. No urgency, no exclamation marks, no request for more money, no promises about future updates.
Warm, plain English. Vary the wording; do not start with "Thank you for your generous".
FACTS
- Campaign: [campaign]
- Gift type: [one-off or monthly]
- First gift from this donor: [yes or no]
- IMPACT LINE (approved by the director): "Gifts of any size go towards food, vet checks and bedding for the animals in our care."
Here are three illustrative cases and what a person does with each.
A first-time one-off gift to a winter appeal. The AI returned:
Your gift to the Winter Appeal means a lot to us. Donations like yours go towards food, vet checks and bedding for the animals in our care, and this week that matters more than ever as the cold sets in. We'll send you an update in a few weeks on how the appeal is going.
Two edits. "This week that matters more than ever as the cold sets in" is invented urgency and a weather claim, so it goes. "We'll send you an update in a few weeks" is a promise someone has to keep, so it stays only if the charity really sends one, and otherwise it goes too. The approver deletes both and sends. Time taken: about a minute.
The first payment of a monthly gift. The AI returned:
Welcome to our monthly supporters, and thank you for setting up your gift. Regular giving lets us plan ahead for food and vet care. Your first payment has come through today, which is a real help.
The last sentence states something the AI had no way to know, and with a bank debit it may not even be true yet. The prompt above already bans mentioning a date or a payment, so the approver deletes the sentence. If a model breaks a rule like that more than once, make the rule more specific (describe the exact kind of sentence it must not write) and re-run the next ten drafts before you trust it.
An "in memory of" gift. This one never reaches the AI. The Stripe checkout has an optional note field, and any row where that field isn't empty gets a flag, the status "Hold" and no draft. A person writes that reply from scratch, because the words matter more than the minutes saved. In Make this is a router with two routes: one for rows with an empty note field, which carry on to the AI, and one for the rest, which go straight to the sheet as Hold.
For the wording itself, donor thank-you letters with AI that still feel personal has longer templates, and the middle paragraph above is deliberately the only part the AI writes.
The queue sheet, filled in
One sheet runs the whole approval process. These are the columns, with three illustrative rows. A drop-down on the Status column keeps the values consistent, which matters because the second scenario searches for the exact word "Approved".
| Received | Session ID | First name | Campaign | Gift type | Flags | Draft (middle paragraph) | Status | Approved by |
|---|---|---|---|---|---|---|---|---|
| 3 Nov, 10:42 | cs_test_a1... | [first name] | Winter Appeal | One-off | First gift | Your gift to the Winter Appeal means a lot to us... | Sent | [initials] |
| 3 Nov, 14:05 | cs_test_b2... | [first name] | Monthly Friends | Monthly | First gift | Welcome to our monthly supporters... | Approved | [initials] |
| 3 Nov, 16:30 | cs_test_c3... | [first name] | Winter Appeal | One-off | In memory note | (none: person writes) | Hold |
The sheet doubles as a donor log: filter by email to see whether a donor has given before, or filter by campaign to count gifts for a trustee report. Keep it in the same Workspace account as the mailbox, restrict who can edit it, and remember that it holds donors' emails, so treat it as you would any donor database. If your charity qualifies for Google Workspace for Nonprofits, which is free for eligible organisations, that is a no-new-cost home for the sheet; check the eligibility rules, which vary.
What it costs: credits per donation and the $9 plan
Make bills in credits, and its help centre says that by default one operation equals one credit. A trigger that fires, a search, an aggregator, an added row, a sent email and an updated row each count as one. Routers don't, and a bundle stopped by a filter uses none. AI modules running on Make's own AI provider are charged for the operation plus the tokens they use, so they cost a little more than one. For the build above:
- Scenario one uses about six credits per donation: the Stripe trigger, the duplicate search, the aggregator and the added row at one each, plus about two for the AI step. Treat that two as a budget, not a fact: after the first few gifts, open the scenario's run history and read what the AI step really used.
- Scenario two uses two credits per approved row (the email and the status update) plus one credit for each daily run, about 30 a month.
| Gifts a month | Credits used (about 8 per gift plus 30) | Fits the free plan (1,000 credits)? |
|---|---|---|
| 60 | 510 | Yes, with room to spare |
| 120 | 990 | Only just: one busy week breaks it |
| 300 | 2,430 | No: needs a paid plan |
| 800 (a big appeal month) | 6,430 | No: needs a paid plan with more credits than the entry tier |
On those numbers, 120 gifts a month needs up to about 990 credits, so the free plan's 1,000 only just covers a normal month and any appeal tips the charity onto a paid plan. The Gmail-drafts version mentioned earlier is cheaper: the trigger, the AI step and Gmail's "Create a draft email" come to about four credits a gift with no daily runs. It has no log to search, though, so there is no duplicate check, and a replayed event becomes a second draft that a person has to spot. The entry paid plan is from about $9 a month at monthly billing, with about 5,000 credits at the September 2026 check (confirm both on Make's pricing page), and Make's pricing page also says credits expire at the end of the term. Make's pricing information lists no nonprofit price and tells NGOs and nonprofits to contact Make, so it is worth one email before you pay list price. AI tool discounts for charities and non-profits covers how to ask.
The risk worth designing for is running out mid-month. Make's own help says that before the next billing cycle you can upgrade, buy extra credits or switch on auto-purchase, and extra credits cost more than plan credits. If credits run out, Make raises an operations-limit error and switches off scenario scheduling, so thank-yous stop until you top up. Set a calendar reminder to look at credit usage on the 20th, and upgrade a week before a planned appeal.
The time sum, all illustrative: by hand, finding the donor, writing, sending and logging takes about four minutes a gift, so 120 gifts is 480 minutes, or 8 hours. With the flow, review takes about a minute and a half a draft (180 minutes), a weekly ten-minute reconciliation adds about 45 minutes a month, and upkeep adds 30. That is roughly 4.25 hours, saving about 3.75 hours a month. It is a modest saving in hours, and the bigger change is that thank-yous leave the same day instead of waiting for Friday's batch.
A giving day shows where the limits are. Say 400 gifts arrive in 48 hours. That is about 3,200 credits, so the free plan can't cover it and a paid plan has to be in place beforehand. Google also caps how many messages one Google Workspace user can send, 2,000 a day at the time of writing, and it says the limits can change; 400 thank-yous is far below that, but a charity sending several mailings from the same mailbox should check the page. Make's Gmail page documents that connections from personal @gmail.com accounts need re-authorising every six months; it doesn't discuss Workspace accounts, so put a renewal reminder in the diary either way.
Testing with Stripe's test mode before a real donor sees anything
Run the whole flow in test mode first. Stripe's documentation lists a test card number, 4242 4242 4242 4242, with any future expiry date and any three-digit security code, and a payment made that way produces the same events as a real one. Work through six tests, in order, and write the result of each in the sheet's notes.
- One test payment. One row appears with the right campaign, gift type and a sensible draft, and its status is "Ready for review".
- The same payment replayed. Stripe's dashboard has a Resend button on each event, so send the same event again. No second row should appear, which proves the duplicate check works.
- A note in the memory field. The row is flagged and set to Hold, and the AI step doesn't run.
- Approve a row. After the next scheduled run the email arrives in a test inbox, with the right first name, the fixed sign-off and no leftover brackets, and the row shows "Sent".
- Break the Gmail connection on purpose. The row should show "Failed". Don't count on an error email from Make here: the error handler has caught the failure, so the Failed status is your alarm, and the weekly reconciliation is where you will see it.
- Read the email on a phone. Most donors will, and a long block of text with an odd line break looks careless.
Only then switch the Stripe connection to live mode and approve the first real drafts yourself. If something is wrong with a draft, fix the prompt, not the single email, and re-run the next ten to make sure the problem has gone.
Six ways donor thank-you automations fail quietly
- Two thank-yous for one gift. It shows up when a donor mentions it, or when the log has two rows with one session ID. The cause is the same event arriving twice. The fix is the duplicate search in step three.
- A thank-you before the money arrives. It shows up with bank-debit donors whose payment later fails. The fix is the paid filter, plus the async payment event for delayed methods.
- Invented impact. It shows up as a sentence about what a gift will do that nobody at the charity wrote. The fix is the approved impact line, the "use only the facts" rule and a person reading every draft in month one.
- A connection that expired. It shows up as rows stuck on "Approved" for days. The fix is a weekly look at the sheet for any row older than two days that isn't "Sent" or "Hold", and a diary reminder for connection renewals.
- Credits that ran out. It shows up as every scenario failing at once. The fix is the 20th-of-the-month check and a plan big enough for your busiest appeal.
- Nobody owns it. It shows up when the one person who built the scenario leaves. The fix is a named owner, a backup who has logged in at least once, and a short note in the sheet describing the two scenarios, what triggers each and what to check first when one fails.
Make the weekly reconciliation a ten-minute habit. Compare four counts for the week: gifts in Stripe, rows in the sheet, rows approved, and emails sent plus rows on Hold. They should add up, and when they don't, the gap tells you which step failed. Keep the thank-you separate from tax receipts too: Stripe can send its own automatic payment receipts, and what your tax receipts must contain is a question for your accountant, not for this scenario.
Questions charities ask before building this
Do I need a paid Make plan for donor thank-you emails?
At about eight credits per gift, the build here fits roughly 120 gifts a month inside the free plan's 1,000 credits, with no room for a busy appeal week. Paid plans start from about $9 a month and give several thousand credits. Credits expire at the end of the billing term, so don't stockpile them, and confirm the current numbers on Make's pricing page.
Can the thank-you email stand in for a tax receipt?
Not unless it contains everything your tax rules require, so keep the two separate by default. A thank-you is a message and a receipt is a record. Ask your accountant what yours must say. Stripe can also send its own automatic payment receipts, which is a reason to keep the receipt job out of this scenario.
Should AI write the whole email or just part of it?
Just the middle paragraph. Keep the greeting, the sign-off, the charity's name and any receipt note as fixed text. Fixed text stops the AI inventing claims about what a gift achieved, while the AI middle paragraph stops hundreds of donors receiving identical wording. A person approves every draft in the first month.
What happens if Make or Gmail stops working?
Donations are unaffected, because Stripe keeps recording them. The thank-yous queue up or get missed. Have Make email you when a scenario errors, reconcile once a week, and diarise connection renewals: Make's Gmail page says personal @gmail.com connections need re-authorising every six months.
Further reads
- Zapier vs Make vs n8n for AI Automation: Which Fits Your Business? — Compare the three automation tools before you commit.
- Using AI to Spot Donors Who Are About to Lapse — Use the donor sheet you build here to spot donors about to lapse.
- Charity AI Risks: Data Protection, Deepfakes, and Donor Trust — Data and donor-trust risks of using AI in a charity.
- Automation Audit: Find the Zaps and Scenarios Nobody Owns — Find the scenarios nobody owns before they break.
- Nonprofit Compliance Checklist: Can AI Track Filings and Deadlines? — Turn a nonprofit compliance checklist into a deadline register with owners, evidence, AI-written weekly digests and reminders that actually fire.
- AI Tools and AI Development: The Complete 2026 Guide — the AI hub, including every tutorial in the AI-for-business series.
Sources: Make's help centre and app pages (credits, aggregators, Stripe, Gmail and Claude apps), Make's pricing page (free credits, credit expiry, nonprofit contact), Stripe's documentation on Checkout fulfilment and webhooks, Google Workspace's Gmail sending limits page, all checked 28 October 2026. Make's pricing page showed no plan prices to an automated check, so the $9 entry price comes from the September 2026 fact check: confirm it on the pricing page. Worked figures are illustrative.