GeoIP is NOT acceptable

Hi all.

Forgive the incendiary headline.  I do consider GeoIP to have its legitimate uses, but please, bear with me and read on.

While my primary PC updates itself to Windows 10, I feel the need to express something that has been nagging me for a few years now.  Allow me to set the stage a little, so you can get to understand the depth of my pissed-offedness.

I am a US citizen, my primary language is Englilsh, though I have some high school/college Spanish, plus a smattering of Czech, Bulgarian, UK English (two cultures separated by a common language), and German.  I live overseas, and in the past eight years I’ve lived in Bulgaria, the UK, Czech Republic, and Germany, with several trips to Ukraine and Italy.

I manage software teams for a living.  Used to be a great developer, transitioned to management, now my coding is a bit rusty but I still can tell what’s done well…and what’s not.

And right now, I have yet to see, in my entire life (which encompasses doing software for longer than the Internet has been around), someone do GeoIP correctly.

I don’t mean doing stupid shit like calling the service nine times with every page load (seen that, dumb error, and the dummy that did it couldn’t for the life of him understand why he was racking up fifteen-k bills every month).  I mean something even stupider – basic UX.

Websites, applications, customer service lines, all these are connections to your company, right?

Well, users – when they are interacting with your company – are slowly coming to the conclusion that they’re tired of dealing with different connections.  They want one thing:  a coherent conversation.  They want to talk to your company in a single, contiguous conversation, as if they were talking to one single person.  In eComm terms, this is entitled “omni-channel” – no matter what angle of approach your customer takes, the connection they are using needs to have full knowledge of their entire conversation from whatever other angles that conversation may have taken place.

Now, back to where I was going before:  GeoIP.  For those who aren’t aware of what that is, if you visit a site or use an app that connects back to its vendor’s company servers, there’s a certain kind of software that can look at the IP address your client machine is using and get a pretty good idea of where that IP is based out of.  So it will know if you’re connecting from New York, or Beijing, or London, etc.

This is generally how a site decides what language to clothe itself with when you visit.  It checks the GeoIP and decides to use that region’s site face and language based on the result.

So I, personally, end up seeing a lot of German sites lately since I live in Germany.  That’s cool, I get it.  Once I’m there, I can usually find the language preferences and change over, or switch to a US English site or something.  If it’s a site that has user registration, they usually have a place to enter preferences on my account that includes language prefs (and big shame on them if they don’t have that).

Here’s where the Stoooooopid comes in:  too many companies are ignoring those preferences.  Big companies.  Companies that should f’ing well know better.

Like Microsoft.

I bought Windows 7 Ultimate for every one of my currently four PCs, just so I could pull down and install US English keyboard layouts and language packs.  I’ve been running them for what, six years now?

And Microsoft knows this.  Every account that I have tied to my address (and I’ve had the same email address at borkedcode for over a decade now) with Microsoft is set to English.

So this morning I bite the bullet, accept the license terms (in English), and press the buttons (all in English) to update to Windows 10.

Guess what I’ve been staring at for the last twenty minutes?

“Windows-Upgrade wird durchgefuhrt”

“Ihr PC wird einige Male new gestartet, wahrenddessen konnen Sie sich entspannt zurucklehnen.”

There’s a few umlauts in there, but because I’ve got a US keyboard layout, I’m not going back to stick them in.

I can guesstimate what this means, but for chrissakes, WHY AM I SEEING THIS IN GERMAN???  It’s not like my PC didn’t have everything set up in English for starters.  It isn’t as if they didn’t know in advance, right?

Here’s another example:  I play World of Tanks and World of Warships. has some of the dippiest UX people (on par with CCP, whose “let’s reinvent the wheel just for us” rivals the US Midwest in its dingleberry attitude) around.  I originally signed up while living in Czech, probably six years ago.

Guess what language I get emails from them in?  After SIX goddamned years, numerous installs, setting my language prefs in my account profile, and so on?

You guessed it, I get Czech emails.

Talk about your dumb-shit programmers.  If it weren’t for Google Translate and Chrome’s auto-translate feature I’d be up the creek.

Now these two are sadly not unique, in fact I can think of only one firm that does get it right (sadly, it is that king of bad UI, LinkedIn).   There may be other rare unicorns that do this.

Tying this back into the omni-channel experience, this is a lot like having a conversation with someone, politely inquiring if they speak your language, and having them reassure you that yes, they do, yes, they are cool with that.

And then every second sentence out of their mouths they speak Icelandic or Norwegian and give you a funny look when you get frustrated and ask yet again for them to speak to you in English.

It is jarring, it breaks the flow of communication, and most of all, for users expecting to have a conversation with your company, it is intensely disrespectful.

So to all those firms who use GeoIP and screw it up for your customers by thinking GeoIP is the right answer for everything, allow me to spell out the logic train for you that you MUST follow if you want to get this aspect of omni-channel right.

The following user story will be told from the perspective of the company app or site.  I’ll repeat it from the user’s perspective after.

User Visit (or use of App):

  1. User first arrives, and as far as we know they are entirely anonymous.
  2. Check for our cookie – is there one?
    1. If yes, check for a language pref in it.  Use that language if there is.
    2. If not, that’s cool, put a call in to GeoIP and give them the default for their region.
    3. During their visit, if they permit us to drop a cookie, save their language pref in it if they specify one.  Otherwise, leave it to default for their region as identified in 2.B.
  3. Did the user log in using a registered account?
    1. If yes, check the account for a language pref – is there one?
      1. If yes, discard any result found in 2 and replace it with the language pref found in the account.
      2. If no, proceed as dictated by the result with 2.
  4. Did the user register an account with us during his/her visit?
    1. If yes, be sure to save the language pref determined in 2 (which might be no pref assigned if they left it as default)

Broadcast Advertising (email):

  1. Marketing begins building the broadcast list
  2. Among the addresses to send to, for each one,
    1. Does the email to which we are sending messages have an account registered with us?
      1. If yes, is there a language preference?
        1. If yes, is the message we are about to send in that language?
          1. If no, remove that email from the address list

These rules express a very simple concept:  as soon as you know who you are dealing with, or as soon as this new person tells you their preference, use the language they told you they prefer to use.  The ONLY time it is acceptable to use the GeoIP-determined default is with an anonymous user or one who has not indicated a preference.

From the user’s perspective now:

Visiting a site or using an app:

  1. I arrive at site.  Site is in local language.
    1. This is totally cool, it is expected.  If I prefer something else, I’ll go looking for the language settings.
      1. My expectation right now is that for the duration of this session, the site will retain my language pref once I set it.
        1. If you fail at this, there’s no way I’m going to trust you to keep my information or my money safe, unless you are absolutely the only supplier of whatever commodity I’m after.
    2. Site might ask me to accept a cookie.
      1. If I permit this, I now expect my language settings to be stored there so that on my next visit I won’t have to jockey around looking for language settings.
        1. (If I visit with another device, I might not know that it is cookie-driven, which will be a necessary inconvenience and I’ll have to set the language again.  However, this is expected behavior, and I won’t be upset by this as long as that other device retains some persistence if I permit cookies there too.)
          1. If you fail this, it’s going to become progressively more irritating and eventually I will stop using your site or app because I’m tired of telling you what language to use.
    3. I might register an account with the site.
      1. If I do, and if I set a language preference, I now expect you, the company, to know in all of our future dealings with me to use that langauge specified in my preferences.  That applies from now until I tell you to delete my acocunt.  It also applies if I switch my language prefs a year from now (because maybe I’m taking German classes and I’ll want to start seeing my sites in German to keep me learning more).
        1. If you fail at this, I’m going to write a long blog post about how stupid an error this is, and put it up somewhere nice and public with your company name in it so everyone I know can shake their heads and say “You’d think now that we’ve had twenty years of Internet people would get this.”

Okay.  Rant complete.  I hope the logic flows described above help you.  I expect not only will they make your relationship with your customers somewhat more productive, but they’ll also save you a little money on all the calls you’re making to the GeoIP service.

And if you’re just a user who also happens to agree with my take on this, I’d appreciate it if you’d “Like” and “share” this among your own circles.  Maybe someone in a dev department will see it, and think “Oh holy crap yeah, we really should fix that.”

Thanks for the ear.


This entry was posted in Business, IT, PC Stuff, Software and tagged , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.