Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 20 additions & 1 deletion develop-docs/sdk/foundations/trace-propagation/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,17 @@
title: Trace Propagation
description: How SDKs propagate trace context between services via headers, metadata, and environment variables.
spec_id: sdk/foundations/trace-propagation
spec_version: 1.9.0
spec_version: 1.10.0
spec_status: stable
spec_depends_on:
- id: sdk/foundations/transport/envelopes
version: ">=1.0.0"
- id: sdk/foundations/state-management/scopes
version: ">=1.0.0"
spec_changelog:
- version: 1.10.0
date: 2026-07-06
summary: Added Sampling Rate Propagation section
Comment thread
sentrivana marked this conversation as resolved.
- version: 1.9.0
date: 2026-02-24
summary: Consolidated into foundations/trace-propagation
Expand Down Expand Up @@ -248,6 +251,22 @@ A transaction's sampling decision **MUST** be passed to all of its children, inc

</SpecSection>

<SpecSection id="sampling-rate-propagation" status="stable" since="1.10.0">

### Sampling Rate Propagation

If there is an incoming `sample_rate`, it **SHOULD** be updated in the baggage if:
- an explicit sampling decision is forced, e.g. `startTransaction(sampled: true)`
- the `tracesSampler` is invoked
- the `tracesSampleRate` is used
- the SDK downsamples due to backpressure

In other words, whenever the SDK's effective sampling rate overrides the incoming `sample_rate`, it needs to be updated, even if the baggage is considered immutable.

Note that this rule only takes into account the effective sampling rate, i.e., the sampling rate that was actually used to make the sampling decision. If there is a `tracesSampleRate` defined, and there's an incoming sampling decision, the local `tracesSampleRate` is not the effective sampling rate -- it's ignored as the parent sampling decision takes precedence. In that case, the incoming `sample_rate` MUST NOT be updated.

</SpecSection>

<SpecSection id="default-propagation" status="stable" since="1.5.0">

### Default Propagation (No Tracing Config)
Expand Down
Loading