Ask a developer what their marketing costs and you will get an exact number. Ask what it produced and the answer gets vaguer with every step: leads, yes; qualified leads, roughly; site visits, someone would have to check; bookings by channel, nobody can say. The spend is precise because it comes off a card statement. Everything after it is an estimate, and the estimates are where the money goes.
This is a guide to closing that gap — what to measure, why cost per lead misleads almost everyone who reports it, and what a builder actually has to instrument to be able to answer, in a sentence, which channels produced last quarter's bookings.
Why is cost per lead the wrong number?
Cost per lead is the number every agency reports and the number every builder repeats, because it is the easiest to calculate and it goes down when you work at it. That is exactly the problem: it measures how cheaply you can buy attention, not whether the attention was worth buying.
Take a worked example with round numbers. Two channels, ₹2,00,000 spent on each in a quarter. Channel A is a broad campaign that produces 500 leads — a cost per lead of ₹400, which looks excellent — of which two book. Channel B is tightly targeted, produces 125 leads at ₹1,600 each, which looks four times worse, and five of them book.
| Channel A (broad) | Channel B (targeted) | |
|---|---|---|
| Spend | ₹2,00,000 | ₹2,00,000 |
| Leads | 500 | 125 |
| Cost per lead | ₹400 | ₹1,600 |
| Bookings | 2 | 5 |
| Cost per booking | ₹1,00,000 | ₹40,000 |
On cost per lead, A wins by a distance. On cost per booking, A costs ₹1,00,000 per booking and B costs ₹40,000, and B wins by more than double. If you managed this quarter on cost per lead you would have shifted budget from the channel producing buyers into the channel producing phone numbers, and the leading indicator would have looked better every week while the bookings fell.
That pattern is not unusual — the numbers above are illustrative, but the shape is what a broad campaign does. Loosening targeting always lowers cost per lead, because the pool of people willing to submit a form for a brochure is far larger than the pool willing to buy a flat. Any metric that improves when you make your targeting worse is a metric that should not be steering your budget.
There is one more reason the number misleads in property specifically: the value of a booking is enormous relative to the cost of a lead. When a single booking carries lakhs of margin, a channel can be five times more expensive per lead and still be the better buy. In categories with thin margins, cost per lead is a reasonable proxy. In real estate it is almost never the binding constraint.
What should you measure instead?
Not one number — a chain, with one metric per stage, so a bad result tells you where it went wrong rather than just that it did.
Cost per lead still has a job. It is a campaign-health check: a sudden rise means your creative has fatigued or an auction got more expensive, and that is worth knowing within the week. It is a diagnostic, not an objective.
Cost per qualified lead is the first honest number, and it requires you to define "qualified" and apply it consistently — usually a real conversation with a human in which budget, configuration and timeline were established. The gap between cost per lead and cost per qualified lead is the clearest measure of targeting quality you will get. A channel that is cheap on the first and expensive on the second is buying you the wrong audience.
Cost per site visit is the strongest mid-funnel signal in Indian real estate, because a buyer who gives up a Sunday morning has demonstrated intent that no form field captures. It is also the point at which marketing and sales performance start to blur, which is useful: a channel that is fine to the site visit and poor from there is telling you something about the sales office, not about the campaign.
Cost per booking is the number the budget should actually be managed on. It is late, it is noisy on small volumes, and it is still the only one that maps to money.
Revenue booked per rupee spent is the summary version for the quarterly conversation. It is worth calculating on booking value rather than collections, provided you also know your cancellation rate — booked revenue that later cancels flatters the channel that produced it.
Why does attribution have to start at capture?
Every metric above depends on one field being right, and it is the field most likely to be wrong: where the lead came from.
The reason is simple and unforgiving. A source cannot be reconstructed after the fact. If a lead is created without one, or a rep types one in from memory at the end of the day, or the field is left as the default because the form did not pass it, the information is not merely missing — it is gone. By booking time, four or five months later, nobody remembers which of three campaigns that buyer clicked, and if you ask the buyer they will say "I saw it somewhere online", which is true and useless.
So the discipline is: the source is written by whatever captured the lead, at the moment the lead was created, and it is not a free-text box a human fills in later. Three practical consequences follow.
Every destination you point spend at needs its own tagged route. UTM parameters on every ad and email link, a distinct landing page or form per campaign where that is easier, and a capture that carries those parameters through into the lead record rather than dropping them at the form boundary. A campaign whose leads arrive tagged only as "website" has not been measured.
Campaign-level, not just channel-level. "Google" is not a source you can act on. Google Search on brand terms, Google Search on category terms, and a Performance Max campaign behave completely differently and deserve to be judged separately. Aggregate to channel for the board; manage at campaign level.
The field should be hard to overwrite. If a salesperson can quietly change a lead's source to their own walk-in entry, some of them eventually will, particularly if incentives touch source. Any later change should leave a trace.
What should a builder actually instrument?
Five things, in order of how much they cost you when they are missing.
| What breaks without it | |
|---|---|
| One record per buyer | A buyer split across three rows has no assemblable journey. |
| Source stamped at creation | Attribution becomes an opinion typed in hours later. |
| A defined qualified event | Cost per qualified lead compares two different things. |
| Site visit as an event | The strongest mid-funnel signal goes unrecorded. |
| Booking written back to the lead | Everything upstream is measurable; the outcome is not. |
One record per buyer, keyed on the phone number in a single normalised format. In Indian real estate the phone number is the identity, and a buyer who appears as three rows is a buyer whose journey cannot be assembled. Normalise on the way in, or every downstream number is wrong in a way you cannot see.
The source stamped at creation, immutable enough to be trusted. Covered above; it is the foundation for everything else.
A defined qualification event, applied the same way by everyone. If one tele-caller marks a lead qualified after a ring-out and another after a fifteen-minute conversation, your cost per qualified lead compares two different things. Write the definition down; it matters more than which definition you choose.
The site visit recorded as an event on the lead, not as a memory. Visits are the mid-funnel measurement and they are chronically under-recorded, usually because logging happens back at the desk two days later, if at all.
The booking written back to the same lead record, not entered as a fresh customer. This is where most attribution chains break in practice. The lead is captured with a source, then the booking is created in a different place — a sales register, an accounts sheet, a separate form — and the link to the originating lead is never made. Everything upstream is now measurable and everything that matters is not.
Why does the lag between spend and booking break the reporting?
A property purchase takes months, and the naive report compares this month's spend to this month's bookings. That report is close to meaningless: you are dividing money spent on buyers who have not decided yet by bookings from buyers acquired one or two quarters ago. Increase spend sharply and your apparent ROI collapses; cut it to zero and your ROI looks magnificent for a quarter.
The fix is to cohort by lead-created month rather than by booking month. Every lead is stamped with the month it arrived and the spend that produced it; when it books, the booking is credited back to that original month. Your January cohort accumulates bookings through February, March, April and beyond, and its true cost per booking becomes clear over time.
Two consequences to accept. Recent cohorts are legitimately incomplete, so read the last two or three months through leading indicators — qualified-lead rate and site-visit rate — rather than through cost per booking, which will always look terrible for a month that has barely started converting. And you need to know your own typical lag: if most bookings land four to six months after the lead, then a cohort is only readable at about six months, and a channel decision made on six-week-old data is a guess wearing a number.
What about channels with no click?
Hoardings, print, radio, referrals and the broker channel do not produce a click, which is why they usually end up in a bucket called "direct" or "walk-in" that absorbs everything the system could not classify. That bucket is where marketing accountability goes to die.
Almost all of it is instrumentable if you decide to bother. A QR code with a distinct destination for each hoarding tells you which site produced enquiries. A dedicated phone number per campaign attributes calls. A specific short landing page for a print ad separates it from your general traffic. And one mandatory question at walk-in registration — asked as "how did you first hear about this project", not "how did you hear about us" — recovers a surprising amount, provided the answer options are a fixed list rather than free text.
The broker channel deserves its own treatment rather than a bucket, because it is a paid channel with a cost per booking like any other, just billed as a percentage after the fact. Attribute the partner at submission and its economics can sit in the same table as your ad channels, which is usually the first time a developer sees what the broker channel actually costs relative to paid search. If you want the mechanics of that, we wrote them up separately in how to stop losing broker-sourced leads.
Untrackable and unmeasured are different problems. The first is rare. The second is a choice.
Why does spend in one system and bookings in another make ROI unknowable?
Suppose you have done everything above. Sources are stamped, cohorts are defined, the booking is linked to the lead. There is still one structural problem, and it is the one that quietly defeats most builders: the money and the outcome live in different places.
Spend sits in Google Ads and Meta Ads Manager, plus invoices for the hoardings and the agency retainer. Bookings sit in a CRM, or a sales register, or an accounts spreadsheet. Nothing joins them. To produce a cost per booking by channel, somebody exports two or three files, matches campaigns to lead sources by hand, allocates the offline spend, and builds a pivot. It is a half-day of work, and half-day jobs get done when someone senior asks — which is usually after a decision has been taken and needs justifying.
The consequence is not that the number is wrong. It is that the number is stale, and a stale ROI number cannot steer anything. Budget decisions get made weekly; a figure recalculated twice a year is a slide, not a management tool.
There are three honest ways out. Do the reconciliation on a fixed schedule — the first Monday of every month, in a template that already exists, so it is an hour rather than a day. Or put the spend into the same system as the leads, even manually: a monthly spend figure per campaign, typed into the same place the leads live, is enough to compute cost per lead, per visit and per booking automatically thereafter. Or run campaigns from the same system that holds the pipeline, so the join never has to be made at all.
The middle option is under-rated. Typing twelve numbers a month into a sheet that already holds your leads converts an unanswerable question into a formula. It is not elegant and it works.
How does Sthan handle this?
We build a real-estate CRM, so read this as an illustration of the last section rather than as the point of the post — the measurement discipline above is what matters, and it is achievable in a spreadsheet if you are willing to do the monthly reconciliation.
Sthan's approach to the join is the third option: campaigns are built against the projects and units already in the system, so the spend and the booking it produced end up in the same place instead of two. Google Ads and Meta Lead Ads campaigns are managed inside the platform, source attribution is stamped at capture on every lead — from those campaigns, from MagicBricks, 99acres and Housing.com, from web forms, WhatsApp click-to-chat, missed-call capture, QR codes, walk-ins and broker submissions — and Indian phone numbers are normalised on the way in, so a buyer is one record rather than three. Cost per lead by channel is a report rather than an export-and-pivot exercise, and it sits alongside the sales funnel by stage, bookings by project and broker performance, with scheduled reports and Excel or PDF export on each. Because the booking, its payment schedule and its receipts sit in the same workspace as the lead that produced them, the chain from source to booked revenue is something you read off a report rather than reassemble by hand. If you would rather not run the campaigns yourself, the optional Growth Services do that against the same pipeline.
What no software fixes is worth naming. It will not save a source field that a rep can overwrite by hand, it will not decide your attribution rule when three touches all have a claim, and it will not shorten the lag between the click and the booking — you still have to cohort, and you still have to wait. And a report nobody opens is exactly as useful as a spreadsheet nobody updates. The pricing and payback reasoning is on our pricing and ROI transparency guide, and the campaign-side workflows are in marketing automation and drip campaigns.
Where to start
Do not start with a dashboard. Start with one question asked honestly: for last quarter's bookings, can you name the source of each one? If you can, you have the chain and you need better reporting. If you cannot, you have a capture problem, and no amount of reporting will fix it.
For last quarter’s bookings, can you name the source of each one? If not, you have a capture problem, and no amount of reporting will fix it.
Then fix capture first, in this order: normalise the phone number, stamp the source at creation, tag every destination you spend money on, and write the booking back to the lead. Only after that does it make sense to argue about attribution models. Most builders skip straight to the argument, which is why the answer to "which channel produced these bookings" has stayed a matter of opinion in an industry that measures everything else to the square foot.