The UK has a particularly precise postcode system, where a postcode such as BN2 1NA represents just 20 individual properties. The postcode database was created by the Royal Mail and it is sold for use by anyone whose willing to stump up the cash (why we should pay for something our taxes have created is a whole other argument). The upshot is that many websites which require an address from users will provide an ajax postcode look-up as part of the process.
However the postcode look-up is fraught with danger and is rarely implemented well. As is often the case in UX design, everything is fine until an exception is reached. I’ve created an interactive wireframe to demonstrate a successful way to integrate a postcode look-up as part of an address input scenario. This is the user flow diagram:
User flow of ajax postcode look-up for address entry
The important bits are the arrows on the edges dealing with the deviations away from the successful look-up through the middle. Commonly implementations miss out at least one of these:
- allowing users to skip the lookup altogether (maybe the user doesn’t know their postcode)
- helpfully dealing with a failed lookup (edit the postcode or skip the lookup – often databases are not kept up to date and so valid postcodes are not recognised)
- allow users to type a different postcode (their work address instead of their home address)
- deal with addresses not present in the list returned
- allow users to edit the address returned from the database
All this does raise the question: who does the postcode look-up help? Probably not the person filling out their address. Regular web users will be able to input their addresses more quickly by typing directly than through use of a postcode lookup. This is particularly true if they are using the form filling functionality available in all modern browsers and many plug-ins. Postcode lookups may well get the website cleaner data, but probably not by much. Either way, more attention needs to be given to the postcode lookup experience and flow.