# Thread

A **thread** is the email-shaped [conversation](/docs/glossary/conversation/): the messages of one exchange, joined by mail's own threading references rather than by their subject line, held as one canonical record with its own triage state. Every thread is a conversation; not every conversation is a thread.

- **Status:** Available
- **Audience:** both
- **Channels:** email
- **In the app:** #/inbox
- **Last verified:** 2026-09-10
- **Canonical:** https://connectbyjbrh.com/docs/glossary/thread/

## What joins messages into one

Mail carries references from a reply back to what it answers, and that chain is what builds a thread. Two consequences follow, and both look like faults the first time you meet them.

**A changed subject does not necessarily split a thread** — If the reply still references the message it answers, it stays where it belongs. That is usually what you want: people rename subjects mid-exchange.
**A reused subject does not join one** — Somebody writing a fresh message with an old subject line starts a new exchange, because nothing links it to the previous one. A thread is a chain of references, not a matching string.
**A forward is a new chain** — Forwarding to a third party begins its own exchange with its own participants, and it does not merge back.

Threads exist twice in the database on purpose. What a provider adapter stored sits in the provider's own shape; the canonical thread and its messages are what the engine and the screens read, and a bridge copies between them. The engine never reads the provider's tables, which is why connecting a different mail provider changes nothing about how a thread behaves.

## The state a thread carries

| Field | Set by | What reads it |
|---|---|---|
| Priority | You, or triage | The engine, when it chooses what to work on next |
| Starred | You | The screens and your saved filters |
| Deleted | You | The lists; the accountability trail is unaffected |

The first row is the one worth acting on. Priority is not a colour — correcting it changes what Connect picks up next, so re-prioritising a thread you care about is a working instruction rather than a personal bookmark. Calls carry the same three fields, which is what lets one queue mix mail and telephony without a second vocabulary.

## Thread against its neighbours

**A conversation** — The general word, across every channel. Reach for *thread* only when the mail-specific joining rules are the point; otherwise say conversation and stay channel-neutral.
**A provider's own thread identifier** — Gmail and Graph each keep their own grouping. Connect stores what the adapter gave it and works from the canonical record, so an identifier you see in a provider's interface is not the identifier Connect works with.
**A [relationship](/docs/glossary/relationship/)** — Threads end. A relationship does not: it holds every exchange with a person across channels and years, and it is the right place to look for context a single thread cannot have.
**A [mailbox](/docs/glossary/mailbox/)** — The address the thread arrived at. One mailbox holds many threads, and its role and signature shape how replies on them read.

> **Note** A [held reply](/docs/glossary/approval/) belongs to a thread and can go stale on it. If the other party writes again while the reply waits, approving it sends an answer to the older message — regenerate rather than editing, so the newer material is actually read.

## Questions

### Why did a reply start a new thread instead of continuing mine?

Almost always because the sender composed a fresh message rather than replying, so nothing referenced the original. A matching subject line does not join two exchanges.

### Does deleting a thread delete the messages?

It removes it from the working lists. The record of what Connect decided and did remains in the [audit](/docs/glossary/audit/) trail, which is deliberately not a list you tidy.

### Can two mailboxes share a thread?

A thread belongs to the endpoint it arrived at. Two addresses on the same exchange produce two records, and the [person](/docs/glossary/person/) is what joins the history together.

## Related

- [Conversation](https://connectbyjbrh.com/docs/glossary/conversation/)
- [Mailbox](https://connectbyjbrh.com/docs/glossary/mailbox/)
- [Person](https://connectbyjbrh.com/docs/glossary/person/)
- [Email in Connect](https://connectbyjbrh.com/docs/email/)
- [How a mail cursor loses messages, and how to stop it](https://connectbyjbrh.com/research/cursor-loss/)

## What this page is based on

- docs-source/sources/GENERAL.md §3 — mail exists twice; triage on canonical rows
- docs-source/sources/GENERAL.md §4 — bridge and provider adapters
- `docs-source/facts.py` — CHANNELS.email providers
