Industry guide · Field Service Management

Facility Management Software: Fixing the Work Order, Asset and SLA Leak

The short answer

Build when off-the-shelf field service management software is actively costing you money, not just annoying you. Across 2,000+ projects, a focused first release for a facility management company (work order intake, asset registry, vendor dispatch, service level agreement clock) typically runs $60k to $130k and ships in 12 to 16 weeks. A full platform with client portals, subcontractor apps, invoice reconciliation and predictive maintenance runs $150k to $400k phased over 6 to 12 months. Below roughly 40 technicians and one client contract, stay on the maintenance system you have and fix your process instead.

Why work order and asset software makes or breaks a facility management company

A facility management (FM) company does not sell labor. It sells a promise: the chiller gets looked at within four hours, the restroom gets serviced nightly, the roof leak gets a body on site before the tenant calls the landlord. Everything you bill is downstream of whether that promise is provable. And provable means data: a timestamped intake, a technician on site with GPS on, parts consumed against an asset ID, a signature, an invoice that maps back to a line in the client's master service agreement.

Here is what that looks like in most FM shops running 60 to 400 sites. Work orders arrive four ways: the client's Corrigo or ServiceChannel portal, an email to service@, a phone call to a dispatcher, and a text to the account manager who happens to own that relationship. Dispatch lives in ServiceTitan or Limble or UpKeep or, at a surprising number of $30M companies, in a shared Excel workbook named DISPATCH_MASTER_FINAL_v4.xlsx that one person is allowed to touch. Assets live in a different system, if they live anywhere: a Fiix instance nobody updated since the last CFO, or a folder of PDF equipment lists per building. Subcontractor invoices come into QuickBooks or Sage Intacct as flat bills with no work order reference. Vendor certificates of insurance sit in a Dropbox folder that gets audited once a year in a panic.

The leak is specific. In the FM operations we have scoped, a dispatcher at a 200-site company spends 3 to 5 hours a day re-keying: pulling a work order out of the client's Corrigo portal, retyping it into the internal system, texting the tech, then going back into Corrigo to update status so the service level agreement (SLA) clock does not trip. That is one full salary doing copy and paste. Meanwhile the actual money bleeds at month end. An account manager sits with 340 completed work orders and 290 subcontractor invoices and tries to match them. She cannot, so she writes off the 40 she cannot prove and bills the rest. In the FM books we have audited, unbilled and under-billed work orders sitting at a low single-digit percentage of contract value is common. On a $12M contract that is a couple of hundred thousand dollars a year that walked out the door because nobody could tie a tech's time to a billable line.

Problem 1: Work orders arrive in four systems and none of them talk

Your national retail client mandates ServiceChannel. Your healthcare client uses Corrigo. Your two office park clients email a PDF. Your own techs use whatever you bought. So you run a translation layer made of humans. When the client's portal says "Priority 1, four hour response" and your internal system says "urgent" with no clock, the two facts diverge within an hour and only the client's version counts at true-up time.

Off-the-shelf computerised maintenance management system (CMMS) tools will not fix this because they are built for the facility owner, not the facility management provider. Limble, UpKeep and Fiix assume you own the assets and you are the only party with an SLA. They have no concept of "this work order belongs to client A's contract, is governed by client A's SLA matrix, must be status-mirrored back into client A's Corrigo instance, and gets billed at client A's rate card." You cannot configure that in. It is a data model problem, not a settings problem.

A custom build inverts the model. One work order object with a client_id, a contract_id, an SLA policy reference and a source channel. Intake adapters pull from ServiceChannel and Corrigo via their APIs on a poll, parse inbound service@ emails, and accept phone-created orders through the same pipe, so every order lands in one queue regardless of origin. Status changes write back out to the originating portal automatically, which is the single highest return integration in this category: it kills the dispatcher's re-keying entirely and removes the "we did it, we just forgot to update your portal" SLA fails. AI does one useful thing here: an inbound email that says "the freezer in the back of store 4471 is warm again, third time this month" gets parsed into a structured work order with the site, the asset (that specific walk-in unit, because you have the asset registry), a trade code, and a priority inferred from the repeat history. It is extraction against a domain model, and it turns a six minute dispatcher task into a twenty second review-and-approve.

Problem 2: The asset registry is a fiction, so preventive maintenance is a guess

Ask any FM operator how many rooftop units (RTUs) they maintain across a portfolio and watch the pause. The honest answer is usually "about 900, give or take, and the nameplate data for maybe 400 of them." So preventive maintenance (PM) runs on a calendar rule, not on the equipment. Every RTU gets a quarterly filter change whether it needs one or not, which is fine until a client asks why they are paying for 900 quarterly visits and getting 14 emergency compressor failures a year anyway.

Generic CMMS tools do have asset tables. The problem is that nobody fills them in, because the data entry burden falls on a tech standing on a roof in July with a phone and gloves on. Off-the-shelf mobile apps ask for 22 fields. You get 4 of them, half of them wrong, and the registry rots.

The build difference is entirely about capture friction. QR or NFC tag on the asset, tech scans it, and the app already knows the site, the equipment, the last four work orders on it, and what parts were installed. New asset commissioning is a photo of the nameplate: the model number, serial and manufacturer get extracted from the image and pre-filled, tech confirms three fields, done. That is where document extraction pays: nameplates, operations and maintenance manuals, warranty certificates, all parsed once and attached to the asset record. Once the registry is real, the second-order effects show up. Failure history per asset class per site lets you tell a client "these 11 units are past economic repair, here is the repair spend on each over 24 months, here is the replacement capital case." That conversation is how FM companies move from commodity pricing to capital project revenue, and you cannot have it without the data.

Problem 3: SLA compliance is asserted, not measured

The FM contract says 4 hour response for P1, 24 hour for P2, 5 business days for P3, with credits attached, often a percentage of the monthly management fee per breach beyond an allowance. Your monthly client report says 96 percent compliance. Where did that number come from? An analyst who exported work orders to Excel, filtered out the ones with bad timestamps, and calculated response time as "created to closed" because "created to on-site" was never captured.

No off-the-shelf tool gets this right because SLA definitions are contract-specific and weird. Client A's clock pauses when they are waiting on parts approval. Client B's clock runs on business hours defined by that site's mall operating schedule. Client C's clock starts when the order hits your system, not when the tenant reported it. ServiceChannel measures it their way. If you cannot compute it yourself, you cannot dispute it.

What a custom system does: an SLA engine where each contract has an explicit policy, response and resolution targets by priority, a business calendar per site, and named pause reasons (awaiting client approval, awaiting parts, access denied) that stop the clock with an audit trail of who paused it and why. Every state change is an immutable event, so the timeline is reconstructable months later when a client disputes a credit. Then the useful part: a live at-risk board showing orders that will breach in the next 90 minutes, sorted by dollar exposure, so the dispatcher works the expensive ones first instead of the loudest ones. Forecasting helps here in a way that is genuinely non-obvious: given historical duration by trade, site and time of day, you can predict at assignment time whether this tech will make the window, and escalate before the breach instead of after.

Problem 4: Subcontractor management is where the margin actually dies

Most FM companies self-perform the core trades and sub out the rest: elevator, fire suppression, specialty HVAC, anything outside a two hour drive. Every sub relationship carries three risks. The certificate of insurance (COI) expired and nobody noticed until an incident. The sub billed $1,400 for a job you quoted the client $1,100 for. And the sub took nine days on a five day SLA and you ate the credit.

Accounting software cannot help. QuickBooks does not know what a work order is. Your CMMS does not know what a COI is. So the compliance manager runs a spreadsheet with expiry dates and sends reminder emails by hand, and the accounts payable clerk approves sub invoices with no reference to the job they belong to, because there is no job reference on them.

A custom build treats the subcontractor as a first-class object with a compliance state: COI on file with expiry, W-9, license by trade and jurisdiction, rate card, and a performance record. Dispatch is blocked to non-compliant subs by rule, which is the whole point. The sub gets a lightweight portal or a magic-link mobile view: accept or decline, upload photos, submit their invoice against the specific work order. That last bit closes the loop. The invoice arrives already matched to a job with a quoted amount, so variance over a threshold (say 10 percent or $250) routes to a human and everything else auto-approves into Sage Intacct or QuickBooks. Extraction handles the subs who will only ever email a PDF: parse the invoice, match to the work order by site, date and trade, flag mismatches. In our delivery experience, companies that get this working recover more in the first year on sub invoice variance alone than the build cost, which is why we usually sequence this module second, right after intake.

Problem 5: Client reporting is a monthly fire drill that decides renewals

The quarterly business review deck is where the contract is actually won or lost, and it is assembled by a person over three days with exports from four systems. It is always slightly wrong, always defensive, and it never contains the one thing that would justify a price increase: a defensible story about where the client's money went and what it bought.

Portals bolted onto generic CMMS give the client raw work order lists. That is worse than nothing, because now the client is auditing your data quality instead of reading your narrative.

Custom means the report is a query, not a project. Spend by site, by trade, by asset class. Reactive versus planned ratio trending, which is the metric sophisticated FM clients actually judge you on. Top 10 cost assets with repair-versus-replace analysis. SLA performance with the pause events shown, so the compliance number survives scrutiny. Generate it on the first, not the ninth. And the client-facing portal shows them live status on their own orders, which cuts the "where is my tech" calls that eat your account managers.

What this costs and how long it takes

From Digital Heroes delivery experience across 2,000+ projects, here is what an honest FM build looks like. A focused first release, meaning multi-channel intake with one client portal integration, unified work order queue, asset registry with QR scan and mobile capture, dispatch, and an SLA engine with the at-risk board, runs $60k to $130k over 12 to 16 weeks. That is the version that kills the re-keying and makes SLA defensible, and it is enough to change your economics on its own.

The full platform, adding subcontractor compliance and invoice matching, accounting integration, client portal and reporting, PM scheduling driven by asset history, and offline-capable tech mobile, runs $150k to $400k phased over 6 to 12 months. Phased is the operative word: each module goes live as it lands.

What drives price up specifically in facility management:

Client portal integrations are the biggest single variable. ServiceChannel and Corrigo each carry real integration cost because their APIs are enterprise-gated, the data models differ, and each client instance is configured differently. Budget per integration, not once. Two portals is not twice the work of one, but it is not the same either.

Offline mobile is not optional and it is not cheap. Your techs work in mechanical rooms, basements and parking garages with no signal. A tech who loses a completed work order because the app assumed connectivity will stop using the app that week, and then you have paid for a system nobody uses. Proper conflict resolution on sync is real engineering.

SLA contract variety compounds. Three clients with three pause-rule sets and three business calendars is a config-driven engine. Thirty clients is the same engine, but the migration and validation of thirty contract policies is weeks of careful work with your ops team in the room.

Accounting integration depth. Read-only push of approved invoices into QuickBooks is straightforward. Two-way sync with job costing in Sage Intacct, with work in progress and revenue recognition per contract, is a different budget.

Build versus buy: take the off-the-shelf tool when it fits

Stay on Limble, UpKeep, Fiix or ServiceTitan if you are self-performing under one or two client relationships, under roughly 40 technicians, and your clients do not mandate their own portal. At that size the tool's rigidity is not costing you real money, and a published SaaS subscription against a $100k build is not a close call. Buy the tool, hire a good ops lead, and spend the money on trucks.

Here are the signals it is time to build, and I would take them seriously when two or more are true at once. You have a full-time person whose actual job is moving data between your system and a client's portal. Your month-end unbilled work orders are over 2 percent of contract value and nobody can tell you exactly why. A client has assessed SLA credits you believe are wrong and you cannot prove it from your own data. You lost or nearly lost a renewal on reporting quality rather than field performance. You are subbing out more than a third of your volume with no invoice-to-work-order matching. Or the most decisive one: your differentiation in pitches is response reliability and asset intelligence, and your systems cannot substantiate it, which means you are competing on price whether you like it or not.

The position we will defend: in FM, the moment a client mandates their portal and you have more than one such client, off-the-shelf has already failed you. Everything after that is deciding how long you are willing to pay humans to be middleware.

How to choose a developer for facility management software

Ask them to model your domain on a whiteboard before you sign anything. A team that has built FM software will draw the work order, asset, site, contract, SLA policy and subcontractor as separate objects with the right relationships in ten minutes. A team that has not will draw a ticket table with a status column, and that shortcut costs you six months later when SLA pause rules or per-contract rate cards have nowhere to live.

Make them talk specifically about ServiceChannel and Corrigo. Not "we can integrate with anything." Ask what happens when a client's portal rejects a status update, whether they poll or take webhooks, how they reconcile drift when the two systems disagree, and what the retry story is. If they have not hit an enterprise FM portal's API before, you are funding their education.

Interrogate the offline story on mobile before anything else in the demo. Ask what happens when a tech completes three work orders in a basement and comes up to signal, and what happens if a dispatcher reassigned one of them meanwhile. If the answer is not a specific conflict resolution rule, they have not shipped field software.

Confirm you own the code, the data model and the deployment, with the repository in your organization from day one, not at handoff. And check the compliance surfaces this category actually carries: COI and license expiry tracking with audit trails, personal data handling for tech location, immutable event logs for SLA disputes, and if you touch healthcare or government sites, whatever access and background-check records those contracts require. Those requirements should appear in the first scoping conversation. If you have to raise them 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. Timefold reports field service operations moving to automated route optimization typically see 10-25% fuel savings and 15-30% drive-time reductions, and documents a case where a global services firm cut drive time 33% and distance 43% while eliminating overtime. Source: Timefold (2025) →
  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. Technology 'Leaders' grow revenue at more than twice the rate of 'Laggards'; laggards surrendered 15% in foregone annual revenue in 2018 and stood to miss out on as much as 46% in revenue gains by 2023 if they did not change their enterprise technology approach. Based on a survey of more than 8,300 organizations across 20 industries and 20 countries. Source: Accenture (2019) →
  4. Independent reporting of Gartner's 2025 survey confirms 59% of finance leaders use AI, up from 37% in 2023, with error and anomaly detection (34%) and accounts payable automation (37%) among the leading use cases. Source: CPA Practice Advisor (reporting Gartner) (2025) →
Rohan Malhotra · Enterprise Software Consultant

Rohan advises mid-market and enterprise teams on ERP, CRM and custom software, and has led delivery on dozens of business-software builds.

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

FAQ

Frequently asked questions

How much does custom facility management software cost for a company with 200 sites?
A focused first release covering work order intake, asset registry, dispatch and an SLA engine typically runs $60k to $130k and ships in 12 to 16 weeks, based on Digital Heroes delivery experience across 2,000+ projects. A full platform adding subcontractor compliance, invoice matching, client portal and reporting runs $150k to $400k phased over 6 to 12 months. At 200 sites the biggest cost variables are how many client portals like ServiceChannel or Corrigo you must integrate with, and whether your techs need offline mobile.
Should we build custom software or just use Limble or UpKeep?
Stay on Limble or UpKeep if you self-perform under one or two client relationships, run fewer than about 40 technicians, and no client mandates their own portal. Those tools are built for the facility owner, not the FM provider, so they have no concept of per-contract SLA policies, rate cards or portal status mirroring. Once you have two or more clients mandating their own portals, you are paying humans to be middleware and the build case is usually clear.
Can custom software integrate with ServiceChannel and Corrigo?
Yes, and this is normally the highest-value integration in an FM build because it eliminates dispatcher re-keying and prevents SLA failures caused by stale portal status. Both have enterprise-gated APIs with different data models, and each client instance is configured differently, so budget per integration rather than once. Ask any developer specifically how they handle rejected status updates, drift reconciliation and retries before you sign.
How do we migrate years of work order and asset data off our current CMMS?
Migration is usually done in two passes: history gets imported read-only for reporting continuity, and active work orders plus the asset registry get cleansed and mapped into the new domain model. The hard part is not the work orders, it is the assets, because most Fiix or UpKeep asset tables are half-populated and duplicated across sites. Expect 2 to 4 weeks of the project on data work, with your ops team validating the asset mapping site by site.
How long before our technicians are actually using a new system in the field?
A focused first release ships in 12 to 16 weeks, and adoption is usually decided in the first two weeks of field use, not by the software's feature list. Field adoption hinges on capture friction: QR scan on the asset instead of 22 form fields, and offline capture that never loses a completed order in a basement. Pilot with one region and your most skeptical technicians before a portfolio-wide rollout.
Do we own the code if we hire an agency to build our FM platform?
You should own the code, the data model and the deployment infrastructure outright, with the repository in your own organization from day one rather than transferred at handoff. Any arrangement where the developer retains the platform and licenses it back to you creates a dependency that becomes expensive at renewal time. Get this in writing before the first sprint, not in the closing paperwork.
Can AI actually help in facility management software, or is it just marketing?
It helps in three concrete places. Inbound emails and calls get parsed into structured work orders with the site, asset, trade code and priority already filled in, turning a six minute dispatcher task into a twenty second approval. Nameplate photos and subcontractor invoices get extracted into the asset registry and matched against work orders, and historical duration data lets you predict SLA breaches at assignment time instead of discovering them after.
How do we handle client SLA disputes and credit claims with custom software?
An SLA engine stores each contract's policy explicitly: response and resolution targets by priority, a business calendar per site, and named pause reasons like awaiting client approval or access denied, each with an audit trail. Every state change is recorded as an immutable event, so the timeline is reconstructable months later when a client disputes a credit. If you cannot compute the number yourself, you are accepting the client portal's version, which is rarely computed in your favor.
What compliance requirements does facility management software need to handle?
The three that bite are certificate of insurance and license expiry tracking per subcontractor and trade jurisdiction, with dispatch blocked to non-compliant vendors by rule, immutable audit logs for SLA and billing disputes, and handling of technician location and time data as personal information. Healthcare and government sites often add background-check and access-record requirements on top. A developer who has built in this category raises these in the first scoping call rather than waiting for you to ask.
What should I prepare before contacting a software development agency?
A one-page brief beats a 40-page requirements document: the business problem in plain words, who will use the system, the 5 to 10 workflows it must handle, the tools it must connect to, and your budget range and deadline driver. You do not need wireframes, a specification, or technical vocabulary; producing those is the agency's job during discovery. Stating a budget range up front is the single best move, because it gets you honest scoping instead of a quote engineered to win the meeting.
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.
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.
Is Housecall Pro enough for a growing HVAC or plumbing company, or do we need custom software?
Housecall Pro holds up well to roughly 10 to 20 technicians on standard residential jobs, with its Essentials plan listing around $129 per month for up to five users. The ceiling appears with commercial work: multi-visit projects, progress billing, equipment service history, and inventory are thin, which is when owners start managing the business in exported spreadsheets. Use the spreadsheet count as your signal: three or more recurring workarounds mean the tool no longer fits.
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.
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.
What are the biggest mistakes first-time software buyers make?
Choosing the lowest bid, paying more than 30-40% upfront instead of on milestones, skipping a written specification, and having no maintenance plan for after launch. The most expensive of the four in Digital Heroes rescue projects is the missing spec: without written acceptance criteria, done becomes an argument instead of a checklist, and every disagreement resolves in the vendor's favor. Fix those four and you have avoided most of the ways these projects fail.
How many SaaS seats do we need before building custom becomes cheaper?
The crossover usually shows up between 20 and 50 seats on premium tiers. Salesforce Enterprise lists at $165 per user per month, so 40 users cost about $79,000 a year in subscriptions, which is real money against a custom system you would own outright. Run the comparison over three years: if subscription spend beats the build cost plus 15-20% annual maintenance, custom wins on price before you even count workflow fit.
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?