Skip to main content

8  How much does the annual fund drive raise?

Every fall Hubbard Hall mails an annual-fund appeal. Neon codes gifts to an Annual Fund Drive campaign for each drive back to FY13, which allows two measures that answer different questions and are worth keeping apart:

The fall 2025 drive’s in-window giving is examined household-by-household in Who responded to the fall 2025 appeal?; this chapter steps back to the year-by-year series. See Methodology for the clean-gift basis (business gifts coded to a drive, about $21k across all years, are excluded).

Code
import pandas as pd
import plotly.express as px
from hh.viz import style, BLUE

from hh.clean.accounts import clean_accounts
from hh.clean.donations import clean_donations
from hh.analytics.campaigns import annual_drive_by_year

tab = annual_drive_by_year(clean_donations(accounts=clean_accounts()))
tab = tab.loc[tab.index <= pd.Timestamp.today().year]  # drop the drive not yet mailed
Code
show = tab.copy()
show.index = [f"FY{y - 2000}" for y in show.index]
show.index.name = "Drive (fiscal year)"
show["gifts"] = show["gifts"].astype(int)
show["households"] = show["households"].astype(int)
for c in ("oct_jan", "later", "total", "median_window_gift", "top_window_gift"):
    show[c] = show[c].map("${:,.0f}".format)
show = show.rename(columns={"oct_jan": "in window (Oct–Jan)", "later": "later, still coded",
                            "total": "total coded", "median_window_gift": "median in-window gift",
                            "top_window_gift": "largest in-window gift"})
show
Table 8.1
gifts households in window (Oct–Jan) later, still coded total coded median in-window gift largest in-window gift
Drive (fiscal year)
FY12 116 111 $20,560 $2,598 $23,158 $75 $2,500
FY13 108 104 $31,430 $5,815 $37,245 $100 $15,000
FY14 157 154 $28,172 $17,025 $45,197 $100 $2,500
FY15 229 183 $24,067 $39,191 $63,258 $100 $1,450
FY16 275 235 $23,164 $40,372 $63,536 $70 $1,500
FY17 236 205 $18,850 $48,015 $66,865 $100 $1,600
FY18 222 194 $37,765 $29,155 $66,920 $100 $10,000
FY19 178 162 $22,360 $26,815 $49,175 $100 $2,000
FY20 131 127 $33,975 $14,550 $48,525 $100 $15,000
FY21 216 209 $41,929 $20,178 $62,107 $100 $5,000
FY22 164 161 $38,971 $19,954 $58,925 $100 $5,000
FY23 140 131 $23,753 $21,953 $45,706 $100 $5,000
FY24 189 167 $29,375 $29,380 $58,755 $100 $4,000
FY25 116 110 $37,238 $8,220 $45,458 $100 $5,000
FY26 172 159 $37,580 $25,199 $62,779 $100 $5,000
Code
long = tab.reset_index().melt(id_vars="drive", value_vars=["oct_jan", "later"],
                              var_name="When", value_name="Dollars")
long["FY"] = long["drive"].map(lambda y: f"FY{y - 2000}")
long["When"] = long["When"].map({"oct_jan": "In window (Oct–Jan)",
                                 "later": "Later, still coded to the drive"})
fig = px.bar(long, x="FY", y="Dollars", color="When",
             color_discrete_sequence=[BLUE, "#b3cde3"])
style(fig).show()
Figure 8.1

What the series shows:

  • The window measure is steadier and recently stronger. In-window giving averaged about $25,796 across the fall 2012-2019 drives and $34,689 across fall 2020-2025, on household counts that barely moved. The best window on record is the fall 2020 pandemic drive ($41,929 from 209 households, with a largest gift of only $5,000).
  • The gap between the two measures is concentrated, not diffuse. In most years a single recurring five-figure gift arrives just after the window closes, and mid-decade drives carry sizable later-coded tails (spring gifts carrying the campaign label), so total-coded exceeds the window by anywhere from under ten percent to a factor of three.
  • The typical gift has not changed. The median in-window gift sits between $70 and $100 in every drive on record.
  • A separate Summer-Fall 2022 matching campaign (about $28k, FY23) ran alongside that year’s drive and is not included in these figures.