Work missed Aircall calls from one shared callback queue
One screen showing every missed call nobody has returned yet, so reps claim a caller, call back in one click, and never dial the same person twice.
Build me a shared callback queue that my inside sales team can work out of, instead of everyone squinting at the Aircall activity feed and accidentally calling the same person twice. The app opens on a single worklist of every missed inbound call that has not been returned yet.
The main Queue tab lists one row per missed inbound call, newest missed call at the top, with a toggle to sort by longest waiting instead. Each row shows the caller's phone number, the Aircall line they dialed, how long they have been waiting since the missed call, how many times that number has called before, and whether HubSpot already knows them. Let the queue be filtered by which line was dialed, and give it a sensible empty state for when the team has cleared everything.
Pull the calls with Aircall List Calls and Aircall Search Calls, filtered to inbound calls that were not answered, over a lookback window that defaults to the last 7 days and is adjustable in the app. Label the line they dialed using Aircall List Numbers. Get the caller's name, where Aircall has one, from Aircall Search Contacts by phone number. Count prior calls from the same number over the lookback window to fill the how many times they have called column.
A missed call counts as returned only when there is a later outbound call to that same number. Work this out from Aircall call data rather than from anything the app stores: for each distinct caller number, run Aircall Search Calls filtered to direction outbound and that phone number with the date range starting at the missed call's timestamp, and drop the row if any outbound call comes back. This is what makes the queue empty itself as reps do the work, including when a rep calls back from their handset instead of using the app. Phone numbers in Aircall request bodies are E.164, so normalize both sides to E.164 before comparing and never match on formatted or partial numbers.
Aircall allows 120 requests per minute per company, so batch the per row lookups. Collapse the queue to distinct phone numbers first and do one returned check and one contact lookup per number rather than per call, then cache the results for the life of the page view. Refresh on a manual Refresh button rather than polling constantly.
For the CRM column, look up each distinct number with HubSpot Search Contacts filtered on the phone and mobile phone properties. When there is a match, show the contact's name and company, and use HubSpot Search Deals to show whether they have an open deal along with its name and stage. Unknown numbers show as a new caller. The app should still work with HubSpot disconnected, just with that column empty.
Every row has a Claim button that assigns it to whoever is logged in, stamps the time, and surfaces it in a My callbacks tab for that user. Claims are the one piece of state the app stores itself, keyed by the Aircall call id and the logged in user. A claimed row stays visible in the shared queue but shows who has it and cannot be claimed by anyone else, so two people never grab the same caller. Let people release a claim they are not going to work, and let a stale claim more than a couple of hours old be taken over.
From a claimed row, Call back places the call with Aircall Start an Outbound Call from that rep's own Aircall phone. Match the logged in user to their Aircall user with Aircall List Users on email address. Also offer a softer Dial option using Aircall Dial a Phone Number, which loads the number into the rep's dialer without placing the call, for reps who want to read the record before it rings.
After a callback the row moves to a disposition step. The rep picks reached, left voicemail, or wrong number, which writes to the call with Aircall Tag a Call, and types a short note, which writes with Aircall Comment a Call. Apply both to the original missed call record so the history lives with the inbound call the queue was built from. Once dispositioned, the row leaves the queue.
When a callback needs scheduling for later, for example the caller asked to be rung back tomorrow, offer an optional Schedule follow up action that uses HubSpot Create Task with a due date, a subject naming the caller and their number, and the rep's note, associated to the matched HubSpot contact when there is one.
Keep this a queue rather than a notifier. It should not send alerts and nothing should run on a schedule or in the background: it is a screen people sit in and work down until it is empty.
What does this prompt do?
- Shows every missed inbound call nobody has returned yet, newest first, with the caller's number, the line they dialed, how long they have been waiting, and how many times they have called before.
- Flags callers your CRM already knows and whether they have an open deal, so reps know who they are calling before they dial.
- Reps claim a caller into their own list, call back in one click from their own phone, then log the outcome as reached, left voicemail, or wrong number with a note.
- Empties itself as the work gets done: once someone has rung a caller back, that caller drops off the queue, even if the rep dialed from their handset.
What do I need to use this?
- An Aircall account covering the phone lines your team answers
- Your reps set up as Aircall users with their own phone, so click to call rings the right person
- A few call tags in Aircall for outcomes like reached, left voicemail, and wrong number
- A HubSpot login if you want to see which callers are already known and schedule follow ups (optional)
How can I customize it?
- Sort the queue by longest waiting instead of newest missed, or filter it down to a single phone line
- Change the outcome buttons to match the tags your team already uses in Aircall
- Decide how far back the queue looks, for example only the last three days of missed calls
FAQs
Will two reps end up calling the same person?
What if a rep calls back from their desk phone instead of clicking the button?
Does this work if we do not use HubSpot?
Does it alert us the moment a call is missed?
How far back does the queue look?
Related templates
Stop buying stale lists. Reps run a saved search, work the results like an inbox, and only the accounts they approve ever reach your CRM.
Pick a date, a starting point and a radius, then build a sequenced day of customer visits that lands straight on your calendar.
One screen where reps filter for companies that fit, see who is actually reachable at each account, and save only the addresses that verify.
See every competitor battlecard next to the number of open deals that name that competitor, so the cards carrying real pipeline get refreshed first.
Score every target account against the buying committee you actually need, see the exact holes, and have an assistant fill them in your CRM.
See open and pending conversations from all your Help Scout inboxes in one queue, sorted so the customers who have waited longest on you come first.
Stop calling the same person twice.
Give your inside sales team one shared queue for missed calls, with claiming, click to call, and outcomes logged in seconds.