---
id: flow--sync-call
title: "Sync call"
summary: "Sequencer inside one flow: sends the record to `Output`, waits until that branch has completed, then sends the same record to `Continue`. Use it to run \"first this, then that\" with the same data. It does not call other flows."
audience: user
keywords: "input, output, continue"
---
# Sync call

Sequencer inside one flow: sends the record to `Output`, waits until that branch has completed, then sends the same record to `Continue`. Use it to run "first this, then that" with the same data. It does not call other flows.

## Pins

| Pin | Kind | Types | Description |
|---|---|---|---|
| Input | input | any | Record to process. |
| Output | output | same as input | Called first, synchronously. |
| Continue | continue | same as input | Called after the `Output` branch has returned. |

## Configuration

None besides the common settings.

## Behaviour

- Calls `Output` with the record and metadata and waits for the whole branch (all connections, one after another). Then calls `Continue` with the same record and metadata.
- If the `Output` branch throws an exception, `Continue` is not called and the exception is passed back to the caller (e.g. to a Try catch upstream).
- An unconnected `Output` or `Continue` is skipped.

## Notes

- Changes made to the record or metadata in the `Output` branch are visible in the `Continue` branch (same instances).
- Only synchronous work is awaited. Work handed to other threads in the `Output` branch (queues, Start flow, async callbacks) may still run when `Continue` is called.
- To call another flow and get its result, build that flow as a flow plugin ("Plugin port" entry point and "Plugin port response") and use it as a component; to only trigger another flow use Start flow.

## Example

Timer → Database reader → **Sync call** → (`Output`) Http client ; (`Continue`) Database writer (mark as sent)
