Skip to main content
Metadata enriches your traces with contextual information, who made the request, which conversation it belongs to, and any custom data relevant to your application. Labels help you categorize and filter traces in the dashboard. The reference below covers every integration method. For SDK-specific details, see the tutorials linked below.

Quick Reference

For OTEL, gen_ai.conversation.id follows the OpenTelemetry GenAI semantic conventions. The legacy langwatch.thread.id attribute is also supported.

SDK Examples

For detailed SDK-specific tutorials, see:

Raw OpenTelemetry

If you’re using vanilla OpenTelemetry without the LangWatch SDK:
Exporter configuration:
The OTEL endpoint is /api/otel/v1/traces (not /v1/traces).

REST API

Send traces directly via HTTP. See REST API for full details.

Reserved vs Custom Fields

In the REST API metadata object:

Timings

Beyond metadata, spans carry timing information that powers the latency views: the Duration column, the Time to First Token (TTFT) column, and the latency analytics. Most streaming instrumentations report TTFT automatically. To set it manually, or to understand how it rolls up to the trace level, see the dedicated tutorials:

Best Practices

Always set user_id

Required for user-level analytics and filtering by specific users.

Use thread_id for conversations

Groups related messages together. Essential for chatbots and multi-turn interactions.

Labels for categorization

Use consistent labels like production, staging, support for filtering.

Custom metadata for context

Add any relevant context: feature flags, A/B variants, request sources.

What You Get

Once traces include metadata:
  • Filter by user: Find all traces for a specific user
  • View conversations: See all messages in a thread grouped together
  • Filter by labels: Quickly filter to specific categories
  • Search custom fields: Find traces by any custom metadata value
  • User analytics: View per-user metrics and patterns
Last modified on August 23, 2026