Skip to content

Moving your team from Slack

Your organization can move from Slack to SingleSign Chat and bring its history along: channels, direct messages, threads, reactions and pins come over from a Slack export, and your Slack integrations keep posting once you swap their webhook URLs. This guide is for the organization's Owners and Admins, who are the only people who can run an import. Chat itself is explained in Chat: getting started.

Before you start

  • Give everyone a company mailbox. Chat matches people by email address, so a Slack account is linked to a person in your organization when its email address is that person's company address, one of their aliases, or the email they sign in to SingleSign with. See Company mailboxes.
  • Pick a date to switch. An import can be run again and only adds what's new, so you can do a trial run now and a final top-up on the day you switch. See A plan for switching.
  • Keep Slack running until the import is done. Files in a Slack export are links back to Slack, and they only work while your Slack account keeps them.

Step 1: Export your data from Slack

A Slack Owner or Admin exports the data in Slack:

  1. Click Admin in the Slack sidebar, then Workspace settings, then Security.
  2. Click Import & export data and open the Export tab.
  3. Choose the date range. For a complete move, choose the entire history.
  4. Click Start Export. Slack emails you when the export is ready.
  5. Open the link in the email and download the .zip file.

What the export contains depends on your Slack plan:

Slack planWhat an export includes
Free and ProPublic channels only: their messages and links to their files. On Free, file links only go back 90 days.
Business+Public channels by default. All channels and conversations (private channels, direct messages and group DMs too) needs an application to Slack, and Slack's approval.
EnterpriseEverything Business+ offers, plus exports by conversation type or by member.

On every plan, a Slack export has links to files, not the files themselves. Chat can keep those links, or fetch the files while the links still work; see Files. Slack's own guide has the details: Export your workspace data and How to read Slack data exports.

Step 2: Import into Chat

In Chat, open Admin ▸ Import from Slack.

  1. Upload the Slack .zip file, up to 1 GB. Chat reads it in the background, which can take a few minutes for a large export.
  2. Review the analysis. Chat shows what it found: the people, every conversation with its message count, the number of files, the dates the messages span, and any warnings. It tells you whether the export holds only public channels or all conversations.
  3. Review who's who. Every Slack account is listed with the person it was matched to by email. For anyone who wasn't matched, or was matched wrongly, choose the right person from your organization, or leave them unmatched.
  4. Choose the options, below, and start the import.

The import runs in the background with a progress bar, and you can close the page while it runs. You can cancel it partway; what's already imported stays. When it finishes, Chat shows how many conversations, messages, replies, reactions and files came over, and any warnings.

An uploaded export that you decide not to import can be deleted from the same page.

Options

  • Which conversations: every conversation in the export is selected. Untick any you'd rather leave behind.
  • Same-name channels: when your Chat already has a channel with the same name as a Slack channel, either merge the Slack history into it, or import it as a separate channel named name-slack.
  • Direct messages: include or leave out direct messages and group DMs, when the export has them.
  • Download files: fetch the files from Slack into Chat instead of keeping links. See Files.

What gets imported

  • Channels: public channels become public channels and private channels become private ones, with their topic, description and members. Channels archived in Slack stay archived. Slack's #general is merged into your Chat's #general.
  • Direct messages and group DMs, from an all-conversations export. A group DM comes over as a group DM when every person in it was matched; otherwise it becomes a private channel named dm- and their names.
  • Messages, with their original authors and times, threads, replies that were also sent to the channel, edits (shown as (edited)), reactions and pins. Messages deleted in Slack stay deleted.
  • Mentions and channel links, pointed at the matching people and channels in Chat. A mention of someone who wasn't matched becomes plain text with their Slack name.
  • Messages from Slack apps and bots, shown with the app's name and an APP badge.
  • Channel events such as people joining and leaving, and topic changes, shown as notes in the conversation.

Messages from people who weren't matched keep their Slack display name, with a small imported hint beside it; their reactions keep their names too.

Some things don't come over: custom emoji (a reaction or shortcode using one shows as :its-name:), user groups (@designers becomes plain text), canvases, lists, workflows and the integration log.

Chat has its own custom emoji and user groups, so you can set them up again: add a custom emoji under the same name it had in Slack and every imported message and reaction using that name shows the image, or add an alias pointing a Slack name at an emoji you already have. Create your user groups again with the handles people know. See Custom emoji and User groups.

An import never notifies anyone. Everything imported is marked as read, so nobody gets badges, desktop notifications or emails about old messages.

Running the import again

Each Slack message is imported only once. Import a newer export later and Chat skips everything it already has and adds only what's new, so a trial import followed by a final one on the day you switch never makes duplicates.

Files

By default, each file in the export becomes a link to the file in Slack. The link keeps working only as long as Slack keeps the file; once you close your Slack account, it stops.

To keep the files for good, turn on Download files. Chat then fetches each file from Slack during the import and stores it with the message:

  • Up to 25 MB per file and 20 GB per import.
  • Downloaded files count against the storage of the admin running the import.
  • A file that can't be downloaded keeps its Slack link, and the import lists it as a warning.

Run the import with Download files turned on while Slack is still active.

Repointing Slack incoming webhooks

Most companies have tools that post into Slack through incoming webhooks: build servers, monitoring, alerts and forms. Chat accepts the same messages, so moving each one is a matter of swapping its URL.

  1. Open the channel the tool should post to, then ⓘ ▸ Integrations.
  2. Create a webhook and give it a name, such as the tool's name.
  3. Copy the webhook URL. It's shown only once, so paste it straight into the tool, in place of its hooks.slack.com URL.

Chat accepts Slack's webhook messages as they are:

Slack fieldIn Chat
textPosted as the message, with Slack formatting and links.
usernameShown as the author's name. Without it, the webhook's name is used.
icon_emojiSupported.
icon_url, blocks, thread_tsIgnored.

A tool that posts only blocks needs to send text too, which Slack recommends anyway. Chat takes JSON bodies and payload= form posts, and answers ok, just as Slack does. Each webhook can post about once a second, with bursts of up to 20. Webhook messages show the APP badge.

Any member of a channel can create a webhook for it. The person who created a webhook and admins can delete it, which stops the URL working at once. Anyone holding the URL can post with it, so treat it like a password. Slack's reference for the format: Sending messages using incoming webhooks.

Message retention

By default Chat keeps messages forever. Admins can change that in Admin ▸ Retention: choose keep forever, or a number of days from 30 to 3,650 (ten years).

With a retention period set, once a day Chat deletes messages older than it, together with their thread replies, reactions and files. Pinned messages are kept. Deleted messages can't be recovered, so export first if you might need them. Every change to retention is recorded in the organization's audit log.

Exporting your Chat data

Your chat history is yours to take with you. In Admin ▸ Export, choose what to export:

  • Public channels, or
  • All conversations: public and private channels, direct messages and group DMs.

Chat builds the export in the background and lists it on the same page with its size. It's a .zip in Slack's export format, so it can be imported back into Chat or into any tool that reads Slack exports. Download it within 7 days; after that it's deleted and you can make a new one. Files in the export are links to Chat, which work for anyone signed in with access to them.

Creating and downloading exports are both recorded in the organization's audit log.

Slack features in Chat

Most of what people use every day in Slack has a Chat equivalent with the same name or the same keys, so habits carry over.

Slack featureChat equivalent
Channels, private channels, DMs and group DMsThe same. See Chat: channels and direct messages.
Threads, Also send to #channelThe same. See Chat: messages, threads, mentions and reactions.
Schedule messageSchedule for later, next to Send: up to 120 days ahead.
Drafts & sentDrafts & sent, with Drafts, Scheduled and Sent. Drafts follow you across devices.
Later and Remind me about thisLater, with Reminders, Saved and Completed.
/remind/remind, with the same phrases: /remind me to call Ana tomorrow at 9am.
Custom sidebar sectionsSections of your own, sorted by recent activity or A–Z.
All unreadsUnreads.
Channel bookmarksThe bookmarks bar under a channel's header.
Canvases in channelsChannel docs: a Writer document or spreadsheet shared with the channel, open in a tab beside the messages.
User groups (@designers)User groups, with the same @handle mentions and default channels.
Forward and share a messageForward message, and Forward later.
Channel managers and posting permissionsChannel managers, Who can post, Who can reply in threads and Who can use @here, @channel, @everyone and group mentions.
Announcement-only channelsAnnouncement channels.
My keywordsKeywords in Preferences: up to 20.
Custom emoji and aliasesCustom emoji (PNG, GIF, JPEG or WebP, up to 128 KB) and aliases.
Code snippetsSnippets, with Ctrl+Shift+Enter, and highlighted code blocks.
Link unfurlingLink previews.
Built-in slash commands/remind, /status, /dnd, /invite, /topic and more. See Slash commands.
Calendar status (Google Calendar or Outlook app)Status from your calendar, built in: In a meeting, Out of office and In a huddle.
HuddlesHuddles, using SingleSign Meetings.
ProfilesProfile cards with local time and free or busy now.
Incoming webhooksWebhooks that take Slack's messages. See Repointing Slack incoming webhooks.
Sharing a message by email, the Gmail appShare via email, Send to my inbox, and Discuss in Chat from Mail. See Chat with Mail, Calendar and Meetings.

Chat doesn't have polls, custom slash commands, bots, outgoing webhooks, workflows, lists or channel-by-channel retention.

A plan for switching

  1. A week or two before: give everyone a company mailbox, export from Slack and run a trial import. Check the people matches and the warnings, and let people look around.
  2. Move integrations: create a webhook in each channel your tools post to and swap the URLs. Nothing else in the tools has to change.
  3. On the day: ask everyone to stop posting in Slack, take a final export and import it again. Only the new messages come over.
  4. Afterwards: once you're sure you have everything, including files if you chose to download them, close Slack.

Last updated: 2026-09-25

Related articles