Inbound Email classification using the Outlook Thread-Index header<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } Property: glide.inbound.email.classify.by.thread_index Applies to: All supported releases Category: Email / Notifications / Inbound Email Audience: Administrators, Platform Support Engineers Overview When ServiceNow receives an inbound email, it runs a sequence of classification strategies to determine whether the email is a reply to an existing record or a new email that should create a new record. One optional strategy uses the Outlook Thread-Index email header as a classification signal. This strategy is controlled by the system property glide.inbound.email.classify.by.thread_index. It is DISABLED by default and must be manually created and enabled. This property is ONLY useful for environments where end users reply to ServiceNow notifications from Microsoft Outlook and where certain email conditions described below prevent the standard classification strategies from working. Background: How Inbound Email Classification Works ServiceNow evaluates every inbound email against a fixed sequence of strategies. Understanding this sequence is essential to knowing where Thread-Index lookup fits and whether enabling it is appropriate. The classification runs in this order: STEP 1: FORWARD CHECK. The system checks whether the email has a recognized forward prefix in the subject (FW:, for example) AND a forward marker in the body (such as "From:"). If both conditions are met, the email is classified as a forward and no further classification runs. This check always runs and takes highest priority. STEP 2: WATERMARK LOOKUP. The system looks for a ServiceNow watermark (formatted as Ref:MSGxxxxxxx) in the subject line or body. It also checks indirectly via the In-Reply-To header: if the incoming email's In-Reply-To value matches the message_id of a previously sent sys_email record, the system retrieves the watermark from that sent email. This strategy always runs and is the primary and most reliable classification mechanism. Classification as a reply succeeds here in the vast majority of cases. STEP 3: RECORD NUMBER LOOKUP. This step only runs when no watermark was found AND the subject line carries a recognized reply prefix such as RE:, AW:, or R:. If both conditions are met, the system attempts two sub-strategies in sequence: Subject/record number match: the subject line is tokenized and matched against known record number prefixes in the sys_number table (INC, CHG, RITM, etc.). This behavior is controlled by the property glide.email.classify.by.record.number, which defaults to TRUE.In-Reply-To header match: the system searches for a sys_email record whose message_id matches the current email's In-Reply-To header value. This behavior is controlled by the property glide.inbound.email.classify.by.in_reply_to_header, which defaults to TRUE. STEP 4: THREAD-INDEX LOOKUP. This step only runs when the watermark lookup AND the record number lookup have both failed to locate a source record. If the property glide.inbound.email.classify.by.thread_index is TRUE, the system reads the Outlook Thread-Index header from the incoming email and resolves it through an internal index to find the associated source record. If a match is found, the email is classified as a reply. This property defaults to FALSE and must be created manually. STEP 5: NEW EMAIL. If no strategy above has produced a match, the email is classified as new. What the Thread-Index Header Is Thread-Index is a proprietary email header added by Microsoft Outlook on all threaded email conversations. It is a base64-encoded binary value that identifies a conversation thread and is extended (with additional bytes appended) on each successive reply. It is not a standard MIME header and is not produced or preserved by most non-Outlook email clients. ServiceNow stores Thread-Index values associated with outbound notification emails so that incoming emails carrying a matching Thread-Index value can be traced back to the original source record. When to Enable This Property Enable glide.inbound.email.classify.by.thread_index ONLY when all three of the following conditions are true: End users are replying to ServiceNow notification emails from Microsoft Outlook.Those replies are arriving as new emails in ServiceNow rather than updating the existing record.Investigation of the raw email headers and the sys_email record for those replies confirms that the watermark is absent, the In-Reply-To header is absent or does not match any known message_id, AND a Thread-Index header IS present. Common environments where these conditions occur: enterprises running Outlook with aggressive email gateway or DLP policies (Proofpoint, Mimecast, Symantec Email Security, and similar), or Microsoft 365 tenants where corporate disclaimer or footer injection modifies the email body in a way that corrupts or removes the ServiceNow watermark. Do NOT enable this property as a general troubleshooting step without first confirming the above. Enabling it without the underlying conditions present provides no benefit and introduces risks described in the Considerations section below. Configuration This property does NOT exist out of the box. It must be created manually. Navigate to System Properties (sys_properties.list) and create a new record with the following values: Name: glide.inbound.email.classify.by.thread_indexType: true | falseValue: trueDescription: Enables classification of inbound emails as replies using the Outlook Thread-Index header when no watermark or record number match is found. No restart is required. The property takes effect on the next inbound email processing cycle. Related Properties These properties govern the other steps in the same classification chain and are referenced here for context: glide.email.classify.by.record.number: controls whether the subject-line record number tokenization runs during Step 3. Defaults to TRUE. Set to FALSE in environments where subject-based classification causes cross-tenant contamination (see the Considerations section). glide.inbound.email.classify.by.in_reply_to_header: controls whether the In-Reply-To header match runs during Step 3. Defaults to TRUE. This is independent of glide.email.classify.by.record.number and can be toggled separately. glide.email.reply_subject_prefix: controls which subject prefixes are recognized as reply indicators for Step 3. Defaults to re:,aw:,r:,Accepted:,Tentative:,Declined:. If none of these prefixes appear in the subject, Step 3 is skipped entirely regardless of the other properties. Considerations and Known Risks Thread-Index is Outlook-specific. This property only helps with emails that originated from Microsoft Outlook and that carry the Thread-Index header. Gmail, Apple Mail, Thunderbird, and most non-Outlook clients do not produce this header. Enabling the property has no effect on emails from those clients. Forwarded emails can carry the original Thread-Index value. When an Outlook user forwards an old email, the forwarded message retains the Thread-Index of the original conversation. If the forwarded email reaches ServiceNow, it may be classified as a reply to the original ticket rather than as a new email. This is the primary false-positive risk and should be weighed carefully before enabling the property. The Thread-Index lookup depends on ServiceNow having stored the value at send time. If the outbound notification that generated the conversation was sent through a custom channel that bypassed the standard notification path, ServiceNow may not have recorded the Thread-Index value and the lookup will return no match. In that case the email falls through to new regardless. This property is not tracked in the default update set scope. Because it must be created manually and is a platform-level sys_properties record, it can easily be lost during a clone or remain undocumented in an instance's configuration baseline. Record its creation in your instance hardening or configuration documentation. Troubleshooting Classification Failures If replies are still arriving as new emails after enabling this property, work through the following checks in order: First, confirm the inbound email has a Thread-Index header. Open the relevant sys_email record and inspect the headers field. A Thread-Index header will appear as Thread-Index: followed by a base64 string. If no Thread-Index header is present, the property cannot help and a different root cause applies. Second, confirm the watermark is genuinely absent. If the Ref:MSG watermark is still present in the body or subject of the received email, the watermark lookup in Step 2 should have caught it. If it did not, the issue may be with watermark format mismatch rather than the classification strategy. Third, confirm the In-Reply-To header is absent or unresolvable. If an In-Reply-To header is present but the lookup is failing, the root cause may be that the outbound notification's message_id was not stored correctly, which is a different issue unrelated to Thread-Index. Fourth, verify the property value is exactly TRUE (not the string "1" or "yes"). The system reads this as a boolean property. If the Thread-Index header is present and the property is enabled but emails are still classified as new, engage ServiceNow Support on a support case with the raw email headers and the sys_email record sys_id attached.