Why doesn't my dashboard match what I see in ServiceTitan?
Almost always one of four things: a different date field, a different status filter, a timezone or day-boundary difference, or a refresh lag. Reporting pulled through an API also inherits whatever filter was written into the query, which may not match the screen you are comparing against. Before assuming the integration is broken, reproduce both numbers for one single day and compare the record lists.
The four usual causes
- Date field. Created, scheduled, completed, invoiced and paid dates all exist and all differ. Two reports keyed to different ones will never agree at a month boundary.
- Status filter. Canceled jobs, voided invoices, callbacks, warranty and internal work get included or excluded differently by different queries.
- Timezone. If the reporting layer stores timestamps in one zone and the platform displays another, you get a consistent small offset that mostly disappears over a full week.
- Refresh lag. A dashboard synced overnight is showing yesterday's truth, which is fine as long as it says so.
Diff the records, not the totals
Comparing totals only proves a gap exists. Pick one day, export the record list from both sides, match on job or invoice number, and look at what appears in one and not the other. In practice you will find a handful of records with an explainable status, and the pattern will name the cause.
Do this once and document it. The same discrepancy will be raised again in six months by someone else. That documentation habit is part of what a real integration delivers beyond the pipe itself.
History moves after the fact
This one surprises people. Invoices get edited, jobs get reclassified, canceled work gets reinstated, adjustments post late. A snapshot taken Monday and a fresh pull on Friday for the same period will legitimately differ, and neither is wrong.
The design response is either to re-pull a trailing window on every sync so history restates, or to freeze snapshots and label them as of a date. Pick one deliberately — the failure case is doing neither and having numbers that drift for reasons nobody can explain.
What to require from whoever built it
Ask for three things in writing: the date field each metric uses, the status filter applied, and a visible as-of timestamp with last successful sync. If those exist, most future arguments end in a minute instead of a week.
Anyone doing serious field service integration should be able to produce them without hesitation.
Not every mismatch is worth closing
Some differences are structural and will never resolve: a reporting layer that freezes snapshots will always drift from a live platform that restates history, and no amount of engineering makes that go away.
So set a tolerance and write it down. A small, stable, explained variance is fine, and saying so up front prevents a recurring hunt every month. What is not fine is a variance nobody can explain or one that grows — those indicate a real pipeline problem rather than a definitional one.
Topics: ServiceTitan · reconciliation · dashboards · data quality
Have a version of this question about your own business?
The useful answer usually depends on which systems you run and how they're connected. That's a conversation, not a blog post.