Animal Shelter Software Problems: The 7 That Cost Real Money, and How to Avoid Them
The most expensive failure in animal services software is a hold modelled as a single date field. One animal can be under a stray clock, a bite quarantine and a cruelty evidence hold at the same time, each set by a different authority, and a record with one hold end date can only represent one of them. The result is an animal cleared for outcome while an obligation was still open. Every other problem on this list costs you hours of staff time. That one costs you a prosecution, a council relationship and usually a resignation.
Why does the hold clock keep getting built as a date field?
The scope conversation almost always goes the same way. Somebody asks how long a stray is held. The answer is five days, or seven, or whatever the ordinance says. That number goes into a specification, a developer adds a hold end date to the animal record, and the meeting moves on. Eight months later an animal seized as evidence in a cruelty case is adopted out, because the evidence hold was never a hold at all. It was a sentence in a free text note that the outcome screen never read.
This failure is specific to animal services because one animal routinely carries several obligations at once, each from a different authority. The stray clock comes from your ordinance. A bite quarantine comes from the county health department, runs the standard ten day observation period for a dog or cat that bit a person, and may apply to an owned animal held at home rather than in your building. An evidence hold comes from a prosecutor and has no end date until a court gives one. Owner surrenders follow different rules again. One field cannot hold three obligations, so staff keep the other two in their heads and on the kennel card.
The fix is to type the holds. Each becomes its own record carrying a source of authority, the counting rule for your jurisdiction including how holidays and closure days are treated, and an end condition. Any action clearing an animal for outcome checks for open holds and refuses unless a named person records an explicit override with a reason. Ask a developer to draw that on a whiteboard before you sign. The ones who have done this work separate the hold types unprompted.
What goes wrong when years of animal history get migrated?
Shelter data is among the messiest small datasets in local government, and migration is where these projects quietly lose a month. Outcome codes have usually been redefined two or three times over a decade, often informally, so the same word means different things depending on the year and the person who typed it. Medical history sits half in structured vaccine records and half in free text. Adopter records are duplicated because the same person has three email addresses. Microchip numbers arrive in four formats. Photographs live in a folder named by an identifier that stopped matching the database after a system change in 2019.
The consequence that stings is the live release rate. Once outcome codes are mapped correctly to the standard national definitions, your historical figure moves. If nobody prepared the board for that, the software project becomes a credibility problem rather than an operational one, and you spend a committee meeting defending a number instead of demonstrating a system.
Treat migration as a distinct workstream with its own budget line, not a step at the end. Bring full structure across for recent years and a searchable archive for older records. Map outcome codes deliberately, with a supervisor deciding each ambiguous case rather than a script guessing. Publish the restated historical figure before go live with the mapping attached, so the change is your announcement rather than somebody else's discovery.
Why do microchip, syndication and payment integrations break after launch?
Integrations in this sector are mostly one way and mostly unmonitored, which is a combination that fails quietly. Adoption listings syndicate to public sites. Microchip lookups reach registries that each present a slightly different interface. Licensing payments run through a processor whose credentials expire. Jurisdiction attribution may depend on an address or parcel lookup. None of these fail loudly. The feed simply stops, and you find out when a volunteer mentions the website still shows a dog adopted three weeks ago.
The second cause is that these connections get built against whatever the partner exposed on the day, with no contract test and no alerting. When the partner changes a field, the feed keeps returning a success response and drops the record. Nobody notices, because nobody is watching a number that would move.
The fix is cheap if it is in scope from the start and awkward to retrofit. Every outbound feed gets a visible last success timestamp on an operations dashboard a real person checks, plus an alert when the gap exceeds a threshold you set. Failed records land in a queue with an owner rather than a log file. A reconciliation job compares what you believe is listed against what is actually listed. Put this in the first release, not the second.
What happens when the controlled substances log and bite quarantine are not covered?
These two gaps appear in almost every shelter build scoped from the adoption side inward, because neither is visible if you start at the animal profile screen and work outward.
Euthanasia solution is a Schedule II controlled substance and your registration depends on an accurate log. If the build does not record administration at the moment it happens with witness confirmation, and reconcile against inventory on a schedule, your clinic keeps a paper book alongside the new system. That book is now the legal record, transcribed quarterly by somebody who was not present, and you have paid for software that made your compliance position worse.
Bite quarantine fails differently. It serves a public health purpose rather than an ownership one, and it often applies to an animal that is not in your building. If the system can only place holds on animals in kennels, home quarantines go into a spreadsheet, inspection checkpoints get missed, and release depends on somebody remembering. When the health department asks for the record, you hand over a spreadsheet.
Both are inexpensive to build and expensive to retrofit, because both change the shape of the hold model. Name them in the specification yourself. A developer who has never heard of controlled substance reconciliation is not disqualified, but they will not raise it in discovery, and silence there costs you a phase two.
Should you build custom or configure what you already own?
Plenty of organisations reading this should configure Shelterluv properly and stop. If you are a rescue or a humane society with no field operation, Shelterluv handles intake, medical records, foster communication and the adoption pipeline better than any first release you commission, and it connects you to adoption syndication and national reporting without effort. PetPoint is the pragmatic choice where breadth and national reporting matter more than workflow polish. Chameleon and ShelterBuddy both hold up in municipal settings. Spending six figures to arrive at a worse version of Shelterluv is a real risk and we have talked organisations out of it.
The honest test is whether your operation is one business or several. A shelter is one data model. A public veterinary clinic is another. A licensing authority is a third. A law enforcement function with officers, citations, evidence and court dates is a fourth. Packaged products do two or three of those well and the rest thinly, which is why municipal departments so often run a fully digital shelter beside a paper dispatch log.
The tipping point is the field officer. Once your operation includes people responding to calls in vehicles with legal authority, packaged products stop fitting and the workaround becomes paper nobody can report on. A common middle path keeps the packaged product for adoption and foster and builds the field, licensing and contract reporting layer around it. That targets the half that is actually broken.
How do hidden costs get into the quote?
Six things reliably arrive after the number is agreed. Contracted jurisdictions come first, because each city brings its own ordinance, fee schedule and report format, so a price built around one municipality does not scale linearly to six. Licensing is second: it sounds like a form and is actually renewals, delinquency notices, online payment, refunds and reconciliation. The clinic is third, if it serves the public, because that is veterinary practice management and a project in its own right.
Offline mobile is fourth. A field application that keeps working with no signal and syncs afterwards is genuinely harder than a responsive web page, and it is not optional, since the parts of your county with the worst coverage generate the most calls. Migration is fifth, and it is routinely quoted as a small fixed line by firms that have never opened a shelter export. Training and parallel running is sixth, and it lands as real staff overtime if the go live date was set by the project plan rather than by intake volume.
Protect yourself two ways. Make the developer scope migration separately, after examining an actual export. And ask for offline behaviour to be demonstrated rather than described. Ask what happens to a citation written in a dead zone when the officer drives back into coverage. A vague answer means the price is not real.
What separates a build that works from one that fails here?
The builds that work start inside the building. Staff pain lives at intake, in the kennel, in the clinic and in the vehicle, not on the public adoption page. Teams that begin with the public site produce something attractive that changes nothing, and by the time money is needed for the operational core the appetite has gone.
They treat the record as evidence rather than data. Animal history supports cruelty prosecutions, public health decisions and contract invoicing, and it will outlive several software vendors. That means an append only audit trail, overrides that capture who authorised what and why, and a bulk export you can run yourself without asking anyone.
They have one named internal owner with authority, usually a supervisor who still works intake shifts. Committees produce feature lists. One person who knows what Friday evening before a holiday weekend looks like produces a system.
And they settle ownership before kickoff. The department or the organisation should own the repository, the cloud accounts and the right to hire another firm. At Digital Heroes the client owns the code from the first commit. In animal services that carries extra weight, because your records are public and legal documents that must remain producible for decades regardless of who maintains the software.
The evidence behind this guide
Independent findings on why this investment pays off. Every link goes to the primary source.
- Almost half of all the activities people are paid almost $16 trillion in wages to do in the global economy have the potential to be automated by adapting currently demonstrated technologies. Source: McKinsey Global Institute (2017) →
- The Standish Group 1995 CHAOS Report found only 16.2% of software projects fully succeeded; success varied sharply by size, with large-company projects succeeding about 9% of the time versus far higher rates for small projects - best treated as an industry survey, not an audited dataset. Source: Standish Group (1995) →
- In the Flexera 2025 State of ITAM report, respondents reported roughly 33% of SaaS spend is wasted, underscoring how paying for off-the-shelf seats and tiers that go unused erodes the supposed cost advantage of generic SaaS. Source: Flexera (2025) →
- In a McKinsey global survey of 1,259 respondents, only about 20% said their organizations excel at decision making, and just 37% said their organizations' decisions were both high quality and high in velocity. Source: McKinsey & Company (2019) →
Maya tests client software at Digital Heroes before it reaches users, writing test cases from requirements, checking the paths people take rather than the ones the spec assumes, and tracking defects through to a fix. Her posts show how much of quality is thinking, not clicking.
View profile · Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.
Frequently asked questions
Our stray hold is five days. Why is that not just a date on the animal record?
Because an animal frequently carries more than one obligation at a time. A stray clock from your ordinance, a bite quarantine from the health department and an evidence hold from a prosecutor all run under different rules, different authorities and different end conditions. A single date field represents one of them and hides the rest in free text, which is how a case animal gets adopted out. Model each hold as its own typed record and block outcome actions while any remain open.
Can an animal be adopted while a cruelty evidence hold is open?
It should be structurally impossible. An evidence hold has no end date until a court provides one, so the system needs to treat it as a blocking obligation rather than a note. The correct behaviour is that every outcome action, adoption, transfer, euthanasia and release to owner, checks for open holds and refuses to proceed unless a named user records an override with a reason. That override record is exactly what protects your officers if the decision is ever questioned.
Our outcome codes have changed three times in ten years. How do we migrate them?
Deliberately, with a supervisor deciding each ambiguous case rather than a script guessing. Codes get redefined informally over a decade, so the same word means different things depending on the year and the person entering it. Map them once, correctly, to the standard national definitions, then publish the restated historical live release rate with the mapping attached before go live. Otherwise the number moves after launch and you spend a board meeting explaining software instead of demonstrating it.
Why did our adoption listings go stale after launch?
Almost always because the syndication feed failed silently and nothing was watching. These integrations are one way, and when a partner changes a field the feed can keep returning a success response while dropping records. Insist that every outbound feed carries a visible last success timestamp on an operations dashboard, alerts when the gap exceeds a threshold, and puts failed records into a queue with a named owner. Reconciliation between what you believe is listed and what is actually listed should run on a schedule.
What happens to our euthanasia drug log if the build ignores it?
Your clinic keeps the paper book, which then becomes the legal record for a Schedule II controlled substance, transcribed quarterly by somebody who was not in the room. That is a worse compliance position than before the project. The requirement is administration recorded at the moment it happens with witness confirmation, reconciled against inventory on a schedule, producing the report your registration needs directly. Write it into the specification yourself, because most developers will not raise it.
We hold contracts with six cities. Why does that cost more than one?
Each jurisdiction brings its own ordinance, its own fee schedule and its own report format, so the rules are configuration bound to the contract rather than logic written once. Intakes, calls and days of care also have to be attributed to the responsible jurisdiction at the moment they occur, which is what turns the monthly contract report into a query rather than a week of somebody assembling spreadsheets. Contract renewals depend on those numbers being consistent and defensible.
Should we keep Shelterluv and build only the field side?
For many municipal departments that is the sensible answer. Shelterluv is genuinely strong on adoption workflow and foster communication, and replacing it wholesale usually buys a worse version of what you already have. Building the field dispatch, bite quarantine, cruelty case, licensing and contract reporting layer around it targets the half that is actually on paper. Budget honestly for the synchronisation layer and agree which system owns the animal record before anyone writes code.
How do we run a parallel period without doubling the work for intake staff?
Keep it short and narrow. Two weeks of dual entry at intake only, not across the whole operation, is usually enough to surface the workflow assumptions that nobody wrote down, and intake is where they hide. Schedule it outside kitten season and outside your busiest adoption events. Pay the overtime openly rather than pretending the team will absorb it, because a parallel period that staff quietly abandon leaves you launching on assumptions instead of evidence.
Should I hire a freelancer or an agency for my software project?
How many people should be working on my software project?
If an agency builds my software, who actually owns the code?
Should we build an MVP first or go straight to the full system?
Should I ask for a fixed price or pay the agency hourly?
Why do agencies charge for a discovery phase instead of quoting for free?
What happens if I stop paying for maintenance after launch?
Will custom software work with the tools we already use, like QuickBooks and Stripe?
What should I prepare before contacting a software development agency?
We run everything on Airtable and spreadsheets. When is it time to go custom?
How do I make sure custom software is secure and compliant with rules like HIPAA?
Who can build a custom software system?
Digital Heroes builds custom 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 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.