Closed-Loop Attribution Demo

Paid media → CRM → revenue

Closed-Loop Attribution, Four Home Service Brands

Trailing twelve months. Every figure below is traced from an ad click through to a sold job in the CRM — not to a form fill.

Demo
This is a demonstration build on synthetic data. It is not a client report and no figures here describe a real company. It shows the reporting structure and the technical wiring underneath it, at the scale of a four-brand home services operation (about $477K of trailing-twelve-month media spend). Real client work is under NDA and is not reproduced here, anonymized or otherwise.
Brands

Sold revenue is booked jobs that closed and invoiced in the CRM. CAC is media spend divided by sold customers — not by leads.

Ad spend to sold revenue

Where the money and the people actually go. The step rates between stages are where the argument lives.

Google vs Meta

The comparison that only exists once the CRM is connected.

MetricGoogleMetaGap

Sold revenue by month

Attributed to the ad click that produced the job, at the month the job was sold.

Blended customer acquisition cost

Media spend per sold customer, all brands in view.

By brand

Qualified means a real job opportunity in the service area, not a wrong number or a solicitation.

BrandSpendLeadsQual.BookedSoldRevenueCPLCACROAS

How the attribution is wired

The dashboard is the easy half. This is the half that makes the numbers true.

  1. Capture. GCLID and fbclid are written to a first-party cookie on landing and pushed into every form submission as hidden fields. Calls get a tracking number with dynamic number insertion, so the call record carries the same click identity. Calls still ring through to the office line.
  2. Lead record. Call and form leads land in one lead table with click ID, campaign, keyword or ad set, landing page and timestamp — before any human touches them.
  3. CRM join. When the CSR creates the customer in the CRM, the lead’s click ID rides along on the customer record. That single field is what makes everything downstream possible; if it is not written at creation, the join is guesswork forever.
  4. Outcome states. Qualified, booked, completed and invoiced come back from the CRM on a schedule, keyed to that same record. Revenue is invoiced revenue, not estimated ticket.
  5. Feedback loop. Sold jobs go back to Google Ads as offline conversion imports and to Meta as CAPI events with the original click ID and the real job value — so bidding optimizes toward sold jobs instead of toward form fills.
  6. Reconciliation. A weekly unmatched report: leads with no CRM record, CRM jobs with no lead source, click IDs that arrived past the attribution window. The match rate is reported alongside the numbers, because a dashboard that hides its own coverage is not evidence.

Synthetic demonstration data, generated deterministically in the page. The structure and the technical method are real; the companies, jobs and dollars are not. Built by Joe Smith, JJSmith Group — Bardstown, Kentucky.