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

# Review

> Create review requests that pause workflows for human approval

## Overview

The Review step creates a human-in-the-loop approval gate in your workflow. When it executes, a message is created in the target project and appears in the organization's [Messages](/organizations/messages) inbox. Team members can view the review data, discuss it via replies, and approve it to resume the workflow.

This is useful when you need manual sign-off before continuing — for example, verifying extracted contract data, approving a batch of notifications before they're sent, or reviewing transformed data before it's written to a database.

## How It Works

<Steps>
  <Step title="Review Step Executes">
    The automation reaches the Review step and creates a message in the target project.
  </Step>

  <Step title="Message Appears in Inbox">
    The message shows up in the organization [Messages](/organizations/messages) page and the project's [Inbox](/projects/dashboard/inbox), with the configured title, description, review data, and an **Open** button if a link was configured.
  </Step>

  <Step title="Team Reviews">
    A team member opens the message, reviews the key-value data, and can add replies or assign it to someone.
  </Step>

  <Step title="Approval or Rejection (Wait Mode)">
    If the review mode is **Wait**, the workflow is paused. The team member clicks **Approve** to resume the workflow or **Reject** to stop it. In **Continue** mode, the workflow proceeds immediately and an auto-approval message is created in the inbox.
  </Step>
</Steps>

<Note>
  A rejection is treated as a deliberate decision, not a failure. The Review step is marked **Rejected** (an amber minus-circle icon) in the [run logs](/automations/runs#step-statuses) rather than errored, any steps after it are skipped, and the run finishes as **Completed** rather than **Failed**. Inside a [Loop](/automations/steps/loop), rejecting one iteration does not turn the whole loop red.
</Note>

## Configuration

| Field           | Description                                                                                                                                                                                                                                                                                                                                       |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Review Mode** | Wait or Continue (see below)                                                                                                                                                                                                                                                                                                                      |
| **Title**       | Message title (supports [template variables](/automations/steps/overview#template-variables))                                                                                                                                                                                                                                                     |
| **Description** | Message description (supports [template variables](/automations/steps/overview#template-variables))                                                                                                                                                                                                                                               |
| **Link**        | Optional URL to attach to the review message. Reviewers see an **Open** button that opens the URL in a new tab. Supports [template variables](/automations/steps/overview#template-variables) — useful for linking directly to a specific contract, recording, or external resource. Must resolve to a URL starting with `http://` or `https://`. |
| **Review Data** | Key-value pairs of data to display to the reviewer (supports [template variables](/automations/steps/overview#template-variables))                                                                                                                                                                                                                |

<Note>
  The target project where review messages are created is determined automatically from the `{{var.project-id}}` variable in your composer. You no longer need to configure a project on the step itself.
</Note>

### Review Modes

| Mode         | Workflow Behavior                                                      | Action Required                                                      |
| ------------ | ---------------------------------------------------------------------- | -------------------------------------------------------------------- |
| **Wait**     | Pauses at this step until a team member acts                           | Yes — click **Approve** to resume or **Reject** to stop the workflow |
| **Continue** | Proceeds immediately; an auto-approval message is created in the inbox | No                                                                   |

<Note>
  In **Continue** mode, the message title is prefixed with **Auto-approved:** and the description is set to "This step was automatically approved." — regardless of the title and description you configured on the step. The configured review data is still attached to the message.
</Note>

### Pending Reviews on Re-run

Starting a new run of an automation automatically closes any review messages from prior runs of the same automation that are still awaiting a decision. Their workflows are resumed as **rejected** so they don't stay paused forever, and the messages are marked closed in the inbox.

This also applies when running a [composer](/automations/composers) — every automation referenced by the composer has its open reviews superseded before the new run starts.

<Tip>
  This keeps the [Reviews tab](/automations/composers#reviews-tab) clean: you won't see stale pending reviews from earlier runs piling up after you re-run a workflow.
</Tip>

### Review Data

The review data field lets you attach key-value pairs to the message. Use template variables to pull in data from previous steps — for example, showing the contract title and extracted royalty rate for a reviewer to verify.

The data is displayed as a structured card on the message detail page. Any UUID values in the data are automatically resolved to their human-readable names — for example, a contract ID is shown as the contract title. When used inside a [Loop step](/automations/steps/loop), each iteration creates its own review data entry with its own **Approve** and **Reject** buttons.

<Tip>
  In a loop, each iteration is independent — approving one entry resumes that iteration's workflow on its own. You can review items one by one with each row's **Approve** / **Reject** buttons, or select several and resolve them together with the bulk actions in the [Reviews tab](/automations/composers#reviews-tab). When a loop runs over a paginated source, the review entries from every page accumulate in the same table so you can handle the whole batch at once. In **Continue** mode inside a loop, each iteration still creates an auto-approval message in the inbox.
</Tip>

## Output

| Field        | Type   | Description               |
| ------------ | ------ | ------------------------- |
| `data`       | object | The resolved review data  |
| `message_id` | string | ID of the created message |

## Related Documentation

<CardGroup cols={2}>
  <Card title="Messages" icon="inbox" href="/organizations/messages">
    Where review messages appear in the organization.
  </Card>

  <Card title="Project Inbox" icon="inbox" href="/projects/dashboard/inbox">
    Project-level inbox where review messages also appear.
  </Card>
</CardGroup>
