---
title: 4.2. Data Integration
slug: conversation-intelligence/42-data-integration
docTags: 
createdAt: 2026-10-21T07:29:46.492Z
---

**Target audience:** Admins, IT partners, professional services teams

**Description:** How conversation data gets into CQA and how results get out. Everything here lives under **Manage › Data Integration** in the left navigation: **Metadata**, **Connector**, **Access API**, and **Job & Schedule**. Path playbooks at the end walk through each supported integration end to end.

Scoring setup (Quality Profile, Assignment Rule, and so on) is under **Manage › Configuration** in [chapter 4](https://docs.exotel.com/conversation-intelligence/4-manage-configuration). The full API contract is in the [API Reference Guide](https://docs.exotel.com/conversation-intelligence/6-api-reference-guide).

Menu items appear only when your role and account allow them. See [2.4 Navigation map](https://docs.exotel.com/conversation-intelligence/2-getting-started#24-navigation-map).

***

# 4.2.0. Decision guide

## Why integrations matter

CQA analyzes your conversations. To do this automatically, it needs:

1. Call recordings (audio files or transcripts).
2. Metadata (agent ID, campaign, team, queue, and so on).
3. A reliable way to move data from your system into CQA.

Integrations are the pipes that deliver this data on schedule with minimal manual effort. Once your account is set up, ingestion and analysis happen automatically.

## How CQA processes data

Whichever integration you choose, CQA follows the same three steps:

1. **Ingest** — Your system sends recordings and metadata to CQA (through SFTP, S3, the API, or a native Exotel integration).
2. **Analyze** — CQA applies your Assignment Rules and Quality Profiles, and the AI scores each interaction.
3. **Store and export** — Results appear in **WORK › Analysis List**. Optionally, CQA pushes scores back to your systems (S3, SFTP, email, or the API).

## Key concepts

| Concept             | Meaning                                                                                                                                                                                                                                                                               |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Connector**       | A saved connection to a data source or destination (for example, "Production S3" or "Support SFTP"). Created once, reused by many jobs. See [5.3](https://docs.exotel.com/conversation-intelligence/5-manage-data-integration#53-connector).                                          |
| **Job**             | A task that uses a connector to move data, once or on a schedule (for example, "Daily S3 import" or "Weekly email report to leadership"). See [5.5](https://docs.exotel.com/conversation-intelligence/5-manage-data-integration#55-job-schedule).                                     |
| **Metadata**        | Structured data attached to every conversation (agent name, campaign, duration, queue, region). Used to route conversations to Quality Profiles and to filter and report results. See [5.2](https://docs.exotel.com/conversation-intelligence/5-manage-data-integration#52-metadata). |
| **Assignment Rule** | Logic such as "if metadata matches condition X, use Quality Profile Y". See Assignment Rule in [chapter 4](https://docs.exotel.com/conversation-intelligence/4-manage-configuration).                                                                                                 |

## Before you start

Every integration path needs:

1. **Account and users** — created with your CSM, and users invited in **Manage › Configuration › User Management** ([chapter 4](https://docs.exotel.com/conversation-intelligence/4-manage-configuration)).
2. **Quality Profiles** — what you want to score ([chapter 4](https://docs.exotel.com/conversation-intelligence/4-manage-configuration)).
3. **Assignment Rules** — which conversations get analyzed ([chapter 4](https://docs.exotel.com/conversation-intelligence/4-manage-configuration)).
4. **Metadata** — the fields you need for routing, filtering, and access control enabled and named ([5.2](https://docs.exotel.com/conversation-intelligence/5-manage-data-integration#52-metadata)). Metadata keys appear after the first interactions arrive; you can also add custom metadata in advance.

Without Quality Profiles and Assignment Rules, ingested calls are stored but not analyzed.

## Choose your integration path

| Your situation                      | Path                                                                                                                   | Import | Export              | How it is scheduled                            |
| ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ------ | ------------------- | ---------------------------------------------- |
| On Exotel ECC 4x                    | [ECC 4x](https://docs.exotel.com/conversation-intelligence/5-manage-data-integration#ecc-4x)                           | Yes    | No                  | Automatic                                      |
| On Exotel ECC 6x                    | [ECC 6x](https://docs.exotel.com/conversation-intelligence/5-manage-data-integration#ecc-6x)                           | Yes    | Yes (back into ECC) | Automatic                                      |
| On Exotel Platform (Exolite)        | [Exotel Platform](https://docs.exotel.com/conversation-intelligence/5-manage-data-integration#exotel-platform-exolite) | Yes    | No                  | Automatic                                      |
| Files in your Amazon S3 bucket      | [Customer S3](https://docs.exotel.com/conversation-intelligence/5-manage-data-integration#customer-s3)                 | Yes    | Yes                 | Jobs you create                                |
| Files on your SFTP server           | [Customer SFTP](https://docs.exotel.com/conversation-intelligence/5-manage-data-integration#customer-sftp)             | Yes    | Yes                 | Jobs you create                                |
| Reports to an inbox                 | [Email export](https://docs.exotel.com/conversation-intelligence/5-manage-data-integration#email-export)               | No     | Yes                 | Jobs you create, or one-off from Analysis List |
| Any other CCaaS, CRM, or middleware | [Standard API](https://docs.exotel.com/conversation-intelligence/5-manage-data-integration#standard-api)               | Yes    | Yes                 | Your system calls the API                      |

For ECC 4x and Exotel Platform, results stay in CQA unless you also set up an export path (S3, SFTP, Email, or the Standard API).

***

# 4.2.1. Metadata

**Path:** Manage › Data Integration › Metadata · **Who:** Admin

Metadata is the vocabulary CQA uses to understand your calls: the tags attached to each recording (for example, Agent ID, Campaign Name, Talk Time). It drives filtering, reporting, routing, access control, and optional AI context.

## Page map

The page lists every metadata key ingested by CQA, plus any custom metadata you add.

| Column / control          | What it does                                                                       |
| ------------------------- | ---------------------------------------------------------------------------------- |
| **CQA Mapping**           | The CQA field the key maps to.                                                     |
| **Metadata Key**          | The key as received from your source (for example, `program_id`).                  |
| **Metadata Display Name** | The name users see in filters and reports (for example, "Campaign").               |
| **Data Type** / **Unit**  | The value type; duration fields also have a unit.                                  |
| **Enabled**               | Turns the field on across the platform.                                            |
| **Filter Option**         | Makes the field available as a filter.                                             |
| **Access Control**        | Uses the field to restrict data by user.                                           |
| **Inject to AI**          | Sends the field's value to the AI as context.                                      |
| **Action**                | Edit the field (opens the field drawer). Clicking a row also opens it for editing. |
| **Custom Metadata**       | Adds a new metadata field.                                                         |
| Filters                   | Narrow the list, for example to standard CQA keys or enabled fields only.          |

## Feature hub

### Field settings

| Setting            | Effect                                                                                                                                                                                                                                                                                                       |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Enabled**        | Enabled fields are visible throughout the platform, in dashboards and reports. Disabled fields are hidden entirely.                                                                                                                                                                                          |
| **Filter Option**  | The field appears as a dropdown in **Assignment Rule** and **Analysis List**, so users can slice data by it (for example, "Show me calls from North Region").                                                                                                                                                |
| **Access Control** | Restricts data visibility by user. For example, if Region is set for access control, a Supervisor assigned to Region A cannot see Region B data. Each user's value is set as **Access Metadata** in User Management ([chapter 4](https://docs.exotel.com/conversation-intelligence/4-manage-configuration)). |
| **Inject to AI**   | CQA includes this field's value as additional context when the AI analyzes the call or transcript. Works for metadata from every ingestion source (ECC, Exotel Platform, S3, SFTP, Excel, Ingress API). Up to **20** fields per account; values longer than **20 characters** are truncated for AI context.  |

Inject to AI adds short context strings. To verify agent claims against live system data for specific KPIs, use Tool Integration instead ([chapter 4](https://docs.exotel.com/conversation-intelligence/4-manage-configuration)).

## Tasks

### Rename a field for business users

Technical keys such as `program_id` are not intuitive for business users.

1. Go to **Manage › Data Integration › Metadata**.
2. Click the field's row (or its edit action). The field drawer opens.
3. Enter a friendly **Metadata Display Name** (for example, "Campaign").
4. Click **Save**.

Users now see "Campaign" in reports and filters, while CQA keeps reading `program_id` in the background.

### Configure how a field behaves

1. Go to **Manage › Data Integration › Metadata**.
2. Click the field's row (or its edit action) to open the field drawer.
3. In the drawer, turn on or off **Enabled**, **Filter Option**, **Access Control**, and (if available) **Inject to AI**.
4. Click **Save**.

### Add custom metadata

Use this to define a field before data arrives, or to add a field your source does not send under a standard key.

1. Go to **Manage › Data Integration › Metadata**.
2. Click **Custom Metadata**.
3. Enter the **Metadata Key** and **Metadata Display Name**.
4. Choose a **Data Type**. For a duration type, also choose a **Unit**.
5. Click **Add**.

Before changing a field's settings, check that no Assignment Rule filter, access setting, or Tool Integration mapping depends on the field.

***

# 4.2.2. Connector

**Path:** Manage › Data Integration › Connector (page title: **Connectors**) · **Who:** Admin

A connector is a saved connection to a data source (import) or destination (export). You create it once and reuse it in jobs.

## Page map

| Region / control            | What it does                                                                                                                                                                         |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Create Connector**        | Asks what type of connector to create: **Import Connector** (pull data into the platform) or **Export Connector** (send data to external destinations), then the connector **Type**. |
| **Type** filter             | **All**, **Import**, or **Export**.                                                                                                                                                  |
| Search                      | **Search by connector name**.                                                                                                                                                        |
| **Data Import Connectors**  | Source connectors, for example ECC 4x, ECC 6x, Exotel Platform, Amazon S3, SFTP.                                                                                                     |
| **Data Export Connectors**  | Destination connectors, for example Amazon S3, SFTP, Email.                                                                                                                          |
| Connector actions           | **Edit**, **Test Connection**, **Delete**. Supported import connectors also have **Test Run**.                                                                                       |
| **Scheduled Automatically** | Shown on Exotel product connectors whose import job CQA creates for you.                                                                                                             |

## Feature hub

### Test Connection vs Test Run

| Action              | What it validates                                                                                                           | Available on                                                       |
| ------------------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
| **Test Connection** | Reachability and authentication: can CQA talk to the source or destination with the saved credentials?                      | All connectors                                                     |
| **Test Run**        | End to end: CQA pulls from the configured source, processes the data, and runs analysis — without waiting for the schedule. | Import connectors for ECC 4x, Exotel Platform, SFTP, and Amazon S3 |

What Test Run uses:

- **SFTP / ECC 4x file paths:** The configured path and files already there.
- **S3 and other file imports:** One row from the newest CSV file in the configured path.
- **Exotel Platform:** One recent call fetched from the Exotel Platform API.

Test Run shows progress by stage, for example **Authentication**, **File Discovery**, **File Validation**, **Data Discovery**, **Call Stats Fetch**, and **Recording Processing**. Each stage is Pending, Running, Success, Failed, or Skipped. The run ends as:

- **Completed** — the test call went through.
- **No New Recordings** — connectivity is confirmed, but every call found was already processed.
- **Failed** — check the stage that failed. Test Run returns an error if there is no file to analyze.

## Tasks

### Create an import connector

1. Go to **Manage › Data Integration › Connector**.
2. Click **Create Connector** and choose **Import Connector**.
3. Select the **Type** (for example, Amazon S3, SFTP, ECC 4x, ECC 6x, or Exotel Platform).
4. Fill in the fields for that type.
5. Click **Create**, then **Test Connection**.
6. For supported types, click **Test Run** to check the full pipeline.

For S3 and SFTP, create an import job next ([5.5](https://docs.exotel.com/conversation-intelligence/5-manage-data-integration#55-job-schedule)). For ECC 4x, ECC 6x, and Exotel Platform, CQA creates the import job automatically.

### Create an export connector

1. Go to **Manage › Data Integration › Connector**.
2. Click **Create Connector** and choose **Export Connector**.
3. Select the **Type** (Amazon S3, SFTP, or Email).
4. Fill in the fields for that type.
5. Click **Create**, then **Test Connection**.

Then create an export job that uses it ([Schedule a recurring report export](https://docs.exotel.com/conversation-intelligence/5-manage-data-integration#schedule-a-recurring-report-export)). Export connectors also appear under **Destination Connectors** when exporting once from the Analysis List ([3.11](https://docs.exotel.com/conversation-intelligence/3-work-operational-workflows#311-export-a-report-once)).

***

# 4.2.3. Access API

**Path:** Manage › Data Integration › Access API (page title: **API Keys**) · **Who:** Admin

Access API is where you create and revoke the keys your systems use to call the CQA Data Import and Data Export APIs. This section is a checklist only; endpoints, authentication, schemas, and limits are in the [API Reference Guide](https://docs.exotel.com/conversation-intelligence/6-api-reference-guide).

## Checklist

1. **Check the key limit.** An account can have at most **2** active API keys. At the limit, the page shows "Maximum of 2 API keys allowed"; revoke a key before creating a new one.
2. **Generate a key.** Click **New API Key**. In the **Generate API Key** drawer, enter a descriptive **API Key Name** (where the key is used), then click **Generate API Key**.
3. **Copy the credentials.** The key card shows the **API Key** and **Account ID** with **Copy** buttons. Store them in your secrets manager; never paste them into tickets, chat, or documents.
4. **Build the integration.** Follow the [API Reference Guide](https://docs.exotel.com/conversation-intelligence/6-api-reference-guide) to push conversations and pull results.
5. **Verify.** See [Standard API](https://docs.exotel.com/conversation-intelligence/5-manage-data-integration#standard-api) in the path playbooks.
6. **Rotate or revoke.** Click **Revoke** on a key and confirm. The key disappears from the list immediately, but the Import and Export APIs may still accept it for up to **24 hours**. Plan rotations so the new key is in place first.

If you cannot see Access API, ask your CQA administrator for a key.

***

# 4.2.4. Job & Schedule

**Path:** Manage › Data Integration › Job & Schedule (page title: **Jobs & Schedules**) · **Who:** Admin

Jobs link connectors to schedules. They automate data imports and **recurring report exports**. This is the canonical home for recurring exports; to export once, use [3.11 Export a report once](https://docs.exotel.com/conversation-intelligence/3-work-operational-workflows#311-export-a-report-once).

## Page map

| Region / control     | What it does                                                                                                                            |
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| **Create Job**       | Opens the **Configure New Job** drawer.                                                                                                 |
| Search               | **Search by job name**.                                                                                                                 |
| **Job Type** filter  | All, **Data Export**, **Data Import**.                                                                                                  |
| **Frequency** filter | All, One-time, Hourly, Daily, Weekly, Monthly, and intra-day options such as Every 10 min, Every 30 min, Every 6 hours, Every 12 hours. |
| **Status** filter    | All, **Active**, **Inactive**, **Expired**.                                                                                             |
| Table columns        | **Job Name**, **Job Type**, **Connector**, **Created By**, **Schedule**, **Last Run**, **Next Run**, **Status**, **Actions**.           |
| **Actions** (⋮)      | **Trigger Now**, **Disable Job** / **Enable Job**, **Delete**.                                                                          |

Exotel product connectors (ECC 4x, ECC 6x, Exotel Platform) create their import jobs automatically. These system-managed jobs appear in the table with schedules such as **Every 5 min**, **Every 10 min**, or **Event-Driven**, and their actions are disabled ("This job is automatically managed by the internal system connector").

## Feature hub

### Job statuses

| Status       | Meaning                                                                                                                                                                                 |
| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Active**   | The job is on and runs on its schedule.                                                                                                                                                 |
| **Inactive** | The job is disabled. It keeps its settings but does not run.                                                                                                                            |
| **Expired**  | A recurring job whose end date has passed. It no longer runs, **Next Run** shows "Not Scheduled", and Trigger Now and Enable/Disable are unavailable. One-time jobs never show Expired. |

To keep an expired export going, create a new job with a new end date (or **Ends: Never**).

### Frequencies

| Group                          | Options                                                                                       | Notes                                                                                                                                                  |
| ------------------------------ | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Standard                       | **One-time**, **Daily**, **Weekly**, **Monthly**                                              | One-time runs once, immediately after creation. Daily scheduled jobs run at 2:00 AM in your account's timezone.                                        |
| Intra-Day                      | **Every 10 minutes**, **Every 30 minutes**, **Hourly**, **Every 6 hours**, **Every 12 hours** | Shows the account **Timezone** and an optional **Active Window** (default 9:00 to 18:00): only conversations arriving within those hours are analyzed. |
| Product connectors (automatic) | **Every day** (ECC 4x, Exotel Platform), **Event-Driven** (ECC 6x)                            | Created and managed by CQA.                                                                                                                            |

For recurring jobs, set a **Start Date** and choose **Ends: Never** or **Ends: On** with an **End Date**.

### Export job data range

- **One-time** exports choose a **Date Range** of at most **31 days**. Ranges longer than 7 days may take longer.
- **Recurring** exports (Daily, Weekly, Monthly, and intra-day) do not have a Date Range field. CQA sets the data range from the frequency. If you apply a Saved Filter that includes a date range, that date range is ignored.

### One drawer, two entry points

| Opened from                              | Drawer title          | Typical use                                                                                                                       |
| ---------------------------------------- | --------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| **Job & Schedule › Create Job**          | **Configure New Job** | Imports and recurring exports (any job type).                                                                                     |
| **WORK › Analysis List › Export Report** | **Configure New Job** | One-off export ([3.11](https://docs.exotel.com/conversation-intelligence/3-work-operational-workflows#311-export-a-report-once)). |

Steps are the same: **Setup Job**, **Set Schedule**, and — for exports only — **Select Data**. Import jobs have two steps.

### Where results go

Every run is logged in **WORK › Report History** ([3.6](https://docs.exotel.com/conversation-intelligence/3-work-operational-workflows#36-report-history)). Exports are delivered to the job's destination connector.

## Tasks

### Schedule a recurring report export

1. Go to **Manage › Data Integration › Job & Schedule** and click **Create Job**. The **Configure New Job** drawer opens.
2. **Step 1 — Setup Job**
   - **Job Name:** A unique, descriptive name (for example, "Monthly CQA Report Export").
   - **Job Type:** **Data Export**.
   - **File Format:** **CSV** or **Excel**.
   - **Destination Connectors:** Choose where to send the report (for example, an Email, S3, or SFTP export connector).
   - Click **Next**.
3. **Step 2 — Set Schedule**
   - **Frequency:** **Daily**, **Weekly**, **Monthly**, or an **Intra-Day** option (for example, Hourly).
   - For intra-day frequencies, optionally turn on **Active Window** and set the hours.
   - **Start Date**, and **Ends:** **Never** or **On** with an **End Date**.
   - Click **Next**.
4. **Step 3 — Select Data**
   - **Quality Profile:** The profile whose analyses you want.
   - **Saved Filters** (optional): Apply a filter saved on the Analysis List. Only its score and metadata fields are applied; any date range in it is ignored.
   - **Define Output:** Select the fields to include — for example, Base Details, Critical Score Details, KPIs (All, Failed, Critical, Disputed, or Manually Updated), Metadata (Default, Custom), Dispute Workflow Details, Manual Workflow Details, Transcript, Summary, Intent, Vibe, and Sentiment.
5. Click **Create Job**.

Reports are generated automatically at each scheduled run and appear in [Report History](https://docs.exotel.com/conversation-intelligence/3-work-operational-workflows#36-report-history).

### Create an import job

Use this for S3 and SFTP sources. Exotel product connectors do not need one.

1. Go to **Manage › Data Integration › Job & Schedule** and click **Create Job**.
2. **Step 1 — Setup Job:** Enter a **Job Name**, choose **Data Import**, and select the **Source Connectors** (for example, your S3 or SFTP import connector). Click **Next**.
3. **Step 2 — Set Schedule:** Choose the **Frequency**, **Start Date**, and **Ends**. Click **Next** if shown.
4. Click **Create Job**.

Each run pulls all conversations and CSV files available at that time, runs analysis, and results appear in **WORK › Analysis List**.

### Disable or enable a job

In the job's **Actions** menu, click **Disable Job** to pause it without deleting it (for example, during a maintenance window). Click **Enable Job** to resume.

### Delete a job

In the job's **Actions** menu, click **Delete** and confirm. This permanently removes the job and cannot be undone.

***

# 4.2.5. Integration Path playbooks

Each playbook assumes you have completed [Before you start](https://docs.exotel.com/conversation-intelligence/5-manage-data-integration#before-you-start).

## Exotel ecosystem

For customers on Exotel platforms (ECC 4x, ECC 6x, Exotel Platform / Exolite).

### ECC 4x

**What you get:**

- CQA fetches call recordings and metadata automatically.
- Conversations appear in **WORK › Analysis List**.
- Results stay in CQA; add an export path (S3, SFTP, Email, or the Standard API) to send scores elsewhere.
- If CQA is directly enabled within ECC 4X as an iframe — results are visible without needing to log into the CQA console separately

**How data flows:** The ECC VLA module generates a call report and uploads it to CQA by SFTP. CQA uses the call SIDs in that report to fetch the audio recordings. CQA checks for new reports every 5 minutes (shown as **Every 5 min** in Job & Schedule).

**Prerequisites:**

- **Report Scheduler** enabled on your ECC 4x setup, so CQA can access call metadata.
- **VLA module** enabled on your ECC 4x setup, so CQA can access recordings.
- On-premise: whitelist the CQA IP address, and put the VLA server on a public domain.

**Setup:**

1. Confirm your Quality Profiles and Assignment Rules cover the traffic you want analyzed.
2. Go to **Manage › Data Integration › Connector** › **Create Connector** › **Import Connector**, select type **ECC 4x**, choose data source mode **SFTP Report Upload**, and fill in the platform fields.
3. Click **Create**, then **Test Connection**.
4. Click **Test Run** to run a one-time pull and analysis against the saved configuration. It returns an error if there is no file to analyze.
5. The import job is created automatically; you do not need to create one in Job & Schedule.

**Verify:**

1. Identify a recent ECC 4x call that matches your Assignment Rules.
2. After the next report upload from ECC, open **WORK › Analysis List** and confirm the conversation appears with a score.

### ECC 6x

A deeper, native integration for high-throughput environments.

**What you get:**

- CQA receives conversations as they become available (near real time).
- After analysis, CQA automatically sends scores and results back into ECC. Use an export path (S3, SFTP, Email, or the Standard API) to send them elsewhere too.
- Users logged into ECC 6X can view the scores and analysis results directly within ECC without needing to log into the CQA console separately
- Conversations also appear in **WORK › Analysis List**.

**How data flows:** CQA consumes conversations from the ECC Kafka stream in real time and publishes scores and results back into the pipeline for ECC to consume. The import job appears as **Event-Driven** in Job & Schedule.

**Prerequisites:**

- On-premise: whitelist the CQA IP address so CQA can listen to your ECC Kafka servers.

**Setup:**

1. Confirm your Quality Profiles and Assignment Rules cover the traffic you want analyzed.
2. Go to **Connector** › **Create Connector** › **Import Connector**, select type **ECC 6x**, and fill in the platform fields.
3. Click **Create**, then **Test Connection**.
4. The import job is created automatically.

**Verify:**

1. Complete (or identify) an eligible call in ECC 6x.
2. Within a short window, open **WORK › Analysis List** and confirm the conversation is present and scored.
3. Confirm the scored result is visible where your ECC 6x workflows expect it.

### Exotel Platform (Exolite)

For teams on standard Exolite who want CQA analysis with minimal integration work. The connector type is **Exotel Platform**.

**What you get:**

- CQA automatically fetches Exolite call recordings and metadata.
- Conversations appear in **WORK › Analysis List** (on your CQA URL).
- Results stay in CQA; add an export path to send scores elsewhere.

**How data flows:** CQA retrieves recordings using the Exotel Platform bulk call API, checking every 10 minutes (shown as **Every 10 min** in Job & Schedule).

**Setup:**

1. Confirm your Quality Profiles and Assignment Rules cover the traffic you want analyzed.
2. Go to **Connector** › **Create Connector** › **Import Connector**, select type **Exotel Platform**, and fill in the platform fields.
3. Click **Create**, then **Test Connection**.
4. Optionally click **Test Run** to push one recent call through analysis.
5. The import job is created automatically.

**Verify:**

1. Identify an eligible recent Exolite call.
2. After the next import cycle, confirm the conversation appears in **WORK › Analysis List** with a score.

## Universal and external integrations

For customers connecting through their own S3 bucket, SFTP server, email, or the Standard API. These paths support import, export, or both.

### Standard API

The Standard API lets you build a custom integration from any CCaaS, CRM, or middleware that can call REST APIs, and pull scores back into your own systems.

**What you get:**

- **Import:** Your system pushes conversations to CQA (single, batch, or file endpoints).
- **Export:** Your system pulls scores, parameters, and related analysis fields back out.
- For external platforms (for example, Genesys or Salesforce), you typically build a middleware layer that reads the source system, maps fields to the CQA schema, and pushes and pulls through the API.

**Prerequisites:**

- An API key and Account ID from [Access API](https://docs.exotel.com/conversation-intelligence/5-manage-data-integration#54-access-api) (or from your CQA administrator). An account can have at most 2 active keys.
- Middleware that follows the request schema in the [API Reference Guide](https://docs.exotel.com/conversation-intelligence/6-api-reference-guide).
- Audio and chat URLs in your requests must be publicly accessible or pre-signed, so CQA can fetch them.

**Setup:**

1. Generate an API key in **Access API** ([5.4](https://docs.exotel.com/conversation-intelligence/5-manage-data-integration#54-access-api)).
2. Implement pushing conversations and pulling results as described in the [API Reference Guide](https://docs.exotel.com/conversation-intelligence/6-api-reference-guide).

**Verify:**

1. Push a test conversation with a unique `external_interaction_id` and confirm a success response.
2. Open **WORK › Analysis List** and confirm the conversation appears after processing.
3. Pull the analysis result back and confirm it matches what you see in CQA.

### Customer S3

Batch processing of recordings and metadata through Amazon S3 buckets, for import and export.

**What you get:**

- **Import:** CQA authenticates to your bucket, pulls CSV files (and downloads recordings from the URLs in the CSV), and analyzes eligible conversations on your job schedule.
- **Export:** CQA pushes analysis reports (CSV or Excel) to a bucket you own on a schedule.

**Prerequisites:**

- Audio URLs in your CSV must be publicly accessible or pre-signed.

**Setup — import:**

1. Prepare a sample CSV using the CSV schema in the [API Reference Guide](https://docs.exotel.com/conversation-intelligence/6-api-reference-guide) and upload it, with reachable recording URLs, to your bucket.
2. In **Connector**, create an **Import Connector** of type **Amazon S3**, fill in the fields, click **Create**, then **Test Connection**. Optionally click **Test Run**.
3. In **Job & Schedule**, [create an import job](https://docs.exotel.com/conversation-intelligence/5-manage-data-integration#create-an-import-job) with **Data Import** and select the S3 connector under **Source Connectors**.

**Setup — export:**

1. In **Connector**, create an **Export Connector** of type **Amazon S3**, fill in the fields, click **Create**, then **Test Connection**.
2. In **Job & Schedule**, [schedule a recurring report export](https://docs.exotel.com/conversation-intelligence/5-manage-data-integration#schedule-a-recurring-report-export) and select the S3 connector under **Destination Connectors**.

**Verify:**

1. Confirm **Test Connection** succeeded.
2. Import: confirm the conversation appears in **WORK › Analysis List**.
3. Export: confirm the report file lands in your destination bucket.

### Customer SFTP

Connect to a customer-hosted SFTP server to import conversation data and export analysis reports.

**What you get:**

- **Import:** CQA connects to your SFTP server, pulls CSV files (and downloads recordings from the URLs in the CSV), and analyzes eligible conversations on your job schedule.
- **Export:** CQA pushes analysis reports (CSV or Excel) to your SFTP server on a schedule.

**Prerequisites:**

- Audio URLs in your CSV must be publicly accessible or pre-signed. Alternatively, audio files can be accessed over SSH from your SFTP server.

**Credential types:**

- **Username/Password** — standard credential-based authentication.
- **SSH Public Key** — a more secure alternative. Contact CQA Support to set it up; they generate the key pair and guide you through the SFTP configuration.

**Setup — import:**

1. Prepare a sample CSV using the CSV schema in the [API Reference Guide](https://docs.exotel.com/conversation-intelligence/6-api-reference-guide) and upload it, with reachable recording URLs, to your SFTP server.
2. In **Connector**, create an **Import Connector** of type **SFTP**, fill in the fields, click **Create**, then **Test Connection**. Optionally click **Test Run**.
3. In **Job & Schedule**, [create an import job](https://docs.exotel.com/conversation-intelligence/5-manage-data-integration#create-an-import-job) and select the SFTP connector under **Source Connectors**.

**Setup — export:**

1. In **Connector**, create an **Export Connector** of type **SFTP**, fill in the fields, click **Create**, then **Test Connection**.
2. In **Job & Schedule**, [schedule a recurring report export](https://docs.exotel.com/conversation-intelligence/5-manage-data-integration#schedule-a-recurring-report-export) and select the SFTP connector under **Destination Connectors**.

**Verify:**

1. Confirm **Test Connection** succeeded.
2. Import: confirm the conversation appears in **WORK › Analysis List**.
3. Export: confirm the report file appears in the destination folder on your SFTP server.

### Email export

Scheduled or one-off analysis reports delivered to an inbox. **Export only** — email cannot be used to import calls.

**What you get:**

- CQA generates a report (CSV or Excel) and emails a download link; the file is not attached.
- Each file holds up to 2,000 rows. A larger report is split into several files, bundled into one ZIP and shared as a single link.
- Download links from a scheduled job's email stay valid for 72 hours. For a one-time **Email Me** export, the link stays valid for 7 days.
- For a one-time email export without a recurring job, use **Email Me** in [3.11 Export a report once](https://docs.exotel.com/conversation-intelligence/3-work-operational-workflows#311-export-a-report-once).

**Setup:**

1. In **Connector**, create an **Export Connector** of type **Email**, fill in the fields, click **Create**, then **Test Connection**.
2. In **Job & Schedule**, [schedule a recurring report export](https://docs.exotel.com/conversation-intelligence/5-manage-data-integration#schedule-a-recurring-report-export) and select the Email connector under **Destination Connectors**.

**Verify:** Confirm the email with the download link arrives and the link works.
