The 7*7*31 Recap (With Numbers)
In July I ran a fundraising campaign for Black Python Devs with a deliberately small ask: $7, from 7 different people, every day, for 31 days. The goal was $1,519 which would be about 3x our monthly average.
We finished the month with 83 donations and 6,253.43 raised. That's 12% of the money that we've ever raised from individual contributions EVER (up to that point).
Safe to say that, aside from getting on stage and sharing a QR code to donate, this has been THE MOST SUCCESSFUL MARKETING CAMPAIGN I've done EVER. I wanted to understand what made this successful and to where. My hope is that I can take this insight and share it with the community at BPD and its leaders but also with the leaders of other organizers.
I'm not a professional Data Analyst, or a professional fundraiser, but I have come to some conclusions based on some analysis of the data.
Here is what I looked at.
Two sources:
- 27 Mastodon posts - from July containing
7*7*31, pulled from the public API along with every account that favourited, boosted, or replied. - The donation export - 883 lifetime records, of which 81 fall inside the campaign window. With anonymized requests anonymized.
The most engaged-with posts
It was interesting seeing that milestone days were the largest days that people engaged with.
Top 5 posts engaged with:
- July 29 — Over $6k raised.
- July 31 — Final Report.
- July 23 — $600 away from $6k
- July 19 — Surpassed money raised than at PyCon US this year
- July 2 - Okay day two of a thing which means it is actually a thing.
A small outreach team with some superfans
The over 80 donations proved that it made its way to many folks but at least for mastodon, the engagement was NOT all that large. There were 45 unique accounts across 22 mastodon instances that produced all 173 engagements throughout the month. One account favourited 26 of the 27 posts; another boosted 14 times.
That's the real story of the reach: this campaign was carried by a few dozen people who showed up over and over, not by a broad audience.
The biggest days, and the empty ones
The largest days of donation were not all that special but most of the work was done in the first week. With 4 of the largest days by donation amount being in the first 5 days.
| date | day | gifts | gross |
|---|---|---|---|
| Jul 21 | Tuesday | 2 | $1,079.59 |
| Jul 5 | Sunday | 4 | $896.02 |
| Jul 3 | Friday | 11 | $737.63 |
| Jul 2 | Thursday | 11 | $484.58 |
| Jul 17 | Friday | 9 | $423.26 |
| Jul 1 | Wednesday | 7 | $380.29 |
There were only 5 days in which no money was raised.
| date | day |
|---|---|
| Jul 11 | Saturday |
| Jul 12 | Sunday |
| Jul 23 | Thursday |
| Jul 24 | Friday |
| Jul 29 | Wednesday |
July 29 was that day where I had the most-engaged post of the entire campaign. That was also tru for July 23, the fourth most-engaged.
Where the money came from
Donations came from 11 countries with international donors being more generous on average, $103.06 versus $66.54 for US donors. The US made up in numbers with over 70% of the donation amount coming from there.
| country | gifts | gross | share |
|---|---|---|---|
| United States | 65 | $4,324.86 | 72.4% |
| Ireland | 1 | $526.64 | 8.8% |
| Switzerland | 2 | $533.28 | 8.9% |
| Canada | 3 | $384.85 | 6.4% |
| United Kingdom | 3 | $79.91 | 1.3% |
| Netherlands | 2 | $63.80 | 1.1% |
| Poland, Germany, Denmark, Australia, Indonesia | 1 each | $60.50 | 1.0% |
In the US, California was the top state, also out-raising every country except the US as a whole.
| state | gifts | gross |
|---|---|---|
| CA | 10 | $1,490.58 |
| KS | 5 | $428.86 |
| OH | 3 | $316.75 |
| WA | 1 | $263.48 |
| OR | 2 | $210.00 |
| NY | 3 | $164.59 |
| TX | 8 | $153.57 |
Anonymous donors gave nearly three times as much
A quarter of donors gave anonymously and brought nearly half the money. Public recognition is not what motivates the largest gifts and any campaign design that leans on donor walls or shout-outs is optimizing for the wrong half of the room (although I do know a few of our foundational supporters that do donate at-least the $200 amount to make sure they are listed on the website.
| donors | gross | avg gift | |
|---|---|---|---|
| anonymous | 20 | $2,856.78 | $142.84 |
| named | 61 | $3,117.06 | $51.10 |
New donors vs. returning donors
The mission itself felt like a success in that we're always trying to introduce new people to BPD and get new donors. 75% of donors had never given to Black Python Devs before, and they brought 93% of the money.
| cohort | donors | gross | avg per donor |
|---|---|---|---|
| new | 61 | $5,578.91 | $91.46 |
| returning | 20 | $394.93 | $19.75 |
But that's not all. The most important donations in my opinion are those that we can budget around and that is our recurring donors.
4 donors started a recurring gift during the campaign and all 4 were brand-new donors. That's the largest single-month recurring cohort in the organization's history. Most months add zero or only one.
The $7 framing didn't do what I thought it would
The 7 * 7 * 31 campaign was meant to see if we'd get more people to donate if the number was a small concrete one. Very early on I was told that the goal was "not ambitious enough". I would argue that it was because we only reached 1/3 of our total number of donors. Close to 40% donated between $8 (convering fees) and $25 and over half of the donors donating more than that. In fact our 14 top donors averaged about $300 donations. The top three gifts alone were $2,106 or 35% of everything raised.
This showed that we could ask for more, but ultimately we haven't cracked the code on getting MORE people to donate.
| band | gifts | gross |
|---|---|---|
| $100+ | 14 | $4,221.42 |
| $26-100 | 28 | $1,212.88 |
| $8-25 | 34 | $513.10 |
| $0-7 | 5 | $26.44 |
I think this tells me that what was more important was the fact that people had a reason to donate. It was a part of a fundraising campaign and that made it easy for them to make a donation. This is why people gather at the grocery store to raise funds. If you see the fund raiser, you're more likely to donate than just on a whim.
What I'd do differently
The biggest lesson
The lesson I posted on July 31 was "I need help with fundraising." The people that boosted and commented gave me the drive to keep going, but it would have been easier with a team to help donate and report and provide updates. We also could have engaged some marketing behind it as well.
Other lessons (in no particular order)
- Improved Messaging - I was running an acquisition campaign. 61 of 81 donors were new donors. The premise of 7 new people every day speaks to that more than anything. Sadly I don't think my marketing did. I was telling people what we did but not in a way that spoke directly to people that didn't know much about us. The posts that named a specific outcome ("this funds 4–6 events in Africa") where the most engaging but didn't really result in much donation. In the future, there should be more content around Who BPD is, what we do, as well as where the money was going.
- Fewer Posting (or pre-planned posts) - daily helped me be consistent and made it feel real, but there wasn't a measureable benefit from me posting daily from my account. Twenty-seven posts got the same 45 people to engage, but with near-zero correlation to donations. I could likely have posted eight times instead of twenty-seven, made each one about impact, and raised the same money. I said I was "running out of steam" on July 9.
- Ask for Recurring Donations - No post in the campaign ever asked for a recurring gift. Four people found that option on their own.
- Something for Whales - I don't like the idea of looking at donors as fish vs whales but there is something to be said about how you approach whales compared to the larger schools. Two gifts made up the single the largest day. A significant share of this campaign came from a handful of large donors who would have been better served by a direct conversation than by a social media post. Perhaps that touch could also attract larger whales in the future. There are plans for some special events that our larger supporters will be invited to participate in but I do want to make sure that accessibility is not cut off based on financial contribution.
Conclusion
I will run campaigns like this again in the future. Likely twice a year to help support our largest donation times. That being said, I think I will actually try to run them more like a marketing campaign and less like an experiment. I struggled with balancing my daily workload while constantly wanting to check the numbers.
Regardless of the numbers raised, I did see this as a massive win and I'm so glad that we have done so much that will be able to support Black Python Devs throughout this most difficult time in fundraising.
Thank you again to all who participated.
Notes on method
- Mastodon data is from the public API. Boost counts are undercounted — the API surfaced 61 of 89 reported boosts, because favouriter/booster lists only include accounts the home instance has records for. Favourites were complete (80/80).
- Quote posts are missing entirely. That endpoint requires authentication and I ran these queries unauthenticated. If quote-boosts drove any of this, I can't see it.
- Donation figures are the platform export. All 883 records had a stable supporter ID
- Donors who requested anonymity have all name fields replaced with the literal string
anonymous, and their email and supporter ID nulled. Addresses, phone numbers, cities, and postal codes were never loaded. Geography is state and country only.