Support and social

Check email domains, links and website contacts in Sprout Social

Check the email addresses attached to the people and leads you work with in Sprout Social, and see which sit on a free mailbox, a throwaway domain or a role address.

Why the data matters in Sprout Social

In Sprout Social the people on the other end of a conversation are mostly handles, and an email address only appears when someone hands it over in a message, a form or a lead capture. Those addresses are typed by hand in a hurry and often point to disposable domains or shared inboxes. If they flow on into a follow-up campaign or a customer record unchecked, the team reports on contacts that cannot be reached.

What LookValid checks

LookValid checks for Sprout Social
ProductWhat it does hereCredits
Email Domain CheckChecks the domain behind an address for mail servers, SPF and DMARC records and returns a good, risky or undeliverable signal. It never contacts the mail server, so it cannot confirm that a mailbox exists. Flags disposable domains, free mailbox providers and role addresses such as info@, so a team can tell a personal lead from a shared inbox.1 credit per address checked
Link Safety CheckChecks the domain of a link a customer posts against a published list of reported malicious domains. A link on no list is not proof it is safe.1 credit per URL checked (a check that cannot run is free)
Website Contacts ScraperReads the public pages of a company domain and returns the emails, phone numbers and social profile links it publishes, for enriching a lead that gave only a website.10 credits per domain with contacts found

Connect it in four steps

  1. Register for LookValid and add a key in the dashboard under API keys.
  2. Set the key as the LOOKVALID_API_KEY environment variable of the job that runs the script, beside the Sprout API token it uses (created under Settings, Global Features, API in Sprout; the account needs a plan with API access), and keep both out of the files the script reads.
  3. For each address call the email domain check endpoint; a found:false row goes to a review list, and an error answer stops the run with the returned code and fix.
  4. Write email_signal, is_disposable_domain and is_role_address as new columns beside each lead, then filter the leads you hand to the follow-up campaign on them.

A Python script you run on a schedule that reads message data from the Sprout API Messages endpoint, or leads you export from your own reporting, and checks each email address it finds. The call is POST https://YOUR_API_HOST/v1/email-domain-check and costs 1 credit per address checked.

check_social_lead_email.py
import json
import os
import urllib.error
import urllib.request
​
API_URL = "https://YOUR_API_HOST/v1/email-domain-check"
​
​
def check_social_lead_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"),
        "is_disposable_domain": result.get("data", {}).get("disposable"),
        "is_role_address": result.get("data", {}).get("role_account"),
    }
Where each response field goes in Sprout Social
Response fieldGoes into
data.deliverability_signalemail_signal
data.disposableis_disposable_domain
data.role_accountis_role_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

To avoid writing a script, use an automation platform that can read the places you collect leads, and add a generic HTTP request step that posts each address to the email domain check endpoint. Map the signal and the disposable flag back to the record that holds the lead. The step needs no dedicated app, only the endpoint URL, your key in a header and a JSON body.

REST and MCPOne shared credit balance

Questions

What does checking one address cost in credits?

The amount per check is on the pricing page, and it is the same whether the lead came from a message or a form.

Does a good signal mean the mailbox exists?

No. The check is at domain level: mail servers, SPF, DMARC and the disposable, free and role flags. It never talks to the mail server, so it cannot confirm a particular mailbox.

Where is the key stored for a scheduled script?

In the environment of the machine or scheduler that runs it, read at run time as LOOKVALID_API_KEY, apart from the Sprout API token and never written into the lead files.

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