# Thoth Documentation > Full markdown export of the Thoth documentation site for LLMs and automated tools. - Site: https://docs.thothsupport.dev - Product: Thoth — AI-powered Discord support (tickets, knowledge base, dashboard) - Generated: 2026-06-25T13:41:01.723Z - Pages: 20 ## Table of contents 1. [Thoth](https://docs.thothsupport.dev) 2. [Introduction](https://docs.thothsupport.dev/getting-started/) 3. [Setup](https://docs.thothsupport.dev/getting-started/setup) 4. [Checklist](https://docs.thothsupport.dev/getting-started/checklist) 5. [How tickets work](https://docs.thothsupport.dev/discord/how-tickets-work) 6. [Commands](https://docs.thothsupport.dev/discord/commands) 7. [Escalation](https://docs.thothsupport.dev/discord/escalation) 8. [Auto-learn](https://docs.thothsupport.dev/discord/auto-learn) 9. [Overview](https://docs.thothsupport.dev/dashboard/overview) 10. [Tickets](https://docs.thothsupport.dev/dashboard/tickets) 11. [Knowledge](https://docs.thothsupport.dev/dashboard/knowledge) 12. [Custom tools](https://docs.thothsupport.dev/dashboard/custom-tools) 13. [Tips](https://docs.thothsupport.dev/dashboard/tips) 14. [Insights](https://docs.thothsupport.dev/dashboard/insights) 15. [Settings](https://docs.thothsupport.dev/dashboard/settings) 16. [Billing](https://docs.thothsupport.dev/dashboard/billing) 17. [Zero-access encryption](https://docs.thothsupport.dev/dashboard/zero-access) 18. [FAQ](https://docs.thothsupport.dev/help/faq) 19. [Troubleshooting](https://docs.thothsupport.dev/help/troubleshooting) 20. [Team members](https://docs.thothsupport.dev/dashboard/team) --- ## Thoth Source: https://docs.thothsupport.dev # Thoth Answer once, reuse forever AI support for Discord. Private tickets, answers from your docs, and a dashboard for your team. --- ## Introduction Source: https://docs.thothsupport.dev/getting-started/ # Introduction Thoth is AI support for Discord. Users open private ticket channels from a panel in your server. Thoth searches your documentation and replies. If it cannot answer, it escalates to your staff. Most of your setup happens **in Discord** with slash commands. The [dashboard](https://thothsupport.dev) is for managing docs, reviewing tickets, and advanced settings. ## How it works 1. **Users start in Discord.** They click a button in a ticket panel and get a private channel. 2. **Thoth answers from your content.** It searches uploaded docs, pasted text, synced URLs, and learned tips. 3. **Staff step in when needed.** A "Request human" button and automatic escalation put the ticket in front of your team. 4. **Tickets close with learning.** Staff run `/close`. Users rate the experience. Helpful resolutions can become reusable tips. ## The loop - **Resolve once** in a ticket. - **Learn automatically** (optional). Thoth suggests short tips from staff-resolved conversations. - **Reuse forever.** Confirmed tips and your docs are searched for every future question. ## What you manage, and where | In Discord | In the dashboard | |------------|------------------| | Opening and closing tickets | Knowledge base, tips, insights | | `/thoth-config setup` — set up a new server | Custom ticket types, business hours, voice prompt | | `/thoth-config link` — use existing channels | Team members, billing | | `/close`, `/add`, `/remove`, `/rename` | Transcripts, Playground testing | ## Get started **New to Discord bots?** Start here: ### [Setup guide →](https://docs.thothsupport.dev/getting-started/setup) The setup guide is written for complete beginners. It walks you through: - Adding Thoth to your server - Running one command to create everything (**new server**) - Or linking channels you already have (**existing server**) - Adding docs and testing before you go live Then use the [launch checklist](https://docs.thothsupport.dev/getting-started/checklist) before you announce support to your community. Questions? See the [FAQ](https://docs.thothsupport.dev/help/faq) and [troubleshooting](https://docs.thothsupport.dev/help/troubleshooting) pages. --- ## Setup Source: https://docs.thothsupport.dev/getting-started/setup # Setup guide This guide walks you through setting up Thoth from scratch. No prior experience with Discord bots is required. When you are done, your server will have: - A **ticket panel** — buttons users click to open private support channels - **Staff channels** — where transcripts, escalations, and learned tips go - An **AI assistant** — Thoth replies in tickets using your documentation (once you add it) **Time needed:** about 10–15 minutes for the Discord setup, plus time to add your docs. --- ## Before you start You need: | Requirement | Why | |-------------|-----| | **Manage Server** on your Discord server | Only server admins (or people they trust) can run setup commands | | Permission to **add a bot** to the server | You will click “Add to Discord” on the Thoth website | | (Recommended) A **second Discord account** or a friend | To test opening a ticket as a regular user | You do **not** need to use the website dashboard to get started. Everything in the steps below happens in Discord. --- ## Pick your path Answer one question: > **Does your server already have support channels** (for example `#support`, `#tickets`, or categories for different ticket types)? | Your answer | Follow this path | |-------------|------------------| | **No** — we are starting fresh | [Path 1: New server](#path-1-new-server-recommended) | | **Yes** — we already run support in Discord | [Path 2: Existing channels](#path-2-existing-channels) | | **I prefer the website** for all settings | [Path 3: Dashboard setup](#path-3-dashboard-setup-advanced) | Most beginners should use **Path 1**. --- ## Path 1: New server (recommended) ### Step 1 — Add Thoth to your server 1. Go to [thothsupport.dev](https://thothsupport.dev). 2. Click **Add to Discord** (or use the invite link in the dashboard if you are already signed in). 3. Choose the server you want to set up. 4. On the permissions screen, leave the suggested permissions **enabled**. Thoth needs them to create channels, send messages, and post the ticket panel. 5. Click **Authorize**. **Success check:** - Thoth appears in your server’s member list (status should be online). - If your server has a **system messages** channel, Thoth may post a short welcome there with setup hints. **If something went wrong:** make sure you have “Manage Server” on that Discord server. Only admins (or roles with that permission) can add bots. --- ### Step 2 — Open the setup command 1. In Discord, go to any text channel where you can type (for example `#general`). 2. Type `/` to open the slash command menu. 3. Start typing `thoth-config` and select **`/thoth-config setup`**. 4. Press **Enter**. **Success check:** a popup form titled **“Thoth Support Setup”** appears. **If the command does not show up:** - Wait a minute and try again (new commands can take up to an hour to appear globally, but usually show up within a few minutes). - Make sure you typed `/` in a channel, not in a DM. - Confirm Thoth is online in the member list. --- ### Step 3 — Fill in the setup form Each field is explained below. You can copy the **example values** if you are unsure. #### Ticket types **What it means:** which kinds of support buttons users will see on the panel. **What to type:** comma-separated names from this list: | Type name | Good for | |-----------|----------| | `customer` | General help | | `technical` | Bugs and technical issues | | `billing` | Payments and invoices | | `sales` | Pricing and purchases | **Example:** `customer, technical` You can start with just `customer` if you want to keep it simple. --- #### Start channel name **What it means:** the name of the channel where the ticket panel (buttons) will live. **What to type:** a short name using letters and hyphens. **Example:** `start-support` (the default is fine) Thoth will create this channel for you. Tell your community: *“Open a ticket in #start-support.”* --- #### Staff role names **What it means:** which Discord roles can see all tickets and manage support. **What to type:** the **exact names** of your staff roles, separated by commas. These must match what you see in **Server Settings → Roles**. **Example:** `Support, Moderator` **How to find role names:** 1. In Discord, click your server name → **Server Settings**. 2. Open **Roles**. 3. Copy the names of roles that should handle tickets. **Tip:** leave this blank only if you will add staff roles later in the [dashboard Settings](https://docs.thothsupport.dev/dashboard/settings). Tickets will still work, but staff may not see them until roles are configured. --- #### Auto-learn from tickets **What it means:** when staff close a ticket, Thoth can suggest short tips to reuse in future answers. You approve or remove each tip in Discord. **What to type:** `yes` or `no` **Recommendation:** `yes` for most teams. --- #### Transcript retention (days) **What it means:** how long closed ticket transcripts are kept. **What to type:** one of these numbers: | Value | Meaning | |-------|---------| | `90` | Keep for 90 days (good default) | | `30` or `60` | Shorter retention | | `0` | Keep forever (unlimited) | --- ### Step 4 — Submit the form 1. Click **Submit** at the bottom of the form. 2. Wait a few seconds. Thoth will create channels and post the ticket panel. **Success check:** you see a private reply (only you can see it) that says support channels were created, with links to the start channel and staff area. **What Thoth creates:** | Channel / category | Purpose | |--------------------|---------| | `#start-support` (or your chosen name) | Ticket panel with buttons | | Categories for each ticket type | Private channels appear here when users open tickets | | `#ticket-transcripts` | Closed ticket logs | | `#staff-review` | Escalated tickets for staff | | `#learned-tips` | Suggested tips from resolved tickets | --- ### Step 5 — Confirm everything worked Run this command in Discord: ``` /thoth-config view ``` You should see: - A linked **start channel** - At least one **enabled ticket type** - A message that setup is ready (or clear next steps if something is missing) Then open your **start channel** in the channel list. You should see a message from Thoth with buttons like **Customer Support** and **Technical Support**. **If you see a permissions error:** Thoth needs **Manage Channels** on its bot role. 1. Go to **Server Settings → Roles**. 2. Find the **Thoth** role (or whichever role the bot uses). 3. Turn on **Manage Channels**, **View Channels**, **Send Messages**, and **Read Message History**. 4. Run `/thoth-config setup` again. More fixes: [Troubleshooting](https://docs.thothsupport.dev/help/troubleshooting). --- ### Step 6 — Add documentation (so Thoth can answer questions) Thoth searches **your content** before replying. Without docs, it can still open tickets and escalate to staff, but AI answers will be limited. **Easiest options:** | Method | Where | Best for | |--------|-------|----------| | Paste or upload | Dashboard → **Knowledge** | FAQs, policies, guides | | Quick note | Discord: `/ingest content:Your text here` | One-off answers you want immediately | After adding content: 1. Open the dashboard **Knowledge** page. 2. Use **Playground** to ask a real question your users would ask. 3. Check that the answer looks correct and cites your content. --- ### Step 7 — Test the full flow Use a **non-staff account** (a second Discord account or a friend): 1. Go to the **start channel** and click a ticket type button. 2. A **private channel** opens — only that user and staff should see it. 3. Ask a question that is answered in your docs. 4. Confirm Thoth replies. 5. Click **Request human** if you want to test escalation. Then as **staff**: 1. Reply in the ticket channel. 2. Run `/close` in that channel. 3. Confirm a transcript appears in `#ticket-transcripts`. 4. Confirm the user gets a rating DM (👍 / 👎 / Skip). --- ### You are done with Path 1 Before announcing support to your community, work through the [launch checklist](https://docs.thothsupport.dev/getting-started/checklist). --- ## Path 2: Existing channels Use this if you **already** have channels like `#support`, `#ticket-transcripts`, or ticket categories, and you do **not** want Thoth to create new ones. ### Step 1 — Add Thoth to your server Same as [Path 1, Step 1](#step-1--add-thoth-to-your-server). --- ### Step 2 — Link your existing channels 1. In any text channel, run: ``` /thoth-config link ``` 2. Thoth scans your server for common channel and category names. **Names Thoth looks for (examples):** | Purpose | Example channel / category names | |---------|-------------------------------| | Ticket panel | `#support`, `#tickets`, `#start-support` | | Transcripts | `#ticket-transcripts`, `#transcripts` | | Staff review | `#staff-review`, `#escalations` | | Tips | `#learned-tips`, `#tips` | | Ticket categories | `Customer Support Tickets`, or categories containing “support” / “billing” / “technical” | **Success check:** Thoth replies with a list of what it linked. If it found a start channel, the **ticket panel** is posted there automatically. --- ### Step 3 — Handle partial matches If Thoth links **some** channels but not all, the reply lists what is **still missing**. | Situation | What to do | |-----------|------------| | Missing a few channels | Run `/thoth-config setup` to create only what is missing, **or** rename your channels to match the examples above and run `/thoth-config link` again | | Names are very custom | Use the dashboard **Settings → Channels → Use channels this server already has** (channel migrator) to map them manually | | Nothing was found | Use [Path 1](#path-1-new-server-recommended) instead | Run `/thoth-config view` to see current status and next steps. --- ### Step 4 — Add docs and test Same as [Path 1, Step 6](#step-6--add-documentation-so-thoth-can-answer-questions) and [Step 7](#step-7--test-the-full-flow). --- ## Path 3: Dashboard setup (advanced) Use the website if you want finer control (custom ticket types, business hours, voice prompt, etc.) before touching Discord. ### Overview 1. [Sign in](https://thothsupport.dev) with Discord and select your server. 2. Open **Settings** and configure staff roles, ticket types, and options. See [Settings](https://docs.thothsupport.dev/dashboard/settings) for details. 3. Click **Save**. 4. In Discord, run: ``` /thoth autoconfig ``` This applies your saved settings by creating or updating channels and the ticket panel. **Important:** saving in the dashboard alone does **not** change Discord. You must run `/thoth autoconfig` after each structural change (ticket types, staff roles, categories). If you already have channels and do not want new ones created, use the dashboard **channel migrator** (Settings → Channels) instead of `/thoth autoconfig`. --- ## Quick reference | I want to… | Run this in Discord | |------------|---------------------| | Set up a new server from scratch | `/thoth-config setup` | | Connect channels we already have | `/thoth-config link` | | Check if setup is complete | `/thoth-config view` | | Apply dashboard changes to Discord | `/thoth autoconfig` | | Add a quick FAQ snippet | `/ingest content:…` | All setup commands require **Manage Server**. Full command list: [Discord commands](https://docs.thothsupport.dev/discord/commands). --- ## Common problems | Problem | Fix | |---------|-----| | “You need Manage Server permission” | Ask a server admin to run the command, or grant yourself Manage Server in **Server Settings → Roles** | | Thoth lists missing permissions | **Server Settings → Roles → Thoth** → enable **Manage Channels** and the other listed permissions | | `/thoth-config link` found nothing | Your channel names may not match common patterns — use Path 1 (`setup`) or the dashboard channel migrator | | No ticket panel in the start channel | Run `/thoth-config view`. If status is not ready, run `setup` or `link` again | | Thoth does not answer in tickets | Add content in **Knowledge**, then test in **Playground**. See [Troubleshooting](https://docs.thothsupport.dev/help/troubleshooting) | --- ## What to do next 1. [Launch checklist](https://docs.thothsupport.dev/getting-started/checklist) — verify everything before you go live 2. [How tickets work](https://docs.thothsupport.dev/discord/how-tickets-work) — what users and staff see day to day 3. [Knowledge](https://docs.thothsupport.dev/dashboard/knowledge) — build out your documentation --- ## Checklist Source: https://docs.thothsupport.dev/getting-started/checklist # Launch checklist Use this before you tell your community that Thoth support is live. Tick each box in order. If you used **Path 1** or **Path 2** from the [setup guide](https://docs.thothsupport.dev/getting-started/setup), most of the Discord items are already done. --- ## 1. Bot is in your server - [ ] Thoth shows as **online** in the member list - [ ] You (or an admin) have **Manage Server** permission --- ## 2. Discord setup is complete Run `/thoth-config view` in Discord. It should show that support is linked and ready. - [ ] A **start channel** exists (for example `#start-support`) with a **ticket panel** (buttons from Thoth) - [ ] At least **one ticket type** is enabled - [ ] Staff channels exist or are linked: `#ticket-transcripts`, `#staff-review`, `#learned-tips` - [ ] Each enabled ticket type has a **category** for new ticket channels **How you got here (check one):** - [ ] `/thoth-config setup` — new server setup - [ ] `/thoth-config link` — connected existing channels - [ ] Dashboard save + `/thoth autoconfig` — website configuration **If anything is missing:** see [Setup guide](https://docs.thothsupport.dev/getting-started/setup) or [Troubleshooting](https://docs.thothsupport.dev/help/troubleshooting). --- ## 3. Staff are configured - [ ] At least one **staff role** is set (in the setup form or dashboard **Settings**) - [ ] Real support staff have that role on Discord - [ ] Staff know tickets are **private channels** and replies happen there --- ## 4. Knowledge is in place - [ ] You added FAQs, policies, or guides in dashboard **Knowledge** (or used `/ingest` for quick notes) - [ ] You tested **several real questions** in **Playground** and the answers look good - [ ] You know how to add or update content later (upload, paste, or URL) --- ## 5. Test as a regular user Use an account **without** a staff role (a second account or a friend): - [ ] Open a ticket from the **panel** in the start channel - [ ] A **private ticket channel** opens - [ ] Ask something covered by your docs — Thoth replies with a relevant answer - [ ] Click **Request human** and confirm escalation works as you expect --- ## 6. Test as staff - [ ] Join an escalated or open ticket - [ ] Reply in the channel — Thoth should **pause** while staff are active (cooldown) - [ ] Run `/close` in the ticket channel - [ ] A **transcript** appears in `#ticket-transcripts` - [ ] The user receives a **rating DM** (👍 / 👎 / Skip) --- ## 7. Team and community readiness - [ ] Staff know to run `/close` when a ticket is resolved - [ ] Staff know where **escalations** appear (`#staff-review`) and where **tips** are suggested (`#learned-tips`) - [ ] You told users **where to open tickets** (for example: “Go to #start-support and click a button”) --- ## Optional (recommended) - [ ] **Auto-learn** is on (or you plan to maintain knowledge manually) - [ ] **Business hours** are set if you want different behavior outside support hours ([Settings](https://docs.thothsupport.dev/dashboard/settings)) - [ ] **Transcript retention** matches your policy - [ ] You reviewed **Insights** after a few real tickets --- When every box in sections 1–7 is checked, you are ready to announce support. **Need help?** [Troubleshooting](https://docs.thothsupport.dev/help/troubleshooting) · [FAQ](https://docs.thothsupport.dev/help/faq) --- ## How tickets work Source: https://docs.thothsupport.dev/discord/how-tickets-work # How tickets work This page walks through a ticket's full lifecycle, from both the user's and the staff's point of view. ## Opening a ticket 1. Users go to the ticket start channel you configured. 2. They click a button for a ticket type. 3. Thoth creates a **private text channel** visible only to the user and your staff roles. By default a user can have only one open ticket per type. You can raise or remove this limit per type in **Settings**. You can also restrict a ticket type to specific Discord roles. Each ticket channel is created inside a category named after the ticket type (for example "General Tickets"). ## Business hours If you enable business hours in **Settings**, Thoth can: - Send an away message when users write outside your hours - Pause AI replies outside hours (while still allowing ticket creation, if you want) Tickets created outside hours still go into the normal flow. You control whether creation itself is blocked. ## AI replies and the knowledge base When a user sends a message in a ticket: - Thoth searches your knowledge base (uploaded files, pasted text, synced URLs, and confirmed tips). - If it finds a sufficiently relevant answer, it replies. - If it cannot answer confidently, it escalates. Once any staff member sends a message in the channel, Thoth pauses before replying again (30 minutes by default). Change this with **Staff reply cooldown** in Settings, or set it to 0 to disable the time-based pause. Either way, Thoth avoids talking over staff who are actively typing. ## Escalation to staff A ticket escalates when: - The user clicks **Request human** - Thoth cannot find a good answer in your content - You have configured rules that require a human for certain situations Escalated tickets stay in the same private channel. Staff reply directly there. Thoth will not interject while staff are responding (subject to the cooldown). You can also watch the `staff-review` management channel for a feed of escalations if you wire it up. ## Closing a ticket Only staff (or users with Manage Channels in that channel) run `/close`. On close: 1. The channel is closed and (optionally) deleted or archived according to your retention settings. 2. The user receives a DM with a quick rating: **Helpful** (👍), **Not helpful** (👎), or **Skip**. 3. A transcript is posted to your `ticket-transcripts` channel. 4. If auto-learn is enabled and a staff member participated, Thoth may suggest a short tip based on the resolution. Transcripts are also available in the dashboard under **Tickets**. ## Tips and learning If **Auto-learn** is on, resolved conversations with staff participation can produce short, reusable tips. Staff confirm or remove suggestions in the `learned-tips` channel. Only confirmed tips are searched during future tickets and Playground tests. See [Auto-learn](https://docs.thothsupport.dev/discord/auto-learn) for more detail and [Tips](https://docs.thothsupport.dev/dashboard/tips) for how to curate them. Related: [Commands](https://docs.thothsupport.dev/discord/commands), [Escalation](https://docs.thothsupport.dev/discord/escalation), [Settings](https://docs.thothsupport.dev/dashboard/settings) (ticket types, limits, business hours). --- ## Commands Source: https://docs.thothsupport.dev/discord/commands # Commands All commands are slash commands. Type `/` in a text channel to see them. **New to Thoth?** Follow the [setup guide](https://docs.thothsupport.dev/getting-started/setup) first — it tells you exactly which commands to run and when. --- ## Setup commands (run these first) These require **Manage Server** (server admin). | Command | When to use it | |---------|----------------| | `/thoth-config setup` | **New server** — one form creates channels, saves settings, and posts the ticket panel | | `/thoth-config link` | **Existing channels** — auto-connects `#support`, transcript channels, and ticket categories you already have | | `/thoth-config view` | **Any time** — check if setup is complete and see what to do next | | `/thoth autoconfig` | **After dashboard changes** — applies settings you saved on the website to Discord | ### Permission note Thoth needs **Manage Channels** on its bot role to create channels and tickets. If something is missing, the bot replies with a list of permissions to fix — go to **Server Settings → Roles → Thoth** and enable them. --- ## Ticket commands Use these **inside an open ticket channel**. | Command | Who can use | What it does | |---------|-------------|--------------| | `/close` | Staff (Manage Channels) | Closes the ticket, saves a transcript, sends the user a rating DM | | `/add user:@someone` | Ticket owner or staff | Adds someone to the private ticket channel | | `/remove user:@someone` | Staff | Removes someone from the ticket channel | | `/rename name:text` | Ticket owner or staff | Renames the ticket channel | --- ## Knowledge commands | Command | Permission | What it does | |---------|------------|--------------| | `/ingest content:text title:text?` | Manage Server | Adds text to your knowledge base immediately (good for quick FAQs). For files and URLs, use dashboard **Knowledge**. | The optional `title` helps you find the source later. --- ## Testing vs general chat | Tool | Use for | |------|---------| | **Playground** (dashboard → Knowledge) | Testing real support answers — shows exactly which docs were used | | `/thoth askgpt prompt:text` | General chat with the AI — **ignores your docs** and counts against your plan limit | For validating support quality, always use **Playground**, not `askgpt`. --- ## Quick setup reminder | Your situation | Command | |----------------|---------| | Brand new server | `/thoth-config setup` | | Already have support channels | `/thoth-config link` | | Changed settings on the website | `/thoth autoconfig` | | Not sure if you are done | `/thoth-config view` | Full walkthrough: [Setup guide](https://docs.thothsupport.dev/getting-started/setup). --- ## Escalation Source: https://docs.thothsupport.dev/discord/escalation # Escalation Escalation moves a ticket from "bot is handling it" to "a human needs to step in." ## How users escalate Every ticket message area includes a **Request human** button. When clicked: - The ticket is flagged for staff attention. - Depending on your setup, staff may be notified in the `staff-review` channel or by direct mentions. - Thoth will stop trying to answer until staff engage. ## Automatic escalation Thoth escalates on its own when: - It cannot find a sufficiently confident answer in your knowledge base. - The conversation indicates a human-only action (refunds, account changes, sensitive issues, etc.). - You have configured behavior that requires a human for certain signals. Escalated tickets remain in the same private channel. Staff reply there directly. ## Staff reply behavior Once any staff member sends a message in a ticket, Thoth pauses before replying again (30 minutes by default). Change this in **Settings → Staff reply cooldown**: - A positive number (for example 15 or 30) — wait that many minutes after a staff message. - `0` — disable the time-based pause. Thoth will still avoid talking over active staff conversation using other signals. This prevents the bot from talking over your team while they are helping. ## Where staff see escalations - The ticket channel itself (always). - The `staff-review` management channel created by `/thoth autoconfig`, if you use it as a queue. - Direct pings or role mentions, if you configure them. ## After escalation Staff handle the ticket to resolution and run `/close` when done. The normal close flow (rating DM, transcript, possible tip) still applies. See [How tickets work](https://docs.thothsupport.dev/discord/how-tickets-work) for the full lifecycle and [Auto-learn](https://docs.thothsupport.dev/discord/auto-learn) for what happens to useful resolutions. --- ## Auto-learn Source: https://docs.thothsupport.dev/discord/auto-learn # Auto-learn Auto-learn turns resolved staff conversations into reusable knowledge with almost no extra work. ## How it works 1. A user opens a ticket and Thoth cannot fully resolve it, or the user requests a human. 2. Staff join the private channel and help. 3. Staff run `/close`. 4. If **Auto-learn** is enabled and the conversation meets minimum criteria (staff participated, enough back-and-forth), Thoth proposes a short **tip**. 5. The tip appears in your `learned-tips` channel with **Confirm** and **Remove** buttons. 6. Only confirmed tips are searched during future tickets and Playground tests. ## What makes a good tip Tips are short, specific, and scoped. Good examples: - "Refunds over $50 require a manager approval code from the #refunds channel." - "Password resets for school accounts are handled at help.school.edu/reset." - "Our Enterprise plan includes priority queueing and a dedicated channel." Tips are not a replacement for long documentation. Use **Knowledge** for reference material and procedures. Use tips for the answers your staff repeat in tickets. ## Requirements Auto-learn only suggests a tip when: - A staff member sent at least one message in the ticket. - The conversation has a minimum number of messages (very short threads are skipped). - Auto-learn is enabled in **Settings**. You can turn it off at any time. When it is off, you are responsible for all knowledge. ## Managing tips - In Discord, use the buttons in `learned-tips` to confirm or discard suggestions quickly. - In the dashboard, go to **Tips** to: - Edit the wording of a tip - Merge near-duplicates - Remove outdated tips - Browse tips by source ticket Changes in the dashboard take effect immediately for future searches. ## Relationship to Knowledge | Source | Best for | Example | |--------|----------|---------| | Knowledge (upload, paste, URL) | Reference docs, procedures, product details | "How to connect a new integration" | | Tips (auto-learn or manual) | Repeated answers from real tickets | "The staging key expires every 6 hours" | Both are searched together when Thoth answers a question. ## Disabling or resetting Turn **Auto-learn** off in **Settings** if you prefer a fully manual knowledge base. Existing tips remain searchable until you remove them. See [Tips](https://docs.thothsupport.dev/dashboard/tips) and [Knowledge](https://docs.thothsupport.dev/dashboard/knowledge) for how to curate what Thoth knows. --- ## Overview Source: https://docs.thothsupport.dev/dashboard/overview # Dashboard overview The dashboard is where you configure and inspect Thoth. Day-to-day support still happens in Discord. Sign in at [thothsupport.dev](https://thothsupport.dev) with the Discord account that has Manage Server on the target server. ## Server navigation Use the server switcher to move between servers you manage. Each server has its own tickets, knowledge, tips, settings, custom tools, billing, and team. ## Pages at a glance | Page | Primary purpose | Common tasks | |------|-----------------|--------------| | **Tickets** | Review history | Open transcripts, search past issues, check CSAT | | **Knowledge** | Curate what Thoth searches | Upload docs, paste text, add/sync URLs, test in Playground | | **Custom tools** | Give Thoth live data access | Create webhook-backed lookups (orders, accounts, status). See [Custom tools](https://docs.thothsupport.dev/dashboard/custom-tools) — SDK and demo in [thoth-open](https://github.com/KieranHolroyd/thoth-open). | | **Tips** | Curate learned answers | Edit, merge, or remove tips from auto-learn | | **Insights** | Understand performance | Spot top questions, deflection rate, knowledge gaps | | **Settings** | Control behavior | Ticket types, staff roles, business hours, cooldowns, voice | | **Billing** | Plan and usage | View usage, upgrade, manage subscription | | **Team** | Dashboard access | Invite teammates, assign roles | ## How it fits together - **Discord is the support surface.** Users open tickets, talk, and get help there. - **The dashboard is the control surface.** You upload docs, tune settings, review what happened, and connect tools. - **Autoconfig bridges the two.** After you change ticket types or staff roles, run `/thoth autoconfig` once in Discord to create or update channels and the ticket panel. ## Quick start from the dashboard 1. Go to **Settings** and define staff roles and at least one ticket type. 2. Run `/thoth autoconfig` in Discord. 3. Go to **Knowledge**, add a few key docs, and test questions in **Playground**. 4. Use **Insights** after some real tickets to see what to add next. See [Setup](https://docs.thothsupport.dev/getting-started/setup) for the full flow. --- ## Tickets Source: https://docs.thothsupport.dev/dashboard/tickets # Tickets The **Tickets** page is your archive and audit trail for support on this server. ## What you see - Open and recently closed tickets - Ticket type, user, status, and timestamps - CSAT rating (👍 / 👎) when available - Quick links to the full transcript ## What you can do - Search and filter by user, type, date range, or outcome - Open a ticket to view the full message history - Download or view the transcript for any closed ticket - Jump to the original Discord channel when it still exists ## Transcripts and retention When staff run `/close`: - A full transcript (messages, timestamps, participants) is saved. - The transcript is posted to your `ticket-transcripts` Discord channel. - The transcript is available in the dashboard regardless of whether the Discord channel still exists. Control how long transcripts are kept in **Settings → Transcript retention**. After that window, they are permanently deleted. The default is 30 days; increase it if you need longer records for audits or training. ## Relationship to Discord - **Live work happens in Discord.** Reply to users and run `/close` there. - **Review and export happens here.** Use the dashboard when you want to look something up later, share a transcript with someone who was not in the channel, or analyze patterns. See [How tickets work](https://docs.thothsupport.dev/discord/how-tickets-work) for the close flow and ratings. See [Insights](https://docs.thothsupport.dev/dashboard/insights) for aggregate views of deflection, top questions, and CSAT trends. --- ## Knowledge Source: https://docs.thothsupport.dev/dashboard/knowledge # Knowledge The knowledge base is the primary source Thoth searches when answering tickets and Playground questions. ## What counts as knowledge - Uploaded files (PDF, Markdown, plain text) - Pasted text blocks with an optional title - Synced URLs that Thoth re-fetches on a schedule All content is chunked, embedded, and stored per server. Nothing is shared across servers. ## Adding content ### Upload Drop one or more documents. Thoth extracts text and indexes it. Re-upload a file to refresh it. ### Paste Paste documentation, answers, or notes directly. Give it a title so you can find it later. Good for internal runbooks or short procedures that are not in a public doc. ### URL Add a publicly accessible page. Thoth will fetch it and re-sync on a schedule based on your plan. | Plan | Max URL sources | Refresh frequency | |------|-----------------|-------------------| | Free | 1 | Every 24 hours | | Plus | 5 | Every hour | | Enterprise | 50 | Every 15 minutes | If a URL fails to sync, the status column will show an error. Common causes: - The page requires login or is behind a firewall. - The site blocks scrapers or returns non-HTML content. - The URL redirects through intermediate pages that eventually require auth. Fix the URL or the page's visibility, then trigger a manual re-sync from the row actions. ## The ingest command You can also add short notes straight from Discord: ``` /ingest content:Your text here title:Optional title ``` This is handy for capturing something that just came up in a ticket that you want available immediately. For larger or structured content, prefer the dashboard. ## Playground **Playground** is the place to test how Thoth will actually behave. - Type a question the way a user would. - See the answer Thoth would give. - See exactly which chunks were retrieved and their scores. - See any custom tool calls and their results. Use Playground to: - Validate that new docs produce good answers before you rely on them. - Debug why a certain question is not answered well. - Test the effect of rephrasing or splitting docs. - Verify that a custom tool is invoked when it should be. Do not use `/thoth askgpt` for this. `askgpt` is a general chat with the model; it ignores your knowledge base and consumes AI quota. ## Tips vs long-form knowledge Knowledge is for reference material and procedures. Tips (from auto-learn or manual entry) are for short, repeated answers. Both are searched together. See [Tips](https://docs.thothsupport.dev/dashboard/tips) and [Auto-learn](https://docs.thothsupport.dev/discord/auto-learn). ## Keeping knowledge healthy - Remove or update stale content. - Split very long documents into focused sections when answers are weak. - Watch **Insights → Knowledge gaps** for escalations where Thoth had nothing relevant to retrieve. - Use Playground regularly when you add or change docs. Related: [Tips](https://docs.thothsupport.dev/dashboard/tips), [Auto-learn](https://docs.thothsupport.dev/discord/auto-learn), [Insights](https://docs.thothsupport.dev/dashboard/insights) (especially Knowledge gaps), [Commands](https://docs.thothsupport.dev/discord/commands) (`/ingest`). --- ## Custom tools Source: https://docs.thothsupport.dev/dashboard/custom-tools # Custom tools Custom tools let Thoth fetch live data from *your* systems during tickets and Playground tests by calling webhooks you control. You keep your API keys. Thoth only stores an encrypted signing secret and optional outbound headers. Custom tools are available on all plans: **Free** (2 per server), **Plus** (10 per server), and **Enterprise** (25 per server). ## The idea When a user asks something like "Where is order ORD-42?", Thoth can call a tool you defined instead of guessing or saying it does not know. You define: - A stable name (for example `check_order_status`) - A description the model uses to decide when to call it - A JSON parameter schema (what arguments are required or allowed) - A webhook URL that you implement - Optional context to include (Discord user ID, ticket ID, subject, tags) - Optional extra outbound headers (API keys you want sent on every call, stored encrypted) Thoth compiles that into a tool the model can call at runtime. ## Request and response When the model decides to use the tool, Thoth POSTs a signed JSON payload to your HTTPS endpoint. ### Request body ```json { "tool": "check_order_status", "guildId": "123456789012345678", "ticketId": 42, "discordUserId": "987654321098765432", "channelId": "111222333444555666", "ticketSubject": "Where is my order?", "ticketTags": ["billing"], "arguments": { "orderId": "ORD-42" }, "timestamp": 1710000000 } ``` Required fields: `tool`, `guildId`, `arguments`, `timestamp`. Context fields (`ticketId`, `discordUserId`, `channelId`, `ticketSubject`, `ticketTags`) are included only when enabled for that tool in the dashboard. ### Request headers | Header | Value | | --- | --- | | `Content-Type` | `application/json` | | `Authorization` | `Bearer ` | | `X-Thoth-Signature` | `t=,v1=` | | `X-Thoth-Tool-Id` | Tool UUID from the dashboard | Any outbound headers you configure in the dashboard are sent on every call (values are stored encrypted and never shown again). ### Response rules - Return a small JSON object or array on success (HTTP 2xx). - Return 4xx with a short error JSON on expected failures; Thoth will surface a safe message. - Keep responses under 64 KB and aim for low latency (10 second timeout). For a walkthrough of the architecture, see the [companion blog post](https://blog.thothsupport.dev/remote-tool-calling-with-custom-tools). ## Verify signatures Thoth signs each webhook with HMAC-SHA256 over `timestamp + "." + raw JSON body`. Always verify the signature (and/or the Bearer token) before acting, and reject timestamps older than five minutes. Use the **raw request body string** when verifying. Do not re-serialize parsed JSON. ### Node.js: `@thothsupport/webhook` Thoth publishes a small npm package for Node.js webhook handlers. Source and examples live in [thoth-open](https://github.com/KieranHolroyd/thoth-open) (`packages/webhook`). ```bash npm install @thothsupport/webhook ``` ```typescript import { verifyThothWebhook, type ThothWebhookPayload } from '@thothsupport/webhook'; const secret = process.env.THOTH_SIGNING_SECRET!; export async function handleWebhook(request: Request): Promise { const rawBody = await request.text(); const signature = request.headers.get('X-Thoth-Signature') ?? undefined; const authorization = request.headers.get('Authorization') ?? undefined; if ( !verifyThothWebhook({ rawBody, signatureHeader: signature, authorizationHeader: authorization, secret }) ) { return Response.json({ error: 'Invalid signature' }, { status: 401 }); } const payload = JSON.parse(rawBody) as ThothWebhookPayload; // Look up data and return JSON return Response.json({ status: 'ok', tool: payload.tool }); } ``` Package reference: [npm](https://www.npmjs.com/package/@thothsupport/webhook) · [source on GitHub](https://github.com/KieranHolroyd/thoth-open/tree/main/packages/webhook) `verifyThothWebhook` accepts: | Option | Required | Description | | --- | --- | --- | | `rawBody` | yes | Raw request body string | | `signatureHeader` | yes | Value of `X-Thoth-Signature` | | `authorizationHeader` | no | Value of `Authorization`; bearer token must match `secret` when present | | `secret` | yes | Signing secret from the dashboard | | `maxAgeSeconds` | no | Max age for timestamp (default: 300) | ### Other languages To verify manually: 1. Parse `X-Thoth-Signature` as `t=,v1=`. 2. Reject if `abs(now - t) > 300`. 3. Compute `HMAC-SHA256(secret, t + "." + rawBody)` as lowercase hex. 4. Compare with `v1` using a constant-time comparison. 5. Optionally require `Authorization: Bearer ` to match as well. ## Security model **You are responsible for:** - Verifying signatures on every request - Protecting your signing secret and any outbound header values - Enforcing your own authorization and rate limits inside the webhook - Returning only the fields the support experience needs - Never putting instructions or prompt-like content in tool responses **Thoth provides:** - HTTPS-only URLs and SSRF protections (no localhost or private IP ranges) - Encrypted storage of secrets and headers at rest - Per-guild and per-tool rate limits - A hard cap on tool calls per model turn - Explicit treatment of tool output as *untrusted context* in the AI prompt ## Demo application Thoth ships a mock webhook server you can use to try custom tools without building your own backend. It backs a fictional pizzeria plus generic SaaS lookups (orders, subscriptions, licenses, accounts). | | | | --- | --- | | **Hosted demo** | [https://demo.thothsupport.dev/](https://demo.thothsupport.dev/) | | **Import bundle** | [demo-custom-tools.json](https://demo.thothsupport.dev/demo-custom-tools.json) | | **Source** | [thoth-open](https://github.com/KieranHolroyd/thoth-open) (`apps/demo-custom-tools-server`) | ### Quick start 1. In the dashboard, open **Custom tools** → **Import** and upload the bundle (or paste the JSON from the link above). 2. After import, open each tool and set the **Webhook URL** to your demo server (`https://demo.thothsupport.dev/` when using the hosted demo, or `http://localhost:8787/` when running locally). 3. Copy the one-time **signing secret** shown after import (or rotate one from the tools page). 4. If you run the demo server yourself, set `THOTH_SIGNING_SECRET` in its environment to that same secret. 5. Enable one or two tools, use **Test tool** on the detail page, then try a Playground or live ticket question. The bundle defines eight tools — six **read** lookups and two **action** tools that require staff approval on live tickets. ### Read tools (run immediately) | Tool | Example user question | Test arguments | Sample response | | --- | --- | --- | --- | | `search_menu` | "How much is a Margherita?" | `{ "query": "margherita" }` | Menu items with prices and categories | | `check_order_status` | "Where is order ORD-42?" | `{ "orderId": "ORD-42" }` | Status, carrier, tracking, ETA | | `check_subscription` | "Is demo@example.com still on Pro?" | `{ "email": "demo@example.com" }` | Plan, status, renewal date | | `validate_license` | "Is THOTH-DEMO-2026 still valid?" | `{ "licenseKey": "THOTH-DEMO-2026" }` | Validity, product, expiry, seats | | `account_status` | "Is player123 banned?" | `{ "username": "player123" }` | Account standing and restrictions | | `get_store_info` | "What time do you close?" | `{}` | Hours, address, phone, promotions | **Demo order IDs** (for `check_order_status`): | Order | Status | Notes | | --- | --- | --- | | `ORD-42` | shipped | UPS tracking, ETA 2026-06-24 | | `ORD-100` | preparing | Good candidate for cancellation | | `ORD-88` | out_for_delivery | Demo Delivery driver en route | | `ORD-15` | delivered | Cannot be cancelled | | `ORD-404` | cancelled | Already cancelled | Example webhook response for `check_order_status`: ```json { "found": true, "orderId": "ORD-42", "status": "shipped", "carrier": "UPS", "trackingNumber": "1Z999AA10123456784", "eta": "2026-06-24" } ``` Other demo fixtures worth trying: - Subscriptions: `trial@example.com` (trialing) - Licenses: `THOTH-EXPIRED` (invalid) - Accounts: `banned_user` (banned) - Menu: `{ "category": "1" }` for all pizzas ### Action tools (`create_order`, `cancel_order`) #### `create_order` | | | | --- | --- | | **Type** | Action — staff must approve before the webhook runs on live tickets | | **Example question** | "Can I order a large Margherita and garlic bread for collection? Name is Jamie Lee." | | **Test arguments** | `{ "customerName": "Jamie Lee", "items": "Margherita (large), Garlic Bread (medium)", "fulfillment": "collection" }` | Creates a new in-memory order with status `received`. After staff approve on a live ticket, use `check_order_status` with the returned `orderId` (e.g. `ORD-101`) to verify it. Example response after approval: ```json { "ok": true, "found": true, "orderId": "ORD-101", "status": "received", "customerName": "Jamie Lee", "items": ["Margherita (large)", "Garlic Bread (medium)"], "total": 15, "fulfillment": "collection", "estimatedReady": "2026-06-21T19:35:00Z", "message": "Order ORD-101 created for collection." } ``` #### `cancel_order` | | | | --- | --- | | **Type** | Action — staff must approve before the webhook runs on live tickets | | **Example question** | "Please cancel my order ORD-100" | | **Test arguments** | `{ "orderId": "ORD-100", "reason": "Customer changed plans" }` | On a **live ticket**, the AI submits a pending approval instead of calling the webhook. Staff see the proposed `orderId` and `reason` on the ticket detail page and click **Approve & run** or **Reject**. After approval, the demo server marks the order `cancelled` in memory. Example response after approval: ```json { "ok": true, "found": true, "orderId": "ORD-100", "status": "cancelled", "cancelReason": "Customer changed plans", "message": "Order ORD-100 has been cancelled." } ``` The demo rejects cancellation when the order is already `delivered` or `cancelled` — try `{ "orderId": "ORD-15" }` in **Test tool** to see the error shape. Dashboard **Test tool** and **Playground** still call the webhook directly (no approval gate), so you can verify the endpoint before testing the full ticket flow. ## Testing tools 1. Create the tool in the dashboard — or **import** the [demo bundle](https://demo.thothsupport.dev/demo-custom-tools.json) to get pre-built examples (see [Demo application](#demo-application) above). 2. Copy the one-time signing secret into your environment (and into `THOTH_SIGNING_SECRET` if you self-host the demo server). 3. Use the **Test tool** button on the tool detail page with the fixtures from the demo (e.g. `{ "orderId": "ORD-42" }` for `check_order_status`). 4. In **Playground**, ask a question that should trigger the tool — e.g. "Where is order ORD-42?" or "Cancel order ORD-100" — and confirm the end-to-end behavior. Only after both the direct test and a Playground flow look correct should you rely on the tool in production tickets. ## Call logging and sampling The tool detail page shows recent calls with source (ticket / playground / test), latency, status, and any error. You can set a **call log sampling rate** (0–100%): - Failures and dashboard tests are always logged. - Successful production calls (tickets and Playground) are sampled according to the rate. - Billing usage counts every successful production call regardless of sampling. Lower the rate for high-volume tools to reduce storage growth while still seeing failures and test traffic. ## Using tools in answers Thoth is instructed to: - Use tool results as one input among others. - Prefer documentation-backed claims when possible. - Never follow directives found inside tool responses. Design your tools to return factual data, not instructions. ## Action tools (approval required) Custom tools can be **read** (default) or **action**: - **Read tools** run immediately when the AI calls them during a ticket. Use for lookups (order status, subscription tier, license validity). The demo tools `search_menu`, `check_order_status`, `check_subscription`, `validate_license`, `account_status`, and `get_store_info` are all read tools. - **Action tools** create a **pending approval** on the ticket instead of calling your webhook. Staff review the proposed arguments in the dashboard and click **Approve & run** or **Reject**. The webhook only fires after approval. The demo tools `create_order` and `cancel_order` are action tools. Use action tools for mutations: refunds, password resets, subscription changes, order cancellations, and anything else that changes state in your systems. During a ticket the AI is told the action is pending — it must not tell the user the action is complete until staff approve it. Dashboard **Test tool** and Playground still call the webhook directly so you can verify your endpoint without going through approval. Every request, approval, rejection, and executed call is logged on the ticket timeline. **Example flow with the demo:** a user asks to place an order for collection. Thoth calls `create_order` with `{ "customerName": "Jamie Lee", "items": "Margherita (large), ...", "fulfillment": "collection" }`, creates a pending approval, and tells the user staff will confirm it. After approval the webhook returns `{ "ok": true, "orderId": "ORD-101", "status": "received", ... }`. A follow-up `check_order_status` call shows the new order. To cancel an existing order: a user asks to cancel `ORD-100`. Thoth calls `cancel_order` with `{ "orderId": "ORD-100", "reason": "..." }`, creates a pending approval, and tells the user a team member will review it. Staff approve in the dashboard; the demo webhook runs and returns `{ "ok": true, "status": "cancelled", ... }`. A follow-up `check_order_status` call for the same ID then shows `cancelled`. ## Operator prerequisites Before anyone on your team can create custom tools, the Thoth API environment must have `SECRETS_ENCRYPTION_KEY` set (a base64-encoded 32-byte secret). Losing this key means existing secrets can no longer be decrypted; you would need to rotate them after restoring a new key. See the in-app custom tools documentation and your deployment notes for how to generate and configure this key. --- ## Tips Source: https://docs.thothsupport.dev/dashboard/tips # Tips Tips are short, high-signal answers that Thoth can use alongside your longer documentation. ## Where tips come from - **Auto-learn** — after a staff-resolved ticket closes, Thoth may propose a concise tip. Staff confirm or discard in the `learned-tips` Discord channel. - **Manual** — you can create tips directly in the dashboard when you notice a repeated question that does not belong in a long doc. - **Import** — bulk-add tips from a JSON or JSONL file on the **Tips** page. Only confirmed tips are searched during tickets and Playground tests. ## Tips vs Knowledge | | Tips | Knowledge | |--|------|-----------| | Length | 1–3 sentences | Paragraphs to pages | | Source | Resolved tickets or manual entry | Uploads, pastes, synced URLs | | Update cadence | Frequent, small edits | Occasional, larger updates | | Example | "Staging tokens expire every 6 hours" | Full guide on generating and rotating tokens | Use the right tool for the job. A 10-page integration guide belongs in Knowledge. The three-line gotcha your team repeats belongs in a tip. ## Managing tips in the dashboard On the **Tips** page you can: - Browse all confirmed and pending tips - Edit the title and body - Merge near-duplicate tips - Delete tips that are outdated or incorrect - Import and export tips in bulk - See which ticket a tip originally came from (when applicable) Edits are live immediately. ## Managing tips in Discord When auto-learn proposes a tip, it appears in your `learned-tips` channel with buttons: - **Confirm** — makes the tip searchable - **Remove** — discards the suggestion You can still edit or remove it later from the dashboard. ## Quality guidelines Good tips are: - Specific and verifiable - Free of time-sensitive details that will rot quickly - Written as the answer, not a prompt or instruction to the model If a "tip" is growing long or has many conditional branches, consider moving it into a proper document in Knowledge and linking to it. ## Import and export Use **Export tips** to download all tips as a JSON bundle. Use **Import tips** to bulk-add tips from: - A Thoth tips export file (`schemaVersion: 1`) - A JSON array of `{ "content": "...", "question": "..." }` objects - A JSONL file with one tip per line (`content` or legacy `tip` field) When importing into a guild that already has matching tips, choose **Skip duplicates** (default) or **Stop import** to fail the whole batch. ## Turning auto-learn off If you prefer a fully manual knowledge base, disable **Auto-learn** in **Settings**. Existing tips remain searchable until you remove them. You can continue to create tips manually. ## Batch learning from transcripts The **Learn from transcript channel** section on the Tips page scans a Discord channel for closed-ticket HTML transcript links and runs tip extraction over them in bulk using OpenAI Batch. ### What it costs Each HTML transcript page the AI successfully processes is billed at **£0.01 per page** on Plus and Enterprise. Important details: - **Separate from AI replies** — batch learning does not use your included monthly AI reply quota. - **Per HTML page processed** — you are charged when the AI runs on a transcript page, not when a tip is saved. Pages with no extractable tips still count if the AI ran successfully. - **Skipped pages are free** — already-learned tickets, transcripts without a staff reply, and tickets that are too short are not sent to the AI and are not billed. - **Failed API calls are free** — if OpenAI fails to process a page, you are not charged for it. - **Free plan** — usage billing requires a Plus or Enterprise subscription. After you scan a channel, the dashboard shows an **estimated cost** for the run (page count × unit price). Use **Scan channel** before **Run batch learning** to review the estimate. Usage appears on your Stripe invoice under batch tip learning. See [Billing](https://docs.thothsupport.dev/dashboard/billing) for current rates and usage. --- ## Insights Source: https://docs.thothsupport.dev/dashboard/insights # Insights **Insights** shows how Thoth is performing for this server over the last 30 days. Use it to find the highest-leverage improvements to your content and process. ## Key metrics | Metric | What it means | What to do about it | |--------|---------------|---------------------| | Deflection rate | Share of tickets resolved by the bot without staff intervention | High and stable is good. Sudden drops often mean a content gap or a change in what users ask. | | Top questions | The questions asked most often across tickets | If the same question keeps appearing and deflection is low, add or improve the matching doc or tip. | | Tips learned | New tips proposed by auto-learn | A healthy signal that staff are resolving real issues. Review them promptly so they become searchable. | | Knowledge gaps | Tickets where Thoth escalated and had no relevant content to retrieve | The highest priority list for new docs. Sort by frequency. | | CSAT (👍 / 👎) | User rating after close | Low or declining CSAT with high deflection can mean answers are technically correct but unhelpful in tone or completeness. | ## Knowledge gaps are gold When a ticket escalates and Thoth reports zero relevant chunks, that is a gap you can close. Common patterns: - A new product area or feature with no docs yet - An internal process only documented in chat or a private Notion - An error message or code path you have never written about Add the missing content, test it in **Playground**, and the next similar ticket should deflect. ## Using Insights with other pages - See a repeated question → go to **Knowledge** or **Tips** and add or improve the answer - See a gap cluster → write the doc users are missing - See CSAT dropping on a particular type → review recent transcripts and Playground the same questions - See many tips being learned → make sure someone is confirming the good ones ## Time window All numbers are for the trailing 30 days for this server. For longer-term trends or cross-server views, export data or look at your own analytics on top of the transcripts. See [Tickets](https://docs.thothsupport.dev/dashboard/tickets) for individual histories and [Settings](https://docs.thothsupport.dev/dashboard/settings) for the controls that influence deflection and tone. --- ## Settings Source: https://docs.thothsupport.dev/dashboard/settings # Settings **Settings** controls how Thoth behaves for this server. **Setting up for the first time?** Use the [setup guide](https://docs.thothsupport.dev/getting-started/setup) — most teams configure basics in Discord with `/thoth-config setup` or `/thoth-config link`. Come back here for advanced options. Most changes on this page require you to run `/thoth autoconfig` in Discord to create or update channels and the ticket panel (unless you used `/thoth-config setup` or `/thoth-config link`, which apply changes immediately). ## Staff roles Select the Discord roles that should be treated as support staff. Staff: - Can see every ticket channel - Cause the bot to pause replies while they are active (subject to cooldown) - Can run staff-only commands like `/close` Add the smallest set of roles that actually handle support. Broad @everyone or large member roles will give too many people access to private tickets. ## Ticket types Ticket types define the options users see in the panel and how tickets are organized. For each type you can set: - **Label** — what users click (for example "General", "Billing", "Enterprise") - **Description** — optional helper text shown near the button - **Enabled** — whether the type appears in the panel - **Category** — the Discord category that will contain ticket channels for this type (created or adopted on autoconfig) - **Required roles** — if set, only members with at least one of these roles can open this type - **Max open per user** — default 1. Set to 0 for unlimited. Prevents duplicate conversations. You need at least one enabled type before `/thoth autoconfig` will succeed. After changing types, categories, or role restrictions, run `/thoth autoconfig`. ## Business hours Business hours let Thoth behave differently when your team is offline. Options: - **Enable business hours** — turn the feature on - **Timezone** — used to interpret the schedule - **Weekly schedule** — per-day open/close windows - **Away message** — sent to users who write outside hours (when enabled) - **Allow tickets outside hours** — whether users can still open tickets when you are closed - **Skip AI outside hours** — when on, Thoth sends the away message instead of searching and replying Even when AI is skipped, tickets still land in the normal categories and staff can work them. Test your away message in **Playground** if you want to see how it will read. ## Auto-learn When enabled, resolved tickets with staff participation can produce short tip suggestions. - On — Thoth proposes tips; staff confirm or remove in the `learned-tips` channel and in the dashboard - Off — you are responsible for all knowledge; no automatic suggestions are created You can edit or remove any tip later regardless of how it was created. See [Auto-learn](https://docs.thothsupport.dev/discord/auto-learn) and [Tips](https://docs.thothsupport.dev/dashboard/tips). ## Staff reply cooldown After a staff member sends a message in a ticket, Thoth waits before it will reply again. - Default: 30 minutes - Range: 0–1440 minutes - 0 means "no time-based pause" Thoth also uses other signals to avoid interrupting active staff conversation. Most teams use 15–60 minutes. ## Response voice Provide an optional style or tone instruction for bot replies, for example: - "Friendly and concise" - "Formal, avoid contractions" - "Short sentences, bullet points when listing steps" This is a soft steer. Test the effect in **Playground** after changing. Overly long or contradictory instructions can hurt answer quality. ## Transcript retention Set how many days closed ticket transcripts are kept (both in storage and for dashboard access). After the period elapses, transcripts are permanently deleted. Common choices: - 30 days for normal operations - 90 or 365 days if you need audit trails or training data ## Management channels When you run `/thoth autoconfig`, Thoth creates or adopts three channels under a "Thoth Staff" category: - `ticket-transcripts` — full transcripts of closed tickets - `staff-review` — escalations and items for human attention - `learned-tips` — auto-learn suggestions with confirm/remove buttons You can relink these later in Settings if you want to use existing channels. Changing them usually requires another `/thoth autoconfig` to fully apply. ## Applying changes After you save Settings, run: ``` /thoth autoconfig ``` in Discord. This is what actually creates categories, channels, and the ticket panel that users click. You can run it as often as you like. It is safe to re-run on an existing setup. --- ## Billing Source: https://docs.thothsupport.dev/dashboard/billing # Billing Billing is per **Discord server** (guild). Each server has its own plan, subscription, usage quotas, and team seats. ## Plans | Resource | Free | Thoth Plus (£15/mo) | Enterprise (contact us) | |----------|------|---------------------|-------------------------| | Tickets per month | 50 | 1,000 | Unlimited | | AI replies per month | 10 | 300 | 2,000 | | Doc pages indexed per month | 1,000 | 25,000 | 100,000 | | URL sources (live sync) | 1 | 5 | 50 | | Team members | 2 | 10 | 50 | | Custom tools | 2 | 10 | 25 | **Thoth Plus** is the self-serve paid plan. On Plus, AI replies beyond the 300 included each month are billed as overage at **£0.10 per reply** — there is no hard cap, so the bot keeps answering. **Enterprise** is a sales-assigned tier with tailored limits and pricing, including optional **zero-access encryption** (your Discord support data encrypted at rest with keys wrapped in your own KMS; Thoth operators cannot read ticket or knowledge content in platform admin). Enterprise is assigned by the Thoth team (contact sales), not self-serve checkout. See [Zero-access encryption](https://docs.thothsupport.dev/dashboard/zero-access) for what is protected, how setup works, and what your security team should prepare. Limits reset at the start of each calendar month. On Free, hitting a hard limit blocks the corresponding action (new tickets, AI replies, or indexing) until the next cycle or an upgrade. ## What counts as a ticket A ticket counts the moment a user successfully opens one from the panel. Test channels that staff create manually may not count, depending on the flow. ## What counts as an AI reply Each time Thoth generates a support-oriented completion in a ticket or Playground context, it counts against the AI reply quota. General chat via `/thoth askgpt` also consumes AI quota. Knowledge indexing and embedding jobs are tracked separately from AI replies. ## Viewing usage Open **Billing** for the server. The page shows current month consumption for: - Tickets opened - AI replies generated - Pages indexed - Any overage, if applicable If you are close to a limit, you will see warnings in the dashboard and may see graceful degradation (for example, the bot will escalate instead of answering when out of AI replies). ## Upgrading and managing 1. Select the server in the dashboard. 2. Open **Billing**. 3. Choose a plan and complete checkout. Use **Manage subscription** to: - Update payment method - Change plan - Download invoices - Cancel (you keep access until the end of the paid period) Plan changes are effective immediately for limits and features on that server. ## Team access Invite teammates under **Team** for the same server. Team members can access the dashboard for that server according to their role. Dashboard access is separate from Discord staff roles — assign staff roles in **Settings** for in-ticket permissions. See [Team members](https://docs.thothsupport.dev/dashboard/team). --- ## Zero-access encryption Source: https://docs.thothsupport.dev/dashboard/zero-access # Zero-access encryption (Enterprise) **Zero-access encryption** is an Enterprise feature. Your Discord support data is encrypted at rest, wrapped in **your** key management system (KMS). Thoth operators cannot read ticket content, transcripts, knowledge, or user identifiers in our internal admin tools—even when supporting your account. Your team keeps working exactly as before in Discord and in your server’s dashboard. Encryption and decryption happen automatically for authorized guild operations. What changes is who can see plaintext outside your organization. ::: info Contact sales Zero-access encryption is enabled by the Thoth team for Enterprise servers (not self-serve checkout). If you need zero-access encryption, [contact us](mailto:support@thothsupport.dev) or reach out through your account channel. ::: ## What problem this solves Most SaaS products can read customer data at rest. That is fine for many teams, but regulated or security-sensitive organizations often need a stronger guarantee: **the vendor should not be able to browse support conversations in their own backend.** Zero-access encryption is built for that requirement. It does not replace your Discord permissions or dashboard access controls—it adds a layer so Thoth’s platform staff are locked out of content, while your guild team retains normal access. ## What you control | You hold | Purpose | |----------|---------| | **KMS key** | Wraps and unwraps a per-server data encryption key (DEK). Without your KMS, encrypted blobs cannot be read. | | **LLM API key** | Powers AI replies and embeddings for your server. Stored encrypted; used only for your guild’s requests. | Thoth never needs plaintext access to your KMS or LLM credentials after setup. Credentials you provide are stored encrypted in our database. ## What stays protected When zero-access is enabled for a server, the following categories are encrypted at rest: ### Support conversations - Ticket message content, author names, and attachment URLs - Ticket metadata (for example subject lines) - Ticket event messages and actor references - Transcript previews and archived transcript files in object storage ### Knowledge base - Document titles and body text (uploads, pasted content, synced docs, learned tips) ### Feedback and quality signals - CSAT comments and submitter references - Tip extraction content and reasoning text - User feedback messages and display names (for members of your server) ### Identity handling - Discord user IDs are stored as **pseudonyms** (one-way tokens for queries) with the real ID kept in an encrypted vault. This preserves ticket workflows without storing raw IDs in searchable columns. ### What is not encrypted by default - **Vector embeddings** used for knowledge search remain plaintext in the database by default. This keeps semantic search fast and accurate. A stricter mode to encrypt embeddings is available at setup time; it trades some search convenience for maximum at-rest protection (see [Embeddings](#embeddings-and-search) below). Non-sensitive operational fields (timestamps, ticket status, channel IDs, billing counters, etc.) remain unencrypted so the product can function. ## What Thoth operators cannot do For zero-access servers, Thoth’s internal **platform admin** views show redacted placeholders instead of real content—tickets, messages, knowledge, tips, and feedback appear as `[encrypted — zero-access tier]` or similar. Additionally, for these servers we disable: - Recording AI prompt/response content in error monitoring - Feedback webhook payloads that would leak message text - Other telemetry paths that would store customer content outside your encryption boundary Your guild’s own dashboard and Discord flows continue to decrypt data for authorized team members and the bot at runtime. ## How encryption works (plain language) Each Enterprise server with zero-access enabled gets its own **data encryption key** (DEK)—a random key used to encrypt fields and files. 1. When zero-access is enabled, Thoth generates a DEK. 2. The DEK is **wrapped** (encrypted) using your KMS key. Only the wrapped form is stored in our database. 3. When the bot or dashboard needs to read or write protected data, Thoth unwraps the DEK through your KMS (in memory), encrypts or decrypts the specific fields, and discards the key material from the process when done. ``` Your KMS key │ ▼ wraps / unwraps Per-server DEK ──► encrypts ticket text, knowledge, transcripts, etc. ``` If someone copied our database without access to your KMS, they would see ciphertext—not your users’ messages. Field-level encryption uses industry-standard **AES-256-GCM** envelopes. Each encrypted value is independently authenticated. ## Supported KMS providers During setup you choose where the DEK is wrapped: | Provider | Typical use | |----------|-------------| | **AWS KMS** | Production deployments on AWS; use an IAM role or supply credentials Thoth can use to `Encrypt`/`Decrypt`. | | **Google Cloud KMS** | GCP-hosted keys and workload identity. | | **Azure Key Vault** | Azure environments with Key Vault keys. | | **HashiCorp Vault** | Transit engine keys for teams standardizing on Vault. | | **Local (development only)** | Wraps DEKs with the platform `SECRETS_ENCRYPTION_KEY`. For staging and engineering—not for production customer data. | You provide: - **Key ID / ARN** (provider-specific identifier) - **Region** (where required, e.g. AWS) - **Optional credentials JSON** if Thoth cannot use ambient cloud IAM The setup wizard includes a **Test KMS connection** step that performs a wrap/unwrap cycle before anything is enabled. ## Bring your own LLM (BYOK) Enterprise servers with zero-access enabled use **your** LLM provider credentials for: - AI replies in tickets and related flows - Text embeddings for knowledge ingest and search (unless strict embedding encryption is enabled) Supported providers: **OpenAI** and **xAI**. You may supply a custom base URL if you use a proxy or compatible endpoint. Thoth’s shared platform API keys are not used for zero-access guilds. If your key is revoked or misconfigured, AI features for that server stop until you update credentials. ## Setup process Setup is performed by Thoth platform staff in the **Zero-access setup wizard** (Admin → Guild billing → **Set up encryption** for Enterprise servers). ### Before you start 1. **Enterprise plan** assigned to the server (contact sales). 2. **KMS key** created with permissions for Thoth to wrap and unwrap small payloads (the DEK). 3. **LLM API key** with sufficient quota for your expected ticket and knowledge volume. 4. **Maintenance window** for the one-time **backfill** that re-encrypts existing tickets, messages, knowledge, transcripts, and related rows. ### Wizard steps 1. **Overview** — Confirms prerequisites and explains the impact on operator access. 2. **Encryption keys** — KMS provider, key ID, region, optional credentials; test connection. 3. **LLM provider** — Provider, API key, optional base URL. 4. **Review** — Confirm settings; optional strict embedding encryption. 5. **Enable & backfill** — Turns on zero-access and encrypts historical data. You receive counts of tickets, messages, documents, and transcripts processed. If zero-access is already active, the same page allows **re-running the backfill** after key rotation or recovery operations. ### What we need from you Send your security or platform team’s preferred secure channel: - KMS provider and key identifier - Region (if applicable) - Whether Thoth should use IAM/workload identity or explicit credentials - LLM provider and API key (or a process to rotate keys through Thoth support) - Whether you require strict encrypted embeddings Thoth completes the wizard on your behalf and confirms backfill results. ## After enable: what changes for your team **In Discord** — No change. Users open tickets; staff reply; Thoth answers from knowledge as usual. **In your server dashboard** — No change for authorized team members. Tickets, knowledge, Playground, and transcripts display normally. **In Thoth platform admin** — Support staff cannot read your content when helping with billing or infrastructure issues. They can still see non-sensitive metadata (server name, plan, ticket counts, timestamps) to operate the platform. ## Embeddings and search Knowledge search relies on vector embeddings. By default on zero-access Enterprise servers, **document text is encrypted** but **embeddings are stored in plaintext** so pgvector similarity search continues to work without loading entire libraries into memory. ::: warning Residual semantic exposure Plaintext embeddings can leak approximate topic information to someone with database access, even if document text is encrypted. For most teams, encrypted content plus operator lockout is the right balance. ::: At setup you may enable **Encrypt knowledge embeddings** for maximum at-rest protection. In that mode, search behavior may differ (similarity runs after decrypting vectors in memory). Discuss trade-offs with Thoth before enabling in production. ## Key rotation and recovery - **LLM key rotation** — Provide a new API key through your Thoth contact; we update the encrypted credential without re-encrypting all content. - **KMS key rotation** — Coordinate with Thoth to re-wrap the server DEK with a new KMS key version and re-run backfill if needed. - **Loss of KMS access** — If your KMS key is deleted or permissions revoked, Thoth cannot unwrap the DEK. **Encrypted data becomes unrecoverable.** Treat your KMS key with the same care as a database backup encryption key. We recommend documenting which KMS key wraps each production server and including it in your disaster-recovery runbooks. ## Security review checklist Use this list when evaluating zero-access Enterprise internally: - [ ] Per-server DEK wrapped by customer-controlled KMS - [ ] Ticket, knowledge, transcript, and PII-class fields encrypted at rest - [ ] Discord IDs tokenized; raw IDs not stored in plaintext query columns - [ ] Thoth operator admin cannot decrypt guild content - [ ] AI and feedback telemetry disabled for content exfiltration paths - [ ] Customer-supplied LLM credentials; platform keys not used - [ ] One-time backfill encrypts historical data and R2 transcript objects - [ ] Embeddings strategy documented (default vs strict mode) ## Frequently asked questions ### Is zero-access the same as end-to-end encryption in Discord? No. Discord messages in ticket channels are visible to your staff and the bot under normal Discord permissions. Zero-access protects data **at rest in Thoth’s systems** and blocks **Thoth operator** access—not encryption of Discord’s own transport or your staff’s view. ### Can Thoth support debug a ticket content issue? Not by reading message bodies in admin. Support relies on your team’s description, reproducible steps, and non-content logs (errors, timestamps, configuration). For deep debugging you may temporarily reproduce in a non-zero-access staging server. ### Does encryption slow down tickets? Wrapping and field encryption add small overhead. In practice, ticket flows remain responsive; the backfill is the only operation that may take noticeable time on large histories. ### Can we enable zero-access encryption later? Yes. Assign Enterprise, complete the zero-access setup wizard, and run backfill. Plan the migration window with Thoth so existing data is encrypted before you rely on operator lockout. ### Can we disable zero-access encryption? Contact Thoth. Moving off zero-access requires a deliberate key and data migration plan; do not delete KMS keys while data is still encrypted. --- **Related:** [Billing](https://docs.thothsupport.dev/dashboard/billing) · [Settings](https://docs.thothsupport.dev/dashboard/settings) · [FAQ](https://docs.thothsupport.dev/help/faq) --- ## FAQ Source: https://docs.thothsupport.dev/help/faq # FAQ ## How do I set up Thoth from scratch? Follow the [setup guide](https://docs.thothsupport.dev/getting-started/setup). It is written for complete beginners. - **New server:** run `/thoth-config setup` in Discord (one form, done). - **Existing support channels:** run `/thoth-config link` in Discord. - **Prefer the website:** configure in dashboard **Settings**, then run `/thoth autoconfig` in Discord. You do not need the dashboard to get started. ## What is Thoth? AI support for Discord. Users open private ticket channels from a panel. Thoth replies from your documentation and learned tips. When it cannot help, it escalates to staff. Your team works in Discord; you configure and review in the dashboard. ## Do users need anything besides Discord? No. All support interactions happen in Discord. The dashboard is only for your team. ## How do I test what Thoth will answer? Use **Playground** on the **Knowledge** page. Type questions the way your users do. You will see the exact answer and which content was used. Do not rely on `/thoth askgpt` for this. It ignores your knowledge base. ## Why did Thoth not reply in a ticket? Common causes: - A staff member sent a message recently and the cooldown is still active. - The ticket has already escalated and staff are expected to handle it. - You are out of AI replies for the month on your current plan. - The bot does not have permission to send messages in that channel. - Business hours are configured to skip AI outside your support window. Check **Insights**, the ticket transcript, and **Billing** usage. Test the same question in Playground. ## Can a user have more than one open ticket? By default, one open ticket per user per ticket type. You can increase or remove this limit per type in **Settings**. ## How often do URL sources refresh? - Free: every 24 hours (1 URL source) - Plus: every hour (up to 5 URL sources) - Enterprise: every 15 minutes (up to 50 URL sources) See [Knowledge](https://docs.thothsupport.dev/dashboard/knowledge). ## What happens when I hit a limit? - Ticket limit — new tickets are blocked until the next month or you upgrade. - AI reply limit — Thoth will escalate instead of answering in tickets and Playground. - Indexing limit — new or refreshed content may be delayed until the next cycle. Limits reset monthly. See [Billing](https://docs.thothsupport.dev/dashboard/billing). ## Is billing per server? Yes. Each Discord server has its own plan and monthly quotas. Knowledge, tickets, tips, and settings are also isolated per server. See [Billing](https://docs.thothsupport.dev/dashboard/billing). ## What is zero-access encryption? Enterprise includes optional encryption at rest with **your** KMS key that blocks Thoth operators from reading your ticket and knowledge content in platform admin. Your team’s dashboard and Discord experience stay the same. It is enabled during Enterprise setup (contact sales). See [Zero-access encryption](https://docs.thothsupport.dev/dashboard/zero-access) for setup requirements and what is encrypted. ## Where do transcripts go? On `/close`, a transcript is posted to your `ticket-transcripts` channel and is available in the dashboard under **Tickets**. Retention is controlled in **Settings**. ## Can staff add someone to a ticket? Yes. Use `/add user:@someone` in the ticket channel. Staff and the ticket owner can add people; staff can also remove them with `/remove`. ## Do I need to run autoconfig after every setting change? - **First-time setup in Discord:** `/thoth-config setup` or `/thoth-config link` applies everything — no separate autoconfig step. - **Changes in the dashboard:** run `/thoth autoconfig` when you change ticket types, staff roles, categories, or management channels. - **Other settings** (cooldown, voice, auto-learn) take effect without autoconfig. --- ## Troubleshooting Source: https://docs.thothsupport.dev/help/troubleshooting # Troubleshooting Fixes for the most common issues. Within each section, work through the steps in order. ## Bot is not replying in a ticket Check in this order: 1. **Cooldown** — has a staff member sent a message in the last N minutes? Look at recent messages or lower **Staff reply cooldown** in Settings. 2. **Already escalated** — is the ticket marked for staff? If a human is expected, reply in the channel instead of waiting for the bot. 3. **Billing** — open **Billing** for the server. Are you out of AI replies or tickets for the month? 4. **Permissions** — does the bot have Send Messages and Read Message History in the ticket channel and the start channel? 5. **Business hours** — are you outside your configured hours with "skip AI" enabled? 6. **Content** — test the exact question in **Playground**. If there is no good answer, add or improve the relevant doc or tip. ## `/thoth autoconfig` or `/thoth-config setup` fails | Error or message | Likely cause | Fix | |------------------|--------------|-----| | Need Manage Server | You are not an admin on the Discord server | Run the command with a user who has Manage Server | | Missing **Manage Channels** (or other permissions) | The bot role is missing permissions | **Server Settings → Roles → Thoth** → enable the permissions listed in the error, then run the command again | | No enabled ticket types | No ticket types are enabled (dashboard path) | Enable at least one type in **Settings**, save, then run `/thoth autoconfig` — or use `/thoth-config setup` in Discord instead | | Category full | Discord category has too many channels (max 50) | Remove unused channels or pick a different category | | Ticket limit reached | You are at your plan's monthly ticket limit | Upgrade or wait for the next cycle | After fixing, run `/thoth-config setup`, `/thoth-config link`, or `/thoth autoconfig` again (whichever you used for setup). See the [setup guide](https://docs.thothsupport.dev/getting-started/setup) for step-by-step instructions. ## `/thoth-config link` found no channels - Your channel names may not match common patterns (`#support`, `#ticket-transcripts`, etc.). - **Fix:** run `/thoth-config setup` to create channels, **or** use the dashboard **Settings → Channels → Use channels this server already has** to map them manually, **or** rename channels to match common names and run `/thoth-config link` again. ## Ticket panel is missing or buttons do not appear - Run `/thoth-config view` and follow the “Get started” or “Finish setup” steps shown. - If you used the dashboard, save **Settings** and run `/thoth autoconfig`. - Confirm the bot can send messages in the start channel (check channel permissions and category overwrites). - Look for the panel message from Thoth; if it is missing, setup may have failed — check for permission errors when you ran setup. ## A URL source will not sync - The page must be publicly crawlable without a login. - Check the row status on the **Knowledge** page for the specific error. - Some sites require special headers or block common crawlers; hosting a mirror or exporting the content and uploading it can be more reliable. Free plans refresh once per day; Plus and Enterprise refresh more frequently. ## "User already has an open ticket" By default only one open ticket is allowed per user per type. Options: - Close the existing ticket with `/close`. - Increase or remove the per-user limit for that type in **Settings**, then re-run `/thoth autoconfig` if you changed categories. - Ask the user to use a different type if appropriate. ## Auto-learn is not creating tips Requirements: - **Auto-learn** must be enabled in Settings. - A staff member must have sent at least one message in the ticket. - The conversation must be long enough (very short threads are skipped). If those are met and you still see nothing: - Check the `learned-tips` channel for recent suggestions. - Look at the ticket in the dashboard to see if a tip was proposed and perhaps removed. - Confirm that the close was performed by staff (owner-only closes may not trigger learning). ## Team members cannot see the server in the dashboard - They must have accepted the team invite sent to their email, or been added by Discord ID. - They must sign in with the Discord account that received the invite. - They must be a team member for that specific server (or have Manage Server / a configured staff role). Dashboard access is separate from Discord permissions. They still need Manage Server on the Discord server to run `/thoth autoconfig`. ## Cannot sign in or switch servers - Use the Discord account that has Manage Server on the server you want to manage. - If you were invited to a server's team, open the invite link from the email first, then sign in. - Clear any workspace or account switcher state and try again. ## Need more help Use the **Feedback** link in the dashboard header, or email [support@thothsupport.dev](mailto:support@thothsupport.dev). Thoth support is available **10am–5pm, Monday–Friday**. For product questions, recent tickets and Playground sessions are usually the best clues for what to document next. --- ## Team members Source: https://docs.thothsupport.dev/dashboard/team # Team members Team members are people who can access the dashboard for a specific Discord server. ## Who can access the dashboard A user can open a server's dashboard if they are: - A **team member** for that server (owner, admin, or member role) - A Discord user with **Manage Server** on that server - Assigned a configured **staff role** in Settings Billing changes require team **owner** or **admin**, or the Discord server owner. ## Inviting teammates 1. Select the server in the dashboard. 2. Open **Team**. 3. Search for an existing Thoth user by name or Discord ID, or invite by email. Email invites expire after 14 days. The recipient must sign in with Discord after accepting. ## Roles | Role | Can manage billing | Can invite/remove members | |------|-------------------|---------------------------| | Owner | Yes | Yes (including admins) | | Admin | Yes | Yes (members only) | | Member | No | No | Members can use the dashboard but cannot change billing or team membership. ## Category permissions Owners and admins always have full dashboard access. For **members**, you can grant read and/or write access to each dashboard area: | Area | Includes | |------|----------| | **Support** | Overview, tickets, usage | | **Knowledge** | Knowledge base, playground, custom tools, tips | | **Analytics** | Insights | | **Account** | Settings, data export, billing (view), team (view) | New members start with **no category access** until an owner or admin grants permissions on the Team page. Existing members were migrated with full access. On the Team page, owners can change a member between **Admin** and **Member** roles. Only members with the Member role can have category permissions edited. Click the permissions summary or **Permissions** button to open the editor. Write access is required for changes (for example editing settings or managing tickets). Team management (invite/remove) still requires owner or admin role. ## Discord staff vs dashboard team Being a dashboard team member does not grant Discord permissions in tickets. Assign **staff roles** in **Settings** so the bot recognizes support staff in Discord. Removing someone from the team revokes dashboard access only. It does not change their Discord roles. ---