- Introduction
-
Getting Started
- Creating an Account in Hevo
- Subscribing to Hevo via AWS Marketplace
- Subscribing to Hevo via Snowflake Marketplace
- Connection Options
- Familiarizing with the UI
- Creating your First Pipeline
- Data Loss Prevention and Recovery
- Upgrading Pipeline from Standard to Edge
-
Data Ingestion
- Types of Data Synchronization
- Ingestion Modes and Query Modes for Database Sources
- Ingestion and Loading Frequency
- Data Ingestion Statuses
- Deferred Data Ingestion
- Handling of Primary Keys
- Handling of Updates
- Handling of Deletes
- Hevo-generated Metadata
- Best Practices to Avoid Reaching Source API Rate Limits
-
Edge
- Data Ingestion
- Core Concepts
-
Pipelines
- Familiarizing with the Pipelines UI
- Creating an Edge Pipeline
- Working with Edge Pipelines
- Pipeline Job History
- Pipeline Overview
- Needs Attention
- Object and Schema Management
- Activity Log
-
Sources
- Connect AI
- PostgreSQL
- Oracle
- MySQL
- SQL Server
- Troubleshooting Database Sources
- CockroachDB
- MongoDB
- SharePoint
- Salesforce Bulk API V2
- Ordergroove
- BambooHR
- Stripe
- NetSuite SuiteAnalytics
- Shopify
- Slack
- ClickUp
- Monday.com
- Pipedrive
- Workable
- Fathom
- HubSpot
- Salesforce Marketing Cloud
- Google Analytics 4
- Google Ads
- Facebook Ads
- Microsoft Ads
- LinkedIn Ads
- Xero
- Instagram Business
- Amazon Selling Partner
- TikTok Ads
- StackAdapt
- Amazon Ads
- Pinterest Organic
- Zendesk Support
- Snapchat Ads
- TikTok Organic
- Google Search Console
- Klaviyo v2
- Braintree Payments
- Facebook Pages
- Tempo
- PayPal
- Auth0
- Pinterest Ads
- Apple Search Ads
- Permit.io
- Amplitude Analytics
- Customer.io
- Paddle
- Jira Cloud
- Fullstory
- GitHub
- WorkOS
- ActiveCampaign
- Campaign Monitor
- Mailgun Send
- Metaplane
- Notion
- Recharge
- sevdesk
- Statuspage
- Teamwork.com
- Workday RaaS
- Yotpo
- TikTok Shop Partner Center
- Linear
- Microsoft Dynamics 365 Business Central
- Checkout.com
- Pylon
- Microsoft Teams
- Naming Conventions for Source Data Entities
- Destinations
- Transformations
- Alerts
- Activate
- Custom Connectors
-
Data Loading
- Loading Data in a Database Destination
- Loading Data to a Data Warehouse
- Optimizing Data Loading for a Destination Warehouse
- Deduplicating Data in a Data Warehouse Destination
- Manually Triggering the Loading of Events
- Scheduling Data Load for a Destination
- Loading Events in Batches
- Data Loading Statuses
- Data Spike Alerts
- Name Sanitization
- Table and Column Name Compression
- Parsing Nested JSON Fields in Events
-
Pipelines
- Data Flow in a Pipeline
- Familiarizing with the Pipelines UI
- Working with Pipelines
- Managing Objects in Pipelines
- Pipeline Jobs
-
Transformations
-
Python Code-Based Transformations
- Supported Python Modules and Functions
-
Transformation Methods in the Event Class
- Create an Event
- Retrieve the Event Name
- Rename an Event
- Retrieve the Properties of an Event
- Modify the Properties for an Event
- Fetch the Primary Keys of an Event
- Modify the Primary Keys of an Event
- Fetch the Data Type of a Field
- Check if the Field is a String
- Check if the Field is a Number
- Check if the Field is Boolean
- Check if the Field is a Date
- Check if the Field is a Time Value
- Check if the Field is a Timestamp
-
TimeUtils
- Convert Date String to Required Format
- Convert Date to Required Format
- Convert Datetime String to Required Format
- Convert Epoch Time to a Date
- Convert Epoch Time to a Datetime
- Convert Epoch to Required Format
- Convert Epoch to a Time
- Get Time Difference
- Parse Date String to Date
- Parse Date String to Datetime Format
- Parse Date String to Time
- Utils
- Examples of Python Code-based Transformations
-
Drag and Drop Transformations
- Special Keywords
-
Transformation Blocks and Properties
- Add a Field
- Change Datetime Field Values
- Change Field Values
- Drop Events
- Drop Fields
- Find & Replace
- Flatten JSON
- Format Date to String
- Format Number to String
- Hash Fields
- If-Else
- Mask Fields
- Modify Text Casing
- Parse Date from String
- Parse JSON from String
- Parse Number from String
- Rename Events
- Rename Fields
- Round-off Decimal Fields
- Split Fields
- Examples of Drag and Drop Transformations
- Effect of Transformations on the Destination Table Structure
- Transformation Reference
- Transformation FAQs
-
Python Code-Based Transformations
-
Schema Mapper
- Using Schema Mapper
- Mapping Statuses
- Auto Mapping Event Types
- Manually Mapping Event Types
- Modifying Schema Mapping for Event Types
- Schema Mapper Actions
- Fixing Unmapped Fields
- Resolving Incompatible Schema Mappings
- Resizing String Columns in the Destination
- Changing the Data Type of a Destination Table Column
- Schema Mapper Compatibility Table
- Limits on the Number of Destination Columns
- File Log
- Troubleshooting Failed Events in a Pipeline
- Mismatch in Events Count in Source and Destination
- Audit Tables
- Activity Log
-
Pipeline FAQs
- Can multiple Sources connect to one Destination?
- What happens if I re-create a deleted Pipeline?
- Why is there a delay in my Pipeline?
- Can I change the Destination post-Pipeline creation?
- Why is my billable Events high with Delta Timestamp mode?
- Can I drop multiple Destination tables in a Pipeline at once?
- How does Run Now affect scheduled ingestion frequency?
- Will pausing some objects increase the ingestion speed?
- Can I see the historical load progress?
- Why is my Historical Load Progress still at 0%?
- Why is historical data not getting ingested?
- How do I set a field as a primary key?
- How do I ensure that records are loaded only once?
- Why can't I see my Pipelines after logging in?
- Events Usage
-
Sources
- Free Sources
-
Databases and File Systems
- Data Warehouses
-
Databases
- Connecting to a Local Database
- Amazon DocumentDB
- Amazon DynamoDB
- Elasticsearch
-
MongoDB
- Generic MongoDB
- MongoDB Atlas
- Support for Multiple Data Types for the _id Field
- Example - Merge Collections Feature
-
Troubleshooting MongoDB
-
Errors During Pipeline Creation
- Error 1001 - Incorrect credentials
- Error 1005 - Connection timeout
- Error 1006 - Invalid database hostname
- Error 1007 - SSH connection failed
- Error 1008 - Database unreachable
- Error 1011 - Insufficient access
- Error 1028 - Primary/Master host needed for OpLog
- Error 1029 - Version not supported for Change Streams
- SSL 1009 - SSL Connection Failure
- Troubleshooting MongoDB Change Streams Connection
- Troubleshooting MongoDB OpLog Connection
-
Errors During Pipeline Creation
- SQL Server
-
MySQL
- Amazon Aurora MySQL
- Amazon RDS MySQL
- Azure MySQL
- Generic MySQL
- Google Cloud MySQL
- MariaDB MySQL
-
Troubleshooting MySQL
-
Errors During Pipeline Creation
- Error 1003 - Connection to host failed
- Error 1006 - Connection to host failed
- Error 1007 - SSH connection failed
- Error 1011 - Access denied
- Error 1012 - Replication access denied
- Error 1017 - Connection to host failed
- Error 1026 - Failed to connect to database
- Error 1027 - Unsupported BinLog format
- Failed to determine binlog filename/position
- Schema 'xyz' is not tracked via bin logs
- Errors Post-Pipeline Creation
-
Errors During Pipeline Creation
- MySQL FAQs
- Oracle
-
PostgreSQL
- Amazon Aurora PostgreSQL
- Amazon RDS PostgreSQL
- Azure PostgreSQL
- Generic PostgreSQL
- Google Cloud PostgreSQL
- Heroku PostgreSQL
- Upgrading Pipelines with PostgreSQL Sources to Use the pgoutput Plugin
-
Troubleshooting PostgreSQL
-
Errors during Pipeline creation
- Error 1003 - Authentication failure
- Error 1006 - Connection settings errors
- Error 1011 - Access role issue for logical replication
- Error 1012 - Access role issue for logical replication
- Error 1014 - Database does not exist
- Error 1017 - Connection settings errors
- Error 1023 - No pg_hba.conf entry
- Error 1024 - Number of requested standby connections
- Errors Post-Pipeline Creation
-
Errors during Pipeline creation
-
PostgreSQL FAQs
- Can I track updates to existing records in PostgreSQL?
- How can I migrate a Pipeline created with one PostgreSQL Source variant to another variant?
- How can I prevent data loss when migrating or upgrading my PostgreSQL database?
- Why do FLOAT4 and FLOAT8 values in PostgreSQL show additional decimal places when loaded to BigQuery?
- Why is data not being ingested from PostgreSQL Source objects?
- Troubleshooting Database Sources
- Database Source FAQs
- File Storage
- Engineering Analytics
- Finance & Accounting Analytics
-
Marketing Analytics
- ActiveCampaign
- AdRoll
- Amazon Ads
- Apple Search Ads
- AppsFlyer
- CleverTap
- Criteo
- Drip
- Facebook Ads
- Facebook Page Insights
- Firebase Analytics
- Freshsales
- Google Ads
- Google Analytics 4
- Google Analytics 360
- Google Play Console
- Google Search Console
- HubSpot
- Instagram Business
- Klaviyo v2
- Lemlist
- LinkedIn Ads
- Mailchimp
- Mailshake
- Marketo
- Microsoft Ads
- Onfleet
- Outbrain
- Pardot
- Pinterest Ads
- Pipedrive
- Recharge
- Segment
- SendGrid Webhook
- SendGrid
- Salesforce Marketing Cloud
- Snapchat Ads
- SurveyMonkey
- Taboola
- TikTok Ads
- Twitter Ads
- Typeform
- YouTube Analytics
- Product Analytics
- Sales & Support Analytics
- Source FAQs
-
Destinations
- Familiarizing with the Destinations UI
- Cloud Storage-Based
- Databases
-
Data Warehouses
- Amazon Redshift
- Amazon Redshift Serverless
- Azure Synapse Analytics
- Databricks
-
Google BigQuery
- Clustering in BigQuery
- Partitioning in BigQuery
- Structure of Data in the Google BigQuery Data Warehouse
- Loading Data to a Google BigQuery Data Warehouse
- Near Real-time Data Loading using Streaming
- Modifying BigQuery Destinations to Use Service Account Authentication
- Troubleshooting Google BigQuery
- Google BigQuery FAQs
- Hevo Managed Google BigQuery
- Snowflake
- Troubleshooting Data Warehouse Destinations
-
Destination FAQs
- Can I change the primary key in my Destination table?
- Can I change the Destination table name after creating the Pipeline?
- How can I change or delete the Destination table prefix?
- Why does my Destination have deleted Source records?
- How do I filter deleted Events from the Destination?
- Does a data load regenerate deleted Hevo metadata columns?
- How do I filter out specific fields before loading data?
- Transform
- Alerts
- Account Management
- Activate
- Glossary
-
Releases-
2026 Releases
- Release 2.53 (August 24 – September 21, 2026)
- Release 2.52 (July 27 – August 24, 2026)
- Release 2.51 (Jun 29 – July 27 , 2026)
- Release 2.50 (Jun 01–29, 2026)
- Release 2.49 (May 04-Jun 01, 2026)
- Release 2.48 (Apr 06-May 04, 2026)
- Release 2.47 (Mar 09-Apr 06, 2026)
- Release 2.46 (Feb 09-Mar 09, 2026)
- Release 2.45 (Jan 12-Feb 09, 2026)
-
2025 Releases
- Release 2.44 (Dec 01, 2025-Jan 12, 2026)
- Release 2.43 (Nov 03-Dec 01, 2025)
- Release 2.42 (Oct 06-Nov 03, 2025)
- Release 2.41 (Sep 08-Oct 06, 2025)
- Release 2.40 (Aug 11-Sep 08, 2025)
- Release 2.39 (Jul 07-Aug 11, 2025)
- Release 2.38 (Jun 09-Jul 07, 2025)
- Release 2.37 (May 12-Jun 09, 2025)
- Release 2.36 (Apr 14-May 12, 2025)
- Release 2.35 (Mar 17-Apr 14, 2025)
- Release 2.34 (Feb 17-Mar 17, 2025)
- Release 2.33 (Jan 20-Feb 17, 2025)
-
2024 Releases
- Release 2.32 (Dec 16 2024-Jan 20, 2025)
- Release 2.31 (Nov 18-Dec 16, 2024)
- Release 2.30 (Oct 21-Nov 18, 2024)
- Release 2.29 (Sep 30-Oct 22, 2024)
- Release 2.28 (Sep 02-30, 2024)
- Release 2.27 (Aug 05-Sep 02, 2024)
- Release 2.26 (Jul 08-Aug 05, 2024)
- Release 2.25 (Jun 10-Jul 08, 2024)
- Release 2.24 (May 06-Jun 10, 2024)
- Release 2.23 (Apr 08-May 06, 2024)
- Release 2.22 (Mar 11-Apr 08, 2024)
- Release 2.21 (Feb 12-Mar 11, 2024)
- Release 2.20 (Jan 15-Feb 12, 2024)
-
2023 Releases
- Release 2.19 (Dec 04, 2023-Jan 15, 2024)
- Release Version 2.18
- Release Version 2.17
- Release Version 2.16 (with breaking changes)
- Release Version 2.15 (with breaking changes)
- Release Version 2.14
- Release Version 2.13
- Release Version 2.12
- Release Version 2.11
- Release Version 2.10
- Release Version 2.09
- Release Version 2.08
- Release Version 2.07
- Release Version 2.06
-
2022 Releases
- Release Version 2.05
- Release Version 2.04
- Release Version 2.03
- Release Version 2.02
- Release Version 2.01
- Release Version 2.00
- Release Version 1.99
- Release Version 1.98
- Release Version 1.97
- Release Version 1.96
- Release Version 1.95
- Release Version 1.93 & 1.94
- Release Version 1.92
- Release Version 1.91
- Release Version 1.90
- Release Version 1.89
- Release Version 1.88
- Release Version 1.87
- Release Version 1.86
- Release Version 1.84 & 1.85
- Release Version 1.83
- Release Version 1.82
- Release Version 1.81
- Release Version 1.80 (Jan-24-2022)
- Release Version 1.79 (Jan-03-2022)
-
2021 Releases
- Release Version 1.78 (Dec-20-2021)
- Release Version 1.77 (Dec-06-2021)
- Release Version 1.76 (Nov-22-2021)
- Release Version 1.75 (Nov-09-2021)
- Release Version 1.74 (Oct-25-2021)
- Release Version 1.73 (Oct-04-2021)
- Release Version 1.72 (Sep-20-2021)
- Release Version 1.71 (Sep-09-2021)
- Release Version 1.70 (Aug-23-2021)
- Release Version 1.69 (Aug-09-2021)
- Release Version 1.68 (Jul-26-2021)
- Release Version 1.67 (Jul-12-2021)
- Release Version 1.66 (Jun-28-2021)
- Release Version 1.65 (Jun-14-2021)
- Release Version 1.64 (Jun-01-2021)
- Release Version 1.63 (May-19-2021)
- Release Version 1.62 (May-05-2021)
- Release Version 1.61 (Apr-20-2021)
- Release Version 1.60 (Apr-06-2021)
- Release Version 1.59 (Mar-23-2021)
- Release Version 1.58 (Mar-09-2021)
- Release Version 1.57 (Feb-22-2021)
- Release Version 1.56 (Feb-09-2021)
- Release Version 1.55 (Jan-25-2021)
- Release Version 1.54 (Jan-12-2021)
-
2020 Releases
- Release Version 1.53 (Dec-22-2020)
- Release Version 1.52 (Dec-03-2020)
- Release Version 1.51 (Nov-10-2020)
- Release Version 1.50 (Oct-19-2020)
- Release Version 1.49 (Sep-28-2020)
- Release Version 1.48 (Sep-01-2020)
- Release Version 1.47 (Aug-06-2020)
- Release Version 1.46 (Jul-21-2020)
- Release Version 1.45 (Jul-02-2020)
- Release Version 1.44 (Jun-11-2020)
- Release Version 1.43 (May-15-2020)
- Release Version 1.42 (Apr-30-2020)
- Release Version 1.41 (Apr-2020)
- Release Version 1.40 (Mar-2020)
- Release Version 1.39 (Feb-2020)
- Release Version 1.38 (Jan-2020)
-
2026 Releases
- Early Access New
Microsoft Teams (Edge)
Microsoft Teams is a collaboration platform that brings together chats, channel conversations, meetings, and calls in a single workspace. Organizations use it to communicate and work together across teams in their Microsoft 365 tenant.
Hevo uses the Microsoft Graph API to replicate data from your Microsoft Teams tenant to the Destination of your choice. To ingest data, you must provide Hevo with the tenant ID, client ID, and client secret of an app that you register in Microsoft Entra ID.
Supported Features
| Feature Name | Supported |
|---|---|
| Capture deletes | Yes (for some objects) |
| History mode | No |
| Custom data (user-configured tables & fields) | No |
| Data blocking (skip objects and fields) | Yes |
| Resync (objects and Pipelines) | Yes |
| API configurable | Yes |
Prerequisites
-
An active Microsoft 365 tenant that uses Microsoft Teams, from which data is to be ingested.
-
You are assigned the Application Developer or a higher role in Microsoft Entra ID to register an app.
-
You are assigned the Privileged Role Administrator or Global Administrator role in Microsoft Entra ID to grant admin consent for the Microsoft Graph permissions.
Obtain the Microsoft Teams Credentials
Hevo connects to Microsoft Teams through an app registered in your Microsoft Entra ID tenant. The app reads data from Microsoft Graph using application permissions, so Hevo ingests the data of all the teams, users, chats, and calls in your tenant.
Register an app in Microsoft Entra ID
Perform the following steps to register an app and obtain its tenant ID and client ID:
-
Log in to the Microsoft Entra admin center.
-
In the left navigation pane, click Entra ID, and then click App registrations.

-
On the App registrations page, click + New registration.

-
On the Register an application page, do the following:
-
Name: Specify a name for the app. For example, Hevo Microsoft Teams.
-
Supported account types: Select Single tenant only - <Your Tenant Name>.
-
Click Register.

-
-
On the Overview page of the app, copy the Application (client) ID and the Directory (tenant) ID, and save them securely like any other password. Use these values as the Client ID and Tenant ID while configuring your Microsoft Teams Source in Hevo.

Add the Microsoft Graph permissions
Perform the following steps to grant the app read access to your Microsoft Teams data:
-
On the page of the app that you registered, in the left navigation pane, click API permissions.

-
In the Configured permissions section, click + Add a permission.

-
In the Request API permissions pane, click Microsoft Graph.

-
Click Application permissions, search for and select the following permissions, and then click Add permissions:
Permission Objects AppCatalog.Read.All teamsApps CallRecords.Read.All call and its child objects, direct_routing_call, and pstn_call Channel.ReadBasic.All channels, tabs, and channel_message and its child objects. Hevo also needs this permission to ingest the teams object. ChannelMessage.Read.All channel_message and its child objects Chat.Read.All chat and chat_message Team.ReadBasic.All teams and its child objects, including channel_message and its child objects TeamMember.Read.All members TeamsTab.Read.All tabs TeamworkTag.Read.All tags User.Read.All users. Hevo also uses this permission to test the connection. 
Note: Grant the permissions of all the objects that you want to ingest. Hevo needs the User.Read.All permission to test the connection, and the Team.ReadBasic.All and Channel.ReadBasic.All permissions to ingest any object of the teams group. If a permission is missing, the Pipeline fails to ingest the related objects and the other objects ingested along with them. For example, if the permission of the members, tags, or tabs object is missing, Hevo does not ingest the teams object, its child objects, and the channel_message object and its child objects. If you do not grant the permission of an object, deselect that object while creating the Pipeline.
-
Click Grant admin consent for <Your Tenant Name>, and then click Yes to confirm.

Create a client secret
Perform the following steps to create a client secret for the app:
-
On the page of the app that you registered, in the left navigation pane, click Certificates & secrets.

-
On the Client secrets tab, click + New client secret.

-
In the Add a client secret pane, do the following:
-
Description: Specify a description for the secret. For example, Hevo Pipeline.
-
Expires: Select the period after which the secret expires.
-
Click Add.

-
-
In the Value column of the secret that you created, click the copy icon, and save the value securely like any other password. Use this value as the Client Secret while configuring your Microsoft Teams Source in Hevo.

Note: Microsoft Entra ID displays the secret value only once. Copy the value and not the secret ID.
If the client secret expires or is deleted from your app, Hevo cannot connect to Microsoft Teams, and the Pipeline fails. To resume data replication, create a new client secret and modify the Source configuration in the Pipeline to use it.
Configure Microsoft Teams as a Source in your Pipeline
Perform the following steps to configure your Microsoft Teams Source:
-
Click Pipelines in the Navigation Bar.
-
Click + Create Pipeline in the Pipelines List View.
-
On the Select Source Type page, select Microsoft Teams.
-
On the Select Destination Type page, select the type of Destination you want to use.
-
In the Configure Source screen, specify the following:

-
Source Name: A unique name for your Source, not exceeding 255 characters. For example, Microsoft Teams Source.
-
In the Connect to your Microsoft Teams account section, specify the following:
-
Tenant ID: The directory (tenant) ID of the app that you registered in Microsoft Entra ID.
-
Client ID: The application (client) ID of the app that you registered in Microsoft Entra ID.
-
Client Secret: The value of the client secret that you created for the app.
-
-
-
Click Test & Continue to test the connection to your Microsoft Teams Source. Hevo obtains an access token from Microsoft Entra ID using the tenant ID, client ID, and client secret, and then reads one user from your tenant. The test fails if the credentials are not valid, if the client secret has expired, or if the app does not have the User.Read.All permission. Hevo checks the other permissions only when it ingests data. Once the test is successful, you can proceed to set up your Destination.
Data Replication
Hevo replicates data for all the objects selected on the Configure Objects page during Pipeline creation. By default, all supported objects and their available fields are selected. However, you can modify this selection while creating or editing the Pipeline.
You can select or deselect each object individually. If you select a child object without its parent object, Hevo reads the parent object from Microsoft Teams to fetch the child records, but does not load the parent object to the Destination.
When you resync the teams, users, or call object, Hevo also resyncs its child objects. However, resyncing the teams object does not resync the channel_message object and its child objects. To ingest the channel messages again, resync the channel_message object separately.
Hevo ingests the following types of data from your Source objects:
-
Historical Data: The first run of the Pipeline ingests the following data:
-
For the pstn_call and direct_routing_call objects, the calls made in the last 365 days.
-
For the call object and its child objects, the call records of the last 30 days. Microsoft Graph retains call records only for 30 days.
-
For all the other objects, all the available data.
-
-
Incremental Data: Once the historical load is complete, Hevo ingests data as per the sync frequency:
-
For the pstn_call and direct_routing_call objects, Hevo ingests the calls that started up to 48 hours before the most recent call ingested in the previous run, based on the start_date_time field. This captures the call records that Microsoft Graph publishes late. Hevo updates the records that are ingested again in the Destination.
-
For all the other objects, Hevo ingests the entire data in each run.
-
Microsoft Graph limits the number of API requests that an app can make in a tenant. Read Microsoft Graph throttling limits. If a limit is reached, Hevo waits for the time specified by Microsoft Graph, up to about five minutes, or for 10 seconds if no time is specified, and retries the request up to four times. If Hevo still cannot read the data of some teams, users, chats, channels, or messages, it ingests the rest of the data, displays a warning for the object, and reads the missed data in the next run. If Hevo cannot read the list of records of an object, it does not ingest that object and the objects read along with it in that run.
Schema and Primary Keys
Hevo uses the following schema to upload the records in the Destination. For a detailed view of the objects, fields, and relationships, click the ERD.
The primary key of the session_media object includes a column named index. As index is a reserved word in most Destinations, enclose the column name in quotes when you query the table. For example, use "index" in Amazon Redshift and Snowflake, and `index` in Google BigQuery.
Data Model
The following is the list of tables (objects) that are created at the Destination when you run the Pipeline:
| Object | Description |
|---|---|
| teams | Contains the details of the teams in your tenant, such as the name, description, visibility, web URL, archive status, and member, messaging, and fun settings of each team. This object has the following child objects: - channels - channel_message - members - tabs - tags |
| channels | Contains the details of the channels in each team, such as the name, description, membership type, email address, web URL, and creation date of each channel. |
| members | Contains the details of the members of each team, such as the name, email address, and roles of each member. |
| tabs | Contains the details of the tabs added to each channel, such as the name, web URL, and configuration of each tab. |
| tags | Contains the details of the tags in each team, such as the name, description, type, and number of members of each tag. |
| channel_message | Contains the details of the messages posted in channels, such as the content, sender, importance, attachments, and creation and modification dates of each message. This object has the following child objects: - channel_message_mention - channel_message_reaction - channel_message_reply - channel_message_reply_mention - channel_message_reply_reaction |
| channel_message_mention | Contains the details of the users, apps, and conversations mentioned in channel messages. |
| channel_message_reaction | Contains the details of the reactions to channel messages, such as the reaction type, the user who reacted, and the date of each reaction. |
| channel_message_reply | Contains the details of the replies to channel messages, such as the content, sender, importance, attachments, and creation and modification dates of each reply. |
| channel_message_reply_mention | Contains the details of the users and apps mentioned in the replies to channel messages. |
| channel_message_reply_reaction | Contains the details of the reactions to the replies to channel messages. |
| users | Contains the details of the users in your tenant, such as the name, email address, job title, department, office location, and account status of each user. This object has the following child objects: - chat - chat_message |
| chat | Contains the details of the one-on-one, group, and meeting chats of each user, such as the chat type, topic, web URL, and creation and update dates of each chat. A chat has one record for each user who is a member of it. |
| chat_message | Contains the details of the messages sent in chats, such as the content, sender, importance, attachments, mentions, and reactions of each message. |
| teamsApps | Contains the details of the apps in the Microsoft Teams app catalog of your tenant, such as the name, external ID, and distribution method of each app. |
| call | Contains the details of the calls and online meetings in your tenant, such as the type, modalities, start and end times, and join URL of each call. This object has the following child objects: - participant - session - session_media - session_media_stream |
| participant | Contains the details of the participants of each call, such as the identity of each participant. |
| session | Contains the details of the sessions of each call, such as the identity, CPU, user agent, and feedback of the caller and the callee, and the start and end times of each session. |
| session_media | Contains the device and network details of the caller and the callee for each type of media, such as audio, video, or screen sharing, in each session segment. For example, the audio devices, connection type, IP address, and Wi-Fi details. |
| session_media_stream | Contains the details of the media streams in each session segment, such as the codec, jitter, packet loss, and round-trip time of each stream. |
| pstn_call | Contains the details of the calls made to or received from the public switched telephone network (PSTN) using Microsoft calling plans, such as the caller and callee numbers, duration, and charges of each call. |
| direct_routing_call | Contains the details of the calls made using Direct Routing, such as the caller and callee numbers, duration, SIP response codes, and trunk details of each call. |
Additional Information
Read the detailed Hevo documentation for the following related topics:
Handling of Deletes
For the call, participant, and session objects, Hevo captures deletes by comparing the data fetched from the Source with the data present in the Destination in each run. If a record exists in the Destination but is no longer returned by the Source, Hevo marks it as deleted by setting the value of the metadata column __hevo__marked_deleted to True.
As Microsoft Graph retains call records only for 30 days, Hevo marks the records of the call, participant, and session objects as deleted when they are more than 30 days old, even if they are not deleted in Microsoft Teams. The records of the session_media and session_media_stream objects are not marked as deleted.
If Hevo cannot read the participants or sessions of a call in a run, it does not ingest the call object and its child objects in that run, to avoid incorrectly marking the records as deleted. Hevo reads them again in the next run.
For all the other objects, Hevo does not capture deletes. Records deleted in Microsoft Teams remain unchanged in the Destination. For the channel_message, channel_message_reply, and chat_message objects, the deleted_date_time field contains the date and time at which a message was deleted.
Source Considerations
-
Hevo ingests the data of all the teams, users, chats, and calls in your tenant that the app can access with the Microsoft Graph permissions granted to it.
-
Microsoft Graph applies its throttling limits to all the requests made by the app in your tenant. If you use the same app in other tools, those requests also count toward the limits.
-
Hevo reads the chats of each user in your tenant. The chat object contains one record for each member of a chat, while Hevo ingests the messages of each chat only once.
-
If your tenant has accounts that do not use Microsoft Teams, such as service accounts, room mailboxes, or users without a Microsoft Teams license, and Hevo reads several such accounts one after the other, it skips the chats and chat messages of the remaining users in that run. Hevo displays a warning for the chat object and reads the chats again in the next run.
-
In each run, Hevo makes separate API requests for the details, channels, members, tags, and tabs of each team, for the messages of each channel and the replies to each message, for the chats of each user and the messages of each chat, and for the participants and sessions of each call. In large tenants, this may increase the ingestion time and the number of requests that count toward the Microsoft Graph throttling limits.
Limitations
-
Hevo does not ingest the call records that are more than 30 days old, as Microsoft Graph does not provide them.
-
Hevo does not ingest the reactions made by apps or bots, and the mentions that do not have a mention ID, such as @everyone mentions, as these records do not have the fields required for their primary key.
-
The deleted_date_time field of the users object is always empty, as Microsoft Graph returns only the active users of your tenant.
Revision History
Refer to the following table for the list of key updates made to this page:
| Date | Release | Description of Change |
|---|---|---|
| Oct-27-2026 | NA | New document. |