Appearance
Are you an LLM? You can read better optimized documentation at /channels/message-filters.md for this page in Markdown format
Message Filters
Not every message a provider posts is a trade you want. Some channels post a dozen instruments when you only trade gold; others mix real signals with promos, commentary, and "manual only" setups. The Filters tab on each channel gives you two independent tools to cut that down: a symbol allowlist that limits which instruments actually trade, and a text blacklist that drops whole messages containing terms you never want acted on.
The two filters work at different stages and have different scope. Getting that distinction right is the whole point of this page.
| Filter | Scope | What it decides | When it runs |
|---|---|---|---|
| Symbol allowlist | Per account | Which instruments this channel is allowed to execute on this account | After a signal is read, before it trades |
| Text blacklist | Channel-wide (every account) | Whether a message is even looked at | Before the message is parsed or traded |
Narrow instruments vs mute noise
Reach for the symbol allowlist when a multi-asset channel trades things you don't want on a given account. Reach for the text blacklist when a channel posts messages — promos, chatter, a signal style — you want dropped everywhere.
Where to find them
Open a channel's settings page and go to the Filters tab. It stays disabled until TTMT has matched the channel to your Telegram membership; once the channel is linked, both filters become editable. If you have more than one account, the page is scoped to the account currently selected in the account bar at the top — which matters for the symbol allowlist, since that one is per account.
The symbol allowlist (per account)
The symbol allowlist decides which instruments this channel is allowed to trade on the account you're viewing. Two states:
- Allow All Symbols — the default. Every symbol the channel posts is eligible to trade on this account.
- Explicit allowlist — turn off Allow All and build a list. Only symbols on the list trade; everything else the channel posts is ignored on this account.
TTMT seeds the allowlist picker with the channel's typical and historical symbols so you can tick the ones you want, and you can add a custom symbol by hand for anything the channel trades that isn't listed yet.
Because the allowlist is per account, the same channel can behave differently on each of your accounts. Allow every symbol on your demo account while restricting your prop account to XAUUSD only — the channel is the same, the allowlist is not.
Example — one channel, two accounts
A "Multi-Asset VIP" channel posts gold, EURUSD, GBPJPY, and BTCUSD. On your demo account you leave Allow All Symbols on to test everything. On your prop account, where crypto is banned by the firm, you switch to an explicit allowlist of XAUUSD and EURUSD. A BTCUSD signal from that channel trades on demo and is silently skipped on the prop account.
The text blacklist (channel-wide)
The text blacklist is a list of terms that, when any of them appears in a message, make TTMT skip that entire message — before it's parsed, before any trade is considered. Unlike the symbol allowlist, the blacklist is channel-wide: it applies to every account this channel trades on. It's the same list for demo, live, and prop.
Use it to mute what you never want acted on:
- A provider that posts giveaways and promos between signals → blacklist
giveaway,promo,free vip. - A channel whose quick-scalp calls you skip → blacklist
scalp. - Setups the provider labels as discretionary → blacklist
manual only,watch only.
When a message matches, it's dropped and recorded in the Signal Log with the reason blacklist_match:<term>, so you can always see which term caught it and why nothing traded.
How matching works
The matching is built to be forgiving of formatting but strict about word boundaries, so you don't accidentally block more than you meant:
- Case-insensitive.
Scalp,SCALP, andscalpall match the termscalp. - Whitespace-normalized. Extra spaces, tabs, and line breaks between words don't defeat a match.
- Whole-term matching. A term matches a whole word or phrase, not a fragment inside a longer word.
scalpblocks "Scalp setup incoming" but does not block "scalpel" — the term has to stand on its own. - Phrases are supported. A term can be several words:
manual onlymatches the phrase, and duplicate terms you enter are de-duplicated for you. - Emoji and punctuation. Matching is Unicode-aware and folds emoji variation selectors, so a term still matches whether or not the message decorates it with a variant emoji or stray punctuation.
Example — "scalp" ≠ "scalpel"
You blacklist scalp on a channel because you never want its scalp calls. A message reading ⚡ SCALP: GOLD BUY NOW is skipped (blacklist_match:scalp). A later message reading Precision like a scalpel — EURUSD swing setup trades normally, because whole-term matching means scalp doesn't match inside "scalpel".
Replies bypass the blacklist
There's one deliberate exception: a reply to an existing signal bypasses the blacklist. This keeps your open trades manageable. If a provider replies to their original signal with "Close half now" or "Move SL to entry" — and that reply happens to contain a blacklisted term — TTMT still processes it, because it's a follow-up to a trade you already have, not a new signal to filter out.
Why replies are exempt
The blacklist is a gate for new signals. A close-or-modify follow-up on an open trade isn't a new signal — blocking it could strand a position that the provider is trying to manage. Replies are always let through so your trades stay under control.
If matching fails, the message is let through (fail-open)
Blacklist matching is designed to fail open: if the check itself can't run for some reason, the message is passed through to normal processing rather than dropped. The filter never silently swallows a real signal because of an internal hiccup — a missed block is safer than a missed trade you meant to take. In practice this is invisible; it just means the blacklist can't be a single point of failure for your signals.
Worked example: cleaning up a noisy channel
Say you follow "Gold & FX Daily", a busy channel that posts:
🎁 GIVEAWAY: tag 3 friends to win!SCALP GOLD 2 min play — BUY NOWBUY XAUUSD @ 2650, SL 2640, TP 2660/2675BTCUSD long, entry 68000, SL 67000, TP 70000- A reply to message 3:
Move SL to breakeven(which mentions "scalp" in passing)
You want only the clean gold and forex swing signals, on your prop account. Set up the Filters tab like this:
- Symbol allowlist (prop account): switch off Allow All; allow
XAUUSDandEURUSDonly. - Text blacklist: add
giveawayandscalp.
The result:
| Message | Outcome | Why |
|---|---|---|
| Giveaway promo | Skipped | blacklist_match:giveaway |
| Scalp gold call | Skipped | blacklist_match:scalp |
BUY XAUUSD … swing | Trades | Not blacklisted, XAUUSD is on the allowlist |
BTCUSD long … | Skipped | Not blacklisted, but BTCUSD isn't on the allowlist |
| Reply: "Move SL to breakeven" | Processed | Replies bypass the blacklist, so your open gold trade moves to breakeven |
The blacklist muted the noise for every account; the allowlist narrowed the instruments on this one account; and the reply exemption kept your open trade manageable.
Related pages
- Channel Settings — the Filters tab in the context of all a channel's settings
- Settings Inheritance — how config profiles, account settings, and blocked hours resolve
- Signal Log — where a skipped message shows its
blacklist_match:<term>reason - Following Channels — enabling a channel before you filter it
- Execution Modes — how a message that passes the filters becomes a trade

