Donor CRM

shipped

The Donor CRM is a custom CRM and data management system built with Google Apps Script for a nonprofit organization with a high-turnover volunteer staff. Designed to ensure data integrity, reduce manual data entry, and provide actionable donor analytics.

Tech Stack

Google Apps Script

I was volunteering with a small nonprofit, looking to broaden my skillset. Four months later, I'd built a complete donor management system and realized that building software was exactly the kind of work I wanted to be doing for the rest of my career.

The Problem

The nonprofit's donor data was spread across multiple fragmented spreadsheets with no clear structure. The same information repeated across tabs, donation history was tracked manually year by year, and volunteer outreach notes were scattered and inconsistent. The organization had no way to identify giving trends, recognize lapsed donors, or understand which campaigns were working. Staff and volunteers spent far too much time reconciling data across sheets just to get a basic picture of their donor base.

What I Built

A centralized CRM built entirely in Google Apps Script, designed around the reality of how the organization actually worked: a small staff, a high-turnover volunteer base, and a Board of Directors who needed actionable data without technical complexity. The system has three interconnected layers: The main donor database tracks dozens of meaningful data points per donor, such as giving history, frequency, recency, affinity group, interaction history, capacity indicators, and more. onEdit triggers automatically update calculated fields like most recent donation date, total giving amount, and most common donation month whenever new donation data is entered, eliminating manual reconciliation entirely. The volunteer outreach sheets, one per affinity group, allow volunteers to log donor interactions via a Google Form without ever touching the main database. When a volunteer submits an entry, openById() opens the master CRM, loops through all external sheets to find the matching record, and updates the corresponding donor fields automatically. Six or more external sheets stay in sync with the master in real time. The analytics dashboard uses batch operations and object-based aggregation to calculate giving propensity, donation frequency, recency scores, and longitudinal trends across the donor base, surfacing patterns that were previously invisible.

The Impact

The results were measurable. Three major donors doubled their contributions after leadership gained visibility into giving trends and engagement patterns they had never been able to see before. Multiple lapsed donors renewed their gifts. The organization moved from a fragmented, manually-maintained system to one that its executive director described as "efficient, easy-to-use, and far more aligned with our organizational needs."

What This Project Taught Me

Following a problem wherever it leads, untangling every knot along the way, is exactly how I work best. This project is what led me to software engineering.