# Enable the transactions processor

Copy as Markdown[Open in ChatGPT](https://chatgpt.com/?q=Read%20https%3A%2F%2Fcoralogix.com%2Fdocs%2Fuser-guides%2Fapm-v2%2Ffeatures%2Ftransactions%2Fenable-transactions-processor.md%20and%20help%20me%20with%20my%20question%20about%20this%20Coralogix%20documentation%20page.)[Open in Claude](https://claude.ai/new?q=Read%20https%3A%2F%2Fcoralogix.com%2Fdocs%2Fuser-guides%2Fapm-v2%2Ffeatures%2Ftransactions%2Fenable-transactions-processor.md%20and%20help%20me%20with%20my%20question%20about%20this%20Coralogix%20documentation%20page.)

The [Transactions](https://coralogix.com/docs/user-guides/apm-v2/features/transactions.md) tab breaks a service into its operations, and - for services that emit transaction data - breaks each operation into its **segments** in the drilldown. That segment breakdown appears only once the Coralogix transactions processor is running. This guide walks through enabling it.

Use this guide if an operation's drilldown shows only its spans list with no segment breakdown, or if you are setting up a new service and want segment-level visibility from day one.

## What you need[​](#what-you-need "Direct link to What you need")

* Coralogix [Application Performance Monitoring (APM)](https://coralogix.com/docs/user-guides/apm-v2/getting-started/apm-onboarding-tutorial.md) installed and configured.
* [Span Metrics](https://coralogix.com/docs/user-guides/apm-v2/getting-started/span-metrics.md) enabled for the service.
* An OpenTelemetry Collector running version `0.130.0` or later.
* For Kubernetes deployments, the [Coralogix Kubernetes Complete Observability](https://coralogix.com/docs/opentelemetry/kubernetes-observability/advanced-configuration.md) integration on Helm chart `v0.0.203` or later.

## How it works[​](#how-it-works "Direct link to How it works")

By default, OpenTelemetry lets you aggregate the performance of a single operation (span or endpoint) over time. It does not natively aggregate the performance of multiple connected operations over time as a single logical unit. The Coralogix transactions processor fills that gap, generating the segment-level data the operation drilldown uses.

You can continue using pure OpenTelemetry while adding transaction data through a lightweight, open processor contributed by Coralogix to the OpenTelemetry community. This approach adds no vendor-locked SDKs or agents and requires no modifications to the OpenTelemetry SDK. See the [v0.130.0 enhancements in the OpenTelemetry Collector Contrib changelog](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/CHANGELOG.md#v01300).

The processor automatically identifies the transaction root span within each transaction and applies transaction attributes to all spans in that transaction:

* **Transaction root identification**: the processor finds the span with no parent span ID (or whose parent is not in the current trace) and marks it as the transaction root.

* **Transaction attributes**: all spans from the same service that are part of traces containing a transaction root receive the following attributes:

  <!-- -->

  * `cgx.transaction`: set to the name of the transaction root span.
  * `cgx.transaction.root`: set to `true` for the root span only.

## Configure the processor[​](#configure-the-processor "Direct link to Configure the processor")

Configure the [Coralogix transactions processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/coralogixprocessor#coralogix-processor) for your deployment.

* Kubernetes integration
* Custom OpenTelemetry deployments

The [Coralogix Kubernetes Complete Observability](https://coralogix.com/docs/opentelemetry/kubernetes-observability/advanced-configuration.md) integration ships the transactions processor as a preset in the [`values.yaml`](https://github.com/coralogix/telemetry-shippers/blob/7e2a7890605f8bb2c6315e9bb3aa8a8d0dbde2f4/otel-integration/k8s-helm/values.yaml#L355).

To enable the Coralogix transactions processor in your own collector configuration:

1. Add `coralogix` and `groupbytrace/transactions` processors in the `processors` section:

   ```
   processors:

     groupbytrace/transactions:

       wait_duration: 5s

       num_traces: 1000

     coralogix:

       transactions:

         enabled: true
   ```

   Note

   The `groupbytrace/transactions` processor must be added before the `coralogix` processor. This ensures that all spans belonging to the same trace are grouped and processed together.

2. Add `coralogix` and `groupbytrace/transactions` processors to your `traces` pipeline:

   ```
   service:

     pipelines:

       traces:

         processors:

           - groupbytrace/transactions

           - coralogix
   ```

Once configured, the transactions processor starts generating segment-level visibility, and the segment breakdown appears in each operation's drilldown.

## Next steps[​](#next-steps "Direct link to Next steps")

Group a service's failures by status code in [Errors](https://coralogix.com/docs/user-guides/apm-v2/features/errors.md).

## Additional resources[​](#additional-resources "Direct link to Additional resources")

* [Transactions](https://coralogix.com/docs/user-guides/apm-v2/features/transactions.md)
* [Span Metrics](https://coralogix.com/docs/user-guides/apm-v2/getting-started/span-metrics.md)
* [Coralogix Kubernetes Complete Observability](https://coralogix.com/docs/opentelemetry/kubernetes-observability/advanced-configuration.md)
* [Coralogix processor (OpenTelemetry Collector Contrib)](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/coralogixprocessor#coralogix-processor)
