Clean Dial: Phone Live Check for HubSpot
How I built Clean Dial — a HubSpot app that formats and live checks phone numbers across 245 countries. HLR lookup, E.164 format, and workflow automation.
Built at Daeda Tech - This project was developed as part of Daeda Technologies.
Key Metrics
| Metric | Value |
|---|---|
| Countries Supported | 245 |
| Output Formats | 5 |
| Workflow Actions | 2 |
| Custom Properties | 11 |
The Problem
Sales reps waste hours dialling numbers that will never pick up. Estimates put CRM phone number decay at around 20%, and HubSpot doesn’t give you a native way to verify reachability or format numbers beyond basic US standards. If you’re running global outreach, you’re on your own.
The HubSpot community forums are full of people asking for exactly this - better formatting without custom code, a way to flag dead numbers before they hit a call queue, and some confidence that SMS campaigns aren’t burning credits on invalid contacts. It’s a niche pain point, more vitamin than painkiller, but I saw a gap and thought it’d make a solid first app for my first HubSpot app in Daeda Tech’s HubSpot portfolio.
The Solution
Clean Dial adds two workflow actions to HubSpot, plus a bulk verification service. It writes 11 custom properties back to each contact so teams can segment and route based on phone data quality. The formatter is free with no limits.
Format Phone Number (Free & Unlimited)
Takes numbers from 245 countries and outputs them in five standardised formats via libphonenumber-js:
- E.164 (+12133734253) - the universal standard for APIs and integrations
- International (+1 213 373 4253) - readable format with country code included
- National ((213) 373-4253) - country-local format, no prefix
- Digits only (12133734253) - no formatting characters, ideal for dedup and matching
- RFC3966 (tel:+12133734253) - URI format for click-to-call and VoIP systems
Also catches syntax errors on the spot so bad formatting doesn’t slip through.
HLR Lookup (Premium)
Pings the carrier network in real time to determine if a number is actually reachable. Returns detailed results:
- Live Status - LIVE, DEAD, ABSENT_SUBSCRIBER (SIM exists but offline), NO_TELESERVICE_PROVISIONED (can’t receive SMS), or UNKNOWN
- Is Callable - boolean derived from live status
- Line type - mobile, landline, VoIP, toll-free, premium, or pager
- Carrier info - current and original carrier plus MCCMNC codes, even if the number has been ported
- Ported detection - identifies numbers that have switched carriers
- Disposable number detection - flags temporary or burner numbers for fraud prevention
- Confidence Score - 0-100 weighted quality score based on all of the above. Useful for tiered routing — priority queue for 80+, email-first for 50-79, nurture-only below 50
Bulk HLR Lookup (Managed Service)
For verifying an entire database at once rather than processing contacts through workflows individually. We review your data, run the lookups, update your HubSpot properties, and deliver a health report. Get in touch for a quote.
Technical Architecture
HubSpot Integration
Built as custom workflow actions that slot into any existing HubSpot workflow. When a contact enrolled the workflow triggers Clean Dial to format or live check their number automatically. Results write back to 11 custom contact properties covering formatted numbers, carrier info, and reachability status. No manual steps, no exports, no code from the user’s side.
Phone Number Parsing
The formatting side uses libphonenumber-js to handle country-specific parsing rules across 245 countries. Every country has its own quirks. The HLR lookup side queries carrier networks through a third-party service to get real-time reachability data rather than relying on stale databases.
The Results
This was my first solo HubSpot app at Daeda Tech (our ninth app overall). It’s early days - about 3 installs so far. People are nice about it when they see it, but getting attention for a niche data quality tool has been the main challenge.
I submitted to the HubSpot Marketplace but the application didn’t go through - they require more active users before approving new apps. I’ll resubmit once the install count grows. The marketplace is still the right distribution channel, it’s just a matter of getting there.
What I Learned
- Everything takes time. You put things out there and it pays off weeks later. A blog post targeting the right keywords eventually drives a little traffic. An app listing slowly gets discovered. You have to be patient with it.
- Niche problems are hard to sell. Clean Dial solves a genuine problem, but it’s not keeping anyone up at night. It’s a vitamin, not a painkiller - and vitamins need a different kind of marketing.
- Distribution is the real challenge. Building the app was the straightforward part. Getting it in front of the right people is where the actual work is. My hope is that Daeda MCP Pro will get more RevOps people into our ecosystem and they’ll discover Clean Dial from there.
Learn More
Questions I Had to Figure Out
Is the phone number formatter in Clean Dial free?
Yes. The Format Phone Number workflow action is free with no usage limits — it formats numbers from 245 countries into five standardised formats (E.164, International, National, Digits Only, RFC3966). The HLR Lookup feature is premium.
What does HLR lookup mean in Clean Dial?
HLR (Home Location Register) lookup pings the carrier network in real time to check if a phone number is actually reachable. It returns a status of LIVE, DEAD, ABSENT_SUBSCRIBER, or NO_TELESERVICE_PROVISIONED, plus carrier info, line type, and a 0–100 confidence score.
Which HubSpot objects does Clean Dial support?
Clean Dial adds workflow actions for contacts. Results write back to 11 custom contact properties covering formatted number variants, carrier details, and reachability status.
Want more build logs & tech experiments?
Follow my journey on Substack