Client Identification for Federated GraphQL | Cosmo by WunderGraph - WunderGraph

Know which clients use your API — and how

Add two HTTP headers to your requests. Every analytics view becomes client-aware. Filter metrics, traces, and operations by client name and version. Schema Field Usage shows per-client breakdowns for every field. No Cosmo configuration changes required.

The problem

Anonymous traffic makes targeted action impossible

Without knowing which application sent a request, you cannot isolate issues, target communication, or track version adoption.

Anonymous traffic masks the source of issues

When web, mobile, and partner clients share a single API endpoint, traffic is a single undifferentiated stream. Slow responses or elevated error rates could be coming from any of them.

Breaking change communication reaches the wrong people

Without knowing which clients use which fields or operations, teams send deprecation notices to everyone. Most recipients are unaffected. The ones who matter may not pay attention.

Client version drift is invisible

Older client versions may still call deprecated fields or send malformed queries. Without version tracking, you cannot tell how many users are on outdated clients or when it is safe to remove legacy support.

Our solution

Two headers. Full client attribution.

Client Identification requires no Cosmo configuration. Client applications add name and version headers to their requests. The Cosmo Router reads them automatically and propagates client context through every analytics view.

How it works

  1. Client Identification uses HTTP headers to identify client applications and versions on every request.
  2. The Cosmo Router extracts these headers automatically and associates the client data with all telemetry.
  3. All analytics views — metrics, traces, schema field usage, and operations — become client-aware.
  4. Filter metrics, traces, and operations by client name and version.
  5. Group trace analytics by client to see per-application behavior.
  6. Schema Field Usage shows per-client breakdowns for every field.
  7. No additional configuration is required on the Cosmo side beyond deploying the router.

From anonymous traffic to client-aware analytics in minutes.

Client Identification

Before & After

Before Cosmo With Cosmo
Anonymous traffic with no client attribution Every request identified by client name and version
Unable to isolate client-specific issues Filter all analytics by specific client versions
Blanket communication about breaking changes Targeted communication to clients that use the affected field
No visibility into client version distribution Track which versions are active across your API

Header formats

Two supported formats

Vendor-neutral (recommended) GraphQL-Client-Name: your-app GraphQL-Client-Version: 1.0.0

Apollo-compatible ApolloGraphQL-Client-Name: your-app ApolloGraphQL-Client-Version: 1.0.0

Both formats are supported. The vendor-neutral format is recommended for new implementations.

How Client Identification works

01

Two headers per request.

Add headers

Client applications add two HTTP headers to every GraphQL request: the client name and the client version. No SDK changes or additional setup required on the Cosmo side.

02

Automatic extraction.

Router extracts

The Cosmo Router reads the identification headers from incoming requests and associates the client name and version with all telemetry data for that request.

03

Filter and group everywhere.

Analytics become client-aware

Metrics, traces, and operations support filtering by client name and version. Schema Field Usage shows a per-client breakdown for every field. Group traces by client to see per-application patterns.

04

Per-client deprecation targeting.

Target communication

Use Schema Field Usage to get a list of exactly which clients use a specific field. Reach out to each team with specific usage data rather than a blanket announcement.

What is included

Built into every Cosmo plan

Available on Free, Pro, and Enterprise.

Client-aware analytics

Filter metrics, traces, and operations by client name and version. Schema Field Usage shows a per-client breakdown for every field once headers are in place.

Version tracking

See which client versions are actively making requests to your API. Identify outdated versions still calling deprecated fields before you remove them.

Easy implementation

Two HTTP headers per request. No SDK changes, no Cosmo configuration, no additional services. The router handles extraction automatically.

Ecosystem compatibility

Supports both vendor-neutral headers (recommended) and Apollo-compatible headers. Migrating from Apollo? Your existing header setup works without changes.

Identify your clients across all analytics

Add two headers to your client requests and every analytics view becomes client-aware immediately.

FAQ

Client Identification on Cosmo

What headers does Cosmo use for client identification?

Does Cosmo need any configuration to read client headers?

What happens to requests without client headers?

Which analytics views support client filtering?

Can I use client identification to target deprecation notices?

What values should I use for client name and version?

Full details in the client identification documentation.