feat(messaging): link emails by Reply-To as a REPLY_TO participant (#22216)

Relay senders (e.g. a website form sending as a shared address with the
real contact in Reply-To) never linked to the contact because matching
only used From/To/Cc/Bcc. Record Reply-To addresses under a new REPLY_TO
participant role across the Gmail, Microsoft and IMAP drivers, excluding
any that just repeat the sender.

Adds the REPLY_TO option to the messageParticipant role field and a 2.17
workspace command to backfill it for existing workspaces.

QAed with real test run

<!-- This is an auto-generated description by cubic. -->
<a
href="https://cubic.dev/pr/twentyhq/twenty/pull/22216?utm_source=github"
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a>
<!-- End of auto-generated description by cubic. -->
This commit is contained in:
neo773
2026-06-26 17:58:51 +05:30
committed by GitHub
parent ebe067f65c
commit 9747e3a7a3
12 changed files with 363 additions and 5 deletions
@@ -240,6 +240,13 @@ export const buildMessageParticipantStandardFlatFieldMetadatas = ({
position: 3,
color: 'red',
},
{
id: '20202020-3b1a-4e2c-9d7f-8a6b5c4d3e2f',
value: MessageParticipantRole.REPLY_TO,
label: i18nLabel(msg`Reply To`),
position: 4,
color: 'purple',
},
],
},
standardObjectMetadataRelatedEntityIds,