answer website chat from discord

If your team, your players or your users already hang out on a Discord server, that server is the fastest place to answer your website’s chat. This guide connects a Spookat site to a Discord forum or text channel, shows how chats look there, and lists everything you can do without leaving Discord.
who this is for
Discord started as a place for gamers and turned into the office of a lot of small teams: indie game studios, open source projects, dev tools, communities around a product. If that’s you, a separate support dashboard is one more app your moderators have to babysit. Chats that land in a channel on the server get answered by whoever is around, the way questions in #help already do.
The difference to a public help channel: website visitors don’t join your server. They write in a small widget on your site, and their messages show up in Discord for your team only. Your replies go back to the widget. The visitor never needs a Discord account.
Price is per site, $4.99 a month on broke af, with no limit on how many people answer.
before you start
- A Spookat site with the snippet on it. The pillar guide covers the install and how to check it.
- A Discord server where you can add apps, or someone who can.
- A channel for the chats, visible to the people who should answer. A private staff category is a good home.
If your team is on Slack instead, the Slack guide is the same story with threads instead of posts.
forum or text channel
Spookat works with both, and the choice changes how chats look:
- Forum channel: one post per chat. Each visitor gets a post, titled with the chat’s reference. The post list is your queue. This is the tidiest option for anything above a handful of chats a day.
- Text channel: a card plus a thread. Each chat puts a card in the channel, and the conversation happens in a thread started from it. Good for small teams who want the chats in the flow of an existing channel.
Either way, one visitor never shares a thread with another.
connect discord
1. add the app
Open your site in the dashboard and go to channels, then pick Discord. You approve the app on Discord’s own page and choose the server. The app asks for what it uses and nothing more:
- view channel, send messages
- create public threads, send messages in threads
- read message history
- add reactions
- manage webhooks (so messages in the thread carry the visitor’s or teammate’s name)
2. pick the channel and the ping
The dashboard lists the server’s forum and text channels, and its roles. Pick the channel. Optionally pick a role to ping on every new chat, for example @support. With no role, chats arrive quietly and people see them when they look.
Spookat posts a welcome in the channel with a “Send a test chat” button. Press it and a chat from a made-up test visitor arrives, so you know delivery works and see how a post looks (a real one also shows the page, browser and country). The test visitor has no widget to read your reply. To try the whole loop, send a message from the widget on your site and reply to that one.
not the admin there
The dashboard gives you a one-time link for whoever manages the server. It stays valid for 7 days and needs no Spookat account. Or use the code: the dashboard shows it, and /spookat connect with that code, run in the channel, binds the site. The same command takes an optional role to ping.
what a chat looks like
Every chat starts with a card:
- The reference, like
SP-0001, the same one the inbox and the API use. - Where it came from: the page the visitor was on, their browser and their country. On cool guy, if your app passes the logged-in user, the card says
logged in aswith their id. - Status and assignee.
- Three buttons: Reply, Take and Close.
In a forum the card opens the post; in a text channel it sits in the channel with the thread hanging off it. Every visitor message after that is a message in the post or thread.
answering
Write in the post or thread. Your message goes to the visitor’s widget. Nothing else to learn.
Or press Reply on the card. A form opens with one field, up to 4,000 characters. It’s handy on mobile.
Keep it internal with //. A message that starts with // stays with the team. The visitor never sees it.
Claim it. Press Take, or react with :raised_hand: (any skin tone). The chat is yours, and the card shows it.
Close it. Press Close, react with :white_check_mark:, or run /spookat close inside the thread. A new message from the visitor reopens the chat.
Edit or delete. Change your message in Discord and the widget shows the new text, marked edited. Delete it and it’s gone for the visitor as well.
Typing shows. While you type in the thread, the visitor sees “Marta is typing…” in the widget. Discord tells us you’re typing; Slack doesn’t, so this one is Discord only.
If the visitor has left and gave an email, cool guy and above send them your reply by email about 2 minutes later, in the widget’s language. On broke af the reply waits in the widget.
how visitors see you
Visitors see your Discord nickname next to your replies, picked up the first time you reply, claim or type. /spookat me controls it, per site:
/spookat meshows the name visitors see./spookat me name:Martachanges it./spookat me do:hideanswers as the site’s name,do:showbrings your name back./spookat me do:linkgives you a one-time link, valid 15 minutes, that ties your Discord account to your dashboard login, so the inbox knows your Discord replies are yours. It grants no access.
the commands
| command | does |
|---|---|
/spookat connect |
binds a site to this channel, with an optional role to ping |
/spookat ping |
changes the role pinged on new chats; empty means nobody |
/spookat close |
closes the chat of this thread, or the one you name |
/spookat block |
blocks the visitor of this thread’s chat, or the one you name |
/spookat me |
shows or changes how visitors see you |
A blocked visitor’s widget says the chat isn’t taking messages, and nothing they send reaches you. Rate limits catch the rest.
habits for community servers
- Keep the channel staff-only. Visitors write to your team, not to your community. Their messages can include an email or an order number.
- Pick a role for the ping, not
@everyone. The people who answer opt into the role; everybody else keeps their notifications. - Use the forum’s post list as the queue. Closed chats are easy to tell apart from open ones on the card, and
:raised_hand:shows who has what. - Write
//notes when you hand over. Timezones on community servers are wide, and the next person may pick the chat up eight hours later.
what spookat does with your server
Spookat posts the cards and the visitor’s messages, and listens for replies, reactions, typing and button presses in the posts and threads it started. It never reads back your channel’s history to rebuild a chat: every message is saved on our side first, and Discord gets a copy. Remove the app and the chats stay in the dashboard’s inbox.
a chat, start to finish
An example from an indie game studio, so you can picture the flow before the first real chat.
A player on the /buy page of your game’s site asks whether their Steam key works in their region. The forum #website-chat gets a new post, SP-0031, and the @support role is pinged. The card says /buy · chrome windows · BR, status open, nobody yet.
Rafa is online, reacts :raised_hand: and starts typing in the post. On the website, the player sees “Rafa is typing…”. Rafa isn’t sure about region locks, so he posts // @Mika region lock on the BR keys? first. Mika, eight hours ahead, replies the next morning with another note: no lock, keys are global.
Meanwhile the player left. They had typed their email into the chat, and the studio is on cool guy, so when Rafa writes the answer in the post the next day, the player gets it by email a couple of minutes later, with a link back to the chat. Rafa reacts :white_check_mark: and the post shows closed.
The whole thing happened in a forum post that sits next to the studio’s other channels. No extra login, no extra app on anyone’s phone.
checklist
- The snippet is on the site and checked in DevTools.
- Discord is connected, the channel picked, the ping role set or left empty on purpose.
- The test chat arrived, and a message sent from the widget on your site got your reply back.
- The people who answer know
//,:raised_hand:,:white_check_mark:and/spookat me.
Your server is already open all day. Now the website’s questions land there too.