Skip to main content
Last updated on October 28th, 2025

Basic fields

main_timestamp
timestamp
required
The date and time that the email was sent or received.Example: 2018-07-06 13:55:00 UTC
unix_main_timestamp
integer
required
The date and time that the email was sent or received, but in UNIX timestamp format. Useful for certain operations.Example: 1530885300
rfc2822_message_id
string
The message ID for the email, as present in the header, according to RFC2822 standards. Read more information about RFC2822 here.Example: <CAGyM1L+oHxX0EEEFsqZJTprGsEGT3zn8iheXtVW@3y2K4qReA.namprd13.prod.outlook.com>
in_reply_to_message_id
string
The message ID for the email that this email is replying to, as present in the header, according to RFC2822 standards. Useful for response analytics.Example: <CAGyM1L+oHxX0EEEFsqZJTprGsEGT3zn8iheXtVW@3y2K4qReA.namprd13.prod.outlook.com>
outlook_user_principal_email
string
required
The principal email address for the tracked mailbox that sent or received the email. The outlook_user_principal_email for a user can change, so it’s advisable to use outlook_user_id.Example: name@address.com
outlook_user_id
string
required
The Microsoft 365 User ID for the tracked mailbox. It should be used as the key component of any ‘user’ filter since User ID is unique and unchangeable.Example: 102114834148206491213
outlook_message_id
string
required
The internal Microsoft 365 API message ID. Not to be confused with rfc2822_message_id. All messages in Microsoft 365 must have one. This is only guaranteed to be unique for each outlook_user_id. This means two different outlook_user_ids may have the same outlook_message_id for two different emails (even though this is highly unlikely).Example: AAMkAGY1OGNkMDliLTdmZDAtNDQ2Ny1hNDg1LWE3YTE5MWQ0M2Y4MgBGAAAAAACmsz4zNypGRI7iXj0IPdYaBwCh-Hdx-dAJSYr3K1G5gtqtAAAAAAEMAACh-Hdx-dAJSYr3K1G5gtqtAAA7RdiYAAA=
conversation_id
string
The internal Microsoft 365 API conversation ID for the conversation that this email belongs to. A conversation refers to a series of replied emails.Example: AAQkAGY1OGNkMDliLTdmZDAtNDQ2Ny1hNDg1LWE3YTE5MWQ0M2Y4MgAQADPU4479soFLsKRvTKqGjNg=
parent_folder_id
string
The folder id that contains the message at that moment.Example: AAQkAGY1OGNkMDliLTdmZDAtNDQ2Ny1hNDg1LWE3YTE5MWQ0M2Y4MgAQADPU4479soFLsKRvTKqGjNg=
folder_name
string
The name of the folder that contains the message at that moment.Example: Inbox
subject
string
The email subject line as seen in the email header.Example: Re: about that email
sender_address
string
The visible address of the sender, matching the one you would see in your email client.Example: name@address.com
sender_domain
string
The domain of the sender.Example: address.com
sender_original_address
string
The original address of the sender. This can be used to track or display real senders vs. aliases, and also to track different services able to impersonate addresses when sending emails. Possible values:
  • If ‘sender’ is an alias: this address will be different than sender_address
  • If ‘sender’ is not an alias: this address will be the same as sender_address
Example: truename@trueaddress.com
sender_original_address
record
Array of all recipients for that message. It’s a repeated record that can contain several sub-rows.Example: [{address: 'name1@test.com', name: 'name1', domain: 'test.com', type: 'to'}, {address: 'name2@test.com', name: 'name2', domain: 'test.com', type: 'cc'} ]
recipients.address
string
The email address for each of the recipients for that message.Example: name1@test.com
recipients.domain
string
The domain for each of the recipients for that message.Example: test.com
recipients.type
string
A string indicating the type of the recipient. Possible values:
  • to
  • cc
  • bcc
Example: to
recipients_to
string
All the destination addresses in the ‘to’ field, separated by commas.Example: name1@test.com, name2@test.com
recipients_cc
string
All the destination addresses in the ‘cc’ field, separated by commas.Example: name1@test.com, name2@test.com
recipients_bcc
string
All the destination addresses in the ‘bcc’ field, separated by commas.Example: name1@test.com, name2@test.com
addresses
record
Array of all addresses for that message. It’s a repeated record that can contain several sub-rows.Example: [{address: 'name1@test.com', domain: 'test.com', direction: 'sender', type: 'from'}, {address: 'name2@test.com', domain: 'test.com', direction: 'recipient', type: 'cc'}]
addresses.address
string
The email address for each of the addresses for that message.Example: name1@test.com
addresses.domain
string
The domain for each of the addresses for that message.Example: test.com
addresses.direction
string
The direction of the address for that message. Possible values:
  • sender
  • recipient
Example: recipient
addresses.type
string
A string indicating the type of the recipient. Possible values:
  • from
  • to
  • cc
  • bcc
Example: to
is_direct_message
boolean
Whether this message is a direct message for the recipient’s (tracked) mailbox. Possible values:
  • True
  • False
Example: True
is_reply
boolean
Whether this message is a reply to another email or not. Possible values:
  • True
  • False
Example: True
is_forwarded
boolean
Whether this message is a forwarded email. This is determined based on the subject line starting with ‘Fwd:’. Possible values:
  • True
  • False
Example: True
is_replied
boolean
Whether this message has been replied to. Possible values:
  • True
  • False
Example: False
is_first_reply
boolean
Whether this message is the first reply in the email conversation. Possible values:
  • True
  • False
Example: True
reply_data
record
Several metrics about the replies to an email. This will be NULL if the message has not been replied to.Example:
reply_data": [
      {
        "replied_by": name1@test.com
        "replied_by_delegate": name2@test.com,
        "reply_time": 45376,
        "cwt_time": 49000,
        "reply_time_bucket": "<24h",
        "reply_time_bucket_order": 2,
        "reply_sla_bucket": "<48 hours",
        "reply_sla_order": 0,
        "reply_time_index": 1
      }
    ]
reply_data.replied_by
string
The email address of the person who replied to the email. This will be NULL if the message has not been replied to.Example: name1@test.com
reply_data.replied_by_delegate
string
Delegate account of who replied to the email. This will be NULL if the message has not been replied or if it was replied without a delegate account.Example: delegate1@test.com
reply_data.reply_time
integer
The difference between the time the email was originally received and the time of the reply in seconds. This will be NULL if the message has not been replied to.If you have business hours set up, this response time will only count the response time for your working hours period.Example: 56234
reply_data.cwt_time
integer
The difference between the time the email was originally received and the time of the reply in seconds. This will be NULL if the message has not been replied to. This field reflects the total time the customer is waiting for the answer.Example: 56234
reply_data.reply_time_bucket
string
The response time bucket (based on reply_data.reply_time). This will be NULL if the message has not been replied to. Possible values:
  • <24h
  • 24-48h
  • 48-72h
  • <72h
Example: <24h
reply_data.reply_time_bucket_order
integer
The “order” of the reply_data.reply_time_buckets. This will be NULL if the message has not been replied. It helps us to order the buckets properly in Looker Studio visualizations.Example: 1
reply_data.reply_sla_bucket
string
The SLA time bucket (based on reply_data.cwt_time). This will be NULL if the message has not been replied to. Values can change depending on the client’s set up. Possible values:
  • <12 hours
  • 12 - 24 hours
  • >24 hours
Example: <24h
reply_data.reply_sla_order
integer
The “order” of the reply_data.reply_sla_buckets. This will be NULL if the message has not been replied. It helps us to order the buckets properly in Google Data Studio visualizations.Example: 1
reply_data.reply_index
integer
An index of the replies to a message. This will be NULL if the message has not been replied. The first reply is ‘1’, second reply ‘2’, and so on.Example: 1
conversation_index
integer
This field indicates the index of the message in regard to the conversation in which it is included.Example: 1
is_first_message
boolean
This field indicates if the email is the first message in the conversation based on outlook_message_id and conversation_id fields. Possible values:
  • True: if it is the first message in the conversation.
  • False: if it is a reply to another message.
Example: True
is_intradomain
string
Whether or not multiple domains are involved in the email interaction. If true, this means all the recipients/senders are in the same domain. Possible values:
  • Internal: if sender_domain matches with all the recipient’s domains.
  • External: if there is at least one domain that doesn’t match, meaning there’s someone outside the organization.
Example: Internal
directionality
string
The direction of the message for the tracked mailbox. Possible values:
  • Received
  • Sent
Example: Received
from_delegated
string
This field indicates if the email was sent through a delegated account. If the field is null it means that the email was sent by the regular email account. Otherwise, it will contain the original address of the account that sent the email.Example: name1@test.com
is_automated_email
string
Whether or not the email was sent from an automated service, based on information contained in the header.Example: Automated
email_age
integer
This field indicates how many seconds old the message is at the time of the materialized query.Example: 42615
categories
record
Array of all categorires applied to that email at the time of the materialized query.Example: ['Category Red', 'Category Blue']
categories.category
string
Every category presents in categories. There can be none, so it can be null.Example: Shipping Issues
is_read
boolean
Whether the message has been read or not.Example: True
importance
string
The importance of the message according to the Microsoft 365 API.Example: normal
flag
record
Contains information about the flag status of the message.Example:
"flag": {
  "status": "flagged",
  "start": 1530885300,
  "due": 1530885300,
  "completed": 1530890000
}
flag.status
string
Indicates if the message is flagged or not.Example: flagged
flag.start
integer
The timestamp when the message was flagged.Example: 1530885300
flag.due
integer
The timestamp when the message is due.Example: 1530885300
flag.completed
integer
The timestamp when the message’s issue was completed.Example: 1530890000
is_direct_message_filter
string
Message category type based on the principal address recipient type.Example: Direct Messages (To)
moved
boolean
Whether the message has been moved from another folder or not.Example: True
deleted
boolean
Whether the message has been deleted or not.Example: False
is_excluded_message
boolean
If the email is excluded according to the backend filtering settings.Example: True
team
string
This field indicates the team that the mailbox belongs to according to the backend data.Example: Customer Success
client_group_array
record
Array of all client groups for that message. It’s a repeated record that can contain several sub-rows.Example: [{client_group: 'Tier 1', address: 'name1@test.com', domain: 'test.com', type: 'to'}, {client_group: 'Tier 2', address: 'name2@test.com', domain: 'test.com', type: 'from'} ]
client_group_array.client_group
string
The name of the client group for each of the addresses/domains for that message.Example: Tier 1
client_group_array.address
string
The email address for each of the client group for that message.Example: name1@test.com
client_group_array.domain
string
The email domain for each of the client groups for that message.Example: test.com
client_group_array.type
string
The type for each of the addresses for that message.Example: to
inference_classification
string
Indicates how a message is categorized by the Outlook’s in-built inbox organization. This field shows whether an email appears in the “Focused” or “Other” tab in Outlook.Example: focused or other

Attachment fields

The fields related to attachments aren’t included by default in our schema. If you’re interested in getting information related to attachments, please get in touch with your Business Intelligence Consultant to enable this.
attachments
record
Array of all attachments for that message. It’s a repeated record that can contain several sub-rows. This will be NULL if there are no attachments.Example:
"attachments": [
      {
        "filename": "Q4_Report.pdf",
        "file_type": "application/pdf",
        "file_size_bytes": 2458624,
        "extension": "pdf",
        "is_inline": false
      },
      {
        "filename": "Data.xlsx",
        "file_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
        "file_size_bytes": 1048576,
        "extension": "xlsx",
        "is_inline": false
      }
    ]
attachments.filename
string
The filename of each attachment including its extension.Example: Q4_Report.pdf
attachments.file_type
string
The MIME type of each attachment.Example: application/pdf
attachments.file_size_bytes
integer
The size of each attachment in bytes.Example: 2458624
attachments.extension
string
The file extension of each attachment.Example: pdf
attachments.is_inline
boolean
Indicates if the attachment is inline. Possible values:
  • True
  • False
Example: False

Extra fields

If your dashboard has customizations, your data table might have extra fields related to them. If that’s the case, please contact your Business Intelligence Consultant to request your personalized schema.