Preferências de cookies

Escolha o que podemos usar. Cookies estritamente necessários mantêm você conectado e não podem ser desativados; todo o resto é decisão sua e não muda nada no funcionamento do site. Você pode mudar de ideia a qualquer momento pelo rodapé.

A woman on a phone call writes notes on a clipboard at an office desk while a smiling colleague sits beside her.

Lead source tracking: how to record where every call, form and walk-in came from

Photo by Yan Krukau (opens in a new tab) on Pexels

Every revenue-by-channel report is a sum grouped by one field: the lead source. If that field is free text, half the revenue lands on lines like "Phone", "Website", "Other" and blank, and the channels that bring customers in by phone look like they lose money. Here is how to set the field up as a short fixed list, who fills it in and when, how tracking numbers, hidden form fields and booking links fill it automatically, how to settle conflicting sources, and how to audit it every month.

Contents
  1. What lead source tracking is, and the three fields it needs
  2. Choose a short, fixed list of sources
  3. Who fills in the lead source, and when
  4. Fill it automatically wherever you can
  5. What to do when sources conflict
  6. A worked example: what a messy source column does to channel revenue
  7. Audit the lead source field every month
  8. Where to start this week

Lead source tracking works when one CRM field holds a short fixed list of sources, filled automatically by tracking numbers, hidden form fields and booking links, and by a person at first contact only when nothing automatic exists. Record how people contacted you in a separate field, explain every blank and "Other", and count the field by exact value monthly.

Every revenue-by-channel report is a sum grouped by one column. Whatever is typed in the lead source field becomes a line on the report, spelled exactly as it was typed. "Google Ads", "google" and "Google PPC" are three lines. "Phone" is a line, though a phone call is not a marketing channel. And a blank is a line too, usually one of the largest. Nothing downstream can fix this: not a better dashboard, not a smarter attribution model. The source column is the report.

This post is for businesses that close by phone or in person, such as HVAC contractors, dentists, law firms and real estate agents, where a lead might arrive as a call, a form, a chat, a booking, a walk-in or a handshake at a home show. Below: what the field should hold, who fills it in, what fills it automatically, how to settle conflicts and how to audit it, with a worked example of a messy column hiding half of three channels' revenue.

What lead source tracking is, and the three fields it needs

Lead source tracking is recording, on every lead, the marketing that brought that person to you, at the moment they first make contact. It needs three separate fields: the source (what brought them), the contact method (how they reached you) and the detail (which ad, mailer or event). Mixing them in one field is the most common mistake.

Three fields, three different questions
FieldAnswersExample valuesSet by
Lead sourceWhat brought them to us?Google Ads, Direct mail, Referral — customerThe capturing system, else the first person to speak to them
Contact methodHow did they reach us?Call, Web form, Chat, Booking, Walk-in, EventThe system the lead came in through
DetailWhich ad, mailer or event?Spring tune-up mailer, Home show 2026The capturing system, or typed
Heard about us (optional)What did they say?"My neighbor", "Saw your van"Whoever asked, in their words

"Phone", "Website", "Walk-in" and "Email" are contact methods. When they are typed into the source field they record the route and lose the reason, and the channels hurt most are the offline ones, because a postcard, a truck or a radio ad produces calls. In the worked example below, route values hold $67,000 of one quarter's revenue, most of which a tracking number or a hidden field could have assigned to a real channel.

Choose a short, fixed list of sources

The source field should be a dropdown of eight to fifteen values, each a source you pay for or could act on, plus Referral, Repeat customer and Unknown. Free text guarantees a new spelling every week. A list of forty guarantees nobody finds the right value, and the first one on the list wins.

A starting list for a local service business, to adjust to the channels you actually run:

  • Google Ads: search, Performance Max and display ads bought in Google Ads.
  • Google Local Services Ads: the pay-per-lead ads with the Google Guaranteed badge, kept separate because they are bought and billed separately. Our post on Local Services Ads explains why.
  • Google Business Profile: calls and clicks from your free listing in Maps and search.
  • Organic search: visits from unpaid search results to your website.
  • Facebook and Instagram ads: paid Meta ads, including lead forms.
  • Direct mail, Vehicle and signs, Radio, Event: one value per offline channel you budget for.
  • Referral — customer and Referral — partner: somebody named recommended you.
  • Repeat customer: they bought before and came back on their own.
  • Unknown: somebody checked and could not tell. Not the same as blank, which means nobody checked.

Five rules keep the list honest. One value per channel you would make a budget decision about; the campaign, the mailer drop and the event name go in the detail field. No default value, because a dropdown that opens on "Google Ads" records Google Ads for everyone in a hurry. No "Other", or "Other" only with a required note. Retire a value rather than deleting it, so last year's leads keep their source. And make the field required at creation, so a blank is a failure you can find, not a choice somebody made.

That last point matters more than it looks. A dropdown stops a receptionist from typing "google", but an integration or a spreadsheet import writing to an unrestricted field can add "google" anyway, and nobody sees it until the report has a new line. Whatever your CRM, find out whether integrations can write values that are not on the list, and if they can, put a mapping step between them and the field.

The design is the one to copy: a short list of categories, with the detail in fields of its own. But note what it is built from. An automatic web source describes web visits, so a customer who only ever phoned has nothing meaningful in it. A business that closes by phone needs its own source field alongside, covering calls, walk-ins and referrals, in the same short-list shape.

Who fills in the lead source, and when

The source is set once, at first contact, by the system the lead arrived through or, failing that, by the first person who speaks to the customer. Nobody changes it later without a recorded reason. The salesperson closing the deal weeks later is the person worst placed to remember where it started.

Who sets the lead source for each way a lead arrives
Lead arrives asSource set byWhenFrom what
Call to a tracking numberCall trackerAs the phone ringsThe source assigned to that number
Call to the main lineWhoever answersDuring the callThe question, answered from the list
Web formHidden form fieldsOn submitUTM parameters or referrer, mapped to the list
Online bookingBooking toolOn bookingUTM parameters on the booking link
Website chatChat tool, else the repWhen contact details are givenThe visit's source, else the question
Walk-inFront deskOn arrivalThe question, answered from the list
Event or trade showEvent staffSame dayEvent, with the event name as detail
Lead platform fileThe importAt importOne source for the whole file

Where a person asks, the wording matters. "How did you first hear about us?" gets a better answer than "Where did you find us?", which invites "Google" from someone who was recommended to you and then looked up your number. Read out two or three options if the caller hesitates. Do not accept "online": follow it with "Was that an ad, a search or a review site?" Our post on referral revenue covers the question in more depth, because referrals are where it pays most.

Then protect the value. If your CRM can make the field read-only after the record is created, do it, and let one person correct it with a note. If it cannot, copy the source into a second field at creation that nothing else writes to. Workflows that "update lead source" when a deal closes, or when a contact fills in a second form, are the most common way a good first value is silently replaced.

Fill it automatically wherever you can

Automatic capture records what happened rather than what somebody remembered. Tracking numbers source calls, hidden fields source web forms, UTM parameters on booking links source appointments, and the import itself sources leads from platforms. People should fill in only what is left: calls to the main line, walk-ins and referrals.

Calls: one tracking number per source

Give each offline source its own static tracking number: one for the mailer, one on the vans, one for the radio spot. On the website, a pool of numbers swapped per visitor ties each call to the visit's source. The call tracker then knows the source of every call to a tracked number, and an integration or an export carries it into the lead record. Never reuse a number across two sources, or the report merges them for good. Our post on call tracking and revenue covers the next step, joining those calls to the sales they became; trackers such as CallRail export the caller's number alongside the source.

Web forms: hidden fields, mapped to the list

Hidden fields copy the visit's UTM parameters or referrer into the form submission; our post on UTM parameters covers the script, first and latest values, and where they get lost, and our post on web form leads covers the fields that make a submission matchable later. The step that is often missing is translation. utm_source=google with utm_medium=cpc is not a value on your list. Write a small mapping table once: google plus cpc is Google Ads, facebook or instagram plus paid-social is Facebook and Instagram ads, a google.com referrer with no UTM is Organic search. Store the raw values in their own read-only fields, and write only the mapped value into the source field.

Bookings: UTM parameters on the booking link

So a booking only carries a source if the link or the embed was given one, and the source only reaches the CRM if something copies it there. Pass the page's UTM values into the embed, tag every booking link you share in ads and emails, and check that the integration to your CRM maps them. A booking with no UTM values should be sourced by the same fallback as a form: the referrer, then the question at the appointment. If you book through Calendly, test it once a month with a tagged link.

Chat and lead platforms

A chat becomes a lead only when the visitor leaves a phone number or an email, and the rep who takes it to a call should copy the chat's source rather than writing "Phone"; our post on live chat leads covers the handoff. Leads bought or collected on a platform, such as Local Services Ads, Meta lead forms or a lead marketplace, are the easiest of all: every row in the platform's export has the same source, so set it on the whole file at import.

What to do when sources conflict

Conflicts are normal: the tracking number says Google Ads, the caller says a neighbor sent them, and the same person filled in a form a month earlier. Write a precedence rule once and apply it everywhere, keep every raw value in its own field, and let the earliest lead decide when one person has several.

Within a single lead, one precedence rule that works for most local businesses:

  1. A named referral wins. If the person names who recommended you, the source is Referral, with the referrer as detail. The recommendation created the demand; the ad or the search only supplied the number.
  2. Then the captured source. A tracking number, a hidden field, a booking UTM or a platform import records what happened, and beats a vague answer such as "Google" or "online".
  3. Then the answer to the question, mapped to the list.
  4. Then Unknown, chosen on purpose by the person who checked.

Across leads, the conflict is different. A customer who called from a mailer in March and filled in a form from a Google ad in May has two leads with two sources, and both are true. Do not overwrite the first lead's source with the second, and do not merge the records in the CRM to tidy up, because a merge usually keeps one record's source and discards the other's. Keep both leads and decide at reporting time which one gets the sale. Crediting the earliest is first touch, and our post on duplicate leads sets out how to apply it consistently.

A worked example: what a messy source column does to channel revenue

A home services company matches one quarter's closed sales to its leads: $300,000 of matched revenue across 650 leads, with the source column exactly as staff and integrations wrote it. The figures are illustrative. Read as written, its three paid channels all look unprofitable. Cleaned, each one roughly doubles.

Matched revenue by the source column as written, July to September 2026 (illustrative)
Source as writtenLeadsMatched revenue
Google Ads142$62,000
google31$18,500
Google PPC17$9,500
Facebook64$21,000
FB12$6,000
Direct mail29$12,000
Referral40$24,000
friend11$7,500
Phone96$38,000
Website88$29,000
Other47$22,500
(blank)73$50,000
Total650$300,000

Read as written, the largest line is "Google Ads" at $62,000, the second is blank at $50,000 and the third is "Phone" at $38,000. Phone, Website, Other and blank together hold $38,000 + $29,000 + $22,500 + $50,000 = $139,500, or 46.5% of matched revenue on lines that name no channel at all.

The cleanup has two stages. Merging spellings is the easy one: Google becomes $62,000 + $18,500 + $9,500 = $90,000, Facebook $21,000 + $6,000 = $27,000, Referral $24,000 + $7,500 = $31,500. Recovering the route values is the work. For the "Phone" leads, the call tracker shows which number was dialed: $16,000 came in on the Google Ads numbers, $8,000 on the mailer's number and $14,000 on the main line, which stays Unknown. For "Website", the hidden fields show $13,000 from Google Ads, $9,000 from Facebook and $7,000 from organic search. The notes on "Other" yield $9,500 of referrals and $5,000 of mailer calls, with $8,000 left Unknown. Of the blanks, tracking numbers and hidden fields recover $21,000 for Google Ads and $6,000 for Facebook; $23,000 stays Unknown.

The same $300,000 at each stage of cleanup, with quarterly spend (illustrative)
ChannelExact labelSpellings mergedRoutes recoveredSpendRevenue per $1, as writtenRevenue per $1, recovered
Google Ads$62,000$90,000$140,000$24,000$2.58$5.83
Facebook and Instagram ads$21,000$27,000$42,000$9,000$2.33$4.67
Direct mail$12,000$12,000$25,000$7,500$1.60$3.33
Referral$24,000$31,500$41,000
Organic search$7,000
Unknown (checked)$45,000
Other spellings$41,500
Phone, Website, Other, blank$139,500$139,500
Total$300,000$300,000$300,000$40,500

The arithmetic: Google Ads goes from $62,000 ÷ $24,000 = $2.58 per dollar to $140,000 ÷ $24,000 = $5.83; Facebook from $21,000 ÷ $9,000 = $2.33 to $42,000 ÷ $9,000 = $4.67; direct mail from $12,000 ÷ $7,500 = $1.60 to $25,000 ÷ $7,500 = $3.33. At a 35% gross margin a channel needs 1 ÷ 0.35 = $2.86 of revenue per ad dollar to break even, as our post on marketing ROI explains. As written, all three channels are below it. Recovered, all three are above it.

Look at which fix did what. Merging spellings lifted Google Ads from $2.58 to $3.75 and left direct mail exactly where it was, at $1.60, because none of the mailer's revenue was misspelled. It was sitting in "Phone" and "Other", because a postcard produces phone calls and a busy receptionist writes down the phone. Spelling cleanup helps the online channels; route values bury the offline ones. Read as written, this report says cut the mailer. The mailer returned $3.33 per dollar.

The $45,000 that stays Unknown is the honest remainder, and it stays as a line of its own rather than being shared among the channels. It is also different from the sales that matched no lead at all, which sit outside this table; our post on unattributed revenue makes the case for keeping both visible. And the recovery itself was a one-off rescue that took a call log, a form export and an afternoon. The fixed list is what stops it being needed again.

CloseRev reads the result of all this as two CSV exports, your closed sales and your leads. It matches each sale to leads on normalized phone and email and credits it to the source of the earliest matched lead. Only high-confidence matches count automatically; medium- and low-confidence ones stay reviewable. It reports sources exactly as written in the lead file's source column, so "Google Ads" and "google" are two lines, and sales that match no lead stay in Direct / Unknown.

Audit the lead source field every month

A monthly audit takes under an hour: count leads by the exact value in the source field, check the share that is blank, Unknown or off the list, compare the call tracker's counts with the CRM's, and spot-check ten records. Fix the cause of each problem, such as a form, an integration or a habit, not just the rows.

A monthly lead source audit
CheckHowAct when
Values off the listCount distinct values in last month's leadsAny appear: find the integration or import that wrote them
BlanksShare of new leads with no sourceAbove 2%: find the form or entry screen that skips it
UnknownShare of new leads marked UnknownRising two months running: retrain the question
OtherRead every noteAn answer appears three times: add it to the list
Route valuesCount Phone, Website, Walk-in, Email in the source fieldAny appear: the source and contact method fields are being mixed up
Tracker vs CRMCalls per tracked source in the tracker vs leads with that sourceDiffer by more than 10%: an integration or a manual step is dropping leads
Spot-checkTen random leads against the tracker, form or booking recordAny wrong: trace how it was set

Correct the rows you can, with a note saying what changed and why, and keep the raw values. Then take the export you report from; our guide to the CRM export covers the columns and the date range, which has to reach back further than the sales it explains. If the share of sales that match a lead at all is low, our post on match rates covers the other causes, from phone formats to missing systems.

Where to start this week

Count last quarter's leads by the exact value in your source field, and add up the matched revenue on blanks, "Other" and route values like "Phone". That one number says how much of your channel report is guesswork, and it usually justifies the rest of the work on its own.

  1. Write the fixed list, plus a contact method field and a detail field; turn off any default and make the source required at creation.
  2. Map tracking numbers, hidden fields, booking UTMs and platform imports to the list.
  3. Put the question and the precedence rule on one page for whoever answers the phone and the door.
  4. Book the monthly audit in the calendar, before the monthly export.

A channel report can only be as good as the column it is grouped by. Make the lead source a short fixed list, let systems fill it wherever they can, keep how people reached you out of it, and count it every month. The channels that bring in phone calls are the ones a messy column hides.

Questions people actually ask

What is lead source tracking?
Lead source tracking is recording, on every lead, the marketing that brought that person to you, in one CRM field, at the moment they first make contact. The point is to add up closed revenue by source later. It works when the field is a short fixed list, filled automatically where possible and by the first person who speaks to the customer where not.
What values should a lead source field have?
Eight to fifteen, each a source you pay for or could act on: for example Google Ads, Google Local Services Ads, Google Business Profile, Organic search, Facebook and Instagram ads, Direct mail, Vehicle and signs, Event, Referral — customer, Referral — partner, Repeat customer and Unknown. Put the campaign, mailer or event name in a separate detail field, and keep how the person contacted you in a third.
Is "Phone" a lead source?
No. "Phone", "Website", "Walk-in" and "Email" describe how the person reached you, not what brought them. A call can come from a Google ad, a mailer or a neighbor's recommendation. Record the route in a contact method field and the marketing in the source field. Route values in the source field hide revenue from the channels that generate phone calls, which are usually the offline ones.
Who should fill in the lead source?
The system the lead arrived through, wherever it can: the call tracker, the form's hidden fields, the booking tool or the lead platform's import. Where nothing automatic exists, such as a call to the main line or a walk-in, the first person who speaks to the customer asks and picks from the list. The salesperson who closes the deal weeks later should not set or change it.
What should I do with the "Other" lead source?
Remove it if you can, or require a note whenever it is chosen. Review the notes monthly: an answer that appears three or more times becomes a value on the list, and the rest becomes Unknown. Left alone, "Other" grows into one of the largest lines in the report, and every dollar on it belongs to a channel you cannot see.
How often should I audit lead source data?
Monthly, before the export you report from. Count leads by the exact value in the field, check the share that is blank, Unknown or off the list, compare the call tracker's counts with the CRM's for each tracked source, and spot-check ten random leads against the system that captured them. It takes under an hour and catches broken integrations within weeks rather than quarters.

See it on your own numbers.

Two exports and a few minutes. 14 days free, no card, nothing to install.