Quick fixes for common issues
The GeoSwap script isn't loading or doesn't seem to be doing anything. Here's what to check:
The GeoSwap script should be in your page's <head> or just before </body>. Open your browser's developer tools (F12), go to the Elements tab, and search for "geoswap" to confirm it's there.
Check that the data-account attribute matches your workspace ID. You can find the correct snippet in Settings → Install in your dashboard.
Go to Settings → Install in your dashboard and click the "Verify Installation" button. GeoSwap will check your site and tell you if the script is loading correctly.
Open your browser's developer tools (F12) and check the Console tab for any errors. Look for messages containing "geoswap" or network errors related to the script URL.
The script is loaded but your rules aren't doing anything. Walk through these checks:
Paused rules won't fire. Check that the rule's status is set to Active in the dashboard. Look for the toggle switch on the rule detail page.
If you're testing from your own location, make sure your country or region is included in the segment. Your IP might resolve to a different location than you expect, especially if you're on a VPN or corporate network.
Rules can be scoped to specific URLs or URL patterns. Make sure the rule is set to apply to the page you're testing on. Check the "Page targeting" section of the rule.
Use the Rule Simulator
The fastest way to debug is the Rule Simulator. Pick a country, device, and page URL, then click Simulate. It shows you exactly which rule matches and why \u2014 or why nothing matched.
You see the original content for a split second before GeoSwap swaps in the personalized version. This is called a "flash of unstyled content" (FOUC). Here's how to fix it:
Paste this CSS snippet in your page's <head>, before the GeoSwap script. It hides the page body for up to 3 seconds while GeoSwap loads and applies your rules. If GeoSwap fails to load, the page will still appear after 3 seconds.
<style>
/* GeoSwap anti-flicker — hides body until rules are applied */
body { opacity: 0 !important; }
</style>
<script>
// Fallback: show page after 3s even if GeoSwap hasn't loaded
setTimeout(function() {
document.body.style.opacity = '1';
}, 3000);
</script>GeoSwap automatically removes the opacity: 0 style once rules are applied, so your page appears as soon as the correct content is in place.
The visitor keeps bouncing between two pages endlessly. This happens when two rules conflict with each other.
Common cause: overlapping rules
If you have a rule that redirects A → B and another that redirects B → A, visitors will loop forever. Check your rules for circular patterns.
"Not equal to" rules are the most common source of loops. Instead of "redirect everyone NOT in the US," create explicit rules for each country you want to redirect. This prevents unexpected matches.
This option makes GeoSwap redirect a visitor only once per browser session. If they navigate back, they won't be redirected again. It's a good safety net.
Wondering if bots are skewing your numbers? They're not.
GeoSwap automatically separates bot and human traffic. Bots are never included in your main analytics metrics.
Check the Bot Intelligence tab in your dashboard for bot-specific data — which bots visited, how often, and what they accessed.
AI crawlers (ChatGPT, Claude, Perplexity) are detected and tracked separately, so you can see how AI systems interact with your site.
You added a custom domain but GeoSwap says it's not verified yet. Here's what to check:
DNS changes can take up to 48 hours to propagate, though it's usually much faster (5\u201330 minutes). If you just added the records, give it some time and try verifying again.
Make sure the TXT and CNAME records match exactly what GeoSwap shows in Settings → Custom Domains. Even a small typo or extra space will cause verification to fail.
Click the "Verify" button again after a few hours. If it still doesn't work after 48 hours, check with your DNS provider to confirm the records are published correctly.
Reach out to our team. We typically respond within a few hours.