Tools and reporting for an AI phone agent: booking, a safe send gateway and call summaries
Five Make scenarios sit around an AI phone agent. Two are tools it calls: a booking tool that offers, books, moves and cancels estimate visits and reads every write back, and a send gateway that only logs a message unless every guard passes. Three turn the agents' calls into summaries, alerts and a daily report.
Where this applies
Any business that lets an AI voice agent answer or make calls and needs it to book, text and report through systems its staff already trust.
- call summaries sent, no errors read
- 914+
- booking actions, each with its own answer
- 4
- gateway test runs, none failed
- 55
The problem
An AI voice agent is only as useful as what it can do during and after the call. It needs to book a real slot in a real calendar, send a follow-up text and leave a record staff will read. Each of those is a write into a live system, made by something that can be wrong.
The tempting build gives the agent the CRM's API and lets it act. The risks are a double booking when a slot goes while the caller is deciding, a confirmation for an appointment that was never created, and a text to someone who has opted out. The tools need guards the agent cannot talk its way past.
What we built
One booking tool, four actions
The booking scenario is a webhook with an action field: slots, book, reschedule or cancel. For slots it checks the calendar is active, reads the next fourteen days of free time, and a code step keeps only weekday working hours before answering. Every action ends in its own webhook response, so the agent always gets a definite answer.
Re-check, write once, read back
Before booking, it checks again that the slot is still free and that the request matches a slot it offered; an unknown customer gets a hold answer, not a booking. The appointment is created with no retry, so a slow response cannot make two, then read back to prove it exists before the deal moves to the estimate-scheduled stage and the agent is told it is booked. Rescheduling and cancelling read the appointment first and read it back after the change.
A gateway that defaults to doing nothing
Every outbound message goes through one send scenario. It opens with a kill switch and transport defaults in a set-variables step, reads the contact's tags and do-not-disturb status, and a code step chooses the transport: stub, unless every guard passes. The stub route logs what would have been sent to a data store and adds a note to the contact, so a dry run leaves a visible trace.
Guards before any send
A QA route sends real texts only to an allow-listed test contact. A contact who has stopped messages or is on do-not-disturb, or a message with no text, is skipped. Each route answers the caller with its own status (stubbed, sent to QA, sent or skipped), so the agent's log says exactly what happened.
Calls into summaries, alerts and a report
After each call the voice platform posts to a webhook; one scenario filters out calls that need no summary, iterates the recipients and emails a structured summary, with a retry handler if the mail server refuses. A second sends the platform's daily report and review digest by email. For the second agent, a router posts call records and alerts to a messaging channel and compiles a daily report.
The outcome
The call-summary scenario ran at least 914 times between 18 September and 21 October 2026, with no errors in the runs read. The history scan was capped, so the real count is higher.
The second agent's call-record scenario ran 46 times between 1 and 21 October, with one error. The daily report runs once a day.
The booking tool and the send gateway were built and tested on 16 and 17 October: 51 booking runs, with one error and one warning, and 55 gateway runs without an error. Both are now switched off.
Where it stops
The booking tool and the send gateway are switched off, so the agent cannot yet book or text through them. Even when on, the only route that sends a real message is the QA route to an allow-listed contact; a second transport is marked disabled because its gateway is unreachable. Booking hours are fixed in a code step. The alert routes ignore a failed post, so an alert that does not arrive raises nothing, and the call summaries go out by email without being written back to the CRM.
Built with
- Make.com
- GoHighLevel API
- Microsoft 365 Email
- Telegram
- Code module
- Make data store
- Webhooks
Patterns used
- Safe by default
- Re-check, then read back
- One response per route
- Kill switch in variables
Page copy drafted with AI assistance. Skofi is accountable for it. Editorial policy
Have something shaped like this?
If any part of the above resembles a problem you are living with, a short call is the fastest way to find out whether it is the same problem underneath.
What happens on the call
- 15 minutes, no deck
- We map the process on the call
- A written scope, or an honest no