
Every voice AI pitch in self storage leads with a containment rate: the share of calls the AI handled without a person. The higher the number, the better the product looks.
On its own, that number is not honest. It counts a call as a win the moment it ends without staff. It does not check whether the tenant got through the gate, paid the balance or had the move-out processed. A high containment rate can sit on top of calls that left every one of those problems open.
swivl's own Q1 2026 report led with containment. In State of Voice AI in Self Storage, Issue 02, CEO Mason Levy named the problem:
"'Containment,' the share of calls handled without a person, is the number this industry quotes, us included. It tells you a call was picked up. It does not tell you whether the tenant's problem got solved."
"Treating those as the same thing is how an industry over-reports progress it has not made."
Containment counts one event: the call ended without reaching a person. It does not care how. The tenant who got the answer counts. The tenant who gave up counts. The tenant who hung up and called back counts twice.
So the number rises for reasons that have nothing to do with service. Make the transfer harder to reach and containment goes up. Let the AI end calls it could not finish and containment goes up.
Resolution asks a different question: is the thing the tenant called about now done? That answer does not live in the phone system. It lives in the gate log, the payment ledger and the FMS.
Operators see the gap too. One multi-site operator told us they don't count a call handed to a person as contained, and that the definitions vendors used didn't match their own. When the buyer and the vendor define the same word differently, the number stops meaning anything.

A tenant stands at the keypad after hours and calls. The AI verifies the tenant, gives the code, and the call ends in under a minute. Contained.
Now say the account is past due and gate access is locked. A code alone won't open the gate. swivl checks for lockout and delinquency before it gives out a code. It tells the tenant why the code won't work and offers to take the payment right there. Once the balance posts, the tenant gets the code and goes in.
Same call, two possible endings. The tenant pays and gets through the gate: resolved. The tenant hangs up before paying: contained, not resolved. What decides it is whether the tenant finished the action, not whether the AI answered.
The AI reaches a tenant with an overdue balance and sends a payment link by text. No person involved. Contained.
The payment is a separate event. Issue 02 split its collections results into two lists for this reason: "What got offered" and "What got completed." In the report's words: "An offer sent is not a job finished." A link sent is activity. A payment posted or a payment plan set up is the outcome.
A tenant calls to say they are moving out at the end of the month. The AI takes the details, confirms the date, and the call ends. Contained.
The move-out is not done until someone checks the unit and closes the account in the FMS. If the request sits in an inbox nobody owns, next month's rent posts anyway. The tenant calls back to ask why. That call can count as contained too.
Add it up. Every one of these calls counts as contained. The only ones that count as outcomes are the ones where the work actually got finished.
Self storage doesn't have a standard for finished work. Every operator and every vendor counts it differently. It should be counted the same way everywhere, starting with a unit of work.
A unit of work has four parts:
If any of the four is missing, nobody measured the work. They assumed it got done.
The call is just how the work arrives. The unit of work is what you measure.
Mason's section names the first fix:
"Ticketing was the first real step toward fixing that, because it separates handled from finished."
A ticket turns "this needs a person" into work with an owner, a location and a due date, with the conversation that created it still attached. The move-out request gets somewhere to live after the call ends. It also gets a second clock. The call ends in a minute. The ticket stays open until someone closes it.
Some vendors count a ticket created as a resolution. That's activity. A ticket nobody owns is the same unowned inbox with a new name. In swivl, every ticket is automatically assigned to an owner, with a resolution timeframe and notifications to keep it moving. Every time someone on your team logs in, they see the work waiting on them. The ticket stays in front of them until someone closes it.
In swivl, these pieces are live today:
For the handoff itself, see designing an escalation path that does not lose the caller and what agents need on screen before they say hello.

Every request ends up in one of these. A containment rate only tells you about one of them.
Track containment. Do not report it alone. Put these next to it:
Mason's section closes with where swivl's reporting goes next:
"What we are building toward is a sharper standard: not just what percent we contained, but what percent we completed, and what percent still needed a person to close out. That is the next issue. We will show our work."
Until that issue ships, one question cuts through any containment rate, swivl's included: of the calls the AI handled, how many ended with the work done?
Read the full report: State of Voice AI in Self Storage, Issue 02
See how swivl turns conversations into work somebody owns: Book a demo