Lapsed Customer Alerts for ECI Spruce
Every account in Spruce measured against its own buying pattern, the ones that went quiet listed per rep with their history and a check-in drafted. The rep calls or sends.
Sales & estimatingUpdated Oct 202620 ERPs
See it work on Spruce.
Click through the steps. Fictional data, in Spruce’s terms; the real thing runs on Spruce.
| Customer | Pattern | Last ticket | Gap | 12-mo sales | On the account |
|---|---|---|---|---|---|
| Pine Hollow Contractors | Weekly · Tuesdays | Sep 29 | 3 weeks | $84,210 | Nothing · paid current |
| Granite Peak Builders | Weekly · avg $3,900 | Oct 20 | Ticket size halved | $198,300 | Route 9 warehouse ending? |
| Ferry St Renovations | Monthly | Aug 6 | 11 weeks | $27,440 | Dispute open · 204317 |
| Bayview Decks | Seasonal · Apr to Sep | Sep 12 | Season over | $61,980 | Expected quiet |
| Shoreline Electric | Weekly | Oct 19 | On pattern | $46,700 | Nothing |
Each account against its own rhythm. A seasonal buyer after the season is expected quiet.
The problem, as it happens in Spruce.
A dealer finds out a contractor left when the rep runs into them at a jobsite buying from someone else. The sales report in Spruce shows this month against last month by account, and a framer who bought every Tuesday for two years and stopped in September looks like a small number in a long list.
The reasons are ordinary: a bad delivery, a price match they didn’t get, a new estimator at the builder who already has a yard he likes. Nobody asked, so nobody knows, and the account is a lapsed customer by the time it shows up on the year-over-year.
How it works.
- 1
Each account against its own pattern
Purchases from Spruce by account, by week, over the last two years. A weekly buyer, a monthly buyer, a seasonal buyer: each one has a rhythm, and Lunica measures the account against its own, not against the branch. The arithmetic is done from Spruce, not by a model.
- 2
The quiet ones, found
A weekly buyer with three silent weeks. A spring buyer who has not bought this spring. A builder whose average ticket halved. Each flagged with the gap in plain words, with a credit hold or an open dispute shown beside it so a rep does not call about a problem the credit desk already owns.
- 3
One note per rep, with a check-in drafted
Each rep gets their accounts: the history, the last ticket, the contact, and a short check-in in the rep’s own voice. A call script where the rep would rather call. The rep sees it in the morning, biggest account first.
- 4
The rep calls or sends
Edit, send, call or skip. What the customer says is logged against the account: moved to another yard, job gap, bad delivery, nothing wrong. Nothing goes to a customer on its own.
How it connects to Spruce.
Lunica reads sales history and the customer account through a read-only login to the Spruce SQL Server database: invoiced tickets by account and week, the rep and branch on each account, contacts, and anything on the account the rep should know before calling, such as a credit hold, an open dispute or a payment plan. The pattern is arithmetic over the full history each night; a model only sees the account being written about.
Nothing lands in Spruce without a person and nothing is sent on its own. The check-in is a draft in the rep’s name until the rep sends it. What the customer said is logged beside the account in Lunica; a note your team wants on the customer account is keyed by your team.
What a week looks like.
- The accounts that went quiet, by rep, with the gap in plain words.
- A seasonal buyer missing the season, caught in the season.
- A check-in drafted in the rep’s voice, with the last ticket in front of them.
- What the customer said, logged against the account instead of forgotten.
Questions
Does it contact customers?
No. The check-in is a draft until the rep sends it, or the rep calls instead. Nothing goes to a customer on its own.
Does it write to Spruce?
No. It reads sales history and the customer account. What the customer said is logged in Lunica; a note for the customer account is keyed by your team.
How is ‘lapsed’ decided?
Against the account’s own rhythm, from its history in Spruce. A weekly buyer silent for three weeks and a quarterly buyer silent for three weeks are not the same thing, and are not treated the same.
What about cash and one-time customers?
Excluded by rule, with a value or ticket-count floor you set. Accounts on credit hold are flagged to the credit desk, not to the rep.
Can it tell why they left?
No. It tells you who went quiet and gives the rep the history. The reason comes from the call, and is logged.
What does the model see?
The account being written about: its history, contact and last tickets. The pattern itself is arithmetic over Spruce’s sales history, not a model.
Does it need a server?
Lunica runs on one Windows server inside your network, or beside ECI’s hosted Spruce, set up and maintained by Lunica. It reads ECI Spruce through a read-only login to the Spruce SQL Server database. There is no inbound connection from outside your network.
What does Lunica read in Spruce?
The customer account, open items and terms, purchase orders and receipts, the item record, quotes and order history, as each workflow needs them. Read-only, and only the rows a task is about.
Can it post to Spruce?
Nothing lands in Spruce without a person. What belongs in Spruce goes back as a Spruce import where one exists, or keyed by your team from what Lunica prepared.
What about our documents?
Invoice copies and scans keep living in Spruce document imaging. Lunica reads them when a workflow needs one and never writes to them.
The same workflow, on another ERP.
Lapsed Customer Alerts is written for every system on the list. You’re reading the Spruce version.
See it on your Spruce data.
Thirty minutes. We walk the workflow on Spruce data, then map it to yours.