What is a Flow

A Flow connects one Source to one or more Destinations, with an ordered Rule pipeline in between. It's how you express where signals go and how they're shaped along the way.

SOURCETradingView · Telegram · APIFLOWordered Rule pipelineMT5 brokerTelegram channelDiscord / HTTP webhook

Overview

A Flow is the unit of routing logic in Signalync. It subscribes to exactly one Source and can fan out to any number of Destinations. Between the Source and Destinations sits an ordered pipeline of Rules, filter, transform, and score operations that run on every signal before dispatch.

Because Flows are discrete objects, you can have multiple Flows on the same Source for different risk profiles or audiences. For example: one Flow sends full-size lots to your live MT5 account, while a second Flow sends half-size lots to a demo account, and a third Flow posts a summary to a Telegram channel, all triggered by the same incoming signal.

Signal lifecycle

Here is what happens from the moment a signal arrives until it reaches each Destination:

  1. Signal arrives at the Source. Signalync receives the inbound request at POST /api/inbound/{sourceAuthKey}, parses it, and saves a canonical Signal row.
  2. Flows are resolved. Signalync finds every active Flow that subscribes to this Source. If none exist, the signal is recorded but not dispatched.
  3. Rules run in order. For each Flow × Destination pair, Signalync clones the signal and runs the Flow's Rules top-to-bottom. A filter Rule can drop the signal for that Destination; a transform Rule rewrites the clone; a score Rule annotates it. The original Signal row is never mutated.
  4. Each Destination dispatches independently. Once Rules complete, the (possibly transformed) clone is handed to the adapter for that Destination, WebSocket for MT5, HTTP for webhooks, Bot API for Telegram and Discord.
  5. A Delivery row is written. Each dispatch attempt produces one Delivery row with its own status (delivered, failed, filtered, etc.), latency, and error message if applicable.

Fan-out

Routing to multiple Destinations from one Source is one of the most useful patterns in Signalync. A single TradingView alert can simultaneously reach your live MT5 broker for execution, a Telegram channel for transparency with your subscribers, and a Discord webhook for your community, all without any change to the alert setup.

Each Destination dispatches independently. If your MT5 EA is offline at the moment the signal arrives, the MT5 Delivery row is marked failed while the Telegram and Discord deliveries can still succeed. One failing Destination never blocks the others. You can inspect the per-Destination outcome on the Signal detail page.

Deliveries

Every time a Flow processes a signal, it produces one Delivery row per Destination. If your Flow has three Destinations, one signal creates three Delivery rows, each with its own status, dispatch latency, and (on MT5) execution details such as order ticket, executed volume, and fill price.

To inspect Deliveries, open the Signals page in the dashboard, click any signal row, and expand the detail drawer. Each Delivery is listed with its Destination name, status badge, and latency. If a Rule filtered the signal for a particular Destination, the Delivery row shows filtered and the name of the Rule that rejected it.

See Core Concepts for full definitions of each status value.