Skip to main content

Reporting 201: Understanding The Report Builder

Learn how each part of the Report Builder works and how to use it to shape your report output.

Written by Jenna Notarfrancesco

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.

Was this article helpful? Rate it below!

Did this answer your question?