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 · ManualFLOWordered Rule pipelineMT5 brokerTelegram channel (soon)Discord / HTTP (soon)

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 and transform 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. 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, both triggered by the same incoming signal. When Telegram channel and Discord webhook Destinations launch, a third Flow will be able to post a summary to your community from the same alert.

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 and 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. 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. Today that means MT5, delivered over a secure WebSocket to the Receiver EA in your terminal, or an HTTP webhook POSTed to your own endpoint. Telegram channel and Discord webhook Destinations will dispatch through their own adapters when they launch.
  5. A Delivery row is written. Each dispatch attempt produces one Delivery row with its own status (such as Delivered, Failed, or Filtered), latency, and error message if applicable.

Fan-out

Routing one Source to multiple Destinations is one of the most useful patterns in Signalync. Today that means multiple MT5 accounts: a single TradingView alert can simultaneously reach your live account and a demo account, without any change to the alert setup. When Telegram channel, Discord webhook, and HTTP webhook Destinations launch, the same alert will also be able to post to your subscribers and your community in the same pass.

Each Destination dispatches independently. If the Receiver EA for one MT5 Destination is offline at the moment the signal arrives, that Delivery row is marked NotDelivered while deliveries to your other Destinations can still succeed. One unreachable 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 the order ticket 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 how Sources, Flows, Destinations, and Deliveries fit together.