Skip to main content
An AI trace records what the model did, but it does not tell you whether that was useful. Did the user accept the result, edit it, cancel it, or escalate to a human? That is what a signal is: an event you send DataFramer about what a user, or your product, did. A journey links a user’s signals to the AI traces that happened around them, even across several AI calls or agents. Every signal and every trace carries the same journey_id, so DataFramer can line them up into one timeline.

The pieces

Browser SDK

Runs in your frontend. Sends user events to DataFramer and creates the journey id.

Server Instrumentation

Runs in your backend. Picks the journey id up from each request and stamps it onto your Langfuse traces or LangSmith runs.

Connect your traces

Connect Langfuse or LangSmith and DataFramer pulls your AI traces in. This is how traces reach DataFramer.

How it fits together

Signals go straight from the browser to DataFramer. Traces go through your observability tool, and DataFramer pulls them from there. The journey id travels with both.
Browser@dataframer/signals

Sends track/identify/group events, tagged with journey_id, straight to DataFramer

→
Your Backenddataframer-journey

Stamps journey_id onto every trace

→
↓
Your Observability ToolLangfuse / LangSmith

Holds the tagged traces

→
↓
DataFramer
Signal · journey_idTrace · journey_id

Both land with the same journey_id and get lined up into one timeline

This feature is early; reach out at info@dataframer.ai if something does not work as described.