---
title: "Return False"
url: "https://help.flows.world/en/article/return-false"
language: "en"
last_updated: "2026-09-19T06:20:38.740Z"
---

# Return False

## Overview

Return false immediately terminates the flow and returns a **false result**. This is a terminal stage. Important: the flow itself still completes as a **success**. Only the returned result value is false, the flow status is not changed to failed. To actually fail or cancel a flow, route to an Error exit on another stage instead.

![](https://cdn-assets.productfruits.com/77920d9b-fedd-4597-9f00-1910f31dd2b8)

## Return false

**Where to find it:** *Flow Control > Return* in the stage library.

## Configuration

**This stage has no configuration fields.** Only stage comment/notes are available.

## Exit Points

**This stage has no exit points** - it terminates the flow immediately.

**Result:** Flow status remains **Success**. Only the returned result value is set to **false**.

## How It Works

When executed, the stage:

1.  **Sets the result value to false** and terminates the flow - no further stages execute
2.  **Flow still completes as a success** - the flow status is not marked failed
3.  **Preserves all variables** - Accumulated variables remain available in the response

**Key behavior:** Always terminates the flow with a false result, but the flow itself still completes as a success. No conditions or configuration.

## Common Use Cases

### 1\. Conditional Failure

Return failure when condition is not met.

-   Route Flow: `{{status}}` Equal `Active`
-   **Pass branch:** \[continue processing\] → Return true
-   **Fail branch:**
    -   Add To Response: `error` → `Status not active`
    -   Return false

**Result:** Failure if status ≠ Active.

### 2\. Validation Failure

Return error response when validation fails.

-   Route Flow: `{{amount}}` GreaterThan `0`
-   **Pass branch:** \[process\] → Return true
-   **Fail branch:**
    -   Add To Response: `error` → `Invalid amount`
    -   Add To Response: `code` → `400`
    -   Return false

**Result:** Returns an error response with the result value set to false (the flow status still stays success).

### 3\. Exception Handling

Propagate failure if API call fails.

-   Call API: external\_service (can fail)
-   Route Flow: `{{apiSuccess}}` Equal `true`
-   **Pass:** \[continue\] → Return true
-   **Fail:**
    -   Add To Response: `error` → `API call failed`
    -   Return false

**Result:** Propagate failure if API returns error.

### 4\. Multiple Validation Points

Fail at first validation error, success only if all pass.

-   Route Flow: `{{email}}` Contains `@`
    -   Fail: Return false (invalid email)
-   Route Flow: `{{age}}` GreaterThanEqual `18`
    -   Fail: Return false (too young)
-   \[process\] → Return true

**Result:** Fail at first validation error, success only if all pass.

## Best Practices

-   ✓ Add error details before Return false (error message, error code)
-   ✓ Combine with Route Flow to conditionally return failure
-   ✓ Use as explicit failure indicator in complex flows
-   ✓ Add stage comment to document the failure reason (e.g., "Failure - validation did not pass")
-   ✓ Pair with Return true for clear success/failure paths
-   ✓ Include error context (failure reason, timestamp, validation error)

## Common Mistakes

| Mistake | Symptom | Fix |
| --- | --- | --- |
| Expecting conditions | Stage always fails regardless of prior stages | This stage always fails - use Route Flow before it for conditional logic |
| Connecting output to Return false | Can't connect stages after Return false | Terminal stage has no exit points - nothing connects to it |
| Multiple returns in sequence | Only first Return false executes | Flow terminates at first Return false - subsequent stages don't run |
| No error details in response | Clients don't know why flow failed | Add error fields BEFORE Return false (error message, code, details) |

## Troubleshooting

| Issue | Common Cause | Fix |
| --- | --- | --- |
| Flow still continues | Another stage connected after Return false | Remove/reconnect stages - Return false must be last |
| Expecting the flow status to show failure | Return false only sets the result value to false | By design the flow status is always success, whether you use Return true or Return false. To fail a flow, route to an Error exit instead |
| Response missing error details | No Add To Response stages before Return false | Add error fields before this stage |
| Error fields missing | Add To Response stages placed after Return false | Move Add To Response stages BEFORE Return false |

## Do's and Don'ts

### Do:

-   ✓ Use at end of error handling branch
-   ✓ Combine with Route Flow to conditionally return failure
-   ✓ Use as explicit failure indicator in complex flows
-   ✓ Place after error-specific response fields (error message, error code)

### Don't:

-   ✗ Expect further stages to execute after Return false
-   ✗ Use multiple Return false stages in sequence (second won't execute)
-   ✗ Connect anything to return points (there are none)
-   ✗ Assume Return false changes the overall flow status; it only sets the true/false result value (the flow still reports success)

## Edge Cases

-   **No prior stages:** Return false still returns a false result (can use as a bare false response)
-   **Variables not initialized:** Variables don't affect outcome (always returns a false result)
-   **Error fields added before Return false:** All fields included in response
-   **Called after successful stages:** Still returns a false result; the flow status stays success either way

## Related Stages

-   [**Return true**](https://help.flows.world/en/article/return-true)**:** Return a true result instead of false
-   [**Add To Response (Fixed)**](https://help.flows.world/en/article/add-to-response-fixed)**:** Add fields before returning success
-   [**Add To Response (Dynamic)**](https://help.flows.world/en/article/add-to-response-dynamic)**:** Add fields before returning success
-   [**Route Flow**](https://help.flows.world/en/article/route-flow)**:** Conditionally choose Return true vs Return false
