|

Specification

The Content Telemetry standard defines the event model for reporting how AI agents use content, and the manifest format that identifies content owners, agents, and platforms. It is a neutral open standard - Apache 2.0, stewarded by the SPUR Coalition - and OpenAttribution implements it and maintains a commerce profile on it.

The standard is open for public comment from 12 June to 10 July 2026 - file issues on the GitHub repository. Revised versions of the standard and profiles follow by 10 August.


Content Telemetry

v0.1 - Preview

Read on GitHub

Five content events - retrieved, grounded, cited, displayed, engaged - carried in session documents that tie a user journey together. The spec defines how events are structured, transported, and correlated across multiple observers.

Core event types

EventWhen
content_retrievedContent fetched from source. Observable at the HTTP layer (origin, edge, index, or agent)
content_groundedContent loaded into the agent's context and used to influence the response
content_citedContent referenced in the agent's response - quote, paraphrase, or source link
content_displayedContent references shown to the user in the interface (sources sidebar, citation cards)
content_engagedUser interacted with cited or displayed content (click, expand, copy, share)
turn_started / turn_completedConversation turn lifecycle

Commerce. The seven core event types are the whole of the standard. Commerce-specific fields (product identifiers, checkout events such as checkout_completed) are extensions, not core schema. OpenAttribution maintains the commerce layer: the commerce profile (ctx_token propagation, click manifests, multi-citation attribution) and the ACP / UCP checkout bindings.

Conformance levels

An emitter conforms at one of three cumulative levels - each includes the ones below. The level is declared in the manifest's telemetry.conformance_level; it's informational, not a constraint on an endpoint or a requirement on anyone else (spec 5.7).

LevelEventsWhat it provesTypical emitter
Retrievalcontent_retrievedContent was fetched by an agentContent owner CDN, edge network, origin server
Grounding+ content_grounded, turn eventsContent entered the agent's generation contextAgent with basic instrumentation
Citation+ content_citedContent was explicitly referenced in the agent's responseAgent with citation instrumentation

Retrieval needs no agent cooperation - a content owner's CDN or origin reports it. Grounding and above need the agent to participate. Display and engagement events are optional lifecycle signals a Citation emitter should produce when applicable. See agent integration for the priority tiers.

Privacy levels

An agent declares a privacy_level on each conversation turn, controlling which fields it may carry. No PII at any level - the levels gate query-side signal (what the user asked, what the model classified it as), not content attribution. It's enforced: fields above the advertised level MUST NOT appear on a turn (spec 5.5).

LevelQuery / response textIntent & topicsResponse type & platform metadataToken countsContent URLs
fullFull textYesYesYesYes
summarySummarisedYesYesYesYes
intentYesYesYesYes
minimalYesYes

Token counts (query_tokens, response_tokens) stay available everywhere - counting models need them and they reveal nothing about intent. Content-URL arrays (content_urls_retrieved, content_urls_cited) too: individual content events already expose content_url at every level, so minimal protects the query, not the existence of the attribution link.

Key concepts

  • Source roles - origin, edge, index, agent. Multiple observers can report the same retrieval from different vantage points.
  • Cross-observer correlation - the Content-Telemetry-ID HTTP header links events from different reporters into one corroborated retrieval.
  • Two delivery formats - complete session documents after a session ends, or standalone events as they occur. Origin and edge emitters use standalone events; consumers reconstruct sessions where needed.

Profiles

The standard is permissive; communities layer requirements on it through profiles. A profile adds requirements without changing the wire format, and the dependency runs one way - profile to standard, never the reverse.

ProfileMaintainerWhat it requires
SPUR telemetry profileSPUR CoalitionPublisher accreditation: event-level, real-time, complete delivery - no aggregation, no sampling - to a publisher-designated endpoint
Commerce profile (draft)OpenAttributionAgentic commerce: ctx_token propagation across click-outs, click-manifest resolution, multi-citation attribution

Protocol bindings

Maintained by OpenAttribution alongside the commerce profile.

BindingPurposeSpec
ACPEmbed attribution in Agentic Commerce Protocol checkoutsacp/rfc
UCPEmbed attribution in Universal Commerce Protocol checkoutsucp/EXTENSION

Reference implementation & tooling

  • cloudflare-worker - the open source edge worker that detects AI bot requests and reports content_retrieved events. Apache 2.0, single file, no build step. See the quickstart.
  • conformance test suite - fixtures and a validator for checking emitter output against the spec (JSON Schema plus the application-layer rules the schema can't express).
  • @openattribution/telemetry - TypeScript/JavaScript SDK (npm install @openattribution/telemetry). Session tracking, event builders, and an MCP session tracker. Source: telemetry-js.

There is no published Python SDK; the maintained client SDK is TypeScript. For Python, the JSON Schemas below are enough to validate and code-generate against, the wire format is plain JSON over HTTPS, and a FastAPI reference server lives in telemetry-py.


Manifest

Section 8 of the Content Telemetry spec

Read on GitHub

Content owners, agents, and platforms publish a manifest declaring identity and telemetry endpoints. Served at /.well-known/content-telemetry.json, one shape across all three roles. Trust derives from TLS plus DNS control of the domain - no central registry, no cross-consumer state.

What the manifest declares

FieldWhat it declares
schema_versionManifest schema version ("0.1")
idThe manifest's canonical URL
rolesOne or more of content_owner, agent, platform
operatorThe organisation operating this participant
keysPublic keys for signing telemetry events (informational in v0.1)
telemetryOutbound submission endpoint (agents and platforms) or inbound destination (content owners)
domainsSelf-validating domain claims - the manifest's host plus its subdomains

The manifest URL appears as manifest_ref on telemetry sessions, linking events back to the publishing participant. Manifests are unsigned in v0.1; per-event signing is informational.


Machine-readable schemas

The spec includes JSON Schema definitions for validation and code generation:

Schemas resolve at contenttelemetry.org. For a field-by-field guide to the manifest, see the .well-known manifest page.