Migrating a production website: Doing it right the first time

Hey Discourse meta users,

I’m the founder of http://www.payetteforward.com, an iPhone help-related website that currently gets 750,000 uniques / month and we’re growing.

Our forum is built on bbPress. Discourse is miles ahead of bbPress in terms of user experience - I don’t have to tell you why I’m migrating.

I’ll lay out my primary concerns here. I’ve done a lot of Googling and searching on this forum, and I’m still unclear about some of the problems that could occur during migration and how to avoid making costly mistakes.

I’m positive there are a lot of us out here who are in a similar situation: Tech-savvy enough to spin up a Discourse server and understand basic Linux administration, but whose technical expertise falls off at the precipice of Ruby and Docker. I had dinner last night with the owner of a successful company whose bbPress forum has 80,000 registered users. He sees the value in Discourse too, but even as a programmer, he’s apprehensive about making the switch.

Here are my primary concerns:


My website is built on Google organic traffic. I rank #1 for a lot of popular search terms and a Google penalty could mean the end of my livelihood and my company. You can understand why it’s so important to me.

I understand that each Wordpress post should have a corresponding topic on Discourse to handle comments.

I am concerned about a duplicate content penalty that could occur if Google thinks an article is posted on two separate URLs, and I would never want Discourse to outrank the articles on my website. I see that Discourse can include only a section of each article rather than post the full text, but I’m still concerned.

The plus side of using Discourse is this: To leave a comment, users have to visit the forum, which increases my engagement and total number of page views. I could rel=canonical the original post, but that would mean extra work. I could noindex the Discourse page, but I want the comments to be searchable. I can see the potential Discourse has for helping SEO by creating another page with unique, relevant content, but my gut tells me it could be a disaster.

Migrating from Disqus to Discourse

I’m currently using Disqus and one of my articles has about 500 comments. I’m tech savvy and I’m not looking for a step-by-step walkthrough of how to do it - those already exist on this forum.

I’m also not looking for a walkthrough about how to integrate Discourse comments into Wordpress posts, although the information on that seems less explored. If anyone has experience to share about how they integrated Discourse comments into Wordpress (using wp-discourse or otherwise), I’d be grateful to hear it.

Migrating from bbPress to Discourse and SSO

My friend with 80,000 bbPress users and I are both apprehensive about what specifically will happen when we import bbPress users and posts into Discourse. I’m familiar with the Primetime SSO plugin and as I understand it, SSO will seamlessly allows users in our Wordpress database to log in to Discourse using their existing credentials.

Here’s where I’m not so clear:

Does the flow of information go both ways? If a user creates an account on the Discourse site (using Facebook, Twitter, or a standalone account), is that information fed back into the Wordpress users database?

It’s important to capture user email addresses and keep all user information in one database. Is that how SSO works? Or are there two databases, one for Discourse and one for Wordpress, and the Discourse database only reads user data from the Wordpress database to facilitate log in?

Emails sent during migration

I’ve read the forums and the strong warnings, but I’m unclear about exactly when emails are sent during the import process and why it’s so necessary to validate users’ emails before migrating. This language scares the heck out of me:

Discourse uses emails to map external users to Discourse users, and assumes that external emails are secure. IF YOU DO NOT VALIDATE EMAIL ADDRESSES BEFORE SENDING THEM TO DISCOURSE, YOUR SITE WILL BE EXTREMELY VULNERABLE!
Alternatively, if you insist on sending unvalidated emails BE SURE to set require_activation=true, this will force all emails to be validated by Discourse.

I will clearly ask my questions:

Are emails sent to users when SSO is enabled?
Are emails sent to users when bbPress is migrated?
Are emails sent to users with Disqus comments are imported?
Why is it so important to validate users’ email addresses before an email gets sent to them? (I have 15,000 people in my user database and validating them all would be impossible.)
Why does it make the forum so vulnerable?
How does Discourse validate emails if require_activation is set to true?
Where do I set require_activation=true?

I understand that these questions may seem trivial or simplistic, but I have to ask. With a production website that is my sole source of income and my passion, I can’t get it wrong the first time.

Thank You, Thank You, Thank You!

I am excited to be on the leading edge of mainstream adoption of this awesome software. I want to become a Discourse success story, but I need your help to get there.

Thank you so much,
David Payette


This is going to sound like a sales pitch, and I apologize. But with so much at stake, I strongly recommend you work with someone who has migrated a bunch of sites to Discourse, and knows how to run the gauntlet of the issues you describe, because they have done it before.

So whether us, or someone else, I would secure professional help to get your migration done right.

Happy to document all this stuff as we go, of course. Nothing we do is or will ever be a secret. But it is hard work to get it right and fix whatever needs fixing.


I’m going to recommend not getting too invested in wordpress SSO here. You’ll probably be better served with local+google+facebook+yahoo logins.

Hey Jeff,

Thanks for taking the time to respond so quickly and I see where you’re coming from.

I feel uncomfortable letting even a professional handle the migration because I haven’t seen a successful example of their work with a website analogous to my own, but that’s not the only reason. I’m not afraid of getting my hands dirty in Linux and the code (to a certain point).

My questions are more about the features and behavior of Discourse than the technical installation / migration. I realize I posed a lot of questions in a single post, but I tried to paint a clear picture of who I am and the barriers someone like me faces when they are about to switch to Discourse.

My company is a baby. Actually, it’s been just me until I started hiring some freelance writers a few days ago. I don’t have the funding (at least I don’t think I do) to hire a professional at this point.

I wrote this post with the hope I wouldn’t be dismissed because my questions are too simplistic. It’s hard for me to admit I don’t know something, especially in the presence of experts whom I admire.

My language was too strong when I talked about losing my livelihood and business - that’s not going to happen. There is a margin for error. I’m not freaking out. I just wanted everyone to understand it’s important to me to have a solid understanding before I dive in. (Usually, I’m the opposite - dive in, fix on the fly.)

Thanks for all of your support! I hope someday I can give back at least a small part of what is so freely offered here.


I thought about that too, and I’ll think I’ll take your advice for my website. For websites with large forums, abandoning the preexisting user tables is problematic. This is a barrier to entry for established companies whose adoption of Discourse would benefit them and Discourse as a whole…

No, all local logins will be disabled as soon as you enable SSO.

Yes, the latter.
Actually, the Discourse database is ‘fed’ data whenever a user logs in through Wordpress.

Regarding emails during import, just disable all emails using the site setting and you will be fine.

1 Like

I migrated a (after pruning) 20k users bbPress site to Discourse, and I can at least assure you that:

  • SEO did not take a hit. (We’re still using our WordPress site as the landing page & blog. Discourse for comments).
  • User engagement definitely seemed to increase (we didn’t collect enough data from bbPress to make a stronger case I’m afraid)
  • There was remarkably little resistance to the change, in no small part “thanks” to many issues we had been experiencing with bbPress due to a nasty case of extensionitis. (but be sure to give them an early heads up, and let them be as much part of the process as possible).

I’m curious about your SSO situation. Are you using WordPress for anything that actually requires login? A “clean split” between WordPress and Discourse is greatly preferable. For us, it didn’t make any sense to be funnelling user logins through a WordPress site that could just as well be a collection of static pages (which it might just be, in the future). Discourse is our community, so it might as well be our primary logins database.

You can see the same thing being done here on Discourse.org.


Let me try to answer this bit: Discourse is built on the assumption that email addresses are valid. The most obvious risk is that users with mistyped E-Mail addresses can lose their account, because anyone who can read their email can reset their password. There even is a hidden login form for anyone who can read an admin’s mail to log in.

No one can really give you a full list of the risks involved – Discourse just never was designed to work without validated email addresses.

This must be part of the SSO response, just like e.g. the flags to mark the user as an admin.

When a user uses SSO for the first time, and require_activation is set, his account will be created similarly to when SSO is off: He will be sent an activation mail to finalize has registration.


Hey Michael,

Thanks for the time you took to get back to me. That’s the nail in the coffin for SSO. Discourse login is so much more intuitive than Wordpress login anyway - I get emails all the time complaining about it. I’m ditching it and we’ll use Discourse for login.

Quick question: Is there a site setting to disable email in the Admin section that I’m not seeing, or do I have to comment out the email section and rebuild the docker container to disable email?


Note the search bar in the admin settings - a great tool for me:

1 Like

Hey Erlend,

Thanks so much for getting to me. Would you share the URL of the website you migrated? I’d love to see the way you integrated comments.

Great to hear that SEO was unaffected - I’d love to see the website itself and how they implemented the Discourse side of things to get an idea of what worked for them.

I’m done with bbPress too - for me it’s not as much a case of extensionitis (hilarious, never heard that before), it’s more of a case of userloginphobia.

Your point about my SSO situation is dead on. I’m going to do the clean split. The only thing that requires login, at this point, is Disqus for comments - and I’d rather shoot them off to the Discourse forum anyway because it’s so much more engaging and I think using Disqus is a wasted opportunity to further engage my readers. Thanks for this invaluable advice.

I didn’t realize how in depth the migration process was but I think the guide you pointed me toward is an excellent walkthrough. I’ll be in touch if I need more help, and let me know if you offer migration services professionally. In my case I might just skip the migration and start fresh - my forum is so new that it only has 40 topics or so.

Thanks again and talk soon,

Oh boy, my n00bness is showing. Thank you.

1 Like

Sure. Here’s an example WP post with Discourse comments: (just needed to put a bit of custom CSS in the wp-discourse plugin’s templates)


And here’s the forum (we track the stable 1.3.x branch)

[quote=“payetteforward, post:11, topic:33484”]
I didn’t realize how in depth the migration process was but I think the guide you pointed me toward is an excellent walkthrough.
[/quote]Bear in mind that things might have changed (hopefully for the better) since then. Then again, migrations will always be friggin’ hard, no matter what you’re moving from and to.

1 Like