AI alarm verification and escalation calls follow the two-attempt check. The agent calls the premises or the owner, checks the passcode and records what the person says. If nobody is reached, the center's software starts a call to the next contact. If that fails too, the event goes to an operator, who decides whether to dispatch.
Key Takeaways
- Each attempt is one call, started by the center's software through an API Trigger.
- A missing or wrong passcode never cancels an alarm on the call.
- Florida requires two attempts, and other states and cities set their own rules.
This post is part of our guide to AI voice agents for alarm monitoring companies, where the agent makes the calls and the operator decides every dispatch. Below, we cover the two-attempt check. Each section also shows how that call runs in Dograh, the open-source AI voice agent platform we build.
How the two-call check works
The two-call check means trying two people before anyone asks police to come out. The industry's alarm confirmation standard, ANSI/TMA CS-V-01, calls it enhanced confirmation: two or more investigative calls, or other means, to confirm there is no emergency. It used to be called enhanced call verification (ECV).
Some states put it in law. Florida's alarm confirmation law says that before a monitoring company asks police to dispatch to a centrally monitored burglary or intrusion alarm, it must try to confirm the alarm with the owner, the occupant or a designee, and make a second try if the first one fails. A call, a text message or another electronic means each counts as a try. There are two exceptions: a working camera or audio sensor that lets staff verify the signal, and premises where a federally licensed maker, importer or dealer of firearms stores firearms or ammunition, when the customer asks to skip the two tries.
The second call earns its place because many false alarms start with someone at the property. In one Illinois village's 2025 police report, 358 false alarms came from owner or employee errors.
Other states and cities set their own rules, and some ask for more than two attempts, so check your own state and city rules before you fix the sequence. An alarm verification call may also count as an emergency-purpose call under the FCC's calling rules, which would mean it needs no prior consent as an artificial-voice call. Confirm with counsel whether an automated call counts as a confirmation attempt where you operate, and how the calling rules apply to it.
Call one: the premises or the owner
The first call goes to the premises or the owner, and it has one job: find out whether everything is all right. The center's automation software starts it with an API Trigger request carrying the number and the alarm details, including "attempt": 1. Our post on API triggers covers the request itself.
The Greeting Text on the Start Call node names the monitoring company and asks for the passcode, and nothing else: "Hi, this is Northgate Monitoring about your alarm system. Could you give me your passcode?" Allow Greeting Interruption is on by default, so switch it off and the whole line plays. The zone and the address wait until the passcode matches.
An HTTP API tool sends what the person said to the center's own system, which answers match or no match. With a match, the agent describes the alarm and asks whether there is an emergency. If the person says no and explains, for example that they opened the back door before disarming, the agent records that answer as they said it. The center's procedure then decides whether the event closes. The agent never cancels it on its own.
Voicemail handling is off by default. Once you turn it on, "When voicemail is detected" starts at Disconnect the call, and the attempt counts as not reached. If you choose Leave a message, keep the message to the company name and a callback number, since anyone can play it back.
Open Source Alternative to Vapi / Retell
Self-hosted voice agent platform — no per-minute fees
dograh-hq/dograh
Star on GitHub
Call two: the next contact on the list
The second call goes to someone else on the call list, by another number. When call one ends, a Webhook node posts the outcome to the center's software, and a temporary failure on that post is retried automatically. The center's software reads "not reached" and sends a second request with the next contact's number:
{
"phone_number": "+1415555XXXX",
"initial_context": {
"account_name": "Lakeview Dental",
"alarm_type": "burglary",
"zone": "rear door",
"contact_role": "keyholder",
"attempt": 2
}
}
What this does: It starts the second attempt to a keyholder for the same alarm. With
contact_roleandattemptset, the prompt can explain that the premises did not answer once the passcode matches, and the outcome reaches the center marked as attempt 2.
The call is placed as soon as your system sends the request. Put everything the agent needs in initial_context, because a Pre-Call Data Fetch makes the greeting wait while it runs.
Campaign retries are a different tool. You set the retries (0 to 10), and each one calls the same number again, which suits a busy line but never moves down the list. Moving to the next contact is a job for the center's software, one request at a time.

When the passcode is missing or wrong
A person who answers without a valid passcode never clears the alarm. ANSI/TMA CS-V-01 sets out the next steps for the center. If the person gives no code, the center tries an authorized person off the premises to confirm who they are, and failing that makes a notification to the responding agency. If they cannot give a valid code within a reasonable time, the center makes the notification.
On the call, the agent does not cancel the alarm or describe it. It ends the call politely, and the Webhook node sends the outcome to the operator, who follows the center's procedure. The off-premises call, if the procedure asks for one, is another API Trigger request like call two.
Join the Dograh Community
Dograh is an OSS alternative to Vapi. Join our Slack community for queries, releases, best practices & community interactions.
Escalating to the monitoring team
When both attempts end with nobody reached, or a code is missing or wrong, the event moves to an operator. The center's software puts it in the operator's queue with both outcomes and the recordings attached, and the operator decides on dispatch.
Danger on a call goes faster. If the person says someone is inside, or reports fire or a medical emergency, the agent uses the Transfer Call tool. Its Pre-Transfer Message plays the fixed line "If you're in danger, get to safety and call 911", and Dograh then connects the caller to the operator queue once someone answers. Context Mapping can send a fire alarm to a different queue from a burglary. Our post on human handoff routing covers what the operator sees before they pick up.
Some products promise an agent that verifies alarms with perfect accuracy. We would rather the agent record what each person said and leave the judgment to the operator. Both attempts sit in Dograh as recordings and transcripts, which is also the record a city or a customer asks for after a disputed dispatch. A QA Analysis node can flag any call where the zone was mentioned before the passcode matched.
Glossary
- Enhanced confirmation
- The industry's name, in ANSI/TMA CS-V-01, for two or more investigative calls or other means before any dispatch request. It was formerly called enhanced call verification (ECV).
- Keyholder
- A contact on the call list who is authorized for the premises but usually not on site. The second attempt often goes to a keyholder by another number.
- Notification
- The standard's term for the center informing the responding agency, such as police. It follows when nobody is reached or a code is missing or wrong, and it stays the operator's call.
- Pre-Transfer Message
- The fixed line or recorded clip that plays before the Transfer Call tool dials the operator queue. The safety line for a caller in danger goes here.

