Line Status API: Detect Disconnected and Void Numbers Before SMS Spend
A valid format does not mean a number is worth messaging. Growth teams need to know whether the line is active, disconnected, void, mobile, landline, or VoIP before campaign dollars leave the account. Line status checks close that gap by turning dead records into a clean suppression file before send day.
Failure-rate reduction after dead numbers are removed.
Typical wasted SMS volume cut from cleaner targeting.
Real-time validation response for form and API checks.
Countries covered for global phone validation programs.
Why line status belongs before every SMS send
Phone validation usually starts with syntax: does the number look real, does it match a country plan, and can it be normalized. That is useful, but it is not enough for a paid SMS campaign. A record can pass a format check and still belong to a disconnected subscriber, a void range, a landline desk phone, or a VoIP service that creates poor lead quality.
Line status turns validation into a campaign decision. With Phone-Check.app, teams can validate and enrich a number, detect line type, check carrier ownership, identify timezone, and flag invalid or disconnected rows in one workflow. The result is simple: send to active mobile records, suppress records that cannot receive SMS, and keep the suppressed rows available for CRM cleanup.
This matters most when list sources multiply. A lifecycle team might combine Shopify opt-ins, webinar registrations, paid lead forms, referral lists, and CRM exports. Each source decays at a different pace. A line status API gives every row the same evidence before the file reaches Twilio, Klaviyo, Attentive, HubSpot, Salesforce, or a custom messaging worker.
The validation workflow: validate, enrich, filter, export
Normalize every number to E.164 format
Start with clean formatting so duplicate, local, and malformed records do not create false status results.
Check validity and line status
Confirm whether the number is valid, active, disconnected, void, unreachable, or unknown before it enters an SMS audience.
Add carrier, line type, country, and timezone
Enrich active numbers with carrier and timezone data so marketing teams can segment by mobile eligibility and local send windows.
Filter numbers by campaign action
Send to active mobile numbers, suppress landlines from SMS, review risky VoIP, and remove disconnected or void records from paid messaging.
Export both clean and suppressed files
Download one SMS-ready file and one suppression file so finance, RevOps, and sales teams can see exactly why each row changed status.
Where line status checks should run in the customer lifecycle
The highest-ROI placement is at the point where a number first becomes expensive. For a signup form, that means checking the number before sending an OTP or creating a high-priority lead. For an order form, it means rejecting obvious bad numbers before delivery, customer support, and fraud teams inherit the problem. For SMS marketing, it means cleaning the file before campaign scheduling instead of reacting to failed delivery reports after the bill arrives.
Real-time validation works best for forms, checkout, quote requests, and account creation because the user is still present and can fix a typo. Bulk validation works best for imported lists, partner files, event leads, and stale CRM segments where the team needs a downloadable audit trail. The same decision policy should drive both. A disconnected number should be removed whether it came from a live form or a six-month old CSV.
Treat the suppression file as a growth asset, not a trash bin. Sales can use it to ask for updated contact data on high-value accounts. Finance can use it to calculate avoided spend. Marketing can compare bad-status rates by source and stop buying leads from vendors that keep supplying inactive numbers. That feedback loop is where line status turns from a validation field into a list quality program.
Line status vs line type: what to do with each row
| Signal | Campaign action | Why it matters | Primary owner |
|---|---|---|---|
| Active mobile | Send SMS | Eligible for marketing, OTP, reminders, and sales follow-up. | Lifecycle marketing |
| Disconnected or void | Remove from send | The number cannot receive the message and will distort delivery reporting. | RevOps and finance |
| Landline or toll-free | Suppress SMS | Route to voice, email, or manual enrichment instead of paid texting. | Sales operations |
| Fixed VoIP | Review by use case | May be acceptable for B2B voice, but often weak for SMS marketing. | Growth operations |
| Non-fixed VoIP | Risk review | Often linked to fake signups, burner accounts, and low-intent leads. | Fraud prevention |
ROI math for disconnected number detection
The cost case is usually visible in the first export. If a 500,000-record campaign has a 12% bad status rate, 60,000 messages are already waste before copy, offer, or carrier filtering enter the conversation. If another 6% are landlines, the SMS-ready audience shrinks by 90,000 rows without losing reachable mobile buyers.
Better status data also cleans analytics. A failed delivery rate that drops from 12% to 1.8% gives marketers a more honest view of message copy, offer quality, and carrier performance. Without that cleanup, teams can spend weeks tuning campaigns that were never sent to reachable numbers in the first place.
API example: classify a number before SMS
Use the phone validation API for real-time form gates and the bulk validation workflow for CSV cleanup. The same rules should power both paths so no number receives special treatment because it entered through a different system.
type PhoneCheckResult = {
valid: boolean;
carrier?: string;
connectivity?: 'active' | 'disconnected' | 'void' | 'unknown';
line_type?: 'mobile' | 'landline' | 'fixed_voip' | 'non_fixed_voip' | 'toll_free';
timezone?: string;
};
type CampaignDecision = 'send_sms' | 'suppress_sms' | 'review' | 'remove';
async function classifySmsRecipient(phone: string): Promise<{
decision: CampaignDecision;
reason: string;
result: PhoneCheckResult;
}> {
const response = await fetch(
'https://api.phone-check.app/v1-get-phone-details?phone=' + encodeURIComponent(phone),
{
headers: { 'x-api-key': process.env.PHONE_CHECK_API_KEY ?? '' },
},
);
const result = (await response.json()) as PhoneCheckResult;
if (!result.valid || result.connectivity === 'disconnected' || result.connectivity === 'void') {
return { decision: 'remove', reason: 'inactive_or_invalid', result };
}
if (result.line_type === 'landline' || result.line_type === 'toll_free') {
return { decision: 'suppress_sms', reason: 'not_sms_eligible', result };
}
if (result.line_type === 'non_fixed_voip') {
return { decision: 'review', reason: 'voip_risk', result };
}
return { decision: 'send_sms', reason: 'active_mobile', result };
}Bulk CSV cleanup
Upload multiple files, validate each row, then export clean mobile, suppression, and review files for the campaign team.
CRM enrichment
Store carrier, status, timezone, and line type fields on contacts so future sends start with better data.
Fraud filtering
Pair status with VoIP and carrier signals to keep burner numbers, fake leads, and unreachable contacts out of automated journeys.
FAQ: line status, void numbers, and SMS waste
What is a line status API?
A line status API checks whether a phone number appears active, disconnected, void, unreachable, or unknown. SMS teams use it with phone validation and line type detection to avoid paying for messages that cannot deliver.
Is line status the same as line type?
No. Line status answers whether the number is reachable or active. Line type answers what kind of number it is, such as mobile, landline, fixed VoIP, non-fixed VoIP, or toll-free. Strong SMS workflows use both.
Should disconnected numbers be deleted from the CRM?
Usually no. Keep the CRM record, but remove the phone number from active SMS campaigns. Store the validation result, date, carrier, and reason so teams know whether to refresh the contact, try email, or request a new number.
Can bulk CSV validation detect void and inactive numbers?
Yes. Bulk phone validation can process campaign files, identify invalid, disconnected, void, landline, VoIP, and mobile rows, then export clean files for SMS and suppression files for cleanup.
Dead numbers should never reach the send queue
Validate the list, detect line status, enrich carrier and timezone, then export only the numbers that deserve paid SMS budget. For related workflows, read the bulk SMS hygiene guide and the carrier detection guide.
Test a phone number