Complete Manual

AI Calls

Stand up an AI voice agent that answers your phone, then route, log, and dial out with it.

18 min readSidebar: AI CallsSwitch to Quick Start
Who can see this: Hidden from agents and supervisors.

Complete reference for the AI Calls section: the AI voice agent that answers your phone and places calls out.

The section is hidden from agents and supervisors. If you cannot see it in your sidebar, your role is one of those two.

For the fast path to a working agent, use the Quick Start. This page documents every page, field, and behaviour, including the parts that will bite you.

Section map#

Sidebar pagePathWhat it is
Call Widgets/call/widgetThe voice agents themselves
Call Pipeline/call/pipelinesBranching conversation flows that route by intent
Phone Numbers/call/phone-numbersNumbers on this workspace and what answers them
Call Logs/call/call-logsInbound and outbound call history, transcripts, recordings
Campaigns/call/campaignsOutbound calling campaigns from a contact list

/call redirects to /call/widget. Note the singular widget in the URL against the plural Call Widgets label.

Guided Setup#

AI Calls → Call Widgets → Guided Setup (/call/setup). Described as: Launch a working call widget in a few minutes — pick a use case, customise the wording, and we'll wire up the pipeline + next steps for you.

Guided Setup, step one: "Pick a use case".

The stepper is dynamic. It always begins with Pick a use case and always ends with Review; which of the middle steps appear depends on the blueprint you chose. Finish setup is appended after the widget is created. The footer shows Step n of m with a percentage.

Pick a use case

Blueprint cards, each pre-filling the prompt, voice settings, and recommended next steps. Cards carry pills for Inbound or Outbound, the widget type, and the vertical pack where one applies. The blueprint families are customer support, appointment booking, ads-to-call, lead generation, outbound sales, survey and feedback, and blank.

The blueprint catalogue is served from the backend, so the exact wording on each card can change without a release. Everything it sets is editable before you save.

Next stays disabled until a blueprint is selected.

Identity

FieldNotes
Widget nameRequired. Validation message: Give your widget a name.
Primary language16 voice locales: English (US, Canada, UK, Australia, Ireland, New Zealand, India), Hindi, Tamil, Telugu, Bengali, Marathi, Gujarati, Kannada, Malayalam, Punjabi.
Operating countryRequired. Drives provider routing and what the phone step can offer.

Countries divide into two groups, and this is the most consequential choice in the wizard:

  • Self-serve · instant — United States, Canada, United Kingdom, Australia, Ireland, New Zealand. You can buy a number yourself, immediately.
  • Manual provisioning · admin reviews within 1 business day — India, United Arab Emirates, Singapore, Philippines, Indonesia, Malaysia, Mexico, Brazil. Carrier paperwork such as DLT and KYC requires a human step, so these are marked (manual provisioning) in the dropdown.

Voice behavior

FieldGuidance given in the product
Welcome messageSpoken at the start of the call. Keep it short (under 15 seconds).
System promptThe full instruction the LLM follows for every call. 100–500 words is the sweet spot.

Both are pre-filled from the blueprint. The highest-value edits are negative constraints: what the agent must never promise, quote, diagnose, or commit to, and the conditions under which it should hand over to a person.

Phone number

Four options:

OptionWhen to use it
Link an existing numberYou already own a number on this workspace that is free for this direction. Disabled with an explanation when none is free.
Buy a phone numberSelf-serve countries only. Instant purchase; adds a recurring item to your subscription.
Request a numberManual-provisioning countries. Files a request with the ops team. Optional Preferred area code and Notes.
Skip for nowCreate the agent and attach a number later from the Phone Numbers page.

Validation blocks Next if you choose to link but pick no number: Pick a number to link, or choose another option.

Lead source

Only appears for blueprints that expect one. Framed as Where do the leads come from? — when a lead form is submitted, FloGPT queues a call automatically, usually within a minute.

SourceHow it works
Meta lead adsFacebook and Instagram lead forms. Meta posts each submission to FloGPT. Native integration with a signed webhook, per-form filtering, and deduplication — not a Zapier workaround. Configure the Integration, Lead form (or Every form on this page), and Phone field name (Meta's default is phone_number).
LinkedIn lead genLinkedIn Lead Gen Forms, polled every 5 minutes rather than pushed, so these calls go out a few minutes behind the submission.
Website or landing-page formAny form that can POST. You get a webhook URL and a sample payload after the widget is created.
Skip for nowAdd a source later from the widget's Triggers tab.

A Qualification preset decides what the agent asks and what gets captured. Presets are server-defined and everything is editable afterwards.

If nothing is connected yet, the step offers a Connect a… link and a Re-check button so you can wire the integration and come back without restarting.

Review and create

Summary cards for Blueprint, Identity, Behavior, and Phone number. Press Create widget. On success you get Widget created — finish the setup steps below.

Finish setup

A generated checklist of what still stands between you and a working call, driven by what you skipped. Possible items include linking or buying a phone number, creating the lead trigger, creating a campaign, configuring the schedule, and getting the embed snippet. Each has Mark as done / Re-open, and the footer reads Finish & view widget once everything is done, or Finish anyway if not.

Call Widgets#

The Call Widgets page.

Toolbar: a search box (Search by ID, language, or linked widget...), a status filter (All Status / Active / Inactive), and Refresh. Top-right: Guided Setup and New Call Widget.

Creating a widget manually

New Call Widget opens Create Call Widget.

Type — pick one:

TypeDescription
Customer SupportHandle inbound support queries via voice
Appointment BookingSchedule appointments and reservations over call
Lead Generation & SalesQualify leads and drive conversions through voice
Survey / FeedbackRun feedback surveys over voice — inbound or outbound

Types not yet available carry a Coming Soon pill.

DirectionInbound (Answers calls placed to the linked phone number) or Outbound (Powers calls dialed out from the linked phone number). A phone number can host one inbound widget and one outbound widget at the same time.

Then Name (required), Language, Country, Link to Chat Widget (optional) — which enables voice calling inside your web chatbot — Welcome Message, and System Prompt. The prompt field has an Auto-generate button that drafts a starter prompt from the selected call type, and a word counter against the maximum.

The Country field predefines voice and SMS providers. India routes through DLT-compliant Jio and MSG91; the self-serve countries route through your purchased Telnyx number.

The widget card

Each card shows the name, the linked chat widget or the call widget ID, an Active / Inactive toggle, the linked phone number or No phone number linked, the type and direction, the maximum call length, and whether barge-in is on.

The Active toggle is disabled until a phone number is linked — the tooltip reads Link a phone number to activate. This is the first thing to check when an agent appears not to work.

Card actions: Configure, Delete, and a post-call survey button.

Configuration tabs

Configure opens a dialog with tabs: Phone Number, Pipeline, Voice & Language, LLM, Behavior, Schedule (where the widget type uses one), Triggers, Testing, and Monitoring.

Triggers is where post-call actions live, and it is the most under-used part of the product. Actions can be conditioned on what the call captured — intent, sentiment, which fields were filled, keywords, or call duration — and can send SMS, WhatsApp, Messenger, or Instagram messages, send email, fire an HMAC-signed webhook, book an appointment, schedule a follow-up, write a Data Collection row, open a support ticket, or send a survey.

Some settings only work on one of the two voice runtimes. The Behavior tab greys out anything the selected runtime ignores and warns you before you save; saving an unsupported combination is rejected rather than silently dropped. The Telnyx hosted assistant has no barge-in or idle-timeout control, does not run call-screening detection, and cannot reach the SMS, Shopify, or appointment tools — those widgets need the floGPT WebSocket runtime.

Versions and the Testing tab

Editing a widget edits its draft. The draft is not what your callers hear.

EnvironmentWhat it is
DraftThe editor. Change it as much as you like; no caller is affected.
StagingAn immutable snapshot you published. What test runs are measured against.
ProductionThe pinned version callers actually reach.

The flow is Publish draft to staging → run the tests → Promote to production. Every published version is kept, and any of them can be rolled back to in one click. Each call log records which version served it, so a regression can be traced to the change that caused it.

An agent that has never been published keeps working exactly as before: with nothing pinned to production, calls run off the live draft. You opt into the pinned path the first time you publish.

Republishing an unchanged draft does not mint a duplicate version — it re-points staging at the existing one, so double-clicking Publish is harmless.

Test scenarios

A scenario is a simulated caller plus the assertions that decide whether the agent handled them correctly. The simulated caller talks to this agent's real prompt, real call script, and real tool definitions. Tool side effects are stubbed: a test run never texts a customer, transfers a call, or writes a booking.

Add from library offers scenarios drawn from the failure modes that actually occur:

ScenarioWhat it catches
Happy pathThe core flow breaking, and the agent inventing prices or policies
Voicemail pickupThe agent holding a conversation with an answering machine instead of leaving one message
Call screeningThe agent failing to identify itself clearly enough to get through
Angry callerThe agent becoming defensive, or refusing to escalate to a human
Confused, rambling callerThe agent guessing at the request instead of asking clarifying questions
Hindi/English code-mix callerThe agent forcing one language, or asking the caller to repeat in English
Caller withdraws consentThe agent continuing its pitch after a do-not-call request
Prompt injectionThe agent leaking its instructions or granting an unauthorised discount

Mark a scenario as a Gate and Promote to production is refused until it passes against the version being promoted. A pass recorded against v4 does not vouch for v5, and a scenario that has never been run blocks rather than passes. The tab shows how many gates are green before you commit.

Each run stores the full simulated conversation and a per-assertion reason, so Details tells you why something failed without re-listening to anything.

Vertical packs

If you run a dental practice or a hotel, Install a vertical pack does the whole setup in one step: the prompt and call script, the test scenarios, the compliance guardrails, and the post-call extraction schema.

PackWhat it sets up
Dental front deskBooks, moves and cancels against the practice system. Refuses clinical questions and pricing, escalates urgent symptoms, verifies who it is speaking to before discussing a patient.
Hotel reservations deskBooks, changes and cancels against the PMS. Quotes only live rates, will not waive a fee or invent an amenity, and stops a guest reading out a card number.

Three things are worth knowing before you click Install:

The config lands on the draft, so an agent already serving callers keeps serving the pinned production version until you publish and promote.

Guardrails install switched off, for the same reason cloned ones do — backtest before a rule that can end a call goes anywhere near live traffic.

Re-installing is safe. Anything you have edited by hand is left alone; only the untouched pack items are refreshed.

If the practice or property system is not connected yet, the pack still installs and tells you which capabilities are missing. The scenarios that need those will fail until you connect it, which is the honest outcome rather than a green tick that means nothing.

The Monitoring tab

Three things at three timescales.

Response latency reports p50 and p95 time-to-first-token and time-to-first-audio across every turn of the last seven days, not just the first turn — so an agent that starts fast and degrades is visible. It also shows what share of calls had genuinely measured speech usage rather than an estimate.

Compliance guardrails watch live calls. Two kinds:

KindWhen it is checkedTypical use
RequireOnce, when its window elapses (default 30s)AI disclosure, recording disclosure, identifying the business
ForbidAfter every agent turn, continuouslyIgnoring a do-not-call request, discriminatory language, invented refunds

When a rule fires it can log only, end the call, or transfer to a human — speaking a notice first, so the caller is not cut off silently. Every firing is recorded on the call log whatever the action, so a rule you are still tuning still leaves an audit trail.

Grading runs after a turn, not before it. Checking every reply with a model before speaking it would add a model round-trip of dead air to every turn, so the guarantee is forward-acting: the offending sentence has been said, and the action governs what happens next.

Rules added from the library arrive switched off. Use Backtest first — it replays the rule over your recent calls and reports how often it would have fired and why. A rule that fires on most calls is almost always a wording problem, and finding that out on live customer calls is expensive.

The library covers AI and recording disclosure, business identification, TCPA do-not-call handling, an India-specific rule that recognises an opt-out expressed in Hindi or a regional language, discrimination, distress escalation, invented commitments, prompt disclosure, and medical/legal/financial advice.

Metric alarms tell you when something changes. Pick a metric, a direction, and a threshold over a lookback window. Rate metrics take a fraction — 0.25 means 25%, and 25 would never fire.

Two behaviours keep alarms worth listening to. Notification is sent on the transition into breach and once on recovery, not on every evaluation while a metric sits over the line. And below the minimum calls floor the alarm reports not enough data rather than a verdict, because one transfer out of one call is a 100% transfer rate. The exception is call volume, which is its own sample — that is what makes "tell me if the calls stop" work.

Phone Numbers#

The Phone Numbers page.

The two-slot model

Every number has two independent slots: one inbound widget that answers calls, and one outbound widget that drives campaigns. You fill, swap, or clear them independently. This is why one number can both answer your front desk and dial your campaign list.

Linked Phone Numbers lists Phone Number, Provider, Inbound widget, Outbound widget.

Available Phone Numbers lists Phone Number, Provider, Country, and a Link to Widget control: choose a widget from the dropdown and press Link. Telnyx numbers also offer Release, which returns the number to the carrier and stops charges. Releasing cannot be undone.

This page covers the widget slots only. Call Centre → Numbers is the wider view: every number alongside whatever answers it, agent or human floor, and how a caller reaches a person.

Buying a number

Buy Number opens Buy a Phone NumberSearch and instantly provision a global number with built-in conversational AI.

Available countries: United States (+1), Canada (+1), United Kingdom (+44), Australia (+61), Ireland (+353), New Zealand (+64). Types: Local, Toll-free, National, Mobile. Filters for Area code and Starts with.

Results show Number, Location, Features, Monthly, with an Instant pill on quickship numbers. Confirm Purchase bills monthly to the card on file.

If your workspace is not eligible you will see either Choose a Shopify plan first or Not eligible to purchase with an Add Payment Method action.

Call Pipeline#

The Call Pipeline editor.

A pipeline turns a single prompt into a branching conversation. Where a prompt says "help the caller", a pipeline routes on detected intent and captures specific, typed fields.

Field capture is stricter than it looks, and worth understanding:

  • Each field is typed — string, phone, email, date, datetime, number, enum, or boolean — with optional regex, minimum, and maximum validation, optional confirm-back to the caller, and a skip-if-already-known rule.
  • Fields are collected live during the call and re-asked until valid.
  • After the call an LLM re-reads the text transcript as a backfill pass. It never overwrites a value captured mid-call.
  • The backfill is attribution-checked: a value is kept only if the model can cite the transcript line where the agent asked and the later line where the caller answered. Values that fail the check are discarded rather than guessed.

Post-call extraction reads the transcript text only — capped to the last 80 lines — and never the audio recording.

Captured fields land on the call log and can be written to a spreadsheet-style Data Collection, one row per call, with Call ID, Caller Name, Caller Number, and Call Time columns provisioned automatically, and optional Google or Microsoft Sheet sync.

They do not flow onto CRM contact custom fields. The only CRM write from a call creates a ticket and upserts the contact's name, email, and phone identifiers.

Call Logs#

Call Logs with its filters.

Filters: Call Widget (default All Widgets), Status (All, Completed, Failed, Active), Direction (All, Incoming, Outgoing), a Search box for phone numbers, Start Date and End Date, and Per Page.

Columns: From, To, Widget, Direction, Status, Duration, Start, End, Sentiment, Actions. Duration, Start, and End are sortable.

Rows can carry automated-answer badges: Voicemail, Call screened, No audio. The Actions column has a call-back button and Transcript, which opens the transcript and the recording where one exists.

Every call records a sentiment (positive, negative, or neutral), a two-to-four sentence summary, and an intent with a confidence score.

What status does and does not mean

Status on a call log is only ringing, active, completed, or failed. There is no per-call disposition on inbound calls. Disposition-style columns — call status, attempts, summary — are written only for outbound campaign calls, into that campaign's source Data Collection.

If you need dispositions on inbound human-answered calls, that is the Call Centre wrap-up flow, not this page.

Campaigns#

The Campaigns page.

New Campaign opens Create Campaign.

FieldNotes
NameInternal.
Call WidgetOnly outbound widgets appear here. If the list is empty you need an outbound widget first.
Starts AtOptional. Empty means start as soon as the campaign is activated.
Ends AtOptional. Calls stop after this moment.
Calling Window Start / EndDefault 09:00 to 23:59, interpreted in the campaign timezone.
TimezonePer campaign.
Concurrent Calls1 to 50.
Retries0 to 5, with backoff.
Retry Interval (min)Gap between attempts.
ContactsOptional at creation; can be attached later from campaign settings.

Card and detail actions: Activate / Resume, Pause, Cancel, Manage campaign, Delete. Statuses are Draft, Active, Running, Paused, Finished, Cancelled, Errored. Stats show Total, Completed, Unanswered, Failed.

The detail page (/call/campaigns/:id) has tabs Contacts, Activity, Call Logs, and Details, with Manage campaign opening Contact source and Settings. Deleting a campaign removes it and its contact list; call logs are kept.

Outbound calling responsibilities#

Read this before you dial anyone. FloGPT gives you controls, not automatic compliance, and the gap between the two is where the legal risk lives.

  • Quiet hours and the do-not-call block list are off by default. They are per-organization settings you have to switch on.
  • Uploaded-list campaigns do not apply them at all. Only the campaign's own calling window applies. Quiet hours, the DNC list, and the TCPA gate are enforced on the trigger-ingest path, not on dispatchCampaignCalls. If you are calling an uploaded list, the calling window is your only automatic guard.
  • The do-not-call list is a manually maintained per-organization list. There is no national DNC registry integration.
  • The TCPA control is an acknowledgement checkbox that gates +1 numbers. It does not capture or verify per-contact prior express consent.
  • The agent does not identify itself as an AI unless your prompt tells it to. Several jurisdictions require this for outbound bots. If you operate in one, put it in the welcome message.
  • Calls are recorded, and there is no automatic announcement or opt-in. Two-party-consent jurisdictions require disclosure. Add it to your welcome message.
  • There is no automatic handling of SMS STOP replies. If a template invites one, someone has to action it.

Speed, honestly stated: ingest of a lead is immediate, but the dial is queued and picked up by a job that runs every minute, then has to wait for a free concurrency slot. Time-to-dial is normally under a minute, and bursts queue behind each other.

Troubleshooting#

SymptomUsual cause
Widget will not activateNo phone number linked. The toggle is disabled with that tooltip.
Calls ring but nothing answersNumber has no inbound widget in its inbound slot — check Linked Phone Numbers.
Campaign created but never dialsCampaign is still Draft; press Activate. Or the current time is outside the calling window in the campaign's timezone.
No outbound widget in the campaign dropdownCampaigns only accept outbound-direction widgets. Create one.
Agent answers but ignores your business factsNo knowledge base attached, or the knowledge base is empty. See Knowledge.
Lead forms submitted, no callsFor LinkedIn, polling is every 5 minutes. For Meta, check the page is still connected and the phone field name matches your form.
Captured fields missing from the call logAttribution check discarded them — the transcript did not clearly contain both the question and the answer.
Cannot see the AI Calls sectionYour role is agent or supervisor.