AI voice agents for delivery delay and exception alerts call the customer when tracking shows the delivery will miss its promise. Started from the exception event, the agent verifies them, gives the new arrival time and lets them keep it, pick another window or name a safe place, then writes the answer back. The call needs consent captured at order.
Key Takeaways
- Call when the exception needs an answer. Text when it only needs reading.
- Start the call from the tracking event, before the attempt fails.
- The carrier's one-notice exemption does not cover an interactive call.
This post is part of our guide to AI voice agents for logistics and delivery. The guide's section on customer calls during the delivery describes this as the call the tracking system starts through the API Trigger, offering the new arrival time and a reschedule or safe-place option. Here is the full design, including the legal line most delay-alert playbooks skip. In Dograh, an open-source, self-hostable voice agent platform, the tracking system starts the call and the customer's choice is written back to the order by webhook.
The call before the attempt fails
Late deliveries are now the normal case, and silence is what customers hold against you. In Narvar's 2025 State of Post-Purchase report, a survey of 3,461 US online shoppers in August 2025, 74% had experienced a late delivery in the past year.
What they want when it happens is contact before they have to ask. Locus's 2026 survey of more than 1,000 US online shoppers found that only 9% believe brands always meet their fast or guaranteed delivery promises, and that 93% say proactive updates at least partially offset frustration during late deliveries. The delay itself is forgiven far more often than the surprise.
This post is about the call placed when tracking first shows the problem, while the parcel is still moving and the delivery can still be saved. The call placed after a driver has already knocked on an empty house is a different one, with its own timing rule, and our post on AI Voice Agent for Failed Delivery Rescheduling: The 2-Hour Rule covers it.
Which exceptions get a call and which get a text
A delivery exception gets a call only when the customer has to decide something. Carrier tracking produces a short list of exception types: late, damaged in transit, held at customs, recipient not available, address not found. Each one either needs an answer from the customer or does not, and that is the whole routing rule.
A date slip with no choice attached, such as a parcel that will arrive Thursday instead of Wednesday with nobody needing to be home, is a text. That text comes from your tracking system, not from the voice agent.
A call is for the exception where a text leaves a question open. The new arrival day needs someone at home, so the customer must pick a window. The address could not be found, so the customer must correct it. The parcel needs a signature and nobody will be in, so the customer must name a safe place or a neighbour. Damage was spotted at the hub, so the customer must choose between a replacement and a refund.

The call before dispatch, which confirms the window and the access details in the first place, is covered in our post on AI voice agents for delivery coordination.
Open Source Alternative to Vapi / Retell
Self-hosted voice agent platform — no per-minute fees
dograh-hq/dograh
Star on GitHub
What the call says
The agent must know it is talking to the customer before it says anything about the parcel. The number the tracking system holds finds the order. It does not prove who picked up. So the greeting names your company and says this is an automated call about a delivery, and the agent asks for the delivery postcode before it goes further. Until the postcode matches, the agent names no address, no contents and no safe place.
Then the call follows the shape customers say they want. It acknowledges the problem in one sentence. It gives the reason in plain words, if the tracking system has one. It gives the new arrival time. Then it offers the choice: keep the new time, pick a different window from the open slots, which the agent checks live through an HTTP API tool and books the moment the customer chooses, or name a safe place. Slots passed in when the call starts can fill up while it runs, so the live check matters. The agent reads the choice back once and confirms.
Each answer is saved as an extracted variable, recorded as the customer stated it, with the recording and transcript as the exact record. A webhook after the call writes the choice to the transportation management system (TMS) or the order system, so the route plan changes and the driver sees the safe-place note on the stop.
When the customer wants something the agent cannot settle, such as a refund above the amount your policy allows the agent to confirm, the agent writes what it has gathered to the TMS or the customer relationship management (CRM) system through an HTTP API tool and then hands the call to a person. Transfer Call works on Twilio, with an optional spoken introduction both sides hear.
Start the call from the tracking event
The tracking system decides when to call. The voice agent only knows how. When a scan or a carrier feed changes a shipment's status to an exception, your TMS or visibility platform emits an exception event. Your logic checks two things: whether the exception needs a decision, and whether this customer's consent flag is set. If both are true, it calls Dograh's API Trigger with the order details in the initial context: customer name, order number, the new arrival time, the delivery address on file. The agent starts the call already knowing the answer to "which parcel".
Dograh runs the call from that trigger. The API Trigger has a test URL that runs your latest draft and a production URL that runs the published workflow only, so a change to the flow cannot reach customers until you publish it. Our tutorial on API Triggers: Start a Voice Agent Call From Any System shows the request and the fields.
Timing matters as much as the trigger. Call when the new arrival time is known rather than at every scan. A parcel that is "delayed, new date pending" gets a text. The call comes when the depot can offer a real window. Visibility platforms can now flag trouble long before the carrier posts an exception, which we cover in our post on AI voice agents for order status in logistics. The delay call is what you do with that early warning.
Join the Dograh Community
Dograh is an OSS alternative to Vapi. Join our Slack community for queries, releases, best practices & community interactions.
A notice is not a conversation
The legal footing of this call is different from a carrier's text, and the difference is the reason consent at order matters. Outbound calls with an AI voice to a mobile number generally need the customer's prior express consent, and our post on US consent rules for logistics and delivery calls sets out the rules and the state laws on top.
US regulators did carve out a package-delivery exemption, in 47 CFR 64.1200, but it is written for a package delivery company sending one short notice per package, about a minute long, with an opt-out built in. A call that asks the customer to pick a window, correct an address or name a safe place is interactive, often runs past a minute, and may be the second contact about the same parcel. It generally sits outside that exemption, and most shippers and retailers are not the package delivery company anyway. Consent captured at checkout for calls about the order is the safer basis. The exemption's conditions are quoted in the FAQ. This is general information, not legal advice, so confirm your own position with counsel.
The design consequence is simple: the consent check lives in the trigger logic, before the API Trigger is called, and the consent record lives next to the order.
When nobody answers, and what to count
Most delay calls reach someone. The rest need a rule. If the call reaches voicemail, the agent leaves no order details, and the tracking system sends a text with a link to choose a window. How many times to retry is a business decision you set in the trigger logic. The agent's job is to record every attempt so nobody is called twice for the same exception.
Four numbers tell you whether the call earns its place. The share of delay calls that ended with a new window or a safe place recorded. The share that went to a person, and why. The share of exceptions that still ended in a failed attempt despite the call. And the share of exceptions you routed to text, which should stay the majority.
A delay call hears addresses, safe-place instructions and when people will be home. Self-hosted Dograh with self-hosted open-weight speech and language models keeps that audio on your own servers. With hosted models it reaches the model provider. Start with the exception type that fails most often on your routes, usually recipient not available, call only those for a month, and measure failed attempts against the exceptions you only texted.
Glossary
- Delivery exception
- A tracking event that means the planned delivery will not happen as promised: late, damaged in transit, held at customs, recipient not available or address not found.
- Safe place
- The spot the customer names for the driver to leave a parcel when nobody can answer the door, recorded on the stop so the driver sees it.
- Package-delivery exemption
- The US rule in 47 CFR 64.1200 that lets a package delivery company send one short delivery notice per package without prior consent, under strict conditions.
- Exception event
- The message a tracking system or TMS emits when a shipment's status changes to an exception, which your logic can turn into a call through the API Trigger.

