How to track signups from search, by landing page
You want to know which pages bring signups from search. You have Search Console and analytics, but they tell different stories. Here is how to join them and ship changes that move signup numbers.
By Théophile Louvart, founder of Porteur · Updated 14 September 2026 · Markdown
What you must join, and why
Search Console tells you the query, the page, the impressions and the clicks. It does not know your signup.
Analytics tells you what the visitor did after the click. GA4 shows sessions and key events by landing page. Product analytics ties a person’s first touch to a later signup.
You need both. Join by the landing page path. The result shows two lists you care about: pages that win clicks and sign nobody up, and pages that convert and get no clicks.
For attribution, learn two views. First touch credits the first visit that brought the person. Last touch credits the visit before signup. For product sites, first touch answers which landing pages bring people who later sign up. Last touch shows which pages close. You will use both in judgement, not one rule to decide every change.
Set up GA4 to record signups and landings
Mark your signup as a key event
Send a signup event from your site. In GA4, Admin, Events, mark it as a key event. Conversions were renamed key events in 2024.
Confirm Organic Search sessions
Open Reports, Acquisition, Traffic acquisition. Organic Search is the default channel group for sessions where source or medium is google or bing and organic. Check this before you filter by channel later.
Use the Landing page report
Open Reports, Engagement, Landing page. This shows sessions and key events by the first page of the session. Add a filter for Default channel group equals Organic Search.
Link Search Console
Admin, Product links, Search Console. Link your property and web stream. This adds two reports to Library: Google organic search queries and Google organic search traffic. They join clicks and impressions to landing pages, with Search Console lag and anonymised queries.
A fixed page looks like this in GA4: /guides/getting-started shows Organic Search sessions, your signup key event count, and reasonable average engagement time. You can click through to see events on that landing page view and its paths to signup.
Build the GA4 report that matters
Organic landings to signups
In Engagement, Landing page, add a comparison for Default channel group equals Organic Search. Add Signup key event as a metric. Sort by Signup key event. Export CSV.
Compare attribution models
In Reports snapshots or Advertising, add a comparison for Attribution settings. Compare data-driven with first click and last click. Data-driven is the default for key events. Use first click to see who you originally attracted. Use last click to see closers.
Use the Search Console reports
Open Library, publish the Google organic search queries and Google organic search traffic reports if not already. In Google organic search traffic, sort by Landing page. Export clicks, impressions and average position for the same date range as your GA4 export.
Expect mismatches
Clicks and sessions never reconcile exactly. A click can start no session. A session can follow several clicks. Consent tools drop sessions. Work with orders of magnitude and direction, not a false precision.
If you need more detail, build an Exploration. Start with a free form. Rows: Landing page. Segments: Organic Search sessions only. Values: Sessions, Signup key event, Users. Break down by Device category. GA4 can sample large explorations and threshold small segments. Treat small numbers with care.
Use product analytics for first touch to signup
GA4 is page analytics. It shows landing pages and key events in the same session. You also need to know which first landing pages lead to signups that happen later. That is a product analytics job.
Capture page views with referrers
In PostHog, the $pageview event carries $current_url, $pathname and $referring_domain. A person stores initial referrer and initial UTM properties from their first visit. These answer where each person first came from.
Define your signup
Track a product event for signup or account created. Mark it as important in your dashboard. Keep the name stable.
Build a funnel by landing page path
Create a funnel from a page view that starts with $pathname equals / or starts with /pricing or starts with /guides/. Then add the signup event as the next step. Break down by initial referring domain to isolate google.com and bing.com as Organic Search.
Answer the first touch question
Read which landing paths act as the first touch for people who later sign up. This joins a person’s first landing page to their later signup. Page analytics do not do this, product analytics do.
A fixed view looks like this: a funnel on /guides/ to signup, broken down by initial referring domain. You see /guides/getting-started sends 120 people into the product each 28 days, and 18 later sign up, most from google.com. You then check how many clicks that page gets in Search Console.
Join Search Console with analytics by landing page
Export two tables for the same dates. From Search Console in GA4, landing pages with clicks and impressions. From GA4 Landing page, Organic Search sessions and signup key events by landing page. Or from PostHog, first-touch landings to signup by pathname.
Normalise the paths
Strip the domain and query from URLs so both exports have clean paths like /pricing and /guides/getting-started.
Join in a sheet
Use VLOOKUP or INDEX MATCH to join on the path. Keep columns for Clicks, Impressions, Sessions, Key events, and First-touch signups if you have them.
Read the two lists
Sort two ways. First by clicks descending, then by signup numbers ascending. These are pages that win clicks and sign nobody up. Second by first-touch signups descending, then by clicks ascending. These are your quiet converters that get no clicks.
Work an example. /pricing gets 2,400 clicks, 0.8 percent click through rate, and 12 signups as last touch. First touch from /guides/getting-started drives 40 signups but sees only 200 clicks. You fix /pricing for clarity and speed. You add internal links to /guides/getting-started, improve its title and meta description, and ship a short comparison block that matches the query that brings it in.
UTM parameters without breaking attribution
- Use utm_source, utm_medium, utm_campaign, and, if you need them, utm_term and utm_content.
- Use them only on links you place elsewhere: a newsletter, a partner site, a social post.
- Never use UTMs on internal links. An internal UTM starts a new session and breaks attribution.
- If a UTM URL gets linked from outside, it can be indexed. Add a canonical tag to the clean URL.
- Use Google’s Campaign URL Builder to make clean, consistent UTMs.
Consent, anonymised queries, and other limits
In the EU, analytics that set cookies need consent under ePrivacy. Cookieless setups and server-side measurement exist. Every rate computed from consented sessions undercounts. Track direction over time and look for big gaps, not tiny changes.
- Search Console lags by a couple of days, as of 2026.
- Some queries are anonymised. A page can win clicks you cannot see by query.
- GA4 can threshold rows in small segments to protect users. You will see rows hidden.
- Explorations can be sampled. Reports are safer for totals.
- Sessions and clicks do not match one to one. Accept this and move on.
Turn the join into weekly action
- Pages that get clicks, no signups: test copy, speed, form friction, and call to action. Try a short explainer above the fold on /pricing.
- Pages that convert, few clicks: improve the title and meta description, add internal links, and ship a small content upgrade. For /guides/getting-started add a “Try it free” block and a FAQ.
- Queries that bring the wrong people: move that page to a better intent or noindex it if it is off strategy.
- Queries just off page one: rework the intro and headings, add one specific example, and get a clean internal link from /guides/.
- Break down by device. Fix mobile if mobile landings bring sessions and no signups.
- If you sell, join payment events to first landing page. Then read what a search click earns and decide where to spend time.
Keep a sheet with four tabs: GA4 landings, SC landings, Joined, Notes. Each week, refresh exports, paste values, and keep Notes short: one change per page, one owner, one date. Review in 28 day windows so spikes smooth out.
Troubleshooting odd numbers
- Signups missing in GA4: the event was not sent or not marked as key. Check DebugView, then Events, then Key events.
- Organic traffic looks low: a consent tool is dropping sessions, or you tagged internal links with UTMs. Remove internal UTMs first.
- Clicks way up, sessions flat: the page may redirect, be slow to load, or fail before analytics fires. Check Core Web Vitals and error logs.
- One pathname shows twice: a trailing slash mismatch. Canonicalise and redirect so /pricing and /pricing/ resolve to one.
- Cross domain or app signup: you lose the session. Use cross domain measurement or track signup server side and join by user ID in product analytics.
Questions
Use both. First touch answers which landing pages bring people who later sign up. Last touch shows which pages close. For roadmap calls, lead with first touch. For page tweaks near signup, read last touch.
They never match exactly. A click can start no session. A person can click several times before one session starts. Consent tools drop sessions. Use direction and scale, not exact parity.
Use Search Console queries to segment brand terms. Join by landing page, then read signup numbers for the pages those queries hit. Expect anonymised queries to blur the line. Treat the result as a guide, not an audit trail.
Yes, if you join the payment event to the person and their first landing page. Build that in product analytics. Then read which landing pages from Organic Search earn money. That is the report that decides spend.
No. You need clicks, landings and signups that you can join. A rank tracker can help spot drops or mobile splits, but it does not replace the join. Use it as a signal, not the source of truth.
Weekly works for most small sites. Export the last 28 days for both sources. Note one change per page, then check the next week. Daily swings are noise for this job.
Sources
Check my site, free
Paste your URL to get a free 30‑second read of your site, the searches around it and the rivals on them, and see three findings whole before you connect anything.
- Free check, no card
- Read-only, your own accounts
- Readable by your agent
Read next
- GuideOrganic search traffic in GA4: where it is and how to read it
- GuideThe GA4 landing page report: the pages that bring people, and what they do
- GuideLinking Search Console to GA4: what you get and what you do not
- GuideUTM parameters: use them without breaking your search data
- GuidePages that get search clicks and no signups: the three causes
- GuideWhat a search click earns: revenue attribution for a product site
- GuideWebsite conversion rate: from the visit to the signup
- GuideLanding page conversion rate: how to measure it and what moves it