Knowledge base

How to build a knowledge base for support, from real questions

Mine the 20 most-asked questions from Slack and email, write only what five or more customer accounts ask, and track whether each article cuts the tickets it targets.

Updated November 11, 2026 · 10 min read

The thresholds below are our starting judgment for a small support team. They are not from Slack or any published study, so check them against a quarter of your own data before you trust them.

Pull the questions from where they are asked

List the 20 questions customers asked most often over the last 90 days, drawn from Slack Connect channels, email, help-center search logs, and AI agent conversations if you run an agent.

Keep the sheet in a restricted folder visible only to the support team. Replace names and emails with account IDs, keep the question wording but strip anything that identifies a person, and delete the raw export once the list is built.

For Slack Connect, start with the top-level customer message in each shared channel, which is usually a new problem. Then scan thread replies that contain “that fixed it” or a link you sent, because a question answered inside a thread may never show up at top level. For email, take the subject line and first sentence of each thread. If you cannot export a channel’s history, go through the 90 days by hand and record five columns per question: the wording, the channel or mailbox, the account ID, the date, and the product area.

Search before you write, too. Check existing help center articles, macros and saved replies for each intent, so you extend what exists instead of duplicating it.

Search logs and agent conversations. Search queries carry no customer account, so they cannot meet the five-account rule below. Use them for phrasing, and for queries that return no article click. Retitle an existing article for those, and write a new one only if the intent also clears the threshold in Slack or email. If an AI agent answers part of your traffic, export its conversation log with the same five columns. People often never tag agent conversations, so count the intent from the agent’s log, not from your tags.

Cluster by intent, not wording. “Where do I find my invoice”, “can I get a copy of my invoice” and “invoice pdf?” are one intent. Count each intent once per customer account, so three messages about the same export from one customer are one account asking.

Multiple accounts and languages. Count one account per paying customer. If one customer has three shared channels or two email domains, group them under the parent account ID your CRM uses. A subsidiary with its own contract counts separately. If you have no parent ID, group by company name and check every group of five or more by hand. Count an intent once per account whatever language it was asked in. Write the article in the language most of its askers use, and add a translation only when five accounts writing in that language ask the same intent within 90 days.

Worked example, with invented numbers: 340 top-level messages across nine shared channels and 120 email threads reduce to 20 questions, then to 11 distinct intents. Three intents reach five or more accounts: an SSO login loop, CSV column order, and webhook retry behavior. Those three become the first articles.

Write an article only past the threshold

Our rule: write an article when one intent comes from five or more distinct customer accounts within 90 days. Below five, tag the question and check again next quarter.

Two exceptions. If an intent crosses five accounts within 30 days of a release, write the article within five business days, because the answer is still changing. If a single account is blocked on a workflow, fix it with that customer directly.

The threshold exists because upkeep is the real cost. Our estimates, not measured data: two to four hours to write and test an article, about 30 minutes per review, and half a day a month for the library owner. Replace these with your own timings after a quarter. If all 20 articles sit on 90-day cycles, reviews come to about 10 hours a quarter (20 × 30 minutes). If half the library is stable setup content on 180-day cycles, the load falls to about 7.5 hours a quarter (10 × 30 minutes every quarter, plus 10 × 30 minutes every two quarters).

Structure every article the same way

Each article has four parts, in this order, under these headings:

  • Symptom. What the customer sees, in their words. Start with the error text or screen name, for example “You see ‘Invalid redirect URI’ right after you click Sign in.” Search matches this section, so do not rephrase it more formally.
  • Before you start. The role needed, the plan the feature requires, and which admin does which step. One line per requirement.
  • Steps. One action per bullet, each starting with a verb. More than eight steps means two articles, one per stage.
  • Fallback. What to try if the steps fail, and what to send back if that fails too. For example: “If the steps above don’t fix it, reply with the workspace name, the time you tried, and the exact error text. We’ll check the account on our side.”

Use a screenshot only where the screen is the answer, because screenshots go stale first.

Finished example, with invented product details. Title: “CSV export: columns come out in the wrong order.” Symptom: “The CSV you download has its columns in a different order from the header row of your import template.” Before you start: “Admin role. Only an admin can change the column order in export settings.” Steps: open export settings and select the report; compare the column order list with your template; drag the columns into template order and save; export again and check the header row. Fallback: “If the columns still don’t match after these steps, reply with the file name and the export time, and we’ll check the saved setting for your account.”

Metadata kept above the body: owner (a named person), review date (90 days out, because export screens change often), the release version and screen names it was checked against, status (live), and tag (kb:csv-export-order). The next reviewer compares the live screen with that record.

Customers search with the words on their screen. Put the error text or the customer’s phrase in the title and the first line. If a help center search query returns no article click, retitle the article to match that phrase.

In the pinned message of each shared channel, link the help center home page rather than single articles, which move and expire.

Keep one saved reply per article, named after its slug, such as: “Our guide on CSV export column order covers this: [link]. If the columns still don’t match after you follow it, reply here with the file name and I’ll look at it.” Pair it with one tag per article. The tag has to sit on the conversation, not only in the reply text, or the weekly check and the measurement below cannot count it.

Failure mode: agents paste an old link and skip the tag. The fix is a weekly check: search recent replies for your help center domain, compare each linked article with the tags on its conversation, and fix mismatches the same day while the customer is still in the thread.

Set owners, review dates and expiry

Every article has one named owner, not “the support team”, and a review date. Our defaults: 90 days for features that change often or for any article linked more than 20 times in the last month, and 180 days for stable setup articles.

Review early, before the date, if a release touches the feature, if a conversation that received the link reopens in the same thread, or if a customer says the steps no longer match their screen.

Expiry rule: if a review date passes with no review, move the article to draft. Do not leave it live.

Failure mode: owners leave and their articles stay live. When someone changes role or leaves, reassign their articles that week, and search for their name as owner before the account closes.

Govern the library and retire old material

Give the library one owner who keeps the list of articles. Content owners edit their own articles, but the library owner decides removal. Our rules:

  • An article with no link in 180 days and no review is archived first. Archived articles are deleted only if no one restores them within 30 days.
  • When two articles share a symptom, merge them into the one checked more recently, and redirect the old URL to it.

Before you publish, list every old runbook, macro and wiki page that covers the same topic. Where an old macro conflicts with the new article, replace the macro text with the snippet. Mark the old page “Superseded by [link]” for 30 days, then remove it. If two sources disagree and nobody can say which is current, check the product itself.

What changes in a Slack Connect channel

Three points from Slack’s help center page “Slack Connect channels”, which we read on November 10, 2026. The page shows no update date, so check the live page before you rely on them.

First, the page says that when you need to work as a group, a Slack channel can host up to 250 organizations. It also says each organization must be using a paid Slack plan to work in channels together. We have not tested this with a customer. Our inference from that wording: a customer whose organization is not on a paid plan probably cannot join the shared channel, so give that customer the email path and the same articles.

Second, the page says only the organization that owns a channel can invite or remove organizations. Decide who owns the channel before any bot posts articles into it.

Third, the page says people in the channel can see messages from bots and apps. Our inference from that, not a Slack statement: keep runbooks, escalation paths, internal contacts and pricing exceptions out of shared channels. Link only customer-safe articles.

The fallback line is where the knowledge base meets your SLA. If the SLA promises a first response within one business hour, the fallback says: “A person on our team will reply in this thread within one business hour.” Write that line only if the SLA says it, or the article creates a second promise.

Let AI agents read only live articles

Pick one home for the library where each article has a status field (draft, live or archived). That can be your help center, a shared sheet with a status column, or a macro library. It only has to let you filter the agent’s source set to status equals live. Then:

  • The agent quotes live articles only. Drafts and archived articles are hidden from it, not just unlinked.
  • When an article moves to draft through expiry, the agent loses access the same day, not at the next sync.
  • The agent includes the article link and tag in its reply, so the measurement below still counts it.
  • If the matched article has no fallback section, the agent hands off to a person instead of inventing a next step.
  • Internal runbooks never enter the agent’s source set, because anything it quotes reaches the customer.

Failure mode: an agent answers from a draft edited mid-review. Keep edits in a draft copy and publish only after review.

Measure whether tickets went down

Raw counts mislead because they rise with growth and fall in quiet weeks. Measure per 100 new conversations, and compare the same topic before and after publication.

  • Baseline: conversations on the topic in the four weeks before publication, divided by all new conversations in that window, times 100.
  • After: the same calculation for the four weeks after publication.
  • Reopen check: among customers who received the link, count how many wrote again in the same thread within three days. Our bar is 1 in 3. Above it, rewrite the article before you count it as working.

Small-count floor, our rule: do not judge an article from a window with fewer than 300 new conversations or fewer than 10 tickets on the topic. Widen the window to 12 weeks, and say in your report that the count is small.

Worked example, invented numbers: 1,200 new conversations before publication, 54 about CSV export, which is 4.5 per 100. After: 1,150 conversations, 23 about CSV export, which is 2.0 per 100. Of the 23, 14 received the link, and 3 of those 14 reopened within three days, about 1 in 5 (21 percent). That is under our bar of 1 in 3. But 14 links is a small count: one more or one fewer reopen moves the rate by about 7 points. The reopen check did not fail. That does not prove the article worked.

Rule out a confound before you credit the article. If a release in the same window changed the feature, the drop may come from the product. Wait for four clean weeks, then count again.

Failure mode: no baseline, because tags were not applied before publication. Start tagging now and judge after four weeks. For older conversations, search the mailbox and channel history for the question phrase, count by hand, and say the result is rougher when you report it.

Questions

How many customers should ask a question before I write an article?

Five distinct customer accounts within 90 days is our starting threshold, not a figure from Slack or a study. Below that, tag the question and check again next quarter. One customer asking five times is a support problem, not a documentation gap.

Should the knowledge base be public or internal?

Both, kept apart. Customer-facing articles go to your public help center. Slack's help center says people in a Slack Connect channel can see messages from bots and apps. Our inference from that, not a Slack statement: keep runbooks and escalation paths out of shared channels.

How long can an article stay unreviewed?

Our default is 90 days for features that change often and 180 days for stable setup articles. If the review date passes without a review, move the article to draft until someone confirms the steps still work.

How do I know an article reduced tickets?

Compare tickets on that topic per 100 new conversations for the four weeks before and the four weeks after publication. Then check how many customers who received the link wrote again in the same thread within three days.

Sources

Competitor details come from each vendor's public pages, checked November 11, 2026. Prices and plans change; check the source before you buy. Spot an error? Email hello@weft.day.

Get the next guide by email.

Keep reading

Run Slack Connect support from one queue.

Every workspace starts with a 14-day free trial of Growth. No card needed to start.