Page tree
Skip to end of metadata
Go to start of metadata

Introduction

The DOTS Lead Validation system (LV) evaluates information customers provide and scores the data quality into pass/fail/review categories. By evaluating the information quality of a contact, online marketers can more effectively weed-out fraudulent contacts.Online fraudsters are more likely to provide inaccurate contact information because the address and phone number can be easily traced. Unlike other validation services that perform simple data checks on single variables, Service Objects Lead Validation solution is able to cross-validate that a contact's name, address, phone numbers, e-mail and IP address are all matched each other and are related to the consumer.

NOTE: The DOTS Lead Validation web service has recently been updated, and as such some of the older operations have been deprecated.  If you are still currently using the older operations of the service (ValidateLead or ValidateLead_V2) you can refer to the developer's guide below for information concerning integration, inputs, and outputs for the deprecated operations.

DOTS Lead Validation (Includes deprecated operations)

Integration

Integrating LV into your application should be easy and straightforward.  If you are using a common platform, Service Objects may already have sample code built that you can use. However, if you are using a common platform that does not already have sample code, you can ask Service Objects to build you an example. Email support@serviceobjects.com for more details.

Web Service Structure:

Web services are methods that integrate with other applications via the web and encapsulate tricky business logic. Web services are too large of a topic to cover in this document, but Service Objects has developed its web services to be as easy to integrate and as accessible as possible. 

LV is a public web service that supports SOAP, POST and GET operations, using RESTful paradigms or simple HTTP transport calls.

The host path or physical location of the web service is here:
https://trial.serviceobjects.com/lv/api.svc/help

The host path or physical location of the SOAP web service is here:
https://trial.serviceobjects.com/lv/soap.svc

A test page for the web service can be found here:
https://trial.serviceobjects.com/lv/ 

The location of the WSDL, or Web Service Definition Language document, is here (This is also accessible via the "Service Definition" link.):
https://trial.serviceobjects.com/lv/soap.svc?Singlewsdl

This XML is the definition of the web service, meaning its inputs, outputs, operations, and the like. Most likely, you will have another tool read this WSDL and make the operations available to you in your application. Whenever your utilities or IDE asks for a WSDL path to LVI, you can provide this one.  Every web service has operations that it offers to subscribers – methods that do different work and return different output. Lead Validation has 

Code Snippets




Lead Validation C# Code Snippet
try
{
    //Will Us the endpoing with the "Primary" name in the web.config
    wsClient = new LVSoapServiceClient("Primary");
    response = wsClient.ValidateLead_V3(FullName.Text, Salutation.Text, FirstName.Text, LastName.Text, BusinessName.Text, BusinessDomain.Text, BusinessEIN.Text, Address1.Text, Address2.Text, Address3.Text, Address4.Text, Address5.Text, Locality.Text, AdminArea.Text, PostalCode.Text, Country.Text, Phone1.Text, Phone2.Text, Email.Text, IPAddress.Text, Gender.Text, DateOfBirth.Text, UTCCaptureTime.Text, OutputLanguage.Text, TestType.Text, LicenseKey.Text);
    if (response == null || (response.Error != null && response.Error.TypeCode == "3"))
    {
        throw new Exception();
    }
}
catch
{
    wsClient = new LVSoapServiceClient("Backup");
    response = wsClient.ValidateLead_V3(FullName.Text, Salutation.Text, FirstName.Text, LastName.Text, BusinessName.Text, BusinessDomain.Text, BusinessEIN.Text, Address1.Text, Address2.Text, Address3.Text, Address4.Text, Address5.Text, Locality.Text, AdminArea.Text, PostalCode.Text, Country.Text, Phone1.Text, Phone2.Text, Email.Text, IPAddress.Text, Gender.Text, DateOfBirth.Text, UTCCaptureTime.Text, OutputLanguage.Text, TestType.Text, LicenseKey.Text);
}


Lead Validation Java Code Snippet
ContactInternational wsResponse = null;
LVSoapServiceLocator locator = new LVSoapServiceLocator();
locator.setDOTSLeadValidationInternationalEndpointAddress("http://trial.serviceobjects.com/LV/soap.svc/SOAP");
ILVSoapService lv = locator.getDOTSLeadValidationInternational();
DOTSLeadValidationInternationalStub soap = (DOTSLeadValidationInternationalStub)lv;
soap.setTimeout(20000);
try 
{
	wsResponse = soap.validateLead_V3(FullName,Salutation,FirstName,LastName,BusinessName,BusinessDomain,BusinessEIN,Address1,Address2,Address3,Address4,Address5,Locality,AdminArea,PostalCode,Country,Phone1,Phone2,Email,IPAddress,Gender,DateOfBirth,UTCCaptureTime,OutputLanguage,TestType,LicenseKey);
	if (wsResponse == null ||(wsResponse.getError() != null && wsResponse.getError().getTypeCode().equals("3")))
	{
		throw new Exception();
	}
}
catch (Exception ex)
{
	//Use backup URL here i.e. wsbackup.serviceobjects.com when a production key is purchased
	locator.setDOTSLeadValidationInternationalEndpointAddress("http://trial.serviceobjects.com/LV/soap.svc/SOAP");
	ILVSoapService lvBackup = locator.getDOTSLeadValidationInternational();
	DOTSLeadValidationInternationalStub soapBackup = (DOTSLeadValidationInternationalStub)lv;
	soap.setTimeout(20000);
	
	wsResponse = soapBackup.validateLead_V3(FullName,Salutation,FirstName,LastName,BusinessName,BusinessDomain,BusinessEIN,Address1,Address2,Address3,Address4,Address5,Locality,AdminArea,PostalCode,Country,Phone1,Phone2,Email,IPAddress,Gender,DateOfBirth,UTCCaptureTime,OutputLanguage,TestType,LicenseKey);
}



Lead Validation C# Rest Code Snippet
ContactInternational response = null;
//In the event that a production key is purchased, the primary url should point to ws.serviceobjects.com and the backupURL should be pointing to wsbackup.serviceobjects.com
try
{
    string primaryURL = "https://trial.serviceobjects.com/lv/api.svc/XML/ValidateLead_V3?FullName=" + FullName.Text + "&Salutation=" + Salutation.Text + "&FirstName=" + FirstName.Text + "&LastName=" + LastName.Text + "&BusinessName=" + BusinessName.Text + "&BusinessDomain=" + BusinessDomain.Text + "&BusinessEIN=" + BusinessEIN.Text + "&Address1=" + Address1.Text + "&Address2=" + Address2.Text + "&Address3=" + Address3.Text + "&Address4=" + Address4.Text + "&Address5=" + Address5 + "&Locality=" + Locality.Text + "&AdminArea=" + AdminArea.Text + "&PostalCode=" + PostalCode.Text + "&Country=" + Country.Text + "&Phone1=" + Phone1.Text + "&Phone2=" + Phone2.Text + "&Email=" + Email.Text + "&IPAddress=" + IPAddress.Text + "&Gender=" + Gender.Text + "&DateOfBirth=" + DateOfBirth.Text + "&UTCCaptureTime=" + UTCCaptureTime.Text + "&OutputLanguage=" + OutputLanguage.Text + "&TestType=" + TestType.Text + "&LicenseKey=" + LicenseKey.Text;
    string backupURL = "https://trial.serviceobjects.com/lv/api.svc/XML/ValidateLead_V3?FullName=" + FullName.Text + "&Salutation=" + Salutation.Text + "&FirstName=" + FirstName.Text + "&LastName=" + LastName.Text + "&BusinessName=" + BusinessName.Text + "&BusinessDomain=" + BusinessDomain.Text + "&BusinessEIN=" + BusinessEIN.Text + "&Address1=" + Address1.Text + "&Address2=" + Address2.Text + "&Address3=" + Address3.Text + "&Address4=" + Address4.Text + "&Address5=" + Address5 + "&Locality=" + Locality.Text + "&AdminArea=" + AdminArea.Text + "&PostalCode=" + PostalCode.Text + "&Country=" + Country.Text + "&Phone1=" + Phone1.Text + "&Phone2=" + Phone2.Text + "&Email=" + Email.Text + "&IPAddress=" + IPAddress.Text + "&Gender=" + Gender.Text + "&DateOfBirth=" + DateOfBirth.Text + "&UTCCaptureTime=" + UTCCaptureTime.Text + "&OutputLanguage=" + OutputLanguage.Text + "&TestType=" + TestType.Text + "&LicenseKey=" + LicenseKey.Text;
    try
    {
        //Make Call to primary URL
        response = httpGet(primaryURL);
        if (response == null || (response.Error != null && response.Error.TypeCode == "3"))
        {
            throw new Exception();
        }
    }
    catch
    {
        response = httpGet(backupURL);
    }
catch (Exception ex)
{
    //Deal with Errors Appropriately
}


Lead Validation Java Rest Code Snippet
ContactInternational Response = null;
String Request = TrialURL + "FullName=" + FullName +"&Salutation=" + Salutation +"&FirstName=" + FirstName +"&LastName=" + LastName +"&BusinessName=" + BusinessName +"&BusinessDomain=" + BusinessDomain +"&BusinessEIN=" + BusinessEIN +"&Address1=" + Address1 +"&Address2=" + Address2 +"&Address3=" + Address3 +"&Address4=" + Address4 +"&Address5=" + Address5 +"&Locality=" + Locality +"&AdminArea=" + AdminArea +"&PostalCode=" + PostalCode +"&Country=" + Country +"&Phone1=" + Phone1 +"&Phone2=" + Phone2 +"&Email=" + Email +"&IPAddress=" + IPAddress +"&Gender=" + Gender +"&DateOfBirth=" + DateOfBirth +"&UTCCaptureTime=" + UTCCaptureTime +"&OutputLanguage=" + OutputLanguage +"&TestType=" + TestType +"&LicenseKey=" + LicenseKey;
String BackupRequest = FailoverURL + "FullName=" + FullName +"&Salutation=" + Salutation +"&FirstName=" + FirstName +"&LastName=" + LastName +"&BusinessName=" + BusinessName +"&BusinessDomain=" + BusinessDomain +"&BusinessEIN=" + BusinessEIN +"&Address1=" + Address1 +"&Address2=" + Address2 +"&Address3=" + Address3 +"&Address4=" + Address4 +"&Address5=" + Address5 +"&Locality=" + Locality +"&AdminArea=" + AdminArea +"&PostalCode=" + PostalCode +"&Country=" + Country +"&Phone1=" + Phone1 +"&Phone2=" + Phone2 +"&Email=" + Email +"&IPAddress=" + IPAddress +"&Gender=" + Gender +"&DateOfBirth=" + DateOfBirth +"&UTCCaptureTime=" + UTCCaptureTime +"&OutputLanguage=" + OutputLanguage +"&TestType=" + TestType +"&LicenseKey=" + LicenseKey;
try {
	
	Response = DoHttpRequest(Request);
	if (Response == null ||(Response.getError() != null && Response.getError().getTypeCode().equals("3")))
	{
		throw new Exception();
	}
	
} catch (Exception e) {
	// TODO Auto-generated catch block
	Response = DoHttpRequest(BackupRequest);
	e.printStackTrace();
}

You can find and download full sample code to our services in various languages (PHP, JAVA and C#) by clicking here. Below is a C# version.

If you are looking for a particular integration not listed in our documentation please contact us at support@serviceobjects.com.

C#
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DOTSLV_Csh_SOAP_ValidateLeadV3.LV;
namespace DOTSLV_Csh_SOAP_ValidateLeadV3
{
    public partial class LVForm : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            statusLabel.Visible = false;
            outputGrid.Visible = false;
        }
        protected void btn_Validate_Click(object sender, EventArgs e)
        {
            ContactInternational response = null;
            LVSoapServiceClient wsClient = null;
            try
            {
                try
                {
                    //Will Us the endpoing with the "Primary" name in the web.config
                    wsClient = new LVSoapServiceClient("Primary");
                    response = wsClient.ValidateLead_V3(FullName.Text, Salutation.Text, FirstName.Text, LastName.Text, BusinessName.Text, BusinessDomain.Text, BusinessEIN.Text, Address1.Text, Address2.Text, Address3.Text, Address4.Text, Address5.Text, Locality.Text, AdminArea.Text, PostalCode.Text, Country.Text, Phone1.Text, Phone2.Text, Email.Text, IPAddress.Text, Gender.Text, DateOfBirth.Text, UTCCaptureTime.Text, OutputLanguage.Text, TestType.Text, LicenseKey.Text);
                    if (response == null || (response.Error != null && response.Error.TypeCode == "3"))
                    {
                        throw new Exception();
                    }
                }
                catch
                {
                    wsClient = new LVSoapServiceClient("Backup");
                    response = wsClient.ValidateLead_V3(FullName.Text, Salutation.Text, FirstName.Text, LastName.Text, BusinessName.Text, BusinessDomain.Text, BusinessEIN.Text, Address1.Text, Address2.Text, Address3.Text, Address4.Text, Address5.Text, Locality.Text, AdminArea.Text, PostalCode.Text, Country.Text, Phone1.Text, Phone2.Text, Email.Text, IPAddress.Text, Gender.Text, DateOfBirth.Text, UTCCaptureTime.Text, OutputLanguage.Text, TestType.Text, LicenseKey.Text);
                }
                if (response?.Error != null)
                {
                    processErrorResponse(response);
                }
                else if (response != null)
                {
                    processSuccessfulResponse(response);
                }
                else
                {
                    //If the response object is null, then the inputs used to make the call to the service should be logged for debugging purposes.
                }
            }
            catch (Exception ex)
            {
                statusLabel.Text = ex.Message + "<br/>" + ex.StackTrace;
                statusLabel.Visible = true;
                statusLabel.ForeColor = System.Drawing.Color.Red;
                statusLabel.Font.Bold = true;
            }
        }
        public void processSuccessfulResponse(ContactInternational response)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Value", typeof(string));
            dt.Columns.Add("Output", typeof(string));
            dt.Rows.Add("OverallCertainty", response.OverallCertainty);
            dt.Rows.Add("OverallQuality", response.OverallQuality);
            dt.Rows.Add("LeadType", response.LeadType);
            dt.Rows.Add("LeadCountry", response.LeadCountry);
            dt.Rows.Add("NoteCodes", response.NoteCodes);
            dt.Rows.Add("NoteDesc", response.NoteDesc);
            dt.Rows.Add("NameCertainty", response.NameCertainty);
            dt.Rows.Add("NameQuality", response.NameQuality);
            dt.Rows.Add("FirstNameLatin", response.FirstNameLatin);
            dt.Rows.Add("LastNameLatin", response.LastNameLatin);
            dt.Rows.Add("FirstName", response.FirstName);
            dt.Rows.Add("LastName", response.LastName);
            dt.Rows.Add("NameNoteCodes", response.NameNoteCodes);
            dt.Rows.Add("NameNoteDesc", response.NameNoteDesc);
            dt.Rows.Add("AddressCertainty", response.AddressCertainty);
            dt.Rows.Add("AddressQuality", response.AddressQuality);
            dt.Rows.Add("AddressResolutionLevel", response.AddressResolutionLevel);
            dt.Rows.Add("AddressLine1", (response.AddressLine1 != null) ? response.AddressLine1 : "");
            dt.Rows.Add("AddressLine2", (response.AddressLine2 != null) ? response.AddressLine2 : "");
            dt.Rows.Add("AddressLine3", (response.AddressLine3 != null) ? response.AddressLine3 : "");
            dt.Rows.Add("AddressLine4", (response.AddressLine4 != null) ? response.AddressLine4 : "");
            dt.Rows.Add("AddressLine5", (response.AddressLine5 != null) ? response.AddressLine5 : "");
            dt.Rows.Add("AddressLocality", response.AddressLocality);
            dt.Rows.Add("AddressAdminArea", response.AddressAdminArea);
            dt.Rows.Add("AddressPostalCode", response.AddressPostalCode);
            dt.Rows.Add("AddressPostalCode", (response.AddressCountry != null) ? response.AddressCountry : "");
            dt.Rows.Add("AddressNoteCodes", response.AddressNoteCodes);
            dt.Rows.Add("AddressNoteDesc", response.AddressNoteDesc);
            dt.Rows.Add("EmailCertainty", response.EmailCertainty);
            dt.Rows.Add("EmailQuality", response.EmailQuality);
            dt.Rows.Add("EmailCorrected", response.EmailCorrected);
            dt.Rows.Add("EmailNoteCodes", response.EmailNoteCodes);
            dt.Rows.Add("EmailNoteDesc", response.EmailNoteDesc);
            dt.Rows.Add("IPCertainty", response.IPCertainty);
            dt.Rows.Add("IPQuality", response.IPQuality);
            dt.Rows.Add("IPLocality", response.IPLocality);
            dt.Rows.Add("IPAdminArea", response.IPAdminArea);
            dt.Rows.Add("IPCountry", response.IPCountry);
            dt.Rows.Add("IPNoteCodes", response.IPNoteCodes);
            dt.Rows.Add("IPNoteDesc", response.IPNoteDesc);
            dt.Rows.Add("Phone1Certainty", response.Phone1Certainty);
            dt.Rows.Add("Phone1Quality", response.Phone1Quality);
            dt.Rows.Add("Phone1Locality", response.Phone1Locality);
            dt.Rows.Add("Phone1AdminArea", response.Phone1AdminArea);
            dt.Rows.Add("Phone1NoteCodes", response.Phone1NoteCodes);
            dt.Rows.Add("Phone1NoteDesc", response.Phone1NoteDesc);
            if (response.PhoneContact != null)
            {
                dt.Rows.Add("PhoneContact1Name", response.PhoneContact.Name);
                dt.Rows.Add("PhoneContact1Address", response.PhoneContact.Address);
                dt.Rows.Add("PhoneContact1City", response.PhoneContact.City);
                dt.Rows.Add("PhoneContact1State", response.PhoneContact.State);
                dt.Rows.Add("PhoneContact1Zip", response.PhoneContact.Zip);
                dt.Rows.Add("PhoneContact1Type", response.PhoneContact.Type);
            }
            dt.Rows.Add("BusinessCertainty", response.BusinessCertainty);
            dt.Rows.Add("BusinessQuality", response.BusinessQuality);
            dt.Rows.Add("BusinessName", response.BusinessName);
            dt.Rows.Add("BusinessDomain", response.BusinessDomain);
            dt.Rows.Add("BusinessEmail", response.BusinessEmail);
            dt.Rows.Add("BusinessNoteCodes", response.BusinessNoteCodes);
            dt.Rows.Add("BusinessNoteDesc", response.BusinessNoteDesc);
            if (response.InformationComponents != null)
            {
                foreach (InformationComponent ic in response.InformationComponents)
                {
                    dt.Rows.Add(ic.Name, ic.Value);
                }
            }
            outputGrid.DataSource = dt;
            outputGrid.DataBind();
            outputGrid.Visible = true;
            statusLabel.Text = "Successful Response from the LVI Service";
            statusLabel.ForeColor = System.Drawing.Color.Green;
            statusLabel.Visible = true;
        }
        public void processErrorResponse(ContactInternational response)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Output", typeof(string));
            dt.Columns.Add("Value", typeof(string));
            dt.Rows.Add("Desc", response.Error.Desc);
            dt.Rows.Add("DescCode", response.Error.DescCode);
            dt.Rows.Add("Type", response.Error.Type);
            dt.Rows.Add("TypeCode", response.Error.TypeCode);
            outputGrid.DataSource = dt;
            outputGrid.DataBind();
            outputGrid.Visible = true;
            statusLabel.Text = "An Error was returned from the LVI Service";
            statusLabel.ForeColor = System.Drawing.Color.Red;
            statusLabel.Visible = true;
        }
    }
}


ValidateLead_V3 Example Request and Response

URL Request: 
https://trial.serviceobjects.com/lv/api.svc/XML/ValidateLead_V3?FullName=Geoff+Grow&Salutation=&FirstName=&LastName=&BusinessName=Service+Objects&BusinessDomain=&BusinessEIN=&Address1=27+E+Cota+St+Ste+500&Address2=&Address3=&Address4=&Address5=&Locality=Santa+Barbara&AdminArea=CA&PostalCode=93101&Country=United+States&Phone1=8059631700&Phone2=8059631700&Email=ggrow%40serviceobjects.com&IPAddress=&Gender=&DateOfBirth=&UTCCaptureTime=&OutputLanguage=&TestType=business-noip&LicenseKey=YourKeyHere


XML Response
<ContactInternational xmlns="http://www.serviceobjects.com" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<OverallCertainty>100</OverallCertainty>
<OverallQuality>Accept</OverallQuality>
<LeadType>BUSINESS</LeadType>
<LeadCountry>US</LeadCountry>
<NoteCodes>101,102,103,106,107,108,123</NoteCodes>
<NoteDesc>
IsNamePhoneMatch,IsPhoneAddressMatch,IsNamePhoneAddressMatch,IsNameEmailMatch,IsPhoneEmailMatch,IsBusinessEmailMatch,IsPhoneAddressLocationMatchHIGH
</NoteDesc>
<NameCertainty>100</NameCertainty>
<NameQuality>Accept</NameQuality>
<FirstNameLatin/>
<LastNameLatin/>
<FirstName>Geoff</FirstName>
<LastName>Grow</LastName>
<NameNoteCodes>104</NameNoteCodes>
<NameNoteDesc>IsMaleGender</NameNoteDesc>
<AddressCertainty>100</AddressCertainty>
<AddressQuality>Accept</AddressQuality>
<AddressResolutionLevel>DPV</AddressResolutionLevel>
<AddressLine1>27 E Cota St Ste 500</AddressLine1>
<AddressLine2>Santa Barbara, CA 93101-7602</AddressLine2>
<AddressLocality>Santa Barbara</AddressLocality>
<AddressAdminArea>CA</AddressAdminArea>
<AddressPostalCode>93101-7602</AddressPostalCode>
<AddressNoteCodes>102,107</AddressNoteCodes>
<AddressNoteDesc>IsDeliverable,IsBusinessAddress</AddressNoteDesc>
<EmailCertainty>90</EmailCertainty>
<EmailQuality>Accept</EmailQuality>
<EmailCorrected>ggrow@serviceobjects.com</EmailCorrected>
<EmailNoteCodes>101</EmailNoteCodes>
<EmailNoteDesc>IsGoodMailBox</EmailNoteDesc>
<IPCertainty>0</IPCertainty>
<IPQuality>Accept</IPQuality>
<IPLocality/>
<IPAdminArea/>
<IPCountry>UNKNOWN</IPCountry>
<IPNoteCodes/>
<IPNoteDesc/>
<Phone1Certainty>100</Phone1Certainty>
<Phone1Quality>Accept</Phone1Quality>
<Phone1Locality>Santa Barbara</Phone1Locality>
<Phone1AdminArea>Ca</Phone1AdminArea>
<Phone1NoteCodes>111</Phone1NoteCodes>
<Phone1NoteDesc>IsBusiness</Phone1NoteDesc>
<PhoneContact>
<Name>SERVICE OBJECTS, INC.</Name>
<Address>27 E COTA ST STE 500</Address>
<City>SANTA BARBARA</City>
<State>CA</State>
<Zip>93101-7602</Zip>
<Type>BUSINESS</Type>
</PhoneContact>
<BusinessCertainty>100</BusinessCertainty>
<BusinessQuality>Accept</BusinessQuality>
<BusinessName/>
<BusinessDomain/>
<BusinessEmail/>
<BusinessNoteCodes/>
<BusinessNoteDesc/>
<InformationComponents/>
</ContactInternational>



URL Request: 
https://trial.serviceobjects.com/lv/api.svc/JSON/ValidateLead_V3?FullName=Geoff+Grow&Salutation=&FirstName=&LastName=&BusinessName=Service+Objects&BusinessDomain=&BusinessEIN=&Address1=27+E+Cota+St+Ste+500&Address2=&Address3=&Address4=&Address5=&Locality=Santa+Barbara&AdminArea=CA&PostalCode=93101&Country=United+States&Phone1=8059631700&Phone2=8059631700&Email=ggrow%40serviceobjects.com&IPAddress=&Gender=&DateOfBirth=&UTCCaptureTime=&OutputLanguage=&TestType=business-noip&LicenseKey=YourKeyHere


JSON Response
{"OverallCertainty":"100","OverallQuality":"Accept","LeadType":"BUSINESS","LeadCountry":"US","NoteCodes":"101,102,103,106,107,108,123","NoteDesc":"IsNamePhoneMatch,IsPhoneAddressMatch,IsNamePhoneAddressMatch,IsNameEmailMatch,IsPhoneEmailMatch,IsBusinessEmailMatch,IsPhoneAddressLocationMatchHIGH","NameCertainty":"100","NameQuality":"Accept","FirstNameLatin":"","LastNameLatin":"","FirstName":"Geoff","LastName":"Grow","NameNoteCodes":"104","NameNoteDesc":"IsMaleGender","AddressCertainty":"100","AddressQuality":"Accept","AddressResolutionLevel":"DPV","AddressLine1":"27 E Cota St Ste 500","AddressLine2":"Santa Barbara, CA 93101-7602","AddressLocality":"Santa Barbara","AddressAdminArea":"CA","AddressPostalCode":"93101-7602","AddressNoteCodes":"102,107","AddressNoteDesc":"IsDeliverable,IsBusinessAddress","EmailCertainty":"90","EmailQuality":"Accept","EmailCorrected":"ggrow@serviceobjects.com","EmailNoteCodes":"101","EmailNoteDesc":"IsGoodMailBox","IPCertainty":"0","IPQuality":"Accept","IPLocality":"","IPAdminArea":"","IPCountry":"UNKNOWN","IPNoteCodes":"","IPNoteDesc":"","Phone1Certainty":"100","Phone1Quality":"Accept","Phone1Locality":"Santa Barbara","Phone1AdminArea":"Ca","Phone1NoteCodes":"111","Phone1NoteDesc":"IsBusiness","PhoneContact":{"Name":"SERVICE OBJECTS, INC.","Address":"27 E COTA ST STE 500","City":"SANTA BARBARA","State":"CA","Zip":"93101-7602","Type":"BUSINESS"},"BusinessCertainty":"100","BusinessQuality":"Accept","BusinessName":"","BusinessDomain":"","BusinessEmail":"","BusinessNoteCodes":"","BusinessNoteDesc":"","InformationComponents":[]}



Test Types

Test type is possibly the most important piece to the Lead Validation puzzle.

Important Note!
Every call to Lead Validation operations requires a Test Type and it is VERY important that the Test Type chosen properly fits the data for the given lead.

A Test Type is like a set of instructions for how a given lead should be processed. It tells the service which components (Address, Phone, Name, Email, IP Address or Business Name) should be present, which tests should be run and how to score these tests. As such, if a test type is used that does not fit the given data, very unpredictable results may occur! 
There are a large number of Test Types available to fit most needs. The following list contains the most common test types and it is highly recommended that a test type is chosen from this list as they receive the most attention and are the most fine-tuned.
Components for Lead Validation are: Name, Address, Phone, Email, IP Address and BusinessName.

Important Note!
Please note what information is available to you and what components are needed for each test types. If a test type does not seem right for your data, please let Service Objects know and we will assist in finding one that is.

normal1p - This test type does all tests for Name, Address, Phone, Email and IP Address. It limits the user to one phone number.
normal2p - As normal1p but allows for a second input phone number. The second phone number is optional making this test type more versatile.
noip - This test type tests Name, Address, Phone, and Email but does NOT do IP Address. This type is for clients that may not be able to obtain IP Addresses from their leads or are not certain that the IP they collect comes from the original lead. This test allows an optional 2nd phone number.
n-a-p - Another common test, this type tests Name, Address, and Phone only. It does not require or use Emails and IP Addresses. It also allows an optional 2nd phone number.
full2p - This test type does all tests for Name, Address, Phone, Email and IP Address. In addition, it attempts to find alternative name/address/phone in cases where the results of the given data do not match up. Allows testing for two phone numbers.

Important Note!
This test type is significantly slower than the previous ones as it requires additional testing based on earlier results. This makes it more difficult to use in a real-time online setting.

business - This test type does all testing for Name, Address, Phone, Email and IP Address and adds an additional element, BusinessName. This type is designed to test Business to Business leads. Email and IP address are extremely useful in validating business leads so are highly recommended. However, other business test types are available. Residential leads (possible home-based businesses) receive lower scores but should still pass if the data quality is high.
businessonly - This test type does the same testing as the business type but is far harsher on non-business leads. This type is for clients who are interesting in identifying only good quality business leads and home-based businesses do not cut it. 

These test types account for the vast majority of all Lead Validation usage and most clients find they suit their needs. They have been finely tuned to deliver the best possible results and will continue to get the most attention. However, some of our users will have different needs, most likely resulting from pieces of data they are unable to provide. There are many more test types behind the scenes and Service Objects is happy to suggest a test type (or types) that will be the best fit. If a best-fit cannot be found through existing types, we can customize a test type to fit almost any data set. Please contact support@serviceobjects.com for more information.

List of Operations

ValidateLead_V3 (Recommended Operation) –  Validates business lead validation, wireless contacts and disconnected number testing in addition to many other new tests and improvements. Other new inputs include time of day, gender and date of birth. 

Operation Definitions

This section defines the input, output, and behavior of the web services in LV.

Important Note!
Lead Validation cannot determine the complete validity of a lead 100% of the time. Often, unlisted phone numbers, cell phone numbers, very rare names, rural or new addresses, and the like will cause either neutral or negative shifts in a lead's validity. LV provides a baseline guide of a lead's quality that must be taken with serious consideration.

ValidateLead_V3 (Recommended Operation)

HTTP GET Requests

URL Formats

XML:  https://trial.serviceobjects.com/lv/api.svc/XML/ValidateLead_V3?FullName={FULLNAME}&Salutation={SALUTATION&FirstName={FIRSTNAME}&LastName={LASTNAME}&BusinessName={BUSINESSNAME}&BusinessDomain={BUSINESSDOMAIN}&BusinessEIN={BUSINESSEIN}&Address1={ADDRESS1}&Address2={ADDRESS2}&Address3={ADDRESS3}&Address4={ADDRESS4}&Address5={ADDRESS5}&Locality={LOCALITY}&AdminArea={ADMINAREA}&PostalCode={POSTALCODE}&Country={COUNTRY}&Phone1={PHONE1}&Phone2={PHONE2}&Email={EMAIL}&IPAddress={IPADDRESS}&Gender={GENDER}&DateOfBirth={DATEOFBIRTH}&UTCCaptureTime={UTCCAPTURETIME}&OutputLanguage={OUTPUTLANGUAGE}&TestType={TESTTYPE}&LicenseKey={LICENSEKEY}

JSON:  https://trial.serviceobjects.com/lv/api.svc/JSON/ValidateLead_V3?FullName={FULLNAME}&Salutation={SALUTATION&FirstName={FIRSTNAME}&LastName={LASTNAME}&BusinessName={BUSINESSNAME}&BusinessDomain={BUSINESSDOMAIN}&BusinessEIN={BUSINESSEIN}&Address1={ADDRESS1}&Address2={ADDRESS2}&Address3={ADDRESS3}&Address4={ADDRESS4}&Address5={ADDRESS5}&Locality={LOCALITY}&AdminArea={ADMINAREA}&PostalCode={POSTALCODE}&Country={COUNTRY}&Phone1={PHONE1}&Phone2={PHONE2}&Email={EMAIL}&IPAddress={IPADDRESS}&Gender={GENDER}&DateOfBirth={DATEOFBIRTH}&UTCCaptureTime={UTCCAPTURETIME}&OutputLanguage={OUTPUTLANGUAGE}&TestType={TESTTYPE}&LicenseKey={LICENSEKEY}  


HTTP POST Requests

URL:  https://trial.serviceobjects.com/LV/api.svc/ValidateLead_V3

The following is an example POST request XML body:

<InternationalLead>
<Address1>String content</Address1>
<Address2>String content</Address2>
<Address3>String content</Address3>
<Address4>String content</Address4>
<Address5>String content</Address5>
<AdminArea>String content</AdminArea>
<BusinessDomain>String content</BusinessDomain>
<BusinessEIN>String content</BusinessEIN>
<BusinessName>String content</BusinessName>
<Country>String content</Country>
<DateOfBirth>String content</DateOfBirth>
<Email>String content</Email>
<FirstName>String content</FirstName>
<FullName>String content</FullName>
<Gender>String content</Gender>
<IPAddress>String content</IPAddress>
<LastName>String content</LastName>
<LicenseKey>String content</LicenseKey>
<Locality>String content</Locality>
<OutputLanguage>String content</OutputLanguage>
<Phone1>String content</Phone1>
<Phone2>String content</Phone2>
<PostalCode>String content</PostalCode>
<Salutation>String content</Salutation>
<TestType>String content</TestType>
<UTCCaptureTime>String content</UTCCaptureTime>
</InternationalLead>


The following is an example POST request JSON body:

{
	"Address1":"String content",
	"Address2":"String content",
	"Address3":"String content",
	"Address4":"String content",
	"Address5":"String content",
	"AdminArea":"String content",
	"BusinessDomain":"String content",
	"BusinessEIN":"String content",
	"BusinessName":"String content",
	"Country":"String content",
	"DateOfBirth":"String content",
	"Email":"String content",
	"FirstName":"String content",
	"FullName":"String content",
	"Gender":"String content",
	"IPAddress":"String content",
	"LastName":"String content",
	"LicenseKey":"String content",
	"Locality":"String content",
	"OutputLanguage":"String content",
	"Phone1":"String content",
	"Phone2":"String content",
	"PostalCode":"String content",
	"Salutation":"String content",
	"TestType":"String content",
	"UTCCaptureTime":"String content"
}

ValidateLead_V3 Inputs

TestType and LicenseKey are the only required inputs, if they are missing or incorrect ValidateLead_V3 will throw an error. All other inputs are optional, but missing key data without a test type that accounts for it could cause tests to fail and potentially greatly impact the resulting score. (e.g. Omitting Name will cause all name tests to fail as well as name to email tests, name to phone tests..etc...)

Name

Type

Length

Description

FullName

String

60

The contact's full name. e.g. Jane Doe

SalutationString10Salutation of the contact. Dr, Esq, Mr, Mrs etc
FirstNameString60First name of the contact. e.g. Jane
LastNameString60Last name of the contact. e.g. Doe

BusinessName

String

60

The contacts company. e.g. Service Objects

BusinessDomainString60Website domain associated with the business. e.g. serviceobjects.com
BusinessEINString60Represents the Company Tax Number. Used for Tax exempt checks for US leads.

Address1

String

60

The address 1 of the contact or business address.

Address2

String

60

The address 2 of the contact or business address.

Address3String60The address 3 of the contact or business address.
Address4String60The address 4 of the contact or business address.
Address5String60The address 5 of the contact or business address.

Locality

String

60

The city of the contact's postal address.

AdminArea

String

60

The state of the contact's postal address.

PostalCode

String

20

The zip code of the contact's postal address.

Country

String

60

The country of the contact's postal address. e.g. United States, US or USA

Phone1

String

20

The contact's primary phone number.

Phone2

String

20

The contact's secondary phone number.

Email

String

60

The contact's email address.

IPAddress

String

45

The contact's IP address in IPv4. (IPv6 coming in a future release)

Gender

String

10

Male, Female or Neutral

DateOfBirth

String

10

The contact's date of birth

UTCCaptureTime

String

10

The time the lead was submitted

OutputLanguageString20Language field indicating what language some of the output information will be.

TestType

String

20

The name of the type of validation you want to perform on this contact.

LicenseKey

String

20

Your license key to use the service. 
Sign up for a free trial key at 
https://www.serviceobjects.com/products/lead-validation-bundles/lead-verification

ValidateLead_V3 Outputs

Name

Type

Length

Values

Description

OverallCertainty

String

3

Varies

A value that represents the overall certainty that the service provided on the lead. This value will range from 0 to 100.

OverallQuality

String

10

Reject, Review or Accept

A field indicating whether the lead should be rejected, reviewed or accepted

LeadType

String

10

Residential, Business or Unknown

Indicates the classification that the service made for the lead.

LeadCountry

String

3

Varies

The country associated with the lead, given as an ISO 2.

NoteCodes

String

-

Varies

Enumerated list of descriptive notes

NoteDesc

String

-

Varies

Descriptions that correspond to the NoteCodes section

NameCertainty

String

3

Varies

Score between 0 and 100 that indicates the probability that the given name is valid.

NameQuality

String

10

Reject, Review or Accept

A field indicating whether the given name should be rejected, reviewed or accepted.

FirstName

String

60

Varies

The first name with diacritic characters.

LastName

String

60

Varies

The last name with diacritic characters.

FirstNameClean

String

60

Varies

The first name of the lead without diacritic characters.

LastNameClean

String

60

Varies

The last name of the lead without diacritic characters.

NameNoteCodes

String

-

Varies

Enumerated list of codes indicating further information about the name field.

NameNotesDesc

String

-

Varies

Enumerated list of descriptive notes that correspond to the NameNoteCodes field.

AddressCertainty

String

3

Varies

Score between 0 and 100 that indicates the validity of the given address.

AddressQuality

String

10

Reject, Review or Accept

A field indicating whether the given address should be rejected, reviewed or accepted

Address1

String

60

Varies

The validated Address line 1

Address2

String

60

Varies

The validated Address line 2

Address3

String

60

Varies

The validated Address line 3

Address4

String

60

Varies

The validated Address line 4

Address5String60VariesThe validated Address line 5
AddressLocalityString60VariesThe locality associated with the given input address. Usually corresponds to the city.
AddressAdminAreaString60VariesThe Admin Area tied with the input address. Usually corresponds to the State or Province.
AddressPostalCodeString20VariesThe Postal Code tied to the given input address.
AddressCountryString60Varies2 Character ISO code for the country
AddressNoteCodesString-VariesEnumerated list of codes indicating additional information about the given address.
AddressNoteDescString-VariesEnumerated list of descriptive notes that are associated with the AddressNoteCodes field.
EmailCertaintyString3VariesScore between 0 and 100 that indicates the validity of a given email address
EmailQualityString10Reject, Review or AcceptA field indicating whether the given email address should be rejected, reviewed or accepted
EmailCorrectedString60VariesThe email used for testing including any corrections that were made.
EmailNoteCodesString-VariesEnumerated list of codes indicating additional information about the given email address
EmailNoteDescString-VariesList of descriptions associated with the EmailNoteCodes field.
IPAddressCertaintyString3VariesScore between 0 and 100 that indicates the validity of a given IP address.
IPAddressQualityString10Reject, Review or AcceptA field indicating whether the given IP address should be rejected, reviewed or accepted
IPCountryString60VariesCountry ISO 2 code associated with the given IP address
IPLocalityString60VariesThe locality associated with the given IP address
IPAdminAreaString-VariesAdministrative area associated with the given IP address
IPNoteCodesString-VariesEnumerated list of codes indicating additional information about the given IP address
IPNoteDescString-VariesDescriptions associated with the IPNoteCodes that indicate additional information about a given IP address
Phone1CertaintyString3VariesScore between 0 and 100 that indicates the validity of the phone number in the Phone1 field.
Phone1QualityString10Reject, Review or AcceptA field indicating whether the Phone1 input should be rejected, reviewed or accepted.
Phone1LocalityString60VariesLocality associated with the given IP address
Phone1AdminAreaString60VariesThe administrative area associated with the given phone number.
Phone1CountryString3VariesThe Country ISO 2 code associated with the given phone number in the Phone1 field.
Phone1NoteCodesString-VariesNote codes containing additional
Phone1NoteDescString-VariesDescriptions that correlate with the codes given in the Note Codes field
Phone2CertaintyString3VariesNot currently used
Phone2QualityString10Reject, Review or AcceptNot currently used 
Phone2LocalityString60VariesNot currently used 
Phone2AdminAreaString60VariesNot currently used 
Phone2CountryString3VariesNot currently used 
Phone2NoteCodesString-VariesNot currently used 
Phone2NoteDescString-VariesNot currently used 
PhoneContactPhoneContact-VariesThe contact information associated with the phone number
InformationComponentsInformationComponent[]-VariesAn array of key value pairs that contain additional fields and information not defined in the original output schema of the API.


PhoneContact Type

Name

Type

Values

Description

Name

String

Varies

The contact's full name.

Address

String

Varies

The contact's postal address.

City

String

Varies

The city of the contact's postal address.

State

String

Varies

The state of the contact's postal address.

Zip

String

Varies

The zip code of the contact's postal address.

Type

String

RESIDENTIAL BUSINESS UNKNOWN

The contacts phone type.

InformationComponent

NameTypeValuesDescription
NameStringVariesThe component name of the Name-Value pair
ValueStringVariesThe component value of the Name-Value pair.

Lead Evaluation

Our evaluation output consists of Certainties and Qualities. A certainty score is a number between 0 and 100 which indicates the percentage of that the lead could be contacted with the given input information. A quality score is an accept/reject/review output. The values at which the level of quality changes (accept, review, reject) are dependant on the Test Type. A quality is given overall and by section (Name, Address, IP, Email, Phone) while the Certainty is only provided for the entire lead.

Name Notes

Email Notes

IP Notes

Phone Notes

Address Notes


General Notes


Name

Code

NameNotGiven

1

*IsBadName

2

IsTooShort

3

IsCelebrityName

4

IsGarbageName

6

IsVulgarName8
IsBogusName10

*IsGoodName

101

*IsFirstNameKnown102
*IsLastNameKnown103
IsMaleGender104
IsFemaleGender105
IsUnknownGender106


Name

Code

EmailNotGiven

1

IsBadEmail

2

IsBadSyntaxEmail

4

*IsBadDNS

5

IsBadSMTP

6

*IsBadMailBox7
IsAliasEmail10
IsBogusEmail12
IsGarbageEmail14
IsPossibleGarbageEmail15
IsDisposableEmail16
IsBotEmail17
IsPossibleSpamTrap18
IsVulgarEmail20
IsSpamEmail22
IsRoleEmail25

IsGoodEmail

101

*IsMailBoxGood102
*IsUnknownMailBox103
IsFreeEmail105
*IsBusinessEmail107


NameCode
IPNotGiven1
*IsBadIP2
IsBadSyntaxIP3
IsUnknownIP4
IsPublicProxyIP6
IsAnonymousIP7
*IsMaliciousIP9
*IsPotentiallyMaliciousIP10
IsHighRiskCountryIP11
IsMedRiskCountryIP12
IsUnexpectedCountryIP13
*IsGoodIP101
IsProxyIP102
*IsPossibleMobileDevice104


NameCode
Phone1NotGiven1
IsInvalidNumber2
*IsNotActive3
IsReserved5
IsTollFree7
*IsGoogleNumber10
*IsSkypeNumber11
*IsPrepayNumber12
*IsPortableVOIP13
IsGarbageNumber16
IsPossibleGarbageNumber17
*IsGoodNumber101
*IsActive102
IsLandline104
*IsWireless105
*IsVOIP106
*IsUnknownLineType107
IsResidential110
IsBusiness111
*IsPorted112
ChosePhone1115
ChosePhone2116


NameCode
AddressNotGiven1
*IsBadAddress2
IsBadAddressArea3
IsBadStreet4
IsBadHouseNumber5
*IsMissingSecondary6
*IsWrongSecondary7
IsNotDeliverable8
*IsVacant9
*IsReturningMail10
IsInconsistentAddress13
IsGarbageAddress14
IsIncompleteAddress15
IsHotel16
IsPrison17
IsPOBox20
IsCMRA21
*IsGoodAddress101
IsDeliverable102
IsUnknownAddress103
IsResidentialAddress106
IsBusinessAddress107


NameCode
*IsNotNamePhoneMatch1
*IsNotPhoneAddressMatch2
*IsNotNamePhoneAddressMatch3
IsNotNameEmailMatch6
IsNotBusinessEmailMatch8
*IsNotIPAddressLocationMatchHIGH20
*IsNotIPAddressLocationMatchLOW21
*IsNotPhoneAddressLocationMatchHIGH23
*IsNotPhoneAddressLocationMatchLOW24
*IsNotIPAddressLocationMatchHIGH26
*IsNotIPAddressLocationMatchLOW27
IntAddressAndIPMatchNotFound30
IntIPAndPhoneMatchNotFound34
IntAddressAndPhoneMatchNotFound38
IsNamePhoneMatch101
IsPhoneAddressMatch102
IsNamePhoneAddressMatch103
IPEmailMatch105
IsNameEmailMatch106
IsPhoneEmailMatch107
IsBusinessEmailMatch108
IsIPAddressLocationMatchHigh120
IsIPAddressLocationMatchLow121
IsPhoneAddressLocationMatchHigh123
IsPhoneAddressLocationMatchLow124
IntAddressAndIPCountryOnlyMatch130
IntAddressAndIPAdminMatchLOW131
IntAddressAndIPAdminMatchHIGH132
IntAddressAndIPLocalityMatch133
IntIPAndPhoneCountryOnlyMatch134
IntIPAndPhoneAdminMatchLOW135
IntIPAndPhoneAdminMatchHIGH136
IntIPAndPhoneLocalityMatch137
IntAddressAndPhoneCountryOnlyMatch138
IntAddressAndPhoneAdminMatchLOW139
IntAddressAndPhoneAdminMatchHIGH140
IntAddressAndPhoneLocalityMatch141
IsTaxExempt150
IsPossibleTaxExempt151


Errors

Anything that happens during a run of DOTS Lead Validation that causes it to be unable to finish its normal processing is an error. If an error occurs, something like the following will be the result instead of the normal output: 
Example:

*Error!*

  <Type>Authorization</Type>
  <TypeCode>1</TypeCode>
  <Desc>Your license key does not work on this service.</Desc>
  <DescCode>8</DescCode>


There are four error types described below. For DOTS Lead Validation, the first two will be the most common.

Error Types

Type

TypeCode

Billable

Standard for all Gen2 Web Services

Authorization

1

No

Yes

User Input

2

Yes

No

Service Objects Fatal

3

No

Yes

Domain Specific

4

Yes

No

Error type 1: Authorization

These are standard to all Generation 2 DOTS Web Services.

DescCode

Desc

0

Unknown authorization error.

1

Please provide a valid license key for this web service.

2

The daily allowable number of transactions for this license key has been exceeded.

3

The monthly allowable number of transactions for this license key has been exceeded.

4

The total allowable number of transactions for this license key has been exceeded.

5

There are not enough transactions available. Check your daily/monthly transaction limits.

6

This license key has not yet been activated.

7

This license key has expired.

8

Your license key does not work on this service.

Error type 2: User Input

These errors occur as a result of bad input. DOTS Lead Validation allows for all input fields to be optional, so the only time this error will show up is with a bad or omitted TestType.

DescCode

Desc

1

TestType is required to run Service.

2

That does not appear to be a valid TestType.

Error type 3: Service Objects Fatal

The Desc will always be the same and the DescCode has no meaning. This is standard to all Generation 2 DOTS Web Services. This is a rare error that signals either a bug in the DOTS Lead Validation service, or a Network/Connectivity issue.

DescCode

Desc

1

Unhandled error. Please contact Service Objects.

Error type 4: Domain Specific

Domain specific errors represent the normal errors seen in Service Objects services. For example, if the user is looking for an address in DOTS Address Validation and the address does not exist, a valid domain specific error is "Address not found." There are currently no domain specific errors for Lead Validation. This is because, in DOTS Lead Validation, every normal error is not an error but a valid test result that will result in a positive or negative point swing. All possible outcomes from other services are accounted for.

Frequently Asked Questions

How fast is the service?

DOTS Lead Validation is a composite service that makes use of many of Service Objects other web services. So the times will vary depending on the Test Type used, which will tell DOTS Lead Validation which other services to call. The calls are threaded and optimized to be as fast as possible. 
Currently, there are two main types of Test Types, normal (normal1p and normal2p) and full (full1p and full2p). The normal types should take about 1 second per lookup while the full types may take 2-2.5 seconds. The full types return alternative data (phone numbers, name, address) in the cases perfect matches weren't found. Unfortunately, these lookups require information from earlier calls and are therefore not as efficient as the normal test types. 
If you need to run LV in a live environment where performance is a critical factor, it is highly suggested you use the normal test types.

What does it mean when an operation ends with _V# (e.g. ValidateLead_V3)?

It is very difficult to add new functionality to our services because new inputs/outputs and changes to outputs can cause problems to our client's implementations of our services. When we create important new functionality that includes changes to the inputs or outputs, we create a new version of an older operation. Higher V# operations should always be considered superior to the older operations as they may contain important new tests not available before.

So what is this Overall Certainty score? What does it mean? How does it apply to me?

The Overall Certainty score is Service Objects' best judgment of how clean a set of contact information may be. We've seen many contacts and sets of data, and we've acquired a definitive feel for what fields are important. Then again, this is merely a subjective opinion of the contact's makeup, and you can always evaluate our comparisons using your own scoring rules. Interpreting the score is somewhat dependent on what your business needs are. If your contacts were expensive, or are worth a good deal to your customers or call centers, you will want to accept a greater range of scores. If your contacts were relatively inexpensive, or you're going through a large number of contacts, you may want to be a bit pickier and accept only a higher range of scores. If you are using our standard scoring system, lower scores generally correspond to bad phone data, and higher scores generally correspond to good phone data. Often, users will take lists and sort them by their score, contacting the leads with the highest quality scores first. Service Objects has seen that high-quality leads typically want to talk to you, and have a higher probability of picking up the phone when you call.

So does a score of X mean that a contact is good or bad?

Neither! In most cases, a low score is a bad lead and a high score is a good one, but there is no one score that fits everyone. If your business relies mostly on phone numbers, then for you the best contacts may be the ones with solid phone information. If you want to reach leads by mail then the address tests would be more important. Our scoring system is designed to fit as many of our clients as possible, but every company has different needs.

I want to score things differently. Can you change the scoring for me?

Yes. While we are attempting to come up with a scoring system that will please most of our clients, all companies have different needs. Whether it's scores that are too low, tests that aren't wanted, or inputs you don't have, we do have a solution. We can help you build a custom test type that might suit your needs more. It may be more preferable to stay with the tried and true test types, but it's possible they just don't work for your needs. 
Please contact us at sales@serviceobjects.com if you have any specific scoring needs.

Help! Yesterday this lead was giving me a score of X and today it's different! Is something wrong?

We are constantly striving to improve all of our services. Lead Validation is built upon a very complex set of tests and scores. From time to time through testing and customer feedback we will adjust scoring to account for both new tests and results we didn't expect. Most adjustments will be very minor, but it's possible we may find a new test that can with high certainty make a formerly good lead into a bad one or vice versa. 
So it should be expected that over time the scores may change some. There will likely be new Warning messages added from time to time.

Lead Validation gave a low score to a lead that I know is good!

It's more difficult to determine a lead's validity if there are issues with the phone number. If your lead is unlisted in the phone book, we cannot validate if the name given matches the reverse phone lookup's name. Other issues may be causing the lead to get a low score, such as a totally bogus address, celebrity name, or phone number that has a non-existent area code. The warnings output should give you a good idea of what went wrong with your lead.

What do you do about wireless phones?

Phone1LineOut and Phone2LineOut will tell you if the number in question was a wireless or landline number. We have found leads with wireless numbers to generally be lower quality leads, so we give them a moderate penalty. This won't generally make a lead bad, but combine a wireless number with other "problems" and the quality of the lead becomes a lot more questionable.

Do you have wireless phone contacts?

ValidateLead_V2 now returns contacts for wireless leads. Wireless coverage is not as extensive as Landline coverage but added contacts only improve the overall accuracy of the service.

Do you discern between residential contacts and business contacts?

Yes. The Phone1TypeOut and Phone2TypeOut output field returns whether the phone's address is a residential or business location. We have found that leads with business numbers are slightly less responsive, so we give them a small penalty.

Can you find whether a phone is disconnected?

Yes! The functionality for determining whether or not a phone is disconnected is built into the ValidateLead_V2 operation.

Where do you get your information?

We get our data from a mixture of public and proprietary sources. Using multiple sources of
data means we can verify that one source is not compromised or deficient.

I'm not technical, but I have a list of leads I want to validate. Can you run my list of leads for me?

Yes! We run LV batches for users quite often and would be happy to run your list for you once we discuss your needs. We also offer a free trial batch a hundred leads. Please contact sales@serviceobjects.com for details.

The Sample Code is Giving Strange Errors or is Crashing!

Most likely, the sample code cannot connect to Service Objects. Many environments will not allow you to connect out on port 80, or will clip out XML data from these requests/responses.

The easiest way to check for this is to open a browser on the machine running the sample code. In your browser, navigate to:
https://trial.serviceobjects.com/lv/

Then test the ValidateLead operation with your trial key. If you get a browser error or get no data back, then the sample code isn't able to connect, either. Contact your systems administrator to resolve why you are not able to connect to Service Objects.

Conclusion

Service Objects is proud to offer you a free trial of DOTS Lead Validation. 



Other technical questions or concerns can be directed to support@serviceobjects.com.

If you are interested in purchasing DOTS Lead Validation, please contact sales@serviceobjects.com.


  
We want to hear from you! We're always looking to improve our developer guides. 
Please email your suggestions to devguidefeedback@serviceobjects.com.

  • No labels