A practical KPI dictionary for general contractors: follow one acquisition record through intake, estimating, signed contract, and booked backlog without collapsing the handoffs.
A general contractor cannot manage marketing from a pile of platform screenshots and a monthly revenue total. A homeowner asking about a kitchen remodel, a property manager requesting a roof repair, and a developer inviting bids take different paths through intake and estimating. The useful measurement system preserves those handoffs instead of calling every inquiry a lead.
This article is a measurement design, not a set of targets. It gives a GC owner, marketing lead, intake team, estimator, operations lead, and finance reviewer a shared dictionary from exposure to booked backlog. The outcome is a record each function can audit: what entered, what changed, who changed it, and which system holds the evidence.
Define a KPI as a decision contract, not a dashboard tile
A contractor marketing KPI is a written decision contract: it names the question, calculation, evidence window, source, owner, exclusions, and response when the first-party baseline changes. A dashboard tile without those fields can describe activity, but it cannot tell a GC whether intake, estimating, capacity, or channel quality needs attention.
Start with the decision, not a familiar label. “Should we keep sending renovation inquiries to the north-region intake queue?” is a decision. “Leads” is not. The specification below forces the ambiguity out before a number reaches the owner meeting. It also stops one department from silently changing a definition to make a report look cleaner.
| KPI specification field | What the contractor writes down |
|---|---|
| Decision | The keep, change, or stop decision the measure informs. |
| Formula | The named stage relationship, never a vague “conversion” label. |
| Numerator | The exact unique records counted above the line. |
| Denominator | The exact eligible unique records counted below the line. |
| Evidence window | The cohort start and the allowed time for a later event to occur. |
| Data source | The named system of record and any governed join used in the calculation. |
| Owner | The person accountable for the metric's condition and review. |
| Exclusions | The exact records omitted from the numerator or denominator and the approved reason. |
| Cadence | How often data quality is checked and how often the owner makes the decision. |
| Known blind spot | What the named sources cannot establish or may leave unknown. |
| Action threshold | The named change from a stable first-party baseline that triggers a keep, change, or stop review; never an imported benchmark. |
Example contact-to-reached rate for July 1–31, 2026: numerator = unique eligible contacts created in the cohort with a documented human reach attempt within seven calendar days; denominator = all eligible unique contacts created in the cohort. Evidence window: creation through day seven. Source: CRM contact record and timestamped reach-attempt log. Owner: intake lead. Exclusions: spam, clear misdials, and duplicate records merged into the surviving contact. Seven days is an example window, not a benchmark or response target.
Use the company’s own completed periods to establish a baseline after the dictionary is stable. A baseline is not a promise or a benchmark. It is a reference point for asking why a source, geography, project type, or intake handoff changed. The SBA separates marketing and sales from finance, employees, tax, and compliance; that separation is useful here because ownership should remain explicit.
Why “a lead” is the wrong unit for a general contractor
“Lead” collapses exposure, click, call click, form submission, qualified enquiry, booked job, and completed job into one label. That hides the handoffs a GC must manage. Only booked and completed jobs pay bills, and urgent repair work and planned, high-ticket work move from enquiry to booking on different clocks.
Keep the evidence separate. An impression shows delivery; a click shows an interaction; a call click and form submission show attempted contact. Neither proves that the enquiry fits the contractor’s written area, scope, or capacity rule. Nor does an estimate or site visit prove a confirmed booking or completed work.
The GC marketing-funnel dictionary
A GC funnel dictionary gives every marketing transition one business rule, system of record, accountable owner, timestamp, and exclusion. Use it before calculating a rate, so an attributable enquiry cannot become a booked job by label alone and a completed job can only come from the governed job record.
| Stage | Exact business rule | Source system | Owner | Timestamp event | Exclusion |
|---|---|---|---|---|---|
| Impression | Channel reports an eligible delivery. | Channel report | Marketing owner | Reported delivery time | Invalid traffic where identified |
| Click | Channel records an interaction with the ad or listing. | Channel report | Marketing owner | Recorded click time | Duplicate or invalid click where identified |
| Call click | A tracked click initiates a call attempt; it is not a booking. | Call tracking | Intake owner | Click or call-start time | Misdial, duplicate, no intake record |
| Form | A submitted form creates or matches one enquiry; a view does not. | Form/CRM | Intake owner | Submission time | Spam, duplicate, incomplete test |
| Qualified enquiry | One unique enquiry meets the written service, area, and scope rule. | Call tracking + form/CRM | Intake owner | Qualification time | Out-of-area, unsupported scope, solicitor |
| Booked job | A qualified enquiry has a confirmed scheduled job under the business rule. | Scheduling/CRM | Scheduling owner | Booking-confirmed time | Reschedules count once; cancellation remains booked, not completed |
| Completed job | The booked job is marked completed in the governed job record. | Job-management record | Operations owner | Completion time | Cancelled, no-show, refunded, scope-changed-out job |
Need a clearer acquisition plan for your contracting business?
The small KPI set that maps to GC job economics
Use a small KPI set to inspect four controlled transitions: qualified enquiry, booked job, direct spend per booked job, and completed job. These are measurement definitions, not targets. Read each one with the season, work type, urgency profile, and ticket-size context that shaped the cohort rather than importing a portable benchmark.
Qualified-enquiry rate
Meaning: the share of attributable enquiries that pass the written service, area, and scope rule. Numerator: unique qualified enquiries. Denominator: all unique attributable enquiries. Evidence window: one declared 28-day window, read against the same prior-year window. Source system: call tracking plus form/CRM with channel source. Owner: intake owner. Exclusions: duplicates, misdials, solicitors, job seekers, subcontractors/vendors, out-of-area, and unsupported scope. GC caveat: compare pre-season and peak demand only within the same emergency, repair, planned, renovation, or new-build mix and ticket profile.
Booked-job rate
Meaning: the share of qualified enquiries that become confirmed booked jobs. Numerator: unique qualified enquiries that become a confirmed booked job. Denominator: unique qualified enquiries created in the same cohort. Evidence window: a 28-day enquiry cohort plus enough lag for the stated booking cycle. Source system: scheduling/CRM. Owner: scheduling owner. Exclusions: reschedules count once; cancelled-before-service remains booked, not completed. GC caveat: urgent repair work can book sooner than planned renovation or new-build work, and ticket size can change that timing.
Cost per booked job
Meaning: direct attributable channel spend for each booked job in a stated cohort. Numerator: direct channel spend attributable to the cohort. Denominator: unique booked jobs from that cohort. Evidence window: one declared 28-day acquisition cohort plus booking lag. Source system: ad/vendor invoice plus job-management records. Owner: marketing owner with operations sign-off. Exclusions: owner labor unless explicitly costed, cancelled, no-show, uncompleted, and unattributable jobs. GC caveat: read season, emergency-versus-planned mix, urgency, and ticket size before comparing periods.
Completed-job rate
Meaning: the share of booked jobs in a cohort that reach the governed completed status. Numerator: booked jobs from the cohort marked completed. Denominator: booked jobs created in the same cohort. Evidence window: the stated booking cohort plus completion lag. Source system: job-management records. Owner: operations owner. Exclusions: cancelled, no-show, refunded, scope-changed-out jobs, and duplicates. GC caveat: seasonal capacity, job mix, urgency, and ticket size affect completion timing and do not establish marketing quality on their own.
Seasonality and mix adjustment
Every GC marketing KPI needs the same prior-year window and a job-mix tag before it supports a decision. A peak-season enquiry spike is not proof of better marketing, and a shift toward low-urgency planned work can lengthen booked-job timing even when intake quality and channel activity have not changed.
Tag each cohort as emergency or repair, planned or renovation, or new-build, then preserve the service area and ticket-size context. Do not compare unlike periods: compare pre-season with the same pre-season period last year, and compare a planned-work cohort with a planned-work cohort. For local acquisition context, see SEO for general contractors; for paid-channel setup, see Google Ads for contractors and Google Ads vs. SEO.
Want a measurement plan that separates channel activity from booked work?
Source-of-truth and ownership
The system that creates a transition should be the source of truth for it: call tracking for call attempts, form/CRM for enquiries and qualification, scheduling for bookings, and job management for completion. Assign one accountable role to a weekly review; a dashboard screenshot cannot resolve a missing timestamp or disputed status.
Marketing owns attributable channel evidence and the join to intake. The intake owner owns qualification, the scheduling owner owns confirmation, and operations owns completion. Keep a weekly exception review for unlinked calls, forms, bookings, and job records, with a named correction owner. For the qualification workflow, use the separate general contractor lead-generation guide; for local-search work, use the general contractor local SEO guide.
Failure states to exclude from every KPI
Exclude failure states using written reason codes rather than silently changing a funnel label. Out-of-area and unsupported-scope enquiries do not test the same service rule as eligible work; duplicates and misdials do not create additional demand; and cancelled or uncompleted jobs must never be reported as completed jobs.
- Out-of-area, unsupported scope, job seeker, subcontractor or vendor, and solicitor.
- Duplicate record, wrong-number or misdial, test, spam, and no-show.
- Cancelled-before-service, refunded, scope-changed-out, and uncompleted job.
Measure demand and traffic without treating them as projects
Demand and traffic measures show whether a contractor was seen or visited, not whether a viable construction project exists. Track impressions, visibility, sessions, landing engagement, call interactions, form interactions, and source tags as separate records, then pass only a documented contact into intake. This distinction protects sales and estimating from inflated demand claims.
An ad platform can report delivery aligned with the objective selected in that platform; it does not prove the downstream business outcome. Meta describes objectives as a way to align delivery to a selected action. LinkedIn likewise defines estimated impressions, clicks, engagement, and lead-form measures. Those records are still useful, but each must map to a contractor stage before management treats it as evidence.
- Impression: a channel-reported delivery event. Keep its channel and reporting date; do not add it to contacts.
- Session: an analytics visit tied to a landing page and source tag. It is not a person or a project.
- Call interaction: a call click or phone event. It becomes a contact only after intake creates or matches a record.
- Form interaction: a submit or partially completed form. State whether the evidence is a submit, not merely a view.
Tag pages and campaigns consistently enough to answer a real construction question: did a commercial tenant-improvement page produce contacts that passed project-fit, or did it produce out-of-area residential inquiries? The answer requires a source field at contact creation, not a later guess from an estimator. For channel definitions such as organic visibility and sessions, use the separate SEO KPI guide; for content-only measures, use the content marketing KPI guide.
Every traffic report should carry a limitation note. “Unknown source” is a valid value when the evidence is absent. Forcing every inquiry into paid, organic, referral, or direct creates a false precision that contaminates later source-to-contract comparisons.
Measure intake and qualification where contractor fit is decided
Intake KPIs should show whether a contractor can reach, understand, and route a real inquiry without erasing why it was accepted or declined. The primary GC evidence is project fit: work scope, geography, client type, timing, licensing or service fit, information completeness, and available capacity, each recorded before estimating receives the opportunity.
Write the intake rules with the people who answer the phone and inbox. A family asking for a residential addition might be a fit for one GC but not another that only pursues commercial ground-up work. A property-management repair request may be the right client type but arrive outside the licensed service area. The stage should describe the contractor’s stated acceptance criteria, not whether marketing likes the source.
| Intake check | Evidence to capture | Owner | What it informs |
|---|---|---|---|
| Contactability | Reach attempts, timestamp, and response outcome | Intake or sales | Whether routing and response process need review |
| Project type | Residential remodel, commercial build-out, repair, or approved local category | Intake | Source and service fit |
| Geography and license fit | Project location and written eligibility result | Intake with SME rule owner | Out-of-area or ineligible patterns |
| Client and timing | Owner, property manager, developer, GC partner, and requested start period | Intake | Routing and cohort comparison |
| Capacity decision | Accept, waitlist, or decline and dated reason | Operations or assigned owner | Capacity context, not channel blame |
GA4’s event reference includes lead-generation events for qualification, disqualification, working leads, and closure. That is a useful implementation prompt, not a ready-made contractor taxonomy: document what each local event means, who creates it, and whether the CRM record is the source of truth. A marketing analyst should not overwrite an intake disposition merely to complete a dashboard.
Measure estimating and bid handoffs as their own evidence chain
Estimating KPIs should preserve the path from qualified opportunity to site visit, estimate invitation, bid submitted, clarification, award, loss, or withdrawal. They reveal a handoff between intake and estimating, not a generic marketing conversion. The estimator owns proposal evidence and the reason a qualified inquiry did or did not become a submitted bid.
A site visit may uncover scope uncertainty, permit constraints, access limitations, or a client timeline that makes an estimate invitation inappropriate. That is not automatically poor marketing. The record needs a disposition and a reason code so a marketing review can see the pattern without pretending to diagnose estimating practice.
- Confirm the handoff: record who sent the qualified opportunity, when it arrived, and the identifier the estimating system uses.
- Record site-visit evidence: distinguish an attended walk, a remote review, a no-show, and a visit never scheduled.
- Record estimate invitation: show that estimating accepted the opportunity for pricing; do not substitute a calendar entry.
- Record bid submission: use the dated proposal delivery record, not an internal draft, as the numerator for submitted-bid measures.
- Close the disposition: capture award, lost award, withdrawal, or still-open status with the approved reason-code library.
A useful reason-code library is deliberately unglamorous: spam or duplicate, unreachable, out-of-area, wrong scope, wrong client type, timing, missing information, capacity, no-bid, lost award, withdrawn, and cancelled. The exact definitions need estimating, operations, and any relevant licensing or compliance SME approval. Do not merge no-bid with lost award: one says no submitted proposal existed, while the other says a submitted bid was not selected.
Example bid-submitted rate for qualified opportunities handed to estimating July 1–31, 2026: numerator = unique cohort opportunities with dated proposal delivery within 60 calendar days of handoff; denominator = all unique qualified opportunities in the handoff cohort. Evidence window: handoff through day 60. Source: CRM opportunity IDs joined to estimating proposal-delivery records. Owner: estimating lead. Exclusions: test and duplicate records after retaining the surviving ID; no-bid, lost-award, and still-open records remain in the denominator. Sixty days is an example window, not a universal target.
Measure signed work and booked backlog only with governed definitions
Signed contracts and booked backlog are downstream acquisition evidence only when finance and operations define them, own their records, and approve their exclusions. A signed agreement, a cancellation, a change order, and a backlog entry are separate governed fields. Marketing may analyze handoff cohorts, but it must not infer profitability, cash flow, margin, or schedule performance.
The date matters. A bid can be awarded in one period, signed in another, and entered into the operations backlog later. The contract record should state which event date is being used, who can amend it, and how rescissions are recorded. Otherwise a marketing report may claim a signed project during the month when the underlying agreement was still pending or subsequently cancelled.
| Field | Permitted marketing use | Definition owner | Do not infer |
|---|---|---|---|
| Signed contract date | Downstream cohort timestamp after a governed signature event | Finance or operations | Cash received or work completed |
| Contract value | Only if finance approves the governed field for analysis | Finance | Profitability, marketing return, or final value |
| Cancellation | Separate outcome linked to the signed record | Finance or operations | That the original signature remains active |
| Change order | Separately governed project field, not a marketing-stage adjustment | Finance or operations | Original acquisition quality |
| Booked backlog | Handoff context after operations-approved entry | Operations and finance | Revenue, margin, or delivery capacity |
This boundary matters for a GC handling phased remodels or commercial work. A signed contract may still face scheduling, permitting, procurement, or client-driven changes. Marketing can ask whether a source cohort eventually reaches the governed signed-contract event. It should not convert that observation into a promise about job profitability or backlog health. Those are finance and operations questions with different source records.
Reconcile channel, analytics, CRM, estimating, and accounting records
Reconciliation connects records across systems without claiming they are identical. A contractor needs a unique intake identifier, dated stage timestamps, source fields, deduplication rules, attribution window, offline update process, privacy controls, and an exception queue. Platform metrics remain platform metrics until a documented join connects them to a contractor-owned intake and later handoff record.
Do not expect ad totals and CRM totals to match automatically. A platform may count a delivery or a lead-form event; the CRM may merge duplicate contacts; estimating may receive only accepted opportunities; finance may govern signed work after an offline signature. The right response is an auditable mismatch queue, not manual edits that force a matching total.
| System pair | Join fields | Deduplication / timing rule | Exception owner |
|---|---|---|---|
| Channel to analytics | Campaign, landing URL, source tag, date | Preserve unknown and untagged traffic | Marketing |
| Analytics to CRM | Form or call reference, timestamp, source field | Create or match one unique contact record | Marketing and intake |
| CRM to estimating | Opportunity ID, project address or approved match field | Log handoff and merge decisions | Intake and estimating |
| Estimating to contract record | Proposal ID, customer or project ID, disposition date | Keep award, signature, and cancellation distinct | Estimating with finance or operations |
| Contract record to backlog | Governed contract ID and approved backlog field | Use operations-approved entry date | Operations and finance |
Access controls belong in the design because project addresses, client information, and proposal records have different audiences. Document which role can export records, who can alter source fields, and how a correction is logged. The point is not to build a universal attribution model; it is to make a limited, defensible statement such as “these eligible contacts from this tagged cohort reached signed-contract evidence within the agreed window.”
Want help making your acquisition reporting easier to review?
Run a weekly data-quality check and monthly decision review
A weekly data-quality check and a monthly decision review create a practical contractor KPI rhythm when those intervals fit the business. The weekly review repairs missing owners, stale stages, source gaps, and duplicate records. The monthly review examines comparable cohorts, capacity context, and estimating outcomes, then records a keep, change, or stop decision with its evidence.
The weekly meeting can be short and operational. Look for contacts with no source or owner, qualified opportunities with no handoff timestamp, bids with no final disposition, and signed records that cannot be joined to a prior opportunity. Ask whether the record is missing, delayed, duplicated, or intentionally excluded. Assign a correction owner and preserve the reason rather than quietly filling a blank.
| Metric or stage | Responsible | Accountable | Consulted | Informed |
|---|---|---|---|---|
| Impressions, sessions, call or form interactions, and source tags | Marketing analyst | Marketing lead | Intake or sales | Estimating, operations, and finance |
| Contact-to-reached rate | Intake or sales record owner | Intake or sales lead | Marketing | Estimating, operations, and finance |
| Project-fit and qualified-opportunity stages | Intake or sales | Intake or sales lead | Estimating and operations | Marketing and finance |
| Site-visit and estimate-invitation stages | Estimating | Estimating lead | Intake or sales and operations | Marketing and finance |
| Bid-submitted rate and award, loss, or withdrawal | Estimating | Estimating lead | Operations and finance | Marketing and intake or sales |
| Lead-to-contract conversion, signed contract, and cancellation | Marketing lead for reconciliation; finance or operations for governed evidence | Finance or operations definition owner | Estimating | Intake or sales |
| Booked backlog | Operations | Operations and finance definition owners | Finance and estimating | Marketing and intake or sales |
| Dashboard anti-pattern | Why it fails | Replacement |
|---|---|---|
| Vanity metric | Impressions presented as projects | Keep exposure separate from contacts and opportunities |
| Collapsed stage | Contacts, bids, and contracts called “leads” | Use the written funnel dictionary |
| Mixed denominator | One source cohort divided by another period’s total | State numerator, denominator, and evidence window |
| Platform-only attribution | Delivery record treated as signed work | Join to contractor-owned records and show gaps |
| Unreviewed benchmark | Imported target ignores project mix and capacity | Use first-party, like-for-like cohorts |
| Missing capacity context | Declines are blamed on a source without operations evidence | Record capacity as a separate reason |
Do not treat the cadence itself as a target. A small contractor may need a different cycle around seasonal bidding, storm work, or a long commercial proposal process. The invariant is the decision record: what the team saw, what data limitation applied, who owned the next step, and what changed before the next review. That keeps the KPI system useful when the workload changes.
Frequently asked questions
These answers keep the boundary clear: contractor marketing KPIs trace an evidence-backed acquisition path, while estimating, operations, and finance retain their own governed definitions. Use them to settle dictionary questions before reporting, then adapt the owners, evidence windows, exclusions, and review actions to the contractor’s actual project mix and approved operating rules.
What marketing KPIs should a general contractor track?
A general contractor should track qualified-enquiry rate, booked-job rate, cost per booked job, and completed-job rate alongside the separate stages that evidence them. Each calculation needs a written rule, numerator, denominator, evidence window, source system, owner, exclusions, and same-prior-year job-mix comparison; none is a universal target.
Is a form submission or phone call a booked job?
No. A form submission or phone call is an attempted contact or enquiry until intake creates or matches a record and applies its written qualification rule. A booked job requires a confirmed scheduling event, and a completed job requires the governed job-management completion record. Keep those timestamps and owners separate.
How do seasonality and job mix change a contractor's marketing KPIs?
Compare the same prior-year window and tag each cohort by emergency or repair, planned or renovation, or new-build work. A peak-season enquiry increase is not proof of marketing improvement, while a shift to lower-urgency planned work can extend booking and completion timing without changing intake quality.
What is a good cost per booked job for a general contractor?
There is no portable good cost per booked job. Divide direct attributable channel spend by unique booked jobs from the same declared cohort, then read it against the contractor's same-prior-year window, job mix, urgency, ticket-size context, exclusions, and stated booking lag rather than an imported target.
Which system should be the source of truth for contractor marketing KPIs?
Use the system that creates the transition: call tracking for call attempts, form or CRM records for enquiries and qualification, scheduling for bookings, and job management for completion. Marketing can join the records for review, but the accountable intake, scheduling, and operations owners retain the underlying status evidence.
How should emergency repair work versus planned projects be measured differently?
Use the same definitions but separate cohorts by emergency or repair, planned or renovation, and new-build work. Emergency work may book on a shorter clock, while planned projects need more booking and completion lag. Compare each group with its same prior-year window and ticket-size context, not with another mix.
Start with one auditable contractor cohort
Start with one auditable contractor cohort, such as new residential remodeling contacts from a defined month and service area, rather than redesigning every report at once. Assign the owners, stage evidence, exclusions, source fields, and reconciliation queue first. Then use the first stable period to make a documented decision, not to manufacture a universal conversion target.
Keep the boundaries firm. Marketing is responsible for explaining exposure, visits, and source documentation. Intake is responsible for contactability and project fit. Estimating is responsible for site visits, estimate invitations, bids, and dispositions. Operations and finance govern contract and backlog records. That division makes a contractor’s measurement system more credible precisely because no one dashboard claims to own every answer.
If your team is working on the acquisition side of that system, compare the channel measures in content marketing KPIs to track with your contractor dictionary before copying anything into a management report. For a separate SEO cost decision, use the SEO cost guide. Keep every stage distinct, preserve unknowns, and write the action that follows a change in the baseline.
Build a more useful plan for the marketing work you can control.
Sources & references
Blog SEO, Local SEO, and Social Media — one dashboard, no headaches.