The module CiviCampaign provides basic functions to link contributions with campaigns. Thus, it enables users to determine the success of a campaign e.g. in regard to „return on investment“. Such data is most important to fundraisers in order to evaluate and adapt their fundraising strategy.
However, the possibilities for analyzing the outcome are very limited – e.g. there are no functions to record costs involved with a campaign action or the campaign's budget. Also, there is no campaign hierarchy which means that planning more complex campaigns (e.g. a parent campaign consisting of subsequent actions such as several online mailings, offline mailings and events) and analyzing their outcome afterwards is hardly possible without additional external tools.
As a result, within CiviCRM there is no efficient way to plan complex campaigns (including subsequent campaign actions, costs, budgets, fundraising goals...), or to analyze the success and costs of campaigns and their subsequent actions. This is a big deficit as this data constitutes the basis for a goal-oriented development of the organization's fundraising and overall strategy.
We do not know of any CiviCRM-Extensions or other projects with a similar scope. There is an extension called "Advanced Fundraising Reports" but it mainly aims at providing addition preconfigured reports. The project aims at enhancing CiviCRM capabilities for strategic fundraising, campaigning and reporting in the following ways:
Creating the possibility for parent and child campaigns adapting the user interface for creating and viewing existing campaigns (e.g. a hierarchical „tree view“ and possibilities for filtering creating functions that simplify campaign management (such as copying complete campaigns including subsequent campaigns and adapting campaign dates)
Fields/function for adding categorized costs (such as postal fees, printing costs...) associated with a single campaign or campaign's action (e.g. multiple value fields or financial items) function to calculate the overall costs of of a single campaign and it's child campaigns/actions creating a field or a function to (manually or automatically) add campaign codes that enable a (semi-) automatic matching of contributions and campaigns create fields/functions for recording the number of contacts involved in the campaign, the costs per recipient involved (e.g. for determining the costs of acquiring a contribution or the response quote)
Please refer to the Installation Guide
CiviFundraiser adds an extended campaign dashboard to CiviCRM
Here you can find all relevant information for a specific campaign:
- The campaign name
- Its parent- and sub-campaigns
- Buttons to
- View the Campaign Tree, a visualization of the campaign relationships
- Edit the current campaign
- Create a sub-campaign of the current one
- Clone the current campaign with or without all of its sub-campaigns (This keeps the relationship of all campaigns in a specific sub-tree and creates a copy of it.)
- The quick information panel, that shows campaign status information, like
-
Campaign Status
-
Wherether it is active or disabled
-
The external identifier
-
Start- and end date of the campaign
-
The revenue goal for this campaign
-
An "Apply to Subcampaigns"-Button (1), that applies the respective campaign attribute to all sub-campaigns. Be careful when using this as there is currently no option to reverse this operation. In case of doubt use the Clone Tool to create a copy of a campaign first.
-
The "Return to Dashboard"-Button that lets you return to the standard campaign dashboard of CiviCRM
-
- The Campaign Information-Section (collapsed by default), that contains the
- Campaign Description
- Campaign Goals
- The Key Performance Indicator Charts-Section, which shows visualizations for some KPIs
- The Key Performance Indicator-Section
- The Campaign Expense-Section
The Campaign Tree View is a visualization of the campaign hierarchy. It shows a campaign and all of its sub-campaings as an interactive tree structure. This view is zoomable, scrollable and supports drag-and-drop-editing of the tree.
-
Left-clicking a node switches the tree view to the selected node
-
Left-clicking a node while dragging enters the drag-and-drop mode. Drop the node on another one to make it a subcampaign of it. This also works with sub-trees. When selecting a sub-tree, only the selected node is visible, all other nodes are invisible until the operation is completed.
-
Dragging while not clicking on a node will pan the currently visible tree.
-
Scrolling in and out will zoom in or out of the tree view.
-
Use the Reset View-button to reset the view to the default settings. This does not affect the tree structure in any way. Therefore you can not use this to undo changes made to the tree.
- You can access a context menu with a right-click on a node in the tree view. This gives you the following options:
Use this option to quickly navigate to the dashboard of the selected campaign.
Use this option to quickly navigate to the edit page of the selected campaign.
Use this option to quickly create a new campaign that is a subcampaign of the selected node.
This tool enables you to quickly create copies of a single campaign or nested campaigns.
- Include subtree: Enabling this checkbox will create a copy of the currently selected campaign including all subcampaigns of it. Disabling it will only clone the current campaign.
- Title Match Pattern: When cloning a subset of campaigns CiviFundraiser will scan the titles of all affected campaigns for this pattern and change all occurrences with the Title Replacement Pattern.
- For example: The campaign "Holiday Campaign 2015" with a Title Match Pattern "/2015/" and a Title Replacement Pattern "2016" will change the Title of the clone to "Holiday Campaign 2016".
- Start Date Offset/End Date Offset: The start (or end-) date of all affected campaigns will be offset by this value.
- Other possible valid values are: "+5 weeks", "12 day", "-7 weekdays", but it is recommended to use days.
This list of default Key Performance Indicators contains the following values of the current campaign (and partially subcampaigns):
- Total Revenue
- Total Revenue Goal
- Number of Contributions (completed)
- Average Amount of Contributions
- Number of Contributions (all but cancelled/failed)
- Total Costs: Sum of expenses connected with this campaign tree
- Number of First Contributions: Number of contributions of new donors
- Average Cost per First Contribution
- Average Cost per Second or Later Contribution
- ROI: Return on investment
- Total Revenue Reached: Revenue goal reached in percent
For developers: This list is extendable and can be fully customized by implementing a civicrm hook explained in detail below.
This section contains a subset of all available KPIs that are additionally visualized to enable a quick overview of the campaign's status.
For developers: It is possible to change the behavior of this section (i.e. adding and removing KPIs from it or change the type of visualization) by implementing a civicrm hook explained in detail below.
The campaign expenses interface shows all expenses associated to a specific campaign. It allows you to add new expenses or edit/delete existing ones.
To add a new expense click on the Add Expense-Button. The following dialog will appear:
This works the same way as adding a new expense. Click on the Edit-Button of an existing expense to open the dialog shown above.
Click on the Delete-Button of an existing expense. A confirmation dialog will appear:
Selecting Continue deletes the expense. This cannot be undone.
The issue tracker for this project can be found here: https://github.com/systopia/de.systopia.campaign/issues
As mentioned above you can add custom KPIs, edit or remove existing ones by implementing the following hook:
civicrm_campaign_kpis ($campaign_id, $kpi_array, $tree_level)
The $kpi_array
consists of kpi-elements that follow this schema:
$kpi["donation_heartbeat"] = array(
"id" => "donation_heartbeat",
"title" => "Donation Heartbeat", // title shown in kpi list on the dashboard
"kpi_type" => "hidden", // "hidden", "money", "number" or "percentage"
"vis_type" => "line_graph", // "line_graph" or "pie_chart"
"description" => "Donation Heartbeat", // short description, not used yet
"value" => $all_contribs, // value(s) of this KPI
"link" => "" // link to advanced description, not used yet
);