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
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
| Event | When |
|---|---|
content_retrieved | Content fetched from source. Observable at the HTTP layer (origin, edge, index, or agent) |
content_grounded | Content loaded into the agent's context and used to influence the response |
content_cited | Content referenced in the agent's response - quote, paraphrase, or source link |
content_displayed | Content references shown to the user in the interface (sources sidebar, citation cards) |
content_engaged | User interacted with cited or displayed content (click, expand, copy, share) |
turn_started / turn_completed | Conversation 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).
| Level | Events | What it proves | Typical emitter |
|---|---|---|---|
| Retrieval | content_retrieved | Content was fetched by an agent | Content owner CDN, edge network, origin server |
| Grounding | + content_grounded, turn events | Content entered the agent's generation context | Agent with basic instrumentation |
| Citation | + content_cited | Content was explicitly referenced in the agent's response | Agent 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).
| Level | Query / response text | Intent & topics | Response type & platform metadata | Token counts | Content URLs |
|---|---|---|---|---|---|
full | Full text | Yes | Yes | Yes | Yes |
summary | Summarised | Yes | Yes | Yes | Yes |
intent | — | Yes | Yes | Yes | Yes |
minimal | — | — | — | Yes | Yes |
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-IDHTTP 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.
| Profile | Maintainer | What it requires |
|---|---|---|
| SPUR telemetry profile | SPUR Coalition | Publisher accreditation: event-level, real-time, complete delivery - no aggregation, no sampling - to a publisher-designated endpoint |
| Commerce profile (draft) | OpenAttribution | Agentic commerce: ctx_token propagation across click-outs, click-manifest resolution, multi-citation attribution |
Protocol bindings
Maintained by OpenAttribution alongside the commerce profile.
| Binding | Purpose | Spec |
|---|---|---|
| ACP | Embed attribution in Agentic Commerce Protocol checkouts | acp/rfc |
| UCP | Embed attribution in Universal Commerce Protocol checkouts | ucp/EXTENSION |
Reference implementation & tooling
cloudflare-worker- the open source edge worker that detects AI bot requests and reportscontent_retrievedevents. 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
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
| Field | What it declares |
|---|---|
schema_version | Manifest schema version ("0.1") |
id | The manifest's canonical URL |
roles | One or more of content_owner, agent, platform |
operator | The organisation operating this participant |
keys | Public keys for signing telemetry events (informational in v0.1) |
telemetry | Outbound submission endpoint (agents and platforms) or inbound destination (content owners) |
domains | Self-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:
- telemetry-session.json - session document schema (draft 2020-12)
- telemetry-event.json - standalone event envelope schema
- manifest.json -
.well-known/content-telemetry.jsonmanifest schema - ACP content_attribution schema - commerce binding (OpenAttribution)
- UCP extension schema - commerce binding (OpenAttribution)
Schemas resolve at contenttelemetry.org. For a field-by-field guide to the manifest, see the .well-known manifest page.