The life of a call

Connect Flowtative's building blocks before, during and after a call, with a complete end-to-end flow example.

A call handled by an AI agent happens in three stages: the greeting when the call is picked up, the conversation itself, then everything that happens once the caller hangs up. Each stage relies on building blocks already described elsewhere in this documentation (flow blocks, tools, databases, webhooks, transcripts). This page connects them in the order they come into play, then puts them together in a complete example.

Use it to design an end-to-end journey; for the detail of each field, follow the links to the reference pages.

Overview

MomentWhat you want to doBuilding blockReference
Pick-upGreet the callerTask prompt of the Trigger block, Message blockBlock reference
Pick-upRecognize the caller by their number{{caller.phone_number}} variable and a database search toolDatastores
DuringQuery or update your systemsCallable functions, HTTP / API and MCP tools, MCP tool blockTools
DuringRead or write a recordDatastore block or tools generated from the baseDatastores
DuringSend a confirmationSMS and Email blocksBlock reference
DuringHave a human approve a decisionHuman validation blockHuman approvals
EndWrap up, transfer, pass on informationHang up block and its End parametersTransfer to an advisor
AfterFeed your CRMEnd-of-session webhooksWebhooks
AfterRead, replay, score the conversationTranscripts, recording, evaluationsTranscripts

When the call is picked up

The greeting

There is no "greeting message" field in the agent's configuration: the greeting is the flow's first speaking turn. It is set in the Trigger block:

  • the Role prompt sets the persona (who is speaking, in what tone);
  • the Task prompt says what the AI does when it picks up: greet, introduce itself, ask the reason for the call.

The AI phrases its greeting itself from these instructions. If a sentence must be said exactly, for example the recording notice, place a Message block right after the Trigger with Recite word for word on and Wait for a reply off: the AI says it and moves on without waiting.

The Trigger block selected, with its role and task prompts

Recognize the caller

Flowtative does not run an action before the call is picked up: the caller is identified during the first turn, by the Trigger.

  1. In Datastores, generate the Targeted search by field tool on the phone field of your customer base, for example rechercher_customers_par_phone.
  2. In the Trigger, add a function with exactly that name: the tool runs when the AI calls it.
  3. In the Task prompt, give the AI the number and the instruction to call the function: "The caller's number is {{caller.phone_number}}. Start by calling rechercher_customers_par_phone with this number, then greet the customer by name if they are known."
  4. In the function detail, add a state write set parameters.customer ← result to keep the record found and reuse it in the following blocks ({{state.parameters.customer}}).

Important

The number is only available if the call provides it. Before going live, place a real call in debug mode and check in the transcript (Start variables, Entered "Node" lines) that the caller's number is passed on, and under which name. See Variables and dynamic data.

Tip

Cover the case of an unknown or withheld number in the prompt: "If no customer is found, ask for their name and postcode."

During the call

During the conversation, the AI leads each step with the conversational blocks (LLM agent, Message) and acts on your systems in two ways.

Way of actingWhen the action happensExamples
Callable function named after a toolWhen the AI decides to call it, with the arguments it has collectedLook up an order, check eligibility, create a request
Action block: MCP tool, Datastore, SMS, EmailEvery time, as soon as the block is entered, without the AICreate a ticket, record the request, send a confirmation SMS

Choose a function when the action depends on what the caller says, and an action block when it must happen for sure at that point of the journey. An action block must always be linked to a next block (otherwise it shows the No next step badge).

For a decision the AI must not take alone (refund, commercial gesture), the Human validation block puts the conversation on hold and submits the request to an operator in the Approvals console. The flow resumes through Decision received, or through Timeout if nobody decided within the delay.

What the AI learns along the way (reason, contract number, search result) is stored in the flow's variables through state writes. See Collect information.

At the end of the call

The Hang up block ends the conversation. It can:

  • say a Farewell message as is, without going through the model;
  • transfer the call to an advisor with the Call transfer shortcut of its End parameters (see Transfer to an advisor);
  • pass on End parameters: key → value pairs, fixed or read from the conversation's variables, recorded on the session's transcript.

Plan one Hang up block per outcome of the journey (request handled, transfer, caller not identified): each carries its own message and its own parameters.

After the call

NeedWhere to find it
Receive the conversation in your CRM or ticketing toolAn end-of-session webhook attached to the agent sends the full, signed transcript of each call session. See Webhooks.
Read the conversation, the tool calls and the summaryTranscripts. The Summary shows when the platform provides one. See Transcripts.
Replay the callRecording section of the transcript, if the Call recording option is on for the agent.
Understand the path taken in the flowThe transcript's diagnostic log, in debug mode.
Score the quality of the conversationEvaluation grids and AI judge. See Evaluations.
Track volumes, resolution and handoffsAnalytics. See Analytics.

Note

Only callbot call sessions are sent to end-of-session webhooks.

Complete example: home repair service

A repair company takes calls from customers reporting a breakdown. The agent must recognize the customer, record the request, confirm by SMS and hand over to an advisor for emergencies. The following already exist:

  • a customers database (fields phone, name, address) with the rechercher_customers_par_phone tool;
  • a requests base (fields phone, reason and urgent, the latter as Text: "yes" or "no") with the ajouter_requests tool;
  • a CRM webhook created in Settings > Webhooks.

Greet and identify

Trigger block:

  • Role prompt: "You are the repair service assistant. You stay polite and concise."
  • Task prompt: "The caller's number is {{caller.phone_number}}. Call rechercher_customers_par_phone with this number, greet the customer by name if they are known, then ask what the breakdown is."
  • Function rechercher_customers_par_phone, state write set parameters.customer ← result.

Link its Start output to the next block.

Record the request

LLM agent block "Qualification":

  • Task prompt: "Have the customer describe the breakdown and ask whether there is an immediate risk (water leak, gas smell). Then call ajouter_requests with the number {{caller.phone_number}}, the reason and the urgency."
  • Function ajouter_requests, with the state writes set parameters.reason ← args.reason, set parameters.urgent ← args.urgent and set parameters.phone ← args.phone.
  • Conditional Output: branch state.parameters.urgent = equal to yes to "Transfer advisor", otherwise fallback to "SMS confirmation".

Confirm by SMS

SMS block "SMS confirmation": Number state.parameters.phone, a confirmation Message text, Reference repair-request. Link its Sent output to the "End" Hang up block.

Wrap up or transfer

  • Hang up block "End": Farewell message "Your request is recorded, a technician will call you back. Have a nice day.", End parameters reason → state.parameters.reason (as path) and endReason → request_recorded.
  • Hang up block "Transfer advisor": Farewell message "I'm putting you through to an advisor right away.", Call transfer to the on-call number in BRIDGE, endReason → emergency.

Use the call

  • In the agent, Linked flow section, choose this flow; Webhooks section, tick CRM; save.
  • After a test call, open Transcripts: you see the call to rechercher_customers_par_phone, the call to ajouter_requests and, in debug mode, the writes of reason and urgent.
  • Create an evaluation grid that checks the agent did ask whether there was an immediate risk.

Tip

Test the journey in the agent's tester before publishing it: add the test variable caller.phone_number with the number of a customer in your base to simulate a known caller. See Test an agent.

Best practices

  • Design the outcomes first. List the possible endings (handled, transferred, callback promised) and create a Hang up block for each before drawing the rest.
  • A certain action = an action block. If an SMS must go out for every recorded request, use an SMS block rather than relying on the AI to call a function.
  • Keep track of what matters in the End parameters (reason, outcome): this is what stays attached to the session once the call is over.
  • Test with debug mode, then read the diagnostic log in Transcripts to check the path taken.

Learn more

On this page