If you're running SMS campaigns at scale and not pre-filtering your contact list against carrier HLRs, you're burning money. Across the regional fintech and e-commerce clients we manage, HLR cleaning cuts cost-per-delivered-message by 25-40% — instantly. Here's how it works and how to implement it.
What HLR filtering actually checks
HLR (Home Location Register) is the live database every carrier uses to route SMS. An HLR lookup asks the carrier directly: is this number active, what carrier is it on right now (after porting), and is it reachable? Unlike pattern validation (which just checks format), HLR returns ground truth.
- ●Active vs deactivated/recycled numbers
- ●Current carrier (handles porting — number originally Verizon now on T-Mobile)
- ●Roaming status
- ●Line type (mobile, landline, VoIP)
- ●Country and region confirmation
Where the savings come from
Most SMS providers charge per attempted send, not per successful delivery. So if 20% of your list is dead numbers, you're paying for 20% of messages that go nowhere. On a 1M-recipient campaign in SEA at $0.04/SMS, that's $8,000 wasted.
HLR lookup typically costs $0.003-0.005 per number — about 1/10th of an SMS. So even if HLR catches just 10% bad numbers in your list, the ROI is 3-5x on filtering alone. Real numbers from a Q1 campaign we ran:
- 01Original list: 2.4M numbers, projected send cost $96K
- 02After HLR filter: 1.83M valid, 570K removed
- 03Filter cost: $7,200 (at $0.003/lookup)
- 04Actual send cost: $73,200
- 05Net savings: $15,600 — and delivery rate jumped from 71% to 94%
Which provider to use
There are 20+ HLR providers. We've used most. The criteria that actually matter:
- ●Real HLR queries (not just CNAM lookup). Ask for sample reports.
- ●SEA / your-region carrier coverage. Many "global" providers cover NA/EU well but fail on Indonesia, Malaysia, Vietnam.
- ●Async batch API (you upload a CSV, get results in 1-24h) AND sync API for real-time validation at signup.
- ●Privacy compliance — they should NOT store your numbers after delivery.
Don't pick the cheapest provider. We've seen $0.001/lookup providers that return 60% "valid" against numbers that turn out to be 40% bad. The savings evaporate when delivery still tanks.
Integration in 1 afternoon
Most providers offer a simple REST API. Here's the typical flow:
- 01Sign up, get API key
- 02POST your list to /batch-lookup endpoint (JSON array of numbers)
- 03Receive a batch_id, poll /status until "complete"
- 04GET /results — comes back as JSON with active/inactive flags per number
- 05Filter your list before passing to your SMS provider
If you don't have engineering capacity, we run HLR-as-a-service — upload your CSV, get a clean CSV back in 24h. Same workflow most of our clients use.