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
| Product | What it does here | Credits |
|---|---|---|
| Phone Numbering-Plan Validation | Normalizes 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 Codes | Resolves 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 Check | Returns 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
- Create your LookValid account and an API key in the dashboard.
- 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.
- 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.
- 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.
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"),
}
| Response field | Goes into |
|---|---|
| data.e164 | PhoneE164 |
| data.number_type | PhoneType |
| data.country | PhoneCountry |
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.
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
- Klenty support: POST APIs https://support.klenty.com/en/articles/8193937-klenty-s-post-apis, read 2026-10-18
- LookValid API reference: Phone Numbering-Plan Validation https://lookvalid.com/docs/api/phone, read 2026-10-18
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.
Related pages
LookValid bills every lookup in credits from one shared balance, so the same key works for each check above.
See Phone Numbering-Plan Validation