---
title: "Transaction Controller"
description: "Configure the JMeter Transaction Controller logic controllers: properties, defaults, and practical usage notes for building reliable load tests."
url: https://docs.jmeter.ai/components/transaction-controller/
lastUpdated: 2026-10-01
source: docs.jmeter.ai
---

# Transaction Controller

*Part of the **Logic Controllers** category. Also documented in context in the [full Component Reference](/user-manual/component-reference/#transaction-controller).*

**TL;DR:** the Transaction Controller groups several samplers into one logical “transaction” and reports their combined elapsed time as a single result — use it to measure a multi-request business flow (login + fetch + checkout) as one number instead of N separate ones.

![Transaction Controller](/images/screenshots/transactioncontroller.png)

The Transaction Controller generates an additional
sample which measures the overall time taken to perform the nested test elements.

> **Note**
> Note: when the check box “`Include duration of timer and pre-post processors in generated sample`” is checked,
> the time includes all processing within the controller scope, not just the samples.

There are two modes of operation:

- additional sample is added after the nested samples
- additional sample is added as a parent of the nested samples

The generated sample time includes all the times for the nested samplers excluding by default (since 2.11) timers and processing time of pre/post processors
unless checkbox “`Include duration of timer and pre-post processors in generated sample`” is checked.
Depending on the clock resolution, it may be slightly longer than the sum of the individual samplers plus timers.
The clock might tick after the controller recorded the start time but before the first sample starts.
Similarly at the end.

The generated sample is only regarded as successful if all its sub-samples are successful.

In parent mode, the individual samples can still be seen in the Tree View Listener,
but no longer appear as separate entries in other Listeners.
Also, the sub-samples do not appear in CSV log files, but they can be saved to XML files.

> **Note**
> In parent mode, Assertions (etc.) can be added to the Transaction Controller.
> However by default they will be applied to both the individual samples and the overall transaction sample.
> To limit the scope of the Assertions, use a Simple Controller to contain the samples, and add the Assertions
> to the Simple Controller.
> Parent mode controllers do not currently properly support nested transaction controllers of either type.

| Name | Required | Description |
| --- | --- | --- |
| Name | Yes | Descriptive name for this controller that is shown in the tree, and used to name the transaction. |
| Generate Parent Sample | Yes | If checked, then the sample is generated as a parent of the other samples,     otherwise the sample is generated as an independent sample. |
| Include duration of timer and pre-post processors in generated sample | Yes | Whether to include timer, pre- and post-processing delays in the generated sample.     Default is `false` |

### Common gotchas

- **“Generate parent sample”** must be checked to get the combined transaction result; unchecked, it’s purely a grouping/organizational element in the tree and reports nothing extra.
- **“Include duration of timers and pre-post processors”** changes what counts toward the transaction time — leave it on if think time between the grouped requests is part of what you’re measuring (real user flow time), off if you only care about server-side request time.
- Nesting Transaction Controllers works, but deeply nested transactions make listener output harder to read — one level per logical business flow is usually enough.
- Pair with [SLA thresholds](/topics/jmeter-assertions-guide/) on the transaction’s own elapsed time when the business flow (not the individual request) is what has an SLA.

## Related

- [Logic Controllers & Flow Control](/topics/logic-controllers-flow-control/)
- [Full Component Reference](/user-manual/component-reference/)
- [Functions and Variables](/user-manual/functions/)
