CrossMod watches chat on Twitch and Kick 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 is in Polish and works the same on a computer and on a phone.
You can open this page at any time from the dashboard menu, item Pomoc. The "Panel" link at the very bottom leads back.
If you do not know where to look for something, click Szukaj w panelu at the very top of the menu (keyboard: Ctrl and K) and type a word, for example "bany", "overlay" or "powitanie". 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 Pomoc do tej strony 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.
The CrossMod dashboard is currently available in Polish only, so page names below are given in the original - exactly as you will see them on screen.
A login is valid for a week. If the dashboard starts refusing to save, refreshing the page and logging in again is usually enough.
The Włącz bota page gathers everything you do once, at the very beginning. This is where you come back whenever the dashboard says the connection to Twitch or Kick has expired.
Overlay addresses contain your private key. Do not show this page on stream with the addresses revealed, and do not send them to anyone.
The Frazy automod 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.
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 bez czasu" 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.
Scam and scam are the same thing to the bot.cat will not punish someone who wrote "catalogue".discord.gg will work in any link.Before adding a phrase with an ordinary word, check it in the "Sprawdź, co zrobi bot" field and set the author to "Moderator lub 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 "Sprawdź, co zrobi bot" 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.
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: "Próba na prawdziwym czacie". 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 "próba" - 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.
Below the form there is a list of global filters, shared by all channels in CrossMod. They catch typical scams and link spam. Each of the two lists, yours and the global one, has its own switch, so you can keep only the global one or only your own.
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.On the Komendy page you create what the bot should do on a keyword from chat, and what it should repeat by itself during a stream.
!discord.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 is used only by the raid greeting and the descriptions of channel-point videos. 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.
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 "Testuj" 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.
"Testuj" 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 (a VTube Studio hotkey, 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.
Under the card of every recurring message and every command with auto-sending there is a Harmonogram 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 "Sprawdź, czy bot widzi transmisję" 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 "Napraw to" 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.
At the bottom of the Komendy page there is a Kopia zapasowa card. "Pobierz kopię" 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.
"Wgraj kopię" 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 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.
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 "Przywróć domyślne" button returns the look to factory settings, and "Pobierz kopię" and "Wgraj kopię" let you keep a polished look on disk or move it to the other overlay.
The "Nick" field decides the colour of viewer names and works in both views, Game and Chat. "Kolor użytkownika" keeps the colour a viewer chose for themselves on Twitch or Kick. "Kolor platformy" paints all nicknames from Twitch purple and those from Kick green, so you can see at a glance which side a message came from. "Własny kolor" 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: ile źródeł". 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.
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:
Next to it there is also the address of the "Aktywni" 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. 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 Włącz bota page, in the "Adresy overlayów do OBS" card.
The Video Overlays page pins short videos to channel point rewards. A video fires when the name of the redeemed reward contains one of the fragments entered in the "Nazwy nagród" field - letter case does not matter, and there can be several fragments, separated by commas. Checking does not stop at the first match, so one reward can start several videos at once; the dashboard warns about this on the card.
In the rewards dock in OBS every reward has a "Test" button. After a click, the bubble at the bottom says what really went on the scene, and when nothing fired - for what reason, together with the number of seconds left of the interval.
On the Overlay page, in the "Overlay kolejki" card, you pin a channel point reward to a hotkey in VTube Studio. The hotkey fires when the name of the redeemed reward contains the title entered here, and it works the same on Twitch and on Kick. You can add a short sound to the link, which plays together with the animation.
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.
The Alerty page sets up the graphics that pop up on stream when someone follows you, subscribes, raids you or sends bits or Kicksy. This one source in OBS handles all the events from Twitch and from Kick at once.
Display, appearance, animations, per-event settings, your own sounds and the numbers for raids, gifts and subscription renewals all work - more on that below.
{nick} is the person the event concerns, and {tekst} is the ready-made sentence from the platform.The {ile} placeholder inserts the number from the alert: viewers for a raid, subs for a gift, bits for Bits and Kicksy for Kicksy. For a subscription renewal that role is played by {miesiace}, that is which consecutive month it is. For those same events the "alert dopiero od" threshold works: enter 5 for raids, for example, and a raid with four viewers will not show at all. A follow and a first subscription have no number - the dashboard does not offer these settings there, because there would be nothing to compare.
Every event has a "Na żywo" button. It sends a real test event, so it shows not only in the preview but also in OBS. The preview on the page is local and silent.
Alerts do not overlap: when several events arrive at once they line up in a queue and are shown one after another. That is why the time on screen and the gap between alerts decide not only about a single alert, but also about how quickly the whole queue clears.
The alert source in OBS keeps a constant connection to CrossMod. If it breaks - the internet disappears for a moment, the server reloads - the alerts from that gap are not lost: once back, the source asks about what it missed and plays it with a delay. This covers gaps of up to a minute and at most five alerts in a row.
After a longer break, and also after every restart of the source in OBS, old events are skipped - otherwise subscriptions and follows from hours ago would come back on screen. You will always find all the events from the whole stream in the chat history in the dashboard.
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 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 on the "Włącz bota" page is enough.
The Mod Log answers the question "what happened", and Statystyki 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.
A day is counted in Warsaw time, 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.
The Szybka moderacja 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", "Ban na stałe" or "Zdejmij bana".
There is no "Kto ma teraz karę" 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 "Kim jest ten widz" 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 "Ukarz" button next to a nickname in Statystyki. The nickname is then already filled in, so only the penalty is left to choose.
Ustawienia gathers what belongs to none of the other pages:
{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.Connected accounts and logging out are no longer here. Both have moved to the Włącz bota page, so that everything from the start is in one place.
You switch between the light and dark theme in the side menu, at the bottom. The choice is remembered in the browser.
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 "Stan automodu" card in Ustawienia 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 "Sprawdź, co zrobi bot" field on the Frazy automod 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 the Włącz bota page and click "Włącz bota" there - 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.
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.
Go to the Włącz bota page and look at the "Stan bota" card. When this is the case, the "Czytanie wiadomości z czatu" item has a cross and a sentence saying that Twitch has suspended sending. It is enough to click "Włącz bota" below - that sets this route up again. Give it a minute and check the state once more.
Sending every few minutes works only while the stream is live. Off stream the bot deliberately stays silent. The "Testuj" 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 "Sprawdź, czy bot widzi transmisję" 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 "Napraw to" button sets everything right with one click, without waiting for the end of the stream.
Also look at the Harmonogram line under the entry's card on the Komendy 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 "Ostatnio poszła" it says "Ostatnia próba", 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 this from the last restart, so right after a new version is deployed the cards have nothing to say yet.
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 "Testuj" button next to a command and the test buttons in Ustawienia 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.
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: ile źródeł" 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 it counts your source and the scene is still empty, check the size and visibility of the source in OBS.
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 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 "Sparowano" 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.
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.0495.