โ†
AI for Skilled Trades & Home Services
Proficient ยท M5 ยท lesson 5 of 29 ยท queued
Preview โ€” browse every lesson free. Enroll to mark lessons complete, open partner links and save your progress. Login & enroll โ†’
AI Lead-Source Attribution Across CallRail, GLSA, NiceJob, Hatch, Direct Mail
๐Ÿ“–
now learning

AI Lead-Source Attribution Across CallRail, GLSA, NiceJob, Hatch, Direct Mail

15 min

The owner's #1 marketing question โ€” asked at 4:30 p.m. every Friday and again at 7:42 a.m. every Monday โ€” is not "what did we spend." Every owner knows what they spent. The question is "which channel actually paid." For most shops running $4,400-$8,000 a week across Google LSA, PPC, NiceJob review nudges, Hatch nurture sequences, direct mail, and the after-hours answering service, the answer is a shrug, a gut, and a marketing manager's two-tab spreadsheet that nobody fully trusts. The 2026 AI-built version is a CallRail-anchored, ServiceTitan-revenue-tied attribution model surfacing revenue per lead (RPL) by source, weekly, with a confidence score on every line. The confidence score changes the conversation โ€” when the model is 92% confident GLSA produced $14,200 of closed revenue last week and 41% confident direct mail produced $3,100, the owner spends differently than when both numbers arrive as flat dollar figures. This lesson is the named workflow the L3 manager builds, runs, and defends in front of the owner. Inputs: CallRail Conversation Intelligence, GLSA spend feed, NiceJob review attribution, Hatch nurture conversion logs, direct mail tracking numbers, ServiceTitan closed-revenue data. Output: a one-page lead-source-to-revenue waterfall with RPL, cost per booked call, cost per closed customer, and confidence per attribution. Manager runs it Friday at 10 a.m.; owner reads it Friday at 4:30 p.m.; marketing reallocation lands Monday at 8 a.m.

Why Attribution Is the Manager's Problem, Not the Vendor's

Every marketing platform in the shop's stack ships its own attribution. GLSA reports calls and "leads." CallRail reports inbound sources by tracking number. NiceJob reports review-influenced bookings. Hatch reports nurture-touch conversions. The direct mail house reports response codes. ServiceTitan reports closed revenue by job and customer. Six feeds. Six methodologies. Six confidence levels. None agree on what counts as a "lead" or a "closed deal," and none roll up to a single defensible RPL by source.

The vendor solution that does not work in 2026 is "buy the all-in-one attribution platform." There isn't one for the trades that actually integrates ServiceTitan, Sera, or HCP closed-revenue at the ticket level with CallRail Conversation Intelligence, GLSA bid data, NiceJob review-influence, Hatch nurture, and direct mail tracking โ€” all the way through to a confidence-scored multi-touch model. CallRail's home services bundle gets closest. ServiceTitan's marketing pro module gets close. Neither fully solves it. The gap is the manager's to fill, and AI is the tool that fills it in 2026 without a six-month integration build.

The L3 manager's discipline is exactly this. Pull each vendor's weekly attribution feed. Paste into a model with the shop's system prompt naming the data schema, trade, average-ticket bands, lead-source taxonomy, and customer-journey patterns. Output a unified one-page waterfall with RPL, cost per booked call, cost per closed customer, and a per-source confidence score. Manager edits 8 minutes. Friday recap consumes the unified attribution as a single source of truth. Vendor feeds remain separate; the manager's AI model is the integration layer.

The Six Lead-Source Feeds and What Each Actually Measures

Before the attribution model runs, the manager names what each feed measures and where each feed lies. Lying is the wrong word and the right one โ€” every vendor attribution algorithm overstates its own contribution because that is what the vendor sells. The manager's job is to read each feed knowing the bias.

CallRail Conversation Intelligence โ€” The Foundation

CallRail assigns a tracking number to each marketing channel (GLSA, PPC, organic, NiceJob email, Hatch text, direct mail piece, sign on the truck, after-hours answering service forward). Every inbound call carries the tracking-number-to-source attribution. CallRail Conversation Intelligence layers on top: transcribes the call, tags intent (service / sales / supplier / complaint / warranty), scores sentiment, flags missed opportunities, and now in 2026 ties the call to the customer record in ServiceTitan or HCP via phone number match. The feed produces: calls per source per week, answer rate per source, booking-conversation rate per source, and a customer-ID linkage where match succeeds. Confidence on the source attribution: high (95%+). Confidence on the conversion-to-booking flag: medium (the AI is reading the conversation and can be tricked by an ambiguous outcome).

GLSA โ€” The Largest Line Item with the Noisiest Feed

Google Local Service Ads ships the cleanest cost data (every lead is priced per call) and the noisiest conversion data (Google guesses at lead quality from its own signals). GLSA's published lead-quality flags are useful but not authoritative. In 2026 GLSA's ROAS reporting hooks ServiceTitan or HCP closed-revenue back through the bid API for AI bidding, but the closed-revenue tie is not always per-call attributed cleanly. The manager treats GLSA's "ROAS" line as directional, then re-computes RPL from CallRail's tracking-number feed plus ServiceTitan's closed-revenue join. GLSA spend feed confidence: high. GLSA conversion attribution confidence: medium-to-high depending on integration maturity.

NiceJob โ€” Review Influence and the Attribution Problem

NiceJob attributes bookings to reviews when the inbound call follows a recent review interaction (the customer saw the review, clicked through, called). NiceJob's measurement is necessarily noisier than CallRail's tracking-number model โ€” most customers who read a review don't tell the CSR they read a review. NiceJob estimates via timing windows and click-through tracking. Confidence: low-to-medium. The manager treats NiceJob's attribution as a directional influence signal, not as a primary attribution source. Where NiceJob shines: trend over time on review-velocity-to-booking-rate correlation. Where it lies: claiming a booking that GLSA also claims.

Hatch Nurture โ€” The Stale-Lead Revival Line

Hatch attributes bookings to nurture sequences when a dormant lead in ServiceTitan re-engages after a Hatch text or email. The mechanic is cleaner than NiceJob's because Hatch sees the dormant-lead-ID and the re-engagement event directly. Hatch's published 2026 case studies show 30-45% reactivation lift on stale leads at $300-$600/mo. Confidence: medium-high on the reactivation event, lower on the revenue tie (the re-engaged lead may book through a non-Hatch channel and the attribution gets contested). Manager pulls Hatch's monthly conversion report, validates against ServiceTitan closed-revenue on re-engaged lead IDs, and reports the net contribution after de-duplication with other channels.

Direct Mail โ€” The Channel with the Lowest Confidence Score

Direct mail tracking in 2026 is still the analog cousin in the family. The shop prints a tracking phone number on the piece, the response comes in through CallRail tagged to that number, and the attribution is clean โ€” for the calls that come in on the printed number. The leakage is the calls that come in on the main line because the homeowner kept the postcard for a week, forgot the tracking number, googled the shop, and called the regular number. Direct mail probably gets credit for half of what it actually drives. The manager runs direct mail on a 3-6 month delay attribution window (postcards sit on fridges) with a documented confidence band of 30-50%. The AI model surfaces this band explicitly so the owner sees the uncertainty.

ServiceTitan / Sera / HCP Closed Revenue โ€” The Truth Source

The single non-negotiable feed. Every job closed in the platform with closed-revenue at the ticket level. Per-customer, per-job, per-tech, per-date. This is the truth against which every channel's claimed attribution is reconciled. The manager's AI model joins every CallRail-attributed call to the corresponding ServiceTitan closed-job record via phone number match, customer ID match, and address match. Confidence on the join: high when phone number matches (90%+); medium when only address matches (joining a primary-line callback to a tracked-number original call); lower when only customer name matches across multiple jobs.

Building the Attribution Prompt โ€” The Manager's System Message

The attribution model is one prompt the marketing manager pastes feeds into every Friday morning. The system prompt is the part that doesn't change week to week, and it carries the manager's domain knowledge. The user prompt is the part that changes โ€” the new week's feeds pasted in. The output is the one-page lead-source waterfall.

The system prompt names the shop, the trade (HVAC, plumbing, electrical, roofing โ€” different attribution patterns), the average ticket bands (service vs. replacement matter for RPL math), the lead-source taxonomy (GLSA, PPC, organic, NiceJob review, Hatch nurture, direct mail, referral, repeat customer, after-hours answering service, sign-on-truck), the customer-journey patterns that hold in this market (high direct-mail latency, NiceJob-to-GLSA crossover, Hatch reactivating 11-month-old leads that close as replacement), and the confidence-scoring rubric. The rubric scores each attribution line as high (phone number match plus single-source touch), medium (phone match plus multi-touch ambiguity), or low (no phone match, source inferred). The output schema is fixed: source / leads / answered / booked / closed / closed-revenue / cost / RPL / cost-per-booked-call / cost-per-closed-customer / confidence.

The user prompt is the weekly feeds dump. CallRail tracking-number rollup pasted in. GLSA spend and lead-quality report pasted in. NiceJob influence report. Hatch conversion report. Direct mail tracking-number rollup (extracted from CallRail). ServiceTitan closed-job-by-customer report. The model joins by phone number, customer ID, and address; reconciles the conflicting attributions (GLSA claims this customer, NiceJob also claims this customer โ€” model assigns to the higher-confidence source and notes the conflict); and produces the waterfall.

The discipline that protects the output: the system prompt forbids the model from filling in revenue figures that aren't in the source data. If ServiceTitan shows $0 closed revenue on a CallRail-attributed call, the line reads $0 and the confidence drops, regardless of what GLSA's ROAS number suggested. Hallucinated closed-revenue is the failure mode that destroys trust in the attribution model on the first false claim the owner spots. Lock the prompt to verified inputs only.

The RPL-By-Source Output and What It Looks Like

The output is a one-page table. Rows: each lead source. Columns: leads received, answered, booked, run, closed, closed-revenue, marketing cost, RPL (closed-revenue / leads), cost per booked call, cost per closed customer, confidence score. A trailing narrative summarizes the top 3 RPL channels, the bottom 2, confidence flags below 60%, and a "what to do next week" recommendation grounded in the data.

A representative week at a 7-truck HVAC shop. GLSA: 42 leads, 28 booked, 19 closed, $34,200 closed revenue, $4,400 spent, RPL $814, cost per closed customer $232, confidence 88%. CallRail organic: 19 leads, 10 closed, $18,400 closed, $0 direct cost, RPL $968. NiceJob review-attributed: 11 leads, 8 closed, $12,800 closed, $450 spent, RPL $1,164, confidence 64% (review-influence overlap with organic). Hatch nurture: 8 re-engaged stale leads, 4 closed, $7,200 closed, $450 spent, RPL $900, confidence 78%. Direct mail: 6 tracked-number leads plus an estimated 5 on main line, 4 closed, $9,400 closed, $1,200 spent, RPL $855, confidence 42%. After-hours answering service: 4 leads, 2 closed, $2,400 closed, $1,140 cost, RPL $600, confidence 91%.

The week's narrative writes itself off the table. NiceJob's RPL is highest but confidence is low โ€” the manager flags this to test the review-influence attribution next week by tagging a NiceJob campaign with a unique CallRail number. GLSA is the volume workhorse at high confidence; cost-per-closed-customer $232 sits inside the trades band of $180-$350. Hatch's $900 RPL on $450 spend is the cleanest positive ROI signal; the manager allocates an extra $150 to Hatch next week. Direct mail's 42% confidence is the line the owner asks about; the manager defends it as directional, recommends a tracking-number-only campaign next quarter to tighten the band. The after-hours service is the worst RPL; the manager flags replacement with an AI receptionist (Avoca, Jobber AI Receptionist, Housecall Pro AI Agents) โ€” the multi-thousand-dollar annual margin recovery the L2 Chapter 2 lesson named.

The Confidence Score and Why It Changes the Owner Conversation

The confidence score is the single feature of this attribution model that didn't exist in the pre-AI version of the same workflow. Pre-AI, the marketing manager's lead-source report shipped as flat dollar figures with no uncertainty markers. The owner read $9,400 for direct mail and treated it as $9,400. Pre-AI, when the owner asked "are you sure?" the manager had nothing to answer with except "that's what the spreadsheet says." The conversation ended there or escalated to friction.

With AI surfacing a confidence score on every line, the conversation upgrades. The owner reads $9,400 with a 42% confidence band and asks the better question: "What would it take to get that confidence higher?" The manager has a documented answer: a tracked-number-only direct mail campaign, a 6-month attribution window, an inbound-script tweak that asks "did you receive our postcard recently" on every call. The owner approves the plan because the cost is named and the confidence delta is named. Marketing-spend decisions move from gut to documented uncertainty management. The friction that used to live in this conversation moves to a constructive frame.

The same dynamic plays out on every other low-confidence line. NiceJob at 64%: how do we test it? Run a NiceJob-only campaign with a dedicated tracking number for 90 days. Hatch at 78%: how do we tighten? Cross-reference Hatch re-engaged lead IDs against CallRail tracking numbers and rebuild the join. GLSA at 88%: this is fine, no further investment in tightening. The manager prioritizes attribution-quality work the same way the owner prioritizes operational improvements โ€” by ROI on the uncertainty reduction.

Weekly Cadence and How the Friday Recap Consumes the Output

The named workflow runs Friday morning at 10:00 a.m. The marketing manager opens the attribution model. Pastes in the six weekly feeds (CallRail rollup, GLSA report, NiceJob influence, Hatch conversion, direct mail tracking, ServiceTitan closed-jobs). 4-6 minutes of paste work. Hits run. Model produces the one-page table plus narrative in 90 seconds. Manager spends 8 minutes editing โ€” flagging known anomalies (GLSA outage on Tuesday, direct mail that mailed late, NiceJob campaign paused mid-week), tuning the next-week recommendation, adjusting language to match the shop's voice.

By 10:25 a.m. the attribution waterfall is finished. It becomes the input for the Friday recap workflow in Lesson 3 โ€” the recap's "GLSA ROAS" line pulls directly from the attribution model's RPL column, and the recap also consumes the reallocation narrative bullet.

The Monday standup at 8:00 a.m. opens with marketing reallocation. Manager presents one slide pulled from the attribution table: this week we shift $400 from after-hours answering service to Hatch nurture, based on the RPL deltas. Owner approves or pushes back. Reallocation lands by 9:00 a.m. Monday. The full cycle โ€” Friday attribution build at 10:00 a.m., Friday recap at 4:30 p.m., Monday reallocation at 8:00 a.m. โ€” runs every week without the multi-day lag that used to characterize marketing-spend decisions at most shops. The lag was the killer. Eliminating the lag is the AI workflow's primary value beyond the confidence score.

Failure Modes the Manager Defends Against

Four failure modes turn the attribution model from asset to liability if the manager doesn't guard against them. Each has a documented fix.

Failure mode 1: AI fills in closed-revenue numbers the source feeds don't support. The model invents a $1,200 close on a CallRail-attributed call that ServiceTitan shows as $0. Symptom: the next week the owner spots a customer the shop never serviced showing $1,200 in attribution. Trust in the report collapses. Fix: the system prompt locks the model to verified ServiceTitan closed-revenue figures and requires explicit "no closed revenue found" rather than a fabricated number. The manager validates 5 random lines per week against ServiceTitan directly.

Failure mode 2: Double-counting across channels. The same closed job gets attributed to GLSA, NiceJob, and Hatch because three channels touched the customer in the 60 days before close. The waterfall sums to more revenue than the shop actually closed. Fix: the system prompt requires deduplication on customer ID with a documented attribution rule โ€” first-touch, last-touch, or weighted multi-touch โ€” chosen by the manager and stated explicitly in the output. Most shops use last-touch with a 60-day window; the rule lives in the prompt.

Failure mode 3: Confidence score becomes performative rather than honest. The model learns the manager wants high confidence numbers and starts producing 85%+ on every line. Fix: the rubric for confidence scoring lives in the system prompt with explicit anchors (phone-number match = high, address-only match = medium, name-only match = low, no match = unattributed). The manager runs a quarterly audit of 10 attributions against the rubric.

Failure mode 4: The attribution model becomes a black box the manager can't defend. Owner asks "why is direct mail at 42% confidence?" and the manager doesn't have an answer because the model produced the score. Fix: every output line carries the inputs that drove the score (phone-match yes/no, time-window match yes/no, customer-ID match yes/no, single-source vs. multi-touch). The manager can decompose any line in the table back to the source data in under a minute.

The Manager's Deliverable for This Lesson

By the end of this lesson, the marketing manager or service manager owning marketing reporting builds the shop's named attribution workflow. The deliverable has three parts. The first part is the system prompt โ€” saved in a shared Notion or Google Doc, version-controlled, with the shop name, trade, average-ticket bands, lead-source taxonomy, attribution rule (last-touch with 60-day window or other), and confidence rubric. The system prompt is the artifact the next marketing manager inherits when this one leaves.

The second part is the data-feed extraction process. A documented Friday-morning routine: which CallRail report to export, which GLSA report, which NiceJob view, which Hatch download, which direct mail tracking summary, which ServiceTitan closed-jobs report. Format consistent week to week; no improvisation. 4-6 minutes start to finish.

The third part is the output template โ€” the one-page lead-source waterfall โ€” saved in the same Notion or Doc, with last week's, this week's, and trailing 8-week trend lines visible. The output template includes the confidence score column and the narrative bullet. The Friday recap workflow (covered in Lesson 3) consumes this template as one of its seven inputs.

Three months in, the shop has a defensible attribution model and a 12-week RPL trend. The marketing manager defends it in front of the owner, coach, peer group, or PE partner. The owner spends every Monday morning informed instead of guessing. Cost-per-closed-customer by channel becomes the input to every next-quarter budget conversation. Without the workflow, marketing spend stays the noisiest expense line. With it, marketing becomes a measured channel with documented ROI per source โ€” what the L3 manager is paid to deliver.

Key Takeaways

  • The owner's #1 marketing question is "which channel actually paid" โ€” and the answer requires unifying six vendor attribution feeds (CallRail, GLSA, NiceJob, Hatch, direct mail, ServiceTitan/Sera/HCP closed-revenue) into a single confidence-scored waterfall. No vendor sells the unified version; the L3 manager builds it with AI as the integration layer.
  • RPL โ€” revenue per lead โ€” by source is the truth metric. Computed as ServiceTitan closed-revenue / leads-received per source per week. Reported alongside cost-per-booked-call and cost-per-closed-customer for full-funnel visibility.
  • Confidence scores change the owner conversation from gut to documented uncertainty. High confidence = phone-number match plus single-source touch (typical 85%+). Medium = phone match plus multi-touch ambiguity (60-80%). Low = name-only or inferred source (under 60%). Direct mail typically lands at 30-50% confidence in 2026.
  • The named workflow runs Friday at 10:00 a.m. Six feeds pasted into the attribution prompt; 90 seconds to generate the table; 8 minutes of manager editing; output feeds the Friday recap at 4:30 p.m.; Monday 8:00 a.m. standup opens with the reallocation slide. Cycle time from data to spend decision: 70 hours, down from 5-10 days pre-AI.
  • The system prompt is the artifact that survives manager turnover. Names the shop, trade, ticket bands, lead-source taxonomy, attribution rule (last-touch with 60-day window or equivalent), and confidence rubric. Version-controlled in shared Notion or Google Doc; inherited by the next marketing manager.
  • Four failure modes the manager guards against: hallucinated closed-revenue (lock prompt to ServiceTitan-verified figures), double-counting across channels (explicit deduplication rule), performative confidence inflation (rubric-anchored scoring with quarterly audit), and black-box outputs (every line decomposable to source inputs in under a minute).
  • The waterfall's narrative section writes itself off the table โ€” top 3 RPL channels, bottom 2, confidence flags below 60%, and a "what to do next week" recommendation grounded in the data. Reading time for the owner: under 90 seconds.
  • Three-month outcome: defensible attribution model, 12-week trend on RPL by source, documented cost-per-closed-customer by channel, marketing as a measured P&L category instead of the noisiest expense line. This is the L3 manager's contract with the owner.