Are you making decisions based on gut feelings? Repeating the same campaigns because they sounded like a success last time? Relying on the numbers from the system but not trusting these numbers?

If this sounds relatable, here is only 2 things to do to get it fixed

  1. Fix Your Data

  2. Analyze Your Data

Fix Your Data

Here is a list of action items to help your system become a trustworthy source of information

Identify all data sources

Start by identifying all the data sources, as in who or what logs data in our system

Examples are:

  • Source 1: Website Donations.

    • An integration is setup between our Website and our System / CRM. Data is entered automatically by this integration.

  • Source 2: In-Person Cash Donations.

    • We collect In-Person donations from events and galas, we enter those in the system manually.

  • Source 3: Event Registration Platform

    • When people sign up to attend our events, registrations and ticket information is logged automatically in our system.

Dive Deeper into how and why to identify the data sources and how to flag them for data analysis:

Organize Your Data (Architecture)

Think of databases as advanced excel sheets, everything comes down to tables.

Data is tables and how these tables relate to each other, that is it.

  • A Donor (Table) has multiple Donations (Another Table)

  • A Volunteer (Table) attends many Events (Another Table)

  • A Coach (Table) trains many students (Another Table)

When these tables are built to reflect the right data in the right place, reporting and analyzing this data becomes easier. A system can give you metrics such as

  • Total Number of Donations

    • Row Count in the Donations Table.

  • Total Amount of Donations

    • Sum of the Amount field from the Donations Table.

  • Total Number of Attendance

    • Number of Event Attendance from the Event Attendance Table.

  • Number of Students Per Coach

    • Number of Rows in the Students Table filtered or grouped by the Coach.

A solid structure makes it so much easier to report on data later on, I am a big advocate of learning and DIY, but this is an area where I encourage you to consult with a Software Architect at, this is the foundation, and if the foundation is solid, reporting is solid.

Learn more about organizing your data in a way that makes reporting a breeze.

Confirm all data is entered into the system

We will go through each data source and confirm that all data from that data source get entered into the system and who owns that data source and its data entry and validation.

  • Are donations from our website flowing to our system? All of them?

  • Did we enter all the donations we received from this gala?

  • Did we log all volunteer information we met at that event?

I will be writing a deep dive on auditing and reconciliation especially between nonprofit systems, stay tuned.

Agree on Naming Conventions

When we receive a donation, what term does the team use to say it is received?

  • Received

  • Posted

  • Paid

  • Closed

  • Won

Let’s pick one and agree to use it across the board, even better, let’s enforce it, we will talk about this next.

How about date formats? is it

  • 10/20/2025

  • 20/10/2025

  • Oct 20, 2025

  • Oct 20, 25

Or State/Country Names, is it

  • Michigan

  • MI

  • USA

  • United States

  • US

  • The United States of America

  • America

A tip here is to use a single set of values to select from so folks won’t be able to select the wrong value, for example, if you are trying to log the country as the United States and you don’t see any other value that means the United States except the United States, you would select the United States, no?

Validate and enforce entered data is correct

We will forget to enter some details, that is just the nature of humans. Let’s build systems to help us avoid this.

  • Make input fields required.

    • Example: Donation Amount

  • Make input fields conditionally required

    • Example: Require Lost Reason if you set the Status to Lost

  • Use input data types, this enforces a certain format when entering data. Entering data that doesn’t meet the formatting requirements of this option will not be accepted.

    • Examples: Emails and Phone Numbers.

  • Use dropdowns or picklists.

    • Example: Donation Acknowledgement Status (Acknowledged, To Be Acknowledged, Do Not Acknowledge)

  • Set Matching and Duplicate rules

    • Example: If the name and email match another row/record, flag this as duplicate.

Set Standards of Procedures (Standards for Data Entry)

  • Should this gift be logged under the person? or under the household?

  • How should household be named? Person 1 Name Or Person 2 Name or both persons names + the word Family or Household?

  • Should we type the States in an abbreviated or full form? Michigan or MI?

  • Should phone numbers be in local or international format?

  • Should we spell out keywords like Street or abbreviate it as in St?

  • Should we always create a new donor record whenever we get a donation or should we always search the database first for that donor?

Many of these ways to enter data is not wrong, it is just one person will enter it in one way, another enters it in a different way, we could assign particular team members to take ownership of data entry, validation and auditing, or we could set standards to follow by everyone, or both.

Having the system enforce and validate data in addition to setting standards and training the team on how to enter the data means data quality will be top notch.

ID all data

Oh, IDs, this will come back to bite you in the back if you don’t do it, you won’t feel the need to ID anything early on until you are ready to make the move.

When you are ready to move from spreadsheets to a CRM or from one system to another, you will come to learn of the world of Mapping data between systems.

Having IDs from day 1 for every table get auto generated is a massive time saver when moving data between systems and most importantly, makes it a cleaner and more accurate migration.

Imagine this: We migrated our donations from spreadsheets to a new CRM and we now want to validate that the migration was successful, need to compare the data in the CRM to the spreadsheets.

Many of those donations would have come on the same day, for the same amount, towards the same designation or fund, by donors without emails.

You could use a combination of donation date, amount, donor name and state to make the comparison, but would it not be easier if every donation had an ID and when we performed the migration, we took the ID to the new system as well. Comparing the two systems becomes so much easier.

Learn more about the importance and impact of having IDs for all tables here:

Audit and Reconcile Your Data

You are unstoppable, trying to get as many donations as possible by any means necessary, you end up with many platforms and ways to collect.

  • Giving Pages for Online Donations

  • Peer To Peer / Crowdfunding

  • Matching Gifts

  • Event Registrations and Ticketing

  • Auction platforms

  • Text-To-Give / Mobile Giving

  • Point of Sale Giving

  • Memberships

  • Donor-Advised Fund (DAF)

  • In Person Cash Donations

  • Checks

Then you have a System where all of this data feeds into, we refer to this as the System of Record.

Regardless of the way data gets entered into the system of record, whether that is through an integration or by manual entry, the chances of missing or forgetting or failing to enter some data exist. That is why regular auditing and reconciliation between systems helps maintain accuracy and trust in the data.

Perform manual or automated checks between the system to confirm that numbers are identical and match. An additional step is to make sure these numbers also match the numbers in the accounting system.

Even if things go wrong, the earlier you capture it, the better.

Imagine realizing that data has not been flowing from one platform into your System of Record for months during which decisions were made and reports were generated and campaigns were launched!

Remove All Unnecessary Input Requirements

This ties to adoption from one angle and ties to data integrity from another angle.

Systems are meant to make it easier for us to log data without feeling an additional burden.

We get a simple donation; $50 cash donation from John today, and when we try to enter it, we get 20 questions such as

  • What is the donor’s address?

  • What was the campaign for the donation?

  • What is the fund or designation of the donation?

  • When was the donation expected vs when was actually made?

  • Add Notes or Description for the donation

Not just this, but sometimes, we get those as REQUIRED inputs.

  • What are the chances that I enter wrong information?

  • What are the chances that I don’t log it altogether?

  • What are the chances I talk to other teammates about how awful this system is?

  • What are the chances others also refuse to log data in the system?

  • What are the chances folks make their own sheets where life is easier and simpler?

Avoid multi-select entries

Multi-Select inputs are a nightmare to work with, a nightmare to run reports and analysis on, and a nightmare to perform automations with.

Example:

Which services does this client need? (Multi Select Question)

  • Housing Assistance

  • Food

  • Education

  • Other

If the client selects multiple, let’s say, they select Housing Assistance and Food. Now, let me ask you, What is the primary need for this person? and then let me ask you again, what is the typical primary need across our clients?

The answer: You don’t know, I don’t know, no one knows.

Here is another problem, do you know how this data gets logged in a database? you may have seen it before in an excel sheet, it looks like this

Housing Assistance;Food
/*Or*/
Housing Assistance,Food

Now try to run formulas on this cell, or automations or reporting, you will have to be creative and the results will not be 100% correct, because you don’t have EXACT values, but rather you have to use things like IF this selection CONTAINS “Food”.

You also can’t COUNT them, if a user selects 1 or 10, at the end, it is just one field with one value, yes, the value has multiple entries, but it is not easy to extract these and count them.

The solution is simple, don’t use multi-select, use single-select instead such as

  • What is the primary service the client needs?

  • What is the secondary service the client needs?

  • What is the tertiary service the client needs?

And even if the list is greater than this, a dedicated table where you can create a row for each one with the ability to order them is much better than multi-select.

Add duplicate detection

While it is recommended to always search the database for existing data before creating new ones, we sometimes forget or we search and we may think it is a different set of data or a different person.

We may have also created an automation or an integration where we didn’t account for potential duplicates.

We recommend setting up duplicate detection features and duplicate auditing.

When you are attempting to create a new Donor record, the system would detect if there is another Donor in the system that matches this email and alerts you with such.

If an integration is setup and during testing, the duplicate detection feature will prevent the integration from creating with an error that states as such for the developers then to find the existing donor before creating a new one.

Getting into the habit of reviewing and running reports on potential duplicates and do merging and cleaning once a month is a very good habit that almost 99% of organizations out there don’t do.

Why clean the database! Let’s just leave it clutter for a few years then pay expensive software and expensive service providers to do the cleaning for us.

Add Backups

Another one where very few nonprofit organizations care about.

There are two types of backup we always recommend to have

Data Backup

You are setting up a new system and you keep creating and setting data and templates and perform calculations to get to that perfect data state in the org, and then one ugly export or bulk delete happens by mistake, the measures to prevent this are plenty and there is mostly options to bring those back from a recycle bin, but let’s account for the worst case scenario where data is lost after so much effort. We would not just want the backed up data, but we also want an easy way to RESTORE it.

Metadata Backup

We said that most nonprofits ignore data backup, even more nonprofits ignore metadata backup, metadata here means the system itself.

In the system you have a field called Donor Name and the value in this field is John Doe

Donor Name is Metadata
John Doe is Data

Some additional examples of Metadata are: Tables, Fields, Automations, Pages, Features,Buttons etc…

Similar to how things could go wrong with data, it could also go wrong with metadata

  • Making a mistake when building an automation

  • Breaking a working functionality

  • Releasing a new feature that ends up being disliked by end users or clients

  • Messing the page layout or colors or the branding

  • Deleting an existing functionality

Similar to how we want the ability to backup data and easily restore them, we also need the ability to backup metadata and easily revert to a previous version, we refer to this as Version Control.

Example Data Backup Solution: OwnBackup

Example Metadata Backup Solution: Gearset (Also offers Data Backups)

Setup History Tracking

While data backup will help us go back to a previous state, data backup is usually needed for a large scale mistake, in situations where one value changes and we need to revert it back to its previous value, we want to enable and setup history tracking on important fields.

Additionally, when debugging or looking at sensitive information, we may want to know WHO changed this, WHEN and FROM what value TO what value.

This does not just help us identify what happened when building new features to confirm if it is updating the data as expected, it also helps with security to know if someone is messing with our data or if someone is trying something fishy.

Set Permissions

We have different departments

The Fundraising team does not have to see Marketing team data and work, and the other way around as well.

It is fine if they do, and it is sometimes beneficial to share work and content across teams, let’s make it optional and separated from the fundraising data.

Even within one department, there are some data that are more relevant, you don’t want any team member to see 10 relevant tables and pages and columns while also having to navigate and ignore 10 other irrelevant items.

Leadership are mostly interested in analysis, reports, charts and dashboards, no need to show weeds unless requested.

Fundraising want to see fundraising specific areas only with an option to view other departmental areas where there may be overlap.

Marketing should have their own marketing space with the ability to view what is needed from fundraising for marketing purposes.

Let everyone see what they need only.

Set Approval Processes

You change a major gift opportunity from the nurturing stage to the Lost stage, another team member changes it back to the Pending stage, another team member marks it as Almost There stage, or whatever stage that is.

While we want to empower end users to take actions and set data, we some times want to approve data changes.

If the donations from last year have already been processed, tax receipts generated, and reconciliation with the accounting system took place, these donations should not be touched until coordinated with the Finance team to make the necessary adjustments on the accounting side.

We still don’t want to block edits by end users, they want to edit it because they learned something new about this data, a refund happened, the person changed where they live, someone asked to be removed from our contact list, there is usually a valid reason behind it.

Most of the times, allow end users to make edits, but in areas where an approval is better be in place or communication with another department is needed or there is some other dependency, collaboration becomes important and this is what Approval Processes and communication channels are for.

Analyze Your Data

Define Your Key Questions

  • What metrics would help you make decisions?

  • What metrics would the leadership want to see in order to make those decisions?

  • What metrics does each department need (Marketing, Fundraising)?

  • What metrics do you share with others? as in share publicly on your website, in an event or send a report of to other organizations?

Do NOT ask for every metric you can ask for to be built. From experience with multiple clients, when we build all possible metrics, we end up not looking nor using most of them and the ones we care about the most get lost in the midst of it.

Identify ONLY the metrics that matter, start with the top 5 metrics only and add the ones that give you more insights as needed.

Build your insights for each role.

  • Marketing team should see Marketing insights only

  • Fundraising team should see Fundraising insights only

  • Programming team should see Programming insights only

If it is just one large page with charts for everyone, it is less readable and takes more time to get to the insights we need.

Build Reports First, Dashboards and Charts Second

Reports here mean the analysis on the data that shows the breakdown and the details such as

  • A list of donations filtered down to a particular Campaign.

  • Donations Grouped By the State.

  • Campaigns Sorted By the Revenue from largest to smallest

Reports have details, they don’t show just the total number, but shows the names, the dates, the amounts, and lots of other details.

Dashboards on the other hand provide a high level overview, a Dashboard consists of multiple charts, each Chart pulls from a Report.

A Chart would show top-level numbers only without a breakdown, examples that correspond to the three examples we gave above

  • Total Donation Amount Per Campaign Donut Chart

  • Number of Donations Per State Horizontal Bar Chart

  • Funnel Chart showing top 5 Campaigns with their Total Generated Revenue

Establish Baselines and Benchmarks

How would you know if a Fundraising Campaign is successful or not?

How much revenue should we generate for this Campaign to call it a success?

This number or goal or objective should be realistic!

Build a chart that shows you progress towards this goal, repeat for other metrics to learn about progress and make decisions along the way.

Segment

Segment by donation amount, you want to know who your major donors are, create donor tiers such as

  • Bronze (0-49)

  • Silver (50-99)

  • Gold (100-499)

  • Platinum (500-999)

  • Diamond (1000+)

You can also segment by constituent relationship to the organization

  • Volunteers

  • Parents/Guardians

  • Coaches/Facilitators

  • Partners

  • Employees

You can run reports on how much they interact with our nonprofit, how much they donate or even create newsletters dedicated to each segment.

There are many other ways to segment:

  • Recency, Frequency, Monetary (RFM): How much people give, when and how often.

  • Recurring Donors vs One-Time Donors

  • Individuals vs Organizations

  • Donations By Campaign / Event

  • Interactions/Activities Per Program

Reliable Data vs Valid Data

How much do you weigh? Workout, don’t be fat xD

You hop on a scale, you read 100 (Kilos or Pounds)
You step out, you step on it again and now it reads 99
You step out and you step on again, now it reads 98 (don’t worry, you are not losing weight)
You step out, you step on again, now it reads 101

Is this scale giving valid data? Yes
Is this scale reliable? No

Reliable means consistency, if the scale gave the same reading in all 4 times, we would say, this scale is reliable.

You bring another scale, you try it and it gives you the same reading in all 4 times, always reading 100, but then you bring a friend of yours who weighs way less, half your size. You would expect the scale to read around 50. You friend steps on it multiple times and it always reads 100

Is this scale giving valid data? No
Is this scale reliable? Yes

With that said, we are always looking for Data that is BOTH Valid AND Reliable

You run an online fundraising campaign and you share it everywhere, on website, social media, newsletter and we tell everyone in person about it, the first day is a big success; $50K generated in donations.

If this Campaign is meant to be for 10 days, is it safe to say that the Campaign is projected to generated $50K every day for 10 days? This would be a very big fat mistake.

While $50K is definitely valid, it is not the “Reliable” measure of deciding the daily donation amount, waiting until the end of the campaign and finding the average would be the more reliable figure of the daily donation amount.

I write everything in this blog myself, but these following scenarios are written by AI to bring nonprofit specific examples on valid vs reliable data.

Scenario: A donor survey question worded ambiguously, but every respondent interprets it the same (wrong) way and gives consistent answers

Valid: No
Reliable: Yes

Scenario: A "donor retention rate" report in Salesforce that recalculates differently each time you run it due to inconsistent date filters, even though the logic itself is sound

Valid: Sometimes (when it runs correctly)
Reliable: No

Scenario: A volunteer hours tracker that consistently undercounts because it only logs check-ins, not actual time worked

Valid: No
Reliable: Yes (consistent undercounting)

Scenario: A properly configured field that pulls the same accurate value every time it's queried

Valid: Yes
Reliable: Yes

Scenario: A manually entered field where staff sometimes type dates as MM/DD and sometimes DD/MM, giving inconsistent AND sometimes wrong values

Valid: No
Reliable: No

Every Insight Should Translate to Action

Remember when we defined the metrics from which decisions are made, now, it is time to actually use these metrics to make actual decisions.

If a metric always sits there for months and months without any action being taken, it is either this metric is useless or we are not making the proper use of these analytics.

Examples:

  • First Time donors don’t give again for 6 Months → Add these donors to an outreach campaign.

  • Major Donor has not received emails or interactions from our organization for 60 days → Auto assign a task to the Major Gift Officer to reach out.

  • Work Orders have been open for 30 days → Auto Escalate, Reassign and take action.

If insights are not getting translated to action, they are meaningless.

Re-Measure

We got $100K in total donations this year, fantastic, great work. However, when you compare this number to the previous year, you will find out that last year, we generated $130K, and the year before we generated $120K.

This is a Year-Over-Year (YOY) metric, and you realize here that this year, we didn’t perform well. As a matter of fact, last year generated more revenue that the year before, meaning, we were growing in revenue YOY for the last 2 years, but this year, a significant drop happened. This is the kind of metric that tells us something is different, something is wrong, this tells us to revisit and retrospective and analyze what we did this year vs last year to learn and improve.

Another example:

This month, we got 2000 website visitors, nice. Again, how many did we get last month and the month before, this time, we are looking at Month-Over-Month (MOM).

This Month → 2000
Last Month → 1800
2 Months Ago → 1700

Now, this is good, traffic to our website is actually growing. Even though this is good, we still need to learn why and how, what are we doing differently to double down on it, how do we take this improvement and make it even better.

Conclusion

There you have it, 2 simple steps 😉

  • Fix Your Data

  • Analyze Your Data

Recommended for you