Every form, every call, every live chat, tied back to the channel that produced it — and then followed through to whether it was a case you wanted. Not a dashboard of impressions.
Agencies report form fills. But a form fill is a bot, a job applicant, a vendor, a wrong-practice-area enquiry, or a real case — and the report treats all five the same. One client’s form volume once hit 775 in a single month. Seven hundred and twenty-one of those were spam.
If nobody separates them, the number goes up and the phone does not, and you have no way to tell which channel is actually worth funding. That is the problem this exists to solve.
One tab per client. Forms, organic calls, Google Business Profile calls, paid calls — logged month by month and sorted one at a time into qualified, not qualified, general inquiry, no answer, or spam.
It was slow and unglamorous, and we kept doing it because it was the only way to give a firm a number that meant something. A client would ask whether the Google Ads budget was working, and we could answer with the actual calls it produced and how many were cases they wanted.
Doing it manually for that long taught us the thing you cannot learn from a tool: what the categories need to be. That “general inquiry” is worth separating from “not qualified”. That “no answer” is an intake problem, not a marketing one. That Spanish-language calls need their own line because they need a different person to answer them.
No off-the-shelf platform sorted leads the way a law firm actually thinks about them. So eventually we built one.
ROIOn is ours. We built it because we had already spent years proving, by hand, exactly what a law firm needs to see — and then got tired of typing it in.
It connects to the places leads actually arrive: your forms, your call tracking, your live chat, your Google Business Profile and your ad accounts. Every lead lands with its source attached, gets categorised, and rolls up into the same view we used to build manually each month.
Form, call or chat, captured with the campaign, keyword or profile that sent it.
Qualified, not qualified, general inquiry, no answer or spam. Reviewed, not guessed.
What happened next, so a lead becomes a signed case or a reason it did not.
Spend follows the channels producing cases you want, not the ones producing volume.
Every one is tied to a source and given a status. The status is what makes the number usable — and it is the part almost no reporting bothers with.
Captured with the landing page and campaign that produced them, then filtered so a spam wave never shows up as a good month.
Separated by where the call came from, because a Google Business Profile call and a paid search call are worth different amounts and behave differently.
Counted alongside everything else rather than sitting in a separate vendor dashboard nobody opens.
No answer. It shows up every month, in every account, and it is not a marketing number — it is a missed case. Tracking it separately is often the fastest revenue we find a firm, and it costs nothing to fix.
Send us access and we will go through a month of your leads the way we used to do it by hand — sorted, sourced, and separated into the cases you wanted and the ones you did not. Yours to keep either way.