---
title: How do I work with the observations table in Langfuse v4?
sidebarTitle: Working with the observations table
description: Filter recipes, saved views, and the root-observations default for the observations table in Langfuse v4.
tags: [observability, tracing, evaluation]
---

# Working with the observations table

In [Langfuse v4](/docs/v4#what-changed), every operation your application performs (LLM calls, tool executions, retrievals, agent steps) is one row in a single observations table. A trace is just the set of rows sharing a `trace_id`; the [data model docs](/docs/observability/data-model#observations-and-traces) explain the model.

That means more rows than the old traces table, which is expected. Work with filters and [saved views](/changelog/2025-05-20-save-table-views), not by scrolling: filter by observation name, type, or model, then save the view. The filter sidebar shows available values with counts. Filters depend on trace-level attributes (`user_id`, `session_id`, `tags`) living on every observation; the SDKs propagate them via `propagate_attributes()` / `propagateAttributes()` (see [adding attributes](/docs/observability/sdk/instrumentation#add-attributes)).

## Common views [#common-views]

Save 2-3 of these as saved views for one-click access:

| I want to see…                        | How to filter                                                                                          |
| ------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| Key operations                        | Filter by observation `name` or `type` matching your most important operations                         |
| All LLM generations                   | Filter `type = generation`                                                                             |
| Expensive LLM calls                   | Filter `type = generation`, sort by `total_cost` descending                                            |
| Errors for a specific user            | Filter by `user_id` and `level = ERROR`                                                                |
| Operations scoped to a session        | Filter by `session_id`, sort by `latency` descending                                                   |
| All operations for one trace          | Filter by `trace_id`                                                                                   |
| Application entry points              | Filter `Is Root Observation = true`                                                                    |
| Model latency comparison              | Filter `type = generation`, group by `model` in a [dashboard](/docs/metrics) or sort by `model` column |
| Cost, latency, or errors by dimension | [Self-serve dashboards](/docs/metrics)                                                                 |

## Start with root observations [#root-observations]

For projects that ingest with Python SDK ≥ 4.7.0 or JS/TS SDK ≥ 5.4.0, Langfuse applies `Is Root Observation = true` when you open the observations table without a saved view, shared filter link, or other table state. You see your application entry points first and drill into their child operations from there.

The filter includes two kinds of roots:

- **Outer roots** are top-level observations with no parent.
- **App roots** are the highest exported application observations. When an OpenTelemetry or infrastructure span is the outer parent and the SDK filters it from export, the exported child still carries its parent span ID, so a "no parent" filter alone would miss it. App-root-aware SDKs mark that entry point instead.

Remove the filter in the sidebar to see every operation; Langfuse remembers that choice. Saved views and links with table state keep their own filters, and if the filter matches no roots while other observations exist, Langfuse removes it automatically.

Data appearing with up to a 10-minute delay? You are ingesting via older SDKs or via OpenTelemetry without the `x-langfuse-ingestion-version: 4` header. Upgrade to Python SDK ≥ 4.7.0 / JS/TS SDK ≥ 5.4.0, or set the header on your exporter; see [Versions & Compatibility](/docs/compatibility#faq-delay).

<!-- agent-instructions -->

---

## Agent Instructions

This page is part of the [Langfuse](https://langfuse.com) documentation, published as plain Markdown for AI agents. Every page is available as Markdown by appending `.md` to its URL, or by sending an `Accept: text/markdown` header. This page: `https://langfuse.com/faq/all/explore-observations-in-v4.md`.

### Querying these docs

If the answer is not on this page, query the documentation instead of guessing:

- **Semantic search** across all Langfuse docs, returning an answer with the relevant pages and excerpts. Ask a specific, self-contained question:

  ```bash
  curl -sG "https://langfuse.com/api/search-docs" --data-urlencode "query=How do I trace a LangGraph agent?"
  ```

- **Index of every page**: <https://langfuse.com/llms.txt>, with per-section indexes [llms-docs.txt](https://langfuse.com/llms-docs.txt), [llms-integrations.txt](https://langfuse.com/llms-integrations.txt), and [llms-self-hosting.txt](https://langfuse.com/llms-self-hosting.txt).

### Before writing Langfuse code

- **Install the [Langfuse Agent Skill](https://langfuse.com/docs/api-and-data-platform/features/agent-skill).** It encodes Langfuse's own best practices for instrumentation, prompt management, and evaluation, and materially improves results.
- **Read [What does a good trace look like?](https://langfuse.com/docs/observability/best-practices.md)** before instrumenting an application.
- **Verify endpoints, parameters, and response fields** against the [API reference](https://api.reference.langfuse.com) instead of inferring them from code examples.
- **Use the [Langfuse CLI](https://langfuse.com/docs/api-and-data-platform/features/cli)** (`npx langfuse-cli api <resource> <action>`) to read or write traces, prompts, datasets, and scores from the terminal.

Found an error in these docs? Please open an issue at <https://github.com/langfuse/langfuse-docs/issues>.
