|

Reporting paths

A content_retrieved event can reach OpenAttribution from three directions. Each path has different trade-offs, and they're designed to work together.

Which integration is right for you?

I'm on Vercel or Netlify One-click marketplace install. Vercel or Netlify.
I manage my CDN directly Edge function or log stream. Cloudflare, Fastly, Akamai, or CloudFront.
I'm building an AI agent Register your agent for an API key, then use the Telemetry SDK.
I operate a content marketplace Report retrievals on behalf of content owners. Get in touch - integration guides coming soon.
I'm an affiliate network or analytics tool Measurement partner guide. Content owners delegate read access - you query their telemetry via the API.

1

Your infrastructure reports

Your infrastructure detects AI bot requests and reports them directly. No cooperation from the agent required. Whether you run a news site, a product catalogue, or a brand portal - you control the data at source.

flow
AI Agent ──GET──> Your CDN / CMS / Origin Server
                          │
                          ├── Detect AI user agent
                          ├── Read OA-Telemetry-ID header (if present)
                          └── POST content_retrieved event to OA telemetry endpoint

The telemetry spec calls this source_role: "origin" or source_role: "edge" depending on whether the event is reported from the origin server or an edge network (CDN).

When the requesting agent includes an OA-Telemetry-ID header, that ID correlates your event with the agent's own event - two independent observations of the same retrieval. When the agent doesn't include the header, you still get the event. It's just one-sided.

Integrations


2

Content marketplace reporting

Content marketplaces and licensed content repositories act as intermediaries. When an agent retrieves content through a marketplace, the marketplace can report the retrieval event on behalf of the content owner.

flow
AI Agent ──GET──> Content Marketplace (Microsoft, Amazon, etc.)
                          │
                          ├── Serves licensed content to agent
                          └── POST content_retrieved event (source_role: "index")

The telemetry spec calls this source_role: "index". The marketplace has visibility into which content was served and can report events with full metadata - content URL, licensing terms, and the telemetry ID for correlation.

Integration guides for content marketplace operators coming soon. If you operate a content marketplace or licensed content repository, get in touch.


3

Agent-side reporting

The AI agent itself reports what content it retrieved. This is the most complete path - the agent has full visibility into what it fetched, how it used the content, and what the user did with the response.

flow
AI Agent (Google, OpenAI, Perplexity, etc.)
    │
    ├── Retrieves content from web / index / RAG
    ├── POST content_retrieved event (source_role: "agent")
    ├── Cites content in response
    ├── POST content_cited event
    └── User clicks through
        └── POST content_engaged event

Agent-side reporting covers the full event lifecycle - retrieval, citation, engagement, and outcome. When combined with server-side reporting on the same retrieval, the OA-Telemetry-ID header correlates both observations into a single, corroborated event.

Register your agent to get an API key, then see the Telemetry SDK documentation and the full specification.


Cross-observer correlation

The three paths aren't alternatives - they're designed to overlap. When multiple observers report the same retrieval, the events are correlated using the OA-Telemetry-ID header.

correlation
Agent includes header:  OA-Telemetry-ID: 550e8400-e29b-41d4-a716-446655440000

Your server reports:     { "type": "content_retrieved", "oa_telemetry_id": "550e8400-..." }
Agent reports:         { "type": "content_retrieved", "oa_telemetry_id": "550e8400-..." }

Same oa_telemetry_id + same content_url = one retrieval, two independent witnesses.

Server-side reporting works without the header - you still see the retrieval. But with the header, you get corroboration. Two observations are stronger than one.