Grassly's Smart Upsell Engine reads your customer history and surfaces the renewals, seasonal services, and lapsed accounts you'd otherwise miss. A fresh call list every Monday — generated from the data you already have.
How it works
We look at every customer's service history, contract dates, property zones, and seasonal patterns — no new data to enter.
Each customer gets a weekly set of plausible upsells ranked by likelihood and dollar value.
Each opportunity is a one-click estimate. Send, track, close. Opportunities that didn't land get retired automatically.
What it catches
Knows when each customer's annual or seasonal contract is due and queues the pitch before the window closes.
Flags customers who haven't booked fall cleanup, overseed, pre-emergent, or whatever you sell this season.
If a customer mows with you, the engine looks at property size and history to suggest complementary services they're likely to buy.
Surfaces customers who went quiet — 30, 60, 90 days — so you know who to win back before they forget they had a lawn guy.
Every opportunity tracks from creation → estimate sent → invoice paid. You see which suggestions actually closed.
Dismissed an idea? Pick how long before it reappears (1–24 months). The engine learns your rhythm.
No. The engine only surfaces opportunities — nothing is sent automatically. You review, decide, and turn each into an estimate or campaign yourself. Weekly digest email is opt-in.
It depends on history. With 6+ months of service data per customer, the suggestions become noticeably useful. Newer orgs will see thinner lists that grow with your book.
Yes — toggle each of the six signal types (renewals, seasonal, cross-sell, lapsed, etc.) on or off. You can also dismiss individual opportunities with a configurable cooldown.
Currently Pro plan and up, during beta. We'll announce general availability and any pricing changes before moving out of beta.
Explore other Grassly features that work great together.