Automate Slack channel archiving: what archiving actually costs
Channel sprawl is a search problem, not a tidiness problem. What archiving does and does not remove, who has to be asked, and the rules worth automating.
On this page
- What we'll cover
- Sprawl is a search problem
- What archiving actually does
- Rules that survive contact with a workspace
- Building it with CodeWords
- Asking before acting
- The channels that must never be touched
- Naming, which prevents half of this
- What to do with the channel's contents first
- Making it survive
- Limits worth knowing about
- What to build first
- Frequently asked questions
- Related reading
Every workspace past a couple of hundred people has more channels than anybody can hold in their head, most of them created for something that finished. The visible symptom is a channel list nobody scrolls; the real one is that joining a new team means guessing which of six similarly named channels is the live one.
Archiving is the remedy, and the reason it rarely happens is that nobody is confident about what it costs. Knowing precisely what archiving removes — and what it does not — is what makes it possible to automate the decision rather than debating each channel.
What we'll cover
- Sprawl is a search problem
- What archiving actually does
- Rules that survive contact with a workspace
- Building it with CodeWords
- Asking before acting
- The channels that must never be touched
- Naming, which prevents half of this
- What to do with the channel's contents first
- Making it survive
- Limits worth knowing about
- What to build first
- Frequently asked questions
Sprawl is a search problem
The cost is not storage. Nothing is short of space, and nobody archives for that reason.
The cost is ambiguity. Six channels with similar names, one of which is current, and a new joiner cannot tell which without asking.
Search gets worse, not better. A query returns the discussion from the abandoned channel alongside the live one, with no signal about which is which.
Notifications fragment. The same question asked in three places, answered in one, and the other two left believing nobody knows.
Ownership evaporates. A channel created for a project outlives the project and the person who made it, and there is nobody to ask whether it still matters.
The list is not the problem. People rarely browse channels; they search and they get invited. Sprawl hurts through both of those rather than through the sidebar.
What archiving actually does
Worth being precise about, because the fear of losing something is what stops most cleanups.
Content is retained. Messages and files remain and remain searchable, which is the fact most people do not know and the one that unblocks the decision.
The channel becomes read-only. Nobody can post; members are removed from active membership.
It is reversible. An archived channel can be unarchived, with its history intact, by anyone with the permission.
It disappears from browsing by default, which is the actual benefit — it stops competing for attention while remaining available.
Integrations stop. Apps posting to the channel will fail, which is the one genuine breakage and the thing to check before archiving.
Shared channels are different. A channel shared with another organisation involves their side too, and the behaviour is not symmetrical.
Rules that survive contact with a workspace
No human message for N days is the base signal, with ninety days a reasonable starting point. Count human messages only — a channel receiving daily bot posts and no replies is more dead than a quiet one, not less.
Fewer than a threshold of members, since a two-person channel is a conversation rather than a channel.
Created for something dated. Incident channels, release channels, and event channels have an obvious expiry, and their naming convention usually makes them identifiable.
Never archived before, so a channel deliberately unarchived is not swept up again next month.
Not linked from anywhere current — a channel referenced in a runbook or a canvas is in use even if quiet.
Combine, do not pick one. Any single rule produces obvious false positives; two or three together produce a list a human can review in a few minutes.
Building it with CodeWords
CodeWords connects to more than 3,000 integrations, and the connection is made once and reused.
- Open CodeWords and start a new automation.
- Describe what should happen in plain language to Cody, the automation builder: which signals define dormancy, who gets asked, and how long they have to object.
- Authorize the Slack connection with the scopes needed to read channel metadata and archive.
- Describe the exceptions: protected channels, channels with active integrations, shared channels, anything unarchived before.
- Run it in report-only mode first and read the list before anything is archived.
You describe the outcome; Cody builds it, connects it, and deploys it. The free plan covers light use, with Pro at $39 per month and Business at $100 per month as usage grows; details are on the pricing page.
Asking before acting
The difference between a cleanup that happens annually and one that runs continuously is that the continuous one asks.
Notify the creator and the most recent active posters, not the whole channel, since most members joined and forgot.
Say what will happen and when, with a specific date rather than "soon".
Make objecting trivial — a single reaction or a reply, not a form.
Post in the channel too, since anybody still watching it should see the notice where they are.
Honour an objection for a defined period, then ask again rather than exempting permanently, because "not yet" is almost never "never".
Archive if nobody responds. Silence from a channel nobody has posted in for three months is the answer, and treating it as a blocker is how these projects stall.
The channels that must never be touched
Company-wide and announcement channels, which are quiet by design and important precisely because of that.
Compliance and incident-record channels, where the retention rules are not yours to change.
Channels with active integrations, until somebody has moved the integration, since archiving silently breaks a workflow somebody depends on.
Shared external channels, which involve another organisation's expectations.
Anything explicitly marked protected, via a naming convention or a list, and the list should be visible rather than buried in the automation.
Recently created channels, regardless of activity, because a channel made two weeks ago for something starting next month looks exactly like a dead one.
Naming, which prevents half of this
A prefix convention makes lifecycle legible. A channel whose name says it is for a project, an incident, or a team tells the automation and the humans what to expect.
Date-stamped channels archive themselves conceptually — a name containing a quarter or an incident date needs no judgement at all.
Renaming on archive helps, since a prefix marking it archived keeps search results interpretable.
Enforce at creation, gently, by suggesting rather than blocking, since blocking channel creation produces direct messages instead.
Publish the convention somewhere findable, because an unwritten convention is a preference held by three people.
What to do with the channel's contents first
Archiving preserves everything and finds nothing. A channel with something genuinely worth keeping needs that thing extracted before it goes read-only, because nobody will search an archived channel for a decision they do not know was made there.
Identify decision channels. A project channel usually contains two or three messages that mattered and several thousand that did not, and the ones that mattered are almost always the ones with the most reactions.
Pin before archiving, or better, summarise. A short message at the top saying what this channel was for, when it ran, and where the outcome lives is worth more than the history behind it.
Move the outcome to where outcomes live — a document, a ticket, a wiki page — rather than trusting search to surface it years later.
Note the successor channel if there is one, since the most common reason somebody unarchives is that they could not find where the conversation moved to.
Export where retention requires it, on plans that allow export, before the workspace's own retention policy reaches the messages.
Accept that most channels need none of this. The majority are genuinely finished and the summary step should be reserved for the ones a person flags, or the automation becomes a chore nobody completes.
Making it survive
Rate-limit everything. A workspace with thousands of channels will hit Slack's limits, and the automation should pace itself rather than failing halfway.
Make it idempotent. Re-running should not re-notify people who were notified yesterday.
Keep a record of every archive with the reason and the signals, so an unarchive request can be answered rather than argued.
Report a summary — archived, objected, skipped and why — to a channel somebody reads.
Start report-only and stay there for a month. The list itself is informative, and the first list always contains something surprising.
Limits worth knowing about
Permissions vary by workspace. Who may archive is a setting, and the automation needs an account with it.
Bulk operations are rate-limited, and a large cleanup will take longer than expected for that reason alone.
Default channels cannot be archived, and attempting it fails rather than being skipped quietly.
Archived channel search behaviour differs by plan, so verify what your workspace actually does before promising nothing is lost.
Activity data has a horizon. How far back you can read depends on the plan's retention, which affects what "dormant for ninety days" can mean on a free workspace.
What to build first
The report, not the archiving. A weekly list of channels meeting your dormancy rules, posted somewhere visible, with no action taken. It costs nothing, it breaks nothing, and the first list tells you whether your rules are right — which is the question, since every workspace has its own shape of exception.
Two habits make the difference. Count human messages rather than all messages, since a channel full of bot posts with no replies is the deadest kind. And notify the creator before archiving even when the rules are unambiguous, because the goodwill from asking is what lets the automation keep running rather than being switched off after one complaint.
Frequently asked questions
Does archiving a Slack channel delete anything?
No. Messages and files are retained and remain searchable, the channel becomes read-only, and it can be unarchived with its history intact. This is the fact that unblocks most cleanups.
What actually breaks when a channel is archived?
Integrations posting to it. That is the one genuine breakage, and it is why channels with active apps should be excluded until somebody moves the integration.
How long should a channel be quiet before archiving?
Ninety days of no human messages is a reasonable starting point, combined with a second signal such as member count. Any single rule produces obvious false positives.
Should I count bot messages as activity?
No. A channel receiving daily bot posts with no human replies is more dead than a quiet one, not less. Counting them is the most common way these rules go wrong.
Do I need to ask before archiving?
Ask the creator and recent posters, not the whole channel, and make objecting a single reaction. Archive if nobody responds — silence from a channel nobody has posted in for months is the answer.
Which channels should never be automated?
Company-wide and announcement channels, compliance or incident records, shared external channels, anything with a live integration, and anything created recently regardless of activity.
How does naming help?
A prefix convention makes a channel's lifecycle legible to both the automation and to people. A name containing a project, an incident, or a quarter needs no judgement about whether it has expired.
What if someone objects?
Honour it for a defined period and ask again later rather than exempting permanently. "Not yet" is almost never "never", and permanent exemptions accumulate into the original problem.
Should I save anything before archiving a channel?
For most channels, no — they are genuinely finished. For project and decision channels, post a short summary at the top saying what it was for and where the outcome lives, since nobody searches an archived channel for a decision they do not know was made there.
Why do people unarchive channels?
Usually because they could not find where the conversation moved to. Noting the successor channel in a final message prevents most unarchive requests on its own.