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 call.completed payload per call, pushed after the call endsWebhooks 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 has no usable answer. A blank cell can mean the topic never came up, not that the answer was "no".

Webhook stream

For anything continuous, push beats pull. The call.completed event carries all post-call fields in its payload. It is sent once analysis is saved, usually within about 5 minutes of the call ending, and after about an hour it is sent anyway with whatever analysis exists. See webhook-post-call.

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

Deployment data in the dashboard is cached for up to 5 minutes, so a fresh export can lag the most recent calls by that much.

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 kept for the retention period set under Settings → Data → Data retention: 30, 90, 180 or 365 days, 2 years, or never deleted. Once a recording or transcript ages past retention, it is gone from exports too, so pull anything you need to keep before then. See retention.

Recording is a paid add-on, set per deployment. The dashboard's Save recordings switch starts on; through the API, recording_enabled defaults to false. Calls on a deployment without it have no recording to export. Where recording is on, recordings are playable and downloadable one call at a time from the sidebar. The CSV does not include audio files.