---
title: "Validate contact data in Saleshandy"
url: "https://lookvalid.com/integrations/saleshandy.md"
canonical_url: "https://lookvalid.com/integrations/saleshandy"
last_updated: "2026-10-22"
type: "how-to"
summary: "Run a shell job over a prospect file and add an address check column before you import it into Saleshandy as custom prospect fields."
related: ["https://lookvalid.com/integrations.md", "https://lookvalid.com/docs/api/email-domain-check.md", "https://lookvalid.com/docs/quickstart.md"]
---

# Validate contact data in Saleshandy

Run a shell job over a prospect file and add an address check column before you import it into Saleshandy as custom prospect fields.

Saleshandy imports prospects in bulk and keeps extra columns as custom prospect fields, so whatever sits in the file goes into every sequence that uses it. A single import with throwaway domains and shared inboxes mixed in lowers reply rates for everyone who works from that list, and fixing it afterward means finding the rows one by one.

## What LookValid checks

- [Email Domain Check](https://lookvalid.com/products/email-domain-check.md): Marks each prospect address as good, risky or undeliverable from its domain: mail servers, SPF and DMARC. It never contacts the mail server, so it cannot confirm that a mailbox exists. Separates free mailbox providers and role addresses such as info@ from company addresses, so you can build one sequence for each group. (1 credit per address checked)
- [Website Contacts Scraper](https://lookvalid.com/products/website-contacts-scraper.md): Reads contact details that a company publishes on its own site, which can fill an empty email column with an address the company itself lists. (10 credits per domain with contacts found)
- [Domain Age](https://lookvalid.com/products/domain-age.md): Returns when a prospect domain was registered, which flags brand new domains in a list before it is imported. (2 credits per registered domain (unregistered domains are free))

## Connect it in four steps

1. Create a LookValid account and create an API key on its dashboard.
2. Export the key as LOOKVALID_API_KEY in the shell that runs the job, and keep your Saleshandy key, created under Settings then API Key and shown only once, in its own variable.
3. Run the script on each address in the file: it posts to the email-domain-check endpoint, prints null when the lookup found no result and stops with the error code and fix when the API refuses the call.
4. Add the three values as columns in the file, create matching prospect custom fields in Saleshandy, and import with the columns mapped so the values land on each prospect.

a shell job that reads the prospect file row by row before you import it The call is `POST https://YOUR_API_HOST/v1/email-domain-check`.

```bash
#!/bin/sh
# Usage: check_saleshandy_row.sh <value>
set -eu
jq -n --arg value "$1" '{"email": $value}' \
  | curl --fail-with-body -sS -X POST "https://YOUR_API_HOST/v1/email-domain-check" \
      -H "Authorization: Bearer $LOOKVALID_API_KEY" \
      -H "Content-Type: application/json" \
      -d @- \
  | jq 'if .error then ((.error.code + ": " + .error.fix + "\n") | halt_error(1)) elif .found then {"Address signal": .data.deliverability_signal, "Free provider": .data.free_provider, "Role mailbox": .data.role_account} else null end'
```

| Response field | Goes into |
| --- | --- |
| `data.deliverability_signal` | Address signal |
| `data.free_provider` | Free provider |
| `data.role_account` | Role mailbox |

## Without code

Saleshandy takes prospects through an API and through automation platforms. In a platform with a generic HTTP request step, place one step before the Saleshandy step that sends the prospect address to the email-domain-check endpoint with your key in a bearer header, and map the answer into the custom fields on the prospect that you add.

## Questions

### How much does it cost to check a whole prospect file?

Every address is one lookup that draws credits from your LookValid balance. Multiply by the row count using the amount on the pricing page.

### Will the check remove bad prospects for me?

No. It adds columns and you decide which rows to keep, split or drop. It reads the domain and cannot confirm that a mailbox exists.

### Where does the key go for a shell job?

In the LOOKVALID_API_KEY variable of the shell session or the scheduler that runs the script. Saleshandy has its own key, shown once at creation, which goes in another variable.

## Sources

- [Saleshandy help: Saleshandy API](https://docs.saleshandy.com/en/articles/8154265-saleshandy-api), read 2026-10-18
- [Saleshandy developer documentation](https://developer.saleshandy.com), read 2026-10-18

## Related

- [LookValid integrations](https://lookvalid.com/integrations.md)
- [Email Domain Check reference](https://lookvalid.com/docs/api/email-domain-check.md)
- [Quickstart](https://lookvalid.com/docs/quickstart.md)
