Hi,
It took me a while but here is a report on our first donation campaign
that we did last year between October 13 and January 12.
Skip the first 2 sections if you only want to read about the results :)
Objectives
==========
The objectives behind this work were:
- To have a baseline to:
- Compare with future campaigns and know if we're doing better or
worse next time, and maybe adjust our strategy, timing, duration,
message, validate hypothesis, etc.
- Compare with the donations we receive outside of campaigns.
- Validate future changes to our donation page and know if we're
making it better or worse.
- To make it easier to take budget decisions by knowing roughly how
much we can expect from donations.
- To know who to send thank you messages to and maybe how to follow up
in a more personal way with bigger donors.
- To better target our work for future campaigns: what pays off and
what doesn't?
Sources of information (and bugs in them)
=========================================
I analyzed 4 sources of information:
- The logs we had from the RiseupLabs PayPal account.
These include emails and whether donations are one-time or
recurring. I didn't have access to the PayPal account itself to see
how many recurring donations (they call them "Subscriptions") are
still effective.
- The logs we had from Zwiebelfreunde corresponding to wire transfers.
I excluded from that the donation from Mediapart as I think we
should not include the organizations when doing such stats.
- The logs from the Bitcoin blockchain on our address. The web
interface of blockchain.info has been buggy for ever, so I instead
wrote a small Ruby script to extract logs from the blockcain through
an API (See accounting.git:bin/bitcoin_register.rb). The logs I got
from there were coherent with other information we already had in our
accounting. Still, the API would only give me logs until April and I
don't know why. I hope this work will be useful in the future.
For this report, I converted the bitcoins we received into euros
using the weighted rate from Kraken on the day of the donation. We
actually exchanged these bitcoins later on and got more money from
them. But I thought that the right thing to do here was to consider
how much these bitcoins were worth when people donated them.
- The anonymized logs from our website that I had to process with
custom code and commands. I faced several issues while processing
these:
a) I only had logs starting on November 9 so I'm missing logs for
the first 2 weeks of the campaign which were also the most
active. If I remember correctly, this is due to a bug on boum.org
regarding a mount point that was only fixed later on.
b) The results of my user agent stats are very very weird. Almost
all the user agents I could count included "Mozilla", the rest being
bots. I identified no activity from Safari or Chrome and 0.3% from
Opera. You can see what I mean running this on any of our log files:
zgrep -vi mozilla ~/Persistent/logs/access.log-2017-07-07.gz | \
egrep -i "(apple|safari|chrome|explorer|microsoft)"
You'll see only weird stuff and no really activity...
I really don't know what's going on here but either our logs are
buggy either I don't know how to read them.
c) The trick I used to flag referrers (using anchors, for example
"[[Donate|donate#sidebar") is not reflected in the Apache logs.
So I only had information about where people were coming from in the
HTTP referrer. For example, when people are coming from a release
note I don't know if they clicked on the banner on top of the page,
the sidebar, or the donate link at the end of the page.
I also couldn't study in details which incentives lead to more
successful donations because I was relying on the same mechanism to
analysis the logs on /donate/thanks.
All-in-all, that's a big fail, ha ha! Next time I should check better
my assumptions on the data sources :)
All these issues with logs and referrers, the manual work to
manipulate them and the errors and missing information would be easy
to solve with Piwik. Piwik would also make it possible to adjust
these stats to visits instead of using hits as I'm doing here.
Show me the data!
=================
I'm sending in attachment two PDFs, one with a summary of the
aggregated stats and one with charts of the amount donated per day and
the number of donations per day.
I'm sending the full spreadsheet with all the juicy details of each
donation to the accounting team.
I also wonder whether the full data should live in the fundraising,
accounting or donors repo. And if it should anyway be stored only in
an anonymized format.
Findings
========
We raised 76 055 € in total from 2043 donations.
Other than that, I won't rephrase what's in the stats already and jump
directly to summarizing actionable findings. Feel free add some more
and, if you are in the fundraising team, to check my calculations if you
think that something smells fishy.
- We can't survive on donations (yet!).
We could have paid 50% of our budget for 2017 with donations from
individuals (98k€/189k€). That's pretty cool! But we still need to
cover all the rest through grants or bigger partners.
- Put more energy into big donors.
61% of the money raised comes from big donors (>$99). How can we
make them stay and attract others?
- Do shorter campaigns and not necessarily at the end of the year.
We received 51% of our donations amount and 23% of our donors count
in the first week of the campaign. The rest of the campaign was
pretty stable with small peaks of count when we blogged, small peaks
of amount when we got very big donations, but with overall a constant
decrease over November, December, and January.
- Increase the incentives to donate outside of campaigns.
Dropping the banner, after people were really tired of seeing it in
January 12, only reduced donations by half. Could we get closer to
the average of January throughout the whole year by increasing the
visibility of our donation link and explain better why need donations?
- Do less posts and focus more on the benefits for the users.
We did 5 blogs posts but the first one lead to more donation amount
and count that the other 4 combined. The second most successful blog
post and only exception to an otherwise constant decrease was the one
giving hints on our plans for 2017. Donors seems to be reacting better
to incentives about changes in the product and benefits to users than
about our organization and accountability.
NB: I removed here big donors who are very few and apparently
unpredictable calendar-wise.
- Stop being careful about the calendar.
Donations were evenly spread across days of the week with only a
little extra on Fridays and Saturdays probably to account for the
beginning of the campaign.
- Tails donors love Bitcoin.
We got 57% of our money and our biggest donation (11609€) through
Bitcoin.
- Change the $20 button to be $25.
The average donation through PayPal is $24 and the $20 button is the
most popular option. Changing it to $25 might lead to more amount
overall.
- Consider lowering the $250 and $500 buttons.
More people used the "Other" button to specify more than $100 (4)
than people who used $250 and $500 combined (3). In comparison, 33
people used the $100 button. What about changing $250 and $500 to be
$150 and $200? This is a very small data sample for sure...
Studying the amount of the Bitcoin donations might give us hints on
what would be better numbers.
- Consider having a permanent section on /home about donating.
The banner on /home was the most powerful incentive (21.8% of hits),
could we make this work throughout the year with a single effort?
Otherwise regarding referrers:
* I don't understand why the most popular referrer is
"https://tails.boum.org/". Any idea?
* The third more popular referrer is "-" which probably aggregates a
bunch of stuff but I can't really know what because of my bug c):
- People clicking on links in emails from help desk or to past
donors.
- Onion sites. Because there's otherwise no reference to any .onion.
- That still sounds a lot, no? Does Tor Browser do that by default
across domains? Any other idea?
Anything else you would like to know?
Any issue with my methodology or interpretation?
Any other finding?