Case study · GoHighLevel + AroFlo
A$10,536 in paid jobs in 30 days
That's what one heating and cooling business invoiced in a single month to past customers who replied to a text and asked for a call. Those 21,775 customers had been buried inside the job-management software the technicians use, where nobody could market to them. I moved the lot into GoHighLevel and built an engine that texts them, answers them, and hands the office a callback to make.
Their best sales list was already in the building. It just wasn't anywhere they could use it.
Where it came from: 21,775 customers, finally reachable
Brilliant at running jobs. No way to send any of these people a message.
and tagged
The simple idea
Trades businesses spend a fortune chasing strangers, while thousands of people who already paid them sit forgotten in the job system.
1. The list already exists
Every job ever completed is a customer who already knows and trusts the business. They were in the job software, not the marketing.
2. A text, not a cold call
Each one gets a short, friendly text offering their next service at 20% off. Four messages over nine days — then it stops, for good.
3. A real conversation
Anyone who replies is answered in seconds by an AI, any hour of the day. If they're interested, the office gets a callback to make.
What the customer actually experiences
No chatbot menus, no "press 1". A text that reads like it came from the office, and an answer that arrives before they've put the phone down.
A deliberate decision
It asks for a callback. It never offers a time.
Most AI booking systems try to fill a diary. In a trades business that's a trap — the run sheet depends on which technician is free, where the last job was, and what the van is carrying. None of that is in a calendar.
One question, always the same
"Would you like one of our friendly staff to give you a call to discuss?" A yes creates a callback task for the office, first thing the next working morning.
The office keeps control of the run sheetNo diary, no double-bookings
The AI cannot see a calendar and cannot offer a time, so it can never promise a slot the business can't cover. It also never has to apologise for one.
No broken promisesIf they name their own day, it's written down
"Can you call me after the 29th?" gets acknowledged, and their exact words land in the note the office reads before picking up the phone.
Nothing gets lost in translationHappy customers become reviews. Unhappy ones become a phone call.
After every completed job, a short satisfaction survey goes out automatically. What happens next depends entirely on the score.
The survey goes out
Sent automatically once the job is marked complete in the job software. No one has to remember.
8 out of 10 or better
Only then do they get the Google review link — while the good job is still fresh in their mind.
Anything lower
Flagged quietly inside the CRM instead. The business hears about the problem privately, not on a public listing.
This one gate is the difference between a review engine and a liability. Asking every customer for a review asks unhappy ones too.
The part that matters most
Nobody runs it
Every weekday morning, before anyone's in the office, the system picks the day's people, puts them in, and starts texting. It skips anyone already in the sequence, anyone recently serviced, anyone who has opted out, and anyone without a mobile.
Texting thousands of people is a risk if you get it wrong
Built to be stopped from a phone
Messaging a database this size can get a business's sending account suspended. Most of the build is the brakes, not the engine.
One switch stops everything
The owner can halt all outbound texts, or the AI, or just the flow of new people, from a phone in under two minutes — no laptop, no code, no calling me.
The business holds the kill switchOnly a tagged group is ever texted
Out of 21,775 contacts, only the small group carrying today's tag can receive anything. The system also refuses to run at all if that group grows past a set ceiling.
A bug can't text 20,000 peopleOpting out is instant and silent
A "STOP", or a plain "no thanks", ends it. No confirmation message, no follow-up, no second ask — and the person is suppressed from every future campaign.
Opt-outs went to zero on the openerEarly on, the opener was losing more than one in eight people to opt-outs. Rewriting it took that to zero opt-outs on the opening text, three days running — the difference between an account that survives and one that gets shut down.
Same engine, different CRM
I build this inside whatever CRM you already run
There's no Flowlamina platform to migrate onto. The engine is built natively into the system your team already opens every morning — here are three running right now, in three completely different ones.
How many old customers are sitting in your job software?
If you've been trading for years, the answer is usually thousands — people who already paid you once and would happily pay you again, if anyone asked. Let's work out what yours are worth.
Book a callOr email harshan@flowlamina.com