> ## 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 catch intermediate event

> A Message Catch Intermediate Event is a type of event in a process that waits for a specific message before continuing with the process flow.

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

**Why this matters:** It enables the process to synchronize and control the flow based on the arrival of specific messages, ensuring proper coordination between process instances.

Similar to the message catch boundary event, the message catch intermediate event is important because it facilitates the communication and coordination between process instances through messages. By incorporating this event, the process can effectively synchronize and control the flow based on the arrival of specific messages.

<Info>
  Message Catch Intermediate Event can be used as a standalone node, this means that it will block a process until it receives an event.
</Info>

## Configuring a message catch intermediate event

Imagine a process where multiple tasks are executed in sequence, but the execution of a particular task depends on the arrival of a certain message. By incorporating a message catch intermediate event after the preceding task, the process will pause until the expected message is received. This ensures that the subsequent task is not executed prematurely and allows for the synchronization of events within the process.

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

### Trigger type

A message catch intermediate event can be driven by one of two trigger types:

| Trigger type               | Use it when…                                                                                                                                                                                                                   |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Internal Throw Message** | Another node inside FlowX — typically a [Message Throw Intermediate Event](./message-throw-intermediate-event) elsewhere in the process — sends the resume signal.                                                             |
| **Incoming Webhook**       | An external system resumes the process over HTTP. See [Incoming Webhooks → On a Message Catch Intermediate Event](../../../platform-deep-dive/integrations/incoming-webhooks#on-a-message-catch-intermediate-event) for setup. |

The rest of this page covers the **Internal Throw Message** configuration. For the **Incoming Webhook** flow (Data Source, Webhook Correlation Key, Process Correlation Key, Process Key), follow the Incoming Webhooks page.

#### General config

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

  <Info>
    The message name must match exactly between the throw and catch events for correlation to work.
  </Info>
</ParamField>

<ParamField path="Correlation Key" type="string" required>
  A business or process variable that uniquely identifies the process instance to which the message is sent.

  The engine extracts the value of this key when the token arrives on the catch node. At runtime, the extracted value must match the value extracted by the corresponding throw event.

  Common correlation key examples:

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

<ParamField path="Process Key" type="string">
  The process key where the data received from the throw event will be stored. This allows the catch event to capture and use the payload sent along with the message.
</ParamField>

<Warning>
  The catch event must be in a **waiting state** before the corresponding throw event fires. If the throw executes before the catch node is reached, the message will not be delivered. This is especially important when working with async subprocesses — ensure the subprocess containing the catch event has time to reach the catch node before the throw fires.
</Warning>

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