Reporting and data
How do I build a custom dashboard or app on top of my field service data with an API?
First find out how your field service software lets data out: a REST or GraphQL API, a reporting API, scheduled exports, or a sync to a database you own. Then point a BI tool (Power BI, Looker Studio, Metabase) or an app builder (Retool, Softr) at that source, either by calling the API on a schedule or, more reliably, by copying the records into your own database and building on that. The limits that decide whether it works are set by the vendor, not the dashboard tool: which plan includes API access, how often you may call it, and whether every field you need, such as job status, parts and technician, comes back.
- Check API access by plan first: Housecall Pro's API and webhooks need its MAX plan; ServiceTitan customer-built apps need The Works or Enterprise Plus.
- Rate limits shape the design: ServiceTitan allows 1 run of the same report per minute per tenant on its reporting APIs.
- Power BI on a Pro licence refreshes a scheduled dataset up to 8 times a day, so it is not a live board.
- Copy records into a database you control for BI; call the API live only for small, action screens.
- Store the vendor's record ID on every row so the dashboard can link back to the job.
This page is about building on top of field service data. If the dashboard you need is a standard one (jobs by status, revenue by technician), check the built-in reports before you build anything.
Facts checked as of November 2026. Sources at the end of the page.
Step by step
How to build a dashboard or app on field service data, step by step
The same six steps apply whether the result is a Power BI report for the owner or a small app for project managers.
1. Write down the questions the screen must answer
Name the decisions, not the charts: which jobs are waiting on parts, which jobs are ready to schedule this week, which sites are past their PM date, what each project manager owes the customer. Each question tells you the tables and fields you need, for example jobs.status, jobs.assigned_pm, parts on order and the due date.
2. Find every way data leaves your FSM
Most vendors offer some mix of a REST or GraphQL API, a reporting API that runs saved reports, outbound webhooks, CSV export and built-in integrations. Jobber's Developer Center lets you build an app on its GraphQL API, including a custom integration for just one account. ServiceM8's REST API takes an API key in the X-API-Key header. Housecall Pro generates admin-only keys with full or read-only access.
3. Check the plan, the policy and the limits
Housecall Pro says its API is available only on the MAX plan, and webhooks too. ServiceTitan says customer-built apps need The Works or Enterprise Plus and that third parties may not use your App Key. ServiceTitan's default limits are 60 calls per second per application per tenant on regular APIs and 1 run of the same report per minute per tenant on reporting APIs.
4. Pick live calls or a copy
Live calls suit a small action screen that shows one project manager's open jobs. A copy suits anything with history, totals or joins: a scheduled job pulls changed records into a database you own (Postgres, SQL Server, a warehouse) and webhooks top it up between runs. BI tools then read the database, which is faster and does not spend your API allowance.
5. Build the screen in a BI tool or an app builder
Power BI can call a web API through Power Query's Web.Contents, which accepts custom headers and a request body. Looker Studio and Metabase connect to PostgreSQL. Retool connects to any REST or GraphQL API with custom headers, and Softr can build apps on PostgreSQL or any REST API.
6. Decide who maintains it and how people act on it
Name an owner for every query and key. Keys expire and get revoked: Housecall Pro warns that deleting a key breaks any integration using it. Then decide what happens when someone sees a problem on the dashboard. If they must open the FSM to fix it, add a link from each row to the job.
What we hear
Why it goes wrong
These are the problems field service buyers described to us on sales calls, by trade and size.
The data you need was never captured as data
A commercial electrical contractor serving self-storage sites wanted project managers to open one screen of parts needed and jobs ready to schedule. In its current tool those states lived in tags people had to add by hand, so a dashboard would only be as good as the tagging. If a status is not a field, no API can report it.
The export is locked
A plumbing and HVAC company could not export its price book from the add-on it used, and an architectural lighting installer said its old tools passed payments but not job-level data. Before building, test that the API returns every field your questions need, not only customers and invoices.
Spreadsheet macros became the reporting system
A risk inspection services firm exported spreadsheets and ran them through macros each cycle. It works until a column moves or the export changes, and nobody else can maintain it. A scheduled copy into a database removes the manual export.
The in-house build stalls
A structural engineering inspection firm was weighing an in-house build, and a nationwide furniture installation network said building its own tooling took time. A dashboard is days of work; a custom app that writes back to jobs, handles logins and survives vendor API changes is a product someone has to own.
The refresh is slower than the work
Dispatch and parts decisions change by the hour. On a Pro licence Power BI allows 8 scheduled refreshes a day on shared capacity, and refreshes there must finish within two hours. A board that is three hours old is fine for the owner's weekly review and wrong for dispatch.
Customers need to see it too
A display installation campaign company asked for a client view-only role on its dashboard and live map. Before building, check how outside viewers will log in and that each one sees only their own sites.
Options
Ways to build on field service data
What each route gives you, as of November 2026. Check the vendor's current docs before you commit.
| Route | What it looks like | Watch for |
|---|---|---|
| Built-in reports in your FSM | Most FSMs ship reports and dashboards. Microsoft lists analytics for reporting on key performance indicators as part of Dynamics 365 Field Service. | You get the vendor's fields and layouts. Custom views across jobs, parts and project managers are often out of reach. |
| BI tool calling the FSM's API | Power BI's Web.Contents with an API key header, on a refresh schedule. ServiceTitan's reporting APIs return saved report data; Jobber's GraphQL API returns what you query. | Power BI says POST requests with Web.Contents can only be made anonymously, so the key goes in a header. Reporting limits (1 run of the same report per minute on ServiceTitan) slow large refreshes. |
| Copy into your own database, then BI | A scheduled sync plus webhooks keeps a Postgres or SQL Server copy current. Metabase (open source) or Looker Studio read it directly. | Someone owns the sync code and the schema. Looker Studio's PostgreSQL connector caps a query at 150K rows and may time out after three to five minutes. |
| Internal app builder on the API | Retool or Softr screens that read the FSM's REST API and can write back, for example a project manager screen with a Mark parts arrived button. | Writes through someone else's API must follow its rules, and each user of the app needs access to the builder. |
| FSM where screens and data are open (Fieldproxy is one) | In Fieldproxy each workspace has its own Postgres database, read-only SQL over MCP, a REST API, and screens that are JSON you can change, so the dashboard can live inside the same app the team uses. | You still need to decide the questions and fields first. Very large warehouses still belong in a dedicated BI stack. |
Vendors are named for what their public docs say. Being listed here does not mean a route covers your workflow.
Worked example
A worked example: a project manager board for parts and scheduling
Say a commercial electrical contractor has 30 technicians and 6 project managers, with about 400 open jobs at any time. Each project manager wants one screen: their jobs waiting on parts, jobs whose parts have arrived and are ready to schedule, and jobs past their due date.
Route one: Power BI calling the FSM's API. On a Pro licence the report refreshes up to 8 times a day. Spread across a 10-hour working day, that is a refresh about every 75 minutes, so a part that arrives at 9:05 may not show as ready to schedule until after 10:15. If the FSM's reporting API allows 1 run of the same report per minute, and each project manager's view is the same report with a different filter, refreshing all six takes at least six minutes.
Route two: copy and query. A sync job pulls changed jobs every 15 minutes into a Postgres table and a webhook updates a job the moment its status changes. A Metabase dashboard filtered by project manager reads that table. 400 open jobs is a small query, so each page loads in a second and the data is minutes old, not hours.
Route three: an app that acts. The project manager clicks Parts arrived on a row and the job moves to Ready to schedule in the FSM. That needs write access through the API, not only read, and someone to own the app. In every route the real dependency is the same: parts needed and ready to schedule must be fields or statuses on the job, set by the people doing the work.
Before you buy
What to check before you buy or build
Good signs
- API access is included on the plan you will buy, in writing.
- The API returns every field your questions need, including custom fields, statuses and line items.
- There is a way to read data by query (joins, date ranges, totals), not only one record at a time.
- Webhooks fire on job status changes so a copy can stay current between scheduled pulls.
- Keys can be read-only, limited to some tables and set to expire.
- A sandbox or test account exists so you can build before you go live.
Red flags
- API access only on the top plan, or third-party access restricted by policy.
- Reporting limited to saved reports you cannot change, with tight per-minute limits.
- Key states such as waiting on parts exist only as free-text notes or tags.
- Exports that leave out the price book, line items or photos.
- No answer to who maintains the queries when the vendor changes its API.
In Fieldproxy
Setting it up in Fieldproxy
Fieldproxy is built to be open, so a dashboard can sit inside the app your team already uses or outside it in your own BI tool.
Make the states real fields first
Jobs use your own stages, statuses and fields, so waiting on parts and ready to schedule are statuses (e.g. waiting_parts, ready_to_schedule) and the project manager is a field on the job, not a tag someone remembers to add.
Query it with read-only SQL
Each workspace runs on its own Postgres database. Through the MCP server, describe_schema lists every table and column you may read, run_sql runs one SELECT (up to 500 rows, 5-second limit) and export_csv saves up to 10,000 rows. Command Center dashboards are built from tiles, each one read-only SELECT. See /mcp.
Build the screen inside Fieldproxy
Every web and mobile screen is JSON: views, widgets and the SQL behind them, with charts, tables, maps, kanban and calendars. A project manager board can be one view with a Parts arrived button that updates the job, versioned with drafts, publish and rollback. Portal users can sign in and see only their own records, enforced by Postgres row security.
Or feed your own BI tool
The REST API (POST /api/read, /api/insert, /api/update, /api/delete with an x-api-key) reads by exact match and returns every column. The db_sync automation step copies records to an external database in batches, on a schedule or as they change, for Power BI, Looker Studio or Metabase to read. Keys are created in Settings, Security, API keys, one per system, with an expiry, operations and optionally only some tables.
Send it on a schedule and try it first
The Scheduler agent emails reports and briefings on a schedule, such as a Monday list of jobs waiting on parts per project manager. A public read-only sandbox workspace with sample data lets you test the API and SQL before you sign anything. API access is included on every plan; pricing is one price per company with unlimited users, see /pricing.
How switching works
How switching to Fieldproxy works
We move your data over and set the system up to the way you already work. Fieldproxy replaces the old tool; it does not run alongside it.
Bring the questions and the spreadsheets
Show us the reports you build by hand today and the decisions they drive. We list the fields and statuses each one needs.We set up the fields and the first dashboard
We add the statuses and fields to jobs, move your data over and build the first board as a Fieldproxy screen, so your team sees it in the app they already use.Connect your BI tool if you want one
We create a read-only API key limited to the tables your BI tool needs, or set up a db_sync to your own database, and check the numbers match for a week.
FAQ
Questions people ask
- Can I connect Power BI to my field service software?
- Usually, through the vendor's API with Power Query's Web.Contents, or by copying the data into a database Power BI reads. On a Pro licence a scheduled dataset refreshes up to 8 times a day, so use it for reviews, not live dispatch.
- Can I build my own reports and dashboards and still use the API for third-party BI tools?
- That depends on the vendor's plan and policy. Housecall Pro's API needs its MAX plan, and ServiceTitan limits customer-built apps to The Works or Enterprise Plus. Ask for the plan and the rate limits in writing before you build.
- Should my dashboard call the API live or use a copy of the data?
- Use a copy for anything with history, totals or joins, kept current by a scheduled sync plus webhooks. Call the API live only for small screens that show or change a handful of records.
- Is it cheaper to build our own field service app in-house?
- A dashboard on an existing API is days of work. A full app with logins, offline mobile use, scheduling and invoicing is a product that needs a team to maintain it, so most companies build only the screens their FSM lacks.
- Can customers see a view-only dashboard?
- Yes, if the tool supports outside users with row-level filtering. In Fieldproxy, portal users sign in and see only their own records; in a BI tool, check the licensing for external viewers.
- What if the data I need is not in the API?
- Then no dashboard can show it. Ask the vendor whether the field can be exposed, export it on a schedule if possible, or move to a system where the field exists and can be read.
- Can AI answers be saved to a dashboard?
- In Fieldproxy, yes. Command Center dashboards are built from tiles, each one read-only SELECT, and an AI assistant connected through the MCP server can propose a new dashboard or tile for a person to publish.
Sources
Competitor details on this page come from the vendors' own pages and documentation, checked as of November 2026. Plans and prices change, so check the vendor's current page before you decide.
- Housecall Pro Help: API overview: https://help.housecallpro.com/en/articles/8505035-api-overview
- Housecall Pro Help: how to enable webhooks: https://help.housecallpro.com/en/articles/5683520-how-to-enable-webhooks
- ServiceTitan Help: approved integration paths: https://help.servicetitan.com/docs/understand-approved-integration-paths-in-servicetitan
- ServiceTitan Help: default API rate limits for regular and reporting APIs: https://help.servicetitan.com/docs/default-api-rate-limitsfor-regular-apis-and-reporting-apis
- Jobber Help: Developer Center: https://help.getjobber.com/en/articles/developer-center/
- ServiceM8 developer docs: authentication: https://developer.servicem8.com/docs/authentication.md
- ServiceM8 developer docs: REST overview: https://developer.servicem8.com/docs/rest-overview.md
- Microsoft Learn: Power BI data refresh: https://learn.microsoft.com/en-us/power-bi/connect-data/refresh-data
- Microsoft Learn: Power Query Web connector: https://learn.microsoft.com/en-us/power-query/connectors/web/web
- Microsoft Learn: Web.Contents: https://learn.microsoft.com/en-us/powerquery-m/web-contents
- Microsoft Learn: Dynamics 365 Field Service reports: https://learn.microsoft.com/en-us/dynamics365/field-service/reports
- Google Cloud: connect Looker Studio to PostgreSQL: https://docs.cloud.google.com/looker/docs/studio/connect-to-postgresql
- Metabase documentation: https://www.metabase.com/docs/latest/
- Retool docs: data sources: https://docs.retool.com/data-sources/
- Retool docs: connect a REST API: https://docs.retool.com/data-sources/guides/connect/rest
- Softr integrations: https://www.softr.io/integrations
- Softr: REST API data source: https://www.softr.io/data-sources/rest-api
Related
Keep reading
- Dashboards and reporting
- Which field service software works with Zapier, Make or n8n?
- Use your Fieldproxy data from Claude or ChatGPT (MCP)
- Scheduler agent: scheduled reports and briefings
- What is the best field service software for a 5-10 person HVAC team?
- Cheaper ServiceTitan alternatives for small plumbing and HVAC companies, without payment processor lock-in