Spend is live; appointments run a day behind. Refresh re-queries
Supermetrics in real time. Appointments and leads come from LACB's warehouse,
which loads from the QuoteRite export once daily at 4:00 AM — complete
through yesterday, effectively absent for today. A zero on today is expected.
A phone call is a touch, not a lead. CallTrackingMetrics stamps calls with the
same medium/campaign vocabulary as the web forms, so callers
are used to credit appointments and revenue to a channel — but Leads counts only
records that exist in QuoteRite. Otherwise cost per lead would be measured against
people who never entered the CRM, and a channel that drives calls would look
artificially cheap.
So a channel can show more appointments than leads. Snap has 1 web lead and 2
appointments, because its volume arrives by phone. That is the point of including
calls, not a fault in the numbers.
First touch or last touch — your choice, top right. Every appointment credits
exactly one touch under each model: the earliest web form or call that pre-dates it
(what found the customer) or the most recent (what closed them). Someone
who filled a Meta form and later rang a YouTube number counts to Meta under first touch
and YouTube under last. Neither splits credit — that would be multi-touch, which this
isn't.
73% of appointments are attributed (71% of revenue) since 1 August. The other
27% have no web form and no matched call — repeat customers, referrals and walk-ins —
so they appear nowhere here. Unattributed in the table means a web lead whose
UTMs were empty, which is a different thing.
YouTube is now split out of Google on the campaign name, so it carries
its own spend rather than hiding inside Google's.
Each appointment counts once. It is assigned to the most recent lead
that pre-dates it and matches by name — not to every lead sharing that name,
which was double-counting 9% of revenue. Internal test records are excluded.
First vs last touch barely differs here, and retargeting is why that matters.
93% of appointments have a single recorded touch, so the toggle moves ~5% of credit.
A touch is a lead record or a tracked call — never an ad impression — so the
prospecting ad that created the demand leaves no trace, and the retargeting ad that
harvested it takes full credit. Of 116 appointments closing on
LA Re-Targeting, only 5 show any earlier touch. Retargeting is
structurally over-credited in this table and in every last-touch report; the only
honest way to value it is a holdout test.
All channels combined cannot exceed the appointments actually booked. The
header shows that ceiling and how much of it this view places on a channel. Each
appointment credits exactly one channel here, so the columns sum to reality. Ad
platforms do not work that way \u2014 Meta, Google, YouTube and Bing together claim
~92% of every appointment booked, which would leave almost nothing for repeat
customers and referrals. Their numbers are a ceiling; these are a floor.
Revenue is a cohort figure, not a bookings figure. It counts sales from
appointments created in the selected range, however long after they closed \u2014
that is what makes it comparable to the spend in that range. It is NOT the revenue the
business booked in those dates, which is roughly double on a recent 30-day window
because older cohorts are still closing. Mature months run $2.0\u20132.2M; a month one
month old sits near $1.36M and keeps filling for ~60 days.
Rank on cost per appointment, then ROAS. 75\u201393% of appointments are
booked the same day the lead is created \u2014 most ads now run straight to booking
\u2014 so lead-to-appointment rate measures the funnel shape, not ad quality, and cost
per lead only differs from cost per appointment by the people who stopped short.
Cost per appointment is the comparable number across every flow; ROAS decides it once
the window is ~45 days old.
Unattributed is phone, organic and direct. Real revenue with no channel
to credit — not a tracking fault, and it has no spend, so it shows no ROAS.
Campaign and Ad spend joins on the UTM the ad carries, not on the platform's
campaign name — those differ (LA_Custom_Blinds_Search_Los Angeles_NEW NB
vs la-custom-blinds_LA_search), so a name join would be wrong. Meta ads
with a literal utm_campaign cost out exactly; ads using a
{{campaign.name}} macro, and all Google/Bing campaigns (whose UTMs live in
a tracking template the API does not expose), show no spend. Rank those on Leads,
Sales appts and Revenue until the tagging is fixed.