Sales and clients8 min read

What a client from a Facebook ad really costs — and why cost per lead lies

In short

Cost per lead in Meta is the cost of a filled-in form, not of a client. An agency needs three numbers: cost per inquiry, cost per qualified lead (usually a completed viewing) and cost per deal. They need three ingredients: where every inquiry came from, what every ad cost, and the stages in your CRM. And once you tell Meta how far each lead got, the campaign starts looking for people who come to viewings, not just people who fill in forms.

Why cost per lead lies

The ad account shows one number everybody watches: cost per result. In a lead-form campaign the result is a filled-in form. Not a call, not a viewing — a form.

And Meta forms are easy to fill in. Name and phone come prefilled from the profile, two taps and it is done. Some people are curious, some tapped by mistake, some gave an old number. That is why a low cost per lead very often means low intent, not a good ad.

An example with round numbers. Two campaigns, €600 each:

  • Campaign A: 150 leads at €4. Six of them reach a viewing.
  • Campaign B: 60 leads at €10. Twelve of them reach a viewing.

In the ad account, A looks two and a half times better. In the agency, A costs €100 per viewing and B €50. Judge by cost per lead and you switch off the better campaign.

The three numbers that matter

What to measure instead of cost per lead
  • Cost per inquiry. Ad spend divided by the inquiries it produced. Close to Meta’s number, but it also counts people who came from the ad to your website and wrote there.
  • Cost per qualified lead. Spend divided by the leads that reached the stage you call qualified. For most agencies that is a completed viewing.
  • Cost per deal. Spend divided by deals. The most honest number, but it arrives late.

The delay matters. A deal from a lead that arrived today closes in one to three months. If you wait for deals to decide which campaign works, you decide too late. So campaigns are compared by cost per viewing, and cost per deal shows whether viewings from that ad lead to sales at all.

Where the numbers come from

The three numbers rest on three ingredients. Miss one and the other two stop working.

  1. Where every inquiry came from. Meta forms carry the campaign name. Website inquiries only do if the ad link has UTM parameters. Without them everything from the website merges into “direct” and you can’t tell which ad brought it.
  2. What every ad cost. Not the monthly budget, but spend per ad. Otherwise you can’t say which of the five brings the viewings.
  3. How far every lead got. The broker records a call, a viewing, an offer, a deal — or the reason it dropped. This is the step most often missing, and without it the first two are just statistics.

For two campaigns a spreadsheet does the job. With more ads and more brokers, manual assembly stops happening regularly and the numbers stop being right. In OptiEstate this is the “Traffic sources” page: spend from Meta and from ChatGPT ads is pulled in automatically, and every ad shows its inquiries, its qualified leads and what they cost.

How Meta learns which lead is real

By default Meta optimises the campaign for whatever you tell it a result is — a filled-in form. And it finds exactly that: people who fill in forms. Including those who never answer the phone.

If you tell Meta how far each lead got, you can ask for something else: look for people who resemble those who reached a viewing. That is done with the Conversions API for CRM — the system sends the stage of every lead to the agency’s dataset, and the campaign optimises for “qualified lead” instead of form.

Three conditions, without which it won’t work:

  • The lead has to be recognised. For Meta forms that is the lead ID. For website inquiries — an email or phone number, sent encrypted, and only if the person gave consent.
  • Stages have to be recorded on time. A viewing logged two weeks late teaches the algorithm two weeks late.
  • It takes patience. The algorithm learns over weeks, not days. A campaign that gets tweaked every two days never reaches the point where it has learned anything.

In OptiEstate the feedback goes out on its own every 15 minutes, and optionally the same goes to ChatGPT ads and Google Analytics 4. It is off by default and never goes out for a lead without consent.

The mistakes that make it all pointless

Stages aren’t recorded. The most common and the most expensive. Without them every other number is the cost of a form with a nicer name.

Everything from the website sits under one source. The ad points to the website, but the link has no UTM. Inquiries arrive and nobody knows which ad sent them.

A campaign is judged in three days. A viewing comes days after the lead, a deal months after. In three days you only see cost per lead — the number that lies.

The lowest cost per lead is chased. It almost always brings the most curious people, not the most serious ones.

Consent isn’t kept. Without consent given at submission, data shouldn’t go back to Meta — and without it the campaign stays blind.

Frequently asked questions

What should a real estate lead cost?

There is no single number — it depends on the city, the property type and its price. A lead for a studio rental and a lead for a half-million house don’t compare. It is more useful to compare your own campaigns by cost per viewing: it shows which ad brings people who actually turn up.

Instant form or a link to the website?

Meta forms bring more leads, cheaper, but with lower intent. A website link brings fewer but warmer inquiries. Try both with the same budget and compare them by cost per viewing, not cost per lead. With feedback to Meta, forms usually get better over time.

Do I need consent to send data back to Meta?

Yes. Sending data about a person back to an ad platform — even encrypted — is processing personal data. Consent is collected when the inquiry is submitted and kept with it. Without it, no data goes out for that lead.

How long does a campaign need to learn?

Weeks, not days, and only with enough leads reaching the stage you chose as qualified. Meanwhile the most important thing is to record stages on time and not to keep changing the campaign.

The OptiEstate teamWe build the software Bulgarian agencies use every day. We write about what we see there.

See it on your own data

We show you the system with your listings and your way of working, not demo data. Half an hour, no commitment.

Request a demo