how to track chatgpt traffic in ga4

Build a session-based AI referral report, review source aliases, and keep visits separate from citations, first touch and purchase attribution.

crawlgraph team
· 10 min read · 1,887 words
sharexlinkedin

Track ChatGPT traffic in GA4 by reviewing Session source / medium in Traffic acquisition, then saving a filter for source values you have actually observed. This measures recorded visits, with collection limits, rather than every AI mention or sale. Start with a fixed reporting window, inspect landing pages, and keep first-touch leads separate from purchase attribution. The workflow below gives you a reproducible report and a practical way to describe what remains unknown.

This is the measurement companion to our SEO for AI search guide. For the wider source-discovery workflow, read the guide to finding backlinks for free: an indexed linking relationship and an analytics referral are different observations. A site can link to you without sending a recorded visitor, while an assistant can send a visitor through a temporary answer that a backlink index never observes.

the five-step recipe

  1. Fix the reporting window. Choose complete dates and record the property timezone, filters and collection limitations before comparing periods.
  2. Inspect session sources. Open Traffic acquisition, select Session source / medium, and review raw source values before defining an AI referral group.
  3. Save a bounded source filter. Match only reviewed source aliases with an anchored regular expression; retain source and medium as separate report dimensions.
  4. Review landing pages and outcomes. Build a session-scoped exploration and inspect landing pages, sessions and recorded key events without treating session totals as purchase attribution.
  5. Write a qualified measurement note. Report observed sessions, unknown-source limits and the next page action. Keep first-touch leads and attributed purchases in separate ledgers.

You need access to an existing GA4 property and enough collected data to inspect source rows. This recipe creates a reporting view; it does not install tracking or reconstruct missing historical visits. Keep the original unfiltered report available so that a narrow AI group can always be reconciled against the same period and report settings.

1. fix the reporting window

Choose a complete period, such as the previous calendar month, and write its start and end dates in your worksheet. Record the property timezone and whether you excluded internal traffic. Avoid comparing a full month with a partial month and calling the difference growth. For a small site, four complete weeks may offer a more useful starting point than a daily chart containing mostly zeros.

Write one question above the report: how many recorded sessions arrived from reviewed ChatGPT source values during this period, and where did they land? That question determines the scope. Google explains that Traffic acquisition uses session-scoped traffic-source dimensions. It is an appropriate starting report for visits, including returning visitors. It does not count how many people saw your company in an assistant answer.

Note known collection changes beside the dates. A new consent banner, missing tag on a page template, or measurement outage can change the recorded totals without changing audience demand. If collection was incomplete, retain the report but label its coverage. Do not fill the missing interval with an assumed number of AI visits or silently remove it from the denominator.

2. inspect session source values

Open Reports, then the Acquisition collection and Traffic acquisition. The navigation can vary with the report collections published in your property. Change the table dimension to Session source / medium. Review the unfiltered rows and search for candidate source names. Where available, add Session source and Session medium separately to make it easier to distinguish a source alias from the medium attached to it.

Candidate values to investigate include chatgpt.com, chatgpt and chat.openai.com. These are examples for inspection, not an exhaustive or universal list. A bare source name may have come from campaign tagging; a hostname may reflect a referral or a tag. Inspect the actual medium, relevant landing URLs and your own tagging conventions before deciding that a row belongs in the report.

As checked on 3 October 2026, OpenAI documents utm_source=chatgpt.com on ChatGPT search referral URLs. That documentation supports checking for this value. It does not establish that every ChatGPT interface, copied link or browser journey will always preserve it. Neither does the parameter alone prove that a particular answer cited your page: campaign parameters can be copied and reused.

Save a small classification ledger with the raw source, raw medium, decision and reason. Leave ambiguous aliases outside the confirmed group until reviewed. If you later expand to other assistants, give each service its own reviewed alias list. A regex matching the word AI anywhere in a source can capture unrelated sites and turn a convenient label into a misleading traffic total.

3. build a reviewed source filter

For the three example aliases, the following expression matches the whole source value. Escaped dots represent literal dots; the anchors prevent a longer, unrelated hostname from matching just because it contains one of these names. Apply it to Session source, not to a combined source / medium string.

regex
^(chatgpt\.com|chatgpt|chat\.openai\.com)$

Use a comparison or exploration filter with the regular-expression match option available in your interface. If you apply this pattern to Session source / medium, values such as chatgpt.com / referral will not match because the pattern ends after the source. That is a dimension mismatch, not evidence that your site received no visits. Review exact casing in the exported rows and adjust the approved list explicitly if necessary.

Call the saved group reviewed ChatGPT sources, or use another name that describes its boundary. If you create a custom channel group, use the reviewed source expression as its rule and check rule order and precedence before relying on the label. Keep the original source and medium visible in your working report. A group name helps navigation but must not erase which values were included.

Test the filter against both included and excluded rows. Compare its sessions with the sum of the selected raw rows for the same dates and settings. Record a version date for the alias list. When a new source appears, inspect it first, then update the definition and note whether your period comparison has changed its measurement boundary.

4. inspect landing pages and outcomes

In Explore, create a free-form exploration. Import Session source, Session medium and Landing page + query string as dimensions, with Sessions as a metric. Place source and medium in rows, add the landing-page dimension when you need page detail, and apply the reviewed Session source filter. Set the same dates as the acquisition report. If your property cannot expose a requested dimension or date range, document that limit instead of substituting a differently scoped field.

Begin with landing pages and sessions. Add recorded key events or purchase metrics only when their collection and dimension compatibility have been checked. A session table can help identify what visitors did after arriving, but its source grouping does not automatically give the same answer as an event-scoped attribution report. Google distinguishes first-user, session and event traffic-source scopes; each answers a different question.

First user source asks about initial user acquisition. Session source describes a visit. Event-scoped source dimensions support credit assigned to key events under the relevant attribution settings. An existing visitor first acquired through search can later arrive through ChatGPT and buy. Those reports can describe different parts of the journey without contradicting one another. State the scope beside each result rather than choosing whichever number looks largest.

5. write a bounded measurement note

Here is an illustrative worksheet for one fictional four-week reporting window. Every number is invented to demonstrate the report structure; these are not crawlgraph results, customer results or a benchmark. The table contains 12 recorded sessions across three reviewed source rows. It does not describe 12 unique people or 12 citations.

session sourcesession mediumsessionsexample landing page
chatgpt.comreferral8/guides/source-checking
chatgptreferral3/guides/source-checking
chat.openai.comreferral1/product

The matching note would read: 12 recorded sessions matched our three reviewed ChatGPT source values in this four-week window. Eleven landed on the guide and one on the product page. The report uses session scope and the stated filter version. Citation impressions, visits without identifiable source information and purchase attribution were not measured by this table.

Keep a separate first-touch lead ledger if your signup flow stores acquisition information with appropriate permission. Label whether it represents users, leads or accounts, when the source was captured, and how duplicates are handled. Separately validate purchase events against your order records, then report the relevant attribution scope and model. Do not divide purchases from one ledger by sessions from another and present the result as a conversion funnel: identity coverage, dates and populations may differ.

what your report cannot observe

a citation without a click is not a session

An assistant may mention or cite your site without anyone visiting it. GA4 website collection cannot turn that exposure into a referral session. Track answer observations separately and describe the prompts, dates and sample used.

Missing referrers and missing campaign parameters leave part of the journey unknown. Google explains that direct / (none) can occur when source information is unavailable. That category is not a hidden AI bucket. A copied URL, an untagged message, a bookmark and other journeys can leave similar evidence. Assigning all direct traffic to assistants would replace an unknown with an unsupported claim.

Consent and collection settings also affect visibility. Check your implementation before interpreting an empty row as an absence of real visitors. Keep any modeled reporting or other collection limitations explicit where they apply. A controlled test click can help diagnose a URL, redirect or tag problem, but it cannot establish historical coverage or prove that every user interface behaves the same way.

turn observed visits into a page action

Use the landing-page pattern to choose a concrete content improvement. If the illustrative guide attracts most observed visits, check whether its first paragraph answers the question, whether evidence links remain valid and whether the next step is understandable. Our answer engine optimization guide explains how to organize useful answers; this referral report supplies a narrower signal about which pages received recorded clicks.

Backlink research can add context about independent sites referencing the same topic. Use competitor backlink gap analysis to explore relevant referring-domain differences when your plan includes it, then verify promising sources and their actual context. Those relationships are research leads, not proof that an assistant uses them. As a starting cadence, review your reporting note monthly, preserve the filter definition and choose the next action from observed page behavior rather than a promised AI ranking outcome.

faq

does ga4 track every chatgpt visit?

No. GA4 can report collected visits with identifiable source information. Missing referral data, consent and collection gaps limit what is observed. A citation without a click is not a website session.

should i use session source or first user source?

Use Session source for a report about visits during a selected period. First user source describes user acquisition and can differ when an existing visitor returns through ChatGPT.

can i count direct traffic as ai traffic?

No. Direct / (none) can reflect missing source information and has several possible causes. Keep it unassigned unless independent evidence supports a narrower classification.

does a chatgpt session prove a chatgpt-attributed sale?

No. A session source identifies the recorded acquisition context of that session. Purchase attribution requires valid purchase collection, a defined reporting scope and the selected attribution model.

ahrefs · backlinkslocked
upgrade required · $129/mo
crawlgraph · live $99 once
G
github.io92
C
css-tricks.com88
L
lobste.rs86
A
algolia.com84
W
web.dev80
same data · one-time
$99oncevs $129/mo
unlock the data →
stripe checkout · instant access
guides#ga4#ai search#referral traffic
sharexlinkedin
crawlgraph team
author

documents crawlgraph backlink workflows, open-data methods, and the limits of each report.

the dispatch
one email a month.

plus one when a new common crawl release lands. that is all.