Importing Transcripts
If you already have a backlog of recorded calls β or you run on a system Omniflow doesnβt host β you can import transcripts in bulk and have them scored against your rubric.
What you can import
| Source | How |
|---|---|
| CSV upload | Drag a CSV with agent, channel, started_at, transcript, optional audio_url. |
| Call recording vendor | Connect a vendor (Genesys, Twilio, etc.); transcripts sync nightly. |
| API | POST conversations to POST /api/v1/conversations for real-time grading. |
| JSONL | Bulk-load NDJSON from your data warehouse. |
CSV upload
Open Import
Go to QA β Import β Upload CSV.
Map columns
Omniflow tries to auto-detect column names. Confirm or remap:
| Column | Required? | Notes |
|---|---|---|
external_id | optional | Lets you cross-reference with your source system. |
agent | required | Email or external user ID. Unknown agents are auto-created. |
channel | required | voice, chat, email, sms, social. |
started_at | required | ISO 8601. |
transcript | required | Plain text. Speaker tags (Agent:, Customer:) are recommended. |
audio_url | optional | Signed URL Omniflow can fetch for playback. |
tags | optional | Comma-separated. |
Pick a rubric
The rubric to grade against. Use the workspace default or pick a custom rubric.
Run
Imports run in the background. Youβll see progress in QA β Import history and get an email when it finishes.
Vendor sync
For Genesys, Twilio, and other supported vendors, connect once and transcripts sync automatically.
| Vendor | Sync frequency |
|---|---|
| Genesys Cloud | Every 5 minutes |
| Twilio Voice | Real-time (webhook) |
| Genesys Engage | Hourly |
| RingCentral | Hourly |
| Zoom Phone | Hourly |
See Telephony integrations for setup.
API
For real-time grading or bespoke pipelines, POST to /api/v1/conversations:
curl -X POST https://api.omniflow.example/api/v1/conversations \
-H "Authorization: Bearer $OMNIFLOW_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"external_id": "call_8a2f",
"agent": "ari@acme.com",
"channel": "voice",
"started_at": "2026-05-01T14:23:00Z",
"transcript": "Agent: Thanks for calling Acme...",
"rubric_id": "rb_default"
}'Response includes the scored criteria within ~5 seconds for short transcripts. See API Reference.
Common pitfalls
| Pitfall | Fix |
|---|---|
| Transcripts have no speaker tags | Add Agent: / Customer: prefixes β accuracy drops 15-20% without them. |
| One huge CSV with 100k+ rows | Split into 10k-row chunks β the importer handles them in parallel. |
| Mixed languages in one rubric | Use language-specific rubrics; same criteria, language-tuned descriptions. |
Donβt import raw chat logs unfiltered. System messages, typing indicators, and bot pings inflate token counts and confuse the grader. Pre-process to keep only human turns.
Open in Omniflow
Related
| If you want to⦠| Go to |
|---|---|
| Connect a call vendor | Telephony integrations |
| Set up a custom KPI | Custom KPIs |
| Use the API | API Reference |