> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flowx.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Message throw intermediate event

> A Message Throw Intermediate Event is an event in a process where a message is sent to trigger communication or action with another part of the process. It represents the act of throwing a message to initiate a specific task or notification.

<Frame>
  ![](https://s3.eu-west-1.amazonaws.com/docx.flowx.ai/building-blocks/node/throw_message_event.png#center)
</Frame>

**Why this matters:** The Message Throw Intermediate Event enables communication between different parts of a process or between separate processes entirely. It allows you to send data and trigger actions in other process instances, making it essential for coordinating complex workflows.

## Configuring a message throw intermediate event

A Message Throw Intermediate Event sends a message that can be correlated with a catch event—either a [Message Catch Intermediate Event](./message-catch-intermediate-event) in a running process or a [Message Start Event](../message-catch-start-event) to initiate a new process instance. The event creates a connection between the sending and receiving components, allowing information or instructions to be transmitted. Once the message is thrown, the process continues its flow.

<Frame>
  ![](https://s3.eu-west-1.amazonaws.com/docx.flowx.ai/5.x/mti2.png)
</Frame>

### General config

<ParamField path="Correlate with catch message events" type="dropdown" required>
  Select the catch message event that this throw event should communicate with. The dropdown contains all catch messages from the process definitions accessible to the user.

  <Info>
    Define the message for the catch event first. This ensures its availability in the dropdown menu when configuring the throw intermediate event.
  </Info>
</ParamField>

<ParamField path="Correlation Key" type="string" required>
  A business or process variable that uniquely identifies the instance to which the message is sent. The engine extracts the value of this key at runtime and uses it to find a matching catch event listener.

  Common correlation key examples:

  * `processInstanceId` — to correlate within the same process
  * `parentProcessInstanceId` — to communicate between a parent and subprocess, or between sibling subprocesses that share the same parent
  * Custom business keys like `orderId`, `applicationId`, etc.
</ParamField>

<ParamField path="Send data" type="object">
  Define a JSON structure with the data to be sent along with the message. You can use dynamic values from the process data using the `${}` syntax.

  Example:

  ```json theme={"system"}
  {
    "customerName": "${customer.name}",
    "applicationStatus": "${application.status}",
    "amount": ${application.amount}
  }
  ```
</ParamField>

<ParamField path=" Process Stage" type="dropdown">
  Assign a stage to the node if needed. Stages help organize and track process progress.
</ParamField>

<Frame>
  ![](https://s3.eu-west-1.amazonaws.com/docx.flowx.ai/5.x/mti1.png)
</Frame>

***

<Warning>
  The corresponding catch event must be in a **waiting state** before this throw event fires. If the throw executes before the catch node is reached, the message will not be delivered and correlation will fail. This is especially important when working with async subprocesses.
</Warning>

## Use cases

### Correlating with a running process instance

Use the Message Throw Intermediate Event to send data to a [Message Catch Intermediate Event](./message-catch-intermediate-event) that is waiting in another part of the same process or in a different running process instance.

<Info>
  Both the throw and catch events must have matching:

  * **Message name** (selected in **Correlate with catch message events** / **Correlate with throwing message events**)
  * **Correlation key value** at runtime
</Info>

### Starting a new process instance

Use the Message Throw Intermediate Event to trigger a [Message Start Event](../message-catch-start-event) and start a new process instance. In this case, no correlation key is needed on the catch side since a new process instance is always created.

<Tip>
  For detailed examples of interprocess communication using throw and catch events, see [Intermediate Message Events Examples](./example-intermediate-message-events).
</Tip>

***

## Related documentation

<CardGroup cols={2}>
  <Card title="Message Catch Intermediate Event" href="./message-catch-intermediate-event" icon="message">
    Learn how to configure catch events that receive messages from throw events.
  </Card>

  <Card title="Message Start Event" href="../message-catch-start-event" icon="play">
    Trigger new process instances using messages from throw events.
  </Card>

  <Card title="Intermediate Message Events Examples" href="./example-intermediate-message-events" icon="book">
    Complete examples showing throw and catch event configurations.
  </Card>
</CardGroup>
