Merge User Accounts

:notebook_with_decorative_cover: This is a how-to topic that will guide site admins through the process of merging multiple user accounts into a single Discourse account.

As of Discourse 2.5.0.beta3, site admins can merge non-staff users through the Discourse UI, and through the rails console for their site.

Merging user accounts in Discourse can be useful in several scenarios:

  • Sometimes a user may end up with more than one account, perhaps because they forgot they had registered before.
  • If a user changes their email address and creates a new account instead of updating their existing account, you might also want to merge the accounts to keep their history intact.
  • In some cases, a user might have different accounts for different roles (e.g., personal use, official use, testing), and later decide to consolidate them into a single account.

Let’s discuss two ways site admins can merge user accounts in Discourse.

Merging Non-Staff Users

Merging non-staff users can be done directly via the Discourse UI.

:warning: Once two users are merged, the action cannot be undone. The source user account is deleted after the merge.

To merge two non-staff users together, navigate to the user admin page of the source user you want to merge into the target user's account, and then scroll to the very bottom and select the Merge button:

image

In the following popup window, type in the username of the account you wish to merge the user into, and click the Transfer and Delete button to merge the users.

image

:person_tipping_hand: Merging large accounts with other large accounts can be quite expensive in database and server time. Depending on the amount of data associated with the source user, merging user accounts can sometimes take a while to process.

When merging user accounts in Discourse, the content of 45 tables gets merged, and all data associated with the source user is merged into the target user, including:

  • Posts and topics created by the user
  • Likes given and received by the user
  • Private messages sent and received by the user
  • User profile information, such as the about me section, timezone, location, etc.
  • User preferences and settings
  • User actions and activity, such as bookmarks, topic views, etc.
  • User badges and achievements
  • User’s trust level and group memberships

In the event of potential conflicts, such as different user preferences, the target user’s details will be kept.

If both users had an anonymous user associated with their account (from the allow anonymous posting feature), the one owned by the source user will be lost.

Additionally, incoming links that still reference the source user (e.g. https://talk.example.com/t/some-topic/17/3?u=source_username) won’t be associated with the target_user.

:discourse: An Important Note about Merging Users and SSO

Merging user accounts can potentially impact SSO depending on how the SSO system is implemented. If the SSO is based on the email address, there should be no issue as long as the email address of the target account is the one used in the SSO system. However, if the SSO system uses a unique user ID that is different from the Discourse user ID, then merging could potentially cause issues if the source account’s unique ID is not correctly mapped to the target account.

Merging Staff Users

:discourse: If your site is hosted with Discourse, please reach out to team@discourse.org if you need to merge staff users.

For security purposes, staff users will still need to be merged via the console.

From the rails console for your site, all types of users can be merged by executing:

rake users:merge['source_username','target_username']

:person_tipping_hand: Be sure to ensure there is no space before/after the comma

Last edited by @JammyDodger 2024-05-25T20:34:29Z

Check documentPerform check on document:
6 Likes

I’m just curious. Why is it important not to have a space and what happens if you have a space next to the comma?

Hi Team,

I am reaching out regarding an issue I’m experiencing with an account merger process that I initiated on Friday morning using the user/Admin UI.

The "Merge progress" has shown no change since Friday afternoon, consistently displaying “Changing post ownership”. Although I’m aware that merging accounts with numerous posts can be time-consuming, the lack of progress over several days is concerning.

I don’t see any relevant entries in the UI error log. At this point, I’m seeking guidance on how to validate whether the merger job is progressing as intended or if it has stalled?

If you refresh, the merge probably finished, IIRC this happened to me a while back, and it did merge, the UI for it just didn’t go away.

2 Likes

Thanks, @Firepup650! After refreshing, the progress screen vanished, and I was redirected to the user’s target profile page. Interestingly, it seems that the merger didn’t occur at all. I’ll give it another try. TY!

1 Like

4 posts were split to a new topic: Don’t log all post edits in staff action logs for a user-merge