Now that you understand how data is structured in CauseVox (resources, base resources, and related resources), this article introduces the tools you’ll use to build custom reports.
This includes:
Output Columns
Calculated Fields
Filter by Field
Filter Groups (AND / OR)
Filter Subqueries (Exists / Not Exists)
These concepts form the foundation for building accurate, flexible reports. You’ll put them together in Reporting 301 when you build your first complete report.
Use the quick links to jump to the right section:
Output Columns
Output columns determine what information appears in each row of your report. These include core fields that are directly connected to the base resource.
For example, the Contacts core fields include:
ID: Unique identifier for the contact
Title: Professional, personal title
First Name: Contact's first or given name
Middle Name: Contact's middle name or initial
Last Name: Contact's last name or surname
Suffix: Name suffix (Jr., Sr., III, etc.)
Display Name: Full name as it should be displayed. This can be used for a nickname.
Maiden Name: Contact's maiden or previous last name
Custom Values: Custom field data specific to your organization
Deceased: Indicates whether the contact is deceased
Can Contact: Indicates whether the contact has given permission to be contacted
Reference ID: External reference or identifier from another system
Source: How the contact was originally created in the system
Updated At: Date and time the contact was last modified
Created At: Date and time the contact was first added to the system
Calculated Fields (Created by CauseVox)
To save you from having to build complex queries, CauseVox automatically calculates common values and makes them available as output columns.
This means you can add metrics like “Lifetime Value” without building filters or subqueries yourself. Calculated fields are helpful because:
You can add these values instantly as output columns
They require no subqueries and no custom logic
They allow complex donor analytics to be built quickly
You’ll use these a lot in donor, fundraising, and segmentation reports.
Below is the full list of calculated fields available when the base resource is Contacts (calculated per contact):
Revenue & Donations
Lifetime Value (Revenue)
Number of Revenue Transactions
Last Donation Date
Last Donation Amount
Last Donation Campaign Name
Lifetime Value (Donations Only)
Number of Donations
Average Donation Amount
Largest Donation Amount
Smallest Donation Amount
First Donation Date
First Donation Amount
Last Revenue Date
Last Revenue Amount
Engagement & Activity
Number of Ticket Orders
Number of Registrations
Number of Projects Created (peer-to-peer pages created)
Contact Information
Primary Email
Primary Phone
Primary Address Line 1
Primary Address Line 2
Primary City
Primary State
Primary Zipcode
Primary Country
Recurring & Installments
Number of Active Recurring Profiles
Number of Installment Profiles
Filter by Field
When you Add Filters, Filter by Field lets you set conditions on fields that belong directly to:
the base resource, or
a related resource when used inside a subquery
Here's examples of filter fields applied to base resources:
When the base resource is Contacts, filter by field can apply to the following contact core fields:
City = “Chicago”
Created At ≥ 2023
When the base resource is Revenue, filter by field can apply to the following revenue core fields:
Revenue Type = “Donation”
Amount > $100
Campaign Name = “Spring Gala”
These filters narrow down exactly which records appear in your final report.
Filter Groups (AND / OR)
Filter Groups let you combine multiple conditions together and choose how they interact.
Filter groups can be used:
Directly on the base resource
Inside a Filter Subquery
Nested to create complex logic
Here's examples of when AND / OR conditions will be met:
Use AND when every condition must be met.
Revenue Created At ≥ 01/01/2024
AND Revenue Created At ≤ 12/31/2024
→ Only revenue inside this date range will appear.
Use AND when:
You’re making a range (date range, amount range, etc.)
All criteria must be true
You want to narrow results
Use OR when any condition can be met.
Revenue Type = Donation
OR Revenue Type = Installment
→ Any record that qualifies for either type will appear.
Use OR when:
You want a list of possibilities
Criteria act as alternatives
You want to widen results
Filter Subqueries (Exists / Not Exists)
Subqueries let you “look into” related resources of your base resource.
Each subquery begins with a choice:
Exists: Include records that do have related activity matching your conditions
Not Exists: Include records that do not have related activity matching your conditions
Here's examples using Exists:
“Contacts who have donations in 2024.”
“Contacts who have revenue where Type = Donation.”
“Revenue items that have a related Ticket Order with amount > $100.”
Here's examples using Not Exists:
“Contacts who have not donated this year.”
“Contacts who do not have any active recurring profiles.”
“Contacts who have not made a gift to Campaign X.”
How Exists / Not Exists Interacts With Filters
Exists / Not Exists applies to the entire subquery.
AND / OR applies to the conditions within the subquery.
Using this example subquery, lets look at the interaction between conditions with filters: “Contacts who donated to Campaign A between two dates.”
Step 1: Create the subquery and select Exists. You want contacts who have at least one donation that matches your conditions, so you choose, Exists.
Step 2: Add the conditions inside the subquery. These conditions define which donations count:
Revenue Type = Donation
AND Campaign Name = “Campaign A”
AND Created At is between your start and end dates
Step 3: The combined meaning is "Give me contacts who have (at least one revenue record) where (all the conditions inside the subquery are true).”
Summary
In this article, you learned the core building blocks of the Query Builder:
Output Columns
Calculated Fields
Filter by Field
Filter Groups (AND / OR)
Filter Subqueries (Exists / Not Exists)
In the next article, Reporting 301, you’ll put these concepts into practice by building a full end-to-end custom report using real data.
