GA4 for Nonprofits: Tracking Donations, Recurring Gifts and Ad Grants
Charities raise money through a website, a donation platform and a handful of campaigns, then try to work out which of those actually brought the gift in. Most nonprofit Analytics properties cannot answer that question, and the reason is usually structural rather than a reporting mistake.
A gift gets mapped to an event GA4 does not recognise as money. The payment happens on somebody else's domain. The Ads account counts a page view as a conversion because the grant needs one. Each decision was reasonable when it was made, and together they produce a dashboard nobody trusts.
There is no donation event in GA4
The recommended events list is organised by business model: online sales, lead generation, games. It lists purchase for sales and generate_lead plus the lead lifecycle events for lead generation. There is no event called donation, and Google's own nonprofit conversion guide maps a monetary gift onto the purchase goal rather than inventing one.
That matters more than it sounds. If you send a custom donation event with a value attached, GA4 does not treat it as a sale. An event missing the required purchase parameters is treated as a custom event, and it never appears in the Ecommerce purchases report. Total revenue and Purchase revenue ignore it. You can still mark it a key event and still find it in the All events table, but every monetisation report reads zero, and any funder asking for revenue by channel gets a blank.
Two patterns stand up in practice:
- A gift is a purchase. Send
purchasewith the gift amount, and use items to describe what was given: a one-off donation, a membership, a ticket, a charity shop sale. You get the Ecommerce purchases report, the revenue metrics, Google Ads value-based bidding, and a conversion type the Ad Grants policy recognises. - A non-monetary action is a lead. Newsletter sign-ups, volunteer applications, petitions and information requests map onto
generate_lead,sign_upor the lead lifecycle events, which populate the Lead acquisition report.
Decide the naming before the tag ships. You can rename a custom event later, and you cannot rewrite the history you already collected.
The parameters that make a gift countable
On a purchase event, transaction_id is required. It is what lets GA4 deduplicate the same gift if the tag fires twice, and what makes refunds work. value and currency are required for revenue metrics, and the currency takes the three-letter ISO 4217 form. Items need at least an item_id or item_name, with price set as a number rather than a string.
Three details around donations cause most of the damage:
- An empty transaction ID is worse than a duplicate. GA4 deduplicates every purchase event where the ID is an empty string, so a thank-you page that fires
purchasewith no ID reports a single gift however many people donated. Use the donation platform's own reference, which also carries through into refunds. - Decide gross or net and stay with it. If the platform deducts a fee, send the amount that matches what your finance team counts, and write the choice into the measurement plan. Switching mid-year produces a revenue line that moves for reasons nobody can explain.
- Refunds need the same ID. A returned gift or a refunded monthly charge is a
refundevent carrying the originaltransaction_id. Skip it and your reported revenue runs higher than the bank statement, with a predictable spike every January.
Recurring gifts break the arithmetic
A monthly donation is not one conversion repeated forever. Every successful charge is its own transaction with its own reference, and each one should carry a distinct transaction_id. If the platform reuses a single membership ID for the whole relationship, GA4 collapses every charge into one and the donor looks like they gave once.
The reporting fix is to separate acquisition from retention. Mark the first gift as the key event you import into Ads, because that is the action a campaign can influence. Report the later charges as recurring revenue, so a month carried by renewals does not read like a month of strong acquisition. Those are two different numbers answering two different questions: is the campaign finding new donors, and is the donor base holding.
Leave a settling period before you audit any of it. Processing takes up to 48 hours on a standard property, and attribution credit for key events can keep moving for up to 12 days after the event.
What the Ad Grants policy asks of your conversion
Google Ad Grants offers eligible organisations up to 10,000 US dollars a month in Search ads on Google.com. The money comes with conditions that reach straight into your measurement setup, and the conversion is the part that gets neglected.
At least one meaningful conversion type has to be set up and accrue at least one conversion per month while the account is active. Google's own list of meaningful goals covers donations, purchases, ticket sales, membership registrations, email sign-ups, volunteer sign-ups, petitions signed, quizzes completed, information request submissions and calls. Time on site and homepage visits may be added as conversions, but they must be excluded from the Conversions column and filed under the category Other. The same page warns that a high conversion rate should be checked, because it usually means the goal is measuring something trivial.
Two more rules sit alongside it. Ad Grants accounts must hold a 5 percent click-through rate each month at account level, or face temporary deactivation after two consecutive months below it. Accounts created on or after 22 April 2019 must use conversion-based Smart bidding, choosing between Maximize conversions, Maximize conversion values, Target CPA and Target ROAS.
That is the point where measurement stops being paperwork. Those bidding strategies learn from whatever you feed them. A page view counted as a conversion teaches the account to find people who read quickly. A completed gift teaches it to find people who give. Where the grant is the budget, the conversion you import is the strategy.
The import path worth using starts in GA4. Link the property to the Ads account, create the key event, then in Ads create a conversion action and import it from the Google Analytics 4 properties source. Conversions built that way are eligible for bidding and report consistently with Analytics. They do not appear in standard Google Analytics reports, so read them in the Advertising section of GA4 rather than looking for them in Traffic acquisition.
Where the gift actually happens
Most donation platforms complete the payment on their own domain: Donorbox, JustGiving, Enthuse, or a hosted Stripe and PayPal checkout. The GA4 linker only follows a visitor across domains when both are listed in your domain configuration. Without that, the session ends at the handover, the gift returns as a referral or as direct traffic, and a campaign that worked looks like a campaign that did nothing.
The mechanics of that handover are in our guide to cross-domain tracking with payment providers, including the settings that strip the linker parameter. The nonprofit-specific twist is that some platforms will not let your tag run inside their checkout at all. Where that is the case, the reliable measurement point is the confirmation page on your own domain after the redirect back. Track there, and make sure the returning URL carries enough to rebuild the gift, or plan a server-side call instead.
Consent, and the parts charities miss
Analytics storage and any advertising storage need consent before they are used. The ICO's guidance on storage and access technologies is direct about it: online advertising purposes require consent, advertising measurement does not need a separate consent because it forms part of the advertising one, and nothing that is not strictly necessary may run before consent is given.
Three versions of the same defect show up on charity sites. A third-party donation widget loaded in the page head, ahead of the consent default, so it sets its own identifiers before anyone has chosen. A banner that treats scrolling or continued browsing as agreement. And a form collecting health, religious or political information while a full advertising stack runs behind it, which turns a marketing tag into a special category data problem.
Keep two consent lists apart as well. Permission for fundraising email is not permission for analytics cookies, and an analytics choice does not cover sending someone a newsletter.
What to report, and what not to promise
Three numbers survive scrutiny: gifts, gift value, and gift rate by channel. Each one needs a stated margin, because consent-declined sessions, off-site payment pages, chargebacks and unsent refunds all quietly remove gifts from GA4 while the donation platform still counts them.
The workable routine is to reconcile one closed month against the platform's own totals. Count the gifts in both systems, then compare values, then write the difference into the report with its cause. A dashboard that cannot explain its own gap gets distrusted the first time a trustee asks a hard question, and the explanation is much harder to produce afterwards. GA4 is a measurement instrument rather than the ledger, so say that at the start instead of defending it at the end of a board meeting.
A short routine before the next campaign
- Confirm which event carries a gift, and that it is
purchasewithtransaction_id,value,currencyand items. - Fire a test donation twice and confirm GA4 records one purchase, not two.
- Check that every successful charge has its own ID, including recurring charges.
- Mark the acquisition event as the key event and import it into Ads.
- Move time-on-site and homepage-visit goals out of the Conversions column and into Other.
- Verify the monthly conversion count and the 5 percent click-through rate the grant depends on.
- List both domains for cross-domain measurement, or move the conversion to your own confirmation page.
- Check that nothing third-party loads before the consent default.
- Reconcile one closed month against the donation platform and record the gap.
None of this requires a charity to buy anything or restructure its reporting. It requires the gift to be sent as money, the ID to be unique, the conversion to be one a human actually completed, and the gap to be stated. Charities that get those four right can answer the question a funder or a trustee really asks: which of this spending brought the money in.
Can Your Reporting Show Which Campaign Produced a Gift?
North Digital sets up donation tracking that survives an off-site payment page, a consent banner and an Ad Grants import, so the numbers hold when a funder or a trustee asks where the money came from.
Talk to North Digital