Imports, Genesys, and Agent Mapping
The Imports tab is where conversations enter Agent QA. This section covers every way to bring calls in -- pulling them automatically from Genesys Cloud, uploading a batch of files yourself, or re-processing interactions you already imported -- and the agent-mapping configuration all three depend on.
Imports covers bulk ingestion from the builder interface. To push interactions one at a time from your own systems, use the Audio Ingestion API or the Transcript Ingestion API instead.
3.1 How Imports Work
The tab has two sub-tabs:
| Sub-tab | What It Does |
|---|---|
| Imports | Lists every import job -- name, source, call window, status, progress, and last update. Click New import to start one. |
| Agent Mapping | Maps the agent identifier your source system uses to a known Ema employee. See Agent Mapping. |
The list syncs on its own and shows how fresh it is -- "Synced a few seconds ago", or "Not synced yet" before the first sync. Click Refresh at any time to pull the latest status without waiting for the next sync.
Import Types
| Type | Description |
|---|---|
| Genesys CCaaS | Pull call recordings automatically from Genesys Cloud for a date range. See Running a Genesys Import. |
| Bulk upload -- audio | Upload a batch of recordings from your computer with a metadata CSV. See Bulk File Upload. |
| Bulk upload -- transcripts | Upload a batch of transcripts from your computer with a metadata CSV. |
| Re-run | Re-process interactions you already imported against your current rules. See Re-running Interactions. |
Whichever route you use, the back half of the pipeline is the same: Ema attributes each conversation to an employee, hands the file to transcription, and evaluates it. Results appear in the Audit tab, which remains the source of truth for QA outcomes. The Imports tab tracks a file only up to the point it is handed off for processing.
Single interactions pushed through the ingestion APIs also appear in the job list, labelled Single file upload. They are shown for visibility -- there is nothing to configure.
3.2 Connecting Genesys Cloud
Genesys Cloud is the first Contact-Center-as-a-Service (CCaaS) provider Agent QA connects to. Connect it once, then start imports whenever you need them.
What You Need From Genesys
Ema authenticates with the OAuth2 Client Credentials grant. In your Genesys org, create an OAuth client of type Client Credentials Grant and note its credentials.
| Value | Detail |
|---|---|
| Client ID | From the OAuth client you created in Genesys. |
| Client secret | From the same OAuth client. Treat it as a credential -- Ema stores it encrypted. |
| Region | The Genesys region your org runs in. See Supported Genesys Regions. |
There is no browser redirect, consent screen, or callback URL in this flow, and no refresh token to manage. Ema requests a fresh access token with the stored credentials whenever it needs one. If you rotate the secret in Genesys, update it in Ema or imports will start failing to authenticate.
Supported Genesys Regions
Your region determines which Genesys hosts Ema talks to. Pick the one matching your Genesys org.
| Region | Code | Genesys Domain |
|---|---|---|
| Americas (US East) | us-east-1 | mypurecloud.com |
| Americas (US East 2) | us-east-2 | use2.us-gov-pure.cloud |
| Americas (US West 2) | us-west-2 | usw2.pure.cloud |
| Americas (Canada Central) | ca-central-1 | cac1.pure.cloud |
| Americas (Sao Paulo) | sa-east-1 | sae1.pure.cloud |
| EMEA (Ireland) | eu-west-1 | mypurecloud.ie |
| EMEA (London) | eu-west-2 | euw2.pure.cloud |
| EMEA (Frankfurt) | eu-central-1 | mypurecloud.de |
| EMEA (Zurich) | eu-central-2 | euc2.pure.cloud |
| EMEA (UAE) | me-central-1 | mec1.pure.cloud |
| Asia Pacific (Mumbai) | ap-south-1 | aps1.pure.cloud |
| Asia Pacific (Tokyo) | ap-northeast-1 | mypurecloud.jp |
| Asia Pacific (Seoul) | ap-northeast-2 | apne2.pure.cloud |
| Asia Pacific (Osaka) | ap-northeast-3 | apne3.pure.cloud |
| Asia Pacific (Sydney) | ap-southeast-2 | mypurecloud.com.au |
Verifying the Connection
Open New import and choose Genesys. If the connection is healthy, the window picker appears. If it is not, the drawer says so instead:
| Message | What It Means |
|---|---|
| Connect this source to start an import | No active connection exists for your organisation. Connect Genesys from the Integrations page, then come back. |
| Couldn't check your connection | Ema could not reach the connector to confirm its state. Retry; if it persists, contact support. |
3.3 Running a Genesys Import
An import pulls every voice recording in a time window and queues it for evaluation.
Recordings pulled from Genesys must be in WAV format. Support for additional CCaaS providers, and for other file formats over this path, is on the roadmap. To bring in other formats today, use Bulk File Upload.
Window Rules
All times are in UTC, including the presets.
| Rule | Detail |
|---|---|
| Maximum window | 24 hours per import. To cover a longer period, submit several imports. |
| Minimum age | The end of the window must be at least 1 hour in the past. Recordings for very recent calls may not be available from Genesys yet. |
| Oldest window | Calls up to 1 year old. |
Starting an Import
- Go to Imports and click New import.
- Choose Genesys CCaaS.
- Pick a call window -- use a preset (Last 24 hours, Today (UTC), Yesterday (UTC)) or set a Custom range.
- Optionally give the import a name, such as "May 28 -- overnight shift". Names make the job list readable later and can be edited at any time.
- Under Advanced Settings, optionally set a language. Leave it on Auto-detect unless every call in the window is in the same language -- setting it explicitly transcribes all of them in that language rather than detecting per call.
- Click Submit.
The job is queued immediately and the drawer closes. You do not need to wait for it, and you can start other work or queue further imports right away.
Submitting is retry-safe. If the request times out or you click twice, Ema returns the job it already created rather than starting a duplicate.
What Happens Next
- Queued. The job waits for a free processing slot.
- Listing. Ema pages through Genesys and creates one tracked row per matching call. Rows that cannot be ingested end here -- a call with no agent participant, or a transferred call involving more than one agent.
- Agent mapping. Each call carries an agent identifier from Genesys. Ema matches it to an employee using your agent-mapping configuration.
- Your input, only if needed. If some agents are not recognised, the job pauses. See Resolving a Paused Import.
- Download and hand-off. Ema fetches each recording into Ema storage and hands it to transcription at a paced rate, so one large import cannot crowd out other work.
- Triggered. Every recording has been handed off. QA scores appear in the Audit tab as evaluation completes.
3.4 Bulk File Upload
Use bulk upload when your calls are not in a connected CCaaS provider, or when you simply have a folder of files to evaluate. You supply the recordings or transcripts plus a CSV describing them.
Limits and Formats
| Requirement | Detail |
|---|---|
| Files per import | Up to 500. A selection that would take you over the cap is rejected in full, not partially accepted. |
| Maximum file size | 25 MB per file |
| Audio formats | MP3, WAV, Opus, OGG, or WebM |
| Transcript formats | JSON, XML, or HTML |
| Metadata | One CSV, one row per file |
An import is either audio or transcripts, not both. Choose the type when you start the wizard -- a transcript in an audio import (or the reverse) is rejected at the check step.
The Upload Wizard
- Upload files. Select your recordings or transcripts and the metadata CSV. Files upload as you go; you can keep adding until you hit the cap.
- Map columns. Match each CSV header to an Ema field. Headers that already match a field name are mapped for you. Any column you leave unmapped is preserved as extra metadata on the interaction rather than discarded.
- Check. Ema validates every row against the files you uploaded and highlights problems inline. See Fixing Upload Errors.
- Launch. Submit the import. It joins the same queue as a Genesys import and behaves identically from that point on.
Metadata CSV Columns
| Column | Required | Detail |
|---|---|---|
| Filename | Yes | The uploaded file's name, for example call-12345.mp3. The extension is stripped when matching to the file. |
| Agent ID | Yes | The agent identifier from your source system. This is what agent mapping resolves. |
| Agent email | Yes | SSO email. Used for per-agent permissioning. |
| Call timestamp | Yes | ISO 8601 in UTC, for example 2026-05-27T14:32:00Z. A value with no timezone is read as UTC. |
| Channels | Audio only | 1 for mono, 2 for stereo. There is no default -- an empty cell is an error. |
| Channel map | Stereo only | Required when Channels is 2. JSON, for example {"0":"Agent","1":"Customer"}. |
| Language | No | Transcribe this interaction in a specific language instead of auto-detecting. |
| Case ID | No | Your ticket or case reference. |
| Agent tenure (days) | No | How long the agent had been in the role, used for tenure-based analysis. |
Example:
filename,agent_id,agent_email,call_timestamp,channels,channel_map,case_id
call-12345.mp3,A-4471,[email protected],2026-05-27T14:32:00Z,2,"{""0"":""Agent"",""1"":""Customer""}",CS-88213
call-12346.mp3,A-4472,[email protected],2026-05-27T15:04:11Z,1,,CS-88219
Fixing Upload Errors
The check step reports two kinds of problem, and nothing is committed while any remain.
| Problem | What It Means | Fix |
|---|---|---|
| File not found | The CSV names a file that was not uploaded, or whose upload did not finish. | Upload the missing file, or skip the row. |
| Wrong file type | The file does not match the import type -- a transcript in an audio import, or the reverse. | Remove the file, or start the right kind of import. |
| Missing required value | A required column is empty for that row. | Fill the cell in the check step. |
| Wrong format | A value cannot be read as expected -- a non-numeric channel count, an unparseable timestamp. | Correct the value in the check step. |
Skipping a row excludes it from the import entirely -- it is not validated, not uploaded, and not evaluated. Use it when a file is genuinely unavailable and you would rather proceed without it than hold up the whole batch.
3.5 Re-running Interactions
Re-run re-processes interactions you have already imported against your current rules. Use it after changing QA parameters, or to retry interactions that failed.
- Click New import, then Re-run interactions.
- Choose which interactions: All interactions in the range, Failed interactions only, or Interactions with incorporated feedback.
- Set the ingestion window (UTC). The default is the last 7 days.
- Submit.
Re-running is billable. Each interaction is processed end to end, exactly like a new evaluation.
Re-running deletes reviewer feedback. Any feedback on the selected interactions is removed -- both approved and pending. If that feedback has not yet been incorporated through continuous learning, it cannot be recovered.
When an Interaction Cannot Be Re-run
Re-run can also be started per row from the Audit tab. Where the action is unavailable, hovering it explains why:
| Reason | What To Do |
|---|---|
| Evaluation in progress | Wait for the current evaluation to finish, then retry. |
| Already queued for processing | A re-run is already pending for this interaction. |
| Past its retention period | The raw call file has been deleted under your data-retention settings, so there is nothing left to re-process. See Setting Up Agent QA for retention configuration. |
| Re-run limit reached | The last 3 re-runs of this call failed. Investigate the underlying failure rather than retrying again. |
3.6 Job Statuses and Progress
Job Statuses
| Status | Meaning |
|---|---|
| Draft | A bulk upload you started but have not submitted. Click Resume to continue where you left off. |
| Queued | Submitted, waiting for a free processing slot. |
| Listing interactions | Ema is enumerating matching calls from the source. Rows appear as they are found. |
| Pending agent mapping | Calls have been listed and are being matched to employees. |
| Awaiting user input | One or more agents could not be matched. The job is waiting on you. |
| Ready to run | Every file has a decided outcome; waiting for a free processing slot. |
| Processing | Recordings are being fetched and handed off for transcription and evaluation. |
| Triggered | Success. Every file has been handed off. QA results appear in the Audit tab. |
| No interactions found | The source had nothing matching your window. Nothing to do. |
| Skipped | Every file in the job was skipped. |
| Expired | The job sat awaiting your input for more than 24 hours. Start a new import for the same window. |
| Failed | The job could not complete. Contact support if it recurs for the same window. |
Triggered means the import succeeded, not that grading is finished. The Imports tab's job is to get conversations into processing. Transcription and evaluation continue afterwards, and their outcome is shown in the Audit tab.
Progress Counters
Each job shows how its files are distributed. The four counts always add up to the total:
| Counter | What It Counts |
|---|---|
| Succeeded | Files that reached a final outcome without failing -- handed off, skipped by you, or a recording that was never available. |
| Failed | Files that ended in an error. |
| In progress | Files still moving through the pipeline. |
| Awaiting | Files waiting on an agent mapping from you. |
Why a Job Sits in Queued
Ema limits how many imports run at once -- up to 10 per AI Employee and 40 per organisation -- and rotates work fairly across AI Employees and customers. A large import is interleaved with everything else rather than monopolising the system, so a queued job is normal during busy periods and needs no action. Jobs waiting purely on capacity never expire.
3.7 Agent Mapping
Every conversation must be attributed to a specific employee before it can be evaluated. Agent mapping is the link between the agent identifier your source system uses -- a Genesys user ID, or the Agent ID column in your CSV -- and a known Ema employee.
The Identity Schema
Open Schema settings (the gear icon on the Agent Mapping tab) to define what an agent record looks like for your organisation.
| Setting | Detail |
|---|---|
| Primary identifier label | What you call your own agent ID, for example "BMS ID". This renames the field everywhere it appears; it does not change any data. |
| Custom attributes | Extra fields to capture per agent, such as Team, Country, or Tenure. Each has a type of Text, Number, or Date. The type is fixed once created. |
Define the schema before your first import. Until it exists, agents cannot be mapped at all -- the resolve step will block and point you back here. Declaring your custom attributes early also means every later resolve form captures them inline, so records do not land half-filled.
Removing a custom attribute deletes its values from every existing mapping row. Ema tells you how many rows are affected before you save.
What a Mapping Row Contains
| Field | Required | Detail |
|---|---|---|
| Source ID | Yes | The agent identifier from your source system, for example a Genesys user ID. |
| UPN | Yes | The employee's SSO email. This is what drives per-agent permissions. |
| Primary identifier | Yes | Your own agent ID, under whatever label you set in the schema. |
| Agent name | No | Display name. |
| Effective from | Yes | Start of the validity window, in UTC. Blank means today. |
| Effective to | No | End of the validity window, in UTC. Blank means open-ended. |
| Custom attributes | Varies | Whatever you defined in the schema. |
Mappings are time-aware, which is what makes historical imports correct. If a source ID was reassigned to a different person in March, give the first mapping an Effective to of March and the second an Effective from of March. Calls from January are then attributed to the right employee even though you import them today.
Uploading Mappings in Bulk
Click Upload mapping for a four-step wizard.
- Choose CSV. Up to 5 MB and 10,000 rows.
- Map columns. Match your headers to Ema's fields. Ema suggests obvious matches; you can override any of them.
- Pick mode. See the table below.
- Review. Ema validates the file and shows exactly what would change before anything is written.
| Mode | Effect |
|---|---|
| Additive | Adds new rows and updates matching ones. Rows not in the CSV are left alone. |
| Replace all | Clears the existing mappings and inserts the CSV from scratch. Any row not in the file is removed. |
Replace all removes mappings that are not in your file. Always read the review step's counts before confirming -- it tells you how many rows would be added, updated, removed, and left unchanged, with samples of each.
Upload Validation
Errors block the upload. Warnings can be acknowledged and applied.
| Issue | Severity | Meaning |
|---|---|---|
| Required value missing | Error | Source ID, UPN, or your primary identifier is empty. |
| Invalid email | Error | The UPN is not email-shaped. |
| Wrong type | Error | A value does not match its attribute type -- text in a Number field, or a date that is not YYYY-MM-DD. |
| Dates inverted | Error | Effective to is earlier than Effective from. |
| Overlapping window | Error | Another row -- in this CSV or already saved -- covers the same source ID over an overlapping period. |
| Reassignment | Warning | This source ID is already mapped to a different person over an overlapping window. Acknowledge it to overwrite the existing mapping. |
| Duplicate column | Error | Two CSV headers were mapped to the same Ema field. |
Downloading and Retiring Mappings
| Action | Detail |
|---|---|
| Download mapping | Exports every mapping as CSV, ignoring whatever search filter is active. The usual way to bulk-edit is download, edit, re-upload. |
| Search | Matches across source ID, your primary identifier, and agent name. |
| Retire | Closes the mapping's window by setting Effective to to today. The row stays visible, struck through, and still applies to imports of calls from within its window. |
Retire rather than delete when someone leaves. Deleting removes the link that past evaluations were attributed through; retiring keeps history intact and simply stops the mapping applying to new calls.
3.8 Resolving a Paused Import
When an import finds agents it does not recognise, it pauses at Awaiting user input and shows how many agents need attention. Nothing is lost while it waits -- the calls that did match are already on their way.
Using Resolve Agents
Click Resolve agents on the job. You get one card per unrecognised agent, showing the source ID and the range of call times seen for it.
- Enter the UPN -- the employee's SSO email -- and your primary identifier.
- Set the validity window. The hints under each date field tell you the earliest and latest conversation for that agent; the window must cover the whole range or those calls stay unresolved after you save.
- Fill in any custom attributes your schema defines.
- Click Save & next to move to the following agent.
Saving a mapping here also unsticks every other paused import waiting on that same agent, not just the one in front of you.
If the source ID already maps to someone else over an overlapping window, Ema warns you and asks you to confirm. Confirming retires the existing mapping and replaces it with yours.
Skipping and Resuming
| Action | Effect |
|---|---|
| Skip for now | Sets the card aside for this session only. Nothing is submitted and nothing changes -- use Undo skip to bring it back. |
| Skip rows on the job | Permanently excludes those calls from the import. They are never evaluated. Once the last awaiting row is skipped or mapped, the job continues on its own. |
| Resume | Re-runs agent matching for the job so mappings you added elsewhere -- on the Agent Mapping tab, or by CSV upload -- get picked up. |
A job left awaiting input expires after 24 hours and cannot be resumed. If that happens, add the missing mappings and submit a fresh import for the same window.
3.9 File Outcomes and Troubleshooting
Open a job to see every file and its outcome. Some outcomes are dead ends by design rather than errors -- they do not mean the import failed.
| Outcome | What Happened | What To Do |
|---|---|---|
| Awaiting user input | The agent on this call is not mapped. | Use Resolve agents, or skip the row. |
| Skipped | You excluded this call from the import. | Nothing. Re-import the window if you skipped it by mistake. |
| Multiple agents detected | Two or more agents handled the conversation, usually a transfer. Agent QA does not currently split a call between agents. | Nothing today. Evaluate transferred calls through a separate upload if you need them scored. |
| Recording not found | Genesys has no recording for this conversation. | Check that recording was enabled for the queue at the time of the call. |
| Recording not ready | The recording exists but Genesys has not finished preparing it. | Re-import the window later. |
| Recording archived | The recording has been moved to archival storage in Genesys. | Restore it in Genesys, then re-import. |
| Multiple recordings available | The conversation has more than one recording and Ema cannot tell which to evaluate. | Upload the correct recording through bulk upload. |
| Recording too large | The audio exceeds the 25 MB limit. | Compress or split the recording and upload it manually. |
| Expired | The file waited more than 24 hours for an agent mapping. | Add the mapping, then re-import the window. |
| Failed | Ema could not fetch or hand off the file. | Re-import the window. Contact support if the same files fail again. |
Use the search box inside a job to find a specific call by conversation ID, source agent ID, agent email, or your own agent ID, and the status filter to isolate everything that failed.
3.10 Permissions
Access to the Imports tab is controlled by CAN_VIEW_IMPORTS, held by the Builder, Manager, and Admin roles. Metrics Viewer and SelfMetrics Viewer cannot see or start imports. For the full matrix, see Roles and Permissions.