Skip to main content

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.

Five AI search measurement evidence classes
Evidence classPlain-language meaningTypical evidence sourceWhat it cannot prove by itself
Search crawler requestAn automated search system requested a page.Server or CDN log; verified-bot dashboardA person saw an answer, clicked, acted, or bought.
User-triggered fetchA person's action caused an assistant to request a page.Server or CDN log; agent-category dashboardThe person opened a browser session on the site.
Referral sessionA visit reached the site and the analytics system attributed a source.Web analytics with source, medium, referrer, or campaign evidenceThe visit became a lead or sale, or that one page change caused it.
On-site actionThe site recorded a defined interaction during a visit.Analytics event, form system, booking click, or checkout eventThe downstream business result completed.
Business outcomeThe system that owns the result confirmed it.CRM, scheduler, order system, invoicing system, or another system of recordThat 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.

Four peer evidence stores for server-log requests, referral sessions, on-site actions, and business outcomes, connected only where an identifier exists; one join is unavailable.
BaristaLabs-constructed evidence-flow diagram based on cited vendor documentation. It separates request, session, action, and outcome evidence; it is not an analytics dashboard, customer data, or an 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

Worksheet header fields
FieldEntry
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.

Blank evidence record fields
FieldEntry
Record ID
Date range
Source system
Evidence classSearch 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 availablePublished 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
ConfidenceConfirmed / Supported / Unresolved
Join statusJoined / 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.

Blank 30-day comparison
Evidence classSource system and reportPrior 30 daysCurrent 30 daysUnitFilter or scopeJoin coverageConfidenceUnresolved gap
Search crawler requestHTTP requests
User-triggered fetchHTTP requests
Referral sessionSessions
On-site actionEvents or completed actions; name the unit
Business outcomeConfirmed 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

Blank join review
From recordTo recordShared field or documented methodRecords eligibleRecords joinedCoverageKnown exclusionsDecision 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?

Constructed example evidence rows
Record IDEvidence classSource systemCountEvidenceJoin statusConfidenceUnresolved gap
EX-SRV-01Search crawler requestFictional CDN log export286 requestsUser agent matched OAI-SearchBot; request paths and response codes retained; published IP-range check recordedNot joinedConfirmedA request does not show an answer, citation, or person.
EX-SRV-02User-triggered fetchFictional CDN log export14 requestsUser agent matched ChatGPT-User; requested paths retainedNot joinedSupportedThe fictional export did not retain enough network evidence to complete verification. No session ID exists in the server row.
EX-AN-01Referral sessionFictional web analytics export9 sessionsSession source recorded as chatgpt.com; landing page and consent state retainedPartly joinedConfirmedTwo sessions have a safe form correlation ID; seven do not.
EX-ACT-01On-site actionFictional form analytics export3 completed quote formsEvent name and session-safe correlation ID retainedPartly joinedConfirmedTwo forms join to EX-AN-01; one session source is unavailable.
EX-CRM-01Business outcomeFictional CRM export1 qualified quote requestCRM status and form correlation ID retained; no customer fields copied into the worksheetJoined to one EX-ACT-01 recordConfirmedQualification is recorded; no sale or revenue outcome is available.
Constructed example 30-day report
Evidence classPrior periodCurrent periodUnitJoin coverageSafe statement
Search crawler request241286HTTP requestsNo cross-stage joinOAI-SearchBot-classified requests increased by 45 in the fictional CDN export.
User-triggered fetch1114HTTP requestsNo cross-stage joinChatGPT-User-classified requests increased by 3; network verification remains incomplete.
Referral session69Sessions2 of 9 joined to completed quote formsThe fictional analytics report recorded 9 ChatGPT-attributed sessions.
On-site action23Completed quote forms2 of 3 joined to ChatGPT-attributed sessionsThree quote forms completed; two carried a correlation ID from a ChatGPT-attributed session.
Business outcome01Qualified quote requests1 joined to a completed formThe 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

  1. Confirm both reports use the same inclusive dates and timezone.
  2. Name the unit in each report: request, unique path, session, user, event, lead, booking, order, or revenue amount.
  3. Save the exact filter, user-agent rule, bot category, source dimension, event name, and status rule.
  4. Check redirects, response codes, consent behavior, cross-domain steps, internal traffic, monitoring, and known spam or test traffic.
  5. Confirm whether the source dimension is first-user, session, or event scoped when the analytics tool makes that distinction.
  6. Check whether a shared identifier exists and what percentage of eligible records it covers.
  7. 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. [1] Overview of OpenAI Crawlers OpenAI; accessed 2026-09-04.
  2. [2] Publishers and Developers FAQ OpenAI; accessed 2026-09-04.
  3. [3] ATV Big Air Tour case study OpenAI; published 2026-09-02; vendor-published customer result.
  4. [4] Traffic-source dimensions Google Analytics; accessed 2026-09-04.
  5. [5] Scopes of traffic-source dimensions Google Analytics; accessed 2026-09-04.
  6. [6] Verified bots Cloudflare; last updated 2026-07-01; accessed 2026-09-04.
  7. [7] OpenAI Bot Hits vs ChatGPT Referral Traffic BaristaLabs field note; accessed 2026-09-04.
  8. [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.