Skip to main content

Getting results back

A flow's answers reach you three ways:

WhenHowBest for
Step URLDuring the call, seconds after the choiceTelebroad calls your URLUpdating your system right away
Flow Data + alertsAfter the flow finishesSaved on the call; sent by a Call History alert (email, SMS, webhook, SFTP)Reporting, after-the-fact processing
Call LogsAfter the flow finishesAdmin center onlyDebugging a flow

If your system must know the outcome of each call, use a step URL — it is the only one keyed by your own ids.

Flow Data​

Flow Data is a named value saved on the call record. A step saves one when:

  • it collects input with Enable CSAT on — saved under the CSAT name, the value being the caller's answer (an Amount as 20.50); or
  • its URL reply has a field picked by Save a value to Call History — saved under the Save as name.

The rules:

  • It is written when the flow finishes — when the call leaves the flow or the caller hangs up — and only for answers actually given. A question nobody answered leaves nothing.
  • Names and values are cut to 64 characters.
  • A Sensitive answer is never saved.
  • Names are unique within a flow.
  • Your API request's params are not saved on the call. To see them next to the call, save them back through a step URL reply, or keep them on your side.

In Call History​

Each Flow Data name gets its own column in Call History (one per flow and name), can be filtered with the Flow Data filter, and is included in Call History exports. A Rating with CSAT Value Labels shows the label ("Very satisfied") instead of the digit.

Columns come from the flows as they are defined now: a name your step URL's input.saveAs returns, but that no step in the editor defines, is saved but has no column. Define names in the editor.

In Call History alerts​

A Call History alert (Alerts in the admin center) can send the call's Flow Data when a call matching its filters ends:

  • Email and SMS — the {{.FlowData}} token in a custom body renders as one line, label preferred over the raw value: Appointment response: 1, Satisfaction: Very satisfied.
  • Webhook and SFTP — the standard payload carries a flowData array when the call has Flow Data:
{
"event": "…",
"callId": "…",
"direction": "outgoing",
"callerNumber": "12125550100",
"calledNumber": "12125550188",
"status": 1,
"statusText": "…",
"startTime": "…",
"endTime": "…",
"duration": 74,
"flowData": [
{ "name": "Appointment response", "value": "1" },
{ "name": "Satisfaction", "value": "5", "label": "Very satisfied" }
]
}

Each flowData entry has name and value; label is present only when the step defines one for that value. The payload's other fields (messageUuid, callerName, calledName, abandoned, triggerId, description, alertId, alertName, triggerFilters, timestamp) are the same as for any call alert. status is a count of the parties that answered — 1 or more answered, 0 voicemail, -1 no answer; statusText says the same in words. A webhook alert with a custom body can use {{.FlowData}} instead.

Match an alert to your own records by the dialled number and time, or — more reliably — use a step URL, which can carry your ids.

Not in the public API​

flowData is only in Call History alerts. The public REST API's call endpoints (GET /calls/{callid}) and its webhooks (such as AccountEndedCalls) do not carry it, and no public API endpoint lists a flow's answers.

Flow call logs​

Every run of a flow is logged. Open it from the flow editor (Call Logs) or the flows list (View Logs); search by Call ID, caller or number.

Each entry shows the time, caller, dialled number, status — success, failed, or hangup (with the step the caller hung up on) — duration, where the call was routed, any error, and, on outbound calls, how long the far end took to answer. Step Execution then lists each step: the text actually spoken (with your values filled in) or the MP3 played, the keys pressed (a Sensitive answer as "•••• (N digits)"), your URL's reply (Webhook Response) and any error, the rule that matched and where the call went next. From an entry you can open the call in Call History or jump to the step.

Use it to answer "why did the caller hear that?" — it is the first place to look when a step URL or a placeholder is not behaving.

:::note Call Logs are in the admin center only There is no API for flow call logs. :::

What the public API does not give you today​

  • No call id for a call placed with POST /flows/{flowId}/calls, and no status lookup — see Known limitations.
  • No Flow Data or flow logs through the REST API or its webhooks.
  • No list of the values a call was placed with.

Plan around a step URL for anything your code needs per call.