Every article is in exactly one state, shown as a chip in the editor's Status & lifecycle panel.
| State | Your team's Library | Customer Help center | Manage list |
|---|---|---|---|
| draft | No | No | Yes |
| published | Yes | If its audience allows | Yes |
| archived | No | No | Yes, under the Archived filter |
A new article starts as a draft. Drafts are private working copies — they do not appear in the Library even to the person who wrote them, because the Library is a reading surface for finished work.
Who can see other people's drafts on the Manage list depends on permission: authors always see their own, and holders of Publish knowledge-base articles or Manage all knowledge-base articles see everyone's.
The buttons available depend on the current state. All of them require the Publish knowledge-base articles permission.
| From | Buttons |
|---|---|
| draft | Publish, Archive |
| published | Unpublish, Archive |
| archived | Unarchive only |
Makes the article live. On first publish it also mints the URL slug and asks you to confirm it.
Each publish stamps a fresh Published date, so re-publishing an article updates when it was last made live.
Returns the article to draft. It disappears from the Library and the Help center immediately.
The slug is kept. This matters: the URL stays reserved to this article, so republishing later reuses the same address rather than minting a numbered variant. Links you have already shared start working again the moment you republish.
Retires the article. It leaves both reading surfaces and becomes read-only — the title, body, category, visibility and slug controls are all disabled. Only Unarchive is offered.
Archive is how you retire content, because there is no delete. That is deliberate: a URL you have published and shared should stop being listed, not start returning errors for everyone who bookmarked it.
Always returns the article to draft — never straight back to published.
This is a safety property worth relying on. Un-archiving something from two years ago cannot accidentally re-expose it to your customers; you get a draft, you review it, and you publish it deliberately if it still holds up.
Title and body save automatically, shortly after you stop typing. Category and visibility changes save immediately.
The indicator beside the title reads:
| It says | Meaning |
|---|---|
| Saved | Written to the server. |
| Saving... | In flight. |
| Title required | The title is blank, so nothing is being saved. |
| Save failed | The last save did not go through. |
Clicking Publish, Unpublish, or Archive first flushes any pending edit. If that save fails, the action is cancelled and you are told: "Your latest changes could not be saved, so the action was not applied." This stops you publishing a version that is not the one on your screen.
Navigating away also flushes. If that fails you get "Your latest changes could not be saved." and navigation still proceeds.
Once an article is published, a URL panel appears in the editor rail showing its slug.
At first publish, DevStride builds a slug from the title: lowercased, non-alphanumeric runs collapsed to hyphens, leading and trailing hyphens stripped, and capped at 120 characters.
"How to Reset a Forgotten Password!" →
how-to-reset-a-forgotten-password
If the resulting slug is already taken in your organization, a numbered variant is used — -2, then -3, and so on. The first-publish confirmation tells you this before it happens:
This article will be published with the URL slug "how-to-reset-a-forgotten-password". If that slug is already taken, a numbered variant (e.g. "how-to-reset-a-forgotten-password-2") is used instead.
Slugs are unique per organization, not per category.
Renaming the article never changes its URL. This is the single most important thing about slugs. You can retitle an article freely — fix a typo, rephrase it, make it clearer — and every link anyone has shared keeps working.
Click Change URL in the URL panel. This is available to Publish knowledge-base articles holders on any non-archived article.
your-new-slug.Reset Password when the slug is already reset-password does not count as a change, because they clean up to the same thing.A slug must be 1–120 characters of lowercase letters, digits, or hyphens, with no leading or trailing hyphen.
Under the slug you may see:
Live on your customer portal
This appears only when the article is genuinely reachable by customers: published, visibility set to Portal, and no category above it marked Internal. It is the fastest way to confirm an article really is customer-facing — more reliable than reading the settings back one at a time, because it evaluates all of them together.
If it is missing on an article you meant to publish externally, work through Who can see an article.
/portal/<company-slug>/kb/<article-slug>. An article shared with several companies therefore has several valid URLs and no single canonical one, so DevStride confirms it is live rather than printing an address that would be wrong for most readers.The portal returns the same "not found" response for every case a customer cannot read: the article does not exist, is a draft, is archived, is internal, is inside an Internal category, or is not shared with their company.
They are deliberately indistinguishable. A message like "you do not have access to this article" would confirm the article exists and leak its subject through the URL.
Who Can See an Article
The three gates that decide whether a customer can read an article: its own visibility, the audience of every category above it, and the companies it is shared with.
Searching and Browsing
How readers find articles — search behaviour, ranking, category browsing, and the filters on the authoring surface.