Incorrect Member Signup Country on Ghost — Any Fix?

Hi everyone,

On my self-hosted Ghost site, the country shown for new member signups is always incorrect. Users from Türkiye, the US, or Asia show up as being in random countries or different continents.

This has been happening for years—first on Ghost(Pro), and now on self-hosted—so it seems like a deeper issue in how Ghost resolves location from IP. All our other tools (InfoIP, FingerprintJS, FullStory, Tinybird) detect the correct country.

We even tested this ourselves using a static IP in Türkiye, with no VPN, no DNS change, no proxy. Ghost said we were in Croatia. On another site, it said we were in Italy.

So the flaw appears to be inside Ghost’s own IP → country mapping or how it reads proxy headers.

Has anyone figured out how Ghost determines member location or how to correct this?

Thanks

Hello,

How is your current setup? Do you have a reverse-proxy in front of your Ghost site? Does it pass x-forwarded-for headers to Ghost?

You can also check members table on your DB and look at geolocation column. That column show complete JSON response from the service Ghost uses for parsing geolocation data. You can check if IP addresses there are correct. Otherwise it will show that your Ghost instance can’t see visitor IP addresses.

Another thing you can do to test underlying service that Ghost uses. Go to https://get.geojs.io/v1/ip/geo.json and check if it returns correct country information for your IP address.

1 Like