We’ve been scheming at this TimeWarp idea for a long time now. But in order to make that work, we first had to get geolocation data for our users’ subscribers. That took a while to collect and add to our system. For the uninitiated, here’s an article from ReadWriteWeb where they dream about the possibilities of a geolocation-enabled twitter. Here’s one trendy way twitter ended up using geo, and here’s a fun article on how Foursquare got kind of catty over Yelp’s entry into geo.
So geo’s kind of a big thing. Apparently. We just needed it to make email marketing a little better.
Anyway, after we got TimeWarp working, we decided to add geolocation as a segmentation option too. So you can now send a targeted campaign to subscribers inside a 150 mile radius around any point on the globe.
Here’s how that works…
GeoTargeting in MailChimp
Previously, in order to do any kind of location-based targeting, you’d have to add fields to your signup form asking subscribers to enter their mailing address or postal code (see: MailChimp’s ZIP code targeting). Now, you can let MailChimp automatically pinpoint their location. It’s not as perfect as getting their address, but it’s pretty close.
Here’s how you send a targeted, location-based email with our geolocation service:
1. Segment your list by specifying some region:
Choose a 50, 100, or 150 mile radius around that location.
2. We’ll show it to you on a map for verification (and for dramatic effect):
3. Click the “use this location” button, and you’re ready to go.
You might want to hit “refresh cont” on that segment to see how many people we pinpointed. For example, I’m kind of delighted to see that of my list of 25,000 MonkeyWrench newsletter subscribers, 323 are within 50 miles of me:
When I click the “view segment” link, I see lots of familiar names from business colleagues, personal friends, and customers. Made me smile.
By the way, it’s also possible to go to –> Lists –> View all members, run the very same segment criteria, then download that segment as a spreadsheet:
With the spreadsheet, I can create a new list in MailChimp. Or, I’d more likely try to do some further analysis of the list to learn more about them. For example, there’s a company called Flowtown (which integrates with MailChimp), and, if I understand this Daily Sense article correctly, can tell me which local residents are the most “influential.” I wouldn’t advocate sending them more email marketing, or emails with “hey, social dude, let’s get all social and stuff.” Don’t send stuff like that just because you know more about them (that’s creepy). But I’d probably buy them some beers, or coffee if I see them around town, or send them some extra special mailchimp shirts, or maybe even a hand-written note. That’s what “social” means, right?
We could also hold a local event just for local customers, and send them an invitation using our Eventbrite integration. Just to thank our customers and followers. We did all this manually when we took our trip to San Francisco recently and threw a little party (here are some pics, btw). But for future events, this geo thing is going to come in really, really handy.
How it all works
Whenever someone double-opts-in to your list, or opens or clicks from inside your email newsletter, they get redirected through our servers (which is how we track opens and clicks for you). As your subscribers pass through, one very common piece of information that comes with them is their IP address given to them by their ISP. We basically do a reverse lookup to find out the general region they’re in, so that you can use that information to send localized, targeted information.
Constantly Updating Geolocation
People travel, and they sometimes check email from mobile devices. Also, their ISP changes when they check email from work vs. at home. So their geolocation data changes constantly.
Yes, MailChimp tracks all that. We basically keep tabs on their location over time, and we “average” it out for you. For example, if someone normally checks their email from London, and one day she opens one of your emails from Miami, we know she’s just on vacation, and we don’t update her profile. But if, on average, most of her email interactions start coming from Miami, we will assume she’s moved, and we’ll update her geolocation profile for you accordingly.
Data is Backfilled
The nice thing about all this is we’ve been tracking geolocation data for more than a year now, and have already backfilled it for you. We’ve processed just under half a billion subscriptions. As you send more campaigns, we’ll gather more data, but you’re set to go right now.
Keep in mind that subscribers that have engaged with your emails, or double opted-in to your list, will now have geolocation data in their profiles. But if your list was imported, or if members on your list aren’t engaging, there is no geo data to track. On average, you can probably expect around 20-25% of your list to actually contain geodata.
Guess it’s a big deal
Like I was saying, TimeWarp was our real goal, because we just wanted to make email scheduling easier across all the timezones across the globe. And I’m pretty sure MailChimp Labs took this project on because someone said it would be extremely useful and cool, “but probably impossible to automate.” So it’s really nice to stumble upon this whole “geolocation” thing and then discover how fascinating it is to so many people in the “social” world.
And to be able to offer it free to email marketers is just icing on the cake!
Also see:
- ZIP code proximity targeting in MailChimp
- GigaOM interviews Gowalla CEO Josh Williams, discuss stumbling into geolocation, and the future of geolocation





- Will you update the API so we can specify an original location in mail_chimp.listSubscribe? We are currently collecting this information and supplying it as an Interest Group. It would be nice to be able to use the new built-in geotargeting features?
– How confident are you in your geotargeting? I would assume many people with dynamic IPs could be assigned an IP based on the region their ISP divides them into. For instance, the IP 75.141.192.2
– was assigned to a customer in Carson City, NV, with a ZIP code of 89703;
– belongs to Charter Communications branch in Reno; and
– maps to Vallejo, CA in HostIP, the first result for geotargeting by IP on Google.
Where would your system map that IP? I’d be afraid that it would use a Reno (or worse, Vallejo) ZIP code instead of the actual one.
Our current data maps 75.141.192.2 to Sparks, NV with a location of 39.552 lat, -119.718 long. The new geo location features don’t use a zip code at all – everything is mapped to a lat/long value and that is used in segmentation.
However, the concern you have is legitimate as there are going to be ip addresses which are mapped to wrong (possibly even wildly) locations. Unfortunately that is the nature of trying to geocode an IP address – we do re-evaluate and update our data sources every so often to try to keep on top of it as best we can, though.
Regarding updates via the API – it is very likely that we will allow it at some point. However, since we auto-update the location as Ben mentioned here, it would have a very real chance of being overridden at some point.
Thanks Jesse.
It doesn’t have to be wildly inaccurate; with the HTML5 Geolocation API, I can get a frighteningly precise coordinates on someone when they are added to the list. If you update listSubscribe to accept a location, I can pass them onto you.
We are a MailChimp agency, and we use locations to segment our lists. Even if we can’t get a geolocation on a certain patron, we can use the client’s address. That still serves our needs better than trying to geocode an IP.
I wonder if there is some sort of threshold you can use –
if Point.distance(mailChimpAverageLocation, originalAPILocation) > 45 mi:
useMailChimpLocation
else:
useOriginalLocation
What you guys are working on sounds really neat, but as long as you’re geocoding IPs, and assuming the inherent inaccuracy, I’d really like to see a manual override, perhaps with a threshold that overrides the manual override.
At this point we only geocode IP addresses. It’s completely possible more methods and options will be employed in future releases as we collect customer feedback such as this.
This is a pretty great feature.
I’m not too worried about hyper-local campaigns, but we do have some lists that have a global customer base. Is is possible to target *a country*, rather than just a radius around a location?
I have done some testing, and for a little country like Singapore it seems to work. For larger ones though, e.g. Australia, Google places the location pin in the centre of the country, which is a 150-mile radius of desert (and not many subscribers).
Is country-based targetting available or planned?
Thanks,
Ciaran
Currently the simple radius options are the only thing available. As we get settled into these new features and collect customer feedback, there are definitely chances that we’ll look at expanding the various options available.
I need the exact same thing that Ciaran described. I need to segment by country, not a specific radius. I hope it’s available soon.
On a related note, I imported my list from aweber, and they were tracking geo-location too. I have retained the ‘Country’ data in the list I imported. I there any way I can integrate that with the geo-location data that MailChimp is collecting so that when I segment on location it includes the location of my imported list as well?
Hi Jesse, it is essential for me to migrate from Aweber to MailChimp the ability to target by country.
Do you have plans to include this feature?
Sorry, it’s not on our near-term roadmap.
I am loving this new feature however I would love to know if you will be offering the “location is *not* within x miles of…”
ie. I want to send info XYZ to locals and only XY to everyone else… but there doesn’t seem to be a way to do this without sending info XY to locals twice since I can’t remove them based on location…
Thanks
Hi Ben,
Awesome feature – definitely something I was thinking about so you guys are on the ball!
I work from Melbourne, Australia and just tried to give the segmentation a go on my list – geo-targeting all members in my state only.
Unfortunately it came back as “goose egg” – no info found even though I *know* there are locals in it.
Teething issues? Or is this only working for the US right now?
Would love to see this working!
Thanks in advance,
Adam
Adam, it’s definitely not a US-only feature. Thanks for letting us know about this. Will look into it.
Adam, a slight code tweak got Australian geolocation working.
Here’s a screenshot of a query I ran on my own list for “subscribers within 150 miles of Sydney”
Thanks for letting us know about that!
Hi Ben,
Yup – looks like Geo-targeting for Oz is on now.
Only issue now is accuracy…our own Melbourne staff who are subscribed to our list our showing up as being in Sydney!
Plus some clients that we have physically worked with locally are also showing up as from interstate.
Sorry to be a pain (but accurate geotargeting is *so valuable* to us)…further tweaks needed?
Adam
Yeah, this is something you have to take with a grain of salt. It’s all based on their ISP, which seems to be in Sydney. On the other hand, there is a *tiny* bit of comfort in knowing that geodata isn’t set in stone, and that we’re constantly updating. So if they should happen to open or click your emails via another ISP (in Melbourne), we’ll update automatically. You *can* collect more data in your signup form of course. There’s also demographic info that you can pull with Flowtown’s MailChimp integration. But nothing is going to be as super accurate as collecting physical mailing address. If I tell you that we’re exploring using 3rd parties to provide more accurate geodata, I’ll get a flood of phone calls from those vendors again (please stop calling, people!), so I’m not going to say that. We just wanted to launch this, see what happens, and then if people like the feature, invest more. So far, looks like people are loving this, so stay tuned.
Thanks Ben,
Putting a postcode field on my signup form is definitely on my mind!
Thanks for the Flowtown link – I might check out their mailchimp integration as well.
Thanks again for this pleasant surprise – even though its not perfect, every little bit helps!
Adam
Hi Ben!
Thank you for mentioning Flowtown!
We’re really excited about the integration.
If anyone has feedback on tweaks or how the experience could be improved don’t hesitate to share!
Congrats on the Geolocation, super cool and super easy to implement = my kind of feature
Cheers.
Ethan
About the geocoding: lets say I am from AU and I take my laptop to the US. I happen to be on a weekly newsletter. I get the news letter and I look at it. Mail Chimp updates my location to US and then I will never get the newsletter again because the sender is always using location of 50km from Sidney.
Also I have no way of sending an email to everyone living in one state saying please attend the states annual fair, if I base it all off zip code. I might not get everyone or I might spill over into other states.
Olin, we do ongoing updates of geolocation, so when you return to AU and open the newsletter, we’d know you’re back home. But as you say, if the sender always sends to a segment of AU-only subscribers, you’ll never get another email. Nice catch.
Two things. First, our initial plan, which we delayed just to get this feature live (and until the server wrinkles were all completely ironed out), was to “average out” each subscriber’s geolocation. So one little visit to the states from AU is not going to change your profile in MailChimp. That would help with the technical loophole you point out.
Second, and more importantly imho, segmenting by geolocation should really just be for “lite” duty. In the situation you describe, where someone is ONLY sending to specific geolocations, I’d assume they need more accuracy, in which case they truly need to be segmenting based on subscriber-provided data, like ZIP/State. Geotargeting is more for non mission-critical targeting, like I describe here. Another example might be a musician who’s on tour, and might want to invite a group of local fans to some special backstage event or something. If a handful of subscribers were geo-targeted wrong by a few miles (or cities), or failed to be targeted at all, no big deal. We’re talking about a casual event.
Your other concern was being able to target someone in one state. For that, you’d segment by the “state” field in your database, which you’ve probably collected from your customers. These are things you obviously know already, but I’m just emphasizing the *intent* of our geo service vs. our standard “segment by data field.”
BTW, I’m no horseman (I have funny stories to prove that), but I instantly recognized your company name from reading Kathy Sierra’s blog. You guys know your stuff!
This is why I’d like to see an API call that allows us to submit what we know about a reader’s location, and to define rules with how that interacts with your system.
I can determine that my reader is in Carson City and supply you that data, which is more accurate than your assumption that he’s in Sparks. However, if he’s just passing through Carson and spends most of his time in Chicago, it would be nice to get that information from your system and update accordingly. There’s a lot of potential for both halves of this to work together beautifully.
There are two obvious problems here. The first is determining how inaccurate your IP-based geoloc is likely to be (so we can pick the appropriate threshold to blend in our data). We’ve already seen that it can be off by at least 35 miles, but it would be nice to have a confidence interval that says “If MailChimp thinks he’s more than 60 miles away from where you do, MailChimp is xx% likely to be right.”
The second is what our Australian friend pointed out. If I really am sending a newsletter about Carson City to someone in Chicago, is he going to read it enough times for MailChimp to catch the geotargeting error before he loses interest completely?
I’m curious whether it’s possible to generate a segment using this geolocation through the API?
Right now, it would appear that the geoin operation only works for a merge field that one is using to store user-submitted location data in. There doesn’t appear to be an option to have that geoin operation target this new geolocation data you’re collecting. I also noticed that there is no option to query a subscriber record for this data.
Am I overlooking something, or is it not possible to do this via the API? If not, is it a capability you are planning to add to the API soon?
Unless I’m mistaken, you are correct — not available via API at the current time, but yes — planned for the future. If I’m wrong, our lead API engineer will reply to my comment (after punching me in the gut).
Does this geolocation from MailChimp work if I’m sending e-mail from any other country other than US?
Yes, it works wherever you are.
Hi,
I’ve imported a list with no geo-location data at all. For the moment it says “Location: N/A”. I’ve sent out 1 newsletter but no information is collected yet.
Will this happen? Do I need to do something special?
Thanks
Hi Yann, It takes time for geodata to populate. Also, it only populates after there have been opens and clicks on your campaigns.
Hi,
I was wondering if it were possible to send to regions? For example – Send to members in Europe, Asia etc.
We tried to send to members only in Europe but had to go through an add all the countries, which is fine, but only 5 segments could be applied so we had to replicate an email 5/6 times to get all the countries we wanted in.
Will there be an easier way of targetting newsletters by regions?
Has anything been done in terms of allowing us to target countries? I really want to leave Aweber and I love what you guys are doing, but I do need to be able to segment lists by country so that I can send offers targeted to them.
I probably could find this information myself on the site if I weren’t so lazy!
This is a very helpful feature, thanks!
Any chance this geolocation info can be made available with when exporting a subscribers list?
We’d also like to add geolocation data via the API to members records. Are there any plans to add a new custom field that hold a long/lat and use then we could use the existing segment targeting rules?
I live in New Zealand and my location is out by about 444 miles. I live in The North Island, and my location shows up in The South Island.
Nice idea, but it is not going to work for me.
I have found that there is a way to set your geolocation manually in most brwosers!
http://blog.arpitnext.com/2010/06/set-latitude-longitude-geolocation-firefox.html
Sadly it involves fiddling with your bowser’s about:config so I can’t really ask the people on my list to do it, but it does make websites that use html5 geolocation work properly for me.
I thought others might be interested in this or you might like to stick this information in an FAQ somewhere
http://blog.arpitnext.com/2010/06/set-latitude-longitude-geolocation-firefox.html
Hi,
I really would like to segment on location less then 50 miles…is that possible?
We are situated in the Netherlands and that’s not really big
Hope to hear from you
Cheers,
Henk
Hi Henk, We’re geolocating people based on the IP address of their ISP. The data is not quite granular enough to go below 50 miles, I don’t think. We’re currently in the process of switching to a new IP data tool that should allow for much more accurate targeting, though.
Hi Ben,
Thanx for the reply!
Henk
Hi Ben — It doesn’t appear that geolocation data makes it into exported records. Any chance of getting this data in there? Thanks!
Stephen,
The devs were working on exported records when you suggested this, so it was easy to add columns for geo data. In our next scheduled release (Wednesday March 30th), you’ll find some new geo data in exports:
http://blog.mailchimp.com/wp-content/uploads/2011/03/geodata-export.jpg
Do you think it would be possible in the future to segment by continent or region?
E.g. Europe, US/Canada, Asia, Australia etc?
As a worldwide retailer we try to target down specific regions with offers, but at the moment are only using:
“Country in UK” and “Country not in UK” to filter our customers.
Our list has over 10,000 subscribers that receive daily and weekly campaigns. MailChimp has only captured geo-location data for 1% of our subscribers after 4-5 months. Any idea why geo-locations is not working for us?