Sales engagement

Check phone numbers, country codes and carriers in Klenty

Check each phone number before it enters a Klenty cadence and send the format and number type along as custom fields on the prospect.

Why the data matters in Klenty

Klenty cadences mix email with calls, so a phone field that holds a loose format, a toll-free line where a direct number was expected or a number from the wrong country sends a rep to the wrong step. Reps then spend dial time on numbers the numbering plan already marks as the wrong kind, and personalization built from the custom fields drifts out of sync with the record.

What LookValid checks

LookValid checks for Klenty
ProductWhat it does hereCredits
Phone Numbering-Plan ValidationNormalizes a prospect phone number to E.164 plus national and international formats, and reports the country and the number type the numbering plan assigns. It does not say whether the line is active or who the carrier is.1 credit per valid number
Country Calling CodesResolves a calling code or country name into the dialing rules that apply, which helps when a list mixes formats from several regions.1 credit per lookup (an unknown code, country or name is free)
Carrier Lookup (original carrier)For US numbers, returns the carrier originally assigned the number block, with state and rate center. A number that has since moved to another carrier still shows the original one.1 credit per lookup (numbers outside the covered numbering plan areas are free)
Phone Spam CheckReturns how many consumer complaints are on file for a number, as reports nobody has checked, so reps can see a number with a history before they call.1 credit per number with complaints on record

Connect it in four steps

  1. Create your LookValid account and an API key in the dashboard.
  2. Export the key as the LOOKVALID_API_KEY environment variable of the job that builds your Klenty prospect payloads, and keep the Klenty key in its own separate variable.
  3. Call the function with each prospect phone: it posts to the phone endpoint, returns None when the lookup found nothing, and raises with the error code and fix if the API refuses.
  4. Add the returned values to the CustomFields array of the create-prospect body as key and value pairs, for example PhoneType, then branch cadence steps on those fields.

a script that prepares prospects before it posts them to the Klenty create-prospect endpoint The call is POST https://YOUR_API_HOST/v1/phone and costs 1 credit per valid number.

check_klenty_prospect_phone.py
import json
import os
import urllib.error
import urllib.request
​
API_URL = "https://YOUR_API_HOST/v1/phone"
​
​
def check_klenty_prospect_phone(value):
    request = urllib.request.Request(
        API_URL,
        data=json.dumps({
            "phone": value,
        }).encode(),
        headers={
            "Authorization": "Bearer " + os.environ["LOOKVALID_API_KEY"],
            "Content-Type": "application/json",
        },
        method="POST",
    )
    try:
        with urllib.request.urlopen(request, timeout=30) as response:
            result = json.load(response)
    except urllib.error.HTTPError as error:
        failure = json.load(error)["error"]
        raise RuntimeError(failure["code"] + ": " + failure["fix"])
    if not result["found"]:
        return None
    return {
        "PhoneE164": result.get("data", {}).get("e164"),
        "PhoneType": result.get("data", {}).get("number_type"),
        "PhoneCountry": result.get("data", {}).get("country"),
    }
Where each response field goes in Klenty
Response fieldGoes into
data.e164PhoneE164
data.number_typePhoneType
data.countryPhoneCountry

The recipe returns nothing when the lookup finds nothing, which costs no credits for this product, and stops with the error code and fix on a failed request.

Without code

Klenty can notify a URL when a prospect starts a cadence, and an automation platform with a generic HTTP request step can receive that call without a dedicated app. Send the prospect phone to the phone endpoint with your key in a bearer header, then add a second HTTP step that posts the returned fields back as custom fields on the prospect through the Klenty API.

REST and MCPOne shared credit balance

Questions

What does checking one phone number cost?

A lookup draws credits from your LookValid balance. The pricing page shows the amount for the phone check.

Will the check tell reps if a number is turned off?

No. It reads the numbering plan, so it confirms format, country and number type. It cannot see whether the line is connected.

Where does the key live in a Klenty prep script?

In the LOOKVALID_API_KEY environment variable of the job that creates prospects. Klenty has its own credential, which should be a different variable.

Sources

LookValid is run by Meralume Labs. It is not connected to, endorsed by or a partner of any company or product named on this page, and every product name belongs to its owner.

LookValid bills every lookup in credits from one shared balance, so the same key works for each check above.

See Phone Numbering-Plan Validation