Link to home
Start Free TrialLog in
Avatar of Lionel MM
Lionel MMFlag for United States of America

asked on

Address Verification

How can I go about having the address that someone enters into my web form verified as the person is entering it? I have seen this on some sites so I know its possible but don't know how? Or would it be easier/cheaper to do this before the address is imported into our system? If the latter, how would I do that? UPS now "fines" you if you do not have the exact address when you ship out a package so we need to find someway to get valid addresses into our system--it would be best if it is done on our website before it is imported into our accounting, management application (Great Plains Dynamics). Thanks.
Avatar of Scott Fell
Scott Fell
Flag of United States of America image

There is a good game to play.  You have to use a standardized address.  The USPS knows what it is, but you can't get it directly.   This is in part because large mailers like ADVO helped create bulk discounts and how to get them.   But to get the database of addresses, you have to show the USPS you already own 80% of all avail addresses in one aera, then they will fill you in with the rest.   That is not reasonable for most users and very expensive to maintain.   What is available is either software or api's you can use to input an address and get the USPS standardized address back.  It will not tell you if it is a true an address or occupied or single family or apt.  It is instead a combo of a database and algorithm that makes sure the number, prefix street name, zip are all within range.  If it is in the range, then you get back the USPS standardized version of that address.

There are multiple sources but http://www.melissadata.com/address-verification/index.htm  is  just one with both api's and software to get what you need.
Avatar of Lionel MM

ASKER

How is this used, coded into a website, hosted on a server?
Using the api, you would first save the data to your db (just to be safe), then fire something that will check the address against the api and lastly either just save the updated address to the database or first present on screen to the user the updated address for verification.
I was hoping for something that I could tie into, something I did not have to "code into" my website and also not have to import/export data into my database--I was hoping for something that would validate data as customers are entering it on the web. Any suggestions in that area?
If you don't want to code.... then you have to download  and run on desktop software.    If you want it it automatically done on the site...then you have to code.  There is no way around that.
There really is no way around not getting your hands dirty in code here for the automated stuff.  If you are using a cms like wordpress/drupal, chances are there is a plug in.http://wordpress.org/extend/plugins/contact-form-plugin/changelog/

However, this is the blind leading the blind.  These plug ins seem easy but many are the source of hack attacks.  Some may say I over state this.  But you are at the developers mercy.   Look at how many bugfix's that plug in I pointed out has.  You just have to be carful.

The other option is hiring a professional to get this done for you.  If you have been on ee and seen some experts you like, you can click on their names to view their profiles and some will have contact info.
unless you have a list, or access to such a list, which has proven addresses yo're not able to do it programatically,
reliable way to get the address is by sending a letter by (traditional) post service or knowing the person as human
you have to life with the fact, that there are things which cannot be done by computers reliable ;-)
UPS now "fines" you...
Please tell us the amount of these "fines" you expect to pay in the coming year, over and above your regular shipping costs.  It will help evaluate your options for cost avoidance.  If it's $100,000 or more, there are professional solutions and design strategies that might make sense.  Less than $50,000, forget it and pay the "fines."  Between those, it's probably a gray area.

The USPS offers address normalization as does Google and Yahoo via their geocoders.  If your application can call the USPS API or the geocoder API, you may have an inexpensive option available to you.  However it will necessitate hands-on work with software developers, and code integration with your existing systems.
> .. as does ... via their geocoders.
ah, and the reliabilty rate is exactley between 0% and 101%, is it?
no offence meant ;-)
In my experience, when the geocoders agree, the reliability is about 100%, maybe as little as 99%, but probably not less.  Out of samples that number in the thousands, I've never had a missed address when the geocoders agree on the normalized address.  And when they do not agree, the divergence is wide and obvious, and these cases are so very few (single digit percentages) that they can be handled by manual intervention.  This technology has gotten a lot better since I first used it in 2007.
>  the reliability is about 100% ..
ok, user U physically located in country X comes (virtually) from provider in country Y and uses a proxy in country Z and gives an address in country Z
then the geocoder gives me 100% reliable address based on proxy's IP, agreed!
you can make thing more obfuscated if the proxy's reverse IP points to a different location
<sarcasm reality>
I don't see any problem in reliability ;-)
this technology is snake oil, which is 100% reliable
but everyone is free to build her own mind and believe in anything (at least where I'm living:)
</sarcasm reality>
I'm not sure how this conversation got into geocoding.  But the geocoding api's can do most the trick.  However, api's = getting dirty with coding and that is part of the problem.  There is software such as postalSoft that can clean up your list on the desktop.  However, to do this automated via web form you need an api. One of many is the link I provided to melissadata.  

I have run a medium sized direct mail operation for 10  years.  I can tell you there is no such thing as 100% accuracy.  First the address has to be matched.  Match rates for a clean database are typically in the 80% to 95% range where the 80% means the software couldn't detect because of things like missing zip, 100 maple st vs 100 South maple when there is both a 100 south and 100 north etc.    

The api's for geocoding will not be as accurate as those for address verification and can not be used by the USPS for bulk mail discounts unless they are packaged with mailer software that is USPS certified.  But if you are looking for a free way to one off and lesson your chances of being fined then it is an option.  But to get the actual bulk mail discounts, the address has to be run through a certified address verification system that also does the presort.  By sorting, this is not simply putting something in order of zip.  It either is in line of travel or walking step.   The only way to get a walking step sort is by physically owning I think 80% of the data, proving to the USPS you own that data for the zip, then they give you the other 20%.  This gives you even greater discounts if you are mailing to the entire carrier route.  Unless of course you are mailing to a rural route you can simply mark the mail to rr X 00000 and the usps gives you the numbers.

It has been some time since I was in that business but I don't know what you mean by fines other then if you are trying to send things out with bulk mail discounts.  I seem to remember the mail software and data was in the $3,000 to $10,000 range for a local area.  Nationally will be much more.   If you use a mail house to do your mailing, you don't really have to worry about any of this as the mail house will take care of this for you.  But the better the address is from the start the better  your chance the mail will reach the home.  That is where the melissadata et el data comes in.  That will give you your best match.  The geo location api's use a different algorithm but will also give you a clean address and fairly accurate.  Google has a daily  limit but unless you are doing 1000's each day you don't have to worry.  

To recap:
Geolocation api's will help clean your data but not at the same accuracy as an api that is meant specifically for address verification.  
Even using these one off verification systems, you need to run the entire mailing database through an address verification system certified by the USPS.  
Your mail house will do the final verification for you
Expect true match rates in the 80% to 95% range
The api's need to be coded.  As ray pointed out, if you get $xxx in fines yearly it is worth at least that much to hire somebody to do the coding for you
As a side note, there are plenty of places to find people to code for you.  Many of the ee experts here have contact info in their profiles where you can get actual coding  help beyond advice.  You can also choose an api and try and ask another question here on ee and we can help guide you on implementing the api on your own.
Thanks for all the input (and information overload-;); I am now more unsure as what is best to do. One thing to clear up is that currently when you send out packages using UPS (and this is the only carrier we have this issue with); we manually, address by address go online and verify the accuracy of the address https://www.usps.com/ and use their zip or address look up. We are a very small company (during our peak season we would send out about 50 UPS boxes per day, but only for the months of February to May). If we send out a package by UPS and the address is not 100% correct we get charged from $5 to $15 per package, so it is not the huge amounts discussed here. I was hoping there was a quick and easy way to reduce the real cost, the time wasted by our employees verifying these addresses; but it sounds like there is not and that the expense of the options and solutions mentioned here don't warrant their expense, unless I am misunderstanding what I have read--thank you.
ASKER CERTIFIED SOLUTION
Avatar of Scott Fell
Scott Fell
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
You can try and do this on your own by posting a new specific question here on ee.

1) Make a test form of your current sign up page

2) Let us know which technology you use such as php, asp or something else

3) take each step in pieces, you may need to break this out into multiple questions.

4) In short, a) somebody enteres data to the form.  b) data is saved to db c) address verification api is called c) if bad address, website displays error and asks customer to correct d) Corrected data is saved to db.
Thanks--I have already looked into this; this is where I started out and agave me the idea to ask how to integrate it into my website, which is a Yahoo merchant Account. We already have UPS and Yahoo working together to validate addresses but it only validates and address and city to the correct zip code but if you have an error in the actual address (1234 lee drive, apt 26) and there is something wrong there there integrated validation does not catch that. I agree with you on the numbers; it clear to me but we are not actually been fined this because our users verify each address. It is a potential fine but the time the users use it much harder for me to quantify and turn into as strong an argument.

Correction the the boxes--its 50 boxes 2 times a week not everyday - my apologies
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Thanks I will check those out
You can form a validation URL and look at the resulting message.  Here is an example of a invalid address URL.  I misspelled the street name and omitted the zip code.
https://tools.usps.com/go/ZipLookupResultsAction!input.action?resultMode=0&companyName=&address1=1421+vangard+pl&address2=&city=durham&state=NC&urbanCode=&postalCode=&zip=
Here's the resulting message:

Here's the full address, using standard abbreviations and formatting...
1421 VANGUARD PL
DURHAM NC 27713-2048

If I supplied a correct street name, the result would be the same as typed with zip+4 code supplied.

Here's the full address, using standard abbreviations and formatting...
1421 VANGUARD PL
DURHAM NC 27713-2048

If I really screwed up the address (wrong number)
https://tools.usps.com/go/ZipLookupResultsAction!input.action?resultMode=0&companyName=&address1=1221+vanguard+pl&address2=&city=durham&state=NC&urbanCode=&postalCode=&zip=

The resulting message clearly indicates an error:

You entered:
1221 VANGUARD PL
DURHAM NC

Unfortunately, this address wasn't found.
Please double-check it and try again.
aikimark
Can that be automated? Because this is what our users are doing now.
@Ray_Paseur
and
@whoeverisinterrested
> .. understood the question to be about the physical delivery address.
assuming you want to deliver somthing and expect to get paid for the somthing and/or the delivery, how does it make a difference according my complains (even the sarcastic ones)?

either we're talking about a virtual world which includes the address and the something to deliver, then my concerns are irrelevant
or we're talking about somthing which cost money at the end, then there is no way to map the virtual world (including the data entered there) to the real word (physical address) without human intervention

according the discussion and suggestions so far, I'm still not sure about which world we're talking ...
You should be able to automate this.  Your code would need to concatenate the text supplied by the user into a URL.  Retrieve the results and look for:
<div id="results-wrapper">

If, inside that DIV, you find <div id="error-box">, then you can prompt the user to correct the address.

If, inside that DIV, you find <div id="results">, then you can pick up the zip+4 code.

Alternatively, you can allow the user to supply a zip+4 code and then confirm the resulting address.
This was not the exact solution I was looking for but I was able to find additional ways to integrate existing features of Yahoo Stores with UPS and at least get some validation which was better than what I had before. Thanks.