Can an AI voice agent look up a real order or ticket status on the call?
Short answer: Yes, if your order or ticketing system has an API the agent can call. ElevenLabs' agent uses a webhook tool to send the customer's order number or details to your system, wait for a response, and read the status back to the caller in the same call, no human involved. The hard requirement is that API: if your system doesn't expose one, this needs a developer to build a small lookup endpoint first, which is a different, smaller job than the voice agent itself. Most of what actually goes wrong with this setup isn't the agent, it's the endpoint it's calling: a slow response with no filler line, a "not found" answer the agent doesn't know how to handle gracefully, or a lookup that returns the wrong customer's order because the identity check wasn't strict enough. Get those three right and the voice agent side is comparatively straightforward.
Status calls eat staff time on questions that are really just a database lookup, and you want to know if that lookup can genuinely happen on the call itself.
I'm Ranjit, and I run Blur Studio: 15+ years building software, 120 apps taken live, and clients who have gone on to raise $10M+. I build AI systems and processes that help businesses do a lot more with a lot less time. I also work differently from most of what else is out there, more on that further down this page. Say hello.
This page may contain affiliate links from which Blur Studio earns commissions.
"Where's my order" and "what's happening with my ticket" are two of the most repetitive calls a business takes, and most of the answer already lives in a system somewhere. The question is whether that system can answer the question itself, on the call, in real time. In practice, most of what goes wrong with this setup isn't the voice agent, it's the endpoint it's calling: a slow response with no filler line, a "not found" case the agent doesn't know how to handle, or a lookup that returns the wrong customer's order because the identity check wasn't strict enough. Get those three right and the agent side of this is comparatively easy. If you only need a simple version, see setting up an order status phone line.
What has to be true for this to work
The agent itself has no memory of your orders or tickets. It uses a webhook tool: during the call, it sends whatever identifying information the customer gives (an order number, a phone number, a name) to an endpoint you provide, and reads back whatever that endpoint returns. That means your order or ticketing system needs an API that can answer "what's the status of order X" with a clean response. Shopify, most modern help desk tools (Zendesk, Freshdesk) and many e-commerce platforms have this already. Older or heavily customized systems sometimes don't, and that's the actual blocker, not the voice agent.
If you don't have that API today, the fix is usually a small custom endpoint that sits in front of your database or system and answers exactly that one question, which is a much smaller build than people expect once you know specifically what it needs to do.
There's a second path worth knowing about alongside the webhook tool: MCP tools, which connect the agent to a Model Context Protocol server instead of a plain HTTP endpoint. A growing number of platforms now expose their own MCP server rather than (or alongside) a traditional REST API, and if your order or ticketing system already has one, that can be a cleaner connection than building a webhook from scratch, since the MCP server already describes its own available actions to anything that connects to it. Not every platform has one yet, so check what your specific system supports before assuming you need a custom webhook; if an MCP server already exists for it, that's usually the less work.
How do I set this up
- Confirm your order or ticket system has an API, or get one built that exposes just the lookup you need.
- Decide what the customer needs to provide to identify their order: an order number is most reliable; name and phone number alone can match the wrong record if you have repeat customers.
- Add a webhook tool to your agent pointed at that endpoint, and map the fields it sends and expects back.
- Test with real order numbers, including ones that don't exist, to check the agent handles a "not found" response gracefully instead of guessing.
- Add a person fallback for anything the lookup can't answer, like a dispute over the status itself.
- Test slow responses deliberately, not just fast ones: simulate a delayed API response and make sure the agent has a filler line instead of going silent while it waits.
- Review a sample of real calls in the first couple of weeks specifically for identity-matching edge cases, like two customers with similar names or an order number typo that still matched something. Regression-testing a voice bot covers re-testing after script changes.
Don't skip verifying who you're talking to
Before the agent reads out any order or ticket detail, it should confirm the caller actually has a right to that information, typically by matching the order number against a name or phone number on file rather than handing out status to whoever happens to say a number out loud. This is an easy step to skip when you're focused on getting the lookup working at all, and it's exactly the kind of gap that turns a convenience feature into a real problem if someone gets a stranger's order details read to them.
What counts as a reasonable match depends on how sensitive the information is. For a simple shipping-status lookup, matching an order number against a name is usually enough. For anything that touches payment details, an address, or account-level information, add a second factor: the last four digits of the card used, the billing zip code, or an account PIN if you have one, the same pattern phone banking systems use. Decide this upfront, as part of the design, not as a patch after someone notices the gap.
The part people get wrong
The failure case that actually matters here isn't the agent misunderstanding the order number, it's what happens when the lookup fails or returns nothing. If the webhook times out or the order genuinely doesn't exist, the agent needs a specific instruction for that, or it will either go quiet or, worse, guess at an answer that sounds confident and is wrong. Write that failure script as carefully as the success one. For tickets opened from calls, see creating support tickets from calls.
There's a second, quieter version of this same problem: a slow lookup rather than a failed one. If your system's API typically responds in under a second, test what happens when it takes five or ten seconds instead, whether because of load, a network hiccup, or a database that's slower at certain times of day. A caller sitting through a long silence while the agent waits on a response is a worse experience than a quick, honest "that's taking a moment, let me check" filler line, so build that into the agent's behavior rather than assuming every lookup will be instant just because it was in testing.
Who this is actually worth building for
If status calls are a genuinely high-volume, repetitive drain on your team and your system already has or can get an API, this pays for itself quickly: every call it resolves without a person is time back. If your order statuses require real judgment to explain (a delay with a story behind it, a partial refund situation), don't try to make the lookup tool handle that; route those to a person and let the agent handle the clean, simple lookups only. The same webhook pattern books jobs, see letting a voice agent book jobs into your calendar or CRM.
A rough way to size whether this is worth it: estimate how many status calls you take in a week and how long each one runs, staff time included in getting to the right system and reading the answer back. If that adds up to a few hours a week, the build usually pays for itself within a couple of months once you account for the agent's call cost against what that staff time is worth. If status calls are occasional, a handful a week at most, the integration work may cost more than it saves for a while, and a simpler self-service option (an order-tracking page, a text update) might solve the same problem for less effort. Factor in ongoing maintenance too, not just the build: if your order system changes its API response format, or adds a new status the agent's script doesn't account for, someone needs to catch that and update the lookup, the same way any other piece of software connected to a live system needs upkeep.
A distributor example: a wholesale supplier taking repeat calls from the same retail accounts asking "has my order shipped yet" is a near-perfect fit, since the callers are a known, limited set, the question is almost always the same shape, and the answer is a clean yes/no plus a date that already lives in the order system. Compare that to a business where "status" really means "can you explain why this is late and what you're doing about it," which isn't a lookup at all, it's a conversation that needs a person who can make a judgment call about compensation or next steps.
How I'd approach this
The voice agent side of this is usually the easy part. The harder, more valuable part is making sure the lookup endpoint behaves correctly under real conditions: wrong order numbers, systems that are slow to respond, orders that exist in two different states depending on which part of your stack you ask. That's the piece I build for clients, so the agent is only ever as good as the data it's reading from. I'd rather spend the bulk of a build's time hardening that endpoint against real edge cases, slow responses, missing orders, ambiguous matches, than adding features to the agent that look impressive in a demo but rarely get used on a real call. See ElevenLabs' agent plans if you're ready to start on the agent itself.
Need help finishing or building this?
If you don't have an API for your order or ticket system yet, or the agent's lookup is returning wrong or inconsistent answers, I can build the missing piece and connect it properly.
Questions people ask
Does my order system need a public API for this to work?
It needs an API the agent's webhook tool can call during the conversation, which doesn't have to be publicly documented but does need to exist and return a clear answer. If your system doesn't have one, a small custom endpoint built specifically for this lookup is usually the fix.
What if the order number doesn't exist or the lookup fails?
This needs its own explicit instruction in the agent's setup. Without one, the agent may go quiet or guess at an answer instead of telling the caller it couldn't find the order and offering a person to help.
Can this work for support tickets as well as orders?
Yes, the mechanism is the same: the agent calls a webhook pointed at your ticketing system's API and reads back the status. Zendesk and Freshdesk both have APIs that support this kind of lookup.
How does the agent know which order belongs to the caller?
Through whatever identifying information you ask it to collect, usually an order number. Relying on name and phone number alone is less reliable if you have repeat customers with similar details, so an order or ticket number is the safer identifier when you have one.
Is this cheaper than having staff handle status calls?
It can be, if status calls are frequent and repetitive, since you're trading a recurring staff cost for a one-time integration. If your call volume is low or each call needs real explanation, the build cost may not pay back quickly.
What tool does ElevenLabs use for this kind of lookup?
A webhook tool, one of five tool types the Agents Platform supports (the others are client tools, code tools, MCP tools and system tools). Webhook tools are the standard choice for pulling live data from an external system during a call.
How do I stop the agent reading out someone else's order details?
Match the order or ticket number against a name or phone number on file before the agent reads back any status, rather than trusting a number alone. Treat this as a required step in the setup, not an optional extra.
Should I add a second identity check beyond name and order number?
For a simple shipping-status lookup, name and order number are usually enough. For anything touching payment or account-level detail, add a second factor like the last four digits of a card or a billing zip code, the same approach phone banking uses. Decide this upfront rather than patching it in after a close call.
Is there an alternative to building a webhook for this?
If your order or ticketing platform already exposes an MCP server rather than a plain API, ElevenLabs' MCP tool can connect to that directly instead of you building a custom webhook. Not every platform has one yet, so check what yours supports before assuming a webhook is the only option.
What if a customer has several open orders at once?
Decide upfront whether the agent should ask the caller which order they mean, or read back all open orders and let them pick. Trying to guess which one they want from a vague description is where this kind of lookup tends to go wrong, so build an explicit step for it rather than leaving it to the agent to figure out in the moment.