TEASEDocs
ProductsLinkTelegram gate

Set up a junk-traffic split

Keep freshly-created, throwaway Telegram accounts off your manager's DM.

Ad traffic brings a mix of real prospects and throwaway accounts (trolls, bots, curious clickers on a burner). The gate can tell them apart well enough to matter: Telegram user ids grow roughly chronologically, so a very high id is almost certainly a freshly-created account. A junk-traffic split routes those to a public channel instead of your manager's DM, so junk never sees the DM link at all — while normal, older accounts (and anyone with Telegram Premium, a paying user by definition) still go straight through.

How the split decides

For each /start, the gate checks — in order:

  1. Is the split configured at all (a channel URL and a threshold are both set)? If not, everyone goes to the DM.
  2. Is the account Telegram Premium and is the premium bypass on? If so, DM — Premium is never filtered.
  3. Is the account's Telegram id the threshold? If so, channel. Otherwise, DM.

Any missing or malformed signal falls back to the DM — the split is deliberately revenue-safe: better a troll reaches the DM than a real buyer gets lost in the channel.

Configure it

The split is four fields on the gate row, sent as a partial PATCH:

curl -X PATCH https://app.tease.link/api/admin/tg/gate \
  -H "Authorization: Bearer $TEASE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "split_enabled": true,
    "channel_url": "https://t.me/your_overflow_channel",
    "fresh_id_min": 7000000000,
    "premium_always_dm": true
  }'
FieldTypeMeaning
split_enabledbooleanTurns the split on/off. Off (default) = everyone goes to the DM.
channel_urlstringEmpty or https://…, max 1024 chars — where fresh accounts land.
fresh_id_mininteger≥ 0 — accounts with a Telegram id at or above this count as "fresh".
premium_always_dmbooleantrue (default) — a Telegram Premium account always goes to the DM, even if it's fresh.

A channel_url that doesn't start with https:// (or exceeds 1024 characters) is rejected with 422; a negative fresh_id_min is rejected the same way.

This is the same DM-vs-channel decision the rules engine can express as one rule (id_min + premium: false → your channel destination). If you've already saved any rules, they take over the routing decision entirely and these four fields stop being read — see the next section.

Picking a threshold

Telegram ids are already well past several billion and climbing. Rather than guessing, watch the gate's stats for a day or two after a rough guess, then tighten or loosen fresh_id_min against the live DM/channel ratio you actually see — the split only affects new /starts, so tightening it later doesn't reclassify anyone already routed.

How to know it worked

The stats panel breaks /starts down by destination for the selected period. After saving, watch for channel-routed starts appearing where you'd expect fresh accounts, and DM-routed starts continuing normally for everyone else. A user already routed once is never re-routed on a repeat /start — first decision wins, same as the click attribution itself.

If it didn't work

  • Nothing ever routes to the channel — confirm both channel_url and fresh_id_min > 0 are set; the split is a no-op gate on either condition being empty/zero.
  • Everything routes to the channel, including real subscribers — the threshold is probably too low for how far Telegram ids have already climbed; raise fresh_id_min.
  • A saved rule set exists and this split seems to be ignored — that's expected: once any rule is stored, the gate runs the rules engine instead of this legacy path. Express the same split as a rule, or clear the rules to fall back to this simpler mechanism.

What's next

  • Route with rules for anything beyond a simple two-way split — country-specific destinations, language targeting, more than one overflow channel.

On this page