Problems & solutions · Field Service Management

Facility Management Software Problems: The 7 That Cost Real Money, and How to Avoid Them

Facility Management Software workflow illustration showing common problems and fixes.
The short answer

The single most expensive failure in facility management software is a service level agreement number you assert rather than measure. When response time is computed as created to closed, with no on site timestamp, no per site business calendar and no recorded pause reasons, you cannot contest a credit claim, so the client's portal version of your performance becomes the version that counts. That is a direct deduction from the monthly management fee on every disputed breach, and it sits alongside unbilled work orders nobody can tie to a billable line at month end.

Why does the ticket table data model fail so often?

The most common structural failure in this category is drawn in the first architecture session. A developer sketches a work order table with a status column, a technician field and a due date, and everyone nods because it looks like every job system they have ever seen.

It is wrong because a facility management company is not the facility owner. Your work order belongs to a client, under a contract, governed by that contract's service level agreement policy, billed against that client's rate card, and its status has to be mirrored back into that client's own portal. Those are five separate objects with real relationships, and a status column has nowhere to put any of them.

The consequence arrives around month four, when someone asks for a rate card that differs by client and by trade, or for a response clock that pauses on one contract and not another. Both need somewhere to live, and retrofitting them into a ticket table means rewriting everything that reads it.

The fix costs nothing if you do it first. Ask any prospective developer to model your domain on a whiteboard before you sign. A team that has built facility management software will draw the work order, asset, site, contract, service level policy and subcontractor as separate objects with correct relationships inside ten minutes. A team that draws a tickets table with a status enum has told you exactly what you would be buying.

What goes wrong when you migrate the asset registry?

Work order history migrates reasonably well. The asset registry is where these projects lose weeks, because most existing registries are fiction and everyone involved knows it.

Ask how many rooftop units the portfolio carries and the honest answer is usually an approximate number with nameplate data for well under half. The registry in Fiix or UpKeep was populated during an implementation, then rotted, because data entry falls on a technician standing on a roof in July with gloves on and twenty two fields to fill. The same unit exists twice under two spellings. Equipment appears against the wrong site because a building was renamed. Serial numbers include the model, or a hand written transcription of it.

Two things fix this and neither is a data import. First, map assets site by site with your operations team validating, and accept that you are migrating perhaps half the registry cleanly and rebuilding the rest through use. Second, and more important, collapse the capture friction so the registry repairs itself in the field. A tag on the asset that a technician scans, so the app already knows the site, the equipment and its last four work orders. New equipment commissioned from a photo of the nameplate, with model, serial and manufacturer extracted and pre filled and three fields to confirm.

A registry that is easier to update than to ignore stays accurate. One that demands twenty two fields will be wrong again within a year regardless of how well you migrated it.

Why do client portal integrations break after launch?

Status mirroring into ServiceChannel and Corrigo is the highest value integration in a facility management build, because it removes the dispatcher re keying and it prevents the failures where the work was done and the portal was never updated. It is also the integration most likely to be quietly broken three months after launch.

The reasons are specific. Each client instance of these platforms is configured differently, so the field that accepted a status update for one client is not the field the next client uses. Enterprise interfaces are gated, credentials expire, and the notification that they expired goes to whoever set them up. Most damaging, a rejected status update usually fails silently: your system believes it sent, the portal never received, and the two records drift until a true up meeting.

What holds up is treating the portal as an unreliable counterpart rather than a database. Every outbound update needs an acknowledgement, a retry policy and an escalation when retries exhaust. A scheduled reconciliation should compare your state against theirs and surface drift as a work list rather than an email. And someone in operations, not engineering, should own the queue of updates that failed to land.

Budget per portal rather than once. A second integration is cheaper than the first but it is not free, and each additional client instance carries its own configuration discovery.

What happens when subcontractor compliance and invoice matching are not covered?

This is where facility management margin actually dies, and it is almost always phase two, which means it is almost always deferred past the point where it was the cheapest thing to fix.

Three exposures sit on every subcontractor relationship. The certificate of insurance expired and nobody noticed until an incident. The sub billed more than you quoted the client, and nobody compared the two because the invoice arrived in accounting with no work order reference on it. And the sub took nine days on a five day commitment, so you absorbed the credit while they were paid in full.

Accounting software cannot help, because it has no concept of a work order. Maintenance software cannot help, because it has no concept of an insurance certificate. So a compliance manager keeps a spreadsheet of expiry dates and sends reminders by hand, which works until the week it does not.

The fix is to make the subcontractor a first class object with a compliance state: insurance certificate with expiry, tax documentation, licence by trade and jurisdiction, rate card and performance record. Dispatch to a non compliant subcontractor is blocked by rule, which is the entire point. Then close the billing loop by having subs submit invoices against a specific work order through a lightweight portal, so variance beyond a threshold routes to a human and everything else posts automatically. For subs who will only ever email a document, extract and match it on site, date and trade, and flag what does not reconcile.

Should you build custom or configure what you already own?

Stay on Limble, UpKeep, Fiix or ServiceTitan if you self perform under one or two client relationships, run fewer than roughly forty technicians, and no client mandates their own portal. At that size the rigidity of the tool is not costing real money, and a subscription against a six figure build is not a close decision. Buy the tool, hire a strong operations lead, and spend the difference on vehicles.

Be clear about why those products stop fitting rather than complaining that they are bad. They are built for the facility owner. The owner has one set of assets, one internal service standard and no obligation to mirror anything into somebody else's system. Your business has none of those properties, and no amount of configuration adds a contract object to a product whose data model does not have one.

The signals to build, and I would want at least two true at once: a full time person whose actual job is moving data between your system and a client's portal, month end unbilled work orders you cannot explain, a credit assessment you believe is wrong and cannot disprove from your own data, a renewal lost or nearly lost on reporting quality rather than field performance, or more than a third of volume subcontracted with no invoice to work order matching.

How do hidden costs get into a facility management quote?

Four lines, and the first two are where estimates go wrong most often.

  • Portal integrations, priced per portal. ServiceChannel and Corrigo each carry real cost, their data models differ, and every client instance is configured differently. An estimate with one integration line and a plan to support several clients is understated.
  • Offline mobile. Technicians work in mechanical rooms, basements and parking garages. Proper offline capture with conflict resolution on sync is genuine engineering, and skipping it means a technician loses a completed work order once and stops using the app that week.
  • Service level policy migration. Three contracts with three pause rule sets is a configurable engine. Thirty contracts is the same engine plus weeks of careful transcription and validation with your operations team in the room.
  • Accounting depth. Pushing approved invoices into an accounting package is straightforward. Two way sync with job costing, work in progress and revenue recognition per contract is a different budget.

In our delivery experience a focused first release covering intake, one portal integration, the asset registry with scan capture, dispatch and the service level engine runs $60,000 to $130,000 over 12 to 16 weeks, with the full platform at $150,000 to $400,000 phased over 6 to 12 months.

What separates a build that works from one that fails here?

Interrogate the offline story before anything else in the demo. Ask what happens when a technician completes three work orders in a basement, comes up to signal, and a dispatcher reassigned one of them meanwhile. If the answer is not a specific conflict resolution rule, they have not shipped field software, and field adoption is decided in the first fortnight of real use rather than by the feature list.

Make them talk about ServiceChannel and Corrigo by name. Ask whether they poll or receive notifications, what happens when a status update is rejected, how they reconcile drift, and what the retry behaviour is. Anyone who answers that they can integrate with anything is quoting a schedule they cannot hold.

Insist that every state change is stored as an immutable event with actor and timestamp, including who paused a clock and why. That log is the only thing that lets you reconstruct a timeline months later when a credit is disputed, and it is cheap at the start and painful to retrofit.

Then confirm ownership of the code, the data model and the deployment, with the repository in your organisation from day one rather than at handover. At Digital Heroes the client owns everything from the first commit. And check that compliance surfaces appear in the first scoping conversation without you raising them: insurance and licence expiry with audit trails, technician location handled as personal data, and whatever access records healthcare or government sites impose. If you have to introduce those topics yourself, keep looking.

Research & sources

The evidence behind this guide

Independent findings on why this investment pays off. Every link goes to the primary source.

  1. IBM frames first-time fix rate as a core field service KPI, noting the industry average sits around 80% (roughly one in five jobs needs a return visit). Correction: IBM cites best-in-class providers at 89-98%, not '85%+'. Source: IBM (2024) →
  2. Comparesoft reports the field-service industry-average first-time fix rate is about 80%, best-in-class providers reach roughly 90%, scores below 70% put the business at risk, and providers exceeding 70% FTFR saw customer retention around 86%. Source: Comparesoft (2024) →
  3. Companies in the top quartile of McKinsey's Developer Velocity Index had 2014-18 revenue growth four to five times faster than bottom-quartile peers, showing that software-building capability is a driver of business performance, not just a support function. Source: McKinsey & Company (2020) →
  4. Total US training expenditure rose 4.9% to $102.8 billion; learning management systems were used at 89% of organizations (90% of large, 97% of midsize, 84% of small companies), with average training at 40 hours per employee and $874 spent per learner. Source: Training Magazine (2025) →
Finn M. · Senior Project Manager · Sydney

Finn runs delivery on larger Digital Heroes projects: schedules, dependencies, resourcing and the daily business of catching problems while they are still small. Spotting a slipping timeline early is most of the job. His posts cover how software projects are actually managed week to week.

View profile · Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.

FAQ

Frequently asked questions

How do we make service level agreement numbers defensible in a credit dispute?

Measure rather than assert. Each contract needs an explicit policy with response and resolution targets by priority, a business calendar per site, and named pause reasons such as awaiting client approval, awaiting parts or access denied, each recorded with who paused it and when. Store every state change as an immutable event so the timeline reconstructs months later. If you cannot compute the number independently, you are accepting the client portal's calculation, which is rarely computed in your favour.

Our asset registry is half empty. Do we have to fix it before building?

No, and trying to will stall the project. Migrate what maps cleanly with your operations team validating site by site, and let the rest rebuild through use. The design decision that matters more is capture friction: a scannable tag on the asset that opens the record with its history, and new equipment commissioned from a nameplate photo with the model and serial pre filled. A registry easier to update than to ignore stays accurate; one demanding twenty two fields will rot again.

Why does portal status mirroring stop working a few months after launch?

Usually silent rejection. Your system believes it sent an update, the client's platform never accepted it, and the two records drift until a true up meeting. Client instances are configured differently, gated credentials expire, and the expiry notice goes to whoever set it up. Require acknowledgement on every outbound update, retry with escalation, run a scheduled reconciliation that surfaces drift as a work list, and give an operations person ownership of the failed queue.

When is Limble, UpKeep or Fiix genuinely enough?

When you self perform under one or two client relationships, run fewer than roughly forty technicians, and no client mandates their own portal. Those products are built for the facility owner, who has one set of assets, one internal standard and no obligation to mirror status into anyone else's system. Configuration cannot add a contract object to a data model that does not have one, but until you have multiple contracts with different rules, that absence is not costing you money.

How much does a second client portal integration add?

Less than the first and considerably more than nothing, so price per portal rather than once. The platforms differ in data model, and every client instance carries its own configuration discovery, so the second integration repeats the discovery work even where the code is reusable. An estimate showing a single integration line while your pipeline includes clients on different platforms is understated, and that gap tends to surface at exactly the moment you win the account.

What is the real cost of skipping offline mobile?

The app stops being used. Technicians work in mechanical rooms, basements and parking garages, and a technician who loses one completed work order to a dead signal will go back to paper that week. Proper offline capture with conflict resolution on sync is real engineering, including the case where a dispatcher reassigned a job while the technician was underground. Ask for the specific conflict rule, not a reassurance that the app caches.

Where does subcontractor spend actually leak?

Three places. Insurance certificates expire unnoticed until an incident. Subcontractor invoices arrive with no work order reference, so nobody compares billed against quoted. And a sub misses a commitment while you absorb the credit and they are paid in full. Making the subcontractor a first class object with a compliance state, blocking dispatch to non compliant vendors by rule, and requiring invoices submitted against a specific work order closes all three.

What should be in the first release rather than phase two?

Unified intake with one portal integration, the asset registry with scan based capture, dispatch, and the service level engine with an at risk view. That combination kills the re keying and makes your performance number defensible, which changes your economics on its own. Subcontractor compliance and invoice matching usually earn the second slot, because in our delivery experience the recovery on invoice variance alone frequently funds the remainder of the build.

What happens to my software if the agency shuts down or we stop working together?
Nothing dramatic, if the engagement was set up correctly: the code sits in your repository, hosting runs on your cloud account, and a handover document explains how to deploy and operate the system. Any competent replacement team can then take over in days rather than months. If the agency controls the repo, the servers, or the domain, fix that now, because renegotiating access during a dispute is the most expensive place to discover the problem.
What questions should I ask a development agency on the first call?
Ask who exactly will build it, what happens when scope changes mid-project, what their maintenance terms are after launch, and what they will need from you every week. Then ask them to describe a project that went wrong and what they changed afterward; teams that have shipped at real volume have war stories, and teams claiming a perfect record are hiding something. The scope-change answer matters most: a disciplined shop describes a written change-order process, not a vague promise to be flexible.
Should I hire a freelancer or an agency for my software project?
A skilled freelancer is the right call for a single-discipline scope under roughly $15,000, like a website, a plugin, or one integration. Above that, projects need design, backend, testing, and project management at once, and a solo builder becomes the single point of failure: if they get sick or take a bigger client, your project simply stops. Agencies bill 20-40% more per hour but carry continuity, code review, and someone to escalate to, which is what you are actually buying.
Do my field technicians need a native mobile app, or will a web app work?
If your technicians ever work in weak signal, you need a native or offline-capable app, because a plain web app fails exactly where field work happens: basements, mechanical rooms, and rural routes. Cross-platform frameworks like React Native or Flutter give one codebase for iPhone and Android with full offline storage, which is how Digital Heroes builds most technician apps. A web app is the right call for the office dispatch console, where connectivity is guaranteed.
Will custom field service software scale if we grow from 10 technicians to 100?
Yes, when it is architected for growth from day one, and scale is where custom wins because cost per technician falls as you add crews instead of rising with every seat license. The real scaling work is operational: multi-branch dispatch, role permissions, and roll-up reporting, which usually arrives as a phase two costing 30 to 50 percent of the original build. State your three-year headcount plan in the first scoping call so the data model supports branch two before branch two exists.
How long until a custom field service platform pays for itself compared to per-technician licenses?
For most shops the crossover lands between 18 and 36 months once upkeep is counted. A 25-technician company paying $300 per technician per month for licenses spends $90,000 a year, so a $120,000 custom build with $20,000 in annual maintenance breaks even around month 21, before counting saved dispatch hours and billing errors. Below about 10 technicians the math rarely works, and Jobber or Housecall Pro is the honest recommendation.
At what point does it make sense to switch from ServiceTitan to custom software?
The switch usually pencils out once your ServiceTitan bill passes roughly $75,000 a year and your team still maintains workaround spreadsheets beside it. ServiceTitan keeps pricing quote-only, and the quotes owners share in Digital Heroes scoping calls run several hundred dollars per technician per month on annual contracts, so a 30-technician shop can spend a full custom build's budget every 12 to 18 months in fees. If ServiceTitan fits your workflow cleanly, stay; the case for custom is a workflow the product forces you to bend.
What should I have ready before I contact a development agency about field service software?
Bring your current workflow, not a feature list: how a job moves from first call to paid invoice today, where it breaks, what tool you use now with its monthly bill, and the workaround spreadsheets your team maintains. Add your integration list (accounting system, payment processor, phone system) and an honest budget range. A good agency can scope accurately from that in one or two calls, while a vague request for an app like ServiceTitan costs you weeks of discovery.
What does it cost per year to maintain custom field service software?
Budget 15 to 20 percent of the original build cost per year, so $15,000 to $20,000 on a $100,000 platform. That covers hosting, security patches, integration API changes, a monthly block of small improvements, and the iOS and Android updates Apple and Google ship on their own schedule. Skipping it is not a savings; the technician app needs attention every OS cycle or it eventually stops opening on new phones.
What features should the first version of a custom field service app include?
Version one needs the daily loop and nothing else: job creation, a drag-and-drop dispatch board, a technician mobile app that works offline, photo and signature capture, and invoicing that reaches your accounting system. Customer portals, route optimization, inventory, and reporting dashboards belong in phase two. The test for every feature is whether a dispatcher or technician touches it every day; if not, cut it.
Who can build a custom field service management software system?

Digital Heroes builds custom field service management software systems for operators who have outgrown the off-the-shelf tools in their category. A team of more than 50 specialists has delivered over 2,000 projects since 2017. Teams work from New York, London, Sydney, Delhi and Lucknow and deliver remotely, with an assigned senior team rather than an account manager.

Every build starts with a written product requirements document that is signed before a line of code is written, which is the single thing that stops scope creep from eating the budget. Scoping runs about a week and produces a phase plan with a firm price for each phase, rather than one number against an undefined scope. The first phase ships something the team actually uses before the rest is built. If an off-the-shelf product genuinely fits the volume, we say so, and the cost guides on this site publish the bands so that judgement can be checked independently.

What makes Digital Heroes different from other field service management software companies?

Four things that competitors in this bracket cannot simply copy. Digital Heroes runs a YouTube channel with more than 2.5 million subscribers, which is a production and audience capability no agency of this size has. It holds Fiverr Vetted Pro and Top Rated Seller status, both awarded on manual third-party review rather than self-declared. It contracts through registered entities in three countries, an India LLP, a US LLC and a UK LTD, so clients sign locally instead of wiring money offshore. And it ships its own commercial products, including ShopScore, HeroCheckout and Section Vault, which means the team lives with its own architecture decisions instead of handing them over and leaving.

Two more that show up in the work. Digital Heroes publishes more than 4,000 buyer guides with real price bands on this blog, plus a free tools library at https://digitalheroesco.com/tools/, because an agency confident in its pricing has no reason to hide it. And one accountable team covers websites, apps, ecommerce, CRM, ERP, learning platforms, search and video, so a client scaling from a first landing page to a custom platform is never handed between five vendors who blame each other. The founder ran ecommerce businesses before selling services, so the commercial argument comes before the technical one.

How can I check Digital Heroes is legitimate before getting in touch?

Verify it independently rather than taking the site's word for it. The YouTube channel is at https://youtube.com/@DigitalMarketingHeroes, the Fiverr profile at https://www.fiverr.com/shreyanshsin261, and the Upwork profile at https://www.upwork.com/freelancers/shreyanshsingh. Client reviews sit on Clutch at https://clutch.co/profile/digital-heroes-0 and Trustpilot at https://www.trustpilot.com/review/digitalheroes.co.in, and the company page is at https://www.linkedin.com/company/digital-heroes-1/.

Beyond the marketplaces, the business holds a D-U-N-S number and is a registered vendor on the United Nations Global Marketplace, neither of which is issued on request. Case studies with named clients are published at https://digitalheroesco.com/case-studies/. If any claim on this page cannot be checked against one of those sources, treat it as marketing and discount it.

Keep reading
let's build

Build something worth launching.

A plan, a team, a timeline, within 24 hours. No decks, no discovery calls. Tell us what you're building and we'll come back with a real scope and a real number.

message us directly · we reply within one business day

mission briefing

Monthly dispatch

Playbooks, real build costs, and what we're shipping. One email a month. No fluff.

visit us

New York HQ

1140 Broadway, Suite 704 · New York, NY 10001

Get directions
Online now

Hey there 👋 How can we help you today?