I wrote about this a while back: http://www.nexustechnologiesllc.com/blog/fixing-registration-forms-country-selection/
Here's the "solution" part:
First of all, the right way to handle country selection is often to not have it at all. You need to ask yourself – “what do I need country for?” The same thing holds true for all address fields actually. If your site is not an ecommerce site, or does not ship things to users in any way, you probably don’t need their address and definitely don’t need their country. Also, if you are setting up an ecommerce site, but the site will only ship to users in a single country, again there is no need to have users enter their country. There are countless websites out there (unfortunately, even some that I have worked on) that ask for your full address for no user-centered reason whatsoever. They want that data to market to you or any other number of bogus reasons. I really wonder how many of these sites realize how many potential users they are driving away by requiring lots of data on registration that really isn’t necessary.
If it turns out that you do need country entered by your users, then here is the way that I recommend you do it:
- Use a dropdown box with all countries, listed alphabetically.
- When loading the dropdown box for a new registration, have the primary country for your website as the selected option.
- Do not include a placeholder “select country” option. There is no need because everyone will have a country, and you are already using your primary country as the selection by default.
- If a user is editing their information later, be sure to have their currently chosen country selected. I can’t count the number of times where I’ve seen this little tidbit forgotten about when reloading a form with existing data (not just countries, but any dropdown).
If you only support a limited subset of countries (e.g. you can only ship to countries in North America), then here are the changes to above that I would recommend:
- In your dropdown, include all countries that you need to support.
- Add an “Other” option.
- When this option is selected:
- Include messaging to explain that you do not currently support shipping to countries outside what is currently listed.
- Include a textbox to let them enter their country. This can provide you with valuable information as to where you want to expand next.
- Do not prevent the user from registering, unless the only reason for registration is to purchase something. And if this is the case, then I recommend you have country selection as the very first step in the registration process, maybe even on a separate screen. This way, you can save the user some time, and they will be happy(ish) that they didn’t spend a lot of time filling out a registration form only to learn that there was no point in doing so.
Another option I have been considering is something of a combination of the above:
- Use a dropdown, but only include a primary subset of countries.
- Include the “Other” option.
- Again, make sure that a textbox appears if the user chooses “Other”, so he can enter his country directly.
- Make sure that any countries you have in the dropdown box also have custom address forms set up, so you can collect the user’s address information in the manner that makes the most sense for their country.
I have not actively used this solution on a site yet, so I cannot speak to the usefulness. However, if 90% of your traffic is going to come from a small group of countries, then this could prove to be very user friendly. Be sure to only use this, however, if you really don’t need equal support for all countries, and you want to improve the user experience for your primary supported countries.