How to Track SEO Leads From Search Query to CRM

Shahid Ali12 min read

A heavy brass chain laid in a straight line across dark slate, running into shadow

"SEO is working — traffic is up 40%." Then someone asks how many jobs it produced, and the room goes quiet.

The gap is not that the data does not exist. It is that it lives in three systems that do not talk to each other, each of which answers a different question and none of which answers the whole one.

This is how the chain fits together, where it breaks, and what to actually report each month.

The chain

Google search query
      │  Search Console: impressions, clicks, position
      ▼
Landing page
      │  GA4: session, source/medium = google / organic
      ▼
Visitor session
      │  GA4: pages, scroll, time
      ▼
CTA interaction
      │  GA4 event: cta_click / phone tap / booking click
      ▼
Form submission
      │  GA4 event: generate_lead
      │  Form → CRM
      ▼
CRM contact created
      │  Lead source: organic search
      │  Landing page + first query stored where possible
      ▼
Qualified lead
      │  CRM status change
      ▼
Booked meeting or job
      │  CRM deal / job record
      ▼
Revenue

Every arrow is a place the chain can break, and most businesses have at least two broken.

What each tool can and cannot tell you

This is the part worth internalizing, because most measurement arguments are really this misunderstanding.

Search Console tells you what happened at Google: which queries showed your pages, how often, where you ranked, how many people clicked. It is the only place you see queries. It cannot tell you what anyone did after the click.

GA4 tells you what happened on your site: which page they landed on, what they did, whether they converted. It cannot tell you which query brought them — Google does not pass that through.

Your CRM tells you what happened after the inquiry: whether the lead was any good, whether it became work, what it was worth. It cannot tell you anything about the search unless you deliberately put it there.

Layer 1 — Search Console

Impressions. How often your pages appeared. Rising impressions with flat clicks usually means you are ranking for the wrong things, or ranking too low to be clicked.

Clicks. People who chose you. The closest thing to a traffic number Google will give you directly.

Queries. The reason this tool matters. Read the top thirty for a service page and you learn whether it attracts buyers or browsers — the single most useful SEO diagnostic there is.

Landing pages. Which pages earn clicks, which are invisible. Pages with zero impressions after six months are candidates for merging or removal.

Position. Directional. An average across every query and location, so treat a change in average position as a prompt to look, not as a finding.

Export monthly. Search Console retains 16 months, and the comparison you want in year two is against the same month in year one.

Layer 2 — GA4

Sessions and source

Organic search arrives as google / organic. Verify it is being attributed that way — misconfigured referral exclusions and consent handling both push organic traffic into (direct) / (none), which quietly deflates every organic number you have.

The events that matter

Not pageviews. Actions.

EventFires whenWhy
generate_leadForm submitted successfullyThe primary conversion
phone_clickA tel: link is tappedUsually the bigger channel locally
booking_clickThe booking tool is openedIntent, short of a booking
cta_clickA primary CTA is clickedDiagnoses CTA placement
scroll_50 / scroll_90Scroll depth thresholdsWhether long pages get read
file_downloadA guide or brochure is downloadedMid-funnel interest

Name them consistently, apply the same parameters across all of them, and write the naming convention down. Six months of form_submit, formSubmission, and lead_form in the same property is a data problem nobody ever gets around to fixing.

A workable parameter set on every conversion event:

event: generate_lead
  form_name:     "service_page_quote"
  page_location: "/services/water-heater-replacement"
  service:       "water_heater_replacement"
  lead_type:     "quote_request"

service is the one people leave out, and it is what lets you answer "which services does the site actually generate work for."

Phone calls

For local service businesses this is the biggest single gap. The tel: tap is trackable; whether the call connected, how long it lasted, and whether it was any good is not — that needs call tracking. A business measuring only form submissions can easily be seeing a third of its actual inquiries. See call tracking for service businesses.

Why UTMs do not solve this

The standard advice is "use UTM parameters." It does not apply to organic search, because you do not control the link — Google builds the search result. You cannot tag it.

UTMs work for links you own: your email signature, your Business Profile website link, newsletters, social posts, print QR codes. Tag those. For organic search, attribution relies on the referrer, which means it is reliable at the channel level (google / organic) and unavailable at the query level.

Layer 3 — the CRM

Where most of the chain is actually lost.

Fields worth having

FieldSet byHolds
Lead sourceForm / tracking scriptorganic, paid, referral, direct
Landing pageHidden form fieldThe page they first arrived on
Conversion pageHidden form fieldThe page they submitted from
First touch dateAutomaticWhen they first visited
Service interestForm field or hidden fieldWhich service
Lead statusManualNew, contacted, qualified, disqualified
Disqualification reasonManualWhy it was not viable
BookedManual or calendar syncWhether it became an appointment
Job valueManualWhat it was worth

The two hidden fields — landing page and conversion page — cost almost nothing to add and do more for SEO reporting than anything else on the list. Populate them from the form, on submission, and the CRM can tell you which pages generate work without any integration at all.

Original source versus latest source

Most CRMs distinguish these, and the distinction matters more than it sounds.

HubSpot's model is a clear example: Original traffic source records the first known source a contact came through and does not change afterwards, while Latest traffic source records the most recent known source and updates whenever a new session is created. Its possible values include organic search, paid search, email marketing, organic social, referrals, other campaigns, direct traffic, and paid social.

Why it matters: someone finds you through an organic search, reads two articles, leaves, and returns three weeks later by typing your name into the address bar. Latest source says direct. Original source says organic. Report on latest source alone and SEO looks like it did nothing.

Report both. Original source for "what introduced this person to us," latest source for "what brought them back to convert."

Creating the contact properly

Push form submissions into the CRM automatically, with the hidden fields attached. Manual entry loses source data within a week — not because anyone is careless, but because the source field is the one nobody fills in when they are busy.

If you use n8n, Make, or Zapier for this, make the field mapping explicit and test it with a real submission. See lead follow up automation.

Layer 4 — outcomes

This is where measurement becomes a business number rather than a marketing one.

Qualified lead. Define it, write it down, and apply it the same way every month. "Qualified" that shifts meaning between reports makes trend analysis impossible.

Lead-to-booked rate. Qualified leads that became an appointment or job. If this is low, more traffic is not the problem — see twelve reasons a site gets traffic but no leads, and check response times, because speed to lead moves this number more than anything on the website does.

Offline outcomes. The job finished, the invoice paid, the customer who returned. Getting these back into the CRM against the original lead is what lets you say which services and which pages produce revenue rather than inquiries.

What the numbers will not do

Three limitations to state plainly, because reports that hide them stop being trusted.

The chain is broken at the query. You know which queries drive clicks and which pages drive leads. You do not know which query drove which lead, and no configuration fixes that.

Search Console and GA4 will not match. They measure different things at different points — clicks at Google versus sessions on your site — and they are subject to different filtering, sampling, and consent behavior. A gap between them is expected. A gap that suddenly changes shape is worth investigating.

Consent and privacy reduce coverage. Visitors who decline analytics consent are not measured, ad blockers remove more, and cross-device journeys fragment. Your measured conversions are a floor, not a total. Report them as a consistent sample rather than as truth, and compare like with like over time.

A monthly SEO lead report

Six rows. Management does not need more, and more is how reports stop being read.

MetricSourceQuestion it answers
Organic clicksSearch ConsoleAre we getting found?
Top 10 queries, with changeSearch ConsoleFound for the right things?
Organic sessionsGA4Does it match the clicks?
Organic conversions (forms + calls)GA4 + call trackingDoes traffic become inquiries?
Leads with source = organicCRMDid they reach the pipeline?
Booked jobs from organic, and valueCRMDid it produce work?

Plus one page-level table: your top ten landing pages, with clicks, conversions, and leads. That table is what tells you where to invest next, and it is the one most monthly reports leave out.

What to leave out: average position as a headline number, bounce rate, total pageviews, keyword rankings from a tracking tool as the main story. They move, they generate discussion, and they do not correspond to anything the business can act on.

A setup checklist

  • Search Console verified, sitemap submitted, 16-month exports scheduled
  • GA4 installed on every template, organic attributed correctly
  • Conversion events configured with a written naming convention
  • Phone taps tracked; call tracking in place if calls matter
  • Every form pushes to the CRM automatically
  • Hidden landing page and conversion page fields on every form
  • CRM lead source populated automatically, not by hand
  • Original and latest source both reported
  • Qualified-lead definition written down and agreed
  • Booked and value fields maintained
  • Consent configuration verified against actual data
  • A test submission run end to end, quarterly

That last item is the one that matters most over time. Tracking does not fail loudly — a plugin update breaks an event and the reports simply get quieter. Run a real submission through the whole chain every quarter and confirm it arrives everywhere it should.

Automation, CRM & WorkflowsWe set up the site, analytics, Search Console, and lead tracking around the actions tied to your business, then verify the chain end to end.

Related reading: GA4 events every lead-generation website needs and How to Measure AI Automation ROI.

Frequently asked questions

Can we see which keyword produced a specific lead?

No. Google does not pass the query to your site, so the connection is broken before analytics ever sees it. You can see which queries earn clicks to a page and which pages produce leads, and reason at the page level. Any tool claiming per-lead keyword attribution for organic search is inferring, not measuring.

Why do Search Console and GA4 disagree?

Because they measure different events in different places — clicks at Google versus sessions on your site — with different filtering, deduplication, and consent handling. A persistent gap is normal. Compare each tool against its own history rather than against the other.

How long before SEO shows in the CRM?

Longer than it shows in Search Console. Impressions move first, clicks follow, and leads follow those — with a buying cycle on top. For local services expect a few months; for considered B2B purchases, longer. Watch the leading indicators while you wait rather than judging on leads alone in month two.

Do we need a paid attribution tool?

Most businesses do not. Search Console, GA4, hidden form fields, and a properly maintained CRM cover the large majority of what is knowable. Paid tools are worth it when you run several channels at real spend and need multi-touch modeling — and they are still modeling, not measuring.

What if leads come by phone?

Then measure phone calls, or you are reporting on a minority of your inquiries. Track tel: taps at minimum, and use call tracking where calls are the dominant channel. Ask new customers how they found you as a cross-check — it is imprecise, and it is still better than assuming.


If you are investing in SEO and cannot say what it produced, ask us to review the chain from search to CRM — the break is usually in one specific place, and it is usually cheap to fix.