> ## Documentation Index
> Fetch the complete documentation index at: https://www.dataframer.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Connect your traces

> Pull your existing AI traces into DataFramer from your observability tool, see them, and route them onward.

If your AI traces already live in an observability tool, connect it and DataFramer pulls the traces in. This is separate from [server instrumentation](/docs/user-signals/server-instrumentation): connecting a project pulls traces you've *already* created, while `dataframer-journey` auto-tags traces *as your service creates them*.

<Note>
  **Currently supported: Langfuse and LangSmith.** More observability tools are on the roadmap.
</Note>

## Connect a project

In the DataFramer UI, under **Findings**, add a project and choose your provider:

<Tabs>
  <Tab title="Langfuse">
    | Field        | Example                                        |
    | ------------ | ---------------------------------------------- |
    | Project Name | `Production Langfuse`                          |
    | Base URL     | `https://cloud.langfuse.com` (default)         |
    | Public Key   | `pk-lf-...`                                    |
    | Secret Key   | `sk-lf-...`                                    |
    | Data level   | `Observation` (default), `Trace`, or `Session` |

    Find your keys in your Langfuse project settings.
  </Tab>

  <Tab title="LangSmith">
    | Field                        | Example                                                       |
    | ---------------------------- | ------------------------------------------------------------- |
    | Project Name (in DataFramer) | `Production LangSmith`                                        |
    | Endpoint URL                 | `https://api.smith.langchain.com` (default)                   |
    | API Key                      | `ls-...`                                                      |
    | LangSmith Project            | `my-project`, the project name in LangSmith to pull runs from |
    | Data level                   | `Run` (default), `Trace`, or `Thread`                         |

    Find your API key in your LangSmith account settings.
  </Tab>
</Tabs>

Once connected, DataFramer pulls traces (Langfuse) or runs (LangSmith) in. **Import new traces** on the Traces page pulls on demand; the count next to it says how many were imported and how many were skipped.

Two things to decide up front:

* **Data level is permanent.** It sets what one datapoint is, and discovery and evaluations work at that level. You cannot change it after the project is created — pick a new project instead. At trace or session level a datapoint spans many observations, so very large ones are common; those are imported and analyzed in pieces rather than truncated, and only a datapoint that can't be read that way at all is skipped at import.
* **Importing traces is an AI task.** It reads PDF and spreadsheet attachments on the traces it pulls with a model, so it draws on your DataFramer credits or your own model provider key, and it is blocked while AI usage is unfunded or over the plan's spend limit.

## See your traces

**Traces** lists the imported traces for the time range you pick; choose the columns you want, such as model, latency, tokens or cost, with **Columns**. Open a trace to see everything DataFramer knows about it, and use the [Review Copilot](/docs/reviews/copilot) there to dig in with the full context around it.

## Route traces onward

Wherever DataFramer lists traces, select any subset and route it onward: **Assign review** sends the traces to a [Review Queue](/docs/reviews/overview), **Add to dataset → Evaluation Dataset** turns them into ground truth for [judges](/docs/judges/overview), and **Add to dataset → Generation Seed Dataset** turns them into seed examples for [synthetic generation](/docs/concepts#where-seed-data-comes-from).

## Journey correlation: Langfuse only, for now

If you also use the [Signals SDK](/docs/user-signals/browser-sdk) and want traces auto-tagged with a `journey_id` at creation time, that only works for Langfuse today, and only its v2 SDK, via `dataframer-journey`. See the [Langfuse v2 caveat](/docs/user-signals/server-instrumentation) for details.

LangSmith traces still pull in fine, they just won't have a `journey_id` auto-stamped on them. If you want journey correlation on LangSmith traces, add `journey_id` to your run's metadata or tags yourself before it's pulled in.

## Next steps

<CardGroup cols={3}>
  <Card title="Findings" icon="magnifying-glass" href="/docs/findings/discovery-and-tracking">
    Search your traces for patterns and track the ones that matter
  </Card>

  <Card title="Human Reviews" icon="user-check" href="/docs/reviews/overview">
    Route traces to expert reviewers
  </Card>

  <Card title="Calibrated Judges" icon="scale-balanced" href="/docs/judges/overview">
    Grade every trace automatically against your rubric
  </Card>
</CardGroup>
