Skip to main content

Migrate Slack to Mattermost: 2026 Guide

·OSSAlt Team
slackmattermostmigrationself-hostedguide
Share:

How to Migrate from Slack to Mattermost: Complete Guide

Slack's pricing ($8.75-12.50/user/month) adds up fast. A 50-person team pays $5,250-7,500/year. Mattermost gives you the same team chat experience, self-hosted, for the cost of a VPS. Here's exactly how to migrate.

What You'll Need

  • A server for Mattermost (4 GB RAM minimum, 2+ cores)
  • Slack workspace admin access
  • 2-4 hours for setup, 1-2 weeks for team transition

Step 1: Deploy Mattermost

# Docker Compose — fastest path
mkdir mattermost && cd mattermost
curl -o docker-compose.yml https://raw.githubusercontent.com/mattermost/docker/main/docker-compose.yml
curl -o .env https://raw.githubusercontent.com/mattermost/docker/main/env.example

# Edit .env with your domain
nano .env
# Set DOMAIN=chat.yourdomain.com
# Set MM_SQLSETTINGS_DATASOURCE

docker compose up -d

Configure your reverse proxy (Nginx/Caddy) to point your domain to Mattermost.

Step 2: Export Slack Data

  1. Go to Slack AdminSettings & PermissionsWorkspace Settings
  2. Click Import/Export DataExport
  3. Choose Standard Export (public channels) or request a Corporate Export (includes DMs, private channels)
  4. Wait for the export to complete → download the ZIP file

Note: Free and Pro plans only export public channels. Business+ and Enterprise Grid can export everything.

Step 3: Import into Mattermost

# Use the Mattermost bulk import tool
mmctl import upload /path/to/slack-export.zip
mmctl import list available
mmctl import process <import-file-name>

Or via System Console → ImportSlack Import → Upload the ZIP.

What transfers:

  • ✅ Public channel messages and history
  • ✅ Channel names and descriptions
  • ✅ User accounts (as deactivated — they'll need to set passwords)
  • ✅ File attachments (within Slack export limits)
  • ⚠️ Threads (imported as regular messages)
  • ❌ Reactions and emojis (custom emojis need re-upload)
  • ❌ Apps and integrations (rebuild separately)
  • ❌ DMs (unless Corporate Export)

Step 4: Set Up Integrations

Replace Slack integrations with Mattermost equivalents:

Slack FeatureMattermost Equivalent
Slack botsMattermost bots + webhooks
Slack appsIncoming/outgoing webhooks + plugins
/slash commandsCustom slash commands
Slack ConnectFederated channels (Enterprise)
HuddlesCalls plugin (built-in)
Workflow BuilderPlaybooks
GitHub notificationsGitHub plugin
Jira integrationJira plugin
Google CalendarCalendar plugin

Set up incoming webhooks:

# System Console → Integrations → Incoming Webhooks → Add
# Then use the webhook URL in your services:
curl -X POST https://chat.yourdomain.com/hooks/YOUR_HOOK_ID \
  -d '{"text": "Deployment complete ✅"}'

Step 5: Configure SSO (Optional)

// config.json — GitLab OAuth example
{
  "GitLabSettings": {
    "Enable": true,
    "Secret": "your-secret",
    "Id": "your-client-id",
    "Scope": "read_user",
    "AuthEndpoint": "https://gitlab.com/oauth/authorize",
    "TokenEndpoint": "https://gitlab.com/oauth/token",
    "UserAPIEndpoint": "https://gitlab.com/api/v4/user"
  }
}

Mattermost supports OIDC, SAML, LDAP, Google, GitLab, and Office 365 SSO.

Step 6: Onboard Your Team

  1. Send invitations — Generate invite links or send email invitations
  2. Set passwords — Imported users need to create new passwords
  3. Install apps — Desktop (Windows, Mac, Linux) and mobile (iOS, Android)
  4. Pin a getting-started message — Key differences from Slack
  5. Run both platforms — Keep Slack active for 2-4 weeks during transition

Key Differences to Communicate

SlackMattermost
Channels sidebarChannels sidebar (same!)
ThreadsThreads (same!)
HuddlesCalls (built-in plugin)
Slack ConnectN/A (or federated)
/giphy/giphy (plugin)
Custom emojiCustom emoji (re-upload needed)

Cost Savings

Team SizeSlack Pro (annual)Mattermost Self-HostedSavings
10 users$1,050/year$120/year (VPS)$930/year
25 users$2,625/year$240/year (VPS)$2,385/year
50 users$5,250/year$360/year (VPS)$4,890/year
100 users$10,500/year$600/year (VPS)$9,900/year

Common Issues

"Messages are out of order after import" — Slack exports include message timestamps. Mattermost preserves them during import. If ordering looks off, check timezone settings.

"File attachments are missing" — Slack's standard export has file size limits. Large files may not be included. Re-share them in Mattermost.

"Users can't log in" — Imported users are deactivated by default. Activate them in System Console → Users and have them reset passwords.

"Custom emojis are missing" — Export custom emojis from Slack separately and re-upload via Mattermost's custom emoji settings.

Timeline

WeekTask
Week 1Deploy Mattermost, import data, set up integrations
Week 2Invite team, run both platforms in parallel
Week 3Move primary communication to Mattermost
Week 4Sunset Slack, cancel subscription

Security Hardening Your Mattermost Deployment

Self-hosting your team's communication platform means you're responsible for security that Slack handles transparently in the managed version. The good news is that a well-configured Mattermost deployment can be significantly more secure than Slack for organizations with strict data requirements. The bad news is that it requires deliberate configuration — the default settings prioritize ease of setup over hardened security.

Start with network-level controls. Mattermost should run behind a reverse proxy with TLS, never exposed directly on its native port. Your reverse proxy (Caddy or Nginx) handles certificate management and TLS termination, and you configure Mattermost to only accept connections from the proxy's internal address. Additionally, configure your server's firewall to block all inbound traffic except ports 80 and 443 (for the web and app clients) and 22 (for SSH, preferably restricted to known IPs or behind a VPN). Mattermost's database port should never be accessible from outside the server.

Data at rest encryption is separate from TLS. Mattermost stores messages and files in PostgreSQL and on the local filesystem (or S3). PostgreSQL supports transparent data encryption through pgcrypto, but enabling it retroactively requires re-encrypting existing data. If data at rest encryption is a compliance requirement, enable it during initial setup with a fresh database rather than adding it later. For file storage, if you configure Mattermost to use an S3-compatible bucket, use server-side encryption at the bucket level — both Backblaze B2 and AWS S3 support this with a single configuration flag.

For authentication, Mattermost supports MFA with TOTP apps out of the box — enable it and make it mandatory for all users via the System Console's Authentication settings. If your organization uses LDAP or Active Directory, Mattermost's LDAP integration (available in the free Team Edition via the Mattermost Team Edition configuration) handles user provisioning and authentication centrally. When a user account is disabled in your directory, their Mattermost access is revoked automatically at next login. For OIDC-based SSO, Mattermost integrates with Authentik, Keycloak, and any other OIDC provider — this is the cleanest option for organizations running a centralized identity provider.

Compliance features in Mattermost include message retention policies (automatically purge messages older than a defined period), data export for eDiscovery, and audit logs for all administrative actions. Message retention policies are particularly useful for organizations with legal requirements around communication archiving — configure them to match your retention obligations from the start, because retroactive deletion of old messages is possible but operationally complex.

Custom emoji, slash commands, and bot accounts each represent potential attack surface. Limit who can create bots and integrations to administrators rather than all users. Require that incoming webhook URLs are kept confidential. Audit your integration list quarterly and remove bots and webhooks that are no longer in use — unused integrations are a common source of stale credential exposure.

Integrating Mattermost with Your Self-Hosted Stack

Mattermost's integration capabilities are one of its strongest arguments over Slack for organizations running a self-hosted stack. Slack's integrations are almost all cloud-to-cloud — they connect Slack to other SaaS services. Mattermost's webhook and bot infrastructure works identically with self-hosted services on your internal network, enabling communication flows that Slack architecturally cannot support.

The most common integration pattern is deployment notifications. When your CI/CD pipeline (GitLab CI, Woodpecker, or Drone) completes a build, an outgoing webhook posts a message to your #deployments channel. When a Plane issue changes status, a webhook notifies the relevant team channel. When Uptime Kuma detects a service downtime, a Mattermost notification reaches your on-call engineer before any customer notices. All of these integrations operate entirely within your private network, with no data touching external services.

Mattermost's GitHub and GitLab plugins are particularly well-developed. The GitLab plugin handles PR review notifications, CI pipeline status, merge events, and issue comments — your engineering team gets all the code review workflow context inside Mattermost rather than context-switching to GitLab. The plugin works against self-hosted GitLab instances, not just gitlab.com, which is the key advantage over Slack's equivalent integration.

For teams self-hosting their documentation, the Outline integration for Mattermost allows searching and linking Outline documents directly from Mattermost search. Posting an Outline document URL in Mattermost automatically unfurls it with a preview and click-through link. This combination of Mattermost plus Outline gives you a fully self-hosted alternative to the Slack plus Confluence combination that many engineering teams currently pay for. The how much does Slack actually cost versus Mattermost comparison breaks down the full cost differential when you include the Slack Business+ features needed for compliance and the Confluence subscription.

n8n connects Mattermost to any tool with an API through a no-code workflow builder. Customer support escalation flows, deployment approval gates, on-call alert routing, and daily standup reminders are all buildable in n8n with Mattermost as the notification and interaction surface. The combination of n8n for automation and Mattermost for communication replaces a significant portion of what many teams use Slack's Workflow Builder and third-party bots for, at zero additional software cost.

Long-Term Considerations: Mattermost Community vs Enterprise

Mattermost is available in two editions: Team Edition (free, self-hosted) and Enterprise (paid subscription, self-hosted). Understanding what each includes helps you make a long-term decision about which edition fits your organization's needs and budget.

The free Team Edition includes core messaging, unlimited history, channels, direct messages, file sharing, custom integrations, the mobile and desktop apps, LDAP authentication, and most of the features that replace Slack for typical engineering teams. The feature set has expanded significantly over recent years, and most small to medium teams find it fully sufficient. For teams under 100 people with straightforward communication needs, the free edition covers everything on the list.

Enterprise adds features primarily relevant to larger organizations with specific compliance and administrative requirements: advanced LDAP group sync, SAML authentication, high-availability clustering configuration support, compliance exports in specific formats, custom mobile app compilation, and premium support. The Enterprise pricing is per-user per-month, but the threshold where Enterprise makes financial sense is much higher than the threshold where Mattermost itself makes sense — for most teams migrating from Slack, the free Team Edition is the appropriate choice for years.

Mattermost's long-term maintenance trajectory is positive. The company has been operating since 2016, is US-based, and has a clear commercial model through its Enterprise edition. Unlike purely community-maintained projects, Mattermost has paid engineers working full-time on the codebase, which means security patches are responsive and the project is unlikely to be abandoned. The security disclosure history is clean — vulnerabilities have been identified and patched promptly. For teams concerned about the project's long-term viability, Mattermost vs Rocket.Chat provides a direct comparison of the two leading self-hosted Slack alternatives including their respective community health and commercial backing. Teams choosing a complete self-hosted communication stack can also consider the Element vs Mattermost comparison, which covers Matrix-based team communication as an alternative for organizations that need federated messaging across organizational boundaries.


Compare team chat platforms on OSSAlt — features, self-hosting guides, and community health side by side.

See open source alternatives to Slack on OSSAlt.

The SaaS-to-Self-Hosted Migration Guide (Free PDF)

Step-by-step: infrastructure setup, data migration, backups, and security for 15+ common SaaS replacements. Used by 300+ developers.

Join 300+ self-hosters. Unsubscribe in one click.