What is a Route

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

SOURCETradingView · Telegram · APIROUTEordered Step pipelineMT5 brokerTelegram channelDiscord / HTTP webhook

Overview

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

Because Routes are discrete objects, you can have multiple Routes on the same Source for different risk profiles or audiences. For example: one Route sends full-size lots to your live MT5 account, while a second Route sends half-size lots to a demo account, and a third Route 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 Target:

  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. Routes are resolved. The Route Resolver finds every active Route that subscribes to this Source. If none exist, the signal is recorded but not dispatched.
  3. Steps run in order. For each Route × Target pair, Signalync clones the signal and runs the Route's Steps top-to-bottom. A filter Step can drop the signal for that Target; a transform Step rewrites the clone; a score Step annotates it. The original Signal row is never mutated.
  4. Each Target dispatches independently. Once Steps complete, the (possibly transformed) clone is handed to the adapter for that Target, WebSocket for MT5, HTTP for webhooks, Bot API for Telegram and Discord.
  5. A Delivery row is written. Each dispatch attempt produces one SignalDelivery row with its own status (delivered, failed, filtered, etc.), latency, and error message if applicable.

Fan-out

Routing to multiple Targets 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 Target 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 Target never blocks the others. You can inspect the per-Target outcome on the Signal detail page.

Deliveries

Every time a Route processes a signal, it produces one Delivery row per Target. If your Route has three Targets, 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 Target name, status badge, and latency. If a Step filtered the signal for a particular Target, the Delivery row shows filtered and the name of the Step that rejected it.

See Core Concepts for full definitions of each status value.