← Back to Wiki
Admin
Importing from Discord
The biggest switching cost for moving a community off Discord is starting from zero — no
channels, no roles, no history. The owner-only Import tool (Instance Settings → Import, added in v0.3.0)
removes that: point it at an existing Discord server and it recreates the structure here.
Run this once, early. It's a first-time-setup tool, not a sync — re-running it against a
server that already has content will create duplicate channels, roles, and emoji, not merge into what's
there. Do it before real Outpost-native content accumulates.
Setting up the Discord side
- Create a Discord bot application at discord.com/developers/applications and copy its bot token.
- Invite the bot to the Discord server you're migrating from, granting it View Channels and Read Message History.
- If you're importing message history, also enable the Message Content Intent under the bot's settings — without it, Discord won't hand over message text at all.
This uses a real Discord bot application with your own bot token and the official Discord API, rate-limit
handling included — not a self-bot/user-token scraper, which is the actual pattern that risks a Discord
ToS violation.
What gets imported
- Channels — text and voice. Discord categories don't have an Outpost equivalent, so a
category gets flattened into the channel name (a
Gaming category with a game-chat
channel becomes gaming-game-chat).
- Roles — name, color, and position, plus a best-effort mapping from Discord's ~40-flag
permission bitfield down to Outpost's 7 permissions. Review the Roles tab after import; this mapping is
coarse by design, not 1:1.
- Custom emoji — re-hosted on your own instance, usable immediately as
:name:.
- Message history — off by default (it can take a while on a large server, and is
rate-limited by Discord's own API). Each original Discord author is represented by their own webhook
identity, named and avatar'd after them — not a real account, and not one shared "Discord Import" identity.
What doesn't
- Members. No API can silently add someone to an Outpost instance — people still join
via invite individually, same as any other new member.
- Mentions, threads, pins, and reactions from the original Discord messages. A
<@id> mention renders as literal text (the target has no Outpost account to link to).
- Only the first attachment on a message — Outpost's message model has one attachment slot, not a list.
Your bot token is used only in memory for the duration of the import job — it's never written to the
database or logged.