Sales engagement

Validate a list exported from Dux-Soup

A guide to checking the email addresses in a prospect list you have taken out of Dux-Soup as a CSV file, before you load it into the tool you email from.

Why the data matters in Dux-Soup

A list exported from Dux-Soup is only as clean as the contact details collected along the way: many rows have an email that was typed by the prospect, guessed or inherited from an old profile. Loading that file as it is into an email tool makes the first send bounce on throwaway domains and shared inboxes. Checking the file you own, row by row, before it goes anywhere else fixes that without touching the tool it came from.

What LookValid checks

LookValid checks for Dux-Soup
ProductWhat it does hereCredits
Email Domain CheckChecks the domain of each email in your exported file for mail servers, SPF and DMARC and returns a good, risky or undeliverable signal. It cannot confirm that a mailbox exists. Marks rows on disposable domains and role addresses such as sales@, so you can drop or separate them in the file.1 credit per address checked
Link Safety CheckChecks the website domain in a row against a published list of reported malicious domains, which is not proof that an unlisted site is safe.1 credit per URL checked (a check that cannot run is free)
Domain AgeReturns the registration date and age in days of a company domain in a row, a quick way to spot a domain registered last week.2 credits per registered domain (unregistered domains are free)

Connect it in four steps

  1. Make a LookValid account and add a key from the API keys area of the dashboard, then take your prospect data out of Dux-Soup as a CSV file on your computer. Its Funnel Flow view lets you pick a campaign and timeframe and copy all the data into a document you can save as a CSV file; open that CSV in Excel with the text import so the columns split correctly.
  2. Put the key in the LOOKVALID_API_KEY environment variable in the terminal session that runs the script, so it is never written into the exported file or the script.
  3. The script reads the exported file one row at a time and calls the email domain check endpoint with each email; a found:false row is copied out unchanged for review, and an error answer stops the run.
  4. It adds email_signal, disposable_domain and role_address as new columns in a copy of the file, which you filter before loading the list anywhere else.

A Python script on your own computer that reads the exported CSV file row by row and writes a checked copy beside it. The call is POST https://YOUR_API_HOST/v1/email-domain-check and costs 1 credit per address checked.

check_dux_export_email.py
import json
import os
import urllib.error
import urllib.request
​
API_URL = "https://YOUR_API_HOST/v1/email-domain-check"
​
​
def check_dux_export_email(value):
    request = urllib.request.Request(
        API_URL,
        data=json.dumps({
            "email": 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 {
        "email_signal": result.get("data", {}).get("deliverability_signal"),
        "disposable_domain": result.get("data", {}).get("disposable"),
        "role_address": result.get("data", {}).get("role_account"),
    }
Where each response field goes in Dux-Soup
Response fieldGoes into
data.deliverability_signalemail_signal
data.disposabledisposable_domain
data.role_accountrole_address

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

If you do not want to run a script, upload the exported file to a spreadsheet or an automation platform that can loop over rows, and add a generic HTTP request step per row that posts the email to the email domain check endpoint. Write the signal and flags into new columns of the sheet. No dedicated app is needed, and nothing connects back to the tool the file came from.

REST and MCPOne shared credit balance

Questions

How much does it cost to check a whole export?

Each row is one check at the credit price on the pricing page. The pricing page figure times your row count is the ceiling.

Does LookValid connect to Dux-Soup itself?

No. This guide only works on a file you have already exported and own. Nothing in it logs into or drives the tool.

What does the check not tell me?

Whether a given mailbox exists. It reads domain level facts only: mail servers, SPF, DMARC, disposable, free and role flags.

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 Email Domain Check