Wait For Message action

  • Release version: Yokohama
  • Updated January 30, 2025
  • 3 minutes to read
  • Summarize
    Summarized using AI
    This content was generated using new OpenAI-powered functionality. Results are provided on an as is basis and are not guaranteed to be accurate or complete.

    Summary of Wait For Message action

    The Wait For Message action in ServiceNow’s Workflow Studio allows you to pause a flow until it receives a specific string message via thesendMessage()API. This action is useful for controlling flow execution based on external triggers or events. You can optionally configure a timeout to prevent the flow from waiting indefinitely if the expected message is not received.

    Show full answer Show less

    Key Features

    • Message Input: Specify the exact string message that resumes the flow when received from the sendMessage() API.
    • Timeout Control: Enable a timeout to limit how long the flow waits for the message. This prevents indefinite waiting and allows the flow to continue after the specified duration if no message arrives.
    • Duration Setting: Define the wait time (hours, minutes, seconds) used with the timeout option.
    • Outputs: The action provides two outputs:
      • Payload: The string payload sent along with the message, usable in subsequent flow logic.
      • State: Numeric status indicating success (0) or error (1) of the action.
    • Role Requirements: Available to users with flowdesigner or admin roles.

    Practical Use and Guidelines

    • Converting Classic Workflows: Replace “Wait for WF Event” activities with Wait For Message actions by using event names as message strings.
    • Generating Messages: Use the sendMessage() API to send messages that resume waiting flows. Messages can be generated by the flow itself via custom scripted actions or by external processes such as events or scripts.
    • Example Scenario: In an approval workflow, if an approval is rejected or skipped, the flow waits for a specific message (e.g., “Resume Flow”) sent via the API. Once received, the flow resumes, optionally using the accompanying payload (such as “Resubmitted for approval”) to update comments or rerun approval steps.

    Benefits for ServiceNow Customers

    • Enables precise control over flow execution by pausing until specific external or internal signals are received.
    • Improves workflow flexibility by integrating asynchronous events or manual interventions that trigger flow continuation.
    • Prevents indefinite pauses in flows with configurable timeout options, enhancing reliability and predictability.
    • Supports modernization by migrating classic workflows to the Flow Designer framework using consistent event-driven logic.

    Pause a flow until it receives a specific message from the flow API. Specify the string message that resumes running the flow, and optionally provide a time out value to resume the flow if no message is received after a specific amount of time.

    Roles and availability

    Available as a Workflow Studio ServiceNow core action. Users with the flow_designer or admin role can add an action to a flow and define configuration details.

    Inputs

    Provide a value for each input that your action needs. To add dynamic values, you can also drag pills from the Data panel or select them from the pill picker.

    Message
    Data type: String

    The text string that the flow is waiting to receive from the sendMessage() API. The action uses this message to resume running the flow. For more information about the sendMessage() API, see FlowAPI - sendMessage(String contextSysID, String message, String payload).

    Enable timeout
    Data type: True/False
    Option to limit the amount of time that the flow waits for the action to be completed before continuing.
    Note:
    Use the Enable timeout option to help prevent the flow from infinitely waiting. If the message isn't received, a timeout value specifies when the system can skip the Wait for Message action and go to the next item in the flow. You must set a Duration value to enable a timeout.
    Duration
    Data type: Duration

    Amount of time that the flow waits before continuing when the Enable timeout option is selected. Enter the time to wait in hours, minutes, and seconds. If you leave this field empty, the flow doesn’t wait.

    Outputs

    These outputs appear in the Data panel. You can use them as inputs elsewhere in your flow.

    Payload
    Data type: String

    A text string returned by the sendMessage() API. The parent flow can use payload values as inputs for other actions or flow logic.

    State
    Data type: Choice
    The completion status of the action as a numeric value.
    • 0 (success)
    • 1 (error)

    General Guidelines

    Use these general guidelines when creating flows that wait for a message.
    Convert workflow event waiting activities using this action
    Convert classic workflows that use the Wait for WF Event activity to flows that use the Wait For Message action. You can use the event name as the message text that resumes the flow.
    Use the sendMessage() method to create messages
    Create messages for waiting flows using the sendMessage() method. If you want the flow to generate the message to resume running, create a custom action with a Script step to generate the message. Alternatively, create some script logic that runs outside the flow such as an event to generate the message. For more information about the sendMessage() API, see FlowAPI - sendMessage(String contextSysID, String message, String payload).

    Wait for message to run Go back to flow logic

    Execution details of the Wait for Message action in the Waiting state. The other steps of the flow are in the Not Run state.

    In this example flow, the approval state determines whether to run the Wait for Message action. If the approval state is skipped or rejected, the flow waits for a message from the sendMessage() API before continuing. You could use this logic to fix a rejected approval request and resubmit it for approval.

    In this example, Fred Luddy rejected the approval and requested more information. To resume the flow, someone has to address Fred's comments, and then run the sendMessage() API to send the proper message Resume Flow.

    Execution details of the Wait for Message action in the Completed state. The payload has a runtime value of Resubmitted for approval.

    After fixing the change request, someone ran the sendMessage() API to send the message Resume Flow and also send the flow a Payload value of Resubmitted for approval. For more information about the sendMessage() API, see FlowAPI - sendMessage(String contextSysID, String message, String payload).

    Since the API message value matched the conditions of the Wait for Message action, the flow resumed running. In this case, the flow used a Go back to flow logic block to rerun the Ask for Approval action.

    Example activity stream of a change record with the text Resubmitted for approval.

    Here is the activity log of the change request. The payload value Resubmitted for approval was added to the Additional comments field.