AltFreeStack
Migration guide

How to migrate from Slack to Mattermost

How complete {from}'s export is depends on your plan: Free/Pro plans only export public channels, with no DMs or private channels — if you need that history, you need to be on a Business+ plan or higher before exporting.

  1. 1

    Confirm your Slack plan's real export scope before promising anything

    In Workspace Settings → Import/Export Data, check what kind of export your current plan actually offers. If your team expects to recover DMs or private channels and you're on Free/Pro, it's not going to happen — settle this before announcing a cutover date.

  2. 2

    Export Slack's history

    Generate the export from that same panel — Slack delivers a .zip with one .json per channel per day, plus `users.json` and `channels.json` metadata. You don't need to unzip it before uploading it to Mattermost.

  3. 3

    Deploy Mattermost via Docker Compose

    Mattermost needs PostgreSQL (see the docker-compose.yml on its page). Before importing, create the accounts for the users you're migrating first — Slack's importer links messages to existing users by email, it doesn't automatically create new accounts in every case.

  4. 4

    Import with mmctl, not just the web console

    As a system admin, use the `mmctl` CLI: `mmctl auth login`, then `mmctl import upload slack-export.zip`, `mmctl import list uploads` (note the ID it returns), and `mmctl import process <id>` to kick off the job. One-click import from System Console exists, but in several Mattermost versions it's an Enterprise feature — the CLI path works on the Team/OSS edition.

  5. 5

    Reconnect integrations and check external shared channels

    Slack's webhooks, bots and connected apps don't migrate — you'll need to recreate them pointing at Mattermost. Slack Connect channels (shared with other companies) also have no automatic equivalent: those conversations stay only in Slack.

Before cancelling Slack

Before cancelling Slack, verify the importer brought over threads and emoji reactions correctly in a couple of test channels — mmctl does support them, but it's worth confirming with your own data before migrating the rest of the team.

Ready to deploy Mattermost?

Full profile with license, tech stack and ready-to-copy docker-compose.

View Mattermost's profile

These steps are a general guideline — the exact export menu can vary depending on Slack's plan and version.