Where the agent answers
One and the same assistant — the same knowledge, the same actions — can answer in several places at once.
| Where | Who needs it | Do you need to connect a channel |
|---|---|---|
| A chat window on your website | everyone who has a website | no, it works on its own |
| A Telegram bot | people whose customers write in a messenger | yes, you need a token |
| Viber, WhatsApp | people whose customers write there | yes, keys from the messenger's dashboard |
| Discord, Slack | communities and teams | yes, a bot token or an app |
| people who get emails | yes, the mailbox address and password | |
| Your own app | people who have their own app or system | yes |
While there is nowhere to write to the agent, the panel on the right shows "not answering anywhere yet". The chat window on your website doesn't need a channel — it is switched on by allowing a domain — but the panel counts it too: an allowed website is listed by name in the Channels row, and the status becomes "answering".
The chat window on your website
A round button appears in the corner of your page, and behind it, a chat window.
You switch it on with one line in the footer of your page:
<script
src="https://app.youselfbot.com/widget.js"
data-bot-key="pk_your_key"
data-api="https://api.youselfbot.com"
></script>Paste it once and you're done for good: the window title, greeting and colour are changed later in the conversation, with no need to paste the code again.
If your site has a strict CSP
The window works on a site with Content-Security-Policy: style-src 'self' too — you don't need to add anything to the tag. The exception is old browsers (Safari before 16.4): there such a site blocks the window's styles, and it becomes unclickable: the button is there, but you can't press it. To make it work there too, add your one-time nonce to the tag — the same one you put on the rest of your styles:
<script src="…/widget.js" data-bot-key="pk_…" data-nonce="{{ csp_nonce }}"></script>What the window remembers in the visitor's browser
The conversation is stored in the visitor's browser so that reloading the page doesn't start it from scratch, and it erases itself after a day without new messages. This matters where different people use the same computer: in a salon, a library, at a reception desk.
Where to get this line
It is always in the dashboard, already with your key. On the panel, open the Channels row (or Chat window): under the list there is a "Website code" block with a "Copy" button. Next to it is a "Regular website / WordPress" switch — for WordPress, instead of the line you get three plugin fields, each with its own button.
If no website is allowed for the agent yet, the block tells you right away: a pasted window will stay silent until you name your website's address.
You can also ask the builder — it will give you the same line:
Put the assistant on my website example.com
It does two things at once: gives you the code and allows your website to talk to the agent.
In the reply, the code sits in its own block with a "Copy" button on the right — one tap and it's on your clipboard, character for character. Keys, addresses and commands are copied the same way everywhere in the dashboard; if the browser doesn't allow access to the clipboard, the button tells you, and you'll have to select the line by hand.
If your site runs on WordPress
You don't need to edit your theme — there is a plugin. Download the archive:
Then go to "Plugins → Add New → Upload Plugin", activate it, open "Settings → YouSelfBot Chatbot" and fill in three fields: the host https://app.youselfbot.com, the API address https://api.youselfbot.com and your public pk_ key.
The API address is a separate field, and you can't leave it empty: otherwise the window knocks on the same place it got its code from, and the chat silently doesn't answer. All three values are ready in the dashboard: Channels row → "Website code" → WordPress — copy them from there. The site's domain still has to be allowed — see the warning below.
One more field — "Visitor signing key" — is optional. With it, a person who is signed in to your website sees the same conversation on their phone and computer, and the assistant remembers them between conversations. Where to get the line — Chat window on your site.
An empty field means "take it from the dashboard"
The title, greeting and colour in the plugin settings override what you set up in the conversation: they go straight into the page code. Leave these fields empty and you'll control them from the dashboard, like everything else.
Without an allowed domain, the window is silent
The window only works on websites that are allowed for this agent — this stops other people from using your assistant from their pages at the cost of your credits.
The effect can be confusing: the code is in place, the button is there, but nobody answers questions — and it looks like the assistant is broken. So name your website's address right away when you ask for the code. If you forgot, say it later: "allow example.com".
The key can be shown
pk_… is a public key: it sits in your page's HTML, every visitor can see it, and that's fine. What protects you is not the key being secret but the list of allowed domains.
How to change the look
All of it with one sentence in the conversation:
Call the window "Smak Assistant", make the accent coffee brown #6f4e37 and put it in the bottom left corner
What can be changed:
| What | Value |
|---|---|
| window title | any text |
| greeting | the first message in the window |
| suggested questions | 2–4 phrases under the greeting |
| accent colour | in the #12a150 format |
| position | any of the four corners of the screen |
| theme | light, dark or match the site |
| "leave contact" form | shown or not (shown by default) |
That's only the start. The shape, size, font, button icon and label, logo, invitation bubble, buttons for your messengers, your own buttons in the header or next to the input, the order and set of window parts, any icon — and in fact any look at all with your own style — are also changed with words (the only thing that doesn't change is the quiet "Made with youselfbot.com" line at the bottom of the window): Chat window on your site: the consultant and its look.
Where collected contacts go
Ask about them in the conversation:
Show me the contacts people left
The builder lists names, phone numbers and emails with messages and dates, newest first. If the list is empty and you expected something there, it also tells you the likely reason: the contact form is turned off.
You can also ask to be notified about every new contact right away — then they'll arrive in Telegram instead of waiting until you sign in.
If your website has customer accounts
The bot can recognise your customers — greet a regular by name, show THEIR orders, perform actions on their behalf. For that, the page has to tell the window who has arrived; it takes a few lines in your website code, and they are described separately: Chat window on your site: code and signature.
The same page explains how to open the chat with your own button and what to do in an SPA, where the page address doesn't change.
The bot sees the page where the window is open
It works right away; there's nothing to switch on. Each question to the bot comes with a short note about the page: the address (without the query string — everything after ? is deliberately not collected), the title, and on a product page also the name, price with currency, availability, SKU and brand — all taken from the markup your shop already has (schema.org or OpenGraph).
That's why "do you have it in size 42?" and "how much is it?" get an answer about the product that's open, not from the knowledge base, where the price may be two days old.
If your pages contain things the bot shouldn't see:
Don't read the pages of my website
Better leave the colours alone
By default the window picks up your website's palette on its own. Colours set by hand turn this off — ask for them only when the automatic choice really missed.
A Telegram bot
Customers write where they chat with their friends — and get answers from your materials.
Here's how to get a token:
- In Telegram, message the bot
@BotFather. - Send
/newbotand give the bot a name. - You'll get back a line like
123456789:AA…— that's the token. - Paste it into the conversation with the builder.
Let it answer in Telegram, here's the token: 123456789:AA…
The builder connects it right away, without asking again. Sending the token is your consent: there's no stronger kind — you handed over access to your bot exactly for this.
Send the token in one message together with your request
Keys don't stay in the saved conversation — in their place there's a note that a key was provided and hidden. So the token works only in the turn where you wrote it: if you split your request into two messages, it won't survive until the second.
Hiding recognises the most common keys: a Telegram token, a Discord bot token, a Slack xoxb- token, an authorization header, keys like sk-, ghp_, AIza, AKIA, and also a Signing Secret or App secret if it's named as such next to it. A rarer secret — a mailbox password, a Viber token, a WhatsApp App secret or the key to your internal system — may stay in the conversation as plain text. Send such keys in a separate message and, if you no longer need it in the conversation, delete the conversation.
What else to know about Telegram:
- It understands voice messages — and video notes too: the platform turns the recording into text before the agent answers. How it works, what it costs and how to turn it off — Voice messages.
- The token isn't shown anywhere again, including to you. If it leaked, run
/revokein@BotFatherand connect the channel again. - Reconnecting gives a new incoming address, which is why the builder asks before touching the channel.
Continue a website conversation in Telegram
As soon as a Telegram bot is connected, a "Continue in Telegram" button appears in the chat window on your website — nothing to switch on. The visitor presses it, your bot opens, and it already knows what was said in the window: it carries on, without a new greeting and without "could you remind me what you were interested in". The person will get answers there even after closing your website.
I want customers to be able to continue the conversation in Telegram without explaining everything again
For a request like this, the builder connects the bot (you need a token, as above) and tells you that the button will appear on its own.
This is not a contact button. Contact buttons ("If you don't know, give them my Telegram @…") lead to people at your company; "Continue in Telegram" leads to the assistant itself, in the same conversation. If you have both, they sit side by side, and the builder will explain the difference.
The conversation moves only on a click and only to one chat
A website conversation may contain a person's phone number or address, so:
- it moves only when the person pressed the button themselves;
- the link works once — the first private chat that opens it gets the conversation, and the link goes dead;
- the link works for 10 minutes — saved or forwarded later, it opens nothing;
- the link works only in your bot — in someone else's bot it's just a greeting;
- the conversation doesn't move into a group chat, even if someone pastes the link there;
- someone else's conversation doesn't move into your linked owner chat: there the assistant acts on your behalf, and words from someone else's conversation would read as yours.
A reused or expired link simply opens the bot: it greets the person as someone new and shows nothing from the website conversation.
Limits worth knowing:
- Only the conversation itself moves — not attachments and not the operator. While a person from "Conversations" is handling the website conversation (or has been called and is awaited), the button isn't in the window: the operator would be answering into a window nobody reads anymore. Once the conversation is ended, the button comes back, and the assistant will answer in Telegram.
- In the dashboard's "Conversations", these are two separate conversations: on the website and in Telegram.
- The button appears only while the Telegram bot is switched on. Turn the channel off and the button disappears within a minute.
Personal bot
Sometimes a Telegram bot isn't for customers but for you: it reads your email, reminds you of things, keeps your notes. Then it has to know that it's the owner writing, and not answer anyone else.
This is my personal bot — let it answer only me
The builder gives you a one-time code and tells you step by step what to do with it:
- Open the link from the reply — your bot opens (in Viber, WhatsApp and Slack, just open a private conversation with the bot).
- Press "Start" — or send the code to the bot as a separate message. In Discord, use the command:
/askand the code. - The bot replies "Done…".
From then on, in this chat:
- the assistant knows it's the owner writing and talks to you as its own, not as a customer;
- it can see actions marked "admin only" — the ones that act on your behalf (your email, your calendar through an action, and so on);
- a stranger who finds the bot gets one sentence — "this is a personal assistant" — and nothing more: the assistant doesn't run for them and no credits are spent. If they keep writing, the bot stays silent: they'll hear the same sentence no sooner than half an hour later, so even a flood of messages from a stranger doesn't slow down answers to you;
- in a group, the bot is silent: everyone reads there, and there are no actions on your behalf in a group, even for you.
Your conversations with the personal bot are in the dashboard's "Conversations", like any others — but only the workspace's admins can open them (and the run trace in the log): they may contain your email and other things the assistant did on your behalf. A team member sees an "Owner's private conversation" row without text, and doesn't find it when searching by words. The mark stays even after disconnecting: what was said earlier doesn't become visible to everyone. Your conversation isn't passed to support staff on duty: the assistant won't act on "call an operator" in it, because other people would receive the transcript.
A postponed "remind me tomorrow" or "check in a week" runs with the same rights it was requested with: from your chat — with yours, from a customer conversation — as for a customer.
What the agent does on its own on a schedule — a morning summary, checking email — also arrives here, in your chat, rather than as a notification. You can reply to it like to any message: the agent remembers what it wrote.
You can do the same by hand: Channels in the panel on the right → under the bot "Link my chat", then "Check" once the bot has replied "Done", and "Linked only".
The code is a key
The code works for 10 minutes, once and only in your bot; a new code cancels the previous one. Send it from a private chat with the bot — a code sent to a group won't work and gets burned, because all the members saw it — then just get a new one. A code sent to another assistant's bot or pasted into the chat window on a website gets burned the same way: in the conversation and the log, a note remains instead of the digits, not the code itself. Writing "I'm the owner" to the bot does nothing: the bot knows who you are only by the code.
Add another person
Let my wife write to my bot too
The builder gives you a code for her, and she sends it herself from her phone. By default such a person is trusted: she can write to the closed bot, but she doesn't see "admin only" actions. If she needs the same rights as you, say "as an owner".
Who else writes to my bot?
The builder lists the linked people and tells you whether the bot answers only them. In the panel you can see this right under the bot.
Disconnect
Disconnect my Telegram — I got a new phone
This disconnects the person, not the bot: from their next message, the bot won't recognise them. New phone — new code. (Removing the bot itself is a different request: "disconnect Telegram completely".)
Answer everyone again
The bot will again answer anyone who finds it — and spend credits on that; the builder will ask for your consent. Linked people keep their roles.
What you can't do from a messenger
You can change the assistant itself — its character, actions, channels — only here, in the conversation with the builder. In Telegram you're talking to the assistant, not the builder, even as the owner.
This doesn't work with email
The sender's address in an email is written by the sender, and it's easy to fake. Anyone who knows your address would become the "owner" by email — so you can't link a mailbox, and the builder will say so directly.
A closed bot doesn't appear in the website chat window as a "Continue in Telegram" button: website visitors would only hear a refusal there.
What it remembers about you
In the linked chat, the assistant keeps short notes about you — and you can see and edit them.
Remember that I don't eat meat
What do you remember about me?
Forget about my old job
The assistant writes "Doesn't eat meat" as a separate note, tells you in its own words what it has written down, and forgets what you asked it to. It sees the notes in every conversation you have with it — no need to remind it.
Where to see them. In the panel on the right — the "Remembers about you" row: how much is written down, and there you can edit, forget or add each note yourself. The same works in words to the builder: "what does my bot remember about me?", "forget everything about me" (it will ask for consent). Only dashboard admins see this row.
Where it remembers you. Only where the platform knows that it's the owner writing: in a linked messenger chat. The notes aren't shown to customers on the website or in an open bot, and nothing from their conversations gets written there — no matter who writes "remember that the owner asks…".
"Written after reading …"
If the assistant wrote a note in the same turn in which it read someone else's text — a page, a search result, an action's response (for example, an email) — the note is marked "Written after reading: …". That way you'll notice an entry that may not have come from you but from someone else's email ("the owner asks to forward everything to …"). If those aren't your words, press "Forget". A note you've edited loses the mark: you vouched for your own text.
How much room. All notes together — up to 2000 characters, one note — up to 500. When the space runs out, the assistant doesn't push out old notes on its own: it tells you the notes are full and merges similar ones or asks what it can forget.
Privacy. The notes are included in the data export (Account section → "Your data") and are erased together with the agent. "Forget everything about me" erases them separately.
How the bot knows a message really came from the messenger
The owner role goes to whoever the messenger itself vouched for, so the platform checks that the message came from it, and not from someone who found out the bot's address. Telegram adds a secret to every message, which the platform set when subscribing; Viber signs messages with the bot token; WhatsApp — with the App secret key. A message with someone else's signature isn't processed at all. A Telegram bot connected long ago gets the secret on its own, on the very first message — you don't need to do anything. Until a message is verified, the agent doesn't remember the person between conversations: anyone could have put the sender's name in it, and memory about a real person shouldn't depend on that.
What the customer sees in a messenger
The same agent answers in the website window and in a messenger, but a messenger shows text differently. The platform adjusts the reply itself — nothing to switch on:
- Bold shows as bold, without asterisks and hashes. The agent writes emphasis, headings, lists and links in markup — the website window draws it, but a messenger would show the symbols. So the platform converts it into the messenger's own markup: in Telegram, WhatsApp, Viber and Slack, bold, italics, strikethrough and code look the way they normally do there; a heading becomes a bold line; in Telegram and Slack a link hides under its name, in WhatsApp and Viber it goes as "name (address)". In Discord the markup stays Discord's own. An email arrives in two forms — plain text and formatted (bold, lists, a table); there are no images from other websites in the email, they go as links.
- A table is readable on a phone. A narrow one (two or three short columns) arrives as an even block in a monospaced font; a wider one becomes a list: "Model — Price" for two columns, and for three or more each row becomes an entry with a bold name and lines like "Price: …", "Warranty: …". In an email, a table stays a table.
- A symbol that isn't markup stays a symbol. "234", "5 * 3", "my_file.txt", "4* hotels" arrive as written — both in the agent's reply and in what the operator typed in "Conversations". The operator can emphasise a word too:
**important**arrives in bold. - If the messenger rejected the formatting, the same message is sent again right away as plain text: the customer gets the answer either way.
- A long reply comes as several messages. Every messenger limits the length of one message; the reply is split by paragraphs and arrives in full, not cut off.
- Photos and files arrive as attachments in Telegram, Viber and WhatsApp; in Slack, Discord and email — as a link in the text.
- What was said before an action isn't lost. "Placing the order: kettle, 1 pc." — and it placed it: the customer gets these words, not only what the agent added after the action.
- Two messages in a row — two replies in turn. If a customer wrote "Good afternoon" and right away "do you have a kettle?", the agent answers the first one first, then the second, and the second reply already knows about the first.
- Location and contact reach the agent. A customer who shared their location or phone number with a messenger button (Telegram, Viber, WhatsApp) is saying the same thing they'd say in words: the agent sees the coordinates with a map link, or the name and number. The agent doesn't open videos and stickers — and says so honestly rather than staying silent.
- The messenger briefly isn't accepting messages ("too many requests", an outage) — the platform retries sending on its own for a few seconds. If that doesn't work either, you'll see a "reply not delivered" problem.
What isn't there: the agent doesn't notice a message the customer edited or deleted — it has already answered what came first.
Voice messages
A person dictates to the bot — and the agent answers what was said. Nothing to switch on: it works this way in Telegram, WhatsApp, Viber and email.
How it works:
- the voice message is transcribed by the platform, before the agent starts answering: the recording goes to a speech recognition service, and the agent gets the text with a note — "(voice, 0:42) Do you have the kettle in stock?". The note is there because text recognised by ear can be inaccurate, and the agent knows that;
- Telegram video notes, audio files and audio attached to an email are transcribed the same way. Viber has no separate voice messages — audio files are transcribed;
- in the dashboard's conversations you see the same text with the note;
- the language is the one the person speaks. The service hears Ukrainian better because the platform hints the language to it, but doesn't force it: an English voice message stays English rather than becoming a translation.
When transcription fails, the person gets an answer from the platform, not the agent — the agent would make something up in reply to an empty message:
| What happened | What the person hears |
|---|---|
| the voice message is longer than 10 minutes | "This voice message is too long: recordings up to 10 minutes can be transcribed. Please send a shorter one or write a text message." A longer voice message isn't cut off: the agent would take half for everything the person said |
| not a single word can be heard in the recording | "We couldn't make out any words in the voice message. Please write a text message." |
| the speech recognition service didn't respond | "We couldn't transcribe the voice message. Please write a text message or send it again a little later." — and you get a "voice messages aren't being transcribed" problem |
| voice messages are turned off | "Voice messages aren't transcribed here yet. Please write a text message." |
If there's text next to the voice message (a caption, an email), the agent answers the text and says itself that it didn't read the recording — an untranscribed voice message doesn't take away the person's answer to what they wrote.
Price — 6 credits per minute of audio, proportional to the seconds: a 0:42 voice message costs 5 credits. You pay only for what reached the agent: too long, untranscribed or turned off costs nothing. In the turn log, transcription is a separate line with the duration and price. See Credits.
Turn it off if you don't need voice messages:
Don't transcribe voice messages
Then a person with a voice message hears "please write a text message" — not silence. To turn it back on: "transcribe voice messages again".
The agent can also reply with voice — in Telegram and WhatsApp, when you ask for it: "reply to me with voice". See Images and voice.
Where the recording goes
The platform takes the recording from the messenger and passes it to a speech recognition service — a third-party service connected to the platform. The platform doesn't store the recording itself: after transcription it's discarded, and it stays in the messenger as it was. Only the transcribed text is stored — in the conversation, like any message.
If no speech recognition service is connected (this can happen on a self-hosted deployment of the platform), voice messages aren't transcribed anywhere: the person hears "please write a text message", and the builder will say so directly when asked about voice messages.
Your own app
A mobile app, an internal chat, a till — any system of yours sends messages and reads the reply right away. This is the channel that makes the list open-ended.
This part of the guide isn't addressed to you but to whoever built your app: For developers. If there's no such person, you don't need to go there — the website chat window and a Telegram bot are plenty.
When a customer asks for a real person
In the website chat window and in your own app, a visitor can press "Talk to a person". Then the assistant goes quiet — two don't answer at once — the request waits for a person, and no credits are spent while a person is talking.
In Telegram, Viber and WhatsApp there's no button, but it's enough to write "get me a person" (or ask in a way the assistant understands on its own) — and everything works the same: the assistant goes quiet, the request appears in "Conversations", and your reply from there reaches the customer in the same messenger. When you press "End", the customer gets a message that the assistant is answering them again. Nothing to switch on.
What the customer hears when they ask for a person depends on whether there's someone to answer:
| Situation | The customer hears |
|---|---|
| someone is on shift in Telegram support | "I'm passing you to an operator. Please wait — they'll reply in this chat." |
| there are people on duty, but it's not their shift now | "I'm passing your conversation to a person. Nobody is available right now, so the reply will come later — here, in this chat." |
| there's no duty schedule (you only answer from the dashboard) | "I'm passing your conversation to a person — the reply will come here, in this chat, as soon as they read it." |
| the live person option is turned off ("operator: false", "we have no operators") | the assistant honestly says it can't call a person here and suggests another way to get in touch, if there is one in its materials |
If the reply didn't reach the customer (the channel is off, the customer blocked the bot, in WhatsApp a day has passed since their last message), "Conversations" says so directly rather than showing it as sent. In your own chat with the agent (as the owner or a trusted person) there's no calling an operator — the assistant itself answers there. Email has no operator: a reply from the dashboard isn't delivered to someone else's mailbox.
You answer such requests in the "Conversations" section — it has its own page: When a customer asks for a person. That's also where you erase a visitor's data at their request.
Pausing is not the same as disconnecting
Turn off Telegram for a week
A turned-off channel stays itself: the same incoming address, the same token. The agent doesn't answer in it, and the channel is turned back on with the same request or with the "Turn on" button (Panel → Channels).
What a person who writes to a turned-off channel hears
They aren't left facing a silent bot. They get one sentence:
The assistant isn't answering here right now. Please write later.
This sentence costs no credits (the agent doesn't think about it) and arrives no more than once every half hour per person — not on every one of their messages. You can replace the words with your own:
While the bot is off, tell people: we're on vacation until the 10th, we'll reply after that
Let the turned-off bot say nothing
Bring back the standard sentence
The same in the dashboard: Panel → Channels → under the turned-off channel, the line "Anyone who writes will hear: …" and the buttons "Change sentence", "Standard", "Say nothing". The sentence can be up to 300 characters.
| What happened | What the person hears |
|---|---|
| you turned off the channel | your sentence, or the standard one if you don't have one; or nothing, if you asked for that |
| the assistant ran out of credits | "The assistant is temporarily unavailable. Please try again later." — always these words, once every half hour; the website window says the same |
| the assistant is being transferred to another owner right now | "The assistant isn't answering for a minute. Please try again a little later." |
| the bot was deleted together with the agent | nothing: the platform removes the messenger subscription, and the bot stops existing for it |
What about messages that arrived in the meantime. The assistant doesn't answer them later on its own: the person has already been told to write later, and an answer to a week-old question would be out of place. But they aren't lost:
- in the dashboard's "Conversations" you can see who wrote what — you can answer yourself as soon as the channel is back on;
- under the channel (Panel → Channels) there's a number: "While the channel wasn't answering, 3 people wrote — 7 messages, 1 October — 3 October". It stays after you turn the channel back on, disappears two weeks after the last message and starts over with each new pause. The builder gives the same number when you ask "what's connected right now".
Email the assistant reads itself
If you turn off a mailbox that the platform reads itself (connected with an address and password), nobody touches the emails: they wait in the mailbox unread, and the assistant will answer them once the channel is turned back on. The "not answering right now" sentence isn't sent to these emails. An email you opened yourself in the meantime won't be touched.
The sentence is never sent to auto-replies ("I'm on vacation"), newsletters and addresses like noreply@ — otherwise two auto-responders would write to each other forever. In Discord and in your own app, the sentence comes on every request: there the reply is tied to the command or request itself.
What isn't there: if the person blocked the bot or the messenger removed the subscription itself, there's no way to tell them anything — the messenger won't accept the message.
Disconnect Telegram completely
Disconnecting is irreversible: the channel disappears, the messenger unsubscribes from our address, and reconnecting will give a new incoming address. The builder will ask for consent and say exactly this.
Unsubscribing is our job, not yours
We set up the messenger subscription, so we remove it too. If unsubscribing failed (the messenger is unavailable), the builder will say so directly: while the subscription is alive, the bot sends messages to an address that no longer exists.
What is connected right now
The Channels row in the panel on the right. Or ask:
Where can my agent answer people?
The builder lists both the channels and the allowed websites, and separately names the channels that are not set up: the channel exists but can't work — this is the worst state, because it looks done.
Next
- When a customer asks for a person — how to answer requests yourself.
- So it works without you — when the agent should work on its own rather than answer.
- When something breaks — why the agent might have gone quiet.
Viber
Connect Viber, here's the public account token: …
The token is issued by the Viber public account panel. From there it's all like Telegram: the agent answers in the same conversation, sees photos, understands audio files that are sent (voice), remembers the person between conversations. The customer can ask for a person — the reply from "Conversations" reaches them in Viber.
WhatsApp
Connect WhatsApp: here's the permanent token, Phone number ID and App secret
The token and Phone number ID come from the Meta for Developers dashboard (WhatsApp → API Setup). The App secret is there too, in your app's settings: App settings → Basic → App secret, the "Show" button. Meta signs every message with it, and the platform checks the signature: a message not sent by Meta (even if sent to the right address) isn't processed at all. A new channel won't connect without the App secret.
The builder replies with a callback address and a verification code — enter them in the Meta dashboard (WhatsApp → Configuration → Webhooks) and subscribe to the messages field. Meta first checks the address itself and only then starts sending messages. The address and code are shown once.
From there it's like Telegram: the agent answers in the same conversation, sees photos, understands voice messages, remembers the person. The customer can ask for a person — the reply from "Conversations" reaches them in WhatsApp (if no more than a day has passed since their last message — otherwise "Conversations" will say it wasn't delivered).
A WhatsApp channel connected earlier
Channels connected before the App secret was required answer everyone, but don't remember the person between conversations. You also can't link your chat or close the bot to strangers with them: without a signature, a message from Meta can't be told apart from a fake one, and here a fake would mean owner rights. The panel says this in words under such a bot, with an "Add key" button next to it. Or just write:
Add the App secret to my WhatsApp: …
The 24-hour rule
WhatsApp lets you reply freely only within a day of the person's message. After that — only with an approved template. The agent can't know this: if it answers two days later, the service refuses, and you'll see it as a problem.
Discord
Let it answer in our Discord server, here's the token: …
All you need is a bot token. Here's how to get it:
- Open discord.com/developers/applications, press New Application and give it a name.
- On the left — the Bot section → Reset Token → copy the line.
- Paste it into the conversation with the builder in one message together with your request.
The platform does the rest: using the token, it finds out from Discord the application ID and the key Discord signs messages with, gives Discord our address and registers the /ask command. The builder replies with an "add the bot to a server" link — open it, choose your server and press "Authorize". The same link is shown in the panel under the bot ("Add to server") and in the builder's list of channels.
How to write to it:
- on a server — with the
/askcommand and a question:/ask how much is delivery?Everyone in the channel sees the reply; - in direct messages — also
/ask …. To open direct messages, click the bot in the server's member list → "Send message".
Why /ask and not just a message
Discord gives regular messages to bots only through a persistent connection that would have to stay open for every bot around the clock, and the content of server messages also needs a separate permission that Discord grants after reviewing the app. A command, on the other hand, Discord delivers itself, each one signed, so the platform knows exactly who sent it. The cost is typing /ask. A new command sometimes doesn't appear in Discord right away: if /ask isn't there yet, restart Discord.
Worth knowing:
- On a server, the agent is the same for everyone — all of its members read the channel, so the agent doesn't know you as the owner there even after linking, and there's no memory about an individual person on a server: the conversation is the channel.
- A personal bot in Discord — linking works in direct messages. The code is sent with a command:
/ask 123 456 7890— the builder and the panel show the full line. - The reply to
/askremoves the "thinking…" label as soon as the agent has answered. A long reply arrives as several messages. - Files and images from the reply arrive as links. You can't send a photo in the
/askcommand. - There's no operator in this channel: a reply from the dashboard doesn't reach Discord.
Slack
Connect to Slack
In Slack, the assistant works through your own app — it takes a minute to create from a ready-made description:
- Open api.slack.com/apps → Create New App → From a manifest → choose the workspace.
- Paste the description below (the builder will give it to you too) → Create.
- Install to Workspace → allow.
- Copy the Bot User OAuth Token (the OAuth & Permissions section, starts with
xoxb-) and the Signing Secret (Basic Information → App Credentials) and send both to the builder in one message. - The builder replies with an address — paste it into the app: Event Subscriptions → turn on Enable Events → Request URL → wait for "Verified" → Save Changes. The address is shown once.
{
"_metadata": {
"major_version": 2,
"minor_version": 1
},
"display_information": {
"name": "Assistant"
},
"features": {
"app_home": {
"messages_tab_enabled": true,
"messages_tab_read_only_enabled": false
},
"bot_user": {
"always_online": true,
"display_name": "Assistant"
}
},
"oauth_config": {
"scopes": {
"bot": [
"app_mentions:read",
"chat:write",
"im:history",
"files:read"
]
}
},
"settings": {
"event_subscriptions": {
"bot_events": [
"app_mention",
"message.im"
]
}
}
}The Signing Secret is required: Slack signs every message with it, and the platform checks the signature and the time — a message not sent by Slack (or an old one someone repeated later) isn't processed at all.
How to write to it:
- in direct messages — the app in the Apps section on the left → Messages. Here the agent remembers the person between conversations, and here linking works: the code is sent as plain text;
- in a channel — invite the bot (
/invite @Assistant) and mention it:@Assistant when is delivery?The reply comes in a thread under the mention. The bot doesn't read the rest of the channel conversation.
In a Slack channel the agent is the same for everyone, as on a Discord server: it knows you as the owner only in direct messages. The agent sees a photo sent in direct messages. There's no operator in this channel.
Email
The agent reads the mailbox and answers emails — requests, complaints, orders — from your address.
Let it answer emails at shop@gmail.com, app password …
The address and password are enough. For Gmail, Outlook, ukr.net, i.ua, meta.ua, Yahoo and iCloud the platform knows the servers itself: the agent checks the mailbox once a minute and replies from it. Nothing needs to be forwarded.
App password
Gmail, iCloud and Yahoo don't let apps in with a regular password. Your account's security settings have "app passwords" — create one for the agent. The builder will tell you where exactly.
An address on your own domain: give the builder the outgoing (SMTP) and incoming (IMAP) mail servers — they're in your email program's settings. If the incoming server is unknown, the agent will only reply, and incoming emails will have to be forwarded to the channel's incoming address as raw emails (raw MIME) — this is for people who run a mail server.
The agent takes only unread emails that arrived after connecting. Whatever was in the mailbox before — read or unread — it doesn't touch or mark: old emails stay yours. The same applies after switching from "read only" to replies: the agent answers only emails that arrive after the switch. An email you managed to open before the agent did isn't touched either. The agent takes up to ten emails per minute; the rest wait for the next minute.
If this is your personal email, connect it so that it only reads.
When the agent asks you a question and has such a mailbox, the question arrives by email — and a reply to that email is your answer to the agent. The reply is accepted only from the notification address you gave the agent, and only with the tag from the email itself: someone who hasn't seen the email can't answer for you.
How it behaves:
- same mailbox — same conversation. A person writing from one address keeps one thread, like in a messenger;
- the subject is part of the message. The agent reads "Order #418" in the subject and "when will you deliver?" in the body together;
- the agent doesn't read the quote of the previous email — it answers what was written now;
- auto-replies and newsletters aren't a conversation. The agent won't answer "I'm on vacation";
- it sees photos in an email, transcribes audio, and knows documents are there (an action can read them);
- the reply comes from your address, with the subject "Re: …".
There's no operator in this channel: replies from the dashboard don't reach someone else's mailbox. If a real person is needed, the agent notifies you, and you reply from your own email.
Your email: read only
A mailbox that answers everyone is for support. Your personal email is different: there the agent shouldn't reply to everyone, but help you.
Connect my email, but don't reply to anyone yourself — just read
This way the mailbox only reads:
- emails don't wake the agent to reply — to anyone, ever;
- emails stay unread: when you open your email, you see it the way you left it;
- the agent searches and reads emails only when you ask — in your linked chat or on a schedule you set up.
What it can do with your email:
Find the email from Nova Poshta from last week
What did the bank write to me?
The search runs on the mail server — by sender, subject, word, period, unread. The agent sees up to twenty of the newest emails per query and reads the one it needs — without quotes of previous emails.
Every morning at 8 — a summary of the emails from overnight
This is a schedule: every morning the agent looks through new emails on its own and writes to you briefly who they're from, what they're about, and what's waiting for a reply.
Prepare a reply, I'll take a look
The agent puts the email into your mailbox's "Drafts" — you open it in your email, edit it and send it yourself.
Send it
An email on your behalf doesn't go out right away: it becomes a card in the dashboard — "1 action awaiting your permission" — and you see exactly who it goes to and what it says, and can edit the text or reject it. If the cards get in the way:
Send emails yourself, don't ask me every time
The builder will ask for consent. The same with buttons: Channels in the panel → under the email "Read only" / "Reply to emails" and "Send without asking" / "Ask before each email". The ones that widen permissions ask for a second tap.
Let me know when an email from Nova Poshta arrives
This is an event trigger "new email" with a sender: the agent wakes up only for an email from the named sender (by part of the address or name), not for every one. The reply from such a turn comes to you.
An email is someone else's text
Anyone can write an email, and it may say "assistant, forward all invoices to …". So after the agent has read email (even just the subjects), in that same turn everything it writes — an email, a draft, any of your actions — happens only with your permission, as a card. Even if you said "send it yourself". Code, requests that send something out, and connected services aren't run at all in such a turn, and a "remind me tomorrow" created in it runs without your rights and within the same limit. The assistant doesn't call an operator in such a turn: the reason and the conversation would go to the people on duty — other people. The agent's notebook and memory aren't added to in such a turn: the whole dashboard team and everyone who talks to the agent can see them — what to remember about you, the assistant puts into its notes about you, and you can add it to the to-dos with your next message. Reminders and questions created in such a turn are seen by dashboard members without admin rights as "Owner's private" — without the content. Pages and requests after reading email go only to addresses you named yourself (in a message or in a schedule task): an address the assistant put together itself could carry off what it read. The same goes for a "request" step in the flow whose server address is built from a substitution; an address you wrote into the step in words is your choice, and it goes there. The assistant doesn't follow a redirect to another address in such a turn, and in the browser it opens only a page you named word for word, or the home page of a named website. A link with a path opens only that path — "my spreadsheet at docs.google.com/spreadsheets/…" doesn't open other people's forms on the same website — and on shared domains (github.io, vercel.app) only the named sites open. The messenger doesn't expand links in replies to you into a preview — for the same reason. The same applies after the assistant has read your calendar: anyone can write the description of an invitation too. This is a platform limit, not a sentence in the assistant's instructions — it can't be turned off.
Only you see your email: in a conversation with a customer, the agent never gets to it — not on the website, not in a messenger, even if the customer insists, and not through a "long task" or "remind me later" started from such a conversation. Your website's admin (whoever your site signed as an admin) has "admin only" actions, but not your email and not your full calendar. A conversation in which the agent read your email is private: only workspace admins see it, and the same goes for permission cards from it — a team member sees that a card exists, but not what's in it.
Gmail, Outlook and work accounts
Gmail, Outlook, iCloud and Yahoo only let you in with an app password — the server rejects a regular password, and the agent will say exactly that, not "no emails". A Google or Microsoft work account that signs in through corporate SSO can't be connected this way.
Worth knowing:
- the agent searches the "Inbox": it doesn't see other folders (archive, Gmail's "All Mail");
- Gmail puts an email sent by the agent into "Sent" on its own; other services don't, so there may be no copy there;
- the mailbox didn't open (the password changed, the server isn't responding) — the agent will say "couldn't be read", and you'll get a problem, as with any mailbox.