How to Build a Custom Report in ServiceTitan: Report Builder Walkthrough
ServiceTitan's Report Builder lets you assemble any KPI from underlying job, invoice, lead, and tech data. Here is the full step-by-step plus the column tricks most shops miss.
Key takeaways
- ServiceTitan's Report Builder is one of the deepest reporting tools in field service, with custom column logic, row-level filters, and rollup support
- Reports are built from templates that map to entity types like Job, Invoice, Customer, Lead, Membership, and Inventory
- Custom columns support arithmetic and conditional logic, which is how you build derived KPIs like revenue-per-hour or close-rate-by-tech
- Multi-template reports join across entities, like jobs to invoices to memberships, so you can answer cross-entity questions
- The bottleneck is not the tool, it is the time to spec, build, and maintain reports as the business changes
Contents
- 01What the Report Builder is
- 02Step-by-step: create a custom report from scratch
- 03Step-by-step: pick the right template
- 04Step-by-step: customize columns
- 05Step-by-step: build a custom column with arithmetic
- 06Step-by-step: multi-template reports for cross-entity joins
- 07Step-by-step: rollup reporting
- 08What the Report Builder cannot do
- 09Real contractor stories
- 10Sources
- 11Frequently Asked Questions
ServiceTitan ships dozens of report templates, and most shops use fewer than ten of them on a regular basis. The Report Builder is a sophisticated piece of software with custom column arithmetic, multi-template joins, and rollup logic that rivals what you would expect in a BI tool. The reason most contractors leave it on the shelf is the time investment to learn it.
This guide walks the full Report Builder, from picking a template to setting up custom columns to running multi-template joins. It also covers where the Report Builder runs out of road and the questions Clint answers that the Report Builder structurally cannot.
What the Report Builder is
The Report Builder is the tool inside ServiceTitan that turns the underlying database into a queryable report. Every report you have ever seen in ServiceTitan, including the canned templates, is a Report Builder definition under the hood.
A report has four moving parts:
- Template: the entity type the report is built around (Job, Invoice, Customer, Lead, Membership, etc.)
- Columns: the fields displayed, including custom columns with arithmetic
- Filters: the row-level conditions that narrow the result set
- Rollup: optional grouping that aggregates rows into summaries
When you run a report, ServiceTitan executes the definition against your live tenant data and returns the result. There is no caching, no overnight refresh, and no separate data warehouse. The performance is excellent because ServiceTitan invested heavily in the underlying query engine.
Step-by-step: create a custom report from scratch
Run this whenever the question you have is not already in a canned report.
- From the navigation bar click Reports
- Click All Reports in the left sidebar
- Click Create Report at the top right to open the Report Builder page
- Choose a report type to see related templates (e.g. Sales > Job Sales by Tech)
- Click a template to use for your report
- A list of columns available for the selected template displays
- Select which columns you want to include in your report
- Click Edit Columns if you need to deselect any default columns or add more
- Set filters by clicking the Filter icon on each column header
- Click Run to execute the report
- Click Save As at the top to give the report a name and save it
The report now lives under My Reports. You can rerun it any time, schedule it for email, export it to XLS or PDF, or use it as a module in a custom dashboard.
Text Clint: "what is my revenue by business unit this month vs last month"
Step-by-step: pick the right template
Templates are the starting point, and choosing the wrong one is the most common mistake. Each template is anchored to an entity, and the columns you can add are scoped to that entity plus its directly-joined entities.
The high-leverage templates:
- Job Sales: revenue, parts, labor, taxes, business unit, tech, completion date. Anchor template for any revenue analysis.
- Job List: status, scheduled date, completed date, customer, tech, location. Anchor for operational analysis like first-trip-fix or callback rate.
- Invoice: invoice total, balance, age, payment status, customer. Anchor for AR analysis.
- Customer: lifetime value, last service date, membership status, location count. Anchor for reactivation and segmentation.
- Lead: source, status, age, assigned owner, conversion to job. Anchor for marketing and pipeline analysis.
- Membership: type, start date, expiration date, renewal status, customer. Anchor for retention analysis.
- Tech Performance: average ticket, jobs completed, callbacks, revenue, hours. Anchor for tech-leaderboard analysis.
Pick the template that matches the entity your question is about. If your question is "which techs have the highest callback rate," start from Tech Performance, not Job List. The Tech Performance template ships with the right join already.
Step-by-step: customize columns
You can customize which columns you want to include in your results by clicking Edit Columns to open the Edit Columns screen, then select the items you want to add as columns in your report and deselect any items you want to remove.
The column picker is organized into sections:
- Default columns: pre-selected by the template
- Available columns: scoped to the entity and its joined entities
- Custom columns: arithmetic or conditional logic on existing columns
You can customize how your report displays and add column filters to narrow your results, and interact with column headers to change how the report displays by dragging a column header to change its order in the report.
The trick most shops miss: the column picker is paginated, and the high-value columns are often on page 2 or 3. For a Job Sales report, the default columns are revenue and tech name. The columns that actually answer your question (parts margin, completion date, equipment installed, membership status of the customer) are buried.
Spend the extra five minutes scrolling the full column picker on every new report. The columns are there.
Text Clint: "how do I add a column for parts margin to my job sales report"
Step-by-step: build a custom column with arithmetic
This is where the Report Builder pulls ahead of every other field-service reporting tool. Custom columns let you do math on existing columns and save the result as a new column.
- In the Edit Columns screen click Custom Columns
- Click Add Custom Column
- Name the column (e.g. "Revenue per Hour")
- Choose the formula type: arithmetic, conditional, or rollup
- Build the formula using existing columns and operators
- Set the display format: currency, percentage, number, text
- Save
Real examples that pay back the build time:
- Revenue per Hour = Job Revenue / Tech Hours On Job
- Close Rate = Sold Estimates / Total Estimates
- Membership Conversion Rate = New Memberships / Eligible Jobs
- Net Profit per Job = Job Revenue - Job Cost - Tech Pay - Vehicle Cost
- First Trip Fix = Jobs With No Callback / Total Jobs
Conditional columns are even more powerful. You can write logic like "if Job Status equals Completed and Customer Membership equals Active, then 1, else 0" to count membership-driven completed jobs separately from cash jobs.
Text Clint: "build me a custom column that flags any job over $10K with no membership attached"
Step-by-step: multi-template reports for cross-entity joins
Most reports stay within one entity. Multi-template reports cross entities, which is how you answer questions like "which customers had a job last month and a membership that expires this month."
ServiceTitan supports multi-template reports for a defined set of joins. The most useful:
- Jobs + Invoices: revenue against AR aging
- Customers + Memberships: lifetime value against renewal status
- Leads + Jobs: marketing source against revenue outcome
- Jobs + Equipment: install history against service history
To create one:
- Start from the primary template (the entity you want one row per)
- In the column picker, expand the joined-template section
- Add columns from the joined template
- Add filters from either template
The report engine handles the join automatically. The result is a single row per primary entity with columns from both.
The honest limit: not every cross-entity question is supported. ServiceTitan's join graph is finite, and questions that require three or more entities (like jobs + memberships + marketing campaigns + tech performance) usually require multiple reports stitched together in Excel.
For the categories of questions that fall outside the join graph entirely, see questions no dashboard will answer.
Step-by-step: rollup reporting
Rollup reports aggregate rows into summaries. Instead of one row per job, you get one row per tech with the sum of revenue across that tech's jobs.
- Build the base report (e.g. Job Sales)
- Click the Rollup icon at the top of the report builder
- Choose the rollup field (e.g. Tech Name)
- Choose the aggregation function for each numeric column (sum, average, count, min, max)
- Run
You can rollup on any non-numeric column. Common rollups:
- By tech: revenue, jobs, average ticket, callbacks
- By business unit: revenue, jobs, gross margin
- By campaign: leads, conversion rate, revenue
- By zip code: revenue density for marketing targeting
- By month: time-series for trend analysis
The combination of custom columns + rollup + multi-template is what makes the Report Builder feel like a BI tool. Most contractors never reach this combination because the learning curve is real.
For a deeper take on which reports actually move the needle, see ServiceTitan reports that move the needle and the home service KPIs complete metrics playbook.
What the Report Builder cannot do
Three structural limits worth knowing:
1. It cannot read outside ServiceTitan. Your email, your call recordings, your calendar, your texts, your QuickBooks data, your ad-platform data (without Marketing Pro Ads) are not in the Report Builder. Every question that requires correlating ServiceTitan data with external data needs a different tool.
2. It cannot answer free-form questions in plain English. You have to know which template to start from, which columns to add, which filters to apply, and which rollup to use. The mental model alone is a 30-minute job for a non-trivial question.
3. It is not real-time conversational. The fastest path from question to answer is "build the report, save it, run it, read the rows." That is fine for weekly KPIs. It is not fine for "I need to know right now which leads from yesterday have not been contacted."
Atlas closes some of this gap inside ServiceTitan by letting you ask questions in plain English and running the underlying report for you. Atlas plus the Report Builder is genuinely powerful for in-platform questions.
What it does not close is the cross-system gap. Clint sits beside ServiceTitan and reads ServiceTitan + Gmail + Google Calendar + CallRail at the same time. You text Clint a question and it answers across all four sources.
Text Clint: "show me techs whose average ticket dropped more than 15% from last month and pull up their last 10 jobs"
Real contractor stories
The Owned and Operated podcast episode 140 with Danny Peavey covers the ServiceTitan KPI minefield in detail. The recurring theme is that contractors build reports they do not trust because the underlying data is dirty (CSRs picking the wrong campaign, techs not closing jobs in real time, business units not labeled consistently). The Report Builder is only as good as the data underneath it.
ServiceTitan's own webinar series, Reporting 101 - Back 2 Basics, walks through how multi-location HVAC operators end up with 50+ saved reports and no idea which ones their managers actually use. The recommendation across the consultant community is to audit your report library quarterly and delete anything not run in the last 90 days.
For the related case of pulling clean data out of competing platforms, see housecall pro reports hidden and missing and housecall pro reports miss job profit.
Sources
- ServiceTitan Help: Create custom reports
- ServiceTitan Help: Edit custom reports
- ServiceTitan Help: Create and run multi-template reports
- ServiceTitan Help: Custom-built report templates
- ServiceTitan Webinar: Reporting 101 - Back 2 Basics
- Owned and Operated #140: Navigating the ServiceTitan KPI Minefield with Danny Peavey
- TitanPro Technologies: Streamlining Business Operations with ServiceTitan Custom Reporting
Frequently Asked Questions
6 questions home service owners actually ask about this.
01How many custom reports can I create?
There is no hard cap. Most $1M-$10M shops accumulate 50-200 saved reports over time, and most of them are unused. Audit quarterly.
02Can I share a custom report with my team?
Yes. From the report list, click the Share icon on a report and choose users, roles, or locations. Share scope works the same way as dashboard sharing.
03Can I schedule a report to run automatically?
Yes. Open the report, click the Schedule icon, set the cadence (daily, weekly, monthly), choose the format (PDF or XLS), enter the email distribution list, and save. The report runs on the schedule and emails the result. The walkthrough in how to export reports from ServiceTitan covers the scheduled-export approach in depth.
04Are custom columns hard to build?
The arithmetic is straightforward. The conditional logic takes practice. Most shops have one or two people who learn custom columns and build them on demand for the rest of the team.
05Does the Report Builder support SQL?
No. The Report Builder is a visual builder. There is no raw SQL surface. The closest you can get is the export-API path where you pull data into your own warehouse and run SQL there.
06Will Atlas replace the Report Builder?
No. Atlas runs reports for you and surfaces insights, but the underlying reports still live in the Report Builder. Atlas is a layer on top, not a replacement. Knowing the Report Builder still pays back, especially for the reports you run weekly.
See Clint in action
Clint is the pre-built AI for home service shops. Connect your CRM, email, and phone system in minutes and the agents run on your real data.