Marketing attribution template for contractors

Track which lead sources actually produce booked jobs and revenue, not just calls. This template maps every channel from Google Ads to call tracking to your CRM booking data so you can shift spend toward what works and stop paying for clicks that never pick up a phone.

By Datacube content engineAutogeneratedJune 24, 2026

Free template

Most contractors know what they spend. Few know what each channel actually books.

Picture a typical HVAC owner reviewing the monthly ad report. Google Ads: $8,400 spent. The agency says impressions are up. But the CRM shows 61 booked jobs for the month, and nobody can tell you how many of those came from Google, from the Yelp listing, from the neighborhood mailer, or from the referral network. So every channel gets renewed, and the one that is quietly booking 40 jobs for $60 a pop stays buried inside an average. A marketing attribution template for contractors fixes that. It connects each lead source to the jobs it produced and the revenue those jobs generated, so spend decisions rest on booking data, not ad-platform click counts. This page gives you the full template layout, a filled-in channel example, a step-by-step guide, and the point at which a manual spreadsheet stops being enough. Examples throughout are illustrative; your own channel mix, booking rates, and revenue per job will vary.

Warning

Data visibility gap: ad platform clicks are not booked jobs

Google Ads reports impressions, clicks, and form submissions. Your CRM reports booked calls and closed jobs. Between the click and the calendar there is a booking rate, an abandonment rate, and sometimes a CSR who books calls from three different channels into the same job type. Without a template that bridges both systems, you are measuring marketing by the metric that flatters it, not by the revenue it creates.

Build it in a spreadsheet

The marketing attribution template layout

Recreate this layout in a spreadsheet with one row per lead source. The goal is a single view of every channel: what it cost, how many leads it sent, how many of those turned into booked jobs, what revenue those jobs produced, and the cost per booked job. That last column is the one that earns its keep: it translates impressions into dollars and reveals the cheapest channel for actual work booked.

  • Channel: the lead source name, written consistently so it matches your CRM and call tracking (Google Ads, LSA, Yelp, HomeAdvisor, Referral, etc.).
  • Spend: total dollars paid to that channel in the period (ad budget, listing fees, mailer cost).
  • Leads: raw inbound contacts attributed to that channel (calls, forms, chat).
  • Booked jobs: leads that became a scheduled job in your CRM.
  • Booking rate: booked jobs divided by leads; the efficiency signal between spend and output.
  • Revenue: what those booked jobs produced after the work closed.
  • Cost per booked job (CPBJ): spend divided by booked jobs; the single number that ranks channels by real productivity.
See attribution live in a datacube marketing boardSpreadsheet layout (copy the column headers below)
Spreadsheet layout (copy the column headers below)

Attribution formula

Cost per booked job = channel spend / booked jobs from that channel

Run this formula for every channel in the same reporting period. The result ranks your marketing by the one output that matters to an operator: jobs on the calendar. A channel with a low click cost but a poor booking rate can cost more per booked job than a channel with a high click cost and a strong CSR conversion. The formula surfaces the difference.

Use the same date range for spend and booked jobs. Multi-touch attribution (one customer touching multiple channels) requires a judgment call; for most home-service companies, last-touch attribution by call tracking or form source is a practical starting point.

Attribution template columns and what to put in each

ColumnSource of the dataWhy it matters
ChannelYour ad platforms, call tracking tags, and CRM lead-source fieldConsistent naming is the whole game; one spelling per channel across every system
SpendAd platform billing, listing invoices, or mailer cost for the periodIncludes agency fees if you outsource that channel; otherwise CPBJ is understated
LeadsCall tracking system or ad platform form count, filtered by channel tagCount only bookable contacts; spam, existing customers calling back, and internal calls distort the rate
Booked jobsYour CRM, filtered by lead source and booking dateThis is the bridge between marketing and operations; if your CRM does not store lead source, attribution is guesswork
Booking rate (%)Booked jobs divided by leads, calculated in the templateA low booking rate can mean a weak channel or a CSR skill gap; knowing which requires the data to be separated
RevenueYour CRM or QuickBooks, summed for jobs attributed to that channelUse completed and invoiced jobs only; proposals that did not close are leads, not revenue
Cost per booked job (CPBJ)Spend divided by booked jobs, calculated in the templateThe ranking metric: lower CPBJ and higher revenue per job is the combination you want more of

Filled-in sample attribution report (illustrative, HVAC residential)

ChannelSpendLeadsBooked jobsBooking rateRevenueCPBJ
Google Ads (search)$5,800745169%$24,990$114
Local Services Ads$2,100383489%$16,660$62
Yelp$1,400221150%$3,850$127
Referral / word of mouth$0181794%$9,010$0
Door hanger mailer$8009667%$1,980$133

Info

Owner takeaway: the Local Services Ads row is the one to double

In the sample above, Local Services Ads produce a $62 cost per booked job with an 89% booking rate. Google Ads produce a $114 CPBJ at 69%. Both are acceptable numbers, but the LSA channel converts nearly nine in ten leads it touches. If that holds over two or three more months, it earns a larger share of the budget. Yelp and the door hanger sit above $125 CPBJ and below 70% booking rate: not automatic cuts, but the numbers that need a month-by-month review before renewal. This is the decision the template makes visible.

How to read channel health in the attribution template

There is no universal benchmark for cost per booked job; it varies by trade, market, seasonality, and average ticket. Use these signals to read relative health across your own channels. Mark each channel good, watch, or poor based on your targets, not industry averages.

  • CPBJ below your target and booking rate above 80%Protect this spend first. A high booking rate means the calls are qualified and the CSR team is converting them.
    Good
    Current
    Channel is efficient
    Target
    Company-set
  • CPBJ near your target but booking rate below 65%A dip in booking rate from this channel will push CPBJ above target quickly. Investigate whether the lead quality or the CSR handling is the issue before cutting spend.
    Watch
    Current
    Efficiency is fragile
    Target
    Company-set
  • CPBJ above target for two or more consecutive monthsTwo months is a pattern, not a blip. Either the channel quality has shifted, the market has gotten more competitive, or your offer is stale. A second month at poor is a decision point.
    Poor
    Current
    Channel underperforming
    Target
    Company-set
  • Lead source field blank in CRM for more than 10% of booked jobsYou cannot attribute what you cannot read. Missing lead source data makes the whole template unreliable. Fix the CRM field before adding more channels.
    Poor
    Current
    Attribution gap
    Target
    Under 5% missing

How to set up the attribution template, step by step

  1. 01

    List every active channel and assign a tracking tag

    Write down every way a new customer can contact you: paid search, LSA, Yelp, Facebook, HomeAdvisor, door hangers, truck wraps, referral. Assign a consistent label to each one. That label must match exactly across your call tracking system and your CRM lead-source field. Mismatched names are the most common reason attribution data is wrong.

  2. 02

    Set up call tracking by channel

    Most inbound leads for home-service companies are phone calls. A call tracking platform (like CallRail or similar) assigns a unique number to each channel so the source follows the call into your CRM. Without channel-level call tracking, all phone leads look the same and the attribution template is at best a partial picture.

  3. 03

    Pull spend and lead volume on the same cadence

    Monthly is the practical minimum for most channels. Use the same date range for spend and for leads: if your ad platform invoices on the 1st, pull booked-job data for the same calendar month. Mismatched periods create phantom CPBJ numbers that lead to wrong decisions.

  4. 04

    Count only bookable contacts in the lead column

    Strip out spam, existing customers calling about a warranty, and internal calls before you calculate booking rate. Unfiltered call counts inflate lead volume and deflate booking rate, making average channels look worse than they are.

  5. 05

    Calculate CPBJ and rank channels

    Divide each channel's spend by its booked jobs. Rank from lowest to highest CPBJ. The top of the list is where more budget earns the most jobs; the bottom is where you need a reason to keep spending. Review this ranking monthly and track the direction of each channel over time, not just the snapshot.

  6. 06

    Review out loud with your marketing lead and GM

    The attribution template is a conversation tool, not just a spreadsheet. Walk each channel row in your monthly marketing review: what changed, what the CPBJ trend is, and what the next decision is. A ranking nobody discusses is as useful as a report nobody opens.

Warning

When the spreadsheet template stops working

A manual attribution spreadsheet works until three things collide. First, you add a new channel mid-month and forget to backfill the tracking tag, so the next month's booked-job count is split between the new label and 'unknown'. Second, the person who owns the spreadsheet leaves or gets busy in peak season and the template goes three months without an update. Third, you open a second location and the channels overlap: one Google Ads account, two service areas, two CRM lead sources. At that point you are not tracking attribution, you are arguing about which tab has the right number.

What attribution looks like running in real time

A datacube marketing board consolidates lead source data from call tracking, your CRM, and connected ad platforms into a live view by channel. Instead of pulling the numbers manually each month, the attribution table updates as calls and bookings land. Figures below are illustrative; a real board is built around your channel mix, targets, and data sources.

Dashboard preview

Illustrative tiles for layout reference. A live datacube marketing board is custom-built around your actual channels, CRM, call tracking, and ad platform connections.

Marketing attribution template FAQs

See your lead-source attribution running live

The template shows you the structure. A datacube marketing board runs that same attribution logic automatically: spend, leads, booked jobs, and CPBJ by channel, live from your CRM and call tracking. In a demo we walk your actual channels and show you what the marketing board would look like for your business.