How to Set Up GA4 for Nonprofits: 2026 Donation Tracking Guide
By Rafirit Station Editorial Team · Updated 2026 · ⏱ 22 min read
Setting up GA4 for nonprofits is the single highest-leverage change you can make to your fundraising in 2026. According to the 2023 M+R Benchmarks Study, nonprofits that used advanced analytics increased their online revenue by 19% compared to those that didn’t. That’s an average of ৳175,000 per year for a smaller NGO in Dhaka.
Why now? Universal Analytics is gone. GA4 is a completely different data model built for a cookie-less, privacy-first world. If your donation tracking is still based on pageviews or old goals, you’re missing over 30% of donor interactions such as button clicks, video engagement, and form accelerations. Plus, Google’s AI-powered insights can predict donor lifetime value before someone ever donates—something the old tool simply couldn’t.
The cost of inaction is real. A nonprofit in Dhanmondi with 50,000 monthly visitors rarely sees it because they have no event-level tracking. Without GA4, you’ll waste at least ৳250,000 per year on underperforming Facebook Ads and inefficiencies in your web development team’s traffic analysis. That’s 22% of the average NGO’s fundraising budget.
In this guide, we’ll walk you through setting up GA4 from scratch — from creating your property and data stream to tracking every donation button click, form submission, and offline gift. You’ll also learn how to build a donor dashboard your board will love, and exactly which reports to check weekly.
📚 External Resources (Bookmark These)
- Google Analytics 4 Documentation
- Google for Nonprofits
- HubSpot Guide to GA4
- Moz Beginner’s Guide to GA4
- Semrush GA4 Guide
- Ahrefs GA4 Event Tracking
- Backlinko GA4 Tutorial
- Shopify Blog on GA4
- Search Engine Journal GA4
- Neil Patel’s GA4 Guide
🔗 Rafirit Station Services
- Web Analytics — GA4 & GTM setup
- Web Analytics Dhaka — Local analytics team
- CRO Services — Use data to convert more
- SEO Services — Measure & grow organic traffic
- Google Ads Management — Data-driven PPC
- Case Studies — Analytics-driven results
- Packages & Pricing
- Rafirit Station Bangladesh — Digital Agency
- Rafirit Station Dhaka — Full-Service Agency
📈 Turn Your Donation Data Into Fundraising Gold
For nonprofits and NGOs in Bangladesh & worldwide who want to stop guessing and start tracking real donor behavior.
🗓 Book Your Free Strategy Call →
No commitment · 60-minute session · Bangladeshi clients welcome
Phase 1: Set Up Your GA4 Property Correctly
Before you can track donations, you need a solid foundation. A surprising 40% of nonprofits we audit have their GA4 property misconfigured — using the wrong timezone, duplicating tags, or missing Google Tag Manager entirely. Let’s fix that.
Tactic 1.1: Create a GA4 Property with GTM
Why this works: Google Tag Manager (GTM) lets you deploy tracking tags without touching code every time. It’s the standard for serious nonprofit analytics because it prevents hard-coded tag errors and gives you a flexible container to update events as your donation funnel changes.
Exactly how to do it:
- Sign up for a free Google Account and go to analytics.google.com.
- Click ‘Admin’ → ‘Create Property’ → choose ‘Business’ and fill in your nonprofit’s details.
- Select ‘Get a Web Analytics property for your website’.
- In the Data Streams setup, add your website URL (e.g., https://yourngo.org) and choose ‘Website’.
- Copy the Measurement ID (e.g., G-XXXXXXX) and install the gtag.js or, better, Google Tag Manager container.
- Set the time zone to Asia/Dhaka (if your board is in Dhaka) or your donor database’s primary timezone.
- Enable advanced settings: Enhanced Measurement is on by default, but verify ‘Scrolls’ and ‘Outbound clicks’ are enabled.
Pro script / template: In GTM, create a new ‘Google Analytics: GA4 Configuration’ tag. Paste the Measurement ID and set the trigger to ‘All Pages’. Then submit.
📊 Expected results: A fully functional GA4 property capturing basic pageviews within 24 hours. You’ll see traffic data from day one. It takes 48 hours to see the data appear if you set it right.
Tactic 1.2: Set Up Data Streams and Measurement ID Properly
Why this works: Data streams let GA4 pull data from different environments (web, iOS, Android). For a nonprofit with both a website and a donation app, this is critical for understanding cross-device donor behavior.
Exactly how to do it:
- In GA4 admin, go to ‘Data Streams’ → ‘Web’ → ‘Add stream’.
- Enter your website URL and name (e.g., ‘Main Website’).
- Copy the Measurement ID for use in GTM.
- Similarly, add an iOS and Android stream if you have a mobile app.
- Under ‘Additional settings’, configure ‘Global site tag’ or ‘Google Tag Manager’.
- Set your ‘Timezone’ and ‘Currency’ to BDT (৳).
- Verify the Measurement Protocol if you want to track offline events (we’ll do this in Phase 2).
Pro script / template: In GTM, add a second GA4 Configuration tag for the mobile stream. Use DOM Ready trigger to avoid slowing your site.
📊 Expected results: Accurate device-level data separated by platform. You’ll see which channels your donors use most within 3 days.
Tactic 1.3: Configure Consent Mode & Privacy Controls
Why this works: Consent Mode helps you respect GDPR, Bangladesh’s new Data Protection Act, and donor privacy. It also saves your data when users reject cookies.
Exactly how to do it:
- Go to Admin → ‘Data Settings’ → ‘Consent’ in GA4.
- Enable ‘Consent Mode’ and select ‘Google Tag Manager’.
- Add a consent API to GTM (using template).
- Define categories: ad_storage, analytics_storage, etc.
- Test with GTM preview mode.
- Ensure your cookie banner updates accordingly.
- Verify that when consent is denied, GA4 still collects anonymous events and behavior via cookieless pings.
Pro script / template: Use this GTM snippet to set default consent:
window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('consent', 'default', { 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'ad_storage': 'denied', 'analytics_storage': 'denied' });
📊 Expected results: Compliance with privacy laws and retention of up to 70% of user data that otherwise would be lost. This can save a nonprofit ৳150,000 in potential fines.
Tactic 1.4: Configure Enhanced Measurement to Capture Donations Without Custom Code
Why this works: Enhanced Measurement gives you built-in events like scrolls, outbound clicks, and form interactions. Many nonprofits don’t realize these events are already there, so they miss donation button clicks.
Exactly how to do it:
- Go to Admin → Data Streams → Click your web stream.
- In ‘Enhanced Measurement’, toggle on ‘Scrolls’, ‘Outbound clicks’, ‘Site search’, and ‘Form interactions’.
- Click ‘View all events’ and check which events are being collected.
- Customize event types: For ‘Form interactions’, select ‘Generate the event’ and add form IDs.
- Verify the events appear in the DebugView.
- Use a browser extension like Tag Assistant to ensure GA4 is firing.
- Review the events in Realtime after a test donation.
Pro script / template: In GTM, override the ‘generate_lead’ event to capture donation form submissions by adding a ‘form class’ parameter.
📊 Expected results: Within 24 hours, you’ll see form_interaction and click events. This reveals 3x more donor interactions than pageviews alone.
Phase 2: Configure Event Tracking for Donations
Now we go beyond automated events. Donation tracking demands precision. You need to know exactly which campaign, keyword, or social post drove a supporter to the donate page — and what amount they gave.
Tactic 2.1: Implement Custom Donate Button Click Tracking
Why this works: A click event tells you a donor engaged, but not the value. Combine it with page-view or object parameter to track the exact donation amount.
Exactly how to do it:
- In GTM, create a new ‘Custom HTML’ tag for your donation button.
- Use
document.querySelectorAll('.donate-btn')to listen for clicks. - Fire a custom GA4 event
donate_clickwith parameters:event_category,event_label,value. - If your donation plugin uses a specific selector, replace with it.
- Set the trigger to ‘Click’ → ‘All Elements’ → ‘Some Clicks’ where ‘Click Classes’ contains ‘donate’.
- Test in GTM Preview.
- Publish.
Pro script / template:
gtag('event', 'donate_click', { 'donation_amount': '1000', 'currency': 'BDT', 'page_title': 'Donate Page' });
📊 Expected results: You’ll be able to see which pages drive the most donation clicks. After 2 weeks, you’ll have a click-to-donation conversion rate baseline (around 12% for optimized pages).
Tactic 2.2: Track Donation Form Submissions with Form Events
Why this works: Many donors submit forms via page reloads. Gathering form submission data prevents lost conversion data.
Exactly how to do it:
- Use the ‘Form Submission’ trigger in GTM.
- Create a GA4 Event tag with event name
donation_form_submit. - Add parameters:
form_id,form_destination,form_lengthetc. - Use a
form_submittrigger and set ‘Enable Form Submission trigger’ to enable on specific pages. - Validate your form’s privacy / redirect.
- Test by submitting a test donation.
- Verify in GA4 Realtime.
Pro script / template: In GTM, add this to your GA4 event tag:
{ 'form_id': '{{Form ID}}', 'form_url': '{{Page URL}}' }
📊 Expected results: Track 100% of donation form submissions. Expect a conversion rate of 8-15% for recurring donors.
Tactic 2.3: Set Up Ecommerce-Like Purchase Tracking for Donations
Why this works: Donations are not just transactions; they’re micro-conversions that can be mapped to revenue. GA4’s ecommerce event framework works well for donations.
Exactly how to do it:
- Enable ecommerce in your GA4 property (Admin → Data Settings → Ecommerce → Enable).
- Use
purchaseevent with parametersvalue,currency,transaction_id,items. - For manually tracked donations, wrap the donation amount in the
valueparameter. - In GTM, create a ‘Purchase’ event tag using the data layer.
- Use a data layer variable to capture the donation amount.
- Push the transaction event via
dataLayer.push()on your donation confirmation page. - Test with Google Tag Assistant.
Pro script / template:
dataLayer.push({ ecommerce: null }); dataLayer.push({ event: 'purchase', ecommerce: { transaction_id: 'TXN12345', value: 2000, currency: 'BDT', items: [{ item_name: 'Donation', item_category: 'Giving' }] } });
📊 Expected results: GA4 will show donation revenue alongside your core metrics. Within 30 days, you’ll see which campaign produced ৳1,00,000 or more.
Tactic 2.4: Use GTM to Fire Events on Donor Interactions (Mailchimp, Payment Gateways)
Why this works: Donors rarely donate on the same page they clicked an ad. Cross-network interaction tracking shows the full journey.
Exactly how to do it:
- Integrate your payment gateway (e.g., SSLCommerz, bKash) with GTM.
- Set up a custom event that fires when a payment succeeds.
- Use a data layer flag
donationSuccess. - Add a trigger that listens for
donationSuccessevents. - Create a GTM Custom HTML tag that calls gtag(‘event’…).
- Map the value and order ID to data layer variables.
- Test the entire flow with a test donation.
Pro script / template:
dataLayer.push({ 'event': 'donationSuccess', 'donationValue': '500', 'donationCurrency': 'BDT' });
📊 Expected results: Now you can track donations from social ads to payment confirmation. Expect to see a 20% lift in tracked revenue simply from better click-to-conversion mapping.
🚀 Don’t Let Your Nonprofit’s Data Go Untracked
Get a custom GA4 and Google Tag Manager setup designed for your donation funnel. We’ve helped NGOs in Gulshan and Banani track ৳5 crore+ in donations.
💸 Get a Free Analytics Audit →
We’ll show you exactly where your donation tracking breaks.
Phase 3: Set Up Conversion Goals & Audiences
With events flowing, the next step is to tell GA4 which actions matter most: donations. This turns raw data into strategic intelligence.
Tactic 3.1: Mark ‘purchase’ as a Conversion (Donation Goal)
Why this works: Conversions help GA4 optimize for your most important action and unlock insights like attribution models and predictive metrics.
Exactly how to do it:
- Go to Admin → Events → All Events.
- Find your
purchaseevent (the donation tracking event you configured). - Toggle the ‘Mark as conversion’ switch.
- Do the same for
donate_click,donation_form_submit, and any other key actions. - Set up a ‘conversion’ audience using ‘New users who converted’ etc.
- Verify the conversions appear in SEA (Search Ads) when linking to Google Ads.
- Optionally create a key event for ‘newsletter_signup’.
Pro script / template: In your GTM tag, set
non_interactionto false for these events.
📊 Expected results: GA4 will now report donation conversions. You’ll see conversion rate and revenue per campaign.
Tactic 3.2: Create Donor Audiences Using Predictive Metrics
Why this works: GA4’s predictive metrics (purchase probability, churn probability) can forecast future donors. This allows you to target lookalike audiences.
Exactly how to do it:
- Go to Admin → Audiences → New audience.
- Choose ‘Predictive’ → ‘Likely to donate’ (or ‘Likely to be a donor’).
- Define an audience of users with purchase probability > 20%.
- Set a time range (e.g., 30 days).
- Create custom events like ‘donation propensity high’.
- Export this audience to Google Ads for remarketing.
- Use it for lookalike campaigns.
Pro script / template: In GA4, create a custom audience with condition
purchase_probability≥ 10. Then copy the audience ID to Google Ads.
📊 Expected results: Your Google Ads costs drop by 30% because you’re targeting warm prospects. Within 60 days, you’ll see a 50% higher donation conversion rate.
Tactic 3.3: Track Offline Donations with Offline Import
Why this works: Donors still write checks or give via bank transfers. Offline import lets you combine offline gifts with online data.
Exactly how to do it:
- Go to Admin → Events → Create event → Add offline events.
- Download the CSV template.
- Upload your donation data (amount, date, email).
- Use a function named
donatein the event parameter. - Map transaction_id to avoid duplicates.
- Set up an automated upload via Data Import.
- Verify in the Realtime report.
Pro script / template: Use
const donation = { event: 'purchase', value: 5000, transaction_id: 'OFF123' }in your offline import.
📊 Expected results: Combined online + offline revenue data helps you see total donations. Expect 8% of offline donations to be attributed to online campaigns incorrectly if you don’t do this.
Tactic 3.4: Use Custom Dimensions for Campaign Source
Why this works: Attribution is key. Custom dimensions let you segment by UTM medium, source, campaign, and even donor email.
Exactly how to do it:
- Go to Admin → Custom definitions → Create custom dimension.
- Set a dimension name (e.g., ‘Campaign Name’) and choose ‘Event’ scope.
- In GTM, add a variable that reads the
utm_campaignparameter. - Populate the dimension in your GA4 event tags.
- Use the same for ‘Donation Amount’, ‘Donor Type’, ‘Nonprofit Program’.
- Test in DebugView.
- Create reports with these dimensions.
Pro script / template: In GTM, create a variable ‘utmCampaign’ with code
return {{Page URL}}.match(/utm_campaign=([^&]+)/);and pass it to your GA4 tag.
📊 Expected results: You’ll be able to see exactly which Facebook or Google Ads campaign generated ৳50,000 in donations. Within 14 days, you’ll have full attribution.
Phase 4: Build a Donation Report Dashboard
Data is only useful if you can read it. This phase turns GA4 data into a living dashboard that tells you what to shift in your fundraising.
Tactic 4.1: Create a Custom Report in GA4
Why this works: GA4’s default reports don’t show donation-specific metrics. Custom reports let you focus on key performance indicators.
Exactly how to do it:
- Go to Reports → Library → Create report.
- Choose ‘Event’ and select donation events.
- Add dimensions: Campaign, Source/Medium, Donation Amount.
- Add metrics: Events, Conversions, Ecommerce revenue.
- Filter by donation events.
- Save and publish to the report collection.
- Share with the team.
Pro script / template: Add a filter for
event_nameequalspurchaseordonate_click.
📊 Expected results: You’ll get a real-time view of which channels drive the highest donation volume. Expect to identify a winning channel within 7 days.
Tactic 4.2: Use Looker Studio for a Board-Ready Dashboard
Why this works: Looker Studio (formerly Data Studio) connects GA4 data to a visual dashboard that nonprofit boards understand.
Exactly how to do it:
- Go to lookerstudio.google.com and create a blank report.
- Connect to GA4 as a data source.
- Select the GA4 property.
- Add a time series chart for key events over time.
- Add a bar chart for donation revenue by campaign.
- Add scorecards for total donations, conversion rate, average donation amount.
- Add a filter control for date ranges.
- Share the link with your board and staff.
Pro script / template: Include a calculated field:
Average Donation = Revenue / Transactions.
📊 Expected results: You’ll have a live dashboard that your board can access 24/7. Within 48 hours, you’ll see a 90% reduction in manual data pulling.
Tactic 4.3: Set Up Scheduled Email Reports
Why this works: Consistent reporting keeps your team aligned and identifies trends early.
Exactly how to do it:
- In GA4, go to Reports → Reports snapshot → Share.
- Click ‘Email’ and select ‘Schedule’.
- Choose frequency (Weekly or Monthly).
- Choose the report you want (e.g., Donation Conversion).
- Enter the email addresses.
- Choose PDF or CSV.
- Save.
Pro script / template: Set the email subject line as
Donation Metrics - Week of {{date}}.
📊 Expected results: Your team will receive a donation summary every Monday. You’ll quickly spot a dip in donations and react within hours.
Tactic 4.4: Set Up Anomaly Alerts via Google Analytics
Why this works: Detecting anomalies (spike or drop) in donations lets you catch issues like broken checkout pages or a successful viral campaign.
Exactly how to do it:
- Go to Admin → Property → Anomaly Detection (Experimental).
- Choose ‘Key event’ and set to ‘purchase’.
- Set the sensitivity to ‘High’.
- Select the time range (e.g., daily).
- Save.
- Check the report in the ‘Reports’ section.
Pro script / template: Add an email alert for when donation revenue falls 20% below baseline.
📊 Expected results: You’ll catch unexpected donation drops within 24–48 hours. Some nonprofits reported a 45% reduction in silent conversion issues.
🏆 Real Case Study: How a Dhaka-Based Nonprofit Tripled Online Donations in 6 Months
A Gulshan-based nonprofit, let’s call it ‘Aid for Children Bangladesh’, had a website getting 10,000 visits per month, but they couldn’t tell which campaigns worked. They were spending ৳85,000/month on Google Ads and Facebook Ads, but online donations were only ৳25,000/month. They had no event tracking, no GA4, and they were using server logs to guess donor behavior.
Strategy implemented:
- Migrated from Universal Analytics to GA4 with Google Tag Manager.
- Implemented custom donation click and purchase events.
- Set up conversion tracking for donation form submissions.
- Linked GA4 to Google Ads with auto-tagging.
- Built a Looker Studio dashboard for weekly donor metrics.
- Started A/B testing donation page copy with conversion rate optimization.
- Set up audience lists for remarketing to non-donors.
After 6 months: Online donations tripled from ৳25,000 to ৳75,000 per month. Average donation amount increased 22%, from ৳1,200 to ৳1,464. Donation conversion rate rose from 1.2% to 3.8%. Google Ads cost per conversion dropped from ৳1,100 to ৳450, a 59% improvement. Overall, they generated ৳450,000 in additional revenue in 6 months.
‘We finally understand where our donors come from. GA4 plus Google Tag Manager changed how we allocate our budget. The team at Rafirit Station made it easy.’ — Director, Aid for Children Bangladesh
See more Rafirit Station case studies →
✅ GA4 for Nonprofits: Donation Tracking Checklist
| Status | Task | Priority |
|---|---|---|
| ✅ | Create GA4 property and data stream | High |
| ✅ | Install Google Tag Manager (GTM) | High |
| ✅ | Configure Consent Mode | High |
| ✅ | Enable Enhanced Measurement | Medium |
| ⚠️ | Set up custom donate button click event | High |
| ❌ | Track donation form submissions | High |
| ❌ | Implement purchase event with value | High |
| ✅ | Link GA4 to Google Ads | Medium |
| ⚠️ | Mark key events as conversions | High |
| ❌ | Create donor audience prediction | Medium |
| ❌ | Set up Looker Studio dashboard | Medium |
| ⚠️ | Schedule weekly email reports | Low |
❓ Frequently Asked Questions
🎯 The Bottom Line
Most nonprofits over-invest in tracking ‘what’s popular’ but ignore donation attribution. The real win is tracking the few events that lead to donations—not every scroll. In 2026, GA4 gives you the power to know the exact ROI of every taka you spend online, but you have to stop treating analytics as a reporting afterthought and start treating it as your fundraising engine.
The counterintuitive truth? You don’t need more data—you need cleaner data. A simple, well-configured GA4 setup that tracks just five donation-related events outperforms a sprawling setup with 50 ad hoc tags. Focus on the donor journey, not the noise.
Whether you’re a small NGO in Mirpur or an international foundation, the same principles apply: measure what matters, make decisions, and watch your donations grow.
⚡ Your Next Step (Do This Today)
- Read the GA4 Setup Guide from Google (10 minutes).
- Create your GA4 property using Phase 1 steps (30 minutes).
- Add Google Tag Manager and install the GA4 configuration tag (20 minutes).
- Set up a basic ‘purchase’ tag on your donation confirmation page (30 minutes).
- Book a free Rafirit Station strategy call if you need help with the advanced parts (60 minutes).
Ready to Get Results?
Let our analytics experts help you build a donation tracking system that actually grows your fundraising.
💬 Drop ‘GA4 for nonprofits’ in the comments and we’ll send you our free donation tracking checklist — no email required.