A client groups a reply with earlier messages by inspecting its headers. The message IDs in In-Reply-To and References let it show one conversation.
Which headers keep replies in one thread?
The replying message puts the parent message's Message-ID in In-Reply-To. It also carries the chain of related message IDs in References. A client can rebuild the conversation when several replies branch from one message.
RFC 5322 section 3.6.4 says In-Reply-To may identify the message or messages to which the new message is a reply. References may identify the related messages in the thread.
What does a threaded reply look like?
A message with Message-ID: <m1@example.com> can receive a reply with these headers:
In-Reply-To: <m1@example.com>
References: <m1@example.com>
A reply to that reply appends the new parent to References:
In-Reply-To: <m2@example.com>
References: <m1@example.com> <m2@example.com>
Keep each ID exactly as the sender supplied it. Do not invent a new ID for the parent or copy a subject line as a substitute.
| Header | Illustrative value | Job |
|---|---|---|
Message-ID | <reply@example.com> | Identifies this message |
In-Reply-To | <original@example.com> | Names the message being answered |
References | <original@example.com> | Carries the ancestry chain |
These values are synthetic examples. A Re: subject alone does not identify the parent message.
Why can a reply leave the thread?
A client may start a new conversation when In-Reply-To and References are missing or point at a different message. Changing the subject can also affect grouping because clients combine headers with their own subject rules.
A forwarded message is usually a new conversation. It contains the old content for context. It does not automatically identify the original message as its parent.
Reply sends to the author or Reply-To address. Reply-all also keeps the original To and Cc recipients, subject to the sender's mailbox rules. A client can still group or split messages differently, because rendering and grouping are client behavior.
How do I preserve a thread with Bird?
When you reply through a Bird mailbox, call replyEmailThreadMessage for the received message at POST /v1/email/threads/{thread_id}/messages/{message_id}/reply. The operation uses the mailbox write scope. Bird derives the subject and reply headers. The outbound message stays in that thread. Use compose for a new thread. The mailboxes guide shows the reply flow and webhook events for incoming mail.
If your integration sends raw mail, preserve the parent Message-ID in In-Reply-To and the full chain in References. Store those headers with the message record so retries use the same relationship.
In short
In-Reply-Tonames the message being answered.Referencescarries the related message chain.- A missing or unrelated header can start a new conversation.
- Bird mailbox replies stay in the received message's thread.