Before you start
- Follow the shared external trace import prerequisites.
- Choose one Langfuse project, one synthetic trace, and a narrow time window.
- Record the Langfuse trace ID, root trace name, timestamps, observation count, and final status before transforming the data.
- Decide whether generation input, output, model usage, user data, tags, and metadata are permitted to leave Langfuse. Exclude them by default.
Map the trace
Extract the selected Langfuse trace and its observations. Create one root OTLP span from the Langfuse trace, then add one child span for every observation that you intend to retain.
Do not use a Langfuse user ID, project name, tag, or observation name as proof
of Atlan Agent, session, Skill, or version attribution. Those relationships
remain unknown until explicit target identifiers establish them.
Send the OTLP batch
- Assemble the converted traces into an
ExportTraceServiceRequest. - Send it to
POST /otel/v1/traceswith the bearer credential from your approved secret store. - Set
X-Atlan-Workspace-Idfor the active target workspace when needed. - Set
X-Atlan-Ingest-Idto a stable batch identifier. Keep the payload unchanged if you retry it.
Verify the copied trace
- Read
GET /otel/v1/traces/{trace_id}in the target workspace. - Read
GET /otel/v1/traces/{trace_id}/spansand compare it with the Langfuse record. - Confirm the root name, preserved or recorded source ID, timing, final status, one root span plus the retained observation count, and parent relationships.
- Confirm that fields excluded by policy are absent from the target trace.
Troubleshoot
For the OTLP endpoint contract, use the API reference.
For the shared mapping, recovery rules, and the next external store, return to
Import traces from external stores.