BrandLyft
  • Home
  • Services
  • Who We Serve
  • Development
  • Proof
  • Resources
Book a Call
BrandLyft

GoHighLevel architecture, deployment, and marketing for multi-location businesses.

Services

  • Revenue System Build
  • GoHighLevel for Franchises
  • GoHighLevel Partner
  • CRM & App Development
  • Enterprise GoHighLevel
  • Integrations
  • Speed to Lead
  • Nurture & Winback
  • Reputation Engine
  • AI Voice Solutions
  • AI Live Chat
  • AI Conversational Bot
  • Paid Ads Management
  • SEO Services
  • LLM Search / AI SEO
  • Web Design

Development

  • Development Overview

Company

  • Home
  • About Us
  • All Services
  • Who We Serve
  • Proof & Results
  • Guides & Playbooks
  • Templates
  • Newsletter
  • Podcast
  • Book a Call

Contact Us

PO Box 4381Cartersville, GA 30120
team@brandlyft.io

Ready to Grow?

Book a free discovery call and let's create your growth plan.

Book a Free Call
Certified Partner
Meta Business Partner
Certified Partner
Partner Badge
Certified
Partner

© 2026 BrandLyft Marketing. All rights reserved.

Privacy Policy•Terms of Service•Cookie Policy
Home/Blog/GoHighLevel
✍️GoHighLevel✍️Home Services✍️Lead Generation

Are Angi Leads Worth the Cost? Track What Won Jobs Actually Earned

Paul @ BrandLyftOctober 14, 202611 min read
Are Angi Leads Worth the Cost? Track What Won Jobs Actually Earned

The estimator got the job. In GoHighLevel, the opportunity is marked Won, with a $4,800 value beside it. That looks like a good outcome for a lead the company paid to receive. But the work may still be on the schedule, the final invoice may be different, and nobody has checked what it cost to complete.

This is where Angi lead ROI for contractors becomes a different question from lead response or estimate booking. A won estimate can be good news. It cannot tell you whether the Angi lead was profitable. To answer that, the original charge needs to meet the completed-job record and the actual financial result.

BrandLyft’s Angi and HomeAdvisor lead follow-up guide covers what happens from a paid inquiry through the estimate process. Here, the estimate decision is already recorded. We need to find out what the business earned, what it spent, and which numbers are still unconfirmed.

Go straight to the paid-lead profitability worksheet if your Angi charges and job records are ready.

A Won opportunity is not the same as a completed, paid job

HighLevel’s Lead Source Report, updated October 6, 2026, groups opportunities by their recorded source, status, and value. It lets a user open the underlying opportunity records and see missing sources. That is useful when a contractor wants to know what happened to the inquiries coming from Angi.

But the report counts opportunities, not unique purchased lead charges. One customer with three opportunities can appear three times. And an opportunity value might have come from the initial estimate, a salesperson’s update, or an automation. HighLevel’s own reporting FAQ says that its dashboard revenue based on Won opportunities is the sum of their monetary values, not the payments actually received.

A contractor needs three different confirmations after marking a deal Won. Did the customer accept the scope and price? Was the job completed and its final revenue recorded? How much was collected, and what did the work actually cost?

Those facts may live in field-service software, invoicing tools, payroll records, or the accounting system. A CRM report can point you toward the jobs. It does not automatically settle the accounts.

Start with charged Angi leads, not every marketplace record

Before calculating cost per won job, count what the contractor actually paid for. In Angi’s current terminology, an Opportunity is a homeowner project the pro can review. A lead is a connection that supplies contact details and may trigger a fee. The billing arrangement depends on how the business receives leads and on its account terms. A GoHighLevel opportunity is a separate CRM sales record.

Those distinctions were important to intake in the earlier article. Here they matter for a narrower reason: the denominator for paid-lead economics must reflect charges, not the number of GHL opportunities, contact profiles, or marketplace projects someone opened.

Angi’s billing guidance says lead pricing varies by task, location, and demand. Subscription and pay-per-lead arrangements also have different billing patterns. Pull the actual statement for the period. Do not multiply lead count by a supposed average Angi price from another contractor’s article.

A delivery can also reach your CRM more than once without creating another charge. Angi’s partner API reference describes a unique lead ID, leadOid, a service request ID, srOid, and a fee field. It also documents delivery retries when an endpoint fails. The available integration data may differ by connection, so check your receiving records rather than assuming those fields were preserved.

Keep the billed lead and its source identifier once. A second webhook delivery should not create a second purchase in the profitability worksheet. If Angi actually billed the same lead twice, preserve both billing lines and investigate the credit separately; hiding the second charge as a technical duplicate would understate spend.

If the source IDs never reach your CRM, BrandLyft’s earlier Angi integration guide explains the receiving connection. The financial check here needs those purchases and their charges to remain traceable after the first handoff.

Match one lead to its jobs without multiplying the customers

A person may call about gutter work in March and buy a roof repair in July. That’s one contact with different service requests. Another homeowner may accept an estimate that turns into two separately billed jobs. The financial record has to handle both situations without inventing more leads or more customers.

The matching rule should start with the paid lead identifier, the original service request, and the GHL opportunity ID. When the estimator records acceptance, add the actual job ID from the system that controls scheduling and billing. Save that relationship even if the office later renames the opportunity or the customer returns for different work.

Where one paid inquiry leads to several genuine jobs, link each job to the original lead, while keeping the lead fee only once. If two different paid inquiries may have influenced the same job, mark the attribution as disputed. Pick a documented primary attribution rule or a clearly identified allocation method before assigning revenue. Counting the full job under both leads would make the channel look twice as productive.

There will be imperfect matches. Some job systems have no Angi lead ID, and a technician may open a fresh customer profile. Use the address, job reference, contact history, and acceptance paperwork to investigate. Mark the link Verified, Probable, or Unknown. That last category is a reporting gap, not a zero-dollar job.

Subtract only credits you can actually support

A paid lead that does not turn into work is not automatically eligible for a credit. Angi’s lead-credit guidance describes possible reviews for problems such as invalid contact details, service mismatches, wrong locations, or duplicate charges. It also excludes ordinary outcomes such as a homeowner choosing another contractor. Eligibility and deadlines depend on the current account rules.

Separate the stages in your cost record. A requested credit is not an approved credit. An approved credit is not necessarily cash refunded. Angi says issued credits are applied toward future lead charges, with expiration conditions. Subscription accounts have different treatment.

For financial reporting, record the original fee, credit status, credited amount, and when that value was actually applied. Attribute it to the original charged lead only once, while retaining the later statement where the credit appeared. Otherwise you might subtract the same adjustment from the old lead cohort and again from next month’s purchase total.

Include any fixed Angi account expense or other directly attributable acquisition charges under a documented allocation rule. A contractor with a subscription should not treat a nominal per-lead field as the whole channel cost if other required fees were paid.

What the job record must prove after the estimate is accepted

Once a job is sold, the opportunity value becomes a reference point. It is not the final number to place in a profit calculation.

Take a quoted roof repair worth $4,800. The scope changes after work begins, and the final customer invoice is $5,150. The crew uses $2,100 in materials, $1,350 in direct labor, and $300 in subcontractor costs. Before other direct job expenses, that leaves $1,400 of job gross profit based on the final revenue figure, assuming the revenue is properly recognized.

That example still says nothing about whether the customer paid the invoice. Nor does it include the cost of obtaining the lead. If the finance team cannot establish the job’s actual direct costs, the gross-profit field should remain unverified instead of quietly treating missing costs as zero.

For each matched job, record its accepted date, completion date, final invoice, recognized job revenue, cash collected, and direct job costs. Direct costs normally include job labor, materials, subcontractors, and other costs directly attributable to doing that job under the business’s accounting method. Keep lead purchases and related acquisition costs separate. Those are subtracted after job gross profit to show what remains from the lead cohort before other overhead and taxes.

This is also why a payment is not interchangeable with revenue. A deposit may arrive before completion. An invoice may remain unpaid after a completed job. Track both, and have whoever owns the books confirm which amounts count as recognized revenue.

A worked example: 20 charged leads, five finished jobs

The figures below are hypothetical. They are not BrandLyft client results or Angi pricing benchmarks. In this example, each paid lead has a final estimate disposition, and every won job is completed. One invoice is not yet fully collected.

Cohort measure Hypothetical result
Charged Angi leads 20
Original lead fees (20 x $75) $1,500
Two confirmed, applied $75 credits -$150
Net lead spend $1,350
Qualified estimates completed 8
Won jobs, all subsequently completed 5
Recognized revenue from completed jobs $14,500
Cash collected so far $13,000
Verified direct job costs $9,300
Job gross profit $5,200
After net lead spend, before other overhead and taxes $3,850

Cost per qualified estimate is $1,350 divided by eight, or $168.75. Cost per won job is $1,350 divided by five, or $270. Those denominators include the cost of unsuccessful purchased leads. Using only the five leads that won jobs would make acquisition appear much cheaper than it was.

The $5,200 job gross profit comes from $14,500 in recognized revenue minus $9,300 of direct job costs. Subtracting the $1,350 in net acquisition spend leaves $3,850 before other operating costs and taxes. That is an acquisition-adjusted contribution, not the company’s final net profit.

There is still $1,500 in revenue not collected in this example. The recognized-revenue calculation and the cash position therefore tell different stories. Before spending more on Angi, review that unpaid balance. The projected financial result is not cash already available.

Don’t compare fresh leads with jobs that have had time to finish

Roofing jobs bought through October leads may not finish until November. Remodeling estimates can also take weeks to turn into firm decisions. If you divide October charges by only October’s completed work, the source may look poor simply because the jobs have not had time to close.

Group purchases by the date the charged lead arrived. Then follow each cohort through estimate, acceptance, completion, and collection. Show the reporting as-of date, the number of still-open jobs, and the number of completed jobs with missing cost or payment evidence.

Partially installed kitchen cabinets with unfinished toe-kick trim and installation materials in a residential remodeling project.
A purchased lead can turn into real work before the job is finished. Profitability comparisons need to account for jobs that have not yet reached a verified financial outcome.

Compare cohorts at equivalent maturity, such as the same number of days after lead delivery, or wait until each cohort is sufficiently resolved. The appropriate window depends on the trade and its real job cycle; no universal 30-, 60-, or 90-day cutoff can make slow projects instantly comparable.

Also compare like with like. A set of emergency pest-control jobs and a set of full roof replacements may carry very different margins and delays. Service type, territory, and billing arrangement can explain differences that a single Angi-wide total conceals.

Contractor Paid Lead Profitability Worksheet

Start with one line per billed lead and a separate line for each real job. Keeping those ledgers apart prevents the same lead fee from being repeated every time one customer buys another service.

Paid-lead ledger Completed-job ledger
Lead ID, service-request ID, arrival date and trade Job ID and linked source lead ID
Actual billed fee and account-cost allocation Estimate acceptance and completion dates
Credit status, credited amount and application date Final invoice and recognized job revenue
Qualified estimate result and GHL opportunity ID Cash collected and any amount still due
Original source, match confidence and exceptions Direct job costs, gross profit, source confidence and lead-to-job lag

A completed row should let someone open the original Angi charge, the corresponding estimate, the job record, and the payment evidence. Use the same lead ID on the job ledger only when the link is supportable. Leave uncertain matches flagged for investigation.

From the completed records, calculate net acquisition spend, cost per qualified estimate, cost per won job, verified completed-job gross profit, and the amount remaining after acquisition expense. Publish those numbers with the cohort window and exclusions. This worksheet is an operating method, not a claim that HighLevel natively reconciles all those systems.

What to do when a source looks expensive

A poor result does not always mean every Angi lead should be stopped. The place where the numbers go wrong matters.

If valid paid inquiries rarely receive a completed estimate, check contact attempts and estimator coverage before making a profitability judgment. Those leads may be losing their chance long before pricing becomes relevant. If estimates are completed but rarely accepted, review trade fit, quoting, and sales follow-through.

Another possibility is that jobs sell but leave little gross profit. That calls for looking at job scope, quoted prices, direct costs, and the types of projects being purchased. More aggressive follow-up will not repair a consistently underpriced job.

When certain trades or ZIP codes repeatedly show weak financial results, restrict the lead types or areas you buy and measure the next completed cohort. If the data is incomplete, repair the source-to-job link before treating an absence of recorded profit as proof of a loss. And if the channel still fails an appropriate margin test after the reporting and sales issues are understood, stopping or reducing spend is a reasonable business decision.

Follow the fee past the Won column

At the estimate stage, the question is whether the business can turn a purchased inquiry into a real opportunity. After the job closes, it changes. Which Angi charges produced work, which jobs were completed, what did those jobs earn, and how much of that money was actually collected?

GoHighLevel can help identify the original opportunity and the recorded source. A completed-job and finance record must supply the rest. Once those records meet, the contractor can decide whether to keep buying the same lead types, change the follow-through, or put the money somewhere else.

Before the next Angi purchase

You have the Won count. Can you prove the profit?

An Angi charge, a finished job, and the payment record should point to the same work. When that trail stops at a CRM opportunity, it may be time to review how your systems exchange the result.

PAID LEAD JOB RECORD PAYMENT + COSTS

Discuss lead-to-job tracking

Want to see the implementation approach first? Explore Revenue System Build.

Back to BlogShare this article
📚Keep Reading

Related Articles

When a Franchise Changes a KPI Definition – How to Keep GoHighLevel Reports Comparable
Franchises

When a Franchise Changes a KPI Definition – How to Keep GoHighLevel Reports Comparable

A franchise changes what counts as a booked appointment. Last month’s report uses the old rule; this month’s uses the new one. See how to record the change, tes

October 13, 2026Read more →
GoHighLevel for Medical Weight Loss Clinics: From Inquiry to Clinic Handoff
Automation

GoHighLevel for Medical Weight Loss Clinics: From Inquiry to Clinic Handoff

Medical weight loss clinics can use GoHighLevel for lead capture, ownership, consultation booking, reminders, no-show recovery, and reporting while keeping clin

October 6, 2026Read more →
A GoHighLevel Funnel Domain Move Is More Than a DNS Change
GoHighLevel

A GoHighLevel Funnel Domain Move Is More Than a DNS Change

DNS can resolve while forms, booking paths, redirects, ads, tracking, or indexed URLs still point at the old domain. Test the visitor journey before the old pat

September 17, 2026Read more →

Ready to Grow Your Revenue?

BrandLyft builds done-for-you marketing systems that generate leads, automate follow-up, and turn prospects into paying clients — on autopilot.

Book a Free Strategy Call