Skip to Content
QA AnalyticsImporting Transcripts

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

SourceHow
CSV uploadDrag a CSV with agent, channel, started_at, transcript, optional audio_url.
Call recording vendorConnect a vendor (Genesys, Twilio, etc.); transcripts sync nightly.
APIPOST conversations to POST /api/v1/conversations for real-time grading.
JSONLBulk-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:

ColumnRequired?Notes
external_idoptionalLets you cross-reference with your source system.
agentrequiredEmail or external user ID. Unknown agents are auto-created.
channelrequiredvoice, chat, email, sms, social.
started_atrequiredISO 8601.
transcriptrequiredPlain text. Speaker tags (Agent:, Customer:) are recommended.
audio_urloptionalSigned URL Omniflow can fetch for playback.
tagsoptionalComma-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.

VendorSync frequency
Genesys CloudEvery 5 minutes
Twilio VoiceReal-time (webhook)
Genesys EngageHourly
RingCentralHourly
Zoom PhoneHourly

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

PitfallFix
Transcripts have no speaker tagsAdd Agent: / Customer: prefixes β€” accuracy drops 15-20% without them.
One huge CSV with 100k+ rowsSplit into 10k-row chunks β€” the importer handles them in parallel.
Mixed languages in one rubricUse 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

If you want to…Go to
Connect a call vendorTelephony integrations
Set up a custom KPICustom KPIs
Use the APIAPI Reference