I wanted a nonprofit organization fundraising dataset to learn Metabase. I couldn’t find a good one, and I couldn’t use a real one. So time to make one! This dataset is appropriate for personal learning, training staff/volunteers, or prototyping reports and dashboards without using sensitive data.

Real data has context. Random data doesn’t.

When you have intuition for what data should look like, data that doesn’t look like that is obvious.

My first try at fake-npo-data lacked the common features of a typical fundraising dataset.

Some observations from early tries…

  • Transactions aren’t in a neat, sequential order of campaign X, then Y, then Z. They overlap.
  • Giving has a bell-curve shape. Some contributions come in early, most are centered at an event/launch/communication, and then they begin to trail off.
  • Fundraising data is complex and messy. People are giving to restricted funds, or individual projects and they give through multiple channels and with different payment methods.
  • There is a sense of the donor’s relationship to the organization when viewed in isolation.

With this understanding, I revised my way to the final dataset.

Data structure

What’s in the dataset? fake-npo-data includes what you’d expect from a fundraising database, with transactions spanning from 2021 through mid-2025. By default there are 5,000 donors and 60,000 transactions.

Transaction Categories. Just like in the real world, donations are tracked through with dimensions. Funds are where the money goes. Campaigns are strategic fundraising efforts with optional start and end dates. Appeals are the actual touchpoints that brought in the donations (mailings, events, emails)

Rich Donor Information. Individuals and organizations have memorable names that don’t feel generic. Donors have realistic giving patterns based on real events like end of year giving, Giving Tuesday, and event giving cycles. Donors are generated with cause-affinity modeling to create donor-clustering around certain campaigns.

fake-npo-data features the most interesting qualities of a fundraising dataset. It’s perfect for learning and play.

Data schema: fake-npo-data.pdf

Play with it!

I made this dataset for something to practice with that feels real, but doesn’t contain PPI. For me, it hits a sweet spot of complexity and familiarity.

It’s beginner friendly—the transaction table is ready for basic analysis as-is, but there is room to grow. Once the transaction table is merged with campaigns or constituents, the data becomes much richer.

Want it? Check out the resources below.

Resources