Cache and Geotargeting
By general rule page cache is NOT COMPATIBLE with geotargeting. By definition page cache is like a snapshot of all your dynamic content that it's saved into an HTML file.
That means that if you place for example a shortcode to display the user country and the first user that visits the page is from Argentina, the next user will see the cached page and will show also Argentina.
To avoid that you need to exclude that page from cache and that's how normally works in WordPress.
Cache with GeotargetingWP
On GeotargetingWP plugins we tackle page cache in different ways. The most important one is that we are compatible with a couple of cache plugins.
WP Rocket: It's 100% compatible and it's the one we recommend. By default it creates a different cache version for each country. If you need to create different cache pages for cities or states you will need to add some code in your site. You can extend this with filters for states or cities but be aware that enabling it will decrease performance in cache and more cached version of each page needs to be generated.
Extend cookies or disable them entirely
Wp Super Cache: The plugin is managed by the company behind of WordPress and it's a really solid plugin. In order to use it with our plugins you need to use PHP legacy mode and enable late INIT option. That will have the page cache run after the plugin detects the user. (Not available in all hostings)