Industry guide · Inventory Management

Garden Center Software: Fixing the Inventory Your POS Cannot See

The short answer

If you are running two or more garden centers doing north of $4M a year, with your own landscape crews and a nursery yard where plants change value and grade every week, the honest answer is build the layer your POS (Point of Sale) cannot see, budget $60k to $130k for a first release shipping in 12 to 16 weeks, and $150k to $400k phased over 6 to 12 months for the full platform. Keep your POS for tenders and tax. Build the living inventory, the shrink ledger, and the job-to-yard bridge on top of it. If you are a single location doing under $2M with no crews, stay on Counterpoint or Epicor Eagle plus spreadsheets and spend the money on irrigation instead.

Why garden center software makes or breaks a multi-site nursery operator

Walk any garden center on the second Saturday in May and you will find the real system, and it is not the POS. It is a clipboard on the golf cart, a yard manager named Dave who knows which block of 15 gallon maples is actually saleable, a shared Google Sheet called "AVAIL_FINAL_v4" that gets emailed to landscape designers every Monday, and a whiteboard in the back where somebody wrote "Acer rubrum 15G: 40? 26?" with a question mark that has been there for three weeks. Your Counterpoint or Epicor Eagle install says you have 62. You have 26 saleable, 14 that are borderline, and 22 that died in February and nobody wrote off. The difference walks out the door as broken promises to a landscape client with a $38,000 install scheduled Thursday.

That gap is the whole problem. Retail POS systems were designed for a widget that has one SKU, one cost, one price, and one condition until it sells. A plant is none of those things. A #3 hydrangea in April is a different product than the same physical plant in August: different grade, different price, different shrink risk, different bench. It moves from block 14 to the front table to a holding area to a customer's truck. It gets potted up from a #1 to a #3 and its cost basis changes. It gets marked down 40 percent in July because the leaf scorch is visible. None of that has a place to live in Eagle or Lightspeed Retail or Square. So it lives in the sheet, and the sheet is wrong by Thursday.

Meanwhile your landscape division is quoting off that same stale availability in Aspire or LMN or, more often, a Word template, and your buyer is placing next season's order in early September off a gut feel because the only sales history you can pull is by SKU, not by cultivar, size, and week. At a $6M operation with three sites, we have seen the cost of that gap land between $180,000 and $400,000 a year: unrecorded shrink, over-ordering on the wrong sizes, landscape jobs re-sourced at broker prices, and roughly 20 to 30 hours a week of managers doing manual counts that get invalidated the moment a truck arrives.

Problem 1: your POS has one SKU per plant, and a plant is not one SKU

Every garden center controller knows this one. You buy 200 Hydrangea paniculata 'Limelight' as #1 liners in fall at $6.20. Over winter you pot 120 of them up to #3. In spring you sell some as #1 and some as #3. The #3s carry the liner cost plus pot, media, labor, and overwinter space. Your POS has two SKUs and no idea they are the same plant, so your cost on the #3 is whatever somebody typed in, and your margin report on hydrangeas is fiction.

Counterpoint and Eagle cannot fix this because they have no concept of a plant lot that transforms. There is no field for "this batch became that batch and carried $3.40 of accumulated cost per unit with it." Their kit and assembly features assume manufacturing, where inputs are consumed on a known date at a known ratio, not a living thing that you pot up in batches of whatever survived.

What a custom build does: model the lot, not the SKU, as the atom. A lot is a batch with a taxon (genus, species, cultivar, patent status), a container size, a grade, a location (block, row, bench, or holding), a source (grower, PO line, propagation event), a landed cost, and a running cost roll. Pot-up, grade change, and consolidation are recorded as lot events that split or merge lots and move cost with the units. The POS SKU becomes a projection off the lot, generated automatically, so the register still works and your team never touches the plumbing. Now "what did we actually make on Limelight last year, across all sizes, including the ones we potted up" is a query, not an argument.

Problem 2: shrink is invisible until you count, and by then it's a rounding error you cannot explain

The classic version: your physical count in November says you are $310,000 short against book. Nobody can tell you whether that is dead plant, unrecorded pot-ups, theft at the front gate, cashiers ringing a #3 as a #2 because the tag faded, or the 40 flats a landscape crew loaded at 6am and never told anyone. So it goes into one bucket called shrink, you write it off, and you learn nothing that changes next year.

Eagle and Counterpoint give you an inventory adjustment reason code list. That is where the trail ends. There is no way to attribute a loss to a cause with enough resolution to act, and no way to catch it in the window where it is still recoverable.

What a custom build does: a shrink ledger where every unit that leaves without a sale gets a typed reason, a responsible location, and a photo. Yard staff scan a lot tag on a phone, pick "dead / culled / damaged / pot-up loss / customer damage / crew pull," snap a picture, and it posts against the lot with cost. Ninety days in, you can see that block 12 loses 11 percent of #2 material every August and block 7 loses 2 percent, and that is an irrigation problem you can actually go fix. Cycle counts get scheduled by risk, not by calendar: high-value, high-turn, high-historical-variance lots get counted weekly on a phone in eight minutes, not once a year with the whole store closed.

AI does one concrete job here. Yard staff photograph culls anyway for the ledger. Run those photos through a vision model trained on your own tagged history and you get a first-pass grade suggestion and a cull-reason classification, so the ledger gets filled in accurately by a 19 year old in a hurry rather than skipped. We have also had good results extracting grower packing slips and invoices with document AI: a PDF from Monrovia or a handwritten BOL from a regional grower becomes lot receipts with taxon, size, count, and cost pre-filled, which turns a 40 minute receiving task into a 6 minute review. It is the highest ROI AI feature in this category, because receiving errors are the origin of most downstream inventory lies.

Problem 3: landscape jobs and the retail yard are two companies that hate each other

Your designer sells a $38,000 install with 14 River Birch multi-stem at #15. That material is in your yard, or was. The crew shows up Thursday, six are gone because retail sold them Saturday at full margin, and now the PM is calling a broker at $340 each against a $210 line item. Nobody committed the material because there is no way to commit it. Aspire and LMN handle the job, the crew hours, and the invoice beautifully. They have no idea what is standing in block 9.

Off-the-shelf cannot fix this because it is a two-system problem by design. Aspire's inventory module assumes you buy material for a job. Your POS assumes material is for retail. Neither has a concept of the same tree being both.

What a custom build does: soft and hard holds against lots, driven by job stage. When a proposal is issued, the material takes a soft hold that shows on retail availability as "42 available, 14 spoken for." When the client signs and the deposit clears, it goes hard, the tag prints, and the plants get physically staged. If retail rings a held lot, the register warns and requires a manager. Job pick lists print by block and row, in walking order, so the crew loads in 20 minutes instead of 70. Substitutions get logged against the job with the cost delta so you find out in week two, not at year end, that your designers are specifying material you never stock. The bridge to Aspire is an integration, not a replacement: you keep Aspire for scheduling, crews, and invoicing, and you push committed material and actual cost into it.

Problem 4: buying next season with last season's ghost data

Your buyer commits six figures to a grower in August or September for spring delivery. The available signal is POS unit sales by SKU, which is polluted by every problem above: stockouts read as low demand, pot-ups read as phantom purchases, dead plant reads as sales, and a rainy May reads as a bad cultivar. So the buyer buys what they bought last year plus ten percent, and you eat it in July markdowns.

Eagle's suggested-order logic is built for hardgoods with steady velocity and a reorder point. It has no weather, no season, no substitute, and no concept that demand for a #7 arborvitae is not the same demand as a #3.

What a custom build does: forecast at the taxon plus size plus week grain, using clean demand rather than sales. Clean demand means: units sold, plus units held for jobs, plus recorded lost sales when a lot hit zero, minus internal transfers, corrected for the days a lot was actually available and on a sellable bench. Feed in local growing degree days and last-frost date, because a two week late spring shifts your entire curve and your buyer's memory does not adjust for that. The output is an order sheet by grower with a confidence band and the exact history behind each line, so your buyer can argue with it. We build these to be overridden and to record the override, because after two seasons the comparison between the model and the buyer is the most valuable report in the business.

Problem 5: nobody knows what anything is worth in July

Markdown at a garden center is not a promotion, it is a biology-driven margin decision made 400 times a week by whoever is walking the yard. The #2 Knock Out roses looking rough on bench 4 are worth $18 today and $0 in three weeks. Your POS supports a price change, a sale price, and maybe a promo. It does not know which specific bench of which specific lot is deteriorating, so the decision gets made by whoever cares that morning, and half the yard sits at full price until it's compost.

What a custom build does: tie lot age, grade history, and shrink rate to a suggested price ladder, printed on scannable bench tags. When a lot crosses its historical break point, the yard manager gets a task on their phone: "Lot 4412, Knock Out #2, 88 units, 41 days on bench, historical August cull 34 percent, suggested $19.99 from $26.99." One tap, tag reprints, done. We have seen this convert six figures of annual compost into revenue at a $6M operation, and it takes about three weeks of build once the lot model exists.

What this actually costs and how long it takes

Across 2,000-plus delivered projects, our honest bands: a focused first release is typically $60k to $130k, shipping in 12 to 16 weeks. For a garden center, the right first release is almost always the lot model, mobile receiving with document extraction, the shrink ledger, and a live availability feed that replaces the Monday spreadsheet. That is the spine. Everything else hangs off it and none of it works without it. A full platform, meaning holds and job integration, forecasting, dynamic markdown, multi-site transfers, and grower portals, runs $150k to $400k phased over 6 to 12 months.

What drives price up in this category specifically. First, POS integration depth: Counterpoint has a usable SQL layer and a documented API, so a two-way sync is a few weeks. Epicor Eagle is more painful and often ends up as a scheduled data bridge rather than real-time, which adds four to six weeks. Square and Lightspeed are easy to read from and awkward to write to. Second, number of physical sites and whether you have reliable wifi in the yard: you do not, so offline-first mobile with conflict resolution is mandatory, and that is real money, roughly $20k to $35k more than an online-only app, and skipping it means the app is useless in block 14 in April. Third, plant patent and royalty tracking: if you propagate anything patented, you need per-unit royalty accrual and grower reporting, which is a genuine subsystem. Fourth, vision grading, which needs 6,000 to 10,000 of your own labeled photos before it beats a human, so it is a phase two item, not a launch item. Anyone who quotes it for launch has not done it.

Build versus buy, and where the line actually sits

Buy, and stop reading, if: one location, under roughly $2M in revenue, no landscape crews, no propagation, and your owner still personally walks the yard every day. Counterpoint plus a disciplined spreadsheet will genuinely carry you, and $100k spent on greenhouse repair returns more. For most of the market that is simply the right answer.

Build when you can point at these signals, and you will know at least three of them by heart: your November count variance is over 4 percent of inventory value and you cannot explain it by cause; you are re-sourcing landscape material at broker prices more than twice a month because retail sold it out from under a job; your availability list goes out weekly by email and designers do not trust it; you have three or more sites and no ability to see a plant at another site without a phone call; you are potting up more than about 15 percent of your units, so your cost basis is guesswork. At that profile the annual leak is usually somewhere between $180k and $400k, and a $110k first release that halves it pays back inside one season. That is rare in software and it is true here because the underlying data problem is so specific that nobody has bothered to solve it off the shelf. The garden center market is too small and too weird for Lightspeed to build a lot model. That is exactly why building one is defensible.

The hybrid is what most good operators land on and it is not a compromise. Keep the POS for tender, tax, gift cards, and loyalty, because rebuilding payment compliance is a bad use of your money. Keep Aspire or LMN for crews and job costing. Build the layer they cannot see: lots, grades, locations, shrink, holds, and forecasting, sitting between them and owning the truth about what is standing in your yard.

How to choose a developer for garden center software

Ask them to model a pot-up on a whiteboard before you sign anything. Genus, species, cultivar, container size, grade, block, lot, cost roll, patent flag. If they reach for a products table with a size dropdown, they are going to build you a slightly nicer POS and you will be back here in two years. The lot-and-event model is the job, and ten minutes at a whiteboard tells you whether they know it.

Make them name your POS and tell you the integration mechanism, unprompted. "We will integrate with your POS" is not an answer. "Counterpoint, we read from the SQL views and write back via the API, and here is what does not round-trip cleanly" is an answer. The ones who have done it will immediately warn you about which fields Eagle will not let you write. That warning is the qualification.

Check whether they treat offline as a feature or an afterthought. Ask what happens when two people count the same lot in block 9 with no signal and both sync at 4pm. If the answer is not a specific conflict-resolution rule, they have never shipped software that lives outdoors.

Confirm you own the code, the schema, and the deployment, in the contract, with the repository in your organization from day one. And ask about plant patent and royalty reporting even if you do not propagate today, because the answer tells you whether they understand that this industry has compliance obligations at all. A team that has never heard of a propagation license has never built for a nursery.

Research & sources

The evidence behind this guide

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

  1. 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) →
  2. McKinsey reports that autonomous supply-chain planning can raise revenue up to 4%, reduce inventory up to 20%, and cut supply-chain costs up to 10% while maintaining service levels (the wider 20-30% inventory-reduction figure comes from McKinsey's separate distribution-operations research, not this page). Source: McKinsey & Company (2020) →
  3. An independent Forrester Total Economic Impact study of OutSystems found a 363% three-year ROI with payback in under 6 months, illustrating that faster, lower-labor build approaches can materially shift the payback math. Source: Forrester Consulting (commissioned by OutSystems) (2024) →
  4. The median annual wage for U.S. software developers was $133,080 in May 2024, and employment is projected to grow 15% from 2024 to 2034 - a core input to any in-house build-vs-buy TCO model. Source: U.S. Bureau of Labor Statistics (2024) →
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 garden center software cost for a multi-location nursery?
A focused first release runs $60k to $130k and ships in 12 to 16 weeks, which for a garden center typically covers the plant lot model, mobile receiving, the shrink ledger, and live availability. A full platform with job holds, forecasting, markdown automation, and multi-site transfers runs $150k to $400k phased over 6 to 12 months. Price drivers specific to this category are POS integration depth, number of sites, offline-first mobile for the yard, and plant patent royalty tracking. At a $6M three-site operation the annual leak from bad inventory data is usually $180k to $400k, so a first release often pays back in one season.
Should we replace Counterpoint or Epicor Eagle, or build on top of them?
Build on top. Rebuilding payment processing, tax, gift cards, and loyalty is expensive and adds nothing, so keep the POS for tender and build the layer it cannot see: plant lots, grades, yard locations, shrink, and job holds. Counterpoint has a usable SQL layer and API so two-way sync takes a few weeks. Epicor Eagle is harder to write to and often ends up as a scheduled data bridge, which adds four to six weeks to the timeline.
Why can't our POS track nursery inventory properly?
Retail POS systems assume one SKU has one cost, one price, and one condition until it sells. A plant changes grade, price, container size, and cost basis over its life, and when you pot a #1 up to a #3 the POS has two unrelated SKUs and no way to carry accumulated cost across them. That is why your margin reports on any cultivar you pot up are fiction, and why availability lives in a spreadsheet instead of the system.
How do we stop retail from selling plants that are committed to a landscape job?
You need soft and hard holds against inventory lots, driven by job stage. When a proposal is issued the material takes a soft hold and retail availability shows it as spoken for. When the client signs and the deposit clears, the hold goes hard, tags print, plants get staged, and the register warns and requires a manager if someone tries to ring a held lot. Aspire and LMN cannot do this because they have no visibility into what is standing in your yard.
Can we integrate custom software with Aspire or LMN instead of replacing them?
Yes, and you should. Aspire and LMN handle scheduling, crew hours, and job invoicing well, so keep them and build the bridge that pushes committed material and actual plant cost into the job. The custom layer owns the yard truth, Aspire owns the crew and the invoice, and the integration carries holds and cost deltas between them. Replacing Aspire would add six figures for no operational gain.
How long does migration from spreadsheets and our POS take?
Plan four to eight weeks of data work inside a 12 to 16 week first release, running in parallel with the build rather than before it. The hard part is not the export, it is establishing an accurate opening lot position, which usually means one full physical count with the new mobile tool during a slow window, ideally late fall or January. Historical sales come across from the POS for forecasting, but expect to clean taxon naming, because most operations have the same cultivar entered six different ways.
Where does AI actually help a garden center, and where is it hype?
The highest ROI use is document extraction on receiving: grower invoices, packing slips, and BOLs from suppliers get parsed into lot receipts with taxon, size, count, and cost pre-filled, cutting a 40 minute task to about 6 minutes and eliminating the receiving errors that corrupt everything downstream. Demand forecasting at the taxon, size, and week grain using growing degree days is the second. Vision-based plant grading is real but needs 6,000 to 10,000 of your own labeled photos before it beats a human, so it belongs in phase two, not launch.
Do we own the code if we hire a firm to build this?
You should own the code, the database schema, and the deployment infrastructure outright, with the repository in your own organization from day one, and it needs to be in the contract before work starts. Any arrangement where the developer hosts the repo and hands over a zip at the end gives you leverage problems later. Ask specifically about the cloud account: it should be yours, with the developer granted access, not the other way around.
What compliance issues apply to garden center and nursery software?
Plant patent and royalty tracking is the big one: if you propagate patented cultivars you need per-unit royalty accrual and reporting to the licensor, and that is a genuine subsystem rather than a checkbox. State agricultural inspection and phytosanitary certificate records for interstate shipping also need to live somewhere auditable, tied to lots and their sources. If your developer has never heard of a propagation license, they have not built for a nursery.
How much should a small business budget for its first custom app or website?
For a focused first build, most small businesses land between $8,000 and $60,000: roughly $8,000 to $45,000 for a custom website and $25,000 to $60,000 for an internal tool or simple web app, based on Digital Heroes delivery across 2,000+ projects. Customer-facing products with payments, logins, or a mobile app start around $40,000. Quotes far below these bands usually mean a template with your logo on it, not software shaped around your workflow.
What's a realistic timeline for building a custom inventory system?
A usable first version covering receiving, stock movements, scanning, and low-stock alerts ships in 8 to 12 weeks across Digital Heroes inventory builds. Full multi-warehouse systems with Shopify, Amazon, and accounting integrations run 4 to 6 months. Any quote under 6 weeks usually means the vendor has not scoped concurrency handling or data migration.
How much does custom inventory management software cost for a small business?
A single-location system with receiving, stock movements, and barcode scanning typically runs $15,000 to $40,000, based on Digital Heroes delivery experience across 2,000+ projects. Multi-warehouse, multi-channel builds land between $40,000 and $120,000, and manufacturing or forecasting features push past that. The biggest cost driver is logic rather than screens: lot tracking, unit conversions, and channel sync each add real engineering time.
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 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.
Who owns the code when an agency builds my inventory system?
You should, in full, with intellectual property assignment written into the contract before any payment is made. Insist on the code transferring to a repository you control no later than final payment, plus hosting and domain accounts in your own name. If an agency offers to license you their platform instead of assigning the code, you are buying another Cin7 with fewer features.
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.
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?