In every lookup, no add-ons

Contact list hygiene for CRM and B2B sales

Run every number in your CRM through the lookup on a schedule and update each record from the fields that change: a carrier deactivation in the last 45 days, the carrier serving the number now after porting, and whether it is mobile, landline or VoIP. One credit per number, no add-ons.

  • US and Canadian numbers
  • From $0.0009 per lookup
  • State DNC checks free
CRM rescrub, this month
Number The lookup says Do this
(415) 555-0102 Deactivated by the carrier Oct 2 Suspend
(617) 555-0148 New carrier since the last scrub Update record
(312) 555-0176 Landline, can't take texts Call only
(206) 555-0193 Was deactivated, active again Re-verify
(713) 555-0121 Mobile, nothing changed Keep

Fictional 555 numbers.

  • 1B+ requests served by our validation network
  • ~32% of numbers we look up are landline or VoIP
  • ~7% of landlines we check can take a text

How phone data goes stale

“We found out two months later that the number was dead.”

deactivationDate shows a carrier deactivation in the last 45 days, from data refreshed daily with a 1 to 7 day lag, and it clears once the number is reactivated.

deactivationDatereason

“Our texting tool keeps failing on the same numbers.”

The wireless industry's messaging guidelines say senders should process deactivation files regularly, for example daily, and remove deactivated numbers from opt-in lists.

CTIA Messaging Principles 5.1.5 · api.ctia.org

deactivationDateaction

“Same contact record, a different person answers.”

Carriers reassign disconnected numbers. The FCC's reassigned-number safe harbor only covers its Reassigned Numbers Database; no single lookup can tell you who holds a number now.

47 CFR 64.1200(m) · ecfr.gov

deactivationDate

“Which of these numbers can actually take a text?”

About 32% of the numbers we look up are landline or VoIP. nanpType and dipCarrierType tell you which channel each record supports.

Source: CheckThatPhone lookup data

nanpTypedipCarrierTypedipCarrierSubType

Wiring it into the CRM

Teams that keep lists this way: call centers, collection agencies, SMS marketers, real estate teams and insurance agencies.

  1. Step 1

    Clean the list once

    Upload the CSV from the dashboard. We deduplicate, look up every unique number and hand back your original columns with the same fields as the live API, up to 1,000,000 rows. Useful for one-off scrubs, list QA and pre-import audits.

  2. Step 2

    Rescrub on a schedule

    A scheduled job (cron, dbt, Airflow, whatever owns your pipeline) pulls every number not verified in the last 90 days, calls the API on each and updates the record. A deactivation is only visible for 45 days, so lists that drive texts or calls are worth a monthly pass.

  3. Step 3

    Check at lifecycle moments

    KeepUpdateRe-verifySuspend

    Opportunity created, deal won, list added to a campaign: a lookup before the record moves keeps a stale number out of the campaign tool.

Which field updates which record status

One lookup per number; hygiene needs no add-ons.

If the response showsFieldDo this
Deactivated by the carrier deactivationDatereason Suspend the contact and store the date. reason reads "Number deactivated by carrier id <N> on <date>".
Was deactivated on an earlier scrub, active now deactivationDate Possibly a new subscriber: mark it reachable but unverified and re-confirm before outreach. For a definitive answer, the FCC Reassigned Numbers Database is the authoritative source.
Moved to a new carrier dipCarrierdipOcndipPorted Update the carrier fields. A port does not make the contact wrong, but your SMS routing assumptions may need updating.
Landline or VoIP nanpTypedipCarrierTypedipCarrierSubType = IPES Mark it call-only, or run the landline SMS check. It comes back "unsubscribe" with reason "Not a valid mobile number", which only means it cannot take a text.
On our internal blacklist blackListreason Flag it and keep it out of outreach; reason says "Blacklisted Subscriber".
The SMS verdict actiondeliverable deliverable always agrees with action. Break the "unsubscribe" results down by reason in your data-quality dashboard to see decay by cause.

A number the carrier deactivated

The carrier deactivated this number on October 2. reason carries the carrier id and date, and deactivationDate stays set until the number is reactivated or 45 days pass. Suspend the contact and store the date: it is your evidence if the number later comes back active.

1 credit, no add-ons

Highlighted fields: action, reason, deactivationDate, dipCarrier.

{
  "success": true,
  "credits_used": 1,
  "data": {
    "subscriber": "4155550102",
    "optDate": "2026-10-08T16:20:45.512Z",
    "action": "unsubscribe",
    "deliverable": "false",
    "reason": "Number deactivated by carrier id 6529 on 2026-10-02",
    "deactivationDate": "2026-10-02",
    "nanpType": "mobile",
    "blackList": "false",
    "dip": "success",
    "dipLrn": "4155550102",
    "dipPorted": "false",
    "dipOcn": "6529",
    "dipCarrierSubType": "PCS",
    "dipCarrier": "T-Mobile",
    "dipCarrierType": "mobile",
    "geoState": "CA",
    "geoCity": "san francisco",
    "geoCountry": "US",
    "timezone": "America/Los_Angeles",
    "tzOffset": 8,
    "geoSource": "area-code",
    "error": "false",
    "doNotSms": "true"
  }
}

What a rescrub costs

40,000 records, rescrubbed quarterly $40/mo 13,334 records × 1 credit = 13,334 credits. 10K plan: $30 + 3,334 × $0.003 = $40 A rolling rescrub: a third of the list (40,000 ÷ 3, rounded up) each month.
40,000 records, rescrubbed monthly $100/mo 40,000 records × 1 credit = 40,000 credits. 100K plan: $100 (100,000 included)
One-time cleanup of 20,000 records $60/mo 20,000 records × 1 credit = 20,000 credits. 10K plan: $30 + 10,000 × $0.003 = $60

One credit per number, no add-ons needed. Computed from the published plans. For lists in the millions or a daily cadence, ask us about volume pricing.

What a rescrub covers, and what's still on you

The lookup gives you

  • Carrier deactivations in the last 45 days, from data refreshed daily
  • The carrier serving the number now, from a live carrier dip, and whether it was ported
  • Mobile, landline or VoIP
  • An SMS verdict (action) and the reason behind it

Still your job

Not legal advice.

Coverage and limits

  • deactivationDate: data refreshed daily, with a 1 to 7 day lag, and entries expire after 45 days. It is not a reassigned-number check.
  • A reactivated number shows no deactivationDate, whether it went back to the same subscriber or a new one.
  • No subscriber names or owner details.
  • US and Canadian numbers. Phone numbers only: no email validation.

List hygiene: common questions

How is this different from email validation?

Email validation checks whether a mailbox accepts mail. Phone numbers get deactivated and reassigned by carriers, so a number that reached your customer last year may reach someone else today. A lookup tells you whether a carrier deactivated the number recently and which carrier serves it now; spotting a change of owner means comparing lookups over time.

Does deactivationDate tell me a number was reassigned?

No. It is the date the carrier most recently deactivated the number, and it only appears while that deactivation is recent (45 days) and the number has not been reactivated. Once it is reactivated, for the same subscriber or a new one, the field is empty again. What it gives you is evidence over time: if a number you saw deactivated later comes back active, treat it as possibly a new subscriber and re-verify before contacting.

How often should we rescrub?

Monthly for lists that drive texts or calls: a deactivation is only visible for 45 days, so a monthly pass sees each one while it is set, and the wireless industry's messaging guidelines suggest processing deactivation data regularly, for example daily (CTIA 5.1.5). A quarterly rescrub keeps carrier and line-type fields current but can miss deactivations that come and go between runs.

Does deliverable "false" mean the number is dead?

No. deliverable agrees with action, which is a verdict for text lists, so every landline comes back "false" with reason "Not a valid mobile number". A dead number is one with a deactivationDate; the reason then reads "Number deactivated by carrier id <N> on <date>".

Will this clean my emails too?

No. CheckThatPhone validates phone numbers only, so the email column needs its own tool.

Rescrub your CRM this month

One credit per number. Upload a CSV, or schedule the API.