A major complaint with Outlook's Conversation view is the inability to split and merge conversations. Some email clients remove the conversation id, some message threads go way off topic and should be split into their own thread.
I'm trying conversation view, but it doesn't seem to allow me to deal with a common issues, such as users creating a new message instead of hitting reply, using a reply to create a new message to someone, or separate threads with the same subject. How can I tell Outlook where they belong?
How can I tell Outlook a new thread is part of the same conversation?
Scenario: Somebody doesn't reply to an e-mail in a conversation, but creates a new e-mail with a new subject. This can also happen when other people in the thread don't use Outlook (losing the conversation ID in the header) or with messages sent to mailing lists. Extra spaces before or after RE: or multiple RE: in the subject can also cause Outlook to create a new thread for certain messages.
How can I tell Outlook these messages to be a new conversation thread?
Scenario: Somebody uses an e-mail in a particular conversation to start what should be a new message thread. For example, instead of using autocomplete or the address book, people click Reply then delete the subject and body from the message to start a new one to that person or group.
How can I tell Outlook the messages are unrelated?
Scenario: Two separate conversation threads have the exact same subject because they were originally produced by an automated system that gives all e-mails the exact same subject line.
While Outlook can't fix any of these problems on it's own, you can use a macro to add a message to a conversation or move one to a new conversation.
These macros require Redemption.
Add Messages to a Conversation
This macro adds messages to a conversation. Select the message that should be added to a conversation, hold shift and select a message in the conversation it belongs in, then run the macro.
This macro was tested in Outlook 2016 and should work in Outlook 2010 and newer. Note that it may not work with all account or data file types. It's highly recommended that you test it on a few messages first, so you can see how it works and verify it works on your account type.
Before and After running the macro:

Sub AddToConversation()
On Error GoTo ErrHnd:
Dim oNS As Object
Dim oRDOSess As Object
Dim oRDOItem As Object
Dim sEntryID As String
Dim sStoreID As String
Dim lNumMsgs As Long
Set oRDOSess = CreateObject("Redemption.RDOSession")
Set oNS = Nothing
Set oNS = Outlook.GetNamespace("MAPI")
oNS.Logon
oRDOSess.MAPIOBJECT = oNS.MAPIOBJECT
lNumMsgs = Outlook.ActiveExplorer.Selection.Count
If lNumMsgs < 2 Then
MsgBox ("To add messages to a conversation, first select a message then select the target conversation and run this macro.")
GoTo ErrHnd:
End If
For i = 1 To (lNumMsgs - 1)
With Outlook.ActiveExplorer.Selection(i)
strEntryID = .EntryID
strStoreID = .Parent.StoreID
End With
Set objRDOItem = oRDOSess.GetMessageFromID(strEntryID, strStoreID)
objRDOItem.ConversationTopic = Outlook.ActiveExplorer.Selection.Item(lNumMsgs).ConversationTopic
objRDOItem.Save
Next i
ErrHnd:
Set oNS = Nothing
Set oRDOSess = Nothing
Set objRDOItem = Nothing
Set strEntryID = Nothing
Set strStoreID = Nothing
lNumMsgs = 0
End SubRemove Messages from Threads
This macro removes messages from a conversation. Select the message that should be removed from a conversation then run the macro. By default, the new conversation will use the message subject, but you can enter any subject.
This macro was tested in Outlook 2016 and should work in Outlook 2010 and newer. Note that it may not work with all account or data file types. It's highly recommended that you test it on a few messages first, so you can see how it works and verify it works on your account type.
Before and After running the macro (I added a character to the end of the subject so they would create a new thread):

Sub ChangeConversation()
On Error GoTo ErrHnd:
Dim oNS As Object
Dim oRDOSess As Object
Dim oRDOItem As Object
Dim sEntryID As String
Dim sStoreID As String
Dim lNumMsgs As Long
Dim sNewConv As String
Dim sTmp As String
Set oRDOSess = CreateObject("Redemption.RDOSession")
Set oNS = Nothing
Set oNS = Outlook.GetNamespace("MAPI")
oNS.Logon
oRDOSess.MAPIOBJECT = oNS.MAPIOBJECT
lNumMsgs = Outlook.ActiveExplorer.Selection.count
If lNumMsgs < 1 Then
GoTo Instructions:
End If
sNewConv = InputBox("Change the Conversation ID to:", "Change Conversation ID", "subject")
If sNewConv = "" Then
GoTo Instructions:
End If
For i = 1 To lNumMsgs
With Outlook.ActiveExplorer.Selection(i)
strEntryID = .EntryID
strStoreID = .Parent.StoreID
End With
Set objRDOItem = oRDOSess.GetMessageFromID(strEntryID, strStoreID)
If UCase(sNewConv) = "SUBJECT" Then
sTmp = Outlook.ActiveExplorer.Selection.Item(i).Subject
sTmp = Replace(Replace(Replace(Replace(Replace(Replace(sTmp, "RE: ", ""), "FWD: ", ""), "FW: ", ""), "Re: ", ""), "Fw: ", ""), "Fwd: ", "")
objRDOItem.ConversationTopic = sTmp
Else
objRDOItem.ConversationTopic = sNewConv
End If
objRDOItem.Save
Next i
GoTo ErrHnd:
Instructions:
MsgBox ("To change a conversation ID, select the message(s) then run this macro. Enter the new ID, and click OK. NOTE: To change the conversation to the default (to match the subject), enter the word 'subject' as the new ID.")
ErrHnd:
Set oNS = Nothing
Set oRDOSess = Nothing
Set objRDOItem = Nothing
Set strEntryID = Nothing
Set strStoreID = Nothing
lNumMsgs = 0
sNewConv = ""
sTmp = ""
End Sub
Install Redemption
To use Redemption, download the Developer version (it's free for personal use). Run the downloaded file; it will install the 32-bit version and if using 64-bit Windows, the 64-bit version.
Open the Visual Basic Editor (Alt+F11) then go to Tools, References and locate Redemption in the list. Tick the box the close the dialog.

How to use macros
First: You will need macro security set to low during testing.
To check your macro security in Outlook 2010 or 2013, go to File, Options, Trust Center and open Trust Center Settings, and change the Macro Settings. In Outlook 2007 and older, it’s at Tools, Macro Security.
After you test the macro and see that it works, you can either leave macro security set to low or sign the macro.
Open the VBA Editor by pressing Alt+F11 on your keyboard.
To put the code in a module:
- Right click on Project1 and choose Insert > Module
- Copy and paste the macro into the new module.
More information as well as screenshots are at How to use the VBA Editor
More Information
Another macro to merge conversations:
E-Mail: Merge conversation (Michael Bauer)
ahmetgns says
I developed the macro of Michael Bauer, which does not copy the conversationindex of the main email to the new ones but append suffixes to it to make them indented in the conversation view. The limitation of that macro was, it uses the current system time to generate the suffix to the original conversationindex. So when it is run for multiple new mails, they are indented but the order of them may be mixed, not chronological. The new macro merges them according to each email's sent time, so even you merge an earlier mail later on, it always merges in the conversation in the correct order. That was the most important limitations of the two macros given above for me so I would like to share mine with you. It is in the attachment.
Hywel Harris says
Only problem with this macro is that if you reply to the new email, then add that to the main conversation, your reply is no longer showing in the conversation, only in the sent folder, which sort of limits the usefullness of this macro in tidying up an inbox.
However if you routinely only ever use the macro on a newly incoming email before you reply to it then its fine.
Madalin says
Hello,
Thank you for sharing this. I was looking for a while for this code to help me add messages into conversations. I followed your recommendations and could add the macro in the ribbon. When testing, the merging doesn't work completely. It just changes the title of the message that I want to add and makes it similar to the conversation. However, is not added in the conversation itself, so I could see it when I expand the conversation. Is there any of the settings from the macro that I could change to make this happen?
Thank you for your time!
Dan says
Dear Diana,
AddToConversation works fine in VBE environment, i.e. when I open the Microsoft Visual Basic for Applications, but nothing happens when I customize ribbon and add macro command to either of tabs of MS Outlook menu and assign a button to it. Any ideas as to why this happens?
Dan
Atrusty says
Both AddToConversation & ChangeConversation were working fine in my Outlook 2013, till my Win10 profile corrupted 2 weeks ago. When I tried to re-install these macros, I got some errors. I'm a VBA noob, but could understand that certain lines of the ChangeConversation code were being red-lighted for error. I fixed them largely by guesswork and it's working now … apparently some extra commas & double-quote marks have got added somehow.
Here are the lines:.
Set oRDOSess = CreateObject(","Redemption.RDOSession",")
Set oNS = Outlook.GetNamespace(","MAPI",")
sNewConv = InputBox(","Change the Conversation ID to: ",", ","Change Conversation ID",", ","subject",")
If sNewConv = ",""," Then
sTmp = Replace(Replace(Replace(Replace(Replace(Replace(sTmp, ","RE: ",", ","","), ","FWD: ",", ","","), ","FW: ",", ","","), ","Re: ",", ","","), ","Fw: ",", ","","), ","Fwd: ",", ","",")
MsgBox (","To change a conversation ID, select the message(s) then run this macro. Enter the new ID, and click OK. NOTE: To change the conversation to the default (to match the subject), enter the word 'subject' as the new ID.",")
Abdullah says
@Oleg, thanks that is working perfectly. However it is not working for me for the split conversation. I keep getting syntax error. Can you fix that as well
Oleg says
RE: Add Messages to a Conversation. It seems "Show as Conversations" mode in Outlook 2016 does not use "ConversationTopic" attribute for grouping, but it uses "ConversationIndex". So, if you add line
objRDOItem.ConversationIndex = Outlook.ActiveExplorer.Selection.Item(lNumMsgs).ConversationIndexbeforeobjRDOItem.Saveitthe script will work fine.Walter Smith says
This got it running for me! Outlook365.
Note it's not
objRDOItem.Saveit it'sobjRDOItem.Save (I know I know, pesky formatting pickiness...)Abdullah says
I did exactly as the article, but unfortunately, nothing happens. I'm using Outlook 365.
One thing I'm not sure about the macro security, I could not find the option for low security and I choose notifications for all macros.
Please help, this issue has been bothering me for a long period of time
Greg says
Is there a way to write these scripts without using Redemption?
Unfortunately I'm on a company network that doesn't allow me to download and install Redemption, but I would like to get this working.
Diane Poremsky says
No, unfortunately.. unless you know C# or dephi and mapi.
Joe says
The macro works as expected but within 2 seconds after merging the emails they are automatically unmerged. Any idea why outlook does this? Steps to reproduce include:
1. Open main email within inbox
2. Select emails within inbox to be merged into main email/conversation
3. Run the macro
4. Confirm that emails were merged
5. See emails automatically unmerged
Poor says
This used to work in my outlook 2010 but It's no longer available since I installed Outlook 2016. Any help please? I'm suck at vba coding.....
Diane Poremsky says
What type of email account? I noticed it doesn't work with my exchange mailbox but seemed to work with others.
Henry says
good tip, but this doesn't work in my Outlook 2013 64bit
somehow the conversation title changes, but they aren't merged together.
Diane Poremsky says
What type of email account? I noticed it doesn't always work 'as expected' with my Exchange accounts but seems to be fine with POP3 accounts. I don't recall if i tested with an imap account, but imap accounts are funky in outlook 2016 anyway - you might end up with duplicates.
Joe says
It doesn't work also for me with outlook 365 ProPlus
Diane Poremsky says
I noticed it's kinda buggy with office 365 exchange accounts. Unfortunately, I'm not aware of a way to fix those problems (and is likely the reason Microsoft didn't add a similar feature.)