
“You cannot take a bounce rate to a repair shop and explain the invoice.”
Measuring what the customer actually pays for
An advertiser pays for position and gets value in calls. So we measured both ends, and everything between.
We tracked around 180 event types. That number sounds like sprawl and isn’t — the taxonomy is a map of how the business makes money, from the position an advertiser paid for through to the phone call that resulted.
Designing it was a product decision far more than a technical one, and it’s the part of the analytics work we would point at first.
The problem
The constraint
What we did
Measured position as a first-class event
top1,top3,top5,top10— recorded at the moment a listing appears, not derived afterwards. A premium listing is sold as better placement, so placement is the thing that must be demonstrable. Reconstructing it later from something else is not the same as recording it.Recorded, not derivedInterest is granular by design
Opening hours, services, amenities, rates, reviews. Those are different questions, and a system that lumps them together as “engagement” throws away the answer.
Five questions, not oneSeparated intent from contact
Revealing a phone number and actually placing a call are two events, not one. The gap between them is a conversion rate no general-purpose tool would ever produce, because no general-purpose tool knows that revealing a number is the meaningful moment in this business.
Reveal → callDistinguished the phone numbers
Primary, secondary and after-hours are tracked separately. In truck repair that is not pedantry: a call at three in the morning is a different kind of urgency and a different kind of job.
Three a.m. is not noonMeasured the sales funnel too
Which package a visitor chose, and which tier of listing they created. So the system describes not only what an advertiser receives but how they decided what to buy.
What they get and how they chose
top1, top3, top5, top10 — recorded at the moment a listing appears. A premium listing is sold as better placement, so placement must be demonstrable rather than reconstructed afterwards from something else.
The result
- ~180 event types mapping the full chain from placement to call
- Yearly reports that answer the only question an advertiser has at renewal
- A conversion rate — reveal to call — that no off-the-shelf tool would have produced
What we’d do differently
180 event types across four years, and no scheduled review of which ones anyone still looked at. Some certainly stopped being used and kept being written. A taxonomy needs a pruning habit as much as a naming convention, and we only ever had the second.
- InfluxDB
- MySQL
- Node.js