How Slack billing actually works
Slack charges per "active member" on Pro and Business+ plans. A member is considered active if they've used Slack in the past 30 days. If they haven't, Slack automatically credits that seat back to you and doesn't charge for it that month.
This is different from Microsoft 365 or Google Workspace where you pay for assigned licenses regardless of usage. With Slack, the auto-credit system handles some of the unused seat problem automatically. But there's still a reason to audit: members who log in occasionally but barely use the tool still count as active and still bill. And deactivating members properly keeps your workspace clean, reduces your member count for tier pricing, and removes access for people who should no longer have it.
Finding inactive members in the Slack admin
You need to be a Workspace Owner or Admin to do this. Go to slack.com/admin (or your workspace URL + /admin), then Members. You can sort by "Last active" to bring the least recently active members to the top.
On Business+ and Enterprise Grid plans, you also have access to the Analyticstab under Settings & administration. The Members table there shows last active date, total messages sent, and days active in the last 30 days — more detail than the basic admin members list.
Export this list and filter for anyone with no activity in the last 30–60 days. That's your review list.
Deactivated vs. removed — what happens to their data
In Slack, you don't "delete" members in the traditional sense — you deactivate them. Deactivating a member:
- Removes their access to the workspace immediately
- Stops billing for that seat (they're no longer active)
- Preserves all their message history — their past messages stay visible to the rest of the workspace
- Keeps their profile in the member directory, marked as deactivated
You can reactivate a deactivated member at any time, which restores their access and profile. Their message history was never touched.
How to deactivate members in bulk
The admin interface lets you deactivate one member at a time, which gets tedious if you have a long list. For bulk operations, Slack has a SCIM APIthat supports bulk deactivation if you're on Enterprise Grid. On lower plans, the easiest approach is the admin UI — it's slow but works.
One alternative for larger workspaces: some teams use slack-export-viewer or the Slack API (users.list endpoint) to pull all members with their updated and deleted flags, then deactivate via the SCIM API if on Enterprise Grid. There's an undocumented users.admin.setInactiveendpoint that's seen in community scripts, but it's not in Slack's official API docs and could stop working without notice — not something to build a workflow around.
A few things to check first
Before deactivating anyone, a few quick checks:
- Bot and app accounts. Integrations and bots show up in your member list. They won't have recent "activity" in the way a person would. Don't deactivate bot accounts — it breaks the integrations.
- Channel ownership. If a member owns private channels, deactivating them can create issues. Check whether they own any channels and transfer ownership first.
- Guest accounts. Slack has single-channel and multi-channel guests at different price points. If you're on a plan with guest billing, check whether any guests are inactive too.
Keeping it current
Slack's auto-credit system means the financial stakes of a Slack audit are lower than M365 or Google Workspace — you're not going to find months of surprise charges from a former employee who never logged in. But access hygiene matters independently of cost. People who left the company last year shouldn't still be able to read your internal channels.
Reach Seatsincludes Slack in its daily sync alongside Microsoft 365, Google Workspace, GitHub, Zoom, and Jira. It surfaces members who haven't been active in 30+ days so you can review and deactivate from one place, without logging into each admin console separately.