The names of agents, lists, templates and addresses are examples: use your own. How to create an automation is explained in Creating an automation.
| Example | Trigger | Plan features |
|---|---|---|
| A. WhatsApp confirmation and summary after the call | Call ended | — |
| B. Welcome and call back for the contacts in a list | Contact in List | Outbound calls |
| C. Leads from an external form, into your CRM | Webhook | API and webhooks |
| D. Chats classified by AI | On every message | — |
| E. Reminder the day before the appointment | Call ended | — |
| F. Alert to the team when the customer asks for an operator | Live Chat request | — |
#A. WhatsApp confirmation and summary after the call
When the voice agent ends a call in which the customer booked an appointment, the customer gets the confirmation on WhatsApp. For every call that isn't transferred, the team gets an email with the summary. Calls transferred to a teammate don't start Call ended: for those you need a second automation on Call transferred, as explained in Start events.
What you need
- A voice agent that books appointments, here “Reception”: see In-call actions: appointments.
- The WhatsApp integration active and an approved template with a variable for the date, for example “appointment_confirmation”: “We confirm your appointment on {{1}}. To reschedule, reply to this message.”.
Trigger. Internal Event › Telephony › Call ended, agent “Reception”.
- Condition “Call outcome”
Branch 1 named “Appuntamento” (appointment) with two conditions joined by AND:
{{call.appointment.startsAt}}“Exists”;{{call.customerNumber}}“Exists”. “Otherwise” stays empty. - In the “Appuntamento” branch: WhatsApp Template “Confirmation”
Recipient
{{call.customerNumber}}; Template “appointment_confirmation”; Variable 1{{call.appointment.startsAt}}. - Below the Condition: Send Email “Summary to the team”
Press the + below the point where the branches join again, so the email goes out for every call that starts the automation. Recipients (To:)
office@esempio.it; subject “Call from {{call.customerNumber}}: {{call.resultText}}”; in the body{{call.summary}},{{call.duration}}and{{call.recordingUrl}}.
Why two conditions. The first checks that an appointment was booked, the second avoids sending when the customer's number is anonymous. The email to the team also goes out for calls that didn't get through, but not for transferred ones.
Test. Publish, call the agent from your mobile and book an appointment. After the call you get the WhatsApp message and the front desk gets the email. In the Dashboard the run is Completed.
#B. Welcome and call back for the contacts in a list
Every contact added to the “Website leads” list gets a welcome WhatsApp message during office hours. Two days later the voice agent calls them back. Those who answer end up in the “Called back” list; for those who don't, the sales rep gets an email.
What you need
- The “Website leads” list and the “Called back” list: see Lists.
- An approved “welcome” template with a variable for the name, and contacts with the first name filled in.
- An active outbound voice agent with a number, here “Sales”, and the “Outbound calls” feature in your plan.
- The workspace opening hours, in Workspace settings.
Trigger. Internal Event › Contacts › Contact in List, list “Website leads”.
- Wait “Initial wait”
From now; Offset, that is the time unit, Minutes; Amount 10; check Only during opening hours.
- WhatsApp Template “Welcome”
Recipient
{{user.phone}}; template “welcome”; Variable 1{{user.firstName}}. - Wait “Two days”
From now; Offset Days; Amount 2; check Only during opening hours.
- Make Call “Callback”
Agent “Sales”; Number to call
{{user.phone}}; 3 attempts; interval 2 Hours. - Condition “Reached”
Branch 1 “Answered”:
{{Callback.reached}}with the Is true operator. It's true if the call was successful. - In the “Answered” branch: Contact Management “Called back list”
Add contact to list, Destination list “Called back”. The contact is already the one from the event.
- In “Otherwise”: Send Email “Lead not reached”
To:
commerciale@esempio.it; subject “Lead not reached: {{user.fullName}}”; in the body{{user.phone}}and{{user.email}}.
Minutes used by call backs. Call backs are outbound calls: the duration counts one and a half times, then is rounded up to the next minute. A call of exactly 2 minutes uses 3 minutes; an attempt nobody answers uses none. See How usage is counted.
Test. For the test, set the second Wait to 2 minutes, save and publish. Take a test contact already in the contact book, with your number, and add it to the list: you get the WhatsApp message, then the call. Set it back to 2 days and publish again. In the run detail, the call card says whether it was successful.
#C. Leads from an external form, into your CRM
A form on your website, or a Zapier or Make scenario, sends the data of a new lead. The automation saves the contact in the contact book, puts it in a list, passes it to the CRM and replies to the form.
What you need
- The “API and webhooks” feature in your plan.
- The “Web leads” list.
- Your CRM's API address and key.
A few technical words appear here. JSON is the text format software uses to exchange data: name and value pairs between curly braces, as in the box below. The others are explained in the steps.
Trigger. Webhook (API). Press Generate address and run the test as explained in Starting an automation via webhook, with test data from the form:
JSON · the form's test data
{
"first_name": "Mario",
"email": "mario.rossi@esempio.it",
"phone": "+39 02 1234 5678",
"message": "I'd like a quote for a car service"
}
- Contact Management “Save lead”
Update contact: email
{{webhook.email}}, phone{{webhook.phone}}, first name{{webhook.first_name}}. If the contact doesn't exist it's created, and from here on the{{user.*}}variables are filled in. - Contact Management “Into list”
Add contact to list, list “Web leads”. The contact is the one from the previous node.
- API “CRM”
Method POST, the one used to send data to another piece of software, to your CRM's address. Put the CRM key in the Headers, the headers of the request. In the Body, that is the content of the request, pass
{{user.email}},{{user.firstName}}and{{webhook.message}}in the fields the CRM expects. To set it up without creating a real lead, use the Example Response. The details are in Calling an external API. - Webhook Response “Confirmation”
Response status “201 Created”, the code used to answer “created” to the software that sent the data; body
{"ok": true, "lead": "{{CRM.id}}"}, if the CRM answers with anidfield.
Good to know. The form receives the 201 only if the automation reaches the Webhook Response in time: see The response.
Test. After publishing, send the same request to the real address. You should receive 201 with the CRM ID; Mario's contact appears in the contact book, in the “Web leads” list.
#D. Chats classified by AI
After the chat agent's replies, the AI reads the conversation and rates the interest. Hot chats get the “Hot” label and the sales rep gets an email; the others end up in the right folder.
What you need
- A chat agent, here “Website assistant”, with the “Hot” label and the “Quotes”, “Support” and “Other” folders, created in Chat agentAgent profileConversations.
Trigger. Internal Event › Conversations › On every message, agent “Website assistant”. When it starts is explained in Start events.
- Prompt “Analisi”
Default model and Number of messages. Instructions: “Read the conversation. Set interest to alto if the customer asks about prices, timing or availability, to basso if they only want general information, and to medio in all other cases. Summarize the request in two lines.”. Tool response with two parameters: “interesse” (interest), type Enum, values
alto,medio,basso(high, medium, low), description “How interested the customer is in buying”; “riassunto” (summary), type String, description “The customer's request in two lines”. - Condition “Interest”
Branch 1 “Hot”:
{{Analisi.interesse}}“Equals”alto. - In the “Hot” branch: Conversation Management “Hot label”
Add label, Manual, label “Hot”.
- In the “Hot” branch: Send Email “Sales alert”
To:
commerciale@esempio.it; subject “Interested customer: {{user.fullName}}”; in the body{{Analisi.riassunto}}. - In “Otherwise”: Conversation Management “Folder”
Move to folder, Automatic. Folder prompt: “Quotes for price requests, Support for problems and breakdowns, Other for everything else.”.
Good to know. The Prompt receives the latest messages of the conversation by itself: you don't need to paste them into the instructions.
The same chat can start the automation several times. If the customer starts writing again after the run has closed, the agent's next reply creates a new one: the AI redoes the analysis, another run is used and, if the chat is still hot, the sales rep gets another email. See On every message starts from the agent's replies.
For a single alert per customer you can't check whether the “Hot” label is already there: the conversation's labels aren't among the variables. Use a contact field. Create a contact variable of type Text, for example “avvisato” (alerted). In Branch 1, add with AND the condition {{user.avvisato}} “Does not exist”. In the “Hot” branch, after the email, add a Contact Management node with Update contact that writes yes in the avvisato field.
The trick works for chats that already have a contact. Without a contact, the node has no one to update: the email goes out, but the run closes with an error.
Test. Write to the agent from the widget asking for a price. After at least 10 minutes the conversation has the “Hot” label. In the run detail, the Prompt card shows the Extracted values.
#E. Reminder the day before the appointment
When the voice agent books an appointment over the phone, the customer gets a reminder on WhatsApp the day before.
What you need
- A voice agent that books appointments, here “Bookings”.
- An approved “reminder” template with a variable for the date.
Trigger. Internal Event › Telephony › Call ended, agent “Bookings”.
- Condition “Appointment booked”
The same as in example A, with the two conditions explained in Why two conditions; name branch 1 “Yes”.
- In the “Yes” branch: Wait “The day before”
Date from variable; Variable
{{call.appointment.startsAtIso}}; Offset Days, Amount-1; don't check Only during opening hours. - In the “Yes” branch: WhatsApp Template “Reminder”
Recipient
{{call.customerNumber}}; template “reminder”; Variable 1{{call.appointment.startsAt}}.
Good to know. If the appointment is less than 24 hours away, the day before has already passed and the reminder goes out right away. The Only during opening hours box is left unchecked on purpose. With it checked, if the workspace is closed the day before, for example on a Sunday, the reminder would wait for the reopening: it could arrive after the appointment. To change the text, edit and publish without pausing, so the waiting reminders stay valid: see Pausing.
If the customer calls back before the reminder. Each call starts its own run. If the customer calls back, the first call's run keeps waiting and its reminder goes out anyway, even if the second call has no appointment. If the customer books a new appointment in the second call, a second reminder is created with the new date.
The automation doesn't know whether the first appointment was moved or cancelled: the customer may get a reminder for an appointment that no longer stands. So write a template that shows the appointment date and says what to do if it has changed, for example “If your appointment has changed, please ignore this message”.
Test. Call the agent and book an appointment for the day after tomorrow. In the Dashboard the run is Scheduled, with “Paused until” and the day before. The reminder arrives at that time.
#F. Alert to the team when the customer asks for an operator
When a customer asks to talk to a person in the live chat (the Operator Chat tab), the team immediately gets an email with their details and the conversation. Meanwhile the chat gets a label.
What you need
- A chat agent, here “Website assistant”, with the “Operator requested” label.
Trigger. Internal Event › Conversations › Live Chat request, agent “Website assistant”.
- Send Email “Operator alert”
To:
supporto@esempio.it; subject “Operator request from {{user.fullName}}”; in the body{{user.email}},{{user.phone}}and the conversation in{{history}}. - Conversation Management “Operator label”
Add label, Manual, label “Operator requested”.
Good to know. If the conversation doesn't have a contact yet, the {{user.*}} variables arrive empty: the email goes out anyway, with the conversation.
Test. From the widget, ask the agent to talk to an operator. The email arrives at supporto@esempio.it and in the conversations inbox the chat has the label.