Import Slack channels, membership, and message history
Bring your public Slack channels, messages, threads, and attachments into Roam so your team can continue conversations and reference past discussions in AInbox.
Slack Import guides you through uploading an export, reviewing how people match between Slack and Roam, and choosing which channels to import. Most of the information below also appears in the import flow; use this guide for more detail about matching, existing channels, and limitations.
Before you start
You’ll need:
- Admin access in Roam.
- A verified company domain in Roam. Connect Google Workspace or Microsoft 365, or contact us for help setting one up.
- A Slack Workspace Owner or Admin who can create a workspace export.
- An original, unmodified ZIP downloaded from Slack.
Before creating the export, confirm that Slack will include member email addresses. Roam uses email addresses to match Slack profiles to People in Roam. If Slack’s Email Display setting is set to No one, the export leaves emails out and Roam may not be able to process it. See Slack import can’t find members (missing email addresses) for instructions.
Slack determines which conversations are available to export based on your plan and permissions. Roam imports one Slack workspace at a time. If you use Enterprise Grid, export a single workspace rather than an organization-wide export.
Export your data from Slack
Note: Slack puts more restrictive permissions on exporting than some other admin settings. You will usually need to either be at least a Workspace Owner to perform the export, or have a special Export Admin role.
See Slack’s guide to exporting workspace data for details about available exports, plan requirements, and permissions.
- In Slack, click Admin in the sidebar, then select Workspace settings. Users with the correct permissions in Slack can also use this link to open the export page directly.
- Click Security, then Import & export data.
- Open the Export tab and choose the date range of history you want to include.
- Click Start Export. Slack will email you and post a notification when the export is ready.
- Download the ZIP without extracting or modifying it.

Upload the ZIP to Roam
Open Slack Import from AInbox, or go to Settings > Roam Administration > Calendar & Integrations > Slack. Confirm the two preparation steps, select or drop the ZIP, and click Upload.
Roam will upload and process the archive before opening a screen to review your import. Processing can take a few minutes. If you leave the screen you can always come back and finish your import once the upload has finished.

Review People
The Review People screen compares active People in Roam with the profiles in your Slack export. Differences are normal when the two products have different memberships. The review is independent of which channels you import.
The report separates people into three categories:
- Matched. Slack profiles that match an active Person in Roam by email or by a saved mapping. Their imported messages appear as sent by that Person, and they’re added to the channels they belonged to in Slack.
- No Slack Match. Active People in Roam who don’t match a profile in this Slack export. This is informational; they aren’t removed from Roam and you don’t need to take action unless you expected to see a match. If someone's email changed between being in Slack and being in Roam, for example, you can save a mapping from their old email in Slack to the one you want them to have in Roam.
- Unmatched Slack Profiles. Slack profiles without one safe active match in Roam. Expand this section to see why a profile wasn’t matched. When appropriate, use Map to Roam Person to connect an active Slack profile to an existing unmatched Person in Roam.
A saved mapping applies to Slack imports into this Roam, not only to the archive you’re currently reviewing. You can remove a saved mapping from either the Matched or Unmatched Slack Profiles section.
If an unmatched profile is left as-is, Roam handles it based on the profile and email:
- Teammates who haven’t joined Roam yet. If someone’s email is on one of your verified domains but they don’t have a Roam account, Roam reserves their email. Their messages appear as sent by them, and they’re added to their channels. When they sign in to Roam with that email, their history is waiting for them. They don’t use a paid seat unless they sign in and are active during the month.
- People outside your organization. Active Slack members whose emails aren’t on one of your verified domains are added to their channels as guests if they have active guest access in Slack. Roam doesn’t send them an email, but they’ll have guest access if they sign in to Roam with that email. You can revoke guest access at any time. If your archive shows someone's guest access was revoked we will not issue them a guest badge. Their messages appear as sent by the Slack Import bot, labeled with their Slack name and email.
- Deactivated people and profiles without usable emails. Their messages appear as sent by the Slack Import bot, labeled with the best available Slack name. They aren’t added to channels.
- Bots and integrations. Their historical messages appear as sent by the Slack Import bot. The Slack bot or integration itself is not installed in Roam.

Review Channels
The Review Channels screen shows what will happen to every public channel found in the export. Eligible channels that haven’t already been imported are selected by default. You can select or deselect a whole category or an individual channel, and you can import up to 100 channels at a time.
Channels are grouped by destination:
- New Roam channels. Roam creates one channel for each selected Slack channel. You can edit the proposed channel name and review its members and suggested channel administrators before importing. Both channel admins and account-level admins can manage a channel. So an explicit channel admin is not required, but the Slack Import generally tries to assign a reasonable channel admin when it can.
- Matching existing Roam channels. When a proposed name matches an active Roam channel, Slack message history is added to that channel by default. Its existing members and administrators remain unchanged. Rename the proposed destination if you want to create a separate channel instead. Or if you want the existing Roam channel to supersed the old Slack channel you can always choose to skip importing it.
- Previously imported channels. These aren’t selected automatically. Select one only when you deliberately want to import it again. Re-importing a channel will skip importing messages that already exist, so there's not usually a good reason to do it.
Roam checks the selected channels again when you click Import. If a channel needs attention, it remains on the review screen with an explanation so you can rename it, correct its configuration, or deselect it.

Import and monitor progress
Click the Import button to start importing the selected channels. Each channel is processed independently, so one failed channel doesn’t stop the others.
You don’t need to keep Slack Import open while it runs. You can leave AInbox or Settings and return later to see the active import and its per-channel progress. Roam does not currently send a completion notification.
If a channel fails, the other selected channels continue. Return to the channel review after the run finishes and import the failed channel again. If it continues to fail, contact us.
Importing into an existing channel or importing again
When Slack history is added to an existing Roam channel, Roam preserves that channel’s current members, administrators, and native Roam messages. Imported history is added at its original Slack timestamps.
If the destination already contains a message at the same imported timestamp, Roam keeps the existing message and skips the duplicate. This lets a deliberate reimport add history that was missing from an earlier interrupted attempt without duplicating messages that were already written.
A reimport does not synchronize later edits or deletions from Slack. It also doesn’t remove messages from Roam when they’re absent from a newer export.
Limitations
- Slack Import supports public Slack channels. It doesn’t import private channels, direct messages, or group direct messages, even if they’re present in the export. Only certain Slack plans can export this data, but if you have an archive that has these contact us about it. We'd like to add support for this and will work with you.
- Import one Slack workspace at a time. Enterprise Grid organization-wide exports and multi-workspace imports aren’t supported.
- You can select up to 100 channels in one import run. Return to the same archive to import additional channels.
- The history available to import is limited to the date range and conversations included by Slack in the exported ZIP.
- Slack bots, apps, workflows, and integrations aren’t recreated in Roam. Their supported historical messages may appear through the Slack Import bot. Add replacement integrations using the Roam API, or contact us for help.
- Slack Import is an archive migration, not an ongoing synchronization. New Slack activity doesn’t automatically appear in Roam after the import.