> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vetox.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Twitch notifications

> Announce in Discord when a Twitch streamer goes live or goes offline, with a fully customisable embed.

<Info>
  Requires **Basic**. Up to **10 streamers** per server. See [how notifications work](/en/notifications/overview) for the rules shared by all platforms.
</Info>

## Adding a streamer

Search for the channel by name — Vetox looks it up on Twitch and confirms it exists before adding. A username that does not resolve is rejected with **Twitch user not found**.

Usernames are 1–25 characters, letters, numbers and underscores only.

## Settings

| Setting                       | Default        | Notes                                                                             |
| ----------------------------- | -------------- | --------------------------------------------------------------------------------- |
| **Discord Channel**           | —              | Required. Set per streamer, so different streamers can post to different channels |
| **Notify when online**        | **On**         | The live announcement                                                             |
| **Notify when offline**       | **Off**        | A second announcement when the stream ends                                        |
| **Mention Role**              | None           | Pinged with the announcement                                                      |
| **Custom Notification Embed** | Twitch default | Purple, with the stream title, game and viewer count                              |

## Variables

| Variable             | Resolves to                                       |
| -------------------- | ------------------------------------------------- |
| `{streamer.name}`    | The streamer's display name                       |
| `{streamer.url}`     | Their Twitch channel URL                          |
| `{streamer.avatar}`  | Their profile picture                             |
| `{stream.title}`     | The stream title — **live announcement only**     |
| `{stream.game}`      | The category being streamed — **live only**       |
| `{stream.viewers}`   | Viewer count at announcement time — **live only** |
| `{stream.thumbnail}` | The stream preview image — **live only**          |

<Warning>
  The four `{stream.*}` variables have no value in an **offline** announcement. Any embed field built from them disappears from that message. Keep your offline embed to `{streamer.*}` variables only.
</Warning>

## How going live is detected

Vetox checks every **60 seconds** and tracks whether the channel is live.

<Steps>
  <Step title="Offline → live">
    The announcement fires, subject to a **10-minute cooldown** per streamer.
  </Step>

  <Step title="Still live">
    Nothing. The state is simply refreshed — a long stream produces exactly one announcement.
  </Step>

  <Step title="Live → offline">
    The offline announcement fires, if you enabled it.
  </Step>
</Steps>

<Warning>
  **Adding a streamer who is already live announces nothing.** The tracker fires on the transition, not on the current state. Your first announcement will be their next stream.
</Warning>

<Note>
  A stream that briefly drops and reconnects within the cooldown window produces one announcement, not two — this is deliberate, and it is why the cooldown is 10 minutes rather than 1.
</Note>

## Real-world setup

<Steps>
  <Step title="Turn Twitch on in Server Setup">
    It is off by default. Nothing works until this is on.
  </Step>

  <Step title="Add the streamer">
    Search their name and select them from the results.
  </Step>

  <Step title="Pick a channel and a role">
    A dedicated `#going-live` channel and a `@Stream Ping` role that members opt into via [Self-Roles](/en/engagement/self-roles) is the pattern most servers land on.
  </Step>

  <Step title="Check the bot's permissions there">
    View Channel, Send Messages and **Embed Links**.
  </Step>

  <Step title="Wait for their next stream">
    Do not judge it by adding someone mid-stream.
  </Step>
</Steps>

## Troubleshooting

<AccordionGroup>
  <Accordion title="They went live and nothing posted">
    Check Server Setup's Twitch toggle, premium is active, and Embed Links in the channel. If you added them while they were already streaming, this is expected — wait for the next stream.
  </Accordion>

  <Accordion title="The game or viewer count is missing">
    You are looking at the offline announcement. Those variables only exist while live.
  </Accordion>

  <Accordion title="Changing the channel did not take">
    Clearing the channel field sends nothing and silently keeps the old value. Select a different channel rather than clearing it.
  </Accordion>

  <Accordion title="Two servers follow the same streamer and only one got the ping">
    Both should fire. If one channel's permissions failed, that item is lost with no retry — check Embed Links on the failing side.
  </Accordion>
</AccordionGroup>

<Card title="Kick" icon="tower-broadcast" horizontal href="/en/notifications/kick">
  The same live/offline model on Kick.
</Card>
