in progress
Clean Dial HubSpot app for phone number verfication

Clean Dial: Phone Live Check for HubSpot

by Tikita Tolley 5 min read Case Study
HubSpot Daeda Tech B2B SaaS TypeScript

How I built a HubSpot workflow app that live checks and formats phone numbers for 245 countries.

Built at Daeda Tech - This project was developed as part of Daeda Technologies.

Key Metrics

MetricValue
Countries Supported245
Output Formats5
Workflow Actions2
Custom Properties11

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’ve submitted my HubSpot Marketplace application, which should be a much better distribution channel than relying on organic discovery alone. The marketplace is where HubSpot users actually go looking for tools like this.


What I Learned

  1. 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.
  2. 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.
  3. 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

Want more build logs & tech experiments?

Follow my journey on Substack. No spam, just builds & learning.

Discussion & Feedback