Understanding Lead Attribution
SearchLight automatically classifies every integrated, trackable inbound lead — whether it came through a Google Ads campaign, an organic Google search, a Google Business Profile, a form fill, a chat, or an online booking — into a Category and a Channel. This article explains how that classification works, where the data comes from, and what to do when something looks off.
What Is Lead Attribution?
When a potential customer reaches out by calling through a tracking number, filling out a form on the site, booking an online appointment, or chatting the business, SearchLight needs to know how they found you. That answer is attribution: the process of tracing a lead back to the marketing activity that generated it.
Getting attribution right matters because it determines which campaigns get credit for revenue. If a lead is miscategorized it distorts reporting and makes it harder to understand what's working and what isn't.
SearchLight's model is deliberately simple to reason about: it is not multi-touch and not weighted. Each lead is attributed once, from the best available evidence, and revenue follows that lead.
How a Lead Is Resolved
For every lead, SearchLight works down a fixed ladder and stops at the first rung that matches:
- Google call report match — the call matched Google's own call-reporting data for your ads.
- Ad click match — a click ID (such as a
gclid) on the lead matched a recorded ad click. - Campaign ID match — a campaign ID carried by the lead matched a real campaign in your connected ad accounts.
- Direct mail match — the tracking number dialed matched a mailer drop from an integrated direct-mail partner.
- Keyword classification — none of the above matched, so SearchLight classifies whatever attribution values the lead carries (UTM parameters, tracking names, CRM campaign fields, the referrer) using the keyword rules below.
Rungs 1–4 are strong, verified evidence and decide the category and channel directly. The keyword rules in the rest of this article apply at rung 5 — which is why good UTM and call-tracking hygiene matters so much: it determines what SearchLight has to work with when no click ID or platform match is available.
What Are UTM Parameters?
UTM parameters (Urchin Tracking Module) are small pieces of text appended to a URL that tell analytics platforms, including SearchLight, where a visitor came from and how they got there.
A URL with UTM tags looks like this:
https://yoursite.com?utm_source=google&utm_medium=cpc&utm_keyword=ppc
When someone clicks that link and then calls or submits a form, those UTM values travel with the session and are captured by SearchLight through the connected call tracking provider and our Photon tag on your site domains. Here's what each parameter means:
| UTM Parameter | What it captures | Example |
|---|---|---|
utm_source | The platform or origin of the traffic | google, facebook, bing |
utm_medium | The marketing channel type | cpc, organic, email |
utm_campaign | The specific campaign name | spring-hvac-promo |
utm_keyword | The search keyword or tag that triggered it | lsa, ppc, direct-mail |
utm_content | Used to differentiate ads or creative | banner-a, text-link |
Of these, utm_source, utm_medium, and utm_keyword are the fields most important for accurate attribution within SearchLight.
Where Do "Keywords" Come From?
The values SearchLight evaluates at the keyword-classification step can come from more than one place. Understanding the sources helps explain why a lead was categorized the way it was.
1. UTM Parameters on Web Sessions
When a visitor arrives via a tagged URL, the UTM values are passed into the session. If a form lead is submitted during that session, those values are attached to it and captured by our Photon tag. This is the most common and reliable source.
2. Call Tracking Platforms
Call tracking works by assigning unique phone numbers to different marketing sources. When someone calls a number associated with a Google Ads campaign, the call platform passes the tracking name and, when available, a click ID along with the lead record. SearchLight ingests those values and applies the same classification logic as it would for a UTM-tagged web visit.
Static tracking names take priority over per-session UTM values. A call-tracking pool or CRM call campaign whose name contains a category keyword (for example a pool named "… Organic Website Pool") will classify every call it receives that way, even when the session data says otherwise. Name pools and campaigns neutrally, or with the keyword that genuinely matches the traffic they receive.
3. CRM Fields
Some CRMs offer native call tracking. When an inbound call tracking number is used — such as a primary call tracking number on a Google Business Profile — SearchLight uses the campaign name, category, source, or medium noted on the tracking number to help bucket the lead.
Some discrepancies between the CRM and SearchLight trace to exactly this: SearchLight attributes from the call attribution data, while the CRM may show whatever a CSR or answering service manually assigned.
The Categories
At the keyword-classification step, SearchLight first assigns a broad category by testing the lead's attribution values against trigger terms, in order — the first category that matches wins:
- Employment — values containing "employment" (job-applicant traffic, kept out of your marketing numbers).
- Artificial Intelligence — the visit or lead came from an AI assistant (ChatGPT, Copilot, Perplexity, Claude, Gemini) named in the source or referrer.
- Advertising — a paid click ID is present (
gclid,gbraid,wbraid,msclkid), or a value contains terms likegls,glsa,lsa,paid,<platform>ads(e.g. googleads, fbads),advertising,sem,ppc,pmax,performance max,cpc, oradwords. - Organic — a value contains terms like
<platform>organic,seo,gmb,gbp,google my business,google business profile,google maps, orreserve with google— or the visit carries a real referrer domain. - Direct Marketing — terms like
direct mail,postcard,mail,mailer,print,email,eml. - Direct — a value contains the word "direct", or there is no referrer at all.
- Advertising (fallback) — a bare platform name (google, facebook, bing, yelp, angi…) with no other signal.
- Other — nothing matched.
Then a second pass assigns the specific channel within the category.
Advertising Channels
| Matched signals | Attribution Channel |
|---|---|
gmb / gbp / google business profile together with a ppc token | Google Business Profile Ads |
gclid, gbraid, wbraid click IDs | Google Ads |
lsa, local services | Google LSA |
google, adwords, pmax, performance max | Google Ads |
msclkid click ID, microsoft, bing, msft, yahoo | Bing |
fbclid click ID, facebook, fb, meta | |
youtube | YouTube Ads |
yelp | Yelp |
angi | Angi |
| Anything else | Paid Other |
Why does this matter for your reporting? A lead that lands in "Paid Other" or "Other" is usually a signal that the UTM keyword or call tracking tag doesn't match any more specific channel-level pattern. The fix is to get campaign IDs or click IDs flowing, or to rename the campaign or tracking number — it is not a SearchLight setting.
Organic Channels
| Matched signals | Attribution Channel |
|---|---|
gmb, gbp, google my business, google business profile, google maps, reserve with google | Google Business Profile |
google (or a Google referrer) | Google Organic |
microsoft, bing, msft, yahoo | Bing Organic |
facebook, fb, meta | Facebook Organic |
yelp | Yelp Organic |
angi | Angi Organic |
duckduckgo | DuckDuckGo Organic |
| Anything else | Other Organic |
Direct Marketing Channels
| Matched signals | Attribution Channel |
|---|---|
direct mail, postcard, mail, print, mailer, and variations using dashes or underscores | Direct Mail |
email, emails, eml |
The exact trigger-term lists evolve as new platforms and patterns appear — the tables above show how the logic works rather than an exhaustive, frozen list.
The Attribution Window
Standard SearchLight dashboards attribute on a 90-day first-touch basis: within the window, the customer's first lead — the first hand-raise — gets credit for the CRM activity that follows it (estimates, bookings, closed revenue). Revenue keeps crediting that first lead for up to 90 days, even across multiple jobs.
Two consequences worth knowing:
- Ranges are evaluated independently. Weekly totals will not sum exactly to the monthly total, and a customer's revenue can appear under a different channel in a different date range, because each range finds its own first touch.
- Comparisons with your CRM will differ by design. Most CRMs attribute last-touch over a shorter window (ServiceTitan is typically 30-day last-click), and manual source assignments by CSRs drift. SearchLight rebuilds the association from the tracked lead data instead, which is exactly why the numbers don't always match.
Common Questions
Why is a lead showing as "Other"?
The most common cause is a UTM keyword or call tracking attribution that doesn't match any known pattern as outlined above.
Tip: Check the raw attribution on the conversion or lead first. You can select "Attribution Detail" as a Dimension in the Performance By view to see the UTM parameters or call tracking number in use — it shows exactly what SearchLight had to work with.
If the campaign or attribution detail is blank, the session may not have been tagged at all. With no recognized keyword, SearchLight has nothing to evaluate and the lead lands in Other. For phone calls, this typically means the call came through the main business number rather than a tracked number. For form fills, it means the user arrived at the site without clicking a tagged link.
Tips for Agency Partners & Campaign Setup
If you're an agency managing campaigns for a SearchLight client, here's how to ensure leads route correctly:
- Get click IDs and campaign IDs flowing. Leads that carry a
gclid/msclkid/fbclidor a real campaign ID resolve on the strongest rungs of the ladder and never depend on keyword matching at all. - Align UTM keywords to known patterns. Use terms like
ppc,cpc,sem,lsa, ororganicin yourutm_keywordorutm_mediumfield. Avoid freeform campaign names in the keyword field unless they also contain a recognizable trigger term. - Set up call tracking pools with Dynamic Number Insertion. DNI is the best way to carry each session's attribution through to the call. All of our integrated call tracking providers support it.
- Name tracking pools and campaigns carefully. Static tracking names beat session UTMs, so a pool name that contains the wrong category keyword will misroute every call it receives.
- Direct mail / email campaigns. Tag the call tracking pool or form UTM for any direct mail or email campaign with a term from the Direct Marketing list — "direct-mail", "postcard", "email" — so those leads route there rather than to Other.
For questions about a specific account's attribution setup, reach out to your account manager.