NEXSUM_LABS
  1. Home
  2. Work
  3. A cleaning franchisor separated franchisee leads from customer leads and fixed its national reporting
Book a call

[ Case study ]

Commercial cleaningGoogle Tag ManagerGA4Standardized data layerCRM lead-type mapping

A cleaning franchisor separated franchisee leads from customer leads and fixed its national reporting

The franchisor's national site generates two very different leads — prospective franchisees and facilities managers requesting cleaning bids — but one conversion event served both, so national reporting mashed the two and franchise-development spend was judged against cleaning inquiries.

CLIENT a commercial-cleaning franchisor — FOCUS Classify at the form, not in the report

Google Tag ManagerAnalytics & CROGoogle Tag ManagerCommercial cleaningRepresentative example
Client
a commercial-cleaning franchisor
Industry
Commercial cleaning
Engagement
5 weeks — growth pod — analytics specialist
Service
Analytics & CRO / Google Tag Manager
Headline outcome
Franchise-development and cleaning-bid leads reported separately with correct conversion windows: One mashed funnel → two clean funnels, read from National reporting dashboard

Representative examplesEvery case study in this library is an illustrative composite of the kind of engagement we deliver — written to show our method and standards, not to name clients.

Where they started

The franchisor sells two entirely different things from one national site: franchise territories to entrepreneurs on a months-long discovery path, and cleaning contracts to facilities managers who need a bid this week. Regionally owned franchisees add hundreds of local landing pages, each built by whichever local vendor the franchisee chose. A shared CRM receives every lead, and the franchise-development team and the operations team each judge national marketing by their own funnel. Before us, one conversion event served both audiences, so neither team trusted the reporting and both rebuilt their own.

What it was costing

The franchisor's national site generates two very different leads — prospective franchisees and facilities managers requesting cleaning bids — but one conversion event served both, so national reporting mashed the two and franchise-development spend was judged against cleaning inquiries.

What they could see

  • National reporting mashed slow franchise inquiries with fast cleaning bids, so both teams discounted the same dashboard.
  • Franchise-development spend was judged against cleaning-bid volume, and the development director said so in every quarterly review.
  • Local landing pages tracked inconsistently — some franchisee-built pages fired nothing, some fired duplicates.
  • Leads arrived in the shared CRM unclassified, and someone downstream re-sorted them manually every week.

The constraints we worked inside

  • Franchise inquiries convert slowly through a discovery process; cleaning bids convert fast — the two need different windows and different reporting.
  • Regional franchisees run local landing pages; tagging must scale to hundreds of pages without per-page babysitting.
  • The CRM is shared; lead types must arrive already classified.

What had been tried before

The CRM administrator added a lead-type dropdown for the sales teams to classify every inbound lead by hand.
Classification by memory after a phone call is a guess, and retro-edits made the historical record drift; within a quarter nobody agreed on what the field meant.
Franchise development commissioned its own landing pages and analytics, separate from the national marketing setup.
The fork solved politics by duplicating measurement — national totals lost half their leads, and the two systems disagreed on the same inquiries counted differently.

What we proposed

We proposed classifying at the point of capture: explicit form pathways and a standardized data layer determine lead type at the moment of submission, so the CRM, the analytics, and every downstream report inherit a clean classification with no human judgment anywhere in the chain. Local landing pages inherit tracking from one template rather than per-page setup, so national reporting stays consistent as franchisees add pages. Franchise development and cleaning bids get separate dashboards with separate conversion windows — the slow funnel and the fast funnel finally measured on their own terms, from the same container.

Just as important is what we ruled out, and why:

  • Machine-classifying leads inside the CRM based on message contentIt would have made the CRM the place where classification errors live forever, and the seed constraint runs the other way — leads must arrive already classified.
  • Separate analytics properties for franchise and cleaning funnelsIt duplicates tracking, doubles maintenance across hundreds of pages, and recreates exactly the forked-reporting problem the two teams already suffered.

How the work ran

01Classify at the form, not in the report

Lead-type determination happens at capture with explicit form pathways, so every downstream system inherits a clean classification.

02Template the local pages' tracking

Local landing pages inherit a standardized data layer from one template, so national reporting stays consistent as pages multiply.

03Two funnels, two dashboards

Franchise development and cleaning-bid reporting are separate dashboards with separate conversion windows from the same container.

Delivered by the growth pod — analytics specialist over 5 weeks, with working increments reviewed with the client every week.

The stack, and the reasoning

Google Tag Manager
One container with a templated data layer scales to hundreds of franchisee-built pages without per-page babysitting — the constraint that killed every earlier cleanup.
GA4
Two conversion definitions in one property keep the funnels separate and the totals honest, which two properties could never do.
Standardized data layer
Lead type set at capture by form pathway means no CRM-side guessing, no retro-edits, and a single definition that survives every new landing page.
CRM lead-type mapping
The shared CRM receives pre-classified leads, so the development and operations teams inherit clean splits without changing how their reps work a lead.
Looker Studio
Separate dashboards per funnel, both reading the same classified data, give each team its own view while making the underlying numbers impossible to fork.

What went wrong

Obstacle

A cluster of franchisees in one region had hand-edited their landing pages enough that the standard data layer never initialized, leaving their leads invisible in the new reports.

Handled: We shipped a fallback that classifies from form endpoint when the data layer is absent, ran a page sweep to find every affected URL, and gave the franchise team a fix-it checklist for vendors.

Obstacle

The first quarter of clean reporting still carried legacy CRM leads mislabeled under the old dropdown, and the trend lines quietly inherited the noise.

Handled: We ran a backfill reclassifying historical records against their form pathways, flagged records with no recoverable source, and annotated the dashboards where the older data stays soft.

How we worked together

Cadence
Weekly working calls with the national marketing manager; a biweekly check-in with the franchise-development director; a written status note after every call went to both teams.
Client side
The national marketing manager owned scope; the CRM administrator handled mapping and the backfill; two franchisee-facing staff collected the affected landing pages from regional owners.
Decisions
Conversion windows were decided jointly by the development director and the marketing manager in one session; everything technical we decided and demonstrated on the next call.
They provided
Tag manager and CRM admin access, the form-endpoint inventory across local pages, historical CRM exports for the backfill, and franchisee contact time through the regional managers.

What changed

The headline: franchise-development and cleaning-bid leads reported separately with correct conversion windowsOne mashed funnel → two clean funnels, read from National reporting dashboard. A second check: franchise-development leads correctly attributed to the right campaigns at +29%.

The quarterly review stopped opening with an argument about whose leads the numbers described. Franchise development can finally show its real funnel — long, slow, and worth it — without cleaning bids diluting every step, and the operations team bids work with numbers that arrive pre-sorted rather than hand-fixed every Friday. The marketing manager's week lost its recurring reclassification chore, and new franchisee landing pages now launch tracking correctly by default, which means national reporting stops degrading a little more with every page the network adds.

The result was read from National reporting dashboard against the pre-engagement baseline over the stated window, with a guardrail check on franchise-development leads correctly attributed to the right campaigns. Where platform-reported numbers and business outcomes differ, this record says which layer it is quoting.

What they own now

  • The standardized data layer template that all new franchisee landing pages inherit.
  • Two Looker Studio dashboards — franchise development and cleaning bids — with correct separate windows.
  • The CRM lead-type mapping sheet, including the backfill rules for historical records.
  • A franchisee page checklist vendors use to verify tracking before a local page goes live.
  • The fallback classification rules for hand-edited pages, documented with their limits.

What we would do differently

We would audit historical CRM records for misclassification before reporting — the first quarter of 'clean' data still contained legacy mislabeled leads, and a backfill would have made the trend lines honest sooner.

Analytics & CROGoogle Tag ManagerCommercial cleaningGoogle Tag Manager

Next case study

A dealer group finally saw which ads sell cars after fixing cross-domain tracking across eleven rooftops