Skip to content
Ditchly
Menu

Last checked October 16, 2026

Migrate from Slack to Zulip

Zulip can import a Slack export into a new organization. Private channels and direct messages export only on Slack's higher plans.

How long: A weekend for a small workspace, including the Slack export and a first login for the team.

Take it out

  1. Step 1

    Export public history

    You need to be a Slack owner or admin. Export the workspace from Slack. A few minutes later you can download a zip. Zulip says this export includes public channel messages, including older ones your plan may no longer let you search.

  2. Step 2

    See if private history can come

    Zulip's guide says Slack only lets Business+ and Enterprise Grid workspaces export private channels and direct messages. Slack's support told Zulip that in August 2022. Owners on those plans can ask Slack for a direct-message export. On any other plan, copy the private notes you still need before you leave.

  3. Step 3

    Make a bot for users and emoji

    Create a Slack app from scratch. Add a bot with the scopes emoji:read, users:read, users:read.email, and team:read. Install it on the workspace. Copy the bot token that starts with xoxb-. A token that starts with xoxe- will not work. Zulip uses this token for names, emails, avatars, and custom emoji.

Put it in

  1. Step 1

    Import into a new organization

    Zulip cannot add this history to an organization you already use. On Zulip Cloud, create an organization and, under Import chat history, choose Import from Slack. Finish the email confirmation, paste the xoxb- token, upload the zip, and start the import. If that address is already taken, email Zulip support to clear it first.

  2. Step 2

    Or import on a server you run

    Copy the zip onto the server. Zulip's guide has you run convert_slack_data on the zip with the bot token, then import the result as a new organization. Do this before the team is using that organization.

  3. Step 3

    Give people a first login

    Imported users have no password. Slack does not export passwords. They can sign in with Google, GitHub, or another method you turn on. Or send password-reset mail. On a server you run, Zulip's command for that is send_password_reset_email. Tell people the mail is coming. Then delete the Slack app so the token stops working.

What you lose

  • Threads get new names

    Slack threads come in as Zulip topics. The topic name is a date plus a short clip of the first message, not a name you chose. Edits to old messages do not come across. Messages that only say someone joined a channel do not either.

  • Settings and apps stay behind

    Slack does not export workspace settings or each person's settings. You choose again who can see email addresses, who can edit messages, and how people join. Slack apps, workflows, and huddles are not in the list Zulip says it imports.

  • Roles are close, not identical

    Slack owners become Zulip owners. Slack admins become administrators. Members stay members. Single-channel and multi-channel guests become guests. Being the person who created a channel does not grant a role.

Import when the team is ready to switch. Messages sent in Slack after the export stay in Slack. Pause the old workspace, or plan a second export, before you call the move done.

Sponsored migration guide

$299 once

A guide for one switch: what to take out, how to put it in, and what you lose. The page is labeled sponsored. It does not change which free app ranks #1.

  • One pair, written from public pages
  • Sponsored label on the guide
  • The real top pair keeps its own guide
Buy now

Opens Stripe to pay.

Free alternatives to Slack·Zulip

https://ditchly.co/migrate/slack-to-zulip