A practical evidence contract for measuring window-cleaning acquisition from search exposure to qualified requests, bookings, completed work, callbacks, and rebookings.
A full schedule can hide a weak acquisition system. Spring residential work may fill the calendar while an inefficient route, weather-delayed jobs, or unsupported access requests consume the intake team's time. A report that stops at clicks or forms cannot show which problem you have.
Useful window cleaning marketing KPIs connect marketing activity to the work your company actually offers. They preserve every handoff from a search impression to a completed job without pretending one stage proves the next. They also keep one-time residential work, recurring storefront stops, quoted projects, and operator-approved high-access work out of one misleading average.
The short version: define the operating decision first, record each funnel stage separately, segment by job economics and constraints, reconcile source systems, and publish unknowns beside results. There is no portable target. Your own offered services, route, weather window, capacity, ticket bands, and verified records set the comparison.
This guide covers the measurement layer. For channel-wide definitions, use the SEO KPI guide, content marketing KPI framework, and content KPI measurement guide. Here, the unit of truth is a real window-cleaning enquiry or job.
Start with the operating decision, not a KPI list
A window-cleaning KPI is useful only when it informs a bounded decision about an offered job, route, time window, or capacity constraint. Write the decision before choosing the measure. “Get more leads” is not bounded; “decide whether to keep a residential exterior campaign inside the north route during the spring weather window” is.
Use a decision sentence with eight fields: offered job type, geography or route, season and weather state, urgency, access boundary, crew or equipment capacity, first-party ticket band, and decision owner. The company supplies these values. If the ticket band or capacity limit has not been documented, mark it unavailable and resolve that gap before using it as a filter.
| Decision field | Window-cleaning example | Why it changes interpretation |
|---|---|---|
| Offered job | Residential exterior; interior plus screens or tracks; recurring storefront; quoted project | Intake facts, sales motion, and recurrence differ. |
| Route/geography | Named route or service boundary from the operator | A distant booking may add work while weakening route fit. |
| Season/weather | Operator-defined seasonal window and actual weather status | Demand and completion lag can move in different directions. |
| Urgency | Requested date tied to a move, event, turnover, or project handoff | A short requested window can fail the capacity gate. |
| Access/capability | Pending, accepted, or unsupported under operations' own gate | Marketing must not decide whether the work is supportable. |
| Economics/capacity | First-party ticket band and available crew/equipment slot | A qualified request must still fit what can be delivered. |
A good weekly review asks one question at a time. You might change a route boundary, an ad message for exterior-only residential work, or the follow-up window for quoted projects. Do not change all three and then attribute a later movement to one cause.
Draw the full window-cleaning funnel without collapsing stages
The full funnel is impression → click → call click or form → received enquiry → reachable → qualified → estimate or site review when required → booked → completed → callback or rework → recurring or rebooked. Each stage needs its own entry rule, exit rule, key, timestamp, source, and owner because adjacent stages are not equivalent.
| Stage | Entry and exit | Key / timestamp | Source / owner | Not equivalent to |
|---|---|---|---|---|
| Impression | Eligible search result shown; exits when reported | Declared query/page segment; report date | Search Console / SEO | Click |
| Click | Eligible search click; exits on site arrival record | Search segment; click date | Search Console / SEO | Session or enquiry |
| Call click | Tracked tap on phone link; exits when event stored | Session/event ID; event time | Analytics / marketing ops | Received or connected call |
| Form | Valid form submitted; exits when intake receives it | Submission ID; submit time | Form log / marketing ops | Reachable or qualified enquiry |
| Received enquiry | Phone or form record exists; exits after contact review | Enquiry ID; received time | Intake record / intake | Reachable person |
| Reachable | Two-way contact established; exits at disposition | Enquiry ID; contact time | Intake record / intake | Qualified request |
| Qualified | Current service, area, access, timing, capacity, and ticket rules pass; exits to next sales state | Enquiry ID; decision time | CRM/intake / intake with operations | Estimate or booking |
| Estimate/site review | Required evaluation opened; exits accepted, declined, expired, or pending | Estimate ID; issue/decision time | Estimating / estimator | Confirmed booking |
| Booked job | Confirmed slot exists; exits completed, canceled, or remains scheduled | Booking ID; confirmation time | Scheduling / scheduling | Completed work |
| Completed job | Written completion rule met; exits after outcome review | Job ID; completion time | Job system / operations | Callback-free work |
| Callback/rework | Post-completion issue logged; exits at written resolution | Case ID linked to job; report time | Callback log / operations | New enquiry |
| Recurring/rebooked | New recurring visit or later booking confirmed; exits per its own job outcome | Customer and visit IDs; booking time | Scheduling/route system / operations | First job or acquisition |
Call clicks and forms remain separate activation events even if a dashboard later shows their combined total. An estimate also remains distinct from a booking. This separation lets you locate the actual loss: unanswered calls, unsupported service requests, slow estimates, weather postponements, cancellations, or incomplete work.
Connect search work to an evidence contract your team can operate. theStacc can research, draft, and queue content, while your intake and job systems remain the source of enquiry and completion truth.
Define a qualified window-cleaning enquiry
A qualified enquiry is a reached request that passes the current written rules for an offered window-cleaning service, service address or route, requested timing, access and capability, available capacity, and first-party ticket band. Operations owns the capability gate. Intake records the decision and never infers missing access or compliance facts.
Build one qualification dictionary with four states. Accepted means all required facts pass. Rejected requires a reason code. Pending means a named fact or operational decision is awaited. Unknown means the evidence was not captured or cannot be recovered. Unknown is not rejection, and pending is not qualification.
| State | Required record | Window-cleaning reason examples |
|---|---|---|
| Accepted | Offered job, route fit, timing, recurrence, required window/access facts, capacity, and ticket band pass | Residential exterior inside route; recurring storefront stop approved for an existing route |
| Rejected | Reason code plus rule version | Unsupported service, area, or access; no capacity; employment, vendor, or DIY noise; duplicate |
| Pending | Missing item, owner, and review date | Weather reschedule; project scope awaiting review; access/capability decision awaiting operations |
| Unknown | Missing evidence and recovery status | Address absent, call outcome not logged, ticket band unavailable, source not recoverable |
The intake card should capture the supported job branch: residential exterior, interior and offered add-ons, recurring storefront or low-rise commercial, post-construction or other quoted project, or high-access only if the operator offers and approves it. It should also record recurrence, requested date, address/route, urgency, weather state, access-gate status, crew/equipment capacity, local competitive density, and locally verified licensing, permit, bonding, or insurance status when applicable. The field is a verification record, not advice about what is required.
Build a measurement dictionary before building charts
A measurement dictionary turns each KPI label into an auditable contract. For every metric, record the business definition, grain and unique key, event timestamp, source system, owner, exclusions, late-record treatment, unknown state, and audit test. Without those fields, two teams can publish different numbers under the same label.
| Dictionary field | Required decision | Example audit question |
|---|---|---|
| Definition | Exact entry and exit rule | Does “booked” require a confirmed slot? |
| Grain/key | One row per session, enquiry, estimate, booking, job, callback, or recurring visit | Can two form submissions become one deduplicated enquiry? |
| Timestamp | The event date used for cohort membership | Is completion grouped by enquiry month or completion month? |
| Source/owner | Authoritative system and accountable role | Who resolves a mismatch between scheduling and job records? |
| Exclusions | Tests, staff, spam, vendors, duplicates, unsupported requests, or other written exclusions | Are excluded rows still countable in an audit? |
| Late/unknown | Cutoff, unresolved queue, and restatement rule | What happens when a weather-delayed job completes next month? |
| Audit test | Record sample and pass condition | Can the displayed count be traced to unique source IDs? |
Version the dictionary. If “qualified” begins requiring a different route threshold or a revised first-party ticket band, preserve the effective date and the old definition. Do not silently backfill the new rule into old cohorts unless the restatement owner approves it and the report discloses the change.
Keep marketing records separate from job outcomes
Search and analytics systems establish exposure and configured digital events; operating systems establish later window-cleaning outcomes. Search Console can report impressions, clicks, CTR, and average position. Analytics can record configured call-click, form, and lead events. Neither system alone proves reachability, qualification, booking, completion, callback status, or payment.
Google documents both Performance report measures and limitations and how property versus page aggregation changes counting. Name the property, page, query, device, geography, and date filters used. A property-level search count must not be presented as though it belongs only to a residential exterior service page.
GA4 provides recommended events such as generate_lead, qualify_lead, and close_convert_lead, but your company defines the operational rule behind them. Its lead acquisition reporting depends on configured events and dimensions. Reconcile those events to intake and job IDs before making a job-level statement.
| Source system | What it can establish | Required join or check |
|---|---|---|
| Search Console | Search impressions, clicks, CTR, average position under declared filters | Property/page aggregation and filter compatibility |
| Analytics | Eligible sessions and configured activation events | Session/event ID to intake evidence where available |
| Call/form intake | Received enquiry and contact outcome | Deduplicated enquiry ID |
| Estimating | Estimate or site-review state | Enquiry-to-estimate link and lag |
| Scheduling/route | Confirmed slot, reschedule, cancellation, route, recurring visit | Booking and customer keys |
| Job/callback | Written completion state and later callback | Job ID and callback link |
| Finance records | Eligible cost or ticket evidence under a written rule | Cohort assignment and sign-off |
A matched path shows association under your attribution rules, not proof that a keyword, page, or ad caused the completed job. Use channel reporting to decide what to investigate or test, then change one bounded variable.
Segment window-cleaning work before comparing performance
Compare KPIs only inside cohorts with compatible job economics and operating constraints. At minimum, separate residential exterior from interior and add-ons, recurring storefront route work, quoted commercial or project work, post-construction work, and genuinely offered high-access work. Then segment route, season, weather, urgency, ticket band, access gate, capacity, and local density.
| Segment | Distinct measurement issue | Do not blend with |
|---|---|---|
| Residential exterior | Address, requested date, route fit, weather, capacity, and first-job completion | Interior/add-on scope without a service flag |
| Residential interior/add-ons | Offered scope and booking facts may differ from exterior-only work | Exterior-only requests under one job label |
| Recurring storefront route | Acquisition can create repeated visits; route density and recurrence are central | Every visit counted as a new lead or new customer |
| Commercial/project | Qualification may precede an estimate or site review, creating a longer declared lag | Direct-book residential work |
| Post-construction | Project timing, handoff urgency, offered scope, and capability review shape progression | Routine recurring maintenance |
| Offered high-access | Operations-controlled capability gate and locally verified compliance state must be explicit | Standard work or unsupported enquiries |
The find-replace test: A recurring storefront stop belongs to a route and can produce many visits from one acquisition. A residential interior/exterior job may combine offered scopes at one address. Post-construction work follows project timing. High-access work enters only after an operator-owned capability gate. One unsegmented “cleaning lead” cohort erases all four differences.
Use a segment card on every dashboard view: offered service; residential, storefront, commercial, or project branch; recurrence; service address/route; urgency; season/weather; access/capability state; first-party ticket band; crew/equipment capacity; local density; and compliance-verification status. Unavailable values stay visible rather than becoming a default segment.
Approve formulas and reconciliation rules
Every published formula must name its numerator, denominator, evidence window, source system, owner, and exclusions. Apply the same segment filters to both sides of a rate, retain counts beside percentages, and declare cohort lag. When the denominator is zero, report “not calculable,” never zero performance.
| KPI | Numerator / denominator | Window and source | Owner and exclusions |
|---|---|---|---|
| Search CTR | Eligible non-duplicate clicks / eligible impressions under identical filters | Declared 28-day Search Console window; property/page aggregation named | SEO owner; disclose anonymized or missing queries and incompatible aggregation |
| Call-click/form activation | Unique sessions with tracked call click or valid form / all eligible sessions in cohort | Declared 28-day session cohort; analytics plus event log | Marketing ops; exclude bots, staff/tests, duplicates; call click is not received call |
| Qualified-enquiry rate | Unique reached enquiries qualified under current rule / all unique reached enquiries reviewed | Named monthly enquiry cohort through cutoff; CRM/intake | Intake owner with operations approval; exclude spam, tests, vendors, employment, duplicates; show pending/unknown |
| Booked-job rate | Unique qualified enquiries with one confirmed booking / all unique qualified enquiries | Same enquiry cohort plus declared estimate/booking lag; estimating/scheduling | Scheduling or estimating owner; deduplicate, count reschedules once, keep cancellations booked but incomplete |
| Completed-job rate | Unique booked jobs meeting completion rule / all unique booked jobs | Same booking cohort plus declared service/weather lag; job system | Operations owner; report canceled, no-access, weather-postponed, and incomplete separately |
| Cost per completed first job | Eligible acquisition cost assigned to cohort / unique attributable first jobs completed | Named acquisition cohort plus all declared lags; ledger, analytics, CRM, scheduling, job records | Marketing with finance/operations sign-off; written treatment for taxes, credits, overhead, owner labor; exclude recurring visits, canceled/incomplete, unattributable |
Write reconciliation rules before month-end. Specify source matching, duplicate precedence, calls versus forms, reschedules, cancellations, callbacks, split or combined jobs, late completion, unknown attribution, and cost recognition. For example, a weather reschedule keeps one booking ID and later receives one completion state; it does not create a second booking. A combined exterior-and-interior job stays one job only if the company's written grain says so.
Maintain an unresolved queue with record ID, missing field, current state, owner, opened date, cutoff, and resolution. The restatement owner decides whether late completions or recovered attribution change a prior report and records the reason.
Build the smallest dashboard that supports a decision
The minimum dashboard is not a wall of charts. It is a short set of decision cards spanning exposure, activation, qualification, booking, completion, and cost where calculable. Every card shows counts and rate, definition version, cohort, segment, source, freshness, owner, exclusions, unresolved count, capacity flag, and one next action.
| Card | Display | Decision prompt |
|---|---|---|
| Search exposure | Impressions, clicks, CTR; filters and aggregation | Which query/page segment needs inspection? |
| Site activation | Sessions, call clicks, forms; received calls separate | Is the gap measurement, message, or contact path? |
| Enquiry quality | Received, reachable, accepted, rejected, pending, unknown; reason codes | Which offered-job or route mismatch dominates? |
| Job progression | Estimates, bookings, completions, cancellations, weather postponements | Where does the selected segment stop progressing? |
| After-service | Callbacks/rework and recurring/rebooked states as separate counts | Is acquisition quality hiding an outcome problem? |
| Cost | Eligible cohort cost, completed first jobs, unknown attribution, formula status | Is the result auditable or not calculable? |
A dashboard wireframe can fit on one screen: decision sentence at top; segment and capacity strip underneath; six cards; unresolved queue; then a definition-change log. The change log needs effective date, metric, old rule, new rule, reason, approver, affected cohorts, and whether prior reports were restated.
Counts belong beside rates because a sharp percentage movement from a small cohort can trigger the wrong response. Freshness belongs on every card because search data, an intake disposition, a weather-delayed completion, and a finance record may arrive on different schedules.
Make search reporting support a real operating decision. theStacc's Content SEO module researches, drafts, and queues content; its Local SEO module covers GBP posts, review replies, citations, and rank tracking.
Audit definitions and decide keep, change, or stop
Audit the records behind each KPI before using it to keep, change, or stop an activity. Sample source IDs across accepted, rejected, pending, unknown, booked, completed, and callback states. Preserve system and definition changes, disclose restatements, retire stale measures, and alter one bounded variable per test.
- Sample the denominator first. Confirm that every eligible reached enquiry or booking belongs to the declared cohort and segment.
- Trace numerator IDs. Verify that qualified, booked, or completed rows meet the current written entry rule.
- Inspect exclusions. Review duplicates, vendors, employment requests, unsupported service or area, capacity failures, cancellations, weather postponements, and incomplete work.
- Review unresolved records. Confirm each pending or unknown row has an owner and cutoff rather than disappearing from the rate.
- Check joins and lag. Test call/form-to-enquiry, enquiry-to-estimate, booking-to-job, job-to-callback, and ledger-to-cohort links.
- Log changes. Record definition, system, route, access-gate, capacity, or ticket-band changes before comparing periods.
Keep an activity when the intended segment progresses under stable definitions and capacity can support it. Change one controllable variable when the evidence locates a specific gap, such as exterior-only creative attracting unsupported interior requests. Stop a bounded activity when its reconciled evidence fails the operator's own decision rule. If evidence remains unresolved, fix measurement before declaring a verdict.
Frequently asked questions about window cleaning marketing KPIs
These answers cover the edge cases that most often corrupt a window-cleaning scorecard: digital actions mislabeled as leads, mixed residential and route cohorts, weather delays, recurring visits, and missing attribution. Apply the same written definitions used in the dashboard, and keep pending, unknown, canceled, incomplete, and callback states visible.
Which marketing KPIs should a window-cleaning company track?
Track the stages needed to explain your next operating decision: search impressions, clicks, call clicks or forms, received enquiries, reachable enquiries, qualified enquiries, estimates or site reviews, bookings, completed jobs, callbacks, and rebookings. Add cost per completed first job only when cost and attribution records can be reconciled. Report every stage separately.
Is a call click or form submission a window-cleaning lead?
No. A call click records an attempted action, while a form submission records received form data. Neither proves that a call connected, the person was reachable, or the request matched an offered window-cleaning job. Keep call clicks and forms as activation events, then create separate received, reachable, and qualified enquiry records.
When is a window-cleaning enquiry qualified?
An enquiry is qualified only after it passes the operator's written rules for offered service, service address or route, timing, access and capability, capacity, and first-party ticket band. The required facts differ for residential interior work, recurring storefront stops, post-construction projects, and high-access work. Pending facts must remain pending or unknown.
How should residential and storefront window-cleaning jobs be reported?
Report residential and storefront work in separate segments. A one-time residential exterior-and-interior booking has different intake facts, travel logic, add-ons, and rebooking behavior from a recurring storefront route stop. Keep a shared funnel vocabulary, but calculate rates and counts within each segment before comparing them.
How should weather reschedules affect booked- and completed-job reporting?
Keep a weather-rescheduled job booked if the booking remains confirmed, but do not mark it completed until it meets the written completion rule. Store the original service date, new date, weather status, and final outcome. This preserves demand while exposing delay and capacity effects instead of misclassifying a postponement as a cancellation or completion.
How do I calculate cost per completed window-cleaning job?
Divide eligible acquisition cost assigned to a named cohort by unique attributable first jobs completed after the declared qualification, estimate, weather, scheduling, and completion lag. State the ledger rules, attribution method, owner, and exclusions. If no completed jobs exist, the result is not calculable; if attribution is unknown, report that share separately.
Should recurring route work and one-time jobs use the same KPI cohort?
No. Recurring route work and one-time jobs should not share one conversion cohort. A storefront agreement can create many scheduled visits, while a residential booking may create one completed job and a later rebooking. Separate acquisition, first-job completion, recurring visit, and rebooking cohorts so repeat visits do not inflate new-customer performance.
What should happen when attribution or ticket data is unavailable?
Label attribution or ticket data unavailable and place the affected record in an unresolved queue. Do not convert missing values to zero, discard the job, or assign it to a convenient channel. Publish the unresolved count beside the KPI, name the owner and cutoff, and restate prior results if later evidence materially changes them.
Turn window cleaning marketing KPIs into an operating habit
A trustworthy scorecard preserves the path from search exposure to completed work while respecting how window cleaning is sold and delivered. Start with one offered-job segment and one decision. Define every stage, reconcile the records, show unresolved data, and audit a sample before changing the campaign, route, intake rule, or capacity plan.
The first version does not need every possible metric. It needs enough evidence to distinguish a search impression from a click, a call click from a received enquiry, a qualified residential or route request from an estimate, a booking from a weather-delayed completion, and a first job from a recurring visit. Add measures only when they change a named decision.
- Choose one segment such as residential exterior inside a named route.
- Approve the funnel dictionary and qualification states with operations.
- Reconcile a single cohort through the declared completion lag.
- Publish counts, rates, exclusions, unknowns, and capacity together.
- Review one bounded keep, change, or stop decision.
Build search and local content around the services you can measure and deliver. Keep job truth in your operating systems, and use theStacc for the content and local-search work it supports.
Sources & references
Blog SEO, Local SEO, and Social Media — one dashboard, no headaches.