Skip to main content

Observability

Exports

Getting call data out for your own analysis.

What you can export

Finn produces three kinds of call data: the recording, the transcript, and the structured post-call analysis fields you defined. Every export route below carries some subset of those.

RouteContainsWhere you trigger it
Per-deployment CSVOne row per call, every field as a columnDeployment Analytics page, in the dashboard
PDF reportTop-line metrics, charts, notable transcriptsDeployment Analytics page, in the dashboard
Webhook streamOne payload per completed call, pushed in real timeWebhooks configuration
Calls APICall records fetched on demandAPI reference

CSV and PDF are dashboard actions. There is no endpoint that generates them, so you cannot put a nightly CSV on a cron. If you want data on a schedule, use the webhook stream or the Calls API instead.

CSV export

Open a deployment in Deployment Analytics and export from there. The file covers that deployment only. There is no all-deployments CSV, so a campaign split across several deployments needs several exports concatenated on your side.

Columns fall into four groups:

  • Caller fields, including any custom fields carried in from the audience.
  • Call metadata: outcome, duration, cost, timestamps.
  • Every post-call analysis field you defined, one column each.
  • AI analysis: sentiment, summary, outcome category.

Two things will surprise you when you load the file.

Fields added late are blank for old calls. A post-call analysis field is only extracted for calls that completed after you added it. Earlier rows stay empty for that column. Editing a field's question does not re-extract past calls either, so a single column can hold answers to two different questions depending on when the call ran. Contact support if you need a backfill pass.

Not every value is a real answer. When the transcript did not contain enough information, the field is marked as extraction failed rather than guessed. Treat that as distinct from a legitimately empty answer. Every extracted value also carries a confidence score, and you can filter the export to high-confidence rows only. Values a human corrected in the per-call sidebar are flagged as human-corrected in the export.

Webhook stream

For anything continuous, push beats pull. The call.analyzed event fires after analysis completes and carries all post-call fields in its payload, which is normally within a minute or two of hangup.

curl -X POST https://your-endpoint.example.com/finn \
  -H "Content-Type: application/json" \
  -d '{"ping": true}'

Point Finn at an endpoint that returns 2xx quickly and does its real work asynchronously. Slow endpoints get retried, and retries mean duplicate deliveries, so make your handler idempotent on the call ID. See webhook retries for the retry schedule and webhook security for signature verification. Verify signatures before you write anything to your warehouse.

Pulling through the API

The Calls API returns call records, including analysis fields, for backfills and reconciliation. Read pagination before writing the loop, and rate limits before backfilling a large date range. Authenticate as described in authentication.

Use the API for repair work, not for your primary pipeline. If you poll it on a tight interval to approximate a stream, you will hit rate limits and still be slower than the webhook.

Timing and freshness

Analytics aggregates are cached. Per-call records never are.

DataCache
Deployment list5 minutes
Per-deployment summary1 minute
Per-call recordsNever cached

Exporting mid-deployment gives you completed-so-far calls, and success rate computed against that partial set moves as more calls finish. Export after the deployment completes if the numbers need to be stable.

What exports do not include

Recordings and transcripts are retained for 90 days by default, configurable up to seven years. Once a call ages past retention, it is gone from exports too, so pull anything you need to keep before then. See retention.

If PII redaction is enabled under Settings, redaction applies to exported data as well as transcripts. Redacted values will not reappear in your warehouse. Turn it on before you start exporting rather than after, since earlier exports already left the platform unredacted. See compliance.

Whether audio files themselves can be bulk-downloaded alongside a CSV is not yet settled in this documentation. Recordings are playable per call in the sidebar.