30-day evidence worksheet
Separate AI bot hits from customer traffic
A bot dashboard, server log, analytics report, and business system can all show activity for the same month. They do not count the same event. Use this worksheet to classify each total, record the evidence behind it, and show where the records can or cannot be joined.
This worksheet can organize the evidence you already collect. It cannot turn a request into a person, recover tracking your systems never recorded, or prove that AI search caused a lead, sale, or revenue change.
One combined count can hide several different events
A server can record a search crawler fetching a page. It can also record a page fetched after a person asks an assistant a question. A web analytics tool may later record a tagged referral session. The site can record an action during that session, while a CRM, scheduler, or order system records the business result.
Those records answer different questions. A crawler request shows machine access. A user-triggered fetch shows that a person caused an assistant to retrieve a page. A referral session shows that a visit reached the site and was attributed to a source. An on-site action shows what happened during a visit. A business outcome shows what the business system confirmed.
Keep the totals separate first. Connect them only when a shared identifier or another documented method supports the join. Without that connection, five rows are more accurate than one funnel.
Terms used in the worksheet
- An HTTP request is one attempt to fetch a web address or resource from a server.
- A content delivery network (CDN) is infrastructure that serves or filters site requests before they reach the site's main server. A server or CDN log is the stored request record.
- A user agent is identifying text supplied with a request. Treat it as classification evidence, then record any network or vendor verification used to support the identity.
- A referrer is the page or service recorded as sending a visit. A UTM source is a source label carried in a link parameter, such as utm_source=chatgpt.com.
- An identifier is a value used to connect records. A session identifier can connect events within one measured visit; a business-system identifier can connect a submitted form to a lead, booking, or order when policy allows it.
- Scope states what an analytics value applies to, such as a first user, one session, or one event.
- A customer relationship management system (CRM) stores and manages lead or customer records. A system of record is the system the team accepts as authoritative for a named result.
Name the evidence class before interpreting the count
Use the most specific class the evidence supports. If the user agent, referrer, identifier, or business record is missing, mark the class or connection as unresolved instead of filling the gap with a stronger story.
| Evidence class | Plain-language meaning | Typical evidence source | What it cannot prove by itself |
|---|---|---|---|
| Search crawler request | An automated search system requested a page. | Server or CDN log; verified-bot dashboard | A person saw an answer, clicked, acted, or bought. |
| User-triggered fetch | A person's action caused an assistant to request a page. | Server or CDN log; agent-category dashboard | The person opened a browser session on the site. |
| Referral session | A visit reached the site and the analytics system attributed a source. | Web analytics with source, medium, referrer, or campaign evidence | The visit became a lead or sale, or that one page change caused it. |
| On-site action | The site recorded a defined interaction during a visit. | Analytics event, form system, booking click, or checkout event | The downstream business result completed. |
| Business outcome | The system that owns the result confirmed it. | CRM, scheduler, order system, invoicing system, or another system of record | That AI search alone caused the decision. |
OpenAI documents OAI-SearchBot for search crawling and ChatGPT-User for certain user-triggered visits to a page.[1] OpenAI also says ChatGPT referral links include utm_source=chatgpt.com.[2] These vendor fields are useful when they appear, but they remain optional worksheet evidence. Verify the values, bot-authentication method, analytics scope, redirects, consent behavior, and local naming in the systems you actually use.
Constructed evidence-flow diagram. It shows where records are stored; it is not an analytics dashboard or observed result.
AI Search Measurement Worksheet
https://www.baristalabs.io/learn/ai-search-measurement-worksheet
This worksheet can organize the evidence you already collect. It cannot turn a request into a person, recover tracking your systems never recorded, or prove that AI search caused a lead, sale, or revenue change.
Blank worksheet
Classify one 30-day data set
Choose one current 30-day period and, when useful, one prior 30-day period with the same timezone and filters. Preserve each system's original export. Work from the rows below rather than a combined “AI traffic” number.
Do not paste private customer details, full IP addresses, message text, payment data, or credentials into a shared worksheet. Use the data-security boundary to decide what may be retained, shared, or excluded.
Worksheet header
| Field | Entry |
|---|---|
| Worksheet name | |
| Review owner | |
| Current date range, inclusive | |
| Prior comparison range, inclusive | |
| Reporting timezone | |
| Business question this review should answer | |
| Source systems included | |
| Export file names or saved report links | |
| Exported at | |
| Filters and exclusions | |
| Known tracking or consent changes during either period | |
| Privacy or retention boundary |
Evidence record
Repeat for each source row or useful aggregate.
| Field | Entry |
|---|---|
| Record ID | |
| Date range | |
| Source system | |
| Evidence class | Search crawler request / User-triggered fetch / Referral session / On-site action / Business outcome / Unresolved |
| Count and unit | |
| Vendor field or category, if available | |
| User-agent evidence, if available | |
| User-agent verification method, if available | Published IP range / cryptographic signature / reverse DNS / vendor verified-bot classification / none / other |
| Referrer, source, medium, or campaign evidence, if available | |
| Landing page or requested path | |
| Response status or event name, if relevant | |
| Session or event identifier, if available | |
| Business action or outcome, if applicable | |
| Business-system identifier, if available and safe | |
| Evidence owner | |
| Confidence | Confirmed / Supported / Unresolved |
| Join status | Joined / Not joined / Join unavailable / Join not attempted |
| Joined record ID, if any | |
| Join method and field | |
| Unresolved gap | |
| Evidence location | |
| Notes |
Confirmed: the source system directly records the class and the team checked the relevant field or verification method.
Supported: available fields point to the class, but one verification step or scope detail is missing.
Unresolved: the evidence does not support a reliable class or connection yet.
Compare the periods without adding unlike units
Enter one row per evidence class and source system. Duplicate a class row when two systems count it differently. Keep 0, blank, and unavailable distinct: 0 means the report ran and found none; blank means the field has not been completed; unavailable means the source cannot provide the value.
| Evidence class | Source system and report | Prior 30 days | Current 30 days | Unit | Filter or scope | Join coverage | Confidence | Unresolved gap |
|---|---|---|---|---|---|---|---|---|
| Search crawler request | HTTP requests | |||||||
| User-triggered fetch | HTTP requests | |||||||
| Referral session | Sessions | |||||||
| On-site action | Events or completed actions; name the unit | |||||||
| Business outcome | Confirmed outcomes; name the unit |
Do not sum this table. A request, session, event, and confirmed outcome are different units. Do not calculate a cross-stage conversion rate unless the numerator records are joined to the denominator records and the report states the join coverage.
Record the connection, not just the sequence
| From record | To record | Shared field or documented method | Records eligible | Records joined | Coverage | Known exclusions | Decision supported |
|---|---|---|---|---|---|---|---|
A same-day timestamp, the same landing page, or similar totals may help investigate a mismatch. None of them proves that two rows describe the same person or journey. If identifiers are unavailable because of consent, privacy, system limits, or implementation choices, keep the gap visible.
Selectable plain-text fallback
If clipboard access is unavailable, select the complete worksheet below and copy it manually.
AI SEARCH MEASUREMENT WORKSHEET Canonical resource: https://www.baristalabs.io/learn/ai-search-measurement-worksheet PURPOSE Classify one 30-day data set without treating bot requests as people, sessions, leads, sales, or revenue. WORKSHEET HEADER Worksheet name: Review owner: Current date range, inclusive: Prior comparison range, inclusive: Reporting timezone: Business question this review should answer: Source systems included: Export file names or saved report links: Exported at: Filters and exclusions: Known tracking or consent changes during either period: Privacy or retention boundary: EVIDENCE CLASSES Search crawler request: An automated search system requested a page. User-triggered fetch: A person's action caused an assistant to request a page. Referral session: A visit reached the site and the analytics system attributed a source. On-site action: The site recorded a defined interaction during a visit. Business outcome: The system that owns the result confirmed it. Unresolved: The available evidence does not support a reliable class yet. EVIDENCE RECORD Repeat this block for each source row or useful aggregate. Record ID: Date range: Source system: Evidence class: Search crawler request / User-triggered fetch / Referral session / On-site action / Business outcome / Unresolved Count and unit: Vendor field or category, if available: User-agent evidence, if available: User-agent verification method, if available: Published IP range / cryptographic signature / reverse DNS / vendor verified-bot classification / none / other Referrer, source, medium, or campaign evidence, if available: Landing page or requested path: Response status or event name, if relevant: Session or event identifier, if available: Business action or outcome, if applicable: Business-system identifier, if available and safe: Evidence owner: Confidence: Confirmed / Supported / Unresolved Join status: Joined / Not joined / Join unavailable / Join not attempted Joined record ID, if any: Join method and field: Unresolved gap: Evidence location: Notes: 30-DAY COMPARISON Repeat a row when two source systems count the same class differently. Search crawler request — source/report: Prior 30 days: Current 30 days: Unit: HTTP requests Filter or scope: Join coverage: Confidence: Unresolved gap: User-triggered fetch — source/report: Prior 30 days: Current 30 days: Unit: HTTP requests Filter or scope: Join coverage: Confidence: Unresolved gap: Referral session — source/report: Prior 30 days: Current 30 days: Unit: Sessions Filter or scope: Join coverage: Confidence: Unresolved gap: On-site action — source/report: Prior 30 days: Current 30 days: Unit or event name: Filter or scope: Join coverage: Confidence: Unresolved gap: Business outcome — source/report: Prior 30 days: Current 30 days: Unit or outcome name: Filter or scope: Join coverage: Confidence: Unresolved gap: DO NOT SUM THE FIVE ROWS. A request, session, event, and confirmed outcome are different units. JOIN REVIEW From record: To record: Shared field or documented method: Records eligible: Records joined: Coverage: Known exclusions: Decision supported: REVIEW CHECKLIST [ ] Every total has a named source system, date range, timezone, unit, and filter. [ ] Search crawler requests and user-triggered fetches remain separate. [ ] Referral sessions name the source field and reporting scope. [ ] On-site actions name the event or completed interaction. [ ] Business outcomes come from the system that confirms them. [ ] Every claimed connection names the join method and coverage. [ ] Missing evidence remains unresolved. [ ] The report does not add unlike units. [ ] The report does not claim causality, ranking, sales, or revenue without separate evidence. [ ] Shared files exclude unnecessary customer data, full IP addresses, credentials, payment data, and private message content. EVIDENCE LIMIT This worksheet organizes recorded evidence. It cannot turn a request into a person, recover tracking that was never recorded, or prove that AI search caused a lead, sale, or revenue change.
Constructed example
Constructed example. Northstar Bike Repair is fictional. The systems, identifiers, totals, and outcomes below were created only to demonstrate the worksheet. They are not customer data, BaristaLabs data, a benchmark, or a typical result.
Example review question: What evidence did each system record from July 1 through July 30, and which downstream actions can be joined to a ChatGPT-attributed session?
| Record ID | Evidence class | Source system | Count | Evidence | Join status | Confidence | Unresolved gap |
|---|---|---|---|---|---|---|---|
| EX-SRV-01 | Search crawler request | Fictional CDN log export | 286 requests | User agent matched OAI-SearchBot; request paths and response codes retained; published IP-range check recorded | Not joined | Confirmed | A request does not show an answer, citation, or person. |
| EX-SRV-02 | User-triggered fetch | Fictional CDN log export | 14 requests | User agent matched ChatGPT-User; requested paths retained | Not joined | Supported | The fictional export did not retain enough network evidence to complete verification. No session ID exists in the server row. |
| EX-AN-01 | Referral session | Fictional web analytics export | 9 sessions | Session source recorded as chatgpt.com; landing page and consent state retained | Partly joined | Confirmed | Two sessions have a safe form correlation ID; seven do not. |
| EX-ACT-01 | On-site action | Fictional form analytics export | 3 completed quote forms | Event name and session-safe correlation ID retained | Partly joined | Confirmed | Two forms join to EX-AN-01; one session source is unavailable. |
| EX-CRM-01 | Business outcome | Fictional CRM export | 1 qualified quote request | CRM status and form correlation ID retained; no customer fields copied into the worksheet | Joined to one EX-ACT-01 record | Confirmed | Qualification is recorded; no sale or revenue outcome is available. |
| Evidence class | Prior period | Current period | Unit | Join coverage | Safe statement |
|---|---|---|---|---|---|
| Search crawler request | 241 | 286 | HTTP requests | No cross-stage join | OAI-SearchBot-classified requests increased by 45 in the fictional CDN export. |
| User-triggered fetch | 11 | 14 | HTTP requests | No cross-stage join | ChatGPT-User-classified requests increased by 3; network verification remains incomplete. |
| Referral session | 6 | 9 | Sessions | 2 of 9 joined to completed quote forms | The fictional analytics report recorded 9 ChatGPT-attributed sessions. |
| On-site action | 2 | 3 | Completed quote forms | 2 of 3 joined to ChatGPT-attributed sessions | Three quote forms completed; two carried a correlation ID from a ChatGPT-attributed session. |
| Business outcome | 0 | 1 | Qualified quote requests | 1 joined to a completed form | The fictional CRM confirmed one qualified quote request joined to a completed form. The record does not establish a sale, revenue, or causal lift. |
The example does not create a five-stage funnel. The two server-log classes have no identifier that connects them to the referral sessions. Two referral sessions connect to completed quote forms, and one form connects to a qualified CRM record. The team can report those bounded connections. It cannot say that 300 bot requests produced nine people, three forms, or one qualified lead.
A mismatch is a measurement question, not a missing conversion
Server and CDN logs count HTTP requests. A page can be requested more than once, retried, redirected, blocked, or requested alongside other resources. Preserve the path, response status, timestamp, user agent, and available verification evidence before reducing the log to a class total.
A bot dashboard applies the vendor's classification rules. Cloudflare, for example, distinguishes behaviors such as Search, Agent, Training, and Transact, and documents several bot-verification methods.[6] That category can help classify a request. It does not create a web session or customer record.
Analytics reports count according to their own collection and attribution rules. Google Analytics distinguishes user-, session-, and event-scoped acquisition dimensions.[5] A session-source report and a first-user-source report can therefore show different totals without either being a server-log count. Consent choices, tag loading, redirects, cross-domain movement, filters, and date boundaries can add more gaps.
Business systems answer another question. A CRM may confirm a qualified lead after the original session ends. A scheduler may own the booking state. An order system may own payment completion. Record the identifier and join rule that connect these systems. If the connection is absent, report the outcome separately.
Mismatch investigation checklist
- Confirm both reports use the same inclusive dates and timezone.
- Name the unit in each report: request, unique path, session, user, event, lead, booking, order, or revenue amount.
- Save the exact filter, user-agent rule, bot category, source dimension, event name, and status rule.
- Check redirects, response codes, consent behavior, cross-domain steps, internal traffic, monitoring, and known spam or test traffic.
- Confirm whether the source dimension is first-user, session, or event scoped when the analytics tool makes that distinction.
- Check whether a shared identifier exists and what percentage of eligible records it covers.
- Leave the mismatch unresolved when the available evidence cannot settle it.
Measure activity here; inspect public facts in the source map
This worksheet records what each measurement system observed during a date range. If the review instead reveals that a service detail, location, price, policy, or other public fact is missing or inconsistent, use the AI Search Source Map. That worksheet traces one claim across owned pages, outside sources, and a dated assistant answer. It does not replace this event classification.
For the field-note explanation behind this worksheet, read OpenAI reported a 1,223% jump in search and bot hits. Do not call it customer traffic.
Review the report before sharing a win
- Every total has a named source system, date range, timezone, unit, and filter.
- Search crawler requests and user-triggered fetches remain separate rows.
- Referral sessions use the analytics tool's documented source and scope fields.
- On-site actions name the actual event or completed interaction.
- Business outcomes come from the system that confirms them.
- A join names the shared identifier or documented method and reports coverage.
- Missing identifiers and unresolved classifications remain visible.
- The report does not sum requests, sessions, actions, and outcomes.
- The report does not claim causality, incrementality, ranking, sales, or revenue without separate evidence.
- Shared files exclude unnecessary customer data, full IP addresses, credentials, payment data, and private message content.
What this worksheet cannot prove
The worksheet cannot prove that a person saw an AI answer, that an assistant cited a particular page, that a bot request became a referral, or that a referral caused a business decision unless another system recorded the relevant evidence and a valid join connects the records.
It also cannot recover events lost to missing tags, consent choices, redirects, cross-domain breaks, retention limits, or systems that do not share identifiers. A 30-day comparison can describe what the selected reports recorded. It does not establish incremental traffic, a ranking change, a conversion lift, or revenue caused by AI search.
Sources and claim boundaries
- [1] Overview of OpenAI Crawlers — OpenAI; accessed 2026-09-04.
- [2] Publishers and Developers FAQ — OpenAI; accessed 2026-09-04.
- [3] ATV Big Air Tour case study — OpenAI; published 2026-09-02; vendor-published customer result.
- [4] Traffic-source dimensions — Google Analytics; accessed 2026-09-04.
- [5] Scopes of traffic-source dimensions — Google Analytics; accessed 2026-09-04.
- [6] Verified bots — Cloudflare; last updated 2026-07-01; accessed 2026-09-04.
- [7] OpenAI Bot Hits vs ChatGPT Referral Traffic — BaristaLabs field note; accessed 2026-09-04.
- [8] AI Search Source Map — BaristaLabs resource; accessed 2026-09-04.
The OpenAI ATV Big Air Tour case is a vendor-published customer result, not an independent audit. Its combined bot-hit values are not reused in the blank worksheet or constructed example.
Review one measurement path
Bring one server or bot report, one referral report, and the business action you want to verify. BaristaLabs can help classify the evidence, inspect the joins and gaps, and define the next measurement change through AI-assisted website development.
Canonical resource
https://www.baristalabs.io/learn/ai-search-measurement-worksheet
Evidence limit
This worksheet can organize the evidence you already collect. It cannot turn a request into a person, recover tracking your systems never recorded, or prove that AI search caused a lead, sale, or revenue change.
Sources and provenance appear in the preceding source list.