How to calculate cost per signed instruction (or cost per signed listing)
Oshy Labs Ltd. Published 19 Oct 2026.
Cost per signed instruction is what you paid a lead source divided by the number of its leads that became signed instructions in the same period. US brokerages call it cost per signed listing. Count spend and signed outcomes for the same leads, over the same dates, and leave it blank when there were no signings or no recorded cost.
This guide is for owners, directors and lead managers at independent estate agencies in the UK and residential brokerages in the US who pay for seller leads from more than one source and want to compare those sources on outcomes rather than enquiries.
Apply for a 30 day pilotThe pilot runs this calculation on one export from your own CRM.
Why cost per lead tells you the wrong thing
A lead is a seller who gave you contact details and permission to call. A signed instruction (UK) is that seller signing your agency agreement. A signed listing (US) is the seller signing a listing agreement. Only the last two earn a fee.
Cost per lead is the number every portal and ad agency will happily give you, because it is the one they control. Your CRM then reports how many of those leads were contacted and how many got a valuation or listing appointment, and stops there. The step that pays for everything, the signature, usually lives in a status field nobody reports on by source.
So decisions get made on the wrong number. A source that sends sixty cheap enquiries a month looks better than one that sends ten dear ones, right up until you notice that the sixty rarely sign and the ten often do. The cost of that is not just the wasted spend; it is the valuations your negotiators drove to for nothing. Cost per signed instruction puts the cheap source and the dear source on the same line, measured at the only stage that matters.
How to calculate cost per signed instruction in six steps
You can do all of this in a spreadsheet. The steps are the same whether you call the outcome an instruction or a listing.
- Pick a period and count leads by the date they were created. The leads must be old enough to have reached an outcome; a lead created last week has not had time to sign. A quarter is a reasonable starting point. Adjust once you know your own lag from lead to signature.
- Export one row per lead from your CRM with at least: created date, source, and either a status column or a signed date. Add campaign, agent or negotiator, and lead cost if your CRM holds them. You do not need names, emails or phone numbers for any of this.
- Attribute spend to the same leads, and write down how. Either your CRM already stores a cost per lead, or you take the source's invoice for the period and spread it across the leads it sent in that period. Both are fine. Mixing the two across sources is not.
- Count signed outcomes by source among the leads created in the period. Decide once what "signed" means in your data (a status value, a signed date, or either) and keep that definition for every source.
- Divide spend by signed. Where a source has no recorded cost, or zero signed leads, leave the cell blank. Do not write £0, and do not write "infinite". A blank is a true statement; a zero is a lie that will get copied into a budget.
- Check the denominator before you act. Under 20 leads in a source, treat the figure as a note to revisit next month, not a reason to change spend. Two signings out of five is 40 per cent; one vendor changing their mind makes it 20 per cent.
Worked example (example figures)
The numbers below are invented to show the arithmetic. They are not benchmarks and not from any customer.
| Source | Spend in period | Leads created | Signed listings | Cost per lead | Cost per signed listing |
|---|---|---|---|---|---|
| Portal A | $1,200 | 40 | 4 | $30 | $300 |
| Paid social | $600 | 60 | 1 | $10 | $600 |
| Referral scheme | no cost recorded | 15 | 3 | blank | blank |
Read it line by line. Paid social is the cheapest source per lead and the dearest per signed listing. Portal A costs three times as much per lead and half as much per signature. The referral scheme has the best signed rate on the page (3 of 15) and still gets a blank in both cost columns, because nobody recorded what it cost; and 15 leads is under the floor, so even the signed rate is a note, not a decision.
The same arithmetic in pounds, again example figures: £900 spent on a portal in the quarter, 30 leads created, 3 of them instructed, gives £30 per lead and £300 per signed instruction.
Copy and paste calculation template
Period: {start date} to {end date} (leads counted by created date)
Source: {source name, one spelling}
Spend on this source in the period: {currency}{amount}
basis: per lead cost column from CRM | invoice total / leads created
Leads created in the period: {n}
Signed instructions / listings
from those leads: {n}
Definition of "signed" used: {status value and/or signed date present}
Cost per lead = spend / leads = {currency}{x}
Cost per signed = spend / signed = {currency}{y}
leave blank if spend is unknown or signed = 0
Denominator check: leads >= 20? {yes / no}
if no: note only, no spend decision this periodSpreadsheet version, one cell per source: =IF(OR(spend="",signed=0),"",spend/signed)
Checklist: the mistakes that make the number lie
- Counting leads by the date they signed instead of the date they were created (double counts one period, starves the next)
- Letting "Rightmove", "rightmove" and "RM" stand as three sources
- Treating leads with a blank source as a source
- Changing the definition of "signed" between sources
- Writing £0 or $0 where the cost is unknown
- Acting on a source with fewer than 20 leads
- Comparing a per lead cost basis on one source with an invoice basis on another without saying so
How does Broker Lead Lab calculate cost per signed?
Broker Lead Lab does the six steps above from a CSV export and shows the result by source, campaign, agent, office and month. Here is exactly what it does, taken from what is built in version 0.8.0.
Import. You upload the CSV your CRM already exports. The importer proposes a column mapping from common CRM column names and you correct it; two fields are required, the lead's created date and its source. Before mapping, columns that look like a person's name, email address, phone number or home address are dropped, by header and by the values in the column, and the import screen lists what it dropped. Rows are validated with a reason for each rejection, duplicates are flagged, and an import can be rolled back. The raw file is kept for 30 days by default, then a retention job removes it; lead rows hold your CRM's reference, dates, source, campaign, the agent name as written in your CRM, area code and money.
Report. The source funnel shows leads, contact rate, appointment rate, signed rate, estimated commission and cost per signed. Every metric label shows its definition. The definition of cost per signed is: "Acquisition cost divided by signed leads. Shown only where cost is supplied." If your export carries no cost column, that column stays blank. The homepage shows this report run over a sample file of 180 leads across six sources, labelled as sample data.
Test. You tag leads as control or variant in your export, pick one of four templates (first reply, response time, follow up sequence, source or campaign) and read the result once each cohort has 20 leads. Below 20 leads per cohort the screen says "Not enough data" and nothing else. Above it, you get a directional read with a sample size warning. Sources with fewer than 20 leads are left out of the "what to review next" list. No winner is declared for you. For a six week plan to run one of these tests at a single office's volumes, read how to A/B test a lead source change with small volumes.
Records. Audit log, CSV export, printable report, organisation deletion with a ledger, and privacy, terms and data processing agreement pages. Data is held on Supabase in London (eu-west-2).
What it does not do. It does not connect to your CRM or to portals; imports are CSV only, and connections are planned only after paid pilots show which ones matter. It does not attribute anything your export does not carry: if the cost is not in the file, cost per signed is blank, and if the outcome is not in the file, signed is zero. It does not promise more instructions, more listings, or any lift. The import completeness and source classification assistant (Jev) is off by default.
Pricing, as shown on the live pricing page, excluding tax: 30 day Pilot, $299 one off or £239 one off (one office, approved CSV import, baseline report, two tests, 30 days). Solo Office, $79 per month or £59 per month (up to 3 users, up to 3 sources, monthly imports, tests and exports). Growth Office, $149 per month or £119 per month (up to 10 users, up to 8 sources, up to 10 offices, tests, exports and audit log). The pricing page states that pricing is a test and may change with 30 days notice to existing customers.
Common objections
"Our CRM already reports this." CRMs report activity: leads in, calls made, appointments booked. This reports signed outcomes by source, with the definition printed next to every figure, so two people reading it get the same number.
"We don't have clean data." The first thing the import does is tell you what is wrong with each row and why. Duplicates and rollback are built in. The first pilot report is the baseline; clean enough to compare sources is a lower bar than clean enough to automate.
"Is lead data safe?" Contact columns (name, email, phone, address) are dropped before the file is mapped, and the import screen shows which ones. The raw file is kept for 30 days by default and then removed by the retention job. There is an audit log and a data processing agreement page.
"Is 20 leads enough?" Below 20 per cohort the app refuses to show a rate at all. Above it, the result is directional with a warning attached. The floor is a product rule chosen to stop small samples being read as results; it is not a claim that 20 makes a result certain.
Frequently asked questions
What is the difference between cost per signed instruction and cost per signed listing?
Only the word. In the UK a seller instructs an agent by signing an agency agreement; in the US a seller signs a listing agreement with a brokerage. Both mean spend on a source divided by the number of that source's leads that signed in the period. Broker Lead Lab labels the metric "Cost per signed" so it reads the same in either market.
Do I count leads by the date they were created or the date they signed?
By created date. You are asking what the leads a source sent you in a period went on to do, so the cohort is defined by when they arrived. Counting by signing date mixes leads from several periods into one month's spend and makes the figure jump around. The lag between the two is also worth knowing on its own.
What if my CRM does not record lead cost?
Then cost per signed stays blank, and signed rate by source is still worth having. To fill the gap, take each source's invoice for the period and divide it across the leads it sent in that period, then put that per lead figure in a cost column before you import. Say in your notes that you did it that way.
What counts as one lead source?
A distinct value in the source column of your export, after spelling variants are merged. Rightmove, Zoopla and your own website are three sources. A portal and a paid campaign running on that portal are one source and two campaigns, if your export has a campaign column.
Next step
If you want this table for your own leads rather than a sample, the pilot starts with one CSV export and a 20 minute conversation about what it contains.