# Exporting contact center data to a data warehouse

Canonical: https://warmtransfer.net/knowledge/ccaas-data-export-warehousing

Last verified: 2026-10-02

Amazon Connect can stream contact records to an Amazon Data Firehose delivery stream or a Kinesis data stream, and Genesys Cloud delivers lakehouse data in Parquet format to Amazon S3[^10][^34]. NICE CXone stores contact center data in a Snowflake data warehouse that customers access through Data Share, and Webex Contact Center exposes task and agent records through a GraphQL Search API[^50][^56].

## Amazon Connect

### Streaming contact records and agent events

In the Amazon Connect console, data streaming sends contact records to either an Amazon Data Firehose delivery stream or a Kinesis data stream, chosen per instance[^10]. Agent events go to a Kinesis data stream, and the procedure offers no Firehose option for them[^4]. To stream into a Kinesis stream encrypted with a customer managed KMS key, the key policy must allow the instance's service-linked role `kms:GenerateDataKey`[^20]. AWS advises granting this before using the key to avoid missing data[^20].

### Delivery semantics for contact records

Amazon Connect delivers contact records at least once, so a downstream store can receive the same contact record more than once[^5]. A contact record may also be delivered again when new information arrives after initial delivery, for example when contact attributes are updated with `update-contact-attributes`[^9]. WarmTransfer's reading of the sources is that a warehouse loading contact records from Kinesis or Firehose should upsert on ContactId and keep the most recent version instead of appending blindly[^7]. AWS adds new fields to the contact record data model in backward-compatible changes and recommends that consuming applications ignore unknown new fields[^8]. A contact record is available for 24 months from the time the associated contact was initiated[^6].

### Transfers and chained records

When an agent transfers a customer to another agent or queue using quick connects, Amazon Connect creates a new contact record with initiation method TRANSFER[^21]. The InitialContactId property holds the original identifier of a transferred contact, which allows chained contact records to be grouped into 1 interaction[^19]. See also [Amazon Connect contact records and streams](https://warmtransfer.net/knowledge/amazon-connect-data).

### Agent event stream behavior

Agent event stream EventType values are STATE_CHANGE, HEART_BEAT, LOGIN and LOGOUT[^1]. Amazon Connect publishes a HEART_BEAT event every 120 seconds if no other agent event was published during that interval[^3]. Agent events continue to be published for up to an hour after an agent has logged off[^2].

### Analytics data lake

Data lake data is refreshed after a record is created, with a small processing delay, and should be available in less than an hour[^17]. The data lake keeps a rolling 25-month window of accessible data, with the cutoff date updating at 12 AM UTC[^11]. This window is fixed and cannot be changed, so data needed for longer must be copied to storage the customer controls before it ages out[^15]. AWS suggests running a scheduled query that writes each table to the customer's own S3 bucket, for example with CTAS or UNLOAD, and then applying S3 Lifecycle rules[^14]. For retention, the contact_record and contact_statistic_record tables age by disconnect_timestamp, and agent_statistic_record ages by interval_end_time[^13].

Data lake tables are shared by adding a data share to a target (consumer) AWS account, which can be the account that hosts the instance or a different account[^16]. From the CLI, tables are associated to an account with `batch-associate-analytics-data-set`, where each DataSetIds value is a table name such as contact_record[^12].

### Historical metrics API

The historical metrics API retrieves historical metric data for only the last 3 months, so it is not a long-range export mechanism[^18].

## Genesys Cloud

### Synchronous and async conversation detail queries

Since 16 December 2020, the synchronous Analytics Conversation Detail endpoint accepts interval start dates only up to 558 days in the past, including today[^42]. For historical queries, Genesys recommends the async endpoint `/api/v2/analytics/conversations/details/jobs` instead of the synchronous detail query[^23]. For recent conversation data, Genesys recommends using the notifications service where possible rather than polling the detail query[^38].

Async jobs are created with `POST /api/v2/analytics/conversations/details/jobs`, and job status is read with `GET /api/v2/analytics/conversations/details/jobs/{jobId}`[^29]. Before submitting a job, `GET /api/v2/analytics/conversations/details/jobs/availability` returns the date and time up to which the analytics datalake is available[^28]. Results are retrieved a page at a time from `GET /api/v2/analytics/conversations/details/jobs/{jobId}/results`, and each response carries an optional cursor for resuming[^30]. A job response carries dataAvailabilityDate, which means data is available up to at least that datetime, and conversations after it may be missing from the result[^25].

The interval of an async job selects all conversations that had activity during the interval, not only those that started in it[^24]. Setting startOfDayIntervalMatching restricts the result to conversations that started after the beginning of the interval start date (UTC)[^41].

### Conversation detail model

A conversation contains a list of participants, each with a participantId and a purpose and, for users, a userId[^35]. Each participant contains a list of sessions, and each session has a sessionId and a mediaType[^37]. Each session contains a list of segments and a list of session metrics, giving a conversation > participant > session > segment hierarchy[^36]. See also [Cross-platform CDR normalization model](https://warmtransfer.net/knowledge/cdr-normalization).

### Other analytics exports

User (agent) detail data has its own async export, `POST /api/v2/analytics/users/details/jobs`, separate from conversation detail jobs[^43]. `POST /api/v2/analytics/dataextraction/downloads/bulk` returns download URLs for analytics data warehouse files[^26].

### Data lakehouse export

The lakehouse export path delivers structured data in Parquet format to Amazon S3 approximately every 5 to 10 minutes[^34]. Lakehouse extraction has a 72-hour extraction window, with short-term snapshots covering up to the latest 3 days of conversation data[^31]. We infer that an export pipeline down for longer than that window likely needs to backfill the gap from async conversation detail jobs[^22]. The export is enabled under Menu > Analytics > Analytics Settings > Lakehouse Settings tab > Enable, after the service order and permissions are in place[^32].

### Recordings and events

The recording bulk actions integration exports recordings of any media type, screen recordings, attachments and metadata to a customer bucket[^39]. This recording bulk export runs either automatically through policies or on demand through the Recording Bulk Job API, and it can export archived recordings without restoring them first[^40]. The Amazon EventBridge integration sends events from the topics a customer subscribes to into AWS EventBridge, where they appear as JSON[^27].

## NICE CXone Data Share

Data Share gives customers access to CXone data in Snowflake or for pulling into an external data store[^50]. It requires a separate licence enabled through the customer's NICE account representative[^44].

| Snowflake account | Hosting | Refresh |
|---|---|---|
| Customer-owned | AWS, Azure or Google Cloud in any region[^47] | Sub-database replication every minute, data available after a lag of up to 1 hour[^48] |
| NICE-provided | AWS or Azure in the same region as the CXone instance[^45] | Managed by NICE on a schedule the customer cannot configure[^46] |

A customer-owned Snowflake account can hold up to 25 customisable CXone data shares with selectable secure views, while a NICE-provided account gets 1 share per system without view selection[^49].

## Webex Contact Center

### Search API

The Search API is a GraphQL interface whose taskDetails query operates on Customer Session Records (CSRs) and Customer Activity Records (CARs)[^56]. Its agentSession query operates on Agent Session Records (ASRs) and Agent Activity Records (AARs)[^53]. See also [The Analyzer record model](https://warmtransfer.net/knowledge/wxcc-analyzer-record-types).

When fetching raw AAR or CAR data, the from-to query span cannot exceed 30 days[^55]. Raw taskDetails and agentSession data is returned 250 records per page, with at most 100,000 taskDetails records retrievable by pagination, and aggregation queries return 1,000 per page[^54]. A taskLegDetails query over Call Leg Records (CLRs) is labelled Queue Based Reporting Early Access and pages 500 raw records at a time up to 100,000[^57].

### Recordings and transcripts

Recordings and email transcripts are retrieved through the List Captures API, which requires the `cjp:config_read` or `cjp-analyzer:read` scope[^52]. A webhook subscription for the `capture:available` event notifies a client when a new recording is ready, with a payload containing the taskId and a link to the downloadable recording[^51].

## Comparing freshness across platforms

WarmTransfer's reading of the sources is that warehouse exports fall into roughly 3 freshness tiers: event streams for seconds-scale data (Connect Kinesis, Genesys EventBridge), managed batch shares at minutes up to an hour (Genesys Parquet every 5-10 minutes, CXone Data Share, Connect data lake), and query APIs whose freshness the documentation read does not quantify (Genesys detail jobs, Webex Search)[^58].

## Applicability

Applies to: Amazon Web Services Amazon Connect, Genesys Cloud, NICE CXone Mpower, and Cisco Webex Contact Center. Deployments: multi-tenant. Sources checked 2026-10-02. The 558-day limit on the Genesys Cloud synchronous detail endpoint applies since 16 December 2020[^42]. As of 2026-10-02, Genesys documents the Parquet export path as available now and a fuller lakehouse platform with Apache Iceberg tables and direct SQL querying as coming in the future[^33]. The Webex Contact Center taskLegDetails query is labelled Queue Based Reporting Early Access[^57].

## What remains uncertain

The overall lookback period of the Webex Contact Center Search API, its query span outside raw data fetches, its required scopes and its rate limits are not covered by the sources below. The documented 30-day span applies when fetching raw AAR or CAR data[^55]. WarmTransfer's reading of the sources is that the documentation read does not quantify the data freshness of Webex Search or of Genesys detail jobs[^58]. Concurrent job limits, result expiry, page size and maximum interval for Genesys Cloud async conversation detail jobs are not covered by the sources below. The typical lag of dataAvailabilityDate is not covered by the sources below. A job response's dataAvailabilityDate means data is available up to at least that datetime[^25]. The delivery semantics and the list of supported topics for the Genesys Cloud Amazon EventBridge integration are not covered by the sources below. Webex Contact Center webhook event types for tasks and agents as a streaming export path are not covered by the sources below. A webhook subscription for the `capture:available` event notifies a client when a new recording is ready[^51]. Bulk data export options, such as data feeds or a data lake product, for vendors not documented in the claims above are not covered by the sources below. The availability date of the Genesys lakehouse platform with Apache Iceberg tables and direct SQL querying is not covered by the sources below. Genesys describes that platform only as coming in the future[^33]. Full Amazon Connect data lake table schemas and integration options that avoid a separate ETL pipeline are not covered by the sources below. The claims document only table names and their age timestamp columns[^13]. NICE CXone reporting and data extraction APIs other than Data Share are not covered by the sources below.

## Sources

[^1]: Amazon Connect agent event stream EventType values are STATE_CHANGE, HEART_BEAT, LOGIN and LOGOUT. Source: [Agent event streams data model in Connect Customer](https://docs.aws.amazon.com/connect/latest/adminguide/agent-event-stream-model.html), AgentEvent, EventType. Checked 2026-10-02.
[^2]: Amazon Connect agent events continue to be published for up to an hour after an agent has logged off. Source: [Agent event streams data model in Connect Customer](https://docs.aws.amazon.com/connect/latest/adminguide/agent-event-stream-model.html), Introduction, Note under HEART_BEAT. Checked 2026-10-02.
[^3]: Amazon Connect publishes an agent HEART_BEAT event every 120 seconds if no other agent event was published during that interval. Source: [Agent event streams data model in Connect Customer](https://docs.aws.amazon.com/connect/latest/adminguide/agent-event-stream-model.html), Introduction, HEART_BEAT bullet. Checked 2026-10-02.
[^4]: In the Amazon Connect data streaming settings, agent events are sent to a Kinesis data stream; the procedure offers no Firehose option for agent events. Source: [Enable data streaming for your Connect Customer instance](https://docs.aws.amazon.com/connect/latest/adminguide/data-streaming.html), To enable data streaming for your instance, step 6 (Agent Events). Checked 2026-10-02.
[^5]: Amazon Connect delivers contact records at least once, so a downstream store can receive the same contact record more than once. Source: [Data model for Connect Customer contact records](https://docs.aws.amazon.com/connect/latest/adminguide/ctr-data-model.html), Important things to know, second bullet. Checked 2026-10-02.
[^6]: An Amazon Connect contact record is available for 24 months from the time the associated contact was initiated. Source: [Data model for Connect Customer contact records](https://docs.aws.amazon.com/connect/latest/adminguide/ctr-data-model.html), Important things to know, second bullet, final sentence. Checked 2026-10-02.
[^7]: Because Amazon Connect contact records are delivered at least once and are redelivered when updated, a warehouse loading them from Kinesis or Firehose should upsert on ContactId and keep the most recent version instead of appending blindly (inferred). Source: [Data model for Connect Customer contact records](https://docs.aws.amazon.com/connect/latest/adminguide/ctr-data-model.html), Important things to know, second bullet (premise). Checked 2026-10-02.
[^8]: AWS adds new fields to the Amazon Connect contact record data model in backward-compatible changes and recommends that consuming applications ignore unknown new fields. Source: [Data model for Connect Customer contact records](https://docs.aws.amazon.com/connect/latest/adminguide/ctr-data-model.html), Important things to know, first bullet. Checked 2026-10-02.
[^9]: Amazon Connect may deliver a contact record again when new information arrives after initial delivery; for example, updating contact attributes with update-contact-attributes causes a new contact record to be delivered. Source: [Data model for Connect Customer contact records](https://docs.aws.amazon.com/connect/latest/adminguide/ctr-data-model.html), Important things to know, second bullet. Checked 2026-10-02.
[^10]: Amazon Connect data streaming can send contact records either to an Amazon Data Firehose delivery stream or to a Kinesis data stream, chosen per instance in the console. Source: [Enable data streaming for your Connect Customer instance](https://docs.aws.amazon.com/connect/latest/adminguide/data-streaming.html), To enable data streaming for your instance, step 5 (Contact records). Checked 2026-10-02.
[^11]: The Amazon Connect analytics data lake keeps a rolling 25-month window of accessible data, with the cutoff date updating at 12 AM UTC. Source: [Data retention in the Connect Customer analytics data lake](https://docs.aws.amazon.com/connect/latest/adminguide/data-lake-data-retention.html), Data retention in the Connect Customer analytics data lake, first paragraph. Checked 2026-10-02.
[^12]: From the CLI, Amazon Connect data lake tables are associated to an account with batch-associate-analytics-data-set, where each DataSetIds value is a table name such as contact_record. Source: [Access Connect Customer data lake](https://docs.aws.amazon.com/connect/latest/adminguide/access-datalake.html), Option 2: Use CLI or CloudShell, steps 1-3. Checked 2026-10-02.
[^13]: For data lake retention, Amazon Connect ages the contact_record and contact_statistic_record tables by disconnect_timestamp, and agent_statistic_record by interval_end_time. Source: [Data retention in the Connect Customer analytics data lake](https://docs.aws.amazon.com/connect/latest/adminguide/data-lake-data-retention.html), Table name / Age timestamp column table. Checked 2026-10-02.
[^14]: AWS suggests keeping Amazon Connect data lake data beyond the window by running a scheduled query that writes each table to the customer's own S3 bucket, for example with CTAS or UNLOAD, and then applying S3 Lifecycle rules. Source: [Data retention in the Connect Customer analytics data lake](https://docs.aws.amazon.com/connect/latest/adminguide/data-lake-data-retention.html), Retaining data past the 25-month window, second paragraph. Checked 2026-10-02.
[^15]: The Amazon Connect data lake's 25-month retention window is fixed and cannot be changed; data needed for longer must be copied to storage the customer controls before it ages out. Source: [Data retention in the Connect Customer analytics data lake](https://docs.aws.amazon.com/connect/latest/adminguide/data-lake-data-retention.html), Retaining data past the 25-month window. Checked 2026-10-02.
[^16]: Amazon Connect data lake tables are shared by adding a data share to a target (consumer) AWS account, which can be the account that hosts the instance or a different account. Source: [Access Connect Customer data lake](https://docs.aws.amazon.com/connect/latest/adminguide/access-datalake.html), Option 1: Use the Connect Customer console, steps 3-4. Checked 2026-10-02.
[^17]: Amazon Connect analytics data lake data is refreshed after a record is created, with a small processing delay, and should be available in less than an hour. Source: [Connect Customer data lake](https://docs.aws.amazon.com/connect/latest/adminguide/data-lake.html), Connect Customer data lake, first paragraph. Checked 2026-10-02.
[^18]: The Amazon Connect GetMetricDataV2 API retrieves historical metric data for only the last 3 months, so it is not a long-range export mechanism. Source: [GetMetricDataV2 - Amazon Connect API Reference](https://docs.aws.amazon.com/connect/latest/APIReference/API_GetMetricDataV2.html), GetMetricDataV2, opening description. Checked 2026-10-02.
[^19]: The Amazon Connect InitialContactId property holds the original identifier of a contact that was transferred, which allows chained contact records to be grouped into one interaction. Source: [Agent event streams data model in Connect Customer](https://docs.aws.amazon.com/connect/latest/adminguide/agent-event-stream-model.html), Contact object, InitialContactId. Checked 2026-10-02.
[^20]: To stream Amazon Connect data into a Kinesis stream encrypted with a customer managed KMS key, the key policy must allow the instance's service-linked role kms:GenerateDataKey, and AWS advises doing this before using the key to avoid missing data. Source: [Enable data streaming for your Connect Customer instance](https://docs.aws.amazon.com/connect/latest/adminguide/data-streaming.html), Use server-side encryption for the Kinesis stream; Step 2: Construct a policy statement. Checked 2026-10-02.
[^21]: In Amazon Connect, when an agent transfers a customer to another agent or queue using quick connects, a new contact record is created with initiation method TRANSFER. Source: [Agent event streams data model in Connect Customer](https://docs.aws.amazon.com/connect/latest/adminguide/agent-event-stream-model.html), Contact object, InitiationMethod, TRANSFER value. Checked 2026-10-02.
[^22]: Because Genesys lakehouse extraction only covers a 72-hour window, an export pipeline that is down for longer than that likely needs to backfill the gap from async conversation detail jobs (inferred). Source: [Genesys Cloud data lakehouse](https://help.genesys.cloud/articles/genesys-cloud-data-lakehouse/), Data retention / extraction window section (premise). Checked 2026-10-02.
[^23]: Genesys recommends the Analytics Conversation Detail async endpoint (/api/v2/analytics/conversations/details/jobs) instead of the synchronous detail query for historical queries. Source: [Analytics Conversation Detail Endpoint API query interval change](https://help.genesys.cloud/announcements/analytics-conversation-detail-endpoint-api-query-change/), Announcement body, recommendation paragraph. Checked 2026-10-02.
[^24]: For a Genesys Cloud async conversation detail job, the interval selects all conversations that had activity during the interval, not only those that started in it. Source: [platform-client-sdk-python: AsyncConversationQuery](https://raw.githubusercontent.com/MyPureCloud/platform-client-sdk-python/master/build/docs/AsyncConversationQuery.md), interval property. Checked 2026-10-02.
[^25]: A Genesys Cloud async conversation detail job response carries dataAvailabilityDate, meaning data is available up to at least that datetime; conversations after it may be missing from the result. Source: [platform-client-sdk-python: AnalyticsConversationAsyncQueryResponse](https://raw.githubusercontent.com/MyPureCloud/platform-client-sdk-python/master/build/docs/AnalyticsConversationAsyncQueryResponse.md), data_availability_date property. Checked 2026-10-02.
[^26]: Genesys Cloud provides POST /api/v2/analytics/dataextraction/downloads/bulk, which returns download URLs for analytics data warehouse files. Source: [platform-client-sdk-python: AnalyticsApi](https://raw.githubusercontent.com/MyPureCloud/platform-client-sdk-python/master/build/docs/AnalyticsApi.md), post_analytics_dataextraction_downloads_bulk. Checked 2026-10-02.
[^27]: The Genesys Cloud Amazon EventBridge integration sends events from the topics a customer subscribes to into AWS EventBridge, where they appear as JSON. Source: [About the Amazon EventBridge integration](https://help.genesys.cloud/articles/about-the-amazon-eventbridge-integration/), Overview. Checked 2026-10-02.
[^28]: Genesys Cloud exposes GET /api/v2/analytics/conversations/details/jobs/availability to look up the date and time up to which the analytics datalake is available, before submitting a job. Source: [platform-client-sdk-python: AnalyticsApi](https://raw.githubusercontent.com/MyPureCloud/platform-client-sdk-python/master/build/docs/AnalyticsApi.md), get_analytics_conversations_details_jobs_availability. Checked 2026-10-02.
[^29]: Genesys Cloud async conversation detail jobs are created with POST /api/v2/analytics/conversations/details/jobs, and job status is read with GET /api/v2/analytics/conversations/details/jobs/{jobId}. Source: [platform-client-sdk-python: AnalyticsApi](https://raw.githubusercontent.com/MyPureCloud/platform-client-sdk-python/master/build/docs/AnalyticsApi.md), post_analytics_conversations_details_jobs; get_analytics_conversations_details_job. Checked 2026-10-02.
[^30]: Results of a Genesys Cloud async conversation detail job are retrieved a page at a time from GET /api/v2/analytics/conversations/details/jobs/{jobId}/results, and each response carries an optional cursor for resuming. Source: [platform-client-sdk-python: AnalyticsApi](https://raw.githubusercontent.com/MyPureCloud/platform-client-sdk-python/master/build/docs/AnalyticsApi.md), get_analytics_conversations_details_job_results. Checked 2026-10-02.
[^31]: Genesys Cloud lakehouse data extraction has a 72-hour extraction window, with short-term snapshots covering up to the latest three days of conversation data. Source: [Genesys Cloud data lakehouse](https://help.genesys.cloud/articles/genesys-cloud-data-lakehouse/), Data retention / extraction window section. Checked 2026-10-02.
[^32]: The Genesys Cloud lakehouse export is enabled in the admin UI under Menu > Analytics > Analytics Settings > Lakehouse Settings tab > Enable, after the service order and permissions are in place. Source: [Genesys Cloud data lakehouse](https://help.genesys.cloud/articles/genesys-cloud-data-lakehouse/), Enabling the export path section. Checked 2026-10-02.
[^33]: As of 2026-10-02, Genesys documents the Parquet export path as available now and a fuller lakehouse platform with Apache Iceberg tables and direct SQL querying as coming in the future. Source: [Genesys Cloud data lakehouse](https://help.genesys.cloud/articles/genesys-cloud-data-lakehouse/), Licensing and status / future platform section. Checked 2026-10-02.
[^34]: The Genesys Cloud data lakehouse export path delivers structured data in Parquet format to Amazon S3 approximately every 5 to 10 minutes. Source: [Genesys Cloud data lakehouse](https://help.genesys.cloud/articles/genesys-cloud-data-lakehouse/), Format and delivery section. Checked 2026-10-02.
[^35]: In the Genesys Cloud analytics conversation detail model, a conversation contains a list of participants, each with a participantId and a purpose and, for users, a userId. Source: [platform-client-sdk-python: AnalyticsParticipantWithoutAttributes](https://raw.githubusercontent.com/MyPureCloud/platform-client-sdk-python/master/build/docs/AnalyticsParticipantWithoutAttributes.md), participant_id, purpose, user_id properties. Checked 2026-10-02.
[^36]: Each Genesys Cloud analytics session contains a list of segments and a list of session metrics, giving a conversation > participant > session > segment hierarchy. Source: [platform-client-sdk-python: AnalyticsSession](https://raw.githubusercontent.com/MyPureCloud/platform-client-sdk-python/master/build/docs/AnalyticsSession.md), segments and metrics properties. Checked 2026-10-02.
[^37]: Each Genesys Cloud analytics participant contains a list of sessions, and each session has a sessionId and a mediaType. Source: [platform-client-sdk-python: AnalyticsParticipantWithoutAttributes](https://raw.githubusercontent.com/MyPureCloud/platform-client-sdk-python/master/build/docs/AnalyticsParticipantWithoutAttributes.md), sessions property. Checked 2026-10-02.
[^38]: For recent Genesys Cloud conversation data, Genesys recommends using the notifications service where possible rather than polling the detail query. Source: [Analytics Conversation Detail Endpoint API query interval change](https://help.genesys.cloud/announcements/analytics-conversation-detail-endpoint-api-query-change/), Announcement body, recommendation paragraph. Checked 2026-10-02.
[^39]: The Genesys Cloud AWS S3 recording bulk actions integration exports recordings of any media type, screen recordings, attachments and metadata to a customer S3 bucket. Source: [About the AWS S3 recording bulk actions integration](https://help.genesys.cloud/articles/about-the-aws-s3-recording-bulk-actions-integration/), Page introduction. Checked 2026-10-02.
[^40]: The Genesys Cloud S3 recording bulk export runs either automatically through policies or on demand through the Recording Bulk Job API, and it can export archived recordings without restoring them first. Source: [About the AWS S3 recording bulk actions integration](https://help.genesys.cloud/articles/about-the-aws-s3-recording-bulk-actions-integration/), Page introduction and capability list. Checked 2026-10-02.
[^41]: A Genesys Cloud async conversation query can set startOfDayIntervalMatching to include only conversations that started after the beginning of the interval start date (UTC). Source: [platform-client-sdk-python: AsyncConversationQuery](https://raw.githubusercontent.com/MyPureCloud/platform-client-sdk-python/master/build/docs/AsyncConversationQuery.md), start_of_day_interval_matching property. Checked 2026-10-02.
[^42]: Since 16 December 2020, the Genesys Cloud synchronous Analytics Conversation Detail endpoint accepts interval start dates only up to 558 days in the past, including today. Source: [Analytics Conversation Detail Endpoint API query interval change](https://help.genesys.cloud/announcements/analytics-conversation-detail-endpoint-api-query-change/), Announcement body, change description. Checked 2026-10-02.
[^43]: Genesys Cloud user (agent) detail data has its own async export, POST /api/v2/analytics/users/details/jobs, separate from conversation detail jobs. Source: [platform-client-sdk-python: AnalyticsApi](https://raw.githubusercontent.com/MyPureCloud/platform-client-sdk-python/master/build/docs/AnalyticsApi.md), post_analytics_users_details_jobs. Checked 2026-10-02.
[^44]: NICE CXone Data Share requires a separate licence that is enabled through the customer's NICE account representative. Source: [Data Share](https://help.nicecxone.com/content/datashare/datashare.htm), Licensing paragraph. Checked 2026-10-02.
[^45]: Alternatively, NICE can provide a Snowflake account for Data Share, hosted on AWS or Azure in the same region as the customer's CXone instance. Source: [Data Share](https://help.nicecxone.com/content/datashare/datashare.htm), Snowflake account options. Checked 2026-10-02.
[^46]: With a NICE-provided Snowflake account, CXone Data Share replication is managed by NICE on a schedule the customer cannot configure. Source: [Data Share](https://help.nicecxone.com/content/datashare/datashare.htm), Data refresh / replication comparison. Checked 2026-10-02.
[^47]: NICE CXone Data Share can target the customer's own Snowflake account on AWS, Azure or Google Cloud in any region. Source: [Data Share](https://help.nicecxone.com/content/datashare/datashare.htm), Snowflake account options. Checked 2026-10-02.
[^48]: With the customer's own Snowflake account, CXone Data Share uses sub-database replication that updates every minute, with data available after a lag of up to one hour. Source: [Data Share](https://help.nicecxone.com/content/datashare/datashare.htm), Data refresh / replication comparison. Checked 2026-10-02.
[^49]: A customer-owned Snowflake account can hold up to 25 customisable CXone data shares with selectable secure views, while a NICE-provided account gets one share per system without view selection. Source: [Data Share](https://help.nicecxone.com/content/datashare/datashare.htm), Account type comparison table. Checked 2026-10-02.
[^50]: NICE CXone contact center data is stored in a Snowflake data warehouse, and the Data Share feature gives customers access to it in Snowflake or for pulling into an external data store. Source: [Data Share](https://help.nicecxone.com/content/datashare/datashare.htm), What is Data Share. Checked 2026-10-02.
[^51]: A Webex Contact Center webhook subscription for the capture:available event notifies a client when a new recording is ready, with a payload containing the taskId and a link to the downloadable recording. Source: [The A-Z of Webex Contact Center APIs: Capture APIs](https://developer.webex.com/blog/the-a-z-of-webex-contact-center-apis), Captures webhook section. Checked 2026-10-02.
[^52]: Webex Contact Center recordings and email transcripts are retrieved through the List Captures API, which requires the cjp:config_read or cjp-analyzer:read scope. Source: [The A-Z of Webex Contact Center APIs: Capture APIs](https://developer.webex.com/blog/the-a-z-of-webex-contact-center-apis), List Captures section. Checked 2026-10-02.
[^53]: The Webex Contact Center Search API agentSession query operates on Agent Session Records (ASRs) and Agent Activity Records (AARs). Source: [GraphQL sample README (reporting-samples/graphql-sample)](https://raw.githubusercontent.com/WebexSamples/webex-contact-center-api-samples/main/reporting-samples/graphql-sample/README.md), agentSession query section. Checked 2026-10-02.
[^54]: The Webex Contact Center Search API returns raw taskDetails and agentSession data 250 records per page, with at most 100,000 taskDetails records retrievable by pagination; aggregation queries return 1,000 per page. Source: [GraphQL sample README (reporting-samples/graphql-sample)](https://raw.githubusercontent.com/WebexSamples/webex-contact-center-api-samples/main/reporting-samples/graphql-sample/README.md), Pagination Support table. Checked 2026-10-02.
[^55]: When fetching raw AAR or CAR data through the Webex Contact Center Search API, the from-to query span cannot exceed 30 days. Source: [GraphQL sample README (reporting-samples/graphql-sample)](https://raw.githubusercontent.com/WebexSamples/webex-contact-center-api-samples/main/reporting-samples/graphql-sample/README.md), Fetching Raw Data section. Checked 2026-10-02.
[^56]: The Webex Contact Center Search API is a GraphQL interface whose taskDetails query operates on Customer Session Records (CSRs) and Customer Activity Records (CARs). Source: [GraphQL sample README (reporting-samples/graphql-sample)](https://raw.githubusercontent.com/WebexSamples/webex-contact-center-api-samples/main/reporting-samples/graphql-sample/README.md), taskDetails query section. Checked 2026-10-02.
[^57]: The Webex Contact Center Search API has a taskLegDetails query over Call Leg Records (CLRs), labelled Queue Based Reporting Early Access, paging 500 raw records at a time up to 100,000. Source: [GraphQL sample README (reporting-samples/graphql-sample)](https://raw.githubusercontent.com/WebexSamples/webex-contact-center-api-samples/main/reporting-samples/graphql-sample/README.md), TaskLegDetails Query section; Pagination Support table. Checked 2026-10-02.
[^58]: Across the platforms reviewed, warehouse exports fall into roughly three freshness tiers: event streams for seconds-scale data (Connect Kinesis, Genesys EventBridge), managed batch shares at minutes up to an hour (Genesys Parquet every 5-10 minutes, CXone Data Share, Connect data lake), and query APIs whose freshness the documentation read does not quantify (Genesys detail jobs, Webex Search) (inferred). Source: [Connect Customer data lake](https://docs.aws.amazon.com/connect/latest/adminguide/data-lake.html), Connect Customer data lake, first paragraph (one of several premises). Checked 2026-10-02.
