To monitor Synthflow voice agents in production, read Synthflow’s call logs and analytics, then send every completed call to a scoring layer. Cekura receives each call when a relay forwards Synthflow’s post-call webhook to its observe API. Cekura then scores task completion, actions, transfers, timing and compliance lines, and alerts Slack or Microsoft Teams when a metric fails.
TL;DR
- Synthflow logs each call with a speaker-labelled transcript, action timings, variables and SIP call quality, plus a recording unless you turn off Save Recordings, per Synthflow’s logs documentation.
- Cekura’s docs list Synthflow as a provider Cekura can import agents from, but they list no Synthflow auto-fetch for production calls. Calls reach Cekura when a small relay forwards Synthflow’s post-call webhook to Cekura’s observe API.
- Cekura scores calls with predefined, LLM judge and Python metrics. Per Cekura’s Python metric documentation, Python metrics consume no credits and LLM judge metrics cost 0.2 credits per evaluation. The predefined metrics reference prices predefined metrics from 0 credits (latency, interruptions, silence) to 0.6 credits per call (hallucination), with a few audio metrics billed per minute.
- Cekura’s pricing page lists $0.05 per monitored call on pay as you go, or about 10,000 monitored calls for $500 a month on Startup. Metric sampling scores a fixed share of calls: exactly 30 of every 100 at a 30% rate.
- Cekura’s Medicare workflow benchmark ran one identical Medicare agent on six platforms in July 2026, with 23 evaluators run three times. Synthflow passed 16 of 23 on every run (69.6% workflow pass³) but 2 of 23 (8.7%) under strict grading, which adds infrastructure failures, because long silences and tool-runtime failures often stopped callers from finishing. One study of one agent is not a verdict on every Synthflow agent.
What does Synthflow show natively when you monitor voice agents in production?
Synthflow’s Logs page is a per-call record of each production call’s status, end reason, transcript, actions, variables and telephony quality. Cekura adds scoring and alerts on top of that record.
A call drawer in Synthflow’s logs documentation has five tabs: Overview (status, end reason, transfer attempts), Transcript (recording beside speaker-labelled turns), Actions (duration and status per step), Variables and Telephony (MOS, round-trip time, jitter, packet loss). Action durations show which endpoint was slow behind a long silence, and you can listen in silently while a call is live. Synthflow’s analytics guide says the dashboard refreshes hourly and tracks call status, failed calls, executed actions and sentiment.
Synthflow’s post-call webhook adds an analysis object that scores goal, persona, steps and sentiment. Log retention depends on your Synthflow plan, so export call logs regularly if you need records beyond it.
Should you rely on Synthflow’s native monitoring or add Cekura?
Native Synthflow monitoring is a log, analytics and scoring suite for reviewing calls, while Cekura is an alerting and scoring layer that runs on the same calls once you forward them. As an editorial rule of thumb, stay with Synthflow alone when one agent takes a few hundred calls a week and someone reads the flagged ones. Add Cekura when you need an alert on each failed call, deterministic checks on action data, or failed calls turned into tests. The cost is a relay and a per-call fee. Synthflow’s Custom Evaluations already score calls against criteria you write, so the gap Cekura fills is alerting, deterministic checks and tests, not scoring alone. Cekura’s roundup of voice agent monitoring platforms compares the options, and its guide to real-time voice agent call monitoring explains what the platform reports during a call versus what Cekura scores afterward.
| Need | Synthflow alone | Cekura on forwarded calls |
|---|---|---|
| Review one call | Logs drawer: recording, transcript, actions, telephony | Transcript, recording and logs beside metric results |
| Watch a call live | Silent listen-in | Not possible: Cekura scores completed calls |
| Score outcomes | analysis object on each call, plus Custom Evaluations you attach as After the Call actions | Predefined, LLM judge and Python metrics |
| Get paged | Dashboard refreshes hourly | Slack or Teams alert when a failing evaluation lands |
| Keep history | Plan-dependent retention; analytics export up to 120 days per request | 30 days (pay as you go) or 90 days (Startup); dashboards plot up to 30 days |
| Turn failures into tests | Test Center suites generated for the agent | Create Evaluator from Call |
| Catch calls that never connect | Telephony errors recorded on the call; HTTP 429 or a queue over the concurrency limit | Scores only the calls your relay posts |
How do you send Synthflow production calls to Cekura for monitoring?
Sending Synthflow production calls to Cekura is a relay setup that forwards Synthflow’s post-call webhook to Cekura’s observe API. Cekura’s custom observability guide documents no-code auto-fetch for Vapi, Retell, ElevenLabs and Bland, so Synthflow calls use the Custom API route.
- Import the agent. Create a Cekura agent with Synthflow as the provider and enter the Synthflow agent ID and API key, so Cekura imports what Synthflow exposes, per Cekura’s agent setup guide.
- Set the webhook. Point
external_webhook_urlat your relay, either on the Synthflow agent through the agent API or in a Make a call request. - Verify the sender. Synthflow signs each webhook’s
call_idwith HMAC-SHA256 in theHTTP_SYNTHFLOW_SIGNATUREheader once you generate a secret, per Synthflow’s Security page. A subaccount with no key sends unsigned webhooks. - Post to Cekura. Send a POST to
https://api.cekura.ai/observability/v1/observe/with anX-CEKURA-API-KEYheader, then check for metric results 30 to 60 seconds later.
Watch Synthflow’s webhook logs for HTTP 413 errors, which long calls can trigger at your endpoint.
How do you map a Synthflow post-call webhook to Cekura’s observe API?
The Synthflow-to-Cekura field mapping is a short translation that turns Synthflow’s post-call payload into an observe API request, and only the transcript needs restructuring. From Synthflow’s post-call webhook:
call.call_idbecomescall_id, and your Cekura agent ID goes inagent.call.transcriptbecomestranscript_json. Synthflow sends one string ofbot:andhuman:lines, so split it into turns with the rolesMain AgentandTesting Agent.call.recording_urlbecomesvoice_recording_url. It is null when recording is off, and audio metrics then cannot run.call.end_call_reasonbecomescall_ended_reason, andlead.phone_numberbecomescustomer_number.- Each attempt in
action_execution_timelinebecomes one entry inlogs, withlevel: "error"on failures. analysis,collected_variablesandcall.statusgo inmetadata.
Synthflow’s transcript string has no per-turn times. With reconcile_with_cekura_transcript set to true, Cekura transcribes a dual-channel recording and publishes a speaker-exact transcript before metrics run, billed per minute of audio; mono recordings keep Synthflow’s transcript, per Cekura’s API reference. Cekura’s August 10, 2026 changelog added metadata edits after upload with an optional metric recompute, and re-evaluating a paid metric on existing calls costs the standard 0.2 credits, so settle the metadata shape before launch.
What should you monitor on a Synthflow voice agent in production?
A Synthflow production monitoring checklist is a list of nine signals that pairs each documented Synthflow failure pattern with the Cekura metric that scores it: task completion, action correctness, transfers, response time, interruptions, silence, sentiment, call end reasons and compliance lines.
| What to watch | Why it breaks on a Synthflow agent | How Cekura scores it |
|---|---|---|
| Task completion | Synthflow’s own webhook example returns goal: partial: the feedback says the caller gave no exact time and the agent booked the earliest available slot | LLM judge metric written against your definition of success |
| Action correctness | executed_actions keeps only the last run of each action, so a retry hides the failed attempt | Python metric over the action timeline in logs, 0 credits |
| Transfers | A transfer can end as transfer-failed-ivr, busy or a target hang-up, and several failed cold-transfer outcomes end the call | Python metric on the transfer outcome; LLM judge for transfers the agent should have offered |
| Response time | Synthflow’s docs say long prompts raise latency because every turn rereads the prompt and conversation | Predefined Latency metric from the recording, reported from P25 to P99, 0 credits |
| Interruptions and barge-in | The webhook transcript string has no per-turn times, so overlap is invisible in text | AI Interrupting User and Stop Time After User Interruption, both needing a stereo recording |
| Silence | A slow custom-action endpoint leaves dead air (Synthflow’s logs guide); Cekura’s Medicare workflow benchmark ties Synthflow’s strict-grading drop to long silences and tool-runtime failures | Detect Silence (10 second default) and Infrastructure Issues, both from audio, 0 credits |
| Sentiment | Synthflow’s analytics guide says sentiment exposes a misfiring action or bad handoff before call volume does | Predefined Sentiment and CSAT, 0.2 credits per call each |
| Call end reasons | Webhook values (agent_goodbye, max_duration) differ from the Get a call API (agent_ended_call, timeout) | Dashboard widget on call_ended_reason; Python check for human_pick_up_cut_off |
| Compliance lines | Synthflow’s steps field rates step order for the whole call as a single value | LLM judge or Python string check on the transcript, wired to a Failure alert |
Metric names and costs come from Cekura’s predefined metrics reference, and Cekura’s developer guide to voice AI evaluation metrics defines the latency and workflow measures behind it. Cekura times latency and interruptions by applying voice activity detection to a stereo recording, and Synthflow’s docs do not say whether recordings are dual-channel, so check one call first. Cekura’s Medicare study scores pass³, the three-run case of the pass^k reliability metric from the τ-bench paper. Cekura’s open cekura-bench repository runs the same Medicare suite against your own Cekura-connected agent.
Which Cekura metrics should you set to monitor a Synthflow agent?
Cekura metric setup for a Synthflow agent is a three-layer plan that scores each call with free timing metrics, one LLM judge metric per business outcome, and Python checks where one answer is right.
- Turn on the zero-credit predefined metrics. Latency, interruption counts, silence detection and infrastructure issues cost 0 credits. They read the recording, so keep Save Recordings on in Synthflow.
- Write LLM judge metrics for outcomes. Describe success in plain English, such as “the agent confirmed the date and time before booking.” Cekura’s guide to custom KPIs for voice agent monitoring shows how to tie metrics to outcomes.
- Use Python for deterministic checks. Transfer outcomes, action order and exact disclosure wording fit here. Python metrics read
transcript_json,metadataandlogs.
A transfer check, assuming your webhook relay (the small service that forwards Synthflow’s post-call payload to Cekura) writes each failed attempt to logs as a line such as action_transfer_call failed: ivr_detected:
logs = data.get("logs", [])
failed = [e for e in logs
if e.get("level") == "error" and "transfer" in e.get("message", "").lower()]
_result = not failed
_explanation = (f"{len(failed)} failed transfer attempt(s)" if failed
else "No failed transfers" if logs
else "No logs on this call, so transfers were not checked")
A call with no logs passes, so confirm Synthflow support has enabled the action timeline in your webhook, or fetch it from Get a call.
How does metric sampling cut the cost of monitoring Synthflow agents?
Metric sampling is a Cekura project setting that scores a fixed share of production calls, so a sampled metric’s cost falls in line with its rate. Cekura’s metric sampling is deterministic: at 20%, a metric evaluates one call in five and skips the other four, so it also skips about four in five failures, and skipped calls show “Sampling skipped.” Keep critical pass/fail metrics at 100% and sample trend metrics such as sentiment.
Most paid metric runs cost 0.2 credits (the predefined Hallucination metric costs 0.6), so five of them use one credit per call. Python metrics and zero-credit predefined metrics add nothing. Cekura’s pay-as-you-go plan lists $0.05 per monitored call with 30-day log retention, so 20,000 calls a month at one credit each lists at $1,000. The Startup plan is $500 a month for about 10,000 monitored calls, with 90-day retention and a signed BAA.
How do alerts work when you monitor Synthflow voice agents?
Cekura alerting is a per-metric notification system that posts to Slack or Microsoft Teams with a link to the call that fired. Cekura’s alerts documentation defines five types:
- Failure fires on every failing evaluation, such as a missed disclosure or failed transfer.
- Trend compares new calls with an EWMA baseline (a 50-call window on the Balanced preset), so it may stay quiet for a while on a new, low-traffic agent. Cekura’s guide to drift detection for voice AI agents covers tuning.
- Threshold works on numeric metrics: “latency above 2,000 ms on 3 of the last 50 calls” ignores one slow call but catches a sustained slowdown.
- New failure mode and Failure mode spike watch the failure categories Cekura groups failing calls into.
Slack picks a channel per alert, and every connected Teams channel receives every alert. Turn on the no-calls alert under Settings, Notifications, because a broken webhook relay between Synthflow and Cekura looks like a quiet afternoon. For an agent with few real calls, a Cekura cron job places scheduled test calls and alerts you when they fail.
How do you find unknown failures and turn them into tests when monitoring Synthflow agents?
Deep Research is a Cekura audit that finds failure modes no metric covers, and Create Evaluator from Call turns a failing call into a regression test.
Deep Research samples up to 500 calls from a window you choose, reads each transcript and end reason against the agent’s description, and ranks failure modes critical, high or medium with a fix and example calls. An audit costs 20 credits by default and repeats weekly; Cekura enables it per project on request.
- Click Create metric on a failure mode worth tracking to score it on every future call.
- Open an example call and use Create Evaluator from Call, which per Cekura’s FAQ rebuilds the call’s flow, intent and expected outcome as a test.
- Fix the Synthflow prompt or action, then run the evaluator before you publish. Cekura can dial the agent’s phone number.
The evaluator replays the call with synthetic speech, so a line-noise transcription error will not reproduce. Cekura’s changelog added replay with the original audio for those cases.
How do you handle PII when monitoring Synthflow voice agents in production?
PII handling for a Synthflow agent is a two-layer setup: Synthflow’s redaction covers its own records, and Cekura’s redact_fields covers the transcript and audio Cekura stores.
Synthflow’s PII redaction strips card numbers, Social Security numbers, names, emails, phone numbers and addresses from transcripts, webhook payloads and internal logs. Its docs list the limits: real-time audio is not affected, only new calls are redacted, information extractors cannot capture a redacted value, and accuracy may fall short of 100%. The docs do not describe redacting recordings, so assume the audio at recording_url still holds what the caller said.
Cekura’s PII redaction replaces detected entities in the stored transcript and audio with tokens such as <PERSON> and <CREDIT_CARD>. Set redact_fields once on the agent, or per call. Redaction costs 0.1 credits per minute, however many fields you pick.
Cekura’s redaction does not touch metadata, dynamic_variables or customer_number. Scrub collected emails and extracted values in your webhook relay, or use Cekura’s client-side redaction before anything leaves your network.
Frequently asked questions
Can Synthflow’s post-call webhook post straight to Cekura?
Not without a reshaping step. Synthflow posts its own payload, while Cekura’s observe API expects fields such as agent, call_id and transcript_json plus an X-CEKURA-API-KEY header. A small relay maps the fields, verifies Synthflow’s signature and scrubs PII from metadata. The cost is one more service to run, which Cekura’s no-calls alert can watch.
How quickly does a Synthflow call appear in Cekura after it ends?
A Synthflow call appears in Cekura as soon as your relay posts it. Cekura’s API reference says to check for metric results 30 to 60 seconds later, and Cekura’s October 7, 2026 changelog cut worst-case LLM metric evaluation from 15 to 25 minutes to under 4.5. A Failure alert fires as soon as a failing evaluation lands, while Trend alerts wait until they have a baseline.
Do you still need Synthflow’s analytics once Cekura monitors the agent?
Yes. Keep Synthflow for what happens on the line: silent listen-in on live calls, the SIP ladder with MOS and jitter, and per-action request and response detail. Cekura scores completed calls and does not intervene while a call is live.
How much does it cost to monitor a Synthflow agent with Cekura?
Cekura’s pricing page lists $0.05 per monitored call on pay as you go, or $500 a month for about 10,000 monitored calls on Startup. Per Cekura’s FAQ, a metric run costs 0.2 credits, so a call scored on five such metrics uses one credit, and the predefined Hallucination metric costs 0.6. Python metrics and zero-credit predefined metrics add nothing. Redaction adds 0.1 credits per minute, and a Deep Research run costs 20 credits by default.
Does Cekura integrate natively with Synthflow for production monitoring?
Partly. Cekura imports what a Synthflow agent exposes of its prompt, tools, phone number and knowledge base. Cekura’s docs list no Synthflow auto-fetch for production calls, so calls arrive through the observe API from a webhook relay. From there, Cekura applies the same metrics, alerts and Deep Research it uses for any platform. Book a demo to see the setup on your own Synthflow calls.







