Tracestate
The HTTP Tracestate request header carries vendor-specific distributed tracing data as a companion to the Traceparent header, defined by the W3C Trace Context specification.
Usage
The Tracestate header extends the trace context established by Traceparent with additional data specific to individual tracing systems. While Traceparent provides the interoperable trace ID, span ID, and sampling flag, Tracestate holds supplementary information each vendor needs to maintain its own trace continuity.
The header value is a list of key-value pairs separated by commas. Each key identifies a tracing system or vendor, and the associated value contains opaque data meaningful to the corresponding system. When multiple tracing systems participate in the same request path, each appends its own entry without removing entries from other vendors. This allows heterogeneous tracing infrastructure to coexist on a single request.
Services propagating trace context forward the Tracestate header alongside Traceparent. A service updating its own vendor entry moves the entry to the front of the list. Entries from unknown vendors pass through unmodified. The specification limits the header to a maximum of 32 list members.
Values
key=value pairs
Each entry follows the key=value format. The key
is a string identifying the tracing vendor or system.
Simple keys contain only lowercase letters and digits.
Multi-tenant keys use the format tenant@system.
The value is an opaque string meaningful to the
corresponding vendor. Common vendor keys include:
ddfor Datadog APM trace metadatasw8for Apache SkyWalking trace propagationrojoandcongoas example vendors from the W3C specificationazfor Azure Monitor distributed tracing
Multiple entries are separated by commas with optional whitespace.
Example
A single vendor entry from a Datadog-instrumented
service. The dd key identifies Datadog, and the
value carries Datadog-specific sampling and trace
metadata.
Tracestate: dd=s:1;t.dm:-4;t.tid:672a542800000000
Multiple tracing vendors participate in the same request path. Each vendor maintains its own entry. The first entry belongs to the last vendor to update the trace context.
Tracestate: dd=s:1;t.dm:-4,congo=t61rcWkgMzE,rojo=00f067aa0ba902b7
A complete trace context includes both Traceparent and Tracestate headers together. The Traceparent header establishes the trace and span identity, while Tracestate carries supplementary vendor data.
Traceparent: 00-4d502c03384abc99124806be91afdfe7-a7e7f36238457189-01
Tracestate: dd=s:1;t.dm:-4,congo=t61rcWkgMzE
Takeaway
The Tracestate header carries vendor-specific trace metadata alongside the standardized Traceparent header, allowing multiple tracing systems to coexist on the same distributed request path.