Quick answer

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 fieldWindow-cleaning exampleWhy it changes interpretation
Offered jobResidential exterior; interior plus screens or tracks; recurring storefront; quoted projectIntake facts, sales motion, and recurrence differ.
Route/geographyNamed route or service boundary from the operatorA distant booking may add work while weakening route fit.
Season/weatherOperator-defined seasonal window and actual weather statusDemand and completion lag can move in different directions.
UrgencyRequested date tied to a move, event, turnover, or project handoffA short requested window can fail the capacity gate.
Access/capabilityPending, accepted, or unsupported under operations' own gateMarketing must not decide whether the work is supportable.
Economics/capacityFirst-party ticket band and available crew/equipment slotA 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.

StageEntry and exitKey / timestampSource / ownerNot equivalent to
ImpressionEligible search result shown; exits when reportedDeclared query/page segment; report dateSearch Console / SEOClick
ClickEligible search click; exits on site arrival recordSearch segment; click dateSearch Console / SEOSession or enquiry
Call clickTracked tap on phone link; exits when event storedSession/event ID; event timeAnalytics / marketing opsReceived or connected call
FormValid form submitted; exits when intake receives itSubmission ID; submit timeForm log / marketing opsReachable or qualified enquiry
Received enquiryPhone or form record exists; exits after contact reviewEnquiry ID; received timeIntake record / intakeReachable person
ReachableTwo-way contact established; exits at dispositionEnquiry ID; contact timeIntake record / intakeQualified request
QualifiedCurrent service, area, access, timing, capacity, and ticket rules pass; exits to next sales stateEnquiry ID; decision timeCRM/intake / intake with operationsEstimate or booking
Estimate/site reviewRequired evaluation opened; exits accepted, declined, expired, or pendingEstimate ID; issue/decision timeEstimating / estimatorConfirmed booking
Booked jobConfirmed slot exists; exits completed, canceled, or remains scheduledBooking ID; confirmation timeScheduling / schedulingCompleted work
Completed jobWritten completion rule met; exits after outcome reviewJob ID; completion timeJob system / operationsCallback-free work
Callback/reworkPost-completion issue logged; exits at written resolutionCase ID linked to job; report timeCallback log / operationsNew enquiry
Recurring/rebookedNew recurring visit or later booking confirmed; exits per its own job outcomeCustomer and visit IDs; booking timeScheduling/route system / operationsFirst 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.

Sign up for free →

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.

StateRequired recordWindow-cleaning reason examples
AcceptedOffered job, route fit, timing, recurrence, required window/access facts, capacity, and ticket band passResidential exterior inside route; recurring storefront stop approved for an existing route
RejectedReason code plus rule versionUnsupported service, area, or access; no capacity; employment, vendor, or DIY noise; duplicate
PendingMissing item, owner, and review dateWeather reschedule; project scope awaiting review; access/capability decision awaiting operations
UnknownMissing evidence and recovery statusAddress 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 fieldRequired decisionExample audit question
DefinitionExact entry and exit ruleDoes “booked” require a confirmed slot?
Grain/keyOne row per session, enquiry, estimate, booking, job, callback, or recurring visitCan two form submissions become one deduplicated enquiry?
TimestampThe event date used for cohort membershipIs completion grouped by enquiry month or completion month?
Source/ownerAuthoritative system and accountable roleWho resolves a mismatch between scheduling and job records?
ExclusionsTests, staff, spam, vendors, duplicates, unsupported requests, or other written exclusionsAre excluded rows still countable in an audit?
Late/unknownCutoff, unresolved queue, and restatement ruleWhat happens when a weather-delayed job completes next month?
Audit testRecord sample and pass conditionCan 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 systemWhat it can establishRequired join or check
Search ConsoleSearch impressions, clicks, CTR, average position under declared filtersProperty/page aggregation and filter compatibility
AnalyticsEligible sessions and configured activation eventsSession/event ID to intake evidence where available
Call/form intakeReceived enquiry and contact outcomeDeduplicated enquiry ID
EstimatingEstimate or site-review stateEnquiry-to-estimate link and lag
Scheduling/routeConfirmed slot, reschedule, cancellation, route, recurring visitBooking and customer keys
Job/callbackWritten completion state and later callbackJob ID and callback link
Finance recordsEligible cost or ticket evidence under a written ruleCohort 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.

SegmentDistinct measurement issueDo not blend with
Residential exteriorAddress, requested date, route fit, weather, capacity, and first-job completionInterior/add-on scope without a service flag
Residential interior/add-onsOffered scope and booking facts may differ from exterior-only workExterior-only requests under one job label
Recurring storefront routeAcquisition can create repeated visits; route density and recurrence are centralEvery visit counted as a new lead or new customer
Commercial/projectQualification may precede an estimate or site review, creating a longer declared lagDirect-book residential work
Post-constructionProject timing, handoff urgency, offered scope, and capability review shape progressionRoutine recurring maintenance
Offered high-accessOperations-controlled capability gate and locally verified compliance state must be explicitStandard 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.

KPINumerator / denominatorWindow and sourceOwner and exclusions
Search CTREligible non-duplicate clicks / eligible impressions under identical filtersDeclared 28-day Search Console window; property/page aggregation namedSEO owner; disclose anonymized or missing queries and incompatible aggregation
Call-click/form activationUnique sessions with tracked call click or valid form / all eligible sessions in cohortDeclared 28-day session cohort; analytics plus event logMarketing ops; exclude bots, staff/tests, duplicates; call click is not received call
Qualified-enquiry rateUnique reached enquiries qualified under current rule / all unique reached enquiries reviewedNamed monthly enquiry cohort through cutoff; CRM/intakeIntake owner with operations approval; exclude spam, tests, vendors, employment, duplicates; show pending/unknown
Booked-job rateUnique qualified enquiries with one confirmed booking / all unique qualified enquiriesSame enquiry cohort plus declared estimate/booking lag; estimating/schedulingScheduling or estimating owner; deduplicate, count reschedules once, keep cancellations booked but incomplete
Completed-job rateUnique booked jobs meeting completion rule / all unique booked jobsSame booking cohort plus declared service/weather lag; job systemOperations owner; report canceled, no-access, weather-postponed, and incomplete separately
Cost per completed first jobEligible acquisition cost assigned to cohort / unique attributable first jobs completedNamed acquisition cohort plus all declared lags; ledger, analytics, CRM, scheduling, job recordsMarketing 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.

CardDisplayDecision prompt
Search exposureImpressions, clicks, CTR; filters and aggregationWhich query/page segment needs inspection?
Site activationSessions, call clicks, forms; received calls separateIs the gap measurement, message, or contact path?
Enquiry qualityReceived, reachable, accepted, rejected, pending, unknown; reason codesWhich offered-job or route mismatch dominates?
Job progressionEstimates, bookings, completions, cancellations, weather postponementsWhere does the selected segment stop progressing?
After-serviceCallbacks/rework and recurring/rebooked states as separate countsIs acquisition quality hiding an outcome problem?
CostEligible cohort cost, completed first jobs, unknown attribution, formula statusIs 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.

Sign up for free →

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.

  1. Sample the denominator first. Confirm that every eligible reached enquiry or booking belongs to the declared cohort and segment.
  2. Trace numerator IDs. Verify that qualified, booked, or completed rows meet the current written entry rule.
  3. Inspect exclusions. Review duplicates, vendors, employment requests, unsupported service or area, capacity failures, cancellations, weather postponements, and incomplete work.
  4. Review unresolved records. Confirm each pending or unknown row has an owner and cutoff rather than disappearing from the rate.
  5. Check joins and lag. Test call/form-to-enquiry, enquiry-to-estimate, booking-to-job, job-to-callback, and ledger-to-cohort links.
  6. 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.

Sign up for free →

Sources & references

Ritik Namdev

Ritik Namdev

Growth Manager

Growth Manager at theStacc. Five years in digital marketing, content strategy, and growth at content-led SaaS. Writes on Medium and YouTube about programmatic SEO and growth systems.

From the theStacc product Explore theStacc modules

Blog SEO, Local SEO, and Social Media — one dashboard, no headaches.