Industry guide · Custom Software

Emergency Management Software: Problems and Solutions for Agencies That Coordinate Real Incidents

The short answer

Most agencies should not replace WebEOC. They should stop using it as the system of record for resources and money, and build the object model and integrations underneath it. A focused first release, usually the resource request lifecycle plus cost capture, runs $60k to $130k and ships in 12 to 16 weeks. A full platform covering staffing, common operating picture, damage assessment and Public Assistance packaging runs $150k to $400k phased over 6 to 12 months. If your Finance Section is retyping ICS-214s into a reimbursement claim, the build pays for itself on one federally declared incident.

Why emergency management software makes or breaks an agency

It is 02:14 on the second night of a flood activation. The duty officer has WebEOC open with three boards: significant events, resource requests, and a road closure board somebody built in 2019 that nobody has permission to change. Public Works calls in and asks for four trailer pumps and twelve operators. That request gets typed into the significant events board, then retyped onto the request board, then the Logistics Section Chief gets a text because the board does not page anyone. Two hours later a mutual aid partner sends pumps. Nobody records which jurisdiction they came from, which is the detail that will cost you at closeout.

Meanwhile the Documentation Unit is printing blank ICS-214 activity logs because the ones people fill in on their phones end up in a shared drive as photos. The Everbridge send log lives in Everbridge. The evacuation zone status lives in Genasys or Zonehaven. The map lives in ArcGIS. The CAD feed is on a separate screen in the corner that nobody can query. Six systems, and the Planning Section Chief builds the ICS-209 by reading screens and typing.

The cost is measurable. Across the emergency management builds we have delivered, the pattern is consistent: a nine to twelve day activation generates somewhere between 150 and 300 hours of pure reconstruction work for the Finance and Documentation Units afterward, retyping paper logs into a form the state Public Assistance coordinator will accept. Then a chunk of it gets kicked back, because "assisted with debris removal" is not a project worksheet line. This software is used hard maybe six days a year, and on those six days it either holds or it does not.

Problem: your resource request board is a form with a list behind it

An ICS-213RR is not a ticket. A resource request has a lifecycle: requested, sourced, ordered, en route, checked in, assigned, demobilized, returned, invoiced. It carries a NIMS type, a jurisdiction of origin, a mutual aid agreement, an EMAC A-tag if it crossed a state line, an equipment rate code, and a work and rest cycle for the humans attached to it. A board does not know any of that. A board knows a text field.

WebEOC, Veoci and Knowledge Center boards are configurable, and vendors will sell you a configuration engagement to prove it. What they cannot do is enforce a state machine across two jurisdictions with different cost share rules, or carry the Schedule of Equipment Rates code from the moment the pump is ordered through to the invoice your Finance Section has to defend. Each board is a silo, and Salamander T-card scans at check-in land in a third place entirely.

A custom build makes the resource one object with one lifecycle. The check-in scan writes to the same row the request created. Demobilization fires automatically when the assignment ends and the operational period rolls. The object carries its cost code, its owning jurisdiction, its agreement, and its assignment down the ICS org chart to branch and division. When Logistics asks what is in the field right now and who is paying for it, that is a query rather than a phone call.

Problem: cost recovery starts on paper and ends in an appeal

This is where the real money is. Eleven days of activation, force account labor across six departments, equipment hours from a fleet system, timecards in Munis or Workday or Kronos, and a Finance Section Chief manually assembling a package for Grants Portal. Line items get rejected for documentation rather than for eligibility. The work was real. The record was not structured.

Crisis Track handles damage assessment and debris well. It does not know your payroll. WebEOC does not know your fleet rates. No incumbent tool assembles the package, so a human does, months later, from memory and photos.

The custom answer is capture at the source. Every activity log entry is structured at the moment it happens: person, position, cost center, site with coordinates, asset, hours, PA category, project. Payroll feeds in nightly and reconciles against the assignment roster, so a mismatch surfaces on day three rather than at closeout. Field photos carry a geotag and timestamp bound to a damage site ID that becomes a project worksheet line. Every change is written to an immutable audit log, exportable in the shape your state coordinator wants.

AI earns its keep here in one place. Vendor invoices, contracts and paper timesheets get scanned, and a document extraction model pulls vendor, date, equipment class and hours, matches to the applicable rate, and flags the mismatches for a human to confirm. It also reads procurement documentation and flags the contract with no competitive bid trail under 2 CFR 200 while you can still fix it, rather than during an audit two years out. On our builds this is the difference between three weeks of package assembly and three days.

Problem: the common operating picture lives in six systems and one person's head

Ask your EOC this question tonight: which shelters sit within two miles of a zone under mandatory evacuation order, are above 80 percent capacity, and have no generator on site? Nobody can answer it, because the zones are in one vendor, the shelters are on a spreadsheet or in the National Shelter System, and capacity is a phone call to a Red Cross liaison.

Vendor integrations do not fix this. What vendors call integration is usually a link out or a read-only feed. The data never joins, because nobody owns the keys.

A build gives you your own incident data layer. Ingest from ArcGIS feature services, NWS CAP feeds, the Everbridge or Rave API, your CAD read replica, and yes, WebEOC's API if you are keeping it. Normalize on shared keys: zone ID, facility ID, incident ID, resource ID. Once those join, the situation report drafts itself from real objects and a section chief edits it rather than authoring it. A plain-language query layer over the log means the 03:00 duty officer asks a question instead of remembering which board filter someone built six years ago.

Problem: activation depends on one person who knows who is actually qualified

Everbridge and Rave send. They do not staff an EOC. They do not know that the Logistics Section Chief position needs someone with ICS-300 current within 24 months, or that the person who acknowledged is already scheduled for the day shift, or that two positions on the org chart are still empty forty minutes into a partial activation. The roster is a spreadsheet, the org chart is a PDF, and credentials are in a training tracker or a binder.

A custom staffing engine treats the ICS org chart as data. Position, qualified pool pulled from your LMS (Learning Management System) or training records, shift schedule per operational period, notification out through your existing Everbridge or Rave account by API so you keep the delivery infrastructure and your IPAWS authority. Accept and decline fills the seat. No response in fifteen minutes escalates to the next qualified name. The EOC Manager stops running the phone tree and starts running the EOC.

Problem: the after action report takes ten weeks and changes nothing

The HSEEP after action report and improvement plan gets written in Word, months late, from interviews with people who have forgotten. Corrective actions live in a table. Nobody tracks them. The same friction shows up in the next exercise, and again in the next real incident.

When your log is structured, the AAR is assembled rather than remembered. Corrective actions become tracked objects with an owner, a due date and a verification step, linked back to the specific log entries that generated them and forward to the next exercise's objectives. AI clusters the activation's log and comms traffic to surface the repeated friction points a human reviewer misses, for example the same resource request bouncing between two ESF desks nine times. The same structured record assembles your EMAP accreditation evidence without a three month scramble.

What this costs and how long it takes

From Digital Heroes delivery experience across 2,000-plus projects: a focused first release typically runs $60k to $130k and ships in 12 to 16 weeks. In this category that first release is almost always the resource request lifecycle plus structured cost capture, because that is where the money leaks. A full platform covering staffing, common operating picture, damage assessment and Public Assistance packaging runs $150k to $400k phased across 6 to 12 months.

What pushes the number up here specifically. Integration count: each real one, CAD from Tyler or Motorola or CentralSquare, payroll from Munis or Workday, Esri enterprise, Everbridge or Rave, a state system like EMResource or EM Constellation, adds roughly two to four weeks. Offline and degraded operation: a field damage assessment app that must work with no connectivity and sync cleanly is not a checkbox, it is a design constraint that touches everything. Security review: StateRAMP posture, CJIS handling if CAD data touches the system, SSO with county AD. That adds calendar time more than engineering hours, but it is real calendar time. Multi-jurisdiction tenancy with different cost share rules is the single biggest multiplier. And procurement, whether RFP, sole source justification or a cooperative contract, is your calendar rather than ours, so start it early.

The most expensive mistake we see is trying to rebuild the whole ICS suite at once. Ship the one board that hurts.

Build versus buy: an honest position

Buy is genuinely right for a lot of agencies. Single jurisdiction, two or three activations a year, you need a log, some boards and mass notification, and your state provides the WebEOC license at no cost to the county. Take it. Do not spend $200k building a worse WebEOC to save a license you are not paying for.

Build when these signals show up. You are burning more than roughly half an FTE per quarter reconciling between systems. Your PA claims get delayed or deobligated for documentation reasons rather than eligibility. You have paid for a custom board configuration twice and your staff still exports to Excel. You operate across jurisdictions or agencies with different rules and no vendor's tenant model fits. Or your resource types simply do not exist in anyone's catalog, which is the reality for ports, utilities, health systems, large campuses and regional authorities.

Our position: for most single counties, keep the incumbents and build the layer that binds them into one object model. For regional authorities, states with roll-up needs, utilities and health systems, build the core and let the incumbent do notification delivery only. Either way, the decision is not about features. It is about who owns the data model your money and your people flow through.

How to choose a developer for emergency management software

Make them model the domain before contract. Ask them to whiteboard a 213RR lifecycle across two jurisdictions with different cost share and a demobilization that triggers on operational period rollover. If the word "ticket" comes out of their mouth, they will build you a helpdesk with an ICS skin.

Demand integration proof, not integration claims. Have they written against Esri feature services, an Everbridge or Rave API, a CAD read replica, a Munis or Workday payroll export? Ask the specific auth model they used on each. Vague answers here predict a six week surprise in month four.

Audit and compliance are design questions. Ask to see an immutable audit log design, a records retention schedule, a public records request export, and how the system produces 2 CFR 200 procurement documentation on its own. Ask whether they have survived a state security review.

Ownership, offline behavior, and a real exercise. Source in your repository, infrastructure as code, no per-seat trap, a written runbook. Then make them demo the field app with the network cable pulled, and run the system in a functional exercise before go-live. An EOC tool that has never been activated is a prototype.

Research & sources

The evidence behind this guide

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

  1. OECD research finds that digitalisation offers SMEs opportunities to improve performance, spur innovation, enhance productivity and compete more evenly with larger firms; it reports that increased use of online platforms produced significant multi-factor productivity gains in SME-heavy sectors such as hospitality and retail, while smaller firms lag in adoption due to skills, resource and financing gaps. Source: OECD (2021) →
  2. Only about 30% of digital transformations succeed at meeting their objectives, but getting six critical success factors in place (leadership commitment, talent, agile culture, progress monitoring, clear strategy, and a modernized platform) raises the odds of success from 30% to 80%. Source: Boston Consulting Group (BCG) (2020) →
  3. Criteo's Global Commerce Review found retail apps convert at 18% versus 4% on mobile web (roughly 4.5x), and travel apps convert at 20% versus 6% on mobile web (about 3.3x). Source: Criteo (2017) →
  4. Digital Champions expect to achieve about 16% in cost savings and around 15% in revenue gains from digital operations over five years; the study surveyed 1,155 manufacturing executives across 26 countries. Source: PwC / Strategy& (2018) →
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 emergency management software cost for a county EOC?
A focused first release covering the resource request lifecycle and structured cost capture typically runs $60k to $130k and ships in 12 to 16 weeks, based on Digital Heroes delivery experience. A full platform adding staffing, common operating picture, damage assessment and Public Assistance packaging runs $150k to $400k phased over 6 to 12 months. Price is driven mostly by integration count and whether you need multi-jurisdiction cost share rules, not by user count.
Should we replace WebEOC with a custom system?
Usually not on day one. If your state provides the WebEOC license at no cost and you activate two or three times a year, keep it and build the layer underneath that owns resources, cost codes and the audit trail. Replace it later, at year two or three, only after your own system has proven itself in a real activation and an exercise.
How long does it take to build emergency management software?
A first release lands in 12 to 16 weeks if scope is one painful workflow, typically resource requests plus cost capture. Full platforms take 6 to 12 months in phases. Add calendar time on top for county security review and procurement, which can add two to four months before engineering even starts, so begin that process in parallel.
Can we keep Everbridge and ArcGIS, or do we have to replace them?
Keep them. Everbridge and Rave are good at delivery and your IPAWS authority lives there, so a custom system should send through their API rather than rebuild notification. ArcGIS feature services are the right place for your spatial data, and a custom build reads from them and joins them to incident objects on shared keys like zone ID and facility ID.
Will custom software actually get us FEMA Public Assistance money faster?
Yes, and it mostly comes from capturing structure at the moment work happens rather than reconstructing it afterward. When every activity log entry carries a person, position, cost center, site, asset, hours and PA category, package assembly drops from weeks to days. Document extraction on vendor invoices and paper timesheets, with a human confirming each match, removes most of the remaining retyping.
How do we migrate ten years of WebEOC boards and incident logs?
Export the boards to flat files and treat historical data as archive rather than as live records. Trying to force old free-text board entries into a new structured model is expensive and rarely pays off, since closed incidents just need to stay searchable and retrievable for records requests. Migrate the reference data that matters instead: facilities, jurisdictions, agreements, rosters, credentials and resource catalogs.
Do we own the code, and can another developer take it over?
You should own everything: source in your repository, infrastructure as code, no per-seat licensing, and a written runbook. Insist on this in the contract before kickoff, because a custom system you cannot maintain without the original vendor is just a more expensive lock-in. Any competent developer should be able to stand the system up from the repo alone.
What compliance does emergency management software have to meet?
It depends on what data touches it. NIMS and ICS alignment is the baseline, EMAP accreditation wants documented evidence you can produce on demand, 2 CFR 200 governs procurement documentation for anything federally reimbursed, and CJIS applies if CAD or law enforcement data flows through. Cloud hosting for state and local agencies increasingly means a StateRAMP posture, and shelter or medical data pulls HIPAA into scope.
Does a custom system work when the field has no connectivity?
It has to, and this is a design constraint you specify up front rather than add later. Field damage assessment apps should store locally, queue photos with geotags and timestamps, and sync with conflict handling when a signal returns. Ask any developer to demo the app with the network disconnected before you sign, because retrofitting offline behavior into a connected app is close to a rewrite.
How many people should be working on my software project?
A typical $40,000 to $150,000 build runs on three to five people: a technical lead, one or two developers, a designer, and someone owning QA and project communication, often as overlapping part-time roles. More bodies do not make software arrive faster; past a point they slow it down with coordination overhead. The question that matters more than headcount is whether one named senior engineer is accountable for the outcome.
Should I ask for a fixed price or pay the agency hourly?
Fixed price for the first version, hourly or retainer for what comes after launch. A fixed-scope, fixed-price V1 puts the estimation risk on the agency, which is exactly where you want it while trust is unproven; hourly billing on an unscoped greenfield build is a blank check. After launch, flip it, because maintenance and small features arrive unpredictably and fixed-pricing every ticket wastes everyone's time.
Will custom software work with the tools we already use, like QuickBooks and Stripe?
Yes, and this is one of custom software's genuine advantages: QuickBooks, Stripe, Shopify, and most mainstream business tools publish documented APIs built for exactly this. Expect each standard integration to add one to two weeks of build time, and be suspicious of any quote that lists five integrations without asking what data flows in which direction. The hard cases are legacy systems with no API, which is a question to raise in discovery, not in week nine.
Is it cheaper to customize Salesforce than to build a custom CRM from scratch?
If you use less than a third of what Salesforce does, a custom CRM is often cheaper by year three. Salesforce Enterprise lists at $165 per user per month, so 25 seats cost about $49,500 a year before admin and consultant fees, while a focused custom CRM runs $60,000 to $100,000 once plus 15 to 20% a year in maintenance. If you genuinely need Salesforce's ecosystem, reporting, and app marketplace, customizing it beats rebuilding it; the mistake is paying enterprise prices to use it as a glorified contact list.
Does the tech stack matter, and which one should I ask for?
It matters less than agencies imply, provided it is boring. A mainstream stack, something like React or Next.js on the front end, Node.js or Python behind it, and PostgreSQL for data, means thousands of developers can maintain your system if you ever change vendors. Apply one test: ask how hard it would be to hire a replacement developer for the proposed stack, and walk away from anything built on an agency's in-house framework.
How do I calculate whether custom software will pay for itself?
Divide the build cost by the monthly benefit, where benefit is hours saved times loaded hourly cost, plus subscription fees replaced, plus any revenue the software unlocks. Three staff saving 10 hours a week each at a $40 loaded rate is about $62,000 a year, which pays back a $60,000 build in roughly 12 months. Across Digital Heroes internal-tool projects, 12 to 24 months is the normal payback range, and anything projecting under 6 months usually means the spreadsheet is hiding costs.
How long does it take to build a custom web or mobile app from scratch?
Plan on 8 to 16 weeks for a focused first version and 4 to 9 months for a larger platform, which is the typical spread across Digital Heroes builds. The first 2 to 3 weeks go to discovery and design before any production code ships. The two things that stretch timelines most are integrations with legacy systems and slow feedback from your side, not developer speed.
What is a discovery phase, and is it worth paying for separately?
Pay for it, and treat the output as yours. A discovery phase runs two to three weeks, typically 5 to 10% of the eventual build budget, and produces a written scope, wireframes, and a fixed quote you can take to any vendor, including a competitor of the agency that wrote it. Skipping it is how projects end up quoted from a two-paragraph email and delivered at twice the price.
If we build for 20 users now, will the software cope with 500 later?
It should, without a rewrite, if it was built on a standard cloud stack; going from 20 to 500 users is mostly a hosting configuration change costing hundreds a month, not a second project. What actually breaks under growth is sloppier work: database queries never indexed for volume and features designed assuming one office's worth of data. Before signing, ask the vendor what happens to the system at ten times today's data, and listen for a specific answer.
How do I work out whether custom software will pay for itself?
Do the arithmetic on hours before anything else: if the system saves three staff eight hours a week at a $35 loaded hourly cost, that is about $43,700 a year against, say, a $70,000 build plus 15 to 20% annual maintenance, a payback around two years. Add revenue effects only if you can name them specifically, like faster quotes or fewer abandoned orders, not as vague growth. In our delivery experience the businesses that see payback inside 24 months are the ones automating a process they already measure.
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.
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?