Firmkit

Find the lead source that pays you back

Divide what you spend on each source by the jobs it won, not by the leads it sent.

Results are free and run in your browser. An email adds the full plan.

Lead source ROI

firmkit.co/tools/lead-source-roi-calculator/ · Oct 19, 2026

Example numbers, not yours.

    Fields start with round example numbers. Replace them with yours.

    Your margin
    40%

    After materials and direct labor. Use your own books.

    Your lead sources

    Up to eight. Use one month, or a quarter, but the same period for every row. Spend is cash you paid for the source. Jobs won are jobs that came from it. Leave spend at 0 for a free source such as referrals.

    Your calculation, step by step
    1. Google Ads$1,200 spent, 40 leads, 12 jobs. Per lead $30.00. Per job $100. Revenue 7.5x spend. Profit $2,400.
    2. Local Services Ads$600 spent, 18 leads, 7 jobs. Per lead $33.33. Per job $86. Revenue 8.7x spend. Profit $1,480.
    3. Referrals$0 spent, 15 leads, 9 jobs. Per lead $0.00. Per job $0.00, free. Profit $2,720.
    4. Facebook ads$400 spent, 8 leads, 1 job. Per lead $50.00. Per job $400. Revenue 1.5x spend. Profit -$160. Too few leads to compare.
    5. Total$2,200 spent, 81 leads, 29 jobs, revenue $21,600 x 40% margin = $8,640, less spend = $6,440.

    Get the full plan by email

    Opens on this page the moment you press the button. Print it, save it, or mail a copy to yourself from there.

    Your table, best and worst source and total stay free above.

    • A side-by-side table of every source
    • A what-if: move some spend from the worst source to the best
    • A printable copy for your partner or CPA

    Enter your own numbers first.

    The table and plan need JavaScript, because they are built in your browser. Nothing is sent anywhere without it.

    Made with firmkit.co/tools/lead-source-roi-calculator/. A planning aid, not accounting or legal advice.

    Details

    How the numbers are worked out

    The formula, in words

    Cost per lead = spend / leads. Cost per job = spend / jobs won

    Revenue / spend = revenue / spend. Profit = revenue x gross margin - spend

    Totals add every row. Best and worst are the lowest and highest cost per job among rows with spend, jobs and at least 10 leads

    If jobs are more than leads, jobs are capped at leads and the row says so

    A source with no spend is free, so its cost per job is zero. That makes it look best, which is not a fair comparison, so the ranking skips it. A row with under 10 leads is too small to trust, so it is flagged and also left out.

    What the tool cannot know

    • Phone calls and word of mouth that you did not track back to a source.
    • Customers who saw two sources before they called.
    • Returns that shrink as you spend more on one source.
    • Lifetime value. A first job understates a customer who comes back for years.

    Every assumption, and who set it

    AssumptionValueSet by
    Spend, leads, jobs and revenue for each sourceYour numbersYou
    Gross margin40% as an exampleYou, from your books
    Small sample lineUnder 10 leadsFirmkit
    What-if share to move25%You

    Sources

    • No outside statistic is used. Every figure is computed from the numbers you enter. The 10-lead line is our rule of thumb for a sample too small to trust, and a planning aid, not accounting or legal advice.

    Source check

    • Outside statistics. None used on this page

    Questions people ask

    How do I track where my leads come from?

    Ask every caller how they found you and write it in one place, along with the date. Use a separate tracking number for each paid source if you can. Tag form leads with the page they came from. Count jobs won, not leads alone. Even a simple tally sheet beats guessing.

    What does revenue divided by spend tell me?

    It shows how many dollars of revenue each dollar of spend brought in. A source at 4 to 1 brought in four dollars of revenue for every dollar you spent. It ignores your margin, so also look at profit. A high ratio on a tiny sample can mislead, so check the leads count.

    Why are phone calls hard to attribute?

    A caller may have seen your ad, then your Maps listing, then called from a truck. The phone system only records that a call came in. Ask each caller how they found you, and write it down. Tracking numbers per source help. Never assume that an untracked call came from the source you pay for.

    What is a sample that is too small?

    A source with only a few leads can show a great or terrible cost per job by luck. One extra job swings the number. We flag a row under 10 leads as too few to compare and leave it out of best and worst. That line is our rule of thumb, and you can ignore it.

    How should I treat free sources like referrals?

    List them with spend of 0. They show jobs and revenue, which is useful, but their cost per job is zero, so the ranking skips them. Do not cut paid sources because a free one looks better. Free sources do not scale on demand, and your time still counts.

    Fix the free things first

    The 60‑second audit looks at your site, your Google profile and your follow-up. Your score shows without an email.