Skip to content
Bonfire Docs
Docs

tutorial

Migrate your community to Bonfire

Already running a community somewhere else? You don't have to start from zero. Bonfire's import engine pulls your members, channels, and full message history into a fresh community — with a safe preview before anything is written. This tutorial covers what's shipped today, how to run an import end to end, and the CSV path for bringing members over by email. About 12 minutes.

What you can import today

Be clear-eyed about this: Discord is the only fully supported source right now. A Discord import brings over:

  • Members — display names, usernames, avatars, join dates, and roles
  • Channels and categories — text, announcement, and forum channels, with their structure preserved
  • Message history — the full back-catalogue per channel, paginated so even large servers complete
  • Attachments, reactions, and threads — media is re-hosted on Bonfire, threads and replies are stitched back together

More sources are on the roadmap: Slack (export ZIP), Telegram, WhatsApp, Discourse, Circle, Skool, and Facebook Groups. These appear in the source picker marked Bientôt / Coming soon and are not selectable yet. Until they ship, the CSV bulk-invite path (covered below) is the way to bring members across from any other platform.

One thing Discord never exposes to bots is member email addresses. Imported Discord members come in without emails, which means you'll re-invite them to claim their Bonfire account. Plan for that — it's a feature, not a gap. Members opt in rather than being silently moved.

1. Open the import wizard

The import wizard runs as part of onboarding, at the /onboarding/import route.

  1. Sign in as the community owner or an admin (the wizard checks your role).
  2. Go to /onboarding/import.
  3. You'll land on the source picker — a grid of platforms. Only Discord is selectable; the rest show a Coming soon badge.
  4. Click Discord to start configuring.

If you'd rather skip importing and build by hand, the picker has a Start from scratch option that drops you straight into your new community.

2. Connect your Discord server

Discord import uses a bot token, so you authorise the pull yourself — Bonfire never asks for your password.

  1. Create a bot in the Discord Developer Portal and invite it to your server with these permissions:
    • View Channels
    • Read Message History
    • Server Members Intent (a privileged intent — toggle it on in the bot settings, otherwise the member list comes back empty)
  2. Copy the bot token and your server's Guild ID.
  3. Paste both into the Discord setup step and continue.

Bonfire validates the credentials immediately. If the token is wrong you'll see Invalid token; if the bot isn't in the server you'll see Bot not invited — fix and retry before going further.

3. Review the dry-run preview

Nothing is imported on faith. Before any write, Bonfire runs a cheap scan and builds a dry-run report so you can see what you're about to bring in.

  1. The preview shows your server name, member count, channel count, an estimated message total, and a few sample messages.
  2. Large servers get a heads-up — an import of hundreds of thousands of messages can take a few hours, and the preview estimates the duration.
  3. Read any warnings (for example, an import that's large relative to your plan's quota).
  4. When it looks right, approve to start the real import. To back out, reject and you're returned to the source picker with nothing changed.

The dry-run is the safety rail. Until you approve, Bonfire has only sampled your server — it has not created a single member or message.

4. Watch the import run

Once approved, the wizard moves you to the live cockpit at /onboarding/import/[jobId].

  1. Members come first, then channels, then messages channel by channel.
  2. Progress counters update live as each phase completes.
  3. Attachments are downloaded, optimised, and re-hosted on Bonfire — and de-duplicated, so the same file shared twice is stored once.
  4. If a single channel hits an error, the import keeps going and logs the failure rather than aborting the whole job. You finish with a clear list of anything that didn't make it.

When it's done you get a receipt — counts of everything imported, anything skipped, and highlights like your oldest message and busiest channel.

5. Bring members across with a CSV (any platform)

If your community lives somewhere Bonfire can't import yet, you can still move the people. Bring their email addresses across as invitations.

  1. Export your member emails from your current platform into a list.
  2. In Bonfire, go to Admin → Invitations (the Invitations page under Admin → Members).
  3. Choose Invite Members, then paste the emails — one per line or comma-separated — or upload a CSV.
  4. Send. Each person receives a join link by email; they sign in with email or Google and land in your community.

This is also how you onboard imported Discord members: because Discord doesn't share emails, you collect emails separately and invite that list here. Very large lists are processed in batches.

Tip: Pair the CSV invite with a ready welcome space. Set up Admin → Spaces and Admin → Onboarding first so new arrivals have somewhere to land — see Invite your first members for the full flow.

What about leaving Bonfire?

Migration runs both ways. If you ever want your data out, Admin → Data Export (the /admin/sovereignty page) produces a one-click ZIP of everything your community has created — members, channels, messages, courses, settings — one JSON file per table, with a README for re-importing into any Bonfire instance. Your data is portable on the way in and on the way out.

  • Invite your first members
  • Launch your community
  • Join a community

FAQ

Which platforms can I import from right now? Discord is fully supported today. Slack, Telegram, WhatsApp, Discourse, Circle, Skool, and Facebook Groups are on the roadmap and appear in the picker as Coming soon — not yet selectable. For those, use the CSV bulk-invite path to move members.

Will my Discord message history come across? Yes — the full history per channel, along with members, channels, categories, attachments, reactions, and threads. Voice channels and unnamed/DM channels are skipped.

Why don't imported Discord members have emails? Discord never exposes member emails to bots, by design. Imported members arrive without emails, so you re-invite them by CSV and they claim their Bonfire account themselves — opt-in, not a silent move.

Is anything imported before I approve? No. The dry-run only samples your source to build a preview. Nothing is written until you approve, and rejecting leaves your new community untouched.

Where does the import wizard live? At /onboarding/import, available to owners and admins. The live progress cockpit is at /onboarding/import/[jobId].

How big a community can I import? Large servers work — messages are pulled in pages and the job runs through to completion. Imports in the hundreds of thousands of messages can take a few hours; the dry-run preview estimates the duration before you commit.