# Aggregations


Flare aggregates spans by type to provide performance insights. Each aggregation groups spans by specific attributes, so you can track trends like "how is this query performing over time" or "which routes are slowest".

## Aggregated Span Types

#### Routes (`php_request`)

| Attribute | Required |
|---|---|
| `http.request.method` | yes |
| `http.route` | no |
| `flare.entry_point.handler.name` | no |

#### Queries (`php_query`)

| Attribute | Required |
|---|---|
| `db.statement` | yes |
| `db.system` | no |
| `laravel.db.connection` | no |

#### Jobs (`laravel_job`)

| Attribute | Required |
|---|---|
| `laravel.job.name` | yes |
| `laravel.job.class` | no |

#### Commands (`php_command`)

| Attribute | Required |
|---|---|
| `process.command` | yes |

#### External HTTP Requests (`php_http_request`)

| Attribute | Required |
|---|---|
| `url.full` | yes |
| `http.request.method` | yes |

Flare reads the host and the path out of `url.full`. Sending `server.address` or `url.path` instead does not work, because the requirement is on `url.full` itself, and the span gets skipped. You can still send those two, they just are not what the grouping uses.

Before grouping, Flare strips UUIDs and numbers out of the path, so `/api/orders/1234` and `/api/orders/5678` end up in the same group.

Browser `browser_fetch` and `browser_xhr` spans use this aggregation type too. There is no separate browser one. Rows are keyed on the method, host and path rather than on the span type, so a browser request shares a row with a PHP one only when both call the same endpoint in the same project.

#### Views (`php_view`)

| Attribute | Required |
|---|---|
| `view.name` | yes |
| `view.type` | no |

#### Livewire Components (`laravel_livewire_component`)

| Attribute | Required |
|---|---|
| `livewire.component.name` | yes |
| `livewire.component.class` | no |
| `view.file` | no |

A component can be aggregated when it has `livewire.component.name` and either `livewire.component.class` or `livewire.component.single_file_component` is `true` with a `view.file` present.

#### Browser Pages

Built from the browser span types. See [Aggregations](/docs/protocol-javascript/traces/aggregations) in the JavaScript protocol docs.

## Aggregation Statistics

Flare calculates the following statistics for each aggregation:

| Statistic | Description |
|---|---|
| `queries` / `query_time` | Database query count and total duration |
| `views` / `view_time` | View render count and total duration |
| `external_http_requests` / `external_http_request_time` | External HTTP call count and total duration |
| `cache.hits` / `cache.misses` / `cache.sets` / `cache.forgets` | Cache operation counts |
| `exceptions` | Exception count |
| `boot_time` / `terminate_time` | Application lifecycle durations |
