Klaviyo determines a contact's location when syncing a billing address for the contact; if a contact hasn't purchased, their location is determined based on IP geolocation.
When someone clicks through a Klaviyo email, subscribes via a Klaviyo sign up form, or are otherwise captured by our web tracking snippet, we will identify the person and use the IP they are on to set his/her location. This is called IP geolocation.
Although IP geolocation is used as the industry standard, it can sometimes be inaccurate. Here are a few reasons you might see discrepancies between a contact's IP geolocation and where they actually are:
- We check someone's IP whenever they open an email or are captured by our web tracking snippet; if someone is in China when they open the email, their IP will reflect this, even if their typical location is in California.
- IPs are not static, and the location affiliated with an IP is thus also not static; this makes IP geolocation imperfect.
The above note is most relevant when you may want to schedule a campaign that sends to each recipient at, say, 2PM in his/her own timezone. Depending on where a recipient was the last time he/she opened an email or opted-in via a sign up form, it's possible that the timezone Klaviyo has recorded for a recipient at send time will not be the same timezone the recipient is in when he/she receives your next campaign.
Additional situations where we won't be able to get accurate IP data from email open events:
- If the email open event, when tracked, goes through a proxy; this is true of emails opened in Gmail
- If the email open event is synced to Klaviyo through an integration, like MailChimp; in this case, the IP we assess will be a MailChimp server IP and not the actual email recipient's IP
Update Location Information Yourself
If you would like to update any location-related properties for one or more Klaviyo profiles -- either by manually importing this location data or using the API -- you will need to reference the relevant "special" property name used by Klaviyo:
- $city: city they live in
- $region: region or state they live in
- $country: country they live in
- $zip: postal code where they live
Most notable here is the "$" before the property name -- all special properties contain the "$" prefix.