> ## Documentation Index
> Fetch the complete documentation index at: https://help.fieldpulse.com/llms.txt
> Use this file to discover all available pages before exploring further.

# How to Create Maintenance Agreement Reports

> Build a maintenance agreement report in FieldPulse to total annual fees, group agreements by service or billing frequency, and track upcoming service.

> **Who uses this:** Admins have full reporting access, and Team Managers can be given it. Service Agents and Limited Agents do not have reporting access. **Availability:** All regions.

A maintenance agreement report is built from the **Maintenance Agreement** tab in raw data reporting, and it pulls your recurring service contracts — total annual fee, price per bill, service frequency, billing frequency, status, and the last and next job occurrences — into one table. That table is where you see the recurring revenue your agreements carry and which agreements are due for service.

## Overview

A maintenance agreement report answers one question about your recurring work: which agreements match the conditions you care about. Use it to total the annual fees you are carrying, group agreements by how often you service them or how often you bill them, and see everything one customer is signed up for.

Building a maintenance agreement report follows the same path as every other raw data report — set a date range, choose the columns, set filters, then read the table. Reporting on [maintenance agreements](https://www.fieldpulse.com/features/maintenance-agreements) is part of [FieldPulse's dashboards and reporting](https://www.fieldpulse.com/features/dashboards-and-reporting). For the parts of the reporting flow that are the same on every record type — saving a report, adding it to your dashboard, and exporting to CSV — see [How to Use Raw Data Reporting](/reporting/raw-data/using-raw-data-reporting).

## Video walkthrough

<Frame caption="Video walkthrough: Creating a report in raw data reporting">
  <iframe src="https://www.loom.com/embed/437e2f91c48142ee959051d74cc1a458?hide_owner=true&hide_share=true" width="100%" height="420" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen />
</Frame>

## Before you begin

* Create the maintenance agreements you want to report on, and confirm maintenance agreements are enabled in your account. See [How to Create a Maintenance Agreement](/jobs/assets/maintenance-agreements).

* Check that your role has reporting access. An Admin has full reporting access; a Team Manager needs **Full Reporting access** turned on.

## Set the date range

1. Select **Reporting** under the **Management** tab in the left-side menu.

2. Select the **Maintenance Agreement** tab, then select **Raw Data**.

3. Select the calendar icon and choose the start date range you want to report on.

4. Select **Load Data**.

<img src="https://mintcdn.com/fieldpulse/psdMNh7id29SyYp0/static/images/_api/9461058-maintenance-agreement-reports/01.png?fit=max&auto=format&n=psdMNh7id29SyYp0&q=85&s=2cf382f69895d5c1db74c46f1a5b25cb" alt="The Start Date Range field in raw data reporting, with preset ranges from Today through Last 30 Days listed beside two month calendars" width="1642" height="794" data-path="static/images/_api/9461058-maintenance-agreement-reports/01.png" />

The calendar offers these presets:

| **Preset**       | **Date range**                                    |
| ---------------- | ------------------------------------------------- |
| **Today**        | 12:00 AM to the current time                      |
| **Yesterday**    | The previous day, 12:00 AM to 11:59 PM            |
| **This Week**    | Monday through Sunday of the current week         |
| **Last Week**    | The previous week                                 |
| **Last 7 Days**  | The previous seven days, including today          |
| **This Month**   | The first of the current month to the current day |
| **Last Month**   | The entire month before the current month         |
| **Last 30 Days** | The previous 30 days, including today             |
| **Custom**       | Start and end dates you select on the calendar    |

## Choose your columns

Select **Columns** to choose which maintenance agreement fields appear in the report table and the order they appear in.

<img src="https://mintcdn.com/fieldpulse/psdMNh7id29SyYp0/static/images/_api/9461058-maintenance-agreement-reports/02.png?fit=max&auto=format&n=psdMNh7id29SyYp0&q=85&s=643e53a3515140986840dee681de5da9" alt="The Columns panel open in raw data reporting, with the Columns button highlighted in the toolbar and a checkbox for each report field" width="1200" height="717" data-path="static/images/_api/9461058-maintenance-agreement-reports/02.png" />

The maintenance agreement report includes these columns by default:

| **Column**                                            | **What it holds**                                                                                                                                                               |
| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **#ID**                                               | The maintenance agreement number                                                                                                                                                |
| **Title**                                             | The maintenance agreement title                                                                                                                                                 |
| **Status**                                            | Maintenance agreement status                                                                                                                                                    |
| **Customer**                                          | Customer linked to the agreement                                                                                                                                                |
| **Location**                                          | Service location for the agreement                                                                                                                                              |
| **Created At**                                        | Date and time the agreement was created                                                                                                                                         |
| **Created By**                                        | Author of the agreement                                                                                                                                                         |
| **Job Notes**                                         | Notes on related job records                                                                                                                                                    |
| **Agreement Notes**                                   | Notes on the agreement                                                                                                                                                          |
| **Start Date**                                        | Maintenance agreement start date                                                                                                                                                |
| **Price per Bill**                                    | Price per agreement bill                                                                                                                                                        |
| **Total Annual Fee**                                  | Total agreement price per year                                                                                                                                                  |
| **Frequency Display Name**                            | Frequency of the maintenance agreement                                                                                                                                          |
| **Last Job Occurrence Month**                         | Last maintenance agreement job occurrence                                                                                                                                       |
| **Next Occurrence — Next Occurrence Month**           | The month and year of the next scheduled occurrence (for example, *May 2026*). If a job has already been created for that occurrence, the cell links directly to the job record |
| **Next Occurrence — Next Occurrence Record**          | Blank if no job has been created yet. If a job exists, displays the job title with a hyperlink to the job record                                                                |
| **Next Occurrence — Next Occurrence Schedule Status** | Blank if no job exists or if the job is unscheduled. If the job has been scheduled, displays the date and time it is booked for                                                 |
| **Next Occurrence — Next Occurrence Job Status**      | Blank if no job exists. If a job has been created, displays its current status                                                                                                  |
| **Billing Frequency Display Name**                    | Frequency of billing                                                                                                                                                            |
| **Custom Fields**                                     | User-created fields related to the maintenance agreement                                                                                                                        |
| **Customer — Custom Fields**                          | User-created fields related to the customer record                                                                                                                              |
| **Customer — Customer Phone**                         | Customer's primary phone number                                                                                                                                                 |
| **Customer — Customer Email**                         | Customer's primary email address                                                                                                                                                |
| **Customer — Customer Phone 2**                       | Customer's secondary phone number                                                                                                                                               |
| **Customer — Customer Email 2**                       | Customer's secondary email address                                                                                                                                              |
| **Customer — Customer Assigned To**                   | User assigned to the customer record                                                                                                                                            |
| **Customer — Customer Lead Source**                   | Lead source on the customer record                                                                                                                                              |
| **Customer — Customer Pipeline Status**               | The customer's custom sales pipeline status                                                                                                                                     |
| **Customer — Customer Next Steps**                    | Next steps listed on the custom sales pipeline                                                                                                                                  |
| **Customer — Customer Notes**                         | Notes on the customer record                                                                                                                                                    |
| **Customer — Customer Job Notes**                     | Job notes on the customer record, automatically inserted onto job records                                                                                                       |
| **Customer — Customer Created Date**                  | Date and time the customer was added to FieldPulse                                                                                                                              |
| **Customer — Customer Tags**                          | Tags attached to the customer record                                                                                                                                            |

## Set your filters

Before running the report, set filters to narrow the results. Select the **Filters** icon, then choose how you want to filter the report.

<img src="https://mintcdn.com/fieldpulse/psdMNh7id29SyYp0/static/images/_api/9461058-maintenance-agreement-reports/03.png?fit=max&auto=format&n=psdMNh7id29SyYp0&q=85&s=ac58614657104a260241973f2c6699ac" alt="The Filters panel open in raw data reporting, with the Filters button highlighted in the toolbar and an expandable list of report fields" width="1200" height="723" data-path="static/images/_api/9461058-maintenance-agreement-reports/03.png" />

Most fields filter by contents — you choose an operator and enter a value. The **Filters** panel offers these fields:

| **Field**                               | **How you filter**       |
| --------------------------------------- | ------------------------ |
| **#ID**                                 | Filter by contents       |
| **Title**                               | Filter by contents       |
| **Status**                              | Select the status        |
| **Customer**                            | Filter by contents       |
| **Location**                            | Filter by contents       |
| **Created At**                          | Filter by date           |
| **Created By**                          | Filter by contents       |
| **Job Notes**                           | Filter by contents       |
| **Agreement Notes**                     | Filter by contents       |
| **Start Date**                          | Filter by date           |
| **Frequency Display Name**              | Filter by contents       |
| **Last Job Occurrence Month**           | Filter by contents       |
| **Billing Frequency Display Name**      | Filter by contents       |
| **Custom Fields**                       | Select the custom field  |
| **Customer — Customer Phone**           | Select the phone number  |
| **Customer — Customer Email**           | Select the email address |
| **Customer — Customer Phone 2**         | Select the phone number  |
| **Customer — Customer Email 2**         | Select the email address |
| **Customer — Customer Assigned To**     | Filter by contents       |
| **Customer — Customer Pipeline Status** | Select the status        |
| **Customer — Customer Next Steps**      | Filter by contents       |
| **Customer — Customer Notes**           | Filter by contents       |
| **Customer — Customer Job Notes**       | Filter by contents       |
| **Customer — Customer Created Date**    | Filter by contents       |
| **Customer — Customer Tags**            | Filter by contents       |

### Filter operators

When you filter by contents, choose an operator and then enter the values to filter the data on.

| **Operator**             | **Retrieves data**                         | **Example**                                       | **Data retrieved**                                          |
| ------------------------ | ------------------------------------------ | ------------------------------------------------- | ----------------------------------------------------------- |
| Equals                   | Equal to a specified value                 | Created By - Equals Tom Gause                     | For all records created by Tom Gause only                   |
| Not Equal                | Different from a specified value           | Tag - Not Equal to HVAC                           | For all records except those using the HVAC tag             |
| Less Than                | Lower than a specified value               | #ID - Less than 1144                              | For all records below #1144                                 |
| Less Than or Equal To    | Lower than or equal to a specified value   | Job Date/Time - Less than or equal to 12/13/2023  | For jobs scheduled before or on 12/13/2023                  |
| Greater Than             | Greater than a specified value             | Job Duration - Greater than 60 minutes            | For jobs in the In Progress status type for over 60 minutes |
| Greater Than or Equal To | Greater than or equal to a specified value | Job Date/Time - Greater than or equal to 1/1/2024 | For jobs scheduled on or after 1/1/2024                     |
| In Range                 | Including and between two specified values | #ID - Between 1225 and 1236                       | For all estimate records with #IDs between 1225 and 1236    |
| Starts With              | Begins with a specified value              | Title - Annual                                    | For all job records beginning with Annual                   |
| Ends With                | Ends with a specified value                | Location - TX                                     | For all job locations ending with TX                        |
| Blank                    | No values are in the field                 | Subtitle                                          | For all job records with blank subtitles                    |
| Not Blank                | Values in the field                        | Notes                                             | For all job records with values in the notes field          |

## Common maintenance agreement reports

Three reports cover most of what teams pull from the **Maintenance Agreement** tab. Each one keeps whichever columns you want, plus the one column it groups on — drag that column into the grouping bar above the table.

| **Report**                                  | **What it shows**                                           | **Column it must include**       | **Group by**                     |
| ------------------------------------------- | ----------------------------------------------------------- | -------------------------------- | -------------------------------- |
| Maintenance agreements by frequency         | Your maintenance agreements sorted by frequency of services | *Frequency Display Name*         | *Frequency Display Name*         |
| Maintenance agreements by billing frequency | Your maintenance agreements sorted by billing frequency     | *Billing Frequency Display Name* | *Billing Frequency Display Name* |
| Maintenance agreements by customer          | Your maintenance agreements sorted by customer              | *Customer*                       | *Customer*                       |

<Frame caption="Video walkthrough: Building the by-frequency, by-billing-frequency, and by-customer reports">
  <iframe src="https://www.loom.com/embed/fbe9b99a01c44076aae51ec6dd9e9920?hide_owner=true&hide_share=true" width="100%" height="420" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen />
</Frame>

## Tips

* **Total Annual Fee** is the column to add up when you want the recurring revenue your agreements represent.

* Add the **Next Occurrence** columns when you want to see which upcoming services already have a job created, what that job's status is, and when it is booked.

## FAQs

### Can I save a maintenance agreement report to use again?

Yes. Select **Save as Report**, then **Save as New** to store it under **Select Report**, or **Save as Widget** to add it to your Pulse Dashboard. See [How to Use Raw Data Reporting](/reporting/raw-data/using-raw-data-reporting) for the full saving flow.

### Can I export a maintenance agreement report to a spreadsheet?

Yes. Select **Export CSV** to download the report currently on your screen as a CSV file to your device.

## Related articles

* [How to Use Raw Data Reporting](/reporting/raw-data/using-raw-data-reporting)
* [How to Create a Maintenance Agreement](/jobs/assets/maintenance-agreements)
* [How to Manage Assets](/jobs/assets/managing-assets)
* [How to Create Asset Reports](/reporting/raw-data/asset-reports)

Your maintenance agreement report is working when the table returns the agreements you expected for the date range, shows the fee and frequency columns you selected, and rolls the rows up under the column you grouped by.


## Related topics

- [How to Create a Maintenance Agreement](/jobs/assets/maintenance-agreements.md)
- [Maintenance Agreement Reminders Overview](/jobs/assets/maintenance-customer-view.md)
- [How to Create Asset Reports](/reporting/raw-data/asset-reports.md)
- [How to Use Raw Data Reporting](/reporting/raw-data/using-raw-data-reporting.md)
