Run the Campaign Performance Report
Goal: Quantify the success of a closed campaign — gross raised, net of expenses, donor breakdown, ROI — and turn that into decisions about whether to repeat, refine, or retire.
What the report covers
For each campaign in the affiliate (filterable by start / end date), the report surfaces:
- Gross raised — total of all gifts attributed to the campaign
- Number of gifts
- Number of unique donors
- Average gift size
- Goal achievement rate — raised vs. campaign goal
- Daily timeline — daily and cumulative giving across the campaign window
Today's report does not compute the following on its own — they appear as planned/placeholder fields and depend on data that the system can't yet derive automatically:
- Median gift size — not in the dedicated report (export to CSV from the donations list and compute it externally)
- New vs. returning donor breakdown — not in this report (the Donor Engagement Report covers this affiliate-wide; per-campaign new/returning is on the roadmap)
- Channel attribution by UTM — UTM parameters are not parsed into the report; donations carry a generic source field that gets set during recording
- Linked-expense net / cost-to-raise / ROI / donor acquisition cost — fields render as
0until expense linking is finished. You can link expenses to a campaign from the campaign manager's Linked Expense view; once campaign-expense rollups are wired into reporting, these fields will populate. Until then, calculate cost-to-raise manually using the linked expenses panel as the input.
When to run it
- Immediately after the campaign closes for the post-mortem meeting
- Quarterly to compare campaigns running across the year
- Annually as part of the development team's strategic planning
Running the report
From the Reports section, choose Campaign Performance. The report runs across all campaigns in your affiliate; narrow the window with start / end date filters when you want a slice.
The report renders interactively, with the daily timeline as the primary chart. Drilldown by donor type, gift bracket, or channel is not available in the dedicated report today — for that level of analysis, build a custom report against the donations data source in the Visual Report Builder.
Reading the report
Headline numbers:
- Did we hit goal? Yes/no, percentage achieved (this is the goal achievement rate the report exposes directly)
- Cost-to-raise ratio — calculated manually from linked expenses today (benchmarks: direct mail $0.20–$0.30; major-gift work much lower; events often $0.50+)
- New donor share — derive from the Donor Engagement Report (the Campaign Performance Report doesn't break new vs. returning out yet)
Patterns to watch:
- A spike at launch then a long flat tail — typical for direct response campaigns
- A "double hump" — launch + final-push — typical for well-managed campaigns with strong final-push communication
- Steady climb without spikes — campaigns built around peer-to-peer or sustained social media
Comparing campaigns
Run the report for two campaigns side-by-side:
- This year's annual appeal vs. last year's
- Two parallel campaigns (e.g., monthly partner drive vs. capital match)
- A direct response campaign vs. a peer-to-peer campaign
Comparison reveals which strategies are working. Don't just compare absolute dollars — compare cost-to-raise, new-donor acquisition, and stewardship outcomes (did the campaign acquire donors who renewed?).
Channel attribution
Donations carry a generic source / channel field that is set when the gift is recorded. The dedicated Campaign Performance Report does not break out donations by channel today — UTM parameters are not parsed automatically, and the report aggregates totals across all channels.
If you need a channel breakdown, run a custom report against the donations data source filtered to the campaign and grouped by source. Common values you'll see in the source field include:
- Embedded forms on your website
- Public donate page
- Manual entry (direct mail, phone, walk-in)
- Peer-to-peer pages
- In-person card-present (event terminals)
Attribution still depends on accurate source tagging. If your team enters all manual donations without setting a source, the channel breakdown will be incomplete. Set the source on every manual entry.
ROI conversation
The cost-to-raise number is the start of the ROI conversation, not the end. Also consider:
- New donors acquired — these donors will give again, so the lifetime value matters more than the first-year cost
- Donor upgrade — did existing donors give more this campaign than they did before?
- Mission impact — did the campaign tell your story effectively?
A campaign with a "high" cost-to-raise can still be worth repeating if it acquires lifetime donors. A campaign with a "low" cost-to-raise can be worth retiring if it's just collecting from the same shrinking pool.
Documenting decisions
After running the report, capture in the campaign notes:
- The final numbers
- The decision (repeat / refine / retire)
- Specific changes for next time
Then, when you stand up next year's version, you have a head start.
Multi-campaign rollup
The base report already returns every campaign in your affiliate matched by your start / end window — so a year-window run is the multi-campaign rollup. Sort by gross raised or goal achievement to pick out the top performers, and use it as the input to your annual strategy review.
Net-and-cost-to-raise rollups depend on linked-expense reporting, which is still being wired through. For now, calculate net manually using the linked expenses panel on each campaign.