# Message Handling Pipeline NServiceBus uses the concept of _pipelines_. A pipeline refers to the series of actions taken as a result of the triggering action. For example: * The incoming pipeline is triggered due to an incoming message * The outgoing pipeline is triggered due to an outgoing message * The [recoverability](/nservicebus/recoverability/index.md) pipeline is triggered due to failure during processing ## Pipeline customization There are several ways to customize the pipelines with varying levels of complexity. * [Manipulate the pipeline with behaviors](/nservicebus/pipeline/manipulate-with-behaviors.md) * [Steps, stages and connectors](/nservicebus/pipeline/steps-stages-connectors.md) * [Message mutators](/nservicebus/pipeline/message-mutators.md) * [Abort the pipeline](/nservicebus/pipeline/aborting.md) * [React to pipeline events](/nservicebus/pipeline/events.md) Unit testing of custom extensions is supported by [the `NServiceBus.Testing` library](/nservicebus/testing/index.md#testing-a-behavior).