Skip to main content

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 0 until 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.