Divide what you spend on leads by the jobs they win. At an illustrative $60 a lead, a 20% win rate costs $300 per won job and a 10% rate costs $600. Your Angi charges show what each lead cost, but only your own log shows how many became jobs, so build that log before spending more.
The figure that decides whether Angi pays is the break-even win rate: all-in cost per lead divided by gross profit per won job. If a lead costs $80 all-in (fee, phone time and a visit), a $7,200 system replacement at a 32% margin breaks even at about 3.5%, while a $320 drain clearing at 55% needs about 45%. Same lead, opposite verdicts.
Cost per won job, and the break-even rate behind it
Two definitions first, because most muddled results start here. A lead is won when the customer has paid or signed, not when a visit is booked. All-in cost is the lead fee, plus the phone time spent chasing it, plus any visit or estimate you carried out for it.
Then two formulas. Cost per won job equals total lead spend divided by jobs won. Break-even win rate equals all-in cost per lead divided by gross profit per won job. The first tells you what you are paying; the second tells you what you can afford to pay.
| Win rate | $30 lead | $60 lead | $90 lead |
|---|---|---|---|
| 10% | $300 | $600 | $900 |
| 20% | $150 | $300 | $450 |
| 30% | $100 | $200 | $300 |
Your statement gives the real fees. Read the table across and down: tripling the fee has the same effect on cost per won job as cutting the win rate to a third, so a $90 lead at 30% costs what a $30 lead at 10% does. That is why a follow-up routine that lifts wins can be worth as much as a cheaper lead.
What Angi says about win rates, and what it leaves out
Angi sells these leads one at a time, and as far as I could find it does not hand a plumber a win rate to plan around. Its quarterly filings say it moved to "homeowner choice" in January 2025, so pros now receive only the leads a homeowner picks, yet none of its filings from 2024 to 2026 prints a win-rate figure. The numbers sit in shareholder letters and calls instead. The Q1 2025 letter, as quoted in search results (Angi's investor site blocks automated reading, so check the original), says the "self-reported pro win rate", the share of leads a pro paid for that became a won job, rose 10% after the move removed lower-quality, auto-matched leads. A transcript of the Q3 2025 earnings call has the chief executive putting the estimated win rate "up nearly 30%" and saying the formerly auto-matched leads had won about half as often as other channels. Every figure is a change, not a rate; I found no absolute percentage.
Two lessons follow. A relative rise from a low base is still a low rate, so Angi's trend says nothing about your own number. And "self-reported" means pros marked the job as won, exactly as your log will, so the quality of your records decides whether your figure means anything. Borrow Angi's definition and use it as yours: won jobs divided by leads you paid for.
Put five questions to your account contact and write down the answers:
- Is each lead sent only to me, or to other firms as well, and how many?
- Which job types and sizes can I switch off?
- Which reasons and time limits apply when I challenge a lead?
- Can I cap weekly spend?
- Can I export lead history with prices and dates?
A list price on its own cannot tell you whether a $45 lead is cheap. That depends on what a won job earns you, which is the part this tutorial works through.
The six-column lead log that makes the maths possible
A spreadsheet with six columns is enough: lead ID, received (date and time), job type, lead fee, first contact (time and outcome), and result (won with invoice value, lost with a reason, or invalid). Take the fee from your statement, match each lead to a job in your field service app by phone number, and take gross profit from the finished job costing. Four illustrative rows:
| Lead ID | Received | Job type | Fee | First contact | Result |
|---|---|---|---|---|---|
| A-1041 | Tue 08:12 | Blocked drain | $34 | Called 08:15, reached | Won, $380 |
| A-1042 | Tue 11:40 | Furnace or AC replacement | $78 | Texted 11:52, no reply | Lost: no answer after four tries |
| A-1043 | Wed 07:05 | Water heater leak | $41 | Called 07:09, reached | Quoted $1,850, lost to another firm |
| A-1044 | Wed 15:30 | Tap repair | $34 | Called 15:34, number not in service | Invalid: disputed |
An assistant can build the summary sheet for you, which is a good use of the ChatGPT Excel guide if formulas are new to you. Describe the columns and ask for formulas, not for the answer:
My lead log is on a sheet called Log. Columns: A lead ID, B date, C job type, D lead fee, E reached (Y/N), F visit (Y/N), G won (Y/N), H invoice value, I gross profit.
On a sheet called Summary, with job types listed in A2:A6, write formulas for: leads, total fees, jobs won, win rate, fees per won job, gross profit, and gross profit minus fees. Use COUNTIFS and SUMIFS. Say what each formula does in one line.
A sensible result looks like this, and it is worth testing on five rows you can add up by hand:
B2 =COUNTIFS(Log!C:C,A2) leads
C2 =SUMIFS(Log!D:D,Log!C:C,A2) fees
D2 =COUNTIFS(Log!C:C,A2,Log!G:G,"Y") jobs won
E2 =IFERROR(D2/B2,0) win rate
F2 =IFERROR(C2/D2,"none won") fees per won job
G2 =SUMIFS(Log!I:I,Log!C:C,A2) gross profit
H2 =G2-C2 gross profit minus fees
Check the first row against your hand count, then fill down. The usual fault is spelling: if the log says "Blocked drain" on one row and "Drain blocked" on another, the summary counts them as two job types, so settle on a fixed drop-down list for the job type column before you start.
A four-van firm's month: repair leads against replacement leads
Take a four-van plumbing and heating firm in the middle of a busy month. Every figure below is illustrative. It buys 40 leads, 30 for repairs (drains, leaks, water heater faults) and 10 for replacements (boiler, furnace or air conditioning). Handling a lead costs about $6 of phone and admin time, and each visit or estimate costs $70 in labour and van time.
| Repair leads | Replacement leads | Both | |
|---|---|---|---|
| Leads bought | 30 | 10 | 40 |
| Average fee | $38 | $78 | |
| Lead fees | $1,140 | $780 | $1,920 |
| Reached / visits | 21 / 12 | 8 / 6 | 29 / 18 |
| Jobs won | 6 | 1 | 7 |
| Win rate (won ÷ leads bought) | 20% | 10% | 17.5% |
| Gross profit per won job | $216 ($450 at 48%) | $2,100 ($7,000 at 30%) | |
| Handling ($6 a lead) | $180 | $60 | $240 |
| Visits ($70 each) | $840 | $420 | $1,260 |
| Total cost | $2,160 | $1,260 | $3,420 |
| Gross profit won | $1,296 | $2,100 | $3,396 |
| Result | -$864 | +$840 | -$24 |
| Cost per won job, fee only | $190 | $780 | $274 |
| Cost per won job, all-in | $360 | $1,260 | $489 |
Look at the last column first. The firm is $24 down on the month, which feels like a shrug. A firm that tracked only the fee per won job would see $274 against a $3,396 gross profit and conclude Angi was healthy. The split tells a different story: repair leads lost $864 and replacement leads made $840.
The break-even test agrees. Repair leads cost $72 all-in ($2,160 over 30), so at $216 gross profit per win they need a 33% win rate and achieved 20%. Replacement leads cost $126 all-in, so against $2,100 they need 6% and achieved 10%. One caution: a single replacement win is a thin sample, and one more or fewer swings that rate by ten points. Treat the result as a reason to look closer, then wait for 30 leads in the category.
Gross profit on the first job is also not the whole value. A repair customer who later buys a maintenance plan or a replacement is worth more, so track repeat revenue per source for twelve months and keep it as a separate line rather than folding guesses into the first-job maths.
Which job types need which win rate
A second illustration makes the point without the firm's month. Hold the all-in cost of a lead at $80 (fee, phone time and a share of visit cost) and see what win rate each job type needs to break even on gross profit. The invoice sizes and margins are placeholders; swap in your own from the last six months of invoices.
| Job type | Invoice | Margin | Gross profit | Break-even win rate |
|---|---|---|---|---|
| Blocked drain | $320 | 55% | $176 | 45% |
| Tap or toilet repair | $260 | 55% | $143 | 56% |
| Air conditioning repair | $520 | 50% | $260 | 31% |
| Water heater replacement | $1,900 | 35% | $665 | 12% |
| Furnace or AC replacement | $7,200 | 32% | $2,304 | 3.5% |
Compare each figure with the win rate your own log shows for that job type. Where the rate needed exceeds the rate achieved, the job type loses money at that fee, however busy it keeps the phones. A firm that does both plumbing and heating can sit on both ends of this table at once, which is why logging by category matters more to you than to a single-trade firm.
Counting "booked" as "won", and other ways the maths goes wrong
- Booked is not won. In the firm above, 18 visits were booked from 40 leads, which looks like a 45% win rate. Seven jobs were won, which is 17.5%. Use the second figure.
- Averaging across job types. The blended -$24 hid a loss and a profit. Always split by category.
- Leaving out your own time. $240 of handling and $1,260 of visits was 44% of the firm's total cost. Fee-only maths ignores nearly half.
- Judging on ten leads. Wait for 30 per category and three months of trading.
- Paying twice for one homeowner. If the same phone number appears on two leads, flag the second as a duplicate when you log it, since it may be challengeable later.
The all-in cost per lead is also where a visit fee changes the answer. If you charge for the first visit, visits stop being a pure cost; the tutorial on building a service call fee from your costs shows how to set one.
A follow-up routine you can run from a phone
Speed and persistence are the two things in your control, and the routine below needs no software to start. Treat the timings as targets to test, not as rules Angi sets.
| When | Action | Channel |
|---|---|---|
| Within 5 minutes | Call; if there is no answer, text one question that moves towards a booking | Phone, text |
| Within the hour | Second call; email with two time slots | Phone, email |
| That evening | Third attempt offering next morning | Text |
| Day 2 | Last call attempt; voicemail naming the job | Phone |
| Day 4 | Closing message: "reply any time" | Text |
| Day 10 | Record the reason lost | Log only |
AI earns its keep on the texts. Ask for short, job-specific first messages once, store them as phone snippets, and a person sends them in seconds:
Write first-reply texts for a plumbing and heating firm answering a lead from an online request. Four job types: blocked drain, water heater leaking, no heating, air conditioning not cooling. Each under 40 words, friendly, one question that helps us book, no prices, no arrival promises, signed [your name] at [company]. Use [first name] for the homeowner.
An illustrative result for the first two:
Hi [first name], it's [your name] at [company]. I've seen your request about the blocked drain. Is it one sink or is water backing up through the house? I can send someone this afternoon between 2 and 4 or tomorrow morning.
Hi [first name], [your name] at [company] here about your water heater. Is water still coming from the tank, or has it stopped? Tell me and I'll work out the quickest slot for you.
What I would fix: delete any line that sounds like a promise ("same-day guaranteed"), make sure each text asks exactly one question, and add whatever opt-out wording your adviser says your texts need, because texting rules differ by place and by how the homeowner asked to be contacted. Words such as flooding, burst, no heating in winter or any gas smell should send the lead to a person on the phone straight away; the emergency-call tutorial covers how to set that up if an AI answers.
What the follow-up routine costs to run
The manual version costs nothing beyond a chat assistant, which is about $20 a month on an individual plan. Automation costs more. These are list prices from the vendor pages, in USD.
| Option | Monthly cost | What it does | Limit |
|---|---|---|---|
| Phone snippets plus an AI assistant | $0 to about $20 | Drafts texts; you send them | Only as fast as you are |
| Jobber Connect | $99 for one user on annual prepay; $139 month to month | Automatic follow-up by email or text after a quote | Follows quotes, not new leads; Core lacks it |
| Jobber Receptionist add-on | $29, covering 30 conversations, then $0.79 each | Answers calls and texts when you are on a job | Needs escalation rules for emergencies |
| Housecall Pro Essentials | $149 annual billing, $189 monthly, five users | Scheduling, estimates, invoices; AI team members on every plan | CSR AI is sold separately and the page shows no price |
| ServiceM8 AI Writing Helper | $29 to $149 by job count; helper on every plan | Drafts emails and texts to clients; Office Agent Pro ($39 on paid plans) follows up quotes, with your approval | Job limits per plan; Free allows 10 assists a day |
One more condition: automation can only act on a lead that reaches an inbox or tool you control. If your leads arrive only inside an app, find out whether any export or integration exists before you buy anything. For after-quote chasing, which is where Jobber Connect helps, the HVAC replacement quote follow-up sequence has the wording.
What better follow-up does to the repair numbers
Suppose the routine lifts the repair leads reached from 21 to 25 and the wins from 6 to 8. That is a target to test, not a forecast. Visits rise from 12 to 15, so visit cost goes from $840 to $1,050 and total cost to $2,370. Gross profit is 8 × $216 = $1,728. The result improves from -$864 to -$642, and all-in cost per won job falls from $360 to about $296.
Notice what did not happen. Better follow-up saved $222 and still left repair leads losing money, because a $450 job at 48% cannot carry a $72 all-in lead. The levers that move the answer sit elsewhere: a minimum charge, a visit fee, accepting fewer low-value job types, or capping repair-lead spend until the log shows a better rate. Follow-up improves the win rate; it cannot change what a drain job earns.
Sorting lost leads so you can see why you lose
Free-text notes like "no ans" and "went cheaper" are useless in a pivot table. Paste ten days of notes, with no names or numbers, and ask for fixed categories:
| Note as typed (illustrative) | Category |
|---|---|
| no ans x4 | Never reached |
| went w someone cheaper | Lost on price |
| just wanted a ballpark | Price shopper |
| wrong # | Invalid lead |
| other firm got there first | Lost on speed |
| couldn't fit before Friday | Capacity |
Use six categories at most and let the assistant place each note in one of them, then scan the output for a mistake before it goes into the log. "Lost on speed" is the one that justifies the routine above; if it is a large share, your follow-up is the problem. "Never reached" and "Invalid lead" belong in the next section.
Disputing leads that were never real
Angi's current lead-credit rules and time limits sit in your pro account, which I could not see, so read that section first. What does not change is the evidence. For each lead you challenge, keep the lead ID and time received, every call and text attempt with times (screenshots of the call log are enough), and a one-line reason. Reasons that usually fit the category: a disconnected or wrong number, a duplicate of a lead you already paid for, a job outside your service area, a job type you do not do, or a homeowner who says they never asked for service. Check which of those Angi's terms name.
Ask an assistant to turn your notes into a short, factual message. An illustrative version for lead A-1044 from the log above:
Lead A-1044, plumbing, received Wednesday at 15:30. We called at 15:34 and 15:52 and texted at 15:36. The number returned "not in service". Screenshots of the call log are attached. Please review this lead for credit.
Track the share you challenge. If more than about one lead in five turns out invalid, that is a conversation to have with your account contact and a reason to tighten service area and job-type settings, not a reason to send more disputes. For the Google equivalent, the plumber's evidence pack for disputing local services leads works from the same habits.
A 90-day test with a stop rule
- Month 1: log only. Record every lead with the six columns. Change nothing, so you have a baseline.
- Month 2: add the routine. Start the five-minute call and text, the snippets and the lost-reason categories. Keep logging in the same way.
- Month 3: compare by category. Work out win rate, all-in cost per won job and result for repairs and replacements separately.
In month 3, add one more cut: group the leads by minutes to first contact (under 10, 10 to 60, over 60) and compare win rates. If your data shows no difference, do not pay for speed tools. If the under-10 group wins clearly more, you have a business case for automation or an AI receptionist in your own numbers instead of a vendor's. Groups of fewer than 15 leads say very little, so merge them if you need to.
Then apply a stop rule written in advance. A category is worth keeping if its result is positive after at least 30 leads, and comfortable if all-in cost per won job is under half the gross profit per won job. That 50% margin of safety is my rule of thumb, not Angi's. If a category is negative for two months running after the routine is in place, cap its spend or pause it. Run the same log for any other source, such as your own website or a Google ads campaign, and compare like with like; the plumbing lead sources cost per job tutorial shows how.
Questions plumbers and HVAC owners ask about Angi leads
Can I get my money back for a bad Angi lead?
Credit and dispute rules sit in your own Angi pro account, so read that section before you rely on one. Whatever the rules say, build an evidence file for each lead you challenge: time received, every call and text attempt with times, and why the lead was invalid. A lead that was real but simply unprofitable is rarely a refund case.
How many leads do I need before I can judge Angi?
Aim for at least 30 leads in each job category before you trust a win rate, and look at three months of results. With only 10 leads, one extra won job moves the rate by ten points. Judge repairs and replacements separately, because they carry very different gross profit per job.
Can AI reply to Angi leads automatically?
Only if the lead details reach an inbox or tool you control, and you should check Angi's terms before automating messages. A safer start is AI-drafted text snippets that a person sends within minutes. Keep price talk, arrival promises and emergency calls with a human, whatever you automate.
Is a $40 lead cheap or expensive?
Neither, until you know the break-even win rate: all-in cost per lead divided by gross profit per won job. Say phone time and a share of visit costs add $48, making $88 all-in. On a $2,000 gross-profit replacement that breaks even at about 4.4%. On a $150 gross-profit repair it needs nearly 59%, which few firms reach on any lead source.
Further reads
- Handyman Leads: Thumbtack, Angi and Bark Compared on Cost per Booked Job — The same cost-per-booked-job maths across Thumbtack, Angi and Bark.
- How Much Do Missed Calls Cost a Heating and Cooling Business? — What unanswered calls cost a heating and cooling firm.
- Housecall Pro CSR AI vs Jobber's AI Receptionist: Which Suits a Plumber? — Two AI phone answerers compared for a plumber.
- HVAC Lead Generation: AI Call Tags Show Which Sources Book Replacements — Compare HVAC lead sources for replacements and repairs.
- AI Marketing Agency for Contractors: What to Pay and What to Ask — Published agency prices, the ChatGPT do-it-yourself bill, a worked lead audit and the contract and reporting terms a contractor should insist on.
- Carpet Cleaning Leads: Buy Them or Reply Faster With AI? — A worked cost-per-booked-job comparison of paid carpet cleaning leads against replying to your own enquiries in minutes, with reply templates.
- Deck Builder Leads: What They Cost and How to Reply Fast With AI — Work out the most a deck lead can cost you, compare Thumbtack, Bark, Angi and your own site by cost per booked visit, and reply in minutes with AI drafts.
- Garage Door Leads: Qualify and Answer Them Faster With AI — A fixed first reply, AI-drafted triage, duplicate checks and a cost-per-booked-job table that shows whether bought garage door leads are worth the money.
- How Much Does Bark Charge for Leads? Credits, Cost per Job, AI Replies — What Bark charges per lead, how to turn credits into a cost per job won, and a reply routine with AI that keeps that number down.
- MyBuilder vs Checkatrade for Plumbers: Cost per Job, With AI Replies — How MyBuilder and Checkatrade bill, one month costed per job won on both, and a six-week test of whether faster AI-drafted replies pay.
- Pest Control Lead Generation Tools Compared: Cost per Booked Job — A worked month comparing seven pest control lead sources on cost per booked job, plus what call tracking and AI text-back add and cost.
- Solar Lead Generation: Cost per Lead, Cost per Survey and AI Follow-Up — A sample month of 100 shared solar leads, with and without a two-minute AI first reply, and the break-even uplift for different lead budgets.
- Tree Service Leads: Paid Leads vs Answering Every Enquiry Fast — Work out whether Thumbtack, Angi or Bark leads beat replying faster to your own enquiries, with a worked tree-job sum and instant reply scripts.
- Workiz Genius AI: Which Add-Ons Are Worth It for HVAC or Plumbing — Break-even sums, test calls and rep questions for each Workiz Genius add-on, written for HVAC and plumbing firms deciding what to pay for.
- AI Tools and AI Development: The Complete 2026 Guide — the AI hub, including every tutorial in the AI-for-business series.
Sources: Jobber, Housecall Pro and ServiceM8 pricing pages read in October 2026; Angi's quarterly filings and Q4 2025 earnings release; its Q1 2025 shareholder letter as quoted in search results and a transcript of its Q3 2025 earnings call, because Angi's pro, help and investor pages blocked automated reading.