CrossMod
EN
  • PL Polski
  • EN English
  • DE Deutsch
  • ES Español
  • PT Português
  • FR Français
  • RU Русский
  • IT Italiano
  • TR Türkçe
  • UK Українська
  • CS Čeština
  • NL Nederlands
  • JA 日本語

Documentation

CrossMod watches chat on Twitch, Kick and YouTube at the same time: it filters messages, answers commands, collects the history of penalties and shows chat on screen in OBS. This page explains, one part at a time, what each part of the dashboard does and where to start.

Everything below happens in the dashboard, after logging in. The dashboard speaks the same language as the home page (you can change it at the bottom of the menu) and works the same on a computer and on a phone.

You can open this page at any time from the dashboard menu, item Help. It opens inside the dashboard, with the menu on the left, so you never have to find your way back.

If you do not know where to look for something, click Search the dashboard at the very top of the menu (keyboard: Ctrl and K) and type a word, for example "ban", "overlay" or "welcome". The dashboard will point to the page it sits on.

You also do not have to hunt for the right chapter here. Below the title of every dashboard page there is a Help for this page link - it opens a window with the same text as below, but straight at the chapter about the page you are on, without leaving the dashboard.

Page and button names below are given as they appear in the dashboard in your language. You can change the dashboard language at the bottom of the menu, in the "Language" field.

On this page
  1. 01First steps
  2. 02Enabling the bot
  3. 03Automod phrases
  4. 04Commands and recurring messages
  5. 05The overlay and the chat panel in OBS
  6. 06Mod Log
  7. 07Statistics
  8. 08Quick moderation
  9. 09Bot settings
  10. 10YouTube
  11. 11When something does not work
  12. 12Privacy and contact

First steps

  1. Log in. On the home page choose to log in through Twitch or through Kick. The account is created by itself on the first visit.
  2. Add the second platform. On the Dashboard you will see a tile "Connect your Kick account" or "Connect your Twitch account". You can do the same in Settings, in the "Bot and connected accounts" section - that is also where you disconnect a platform. Until the second platform is connected, the bot works on one only. You connect YouTube the same way in Settings, with the "Connect YouTube" button - details in the "YouTube" chapter.
  3. Check the connection status. At the top of the Dashboard there are two badges, one per platform. Green means everything is fine. Orange "reconnect" means the bot has nothing to work with there - click it and log in again. A red bar above the badges appears when the platform has revoked its permission; it holds a separate button for each platform, and after logging in again the bar disappears on its own. The same three states are visible in Settings, in the "Bot and connected accounts" section.
  4. Enable the bot on your channel. This is a one-off step in Settings: the "Enable bot" button in the "Bot and connected accounts" section. Without it CrossMod does not start reading your chat, so phrases and commands will not work. Details in the next chapter.
  5. Add your first phrase. Fastest from the Dashboard, with the "Add an automod phrase" tile. From that moment the bot reacts to it on both platforms.

A login is valid for a week. If the dashboard starts refusing to save, refreshing the page and logging in again is usually enough.

Enabling the bot

Everything you do once, at the very beginning, is in Settings (the "Settings" button at the bottom of the menu), in the Bot and connected accounts section. This is where you come back whenever the dashboard says the connection to Twitch or Kick has expired. The full diagnostics stayed on a separate Enable bot page: it is no longer in the menu, but a link at the bottom of that section leads to it.

  • Connected accounts (Settings). The Twitch, Kick and YouTube cards at the top of the section. Here you connect the second platform and here you disconnect it. The card tells two different things apart: connection expired in orange, meaning the platform stopped honouring the permission and the bot fell silent by itself, and disconnected in grey, meaning you clicked "Disconnect" yourself. In both cases the "Reconnect" button comes back, and phrases, commands and overlay settings wait untouched.
  • Bot status (Enable bot page). A list of what the bot reacts to on your channel right now. It checks itself when you open the page, and the button next to it checks again. It covers both platforms - each item carries the platform name, so it is immediately clear which side is missing something. An item with a cross has a sentence underneath saying exactly what is wrong.
  • The "Enable bot" button (Settings). One button and one click. Until you click it, CrossMod does not read your chat, so automod phrases and commands have nothing to react to. The line above the button says whether the bot is on right now. You can click it again whenever something stops working.
  • Overlay addresses for OBS (Enable bot page). All the addresses to paste into OBS, each with a "Copy" button. They are hidden by default, so they are not shown to viewers during a stream.
  • Session (Enable bot page). Disconnecting both platforms at once, together with logging out. Logging out alone, without disconnecting, is always under the "Log out" button at the bottom of the menu.

Overlay addresses contain your private key. Do not show the Enable bot page on stream with the addresses revealed, and do not send them to anyone.

Automod phrases

The Automod phrases page is the heart of CrossMod. You type a word or a fragment of text, choose where to look for it and what the penalty should be. The bot checks every message on Twitch and Kick and reacts on its own.

What you set for a phrase

  • Where to look: in the message, in the nickname or everywhere. The nickname option is useful against waves of bots with similar account names.
  • Penalty: ban, timeout or deleting the message. For a timeout you choose the length: from 60 seconds to 7 days (Kick does not allow longer timeouts).

A timeout must have a length set. A zero-second timeout is understood differently by each platform: Twitch rejects such a command and does nothing, while Kick treats a command without a duration as a permanent ban. New phrases get a length automatically, but an old entry with a zero may still be sitting on the list - the dashboard then labels it "Timeout without a duration" and shows a red bar above the list. Select such a phrase and click "Timeout" in the selection bar, and it will get 10 minutes on both platforms.

How the bot matches phrases

  • Letter case does not matter, Scam and scam are the same thing to the bot.
  • A phrase must be at least three characters long and contain ordinary letters or digits. Shorter phrases, and ones made only of emoji, are skipped by the bot.
  • Phrases of up to four characters match only as a whole word. Thanks to that cat will not punish someone who wrote "catalogue".
  • Longer phrases also match inside a word, so discord.gg will work in any link.
  • One message gets only one penalty, from the phrase the bot hits first. Penalties do not stack.

Who the bot does not skip

  • Moderators, VIPs and subscribers get no special treatment. The bot checks their messages just like any other, so with phrases that someone from your team might write innocently it is worth being careful.
  • On Twitch the bot skips exactly one person: the channel owner, that is you.
  • On Kick the same: it skips only you, including the messages the bot posts to chat with your account (command replies, timed messages, automod warnings).

Before adding a phrase with an ordinary word, check it in the "Check what the bot will do" field and set the author to "Moderator or VIP". You will see straight away whether the penalty would also hit your team.

Not sure how your phrase will behave? At the top of the page there is a "Check what the bot will do" field. You paste a chat message into it, choose who wrote it, and immediately see whether any phrase catches it, which phrase that is and what penalty follows. It is calculated in your browser: nothing goes to chat and nobody gets punished.

Regular viewers - three levels of reaction

The "ban" penalty does not hit everyone the same way. Spam bots almost never have a history on the channel, and a regular viewer pasting a link is usually referring to the conversation on stream. So the bot counts the earlier messages of the person caught by a ban phrase: below 5 they get banned, from 5 to 14 the bot deletes just the message and posts a warning with their nick in chat, and from 15 up it does not react at all and the message stays in chat. You set both thresholds and the warning text on the Automod phrases page, in the "Regular viewers - a milder bot reaction" section; 0 in either threshold turns that step off. Messages from the last 7 days count, because that is how long chat is kept, separately on Twitch and on Kick. In the Mod Log a warning shows as "Warning", and no reaction leaves no entry. The warning replaces only a ban, but from 15 messages up the bot does not react with any penalty - including timeout and message deletion. Messages already removed by the bot or by moderators do not count, so a spammer cannot earn this protection just by spamming. After a ban or timeout the count starts from zero - on Twitch just like on Kick, also when a moderator gave the penalty by hand.

A trial run on real chat

The field above checks one message that you type yourself - and nobody types from memory the exact sentence a regular viewer will write tomorrow. That is why there is a second card under the tester: "A trial run on real chat". You enter the phrase alone, and CrossMod runs the latest messages saved from your chat through it and tells you how many of them it would catch, from how many people and what those messages looked like. It is the simplest way to see, before adding, whether a phrase with an ordinary word would hit your regulars.

Every phrase on your list carries the same button, labelled "test" - one click checks a phrase added long ago, when chat has had time to change. A trial run sends nothing and punishes nobody; it only counts matches on saved messages. The chat record lives for 7 days, so there is nothing to check further back, and on a busy channel a trial run will cover the last few hours - the answer always says how far back the checked messages go.

CrossMod filters

Below your list is the "CrossMod filters" section: a shared phrase list for all channels in CrossMod that catches typical scams and link spam. The page does not list its contents - you get one switch to turn it on or off. Your list has its own separate switch, so you can keep only the shared one or only yours.

Tidying up the list

  • Every phrase carries a number saying how many times the bot really punished someone for it. Clicking that number opens exactly those penalties in the Mod Log, with nicknames and message texts, so you can see at once whether the phrase catches too widely. A dashed outline marks a phrase that has not fired even once. When there are more such phrases, a filter appears above the list: "Show only those that caught nothing" - handy when cleaning up an old list.
  • The label "this one will not work" sits next to a phrase whose voice is taken by an older phrase. The bot stops at the first match, and the first one for it is the oldest - so once you have damn with message deletion, a later damn you with a ban will never ban. Hover over the label to see which phrase and which penalty wins.
  • The search field above the list narrows it on the fly, without reloading the page.
  • By selecting phrases on the left you can change the penalty for several at once or delete them with a single click.
  • The "Download backup" button saves your list to disk, and the form next to it uploads it back. The same route moves a list to another channel. Global filters are not part of the copy, because they are added by themselves.

Commands and recurring messages

On the Commands page you create what the bot should do on a keyword from chat, and what it should repeat by itself during a stream.

A command

  • The name has to start with an exclamation mark, for example !discord. Letter case does not matter. A name with a capital letter outside the basic alphabet, for example !Żart, is saved by the panel in lower case, because only in that form will the bot recognise it - in chat it can still be typed any way.
  • The most common action is a text reply. In the text you can use placeholders - the chapter below describes them.
  • Beyond that there are ready-made actions to choose from: a raffle, followage, points and commands for Tibia (Drome rotation, Rashid, shared exp, stamina).
  • You also choose who may use the command: only you, you together with moderators, or everyone.
  • If the emotes on Kick differ from the ones on Twitch, tick "Separate text for Kick" and enter a second version of the reply.
  • A command can be set to be sent every few minutes. The bot sends it only while the stream is live.

Placeholders in the reply text

In a text reply the bot replaces six placeholders. They are written with a dollar sign and in curly brackets:

  • ${sender} - the nickname of the person who typed the command.
  • ${nick} - the first word after the command, for example @someone. ${1} means exactly the same.
  • ${args} - everything someone added after the command.
  • ${target} - the first word after the command, and when nobody gives one, a random viewer from the last half hour.
  • ${randomviewer} - a random viewer from the last half hour, regardless of what anyone typed after the command.

Example of a !spank command: with the text ${sender} spanks ${target}!, typing !spank @someone sends "You spank @someone!", and plain !spank draws someone from chat.

Three things that are easy to forget. First, a placeholder with a typo or without the dollar sign ({nick}) will not be replaced with anything - it goes to chat literally, brackets included; the version without the dollar belongs to other places in the panel, for example the raid greeting and the automod warning. Second, placeholders work only when someone types the command in chat - with auto-sending every N minutes and in recurring messages there is neither a person writing nor an argument, so the plain text with brackets goes to chat. Third, when ${target} or ${randomviewer} has nobody to draw (nobody wrote for half an hour), the bot will not send your text but a ready-made sentence saying there are no volunteers. The dashboard explains each of these cases on the command card.

Recurring messages

These are short announcements sent automatically during a stream, for example a Discord reminder. You set the text, the platform and the interval, no shorter than five minutes. Every command and message has a "Test" option, which sends it to chat right away so you can check the text without waiting. In a command test your own nickname goes in place of the placeholders - a recurring message goes exactly as it is, because placeholders do not work there anyway.

"Test" sends the text even when the switch on the entry is off - so that you can look at the message itself. The dashboard then adds next to the result that the bot will not do it by itself until you turn the switch on. It says the same when the command cannot be triggered for another reason, for example when its name does not start with "!". Commands after which the bot writes nothing in chat (for example a raffle) have nothing to send in a test, and the dashboard then points you to typing them in chat with the overlay running. The same goes for commands that answer about the person asking, that is !followage and !points.

How you know it really works

Under the card of every recurring message and every command with auto-sending there is a Schedule line: when the entry last went out and in how many minutes it goes next. Above the whole list there is one sentence about which broadcasts the dashboard currently sees as live, because the bot sends these messages only during a live broadcast. So if an entry "does not work", the screen shows whether it is simply waiting for the stream to start, whether the interval has not passed yet, or whether something is wrong with it - in the last case a separate explanation stands by the card.

That sentence, however, says only what the bot has recorded on its side, and the record can drift away from reality. CrossMod asks Twitch itself every few minutes, but it learns about a broadcast on Kick from a single notification sent at the moment it starts. If that notification is lost, the bot considers Kick offline for the whole stream and will not send any recurring message to that chat. That is why above the list there is a "Check whether the bot sees the stream" button: it asks both platforms directly and shows one sentence for each about how things really are. When the bot says something different from the platform, a "Fix it" button appears next to it and one click puts everything back in place. The check guesses nothing: if a platform does not answer, the dashboard says so plainly and changes nothing.

Backup

At the bottom of the Commands page there is a Backup card. "Download backup" saves one file to disk with all commands and recurring messages, together with their text, permissions and intervals. It is worth making before you start a bigger clean-up or before you move settings to another channel.

"Upload backup" works the same way as with automod phrases: it only adds the missing entries and never deletes or overwrites anything. A command with a name you already have, and a message with the same text, are skipped, so uploading the same file twice will not fill the list with duplicates. After the upload the dashboard lists how many entries were added, how many were skipped and why.

The overlay and the chat panel in OBS

The Overlay page gives you the address you paste into OBS. There are two views to choose from: Game, a transparent chat over the game picture, and Chat, the full view of chat from both platforms.

Live rehearsal at the top of the Overlay page gives you five minutes of a pretend stream on Twitch, Kick and YouTube: the viewer counter, chat with emotes and alerts in your open OBS sources, without a real stream. Nothing goes to your real chats, the chat log or the statistics, so open the sources you want to check in OBS before you click. Below the rehearsal there are buttons for single events - follow, sub, resub, gift, raid, bits, Kicksy, Super Chat and a message from each platform separately - which also work without a running rehearsal. With YouTube connected, the same click also starts the YouTube rehearsal right away (the "together with the YouTube rehearsal" box under the button, ticked by default): for 15 minutes, the real chat of the upcoming broadcast from YouTube Studio, described in the YouTube chapter. Writing on YouTube and bot replies start after 1-2 minutes, once CrossMod connects to that chat; until then the chat window shows YT·off. Under the button both rehearsals count down separately, and "Stop" ends both at once.

How to add an overlay to OBS

  1. On the Overlay page choose the Game or Chat tab and copy the address with the button next to the field.
  2. In OBS add a new source of type "Browser" ("Browser Source") and paste the address.
  3. Set the size it should take on the scene. You do not need to turn off the background, the overlay is transparent.

Everything you change with the sliders on the right of the panel saves by itself and shows up straight away in the preview in the middle. The "Restore defaults" button returns the look to factory settings, and "Download backup" and "Upload backup" let you keep a polished look on disk or move it to the other overlay.

Look templates (Game only, next to "Restore defaults") are ready-made sets of settings: pick a template from the list and click "Apply", and the colors, text size, outline, spacing, icons and animations are set all at once and saved straight away. A template overwrites the current settings of this profile (your font stays as it is), but you can still change every field with the sliders, undo it with the "Undo" button or restore the defaults. The "Whisper" templates are made for the 650x1080 chat frame: set the Game source in OBS to 560x880 and slide it into the frame window - best in a separate profile, so the others stay unchanged. There are six of them: A-D for the cream frame, E-F for the green one; all of them keep your font.

The "Nickname" field decides the colour of viewer names and works in both views, Game and Chat. "User's color" keeps the colour a viewer chose for themselves on Twitch or Kick. "Platform color" paints all nicknames from Twitch purple and those from Kick green, so you can see at a glance which side a message came from. "Custom color" gives every nickname one colour chosen by you. The change also covers messages already on screen, so there is no need to refresh the source in OBS.

In the bar at the top of the Overlay page there is a line "OBS: N sources". It says how many of your overlays are actually connected right now, that is whether OBS on the other side really is receiving. Empty means no source is reporting in - usually OBS is turned off or the address in the source is out of date. The open dashboard itself does not count towards this. Below the line there is a list of those sources. "Reconnecting" next to a source is nothing bad: the connection renews itself roughly every half hour and comes back within a few seconds. "Old address" means the source in OBS has an address from before the addresses were changed in Settings, so nothing reaches it - paste the new address from the top of the page into it.

The chat panel as a dock in OBS

You can add the same chat address in OBS as your own dock ("Custom Browser Dock") and have chat next to the scene preview. To be able to moderate from it, it has to be paired once:

  1. A six-digit code appears in the chat window in OBS, valid for ten minutes.
  2. Enter it in the dashboard, on the Overlay page under the "Pair" button, or on the crossmod.app/pair page.
  3. Once paired, you can ban and mute a viewer straight from the chat window, without switching to a browser.

You pick the platform the chat window writes to with the icon on the left of the message box. Press it and a wheel of platforms opens around it, upwards and to the right: Twitch at the top, Kick on the right, and with YouTube connected also "All" and YouTube in between. The chat under the wheel dims while it is open. Hold, drag towards a platform and let go - the window will write there. A simple click on the icon does not change the platform, it keeps the wheel open: then click a platform, while a click outside the wheel or the Escape key closes it without changes. With the keyboard: Enter opens the wheel, the arrow keys pick a platform and Enter confirms it.

Next to it there is also the address of the "Active" list, that is the people writing in chat right now. This is a dock too, not a scene source. You click a nickname once you have greeted someone and it gets struck through; the "Ukryj OK" button hides the struck-through ones completely. "Wyczyść" empties the whole list - it takes two clicks, so the list is not wiped by accident, and it is remembered even after the window is reopened in OBS: only people who write something new come back onto the list. Someone who got a ban or a timeout leaves the list by themselves. By default the list keeps the last fifteen minutes - you set a different range by adding &min= and the number of minutes, from 1 to 1440, to the address. When the window loses its connection to the server, it says so at the top instead of quietly emptying.

All the addresses at once, including the rarely used ones, are collected on the Enable bot page, in the "Overlay addresses for OBS" card.

The overlay address contains your account's private key. Anyone who knows it sees your chat live, so do not show that address on stream and do not send ready-made OBS scenes to strangers.

Mod Log

Mod Log is the shared history of penalties from both platforms: bans, timeouts, deleted messages, automod reactions and lifted bans. It shows who the action concerned, who carried it out and at what time.

  • The "New" tab shows what you have not looked at yet, and the "Mark as read" button moves everything to the "Read" tab. The "All" tab shows the full history.
  • The badges above the list narrow the view to one kind of penalty, to one platform, or to the last day, seven or thirty days. The number on a badge says in advance how many entries will be left after clicking, and the filters combine with each other and with the search.
  • The numbers "Bans, last 24 hours" and "Timeouts, last 24 hours" on the main dashboard page are links. Clicking opens the Mod Log narrowed exactly to the entries that number was made of.
  • The search looks for a nickname in the whole history, not only on the open page. The list goes fifty entries per page.
  • For a penalty applied by the bot the reason looks like this: "Automod: phrase". Clicking the phrase itself narrows the list to all penalties that this one phrase has ever applied - you can then see at once who it caught and whether it takes too much. From that view you come back with the "Open this phrase in the list" link, which opens the Automod phrases page with that phrase already typed into the search. The other way round works through the number next to a phrase (how many times it fired) and the ranking in Statistics.
  • The "Download history" button saves to disk what you have on screen right now, together with the chosen tab, the searched nickname, the badges and the chosen period. You can open the resulting file in Excel or Google Sheets - handy when you have to show someone what a penalty was for, or keep a history longer than the dashboard does.
  • Next to a ban and a timeout there is a "Lift punishment" button, which reverses it on the same platform where it landed.
  • Under the nickname there is one sentence about whether that penalty still applies: "Ban still in effect", "Wyciszenie trwa do 21:40", "Timeout ended at 19:05", "Punishment lifted 20:12" or "Then another punishment followed". Without it, a mute from five hours ago looked exactly like one from a minute ago, and a ban lifted in the evening like one that is still in force. When there is nothing left to lift, the button next to it has a dashed frame - it stays in place, because a penalty lifted by hand on the Twitch or Kick site leaves no trace in the Mod Log, and that is exactly when this button is needed.
  • Next to it there is "Also on Kick" or "Also on Twitch". The bot always punishes only where the message was written, so a punished person can enter the other chat a moment later and keep writing. This button applies exactly the same penalty on the other side: a permanent ban or a mute for the same number of minutes. Before it is sent, a question appears with exactly what it will do.
  • There is one condition: the nickname has to be the same on both sides. If that person writes there under a different one, you will get a message about it and nothing will happen. The button does not appear when the second platform is not connected, or when that person is already banned there - a short note stands in its place instead.
  • Above the list a frame "Punishments that did not take effect" appears. The list itself shows only penalties that succeeded, so without this frame a click rejected by the platform left no trace at all - neither the one from the dashboard nor the one from the chat panel in OBS, where the message fades away after a few seconds. Every attempt carries the time, the nickname, the platform, where the click came from and a sentence about what to do. The frame disappears by itself after a day, or once another penalty for the same person finally goes through. A new version going live or a bot restart does not clear it.

The frame with failed penalties is the dashboard's memory, not an entry in the history - which is why it does not go into the history file and cannot be narrowed with the badges. Most often all the attempts from one evening bounce off the same thing, for example a platform connection that has expired; then one repair in Settings, in the "Bot and connected accounts" section, is enough.

Statistics

The Mod Log answers the question "what happened", and Statistics the question "was this month calmer". It is the same history of penalties, only counted and shown on charts. You choose the period at the top of the page: 7, 30 or 90 days.

  • The numbers at the top: penalties in total and separately bans, timeouts and deleted messages, each with its percentage share. Next to them are lifted bans, which deliberately do not count towards the total. The total also shows whether it turned out better or worse than in the previous period of the same length.
  • Day by day: one bar for each day of the period. Below the chart there is a sentence about the hottest day and about how many days passed without a single penalty.
  • Time of day: at what hour chat gets heated. Useful when planning when it is worth having a live moderator.
  • Where the penalties came from: how many the automod handled, how many came out of the CrossMod dashboard, and how many a human did directly on Twitch or Kick. Below, the same split by platform.
  • The phrases that fired most often: a ranking of automod phrases, together with the date of the last hit. Clicking a phrase opens all the penalties it applied in the Mod Log. Phrases that caught nothing in that period do not make the list.
  • The most frequently punished viewers: clicking a nickname opens all of their entries in the Mod Log, and the "Punish" button next to it takes you to Quick moderation with the nickname already filled in.
  • Chat traffic: the card at the bottom of the page shows how many messages really landed in your chat, day by day, split between Twitch and Kick, and at what time it is loudest. Thanks to that the number of penalties has something to be compared with: twenty penalties against a thousand messages means something entirely different from twenty penalties against fifty. This one card always counts the last 7 days, also when the period chosen is 30 or 90 days, because chat content is deleted from the database after a week. It also shows up when not a single penalty was applied.

A day is counted in your browser's time zone (the panel shows every time in that same zone), including the switch between summer and winter time, so a penalty from two in the morning lands in the right day. When there was not a single penalty in the period, the page says so plainly instead of showing empty charts.

Quick moderation

The Quick moderation page serves one person and one decision, without opening Twitch or Kick. You type a nickname, without the at sign, tick the platforms and click "Timeout", "Permanent ban" or "Lift ban".

  • The ticked platforms get the same command, and the result for each is shown separately, so you know right away whether something failed somewhere.
  • You choose the timeout length from a list, from a minute to a week (Kick does not accept a longer timeout). A ban holds until you lift it.
  • The "Who is this viewer" card fills in by itself a moment after you type the nickname, before you send anything. It shows whether that person is currently punished on either platform, whether they have written in your chat at all, what they wrote last and what penalties they have already had from you. Chat is counted from the last 7 days, because that is how long CrossMod keeps chat content, and penalties from the whole history of the account.
  • The "Who is punished right now" card is a list of people who currently have a ban or a mute on your Twitch channel. It is fetched straight from Twitch and not from CrossMod's record, so it also shows penalties applied outside the dashboard and ones from before the bot was connected, and mutes show the time at which they will end by themselves. Every item has a "Lift punishment" button, and clicking the nickname puts it into the form above.
  • Below there is the history of actions sent from the dashboard. Clicking a nickname puts it back into the form. Penalties applied by the bot and ones made directly on Twitch or Kick are in the Mod Log.

There is no "Who is punished right now" list for Kick and there cannot be one: Kick accepts moderation commands but does not publish a list of penalties in force. You can check the state of a single person on Kick by nickname in the "Who is this viewer" card - with the reservation that it comes from CrossMod's record and not from Kick.

On Kick, CrossMod recognises a viewer by the trace they left in your chat - Kick cannot search for ordinary viewers by nickname alone, it only finds channels. We keep chat content for 7 days, and a punished person usually stops writing, so with a very old penalty the dashboard may no longer have a way to point at that person. It will say so plainly, and you then lift such a penalty on your channel's page on Kick.

You also reach this page with one click from other places in the dashboard: with the "Punish" button next to a nickname in Statistics. The nickname is then already filled in, so only the penalty is left to choose.

Bot settings

Settings gathers what belongs to none of the other pages:

  • Automod. The card at the very top says in one sentence whether the automod will do anything at all right now, and shows the state of your phrase list and of the global list separately. When one of them is off or empty, the card immediately suggests what to change.
  • Greeting after the broadcast starts. One sentence that the bot writes in Twitch, Kick and YouTube chat when CrossMod learns that you have gone live. There are no placeholders here, the text goes exactly as you type it, at most 400 characters. The button next to it sends a test version with a TEST note, but it takes the saved text, so click "Save settings" first. On a real start the bot writes the greeting at most once every fifteen minutes, so that a short break in broadcasting does not flood chat.
  • Auto-shoutout after a raid. When someone raids your channel, the bot recommends them in chat. The placeholders {raider} and {link} work in the text; the link is composed separately for each platform, so on Twitch it comes out as twitch.tv/nick and on Kick as kick.com/nick. The button next to it sends a test message with a TEST note - in exactly the form in which the bot will write it.
  • The switch decides, not the text. With both the shoutout and the greeting the bot checks the switch itself: when it is off, the text you entered just sits in the database and nothing comes out of it. The test buttons send to chat anyway (because they check the text and the platforms' permissions), but with the switch off they add a sentence next to themselves saying that the bot will not handle a real raid or a real broadcast start that way. The same sentence shows under the text field.
  • Overlay event tests. With one click you fake a follow, a subscription, a raid or bits and check how they look in the overlay, without waiting for a real viewer.
  • Kick emotes from subscriptions. Kick does not publish a list of your subscriptions, so you enter the channels once, separated by commas, exactly as in the address kick.com/name. After clicking "Save channels" the emotes are fetched right away, and the field next to it says which channels they came from and for which nothing was found. The fetching is done by your browser, because Kick shows subscriber emotes only to a logged-in account: if you are not logged in to kick.com in the same browser, nothing will be found. The emotes then go into the emote picker in the chat panel in OBS. Channels that CrossMod detects by itself from your chat messages are added to the list separately and disappear when you have not used any of their emotes for a month; a channel entered by hand stays until you delete it yourself.
  • Overlay addresses. A button that changes the address pasted into OBS. Useful when the address has been shown on stream or reached a stranger. The old address stops working immediately, so afterwards you have to paste the new one into every source in OBS and pair the chat panel again.

Settings also hold the Bot and connected accounts section: here you connect and disconnect Twitch, Kick and YouTube and start the bot. The "Enabling the bot" chapter describes it. Logging out is at the bottom of the menu.

You switch between the light and dark theme in the side menu, at the bottom. The choice is remembered in the browser.

YouTube

CrossMod supports three platforms: Twitch, Kick and YouTube. YouTube mostly works the same as the other two, but it has a few limits of its own. This chapter gathers them in one place.

How to connect YouTube

  1. Log in with Twitch or Kick. YouTube is attached to an existing CrossMod account - you cannot log in with a Google account alone.
  2. Go to Settings, to the "Bot and connected accounts" section, and click "Connect YouTube".
  3. Pick your channel's account in Google and agree to the access. When you come back, the YouTube card shows the channel name.

The Google app through which CrossMod connects to YouTube is still in test mode. In this mode Google only lets in accounts added to it as testers, and every other account gets an access denied message from Google. If that happens to you, message @Grithn on Twitch with the Google account address of your channel - she will add it to the testers.

What works on YouTube

  • Chat in the dashboard and on overlays. YouTube messages show up in the moderation window, in the chat log and on the OBS overlays. YouTube chat can be a separate source in OBS: add &platformy=youtube to the overlay address. The size of the YouTube logo in the chat window, the game overlay and the viewer counter is set with the YouTube logo size slider on the Overlays page, and for a single source with &ikony=80 added to the address (percent of the Twitch and Kick logo height, 50 to 150). The Twitch and Kick logos stay unchanged.
  • Automod, commands and recurring messages work in YouTube chat the same as on Twitch and Kick, together with the greeting after the broadcast starts.
  • Penalties. Automod and Quick moderation can delete a message, mute and ban on YouTube. YouTube mutes for 24 hours at most, so a longer timeout is cut down to a day there.
  • New channel subscriptions. A new subscription to your YouTube channel shows up like a follow - in the chat window and on the alerts overlay - only during a broadcast (including the YouTube rehearsal) and only when that person is at the stream, meaning they wrote in the YouTube chat within 15 minutes before the subscription was detected or write within 15 minutes after it. YouTube doesn't show a list of viewers, so a chat message is the only proof that someone is there. If they write only after it is detected, the follow appears right under their message, saying how many minutes they have been following (e.g. "obserwuje od 3 min" - following for 3 min). This way you don't thank someone who subscribed while watching your other content. Subscriptions from private profiles (without a name) are never shown, because they can't be matched with anyone in the chat. Subscriptions made while you are not live are not shown either - neither right away nor later. A follow that got no message before the stream ended does not come back after it. CrossMod checks this every 2 minutes, also when your channel is not live: for 2 units of the daily limit during a broadcast, usually 1 outside it.
  • Super Chat, Super Sticker and memberships. They show up just like bits and subs: on the alerts overlay and in the chat window. Super Chat and Super Sticker count as bits, with the amount in the viewer's currency (the "Threshold, alert only from" setting does not apply to them), a new member counts as a sub, another month of membership as a resub, and gifted memberships as a gift. There are no YouTube raids - viewers redirected from another channel are not visible through the YouTube API.
  • YouTube emotes in the chat window. With YouTube connected, the emote picker in the chat window in OBS has a "YouTube" group with YouTube's own emotes (the search finds them too). Clicking one puts the emote into the message field as a picture, and sending turns it into a shortcut, e.g. :hand-pink-waving:, which YouTube shows as an emote, and the message comes back to the chat window and the overlays already with the picture. On Twitch and Kick such a shortcut stays plain text.
  • YouTube viewer counter. During a stream, "0" next to YouTube means Google is not reporting any viewers right now, and "-" means the counter has no fresh answer from Google.
  • Statistics, analytics and the Mod Log show YouTube as the third platform, with its own colour.

What works differently on YouTube

  • Chat only during a broadcast. CrossMod checks every two minutes whether your channel is live, so YouTube chat shows up in the dashboard no later than two minutes after the start. Penalties only work in the chat of an ongoing broadcast and only on people who wrote something in it. Outside a broadcast, messages from the chat window go to Twitch and Kick, and YouTube is skipped.
  • YouTube rehearsal without a broadcast. The "YouTube rehearsal (15 min)" button on the Overlay page connects CrossMod for 15 minutes to the chat of the upcoming broadcast from YouTube Studio: the bot answers commands there, and emotes and new subscriptions take the real path, just without the greeting and timed messages. Messages from the rehearsal stay in that broadcast's chat and will be visible in its chat history once that broadcast really starts, and the whole rehearsal costs about 400 units of the daily limit. The same rehearsal is also started by the "Start rehearsal" button in Live rehearsal, together with the pretend stream on the overlays.
  • No follow age. YouTube does not say since when someone has been following a channel, so the follow age command answers on YouTube that this information is not available.
  • Lifting a ban in YouTube Studio. YouTube does not let CrossMod lift bans. You lift a ban in YouTube Studio, and a mute runs out by itself. That is why YouTube entries in the Mod Log have no "Lift punishment" button.
  • The "Also on..." button in the Mod Log only carries a penalty over between Twitch and Kick.

Stream thumbnail

CrossMod can set the thumbnail of your YouTube stream for you: it builds it from your channel avatar, nickname and stream title, plus an optional subtitle (e.g. the game name), your own background and a +18 badge. "+18" and "18+" in the stream title are removed from the text and turn into a red badge. A different stream title means a different thumbnail. You set this up in Settings, in the "YouTube stream thumbnail" block under the YouTube card: "Preview" shows the finished image, and "Set now" sends it to the upcoming stream from YouTube Studio and to the ongoing one while you're live. Each time the thumbnail is set costs 50 units of the daily limit. When the "CrossMod sets the thumbnail" switch is on, CrossMod does this by itself when the stream starts and after every change of its title (also in the "YouTube rehearsal"): each such setting costs 50 units, at most once every 5 minutes. This is on right after you connect YouTube - nothing to save; you can turn it off in Settings.

YouTube only accepts custom thumbnails from channels with a verified phone number. If CrossMod says that YouTube refuses, go to YouTube Studio → Settings → Channel → Feature eligibility and verify your phone number.

The daily YouTube limit

Google gives CrossMod 10,000 units per day - for all connected channels together, not for each one separately. The day ends at midnight Pacific time, which is morning in Europe. How much has been used today is shown on the YouTube card on the Enable bot page. This is what each thing costs:

  • Checking whether the channel is live: 1 unit, every two minutes.
  • Receiving chat: 5 units for each chat fetch - every 15 seconds while viewers are writing, every 25-45 seconds when chat is quiet, and less often when the daily limit is running out.
  • A bot message (a command reply, a recurring message, a greeting): 20 units.
  • Deleting a message: 20 units.
  • A mute or a ban: 200 units.
  • Setting the stream thumbnail: 50 units (plus 1-2 units to check which stream is upcoming).

Messages from YouTube reach the panel and overlays with a 15-45 s delay - this is how CrossMod saves the daily Google limit.

At 9,000 used units CrossMod pauses receiving chat, penalties and message deletion on YouTube until midnight Pacific time, and bot messages at 9,500. Twitch and Kick keep working normally in the meantime.

When something does not work

The bot does not react to phrases

The first answer is already on the Dashboard: the third tile says how many phrases the bot really watches for in every message - yours and CrossMod's shared ones together, but only those whose switch is on. When both switches are off or the enabled lists are empty, the tile turns orange and says so plainly, instead of showing a meaningless number.

The "Automod" card in Settings settles it more broadly: it says plainly whether the automod will do anything. If it says it works and the bot still stays silent on a particular message, paste that message into the "Check what the bot will do" field on the Automod phrases page - you will see whether it matches any phrase at all.

Apart from that, check one by one: whether the switch on your phrase list is on, whether the list has phrases longer than two characters and whether there is no red bar about an expired connection on the Dashboard. If everything is fine and the bot still stays silent, go to Settings and click "Enable bot" in the "Bot and connected accounts" section - a channel requires a one-off start, and that button can be pressed again at any time. If that does not help either, write to Grithn.

The bot suddenly stopped seeing chat on Twitch

It happens that everything is reported correctly and yet no message from Twitch arrives: the bot does not punish, does not answer commands and the chat window in OBS shows only Kick. Twitch sends chat messages by a different route than the rest of the events, and that route can get suspended - most often when the CrossMod server was briefly unavailable.

Open the Enable bot page (the link at the bottom of the "Bot and connected accounts" section in Settings) and look at the "Bot status" card. When this is the case, the "Reading chat messages" item has a cross and a sentence saying that Twitch has suspended sending. Then go back to Settings and click "Enable bot" - that sets this route up again. Give it a minute and check the state once more.

A command or recurring message does not go to chat

Sending every few minutes works only while the stream is live. Off stream the bot deliberately stays silent. The "Test" button next to a command sends it right away and says whether the message actually arrived.

If the stream is running and still nothing goes out, especially on Kick, click "Check whether the bot sees the stream" above the list of recurring messages. It happens that the notification about a broadcast starting on Kick did not reach CrossMod and the bot thinks you are offline - then the "Fix it" button sets everything right with one click, without waiting for the end of the stream.

Also look at the Schedule line under the entry's card on the Commands page. It says when the entry last went out and in how many minutes it goes next, and if it is waiting for a broadcast to start or goes to a platform that is not live right now, it says that plainly too.

When the bot sent an entry by itself and chat did not accept it, the card says so plainly: instead of "Last sent" it says "Last attempt", and underneath there is an orange note with the reason - for example a repeated text or AutoMod. The note disappears by itself once the next automatic send succeeds. The dashboard remembers a failed attempt for three days, also after a new version is deployed.

The bot writes and nothing appears in chat

Twitch and Kick can accept a message from the bot and still not show it in chat. That happens when AutoMod holds it back, when chat is set to followers only or subscribers only, when slow mode or "emotes only" mode is on, and also when the bot sent exactly the same text a moment earlier - no chat accepts two identical messages in a row.

CrossMod no longer treats such a message as sent. The "Test" button next to a command and the test buttons in Settings say plainly that the message did not appear in chat, and give the reason together with what to do about it. In the chat window in OBS the same reason shows in a bubble at the bottom of the window, and the text goes back into the field if it did not land in any of the chats.

The overlay in OBS is empty

Most often the address was not copied in full or comes from before a key change. Copy it again from the Overlay page and paste it into the source in OBS. The "Refresh cache of current page" button in the browser source settings also helps.

The line "OBS: N sources" at the top of the Overlay page settles which side to look for the problem on. If it says nothing is connected while OBS is running, the address in the source is to blame. If a source is marked "old address", its address is from before the addresses were changed - pasting the new one is enough. If it counts your source and the scene is still empty, check the size and visibility of the source in OBS.

The dashboard refuses to save

Usually this is an expired login. Refresh the page and log in again. If the message mentions the database, wait a moment and try again, your settings have not disappeared.

The pairing code stopped working

The code is valid for ten minutes, and the chat window in OBS shows a new one by itself when the old one expires - it does not need to be refreshed. If instead of digits you see a message about the overlay address, copy the address again from the Overlay page: after a key change the old address no longer allows pairing.

If the dashboard said "Paired" and the window in OBS still asks for a code, wait a few seconds - it unlocks by itself. When it says the write key is missing, open the Overlay page and generate the addresses anew.

Privacy and contact

What exactly CrossMod stores and for how long is described in the privacy policy. The rules of use are in the terms. The list of changes in the dashboard, release by release, is in the changelog.

Something missing here, or something works differently than described? Write on Twitch to @Grithn, the documentation is written as things go.

The dashboard described is version Beta v.1238.

← Home DashboardPrivacyTermsChangelog