A snow removal app for a one-to-three-truck contractor has to do five things: put tonight's stops in the fastest road order, let you flag the stops that go first, show you one stop at a time with Navigate, On my way and Done, re-plan from wherever you are when the snow keeps coming, and tell you whether you will finish inside the window you promised. Route4Me, Upper and Jobber each do part of that for a monthly seat fee, and none of them were written by someone who plows. I run a remodeling company in central Minnesota, plow in town with a Bobcat through the winter, and in September 2026 I built my own route app instead of renting one. This is what it does, what it replaced, and the geocoding bug that nearly put a driveway in the wrong county.
Here is the whole list. If an app does these five things well, the rest is decoration.
When I priced the tools that rank for this search, the gap was obvious. Upper starts at $50 per user per month ($40 on annual billing) and advertises 250 stops per route and 10 driver profiles, which are numbers for a parcel van, not a 22-stop plow route. Route4Me starts at $199 a month with recurring routing sold as a paid add-on. Jobber is $49 a month for one user on Core, $139 on Connect, plus $29 per extra user, and routing is one row in a long feature list.
None of them know what a service promise is, none split seasonal money from per-storm money, and none have a 'do first' flag that survives a re-plan. They are delivery software with snow listed as a vertical.
Mine is a private web app pinned to my iPhone home screen, so it works like a snow plowing app for iPhone without the App Store. It took two weekends in September.
Do the math first, because the math decides what the app has to show you.
In my shop a standard driveway runs 8 to 10 minutes in the skid steer at a 2-4 inch event. Between stops in town I budget road distance at about 9 miles an hour plus a minute to position, which comes to 2 to 4 minutes a hop.
Depth multiplies the on-site number, not the drive. My app uses the multipliers I set after watching my own storms: 4-8 inches is 1.4x, 8-12 inches is 2x, a foot or more is 2.5x.
Run it for 22 stops. At 2-4 inches that is 220 minutes on site plus about 66 moving, call it 4.8 hours. At 8-12 inches the on-site part doubles and the same list is 8.4 hours. Add the 20 percent cushion I draw on every plan and you are at 10 hours against a 12-hour promise. That is the ceiling: one machine honors about 20 to 24 residential driveways inside 12 hours, and a commercial lot counts as three or four driveways.
Past the ceiling you need a second machine or a sub, not a better app. I plow central Minnesota, Avon and Freeport myself and hand St. Cloud work to a plow subcontractor rather than promise what one Bobcat cannot deliver.
Re-runs are the part the brochures skip: when it is still coming down at hour six, the first stops have fresh snow on them and the order matters twice, which is why re-plan from GPS is on my short list.
For how often this happens: about 7 plowable storms in a normal St. Cloud winter, 14 in the worst two of the last 20 (NOAA ACIS, 2"+ storms Nov-Mar), and what that does to seasonal versus per-push pricing is its own post.
One honest note on scale: my own first-winter list is smaller than that ceiling and still filling from October's postcards; I sized the app for the ceiling, not for my current list.
Tap Start storm and the app pulls every client marked On route, asks an open-source routing engine (OSRM) for road time between every pair, and orders them fastest-first from my home base. Straight-line ordering looks fine on a map and sends you across the tracks three times.
Flagged stops go to the front in their own best order; the rest optimize behind them. A gym in town that signed up this fall wants the lot clear before morning classes, and a retired neighbor I plow for free needs her car out early. They lead every storm no matter where they sit on the map.
One stop, big type, four buttons. Navigate opens Apple Maps to the pin. On my way opens a prefilled text. Done stamps the time against this storm and counts a push for that client. Skip sends the stop to the end and the route re-orders.
Done taps queue on the phone when I lose signal between towns and replay when it returns, and every write checks a version tag on the server so a Done tapped on bad signal cannot overwrite the one I tapped ten seconds later.
Skipped a stop, added a sign-up mid-storm, or the snow restarted? Re-plan recomputes the order from where I am standing. By default the route starts from home base; a plan built from a bad GPS fix is worse than no plan.
Every plan shows an arrive time per stop, the return-home leg, a Leave at time, the 20 percent cushion, and the finish-by time next to the 12-hour promise. Prospects sit on the same map as purple pins with 'adds about 14 minutes to a storm' beside each one, which is how I decide whether the next sign-up gets a yes or a 'next season'.
The Clients tab is grouped by road. Each client has a status (Prospect, Call back, On route, No), a plan (Seasonal, Per trip, One-time), a price, paid, owed, and a push count against the 12-visit cap in my agreement.
Two money tiles sit at the top. Contracts signed is seasonal and prepaid money only. Each storm is the sum of per-push prices. In September I looked at a single tile that said $450 and felt good about the season until I admitted none of it was signed; it only shows up if it snows. Count per-trip clients as revenue and you will plan a winter you have not sold.
The public page at revisionsunlimited.com/snow takes name, phone, address, property type and how they want to pay. The QR codes on my postcards, yard signs, flyers and business cards each carry a source tag, so I know which piece of paper a lead came from. A submission lands on the storm map as a New online prospect and pushes to my phone with a tap-to-call button. From the client sheet, Text their price opens a quote text that ends with 'Reply YES and you're locked in.'
The On my way button opens my phone's Messages app with the client's number and the message already typed: who I am, that they are next, about how many minutes out. My thumb sends it. No texting platform, no carrier registration, no per-message fee.
The trade-off is that nothing is automatic. A done-with-photo text sent without you means a Twilio integration, which is exactly where registration and per-message costs show up. For a route of 24, the thumb wins.
One line lives in both the client sheet and the agreement: the customer marks their own driveway edges and obstacles before the first snow and I follow the lines, for reasons covered in the pricing post.
The routing took an afternoon. The addresses took a week.
I typed a client's address as 'County Rd 10, 56307' and the pin landed on a County Road 10 near the Twin Cities, 90 miles from the driveway. 'First St' matched a First Street in another town. The geocoder matched the street name confidently and treated the zip code as a suggestion.
Four fixes, in the order I added them:
Then the GPS problems, which were mine.
The app showed no location at all for a day. The cause was a security header on my own website that disabled geolocation site-wide, a line I had added months earlier and forgotten. Allowing location for my own pages fixed it in one commit.
Second, an iPhone with Precise Location off hands you a fix that can be 250 meters or worse. The app now refuses any fix worse than 250 meters, starts from home base instead, draws the accuracy circle on the start marker, and tells me how to turn Precise Location back on.
Prices are from the vendors' own pages in October 2026, linked above, and assume you pay year-round, which most owners do because nobody cancels in April.
Honest guidance, since I sell builds: five or more trucks with a dispatcher, live driver tracking and proof-of-service photos: buy Route4Me or Upper. Snow as one service inside a landscaping company that needs invoicing, crew scheduling and quotes: Jobber is a reasonable rental and routing comes along.
One to three machines, a customer list that fits on a phone, and a storm-day card that is the job: have one built around your route. Add up three winters of per-seat software and hold my quote against it: the build price plus three winters of the monthly plan, not the build price alone. If you want the rest of the business on the same phone, I wrote about building a whole business OS as an iOS app and what small Minnesota businesses automate first.
Three things you can do this week without hiring anyone, and the same three I need if you want me to build it.
If you would rather have the app than the spreadsheet, send me those three things through the contact page. You get a clear scope, a set build price quoted up front, and a monthly plan for just the services your route uses. Our development team builds it around your trucks, your towns and your promise. The storm-day card, the client list and the sign-up form are the core; texting, invoicing and a second-machine split are options we price in or leave out.
More on how I work with contractors and trades, and the automation services and AI automation pages cover what else I have wired.
Yes, but most of what ranks is general route software (Route4Me, Upper) or field-service software (Jobber) with snow listed as one vertical, and none of them were built by someone who plows. For one to three trucks you need five things: fastest road order, 'do first' stops, a one-stop-at-a-time card, re-plan from GPS, and a finish-by time checked against your service promise. You can rent one of those tools per seat or have a route app built around your own route; mine is a web app pinned to my iPhone home screen.
Small operators mostly use a spreadsheet and the contacts on their phone; bigger outfits use Jobber or a CRM. What matters is four fields per customer: status (prospect, call back, on route, no), plan (seasonal, per storm, one-time), paid versus owed, and how many pushes they have used against your visit cap. Keep signed seasonal money and per-storm money in separate totals so you do not plan a winter you have not sold.
Start from your shop, put the stops that must be done first at the front, then let a road-time routing engine order the rest; never order by straight-line distance. Give every stop a minutes-on-site number at 2-4 inches and multiply it for deeper snow. Add 20 percent and check the total against your service window. If it does not fit, split the route or add a sub; do not plan on driving faster.
In my experience about 20 to 24 residential driveways per machine inside a 12-hour window at a typical 2-4 inch event, using 8 to 10 minutes per driveway and 2 to 4 minutes between stops in town. An 8-12 inch storm roughly doubles the on-site time, so the same list takes 8 to 10 hours. Count a commercial lot as three or four driveways.
The simplest way is a prefilled text from your own phone. My app's On my way button opens Messages with the customer's number and the message already typed, so there is no texting platform, no carrier registration and no per-message cost. If you want texts sent automatically, with a done-with-photo message for example, that is a Twilio integration with 10DLC registration and a small fee per message.
Partly. Google Maps takes up to 10 stops and Apple Maps up to 15, but you order them yourself. Route4Me's driver app has a free 10-stop plan and Upper offers a trial. None of them keep your customer list, your visit cap or a finish-by estimate. The building blocks I used, OpenStreetMap routing, the Census geocoder and free push notifications, cost nothing; what you pay for is the build and a monthly plan for hosting and support.
Tell me how many stops you run, the window you promise, and the towns you cover. You'll get a clear scope with a set build price, quoted up front, and a monthly plan for just the services your route uses, priced to compete with the per-seat route apps. You talk directly with the people who build it.