Directory / plugin
Codefaeries Country Based Content
v1.4.2 · by Long Watch Studio - Code Faeries
Country-based redirections, content visibility and price adjustments for WooCommerce, using WooCommerce's built-in geolocation.
About this plugin
Country Based Content lets you adapt your WooCommerce store to each visitor’s country. Redirect visitors, hide prices or the add-to-cart button, and adjust prices, all based on the country detected by WooCommerce’s geolocation.
Key Benefits
- Local geolocation — Uses WooCommerce’s MaxMind GeoLite2 database. When it resolves the visitor’s address, detection stays on your server: no external API call, no data sent to third parties. Otherwise WooCommerce may fall back to an external service (see “External services”).
- Applies at checkout — Price adjustments modify the actual product price, so customers pay the adjusted amount throughout the cart and checkout.
- Role exemptions — Exempt logged-in users or specific roles so administrators and shop managers always see the real store.
- Bot-friendly — Search engine and ad-platform crawlers can be exempted from redirections so advertising campaign verification is not affected.
- Clean, modular code — Loads only the features you enable.
Features
Country-Based Redirections
Automatically redirect visitors to specific URLs based on their detected country. Useful for:
- Directing customers to regional stores
- Complying with local regulations (GDPR notices, age restrictions)
- Creating market-specific landing pages
Content Visibility Rules
Control what WooCommerce content visitors can see:
- Hide Prices — Remove price display for specific countries
- Hide Add-to-Cart — Prevent purchases while keeping products visible
- Target all products, specific categories, or individual products
Price Adjustments
Modify prices based on visitor location:
- Apply percentage increases or decreases
- Add or subtract fixed amounts
- Set entirely different prices per country
- Adjustments apply at checkout, not just on display
Testing & Developer Tools
- Test simulator on each rules screen to preview which rule would match
- “Force Country” developer tool to simulate visits from any country
Pro Features
The Pro version unlocks the full potential:
Payment & Shipping Restrictions (New in 1.2.0)
Control checkout options by country:
- Restrict payment methods (hide PayPal for certain countries, show local payment options)
- Restrict shipping methods (disable international shipping, show local carriers)
- Create country groups for easier management
Currency Conversion
Display prices in visitor’s local currency:
- Automatic exchange rates (ECB reference rates, fetched from the third-party Frankfurter API when Auto-Fetch Rates is enabled, daily by default)
- 30+ currencies supported
- Manual rate override option
- Smart rounding rules
Content Shortcode
Display conditional content anywhere with [cbc_content]:
[cbc_content countries="FR,BE,CH"]
Free shipping to France, Belgium, and Switzerland!
[/cbc_content]
[cbc_content countries="US" match="exclude"]
International shipping rates apply.
[/cbc_content]
State/Region Targeting
Go beyond countries — target specific states or regions:
- US states (CA, TX, NY…)
- Canadian provinces (QC, ON, BC…)
- German Länder, Australian states, and more
- Use in shortcodes:
[cbc_content regions="US:CA,US:TX"]
Additional Pro Features
- Hide products completely from catalog and search
- Display alternative content (“Not available in your region”)
- Tax message display by country
- Priority support
How It Works
The plugin makes no remote request itself: country detection is done by WooCommerce’s geolocation. When WooCommerce’s MaxMind GeoLite2 database resolves a visitor’s address, this means:
- No external API calls — Detection happens locally on your server
- No data sent to third parties
- Fast and reliable — No dependency on external services
- 99%+ accuracy at the country level
If that database is not installed (WooCommerce downloads it only once a MaxMind license key is entered) or cannot resolve an address, and your host or CDN does not send a country header, WooCommerce falls back to an external geolocation service, which receives the visitor’s IP address. To keep detection on your server, enter a MaxMind license key in WooCommerce Settings Integration MaxMind Geolocation. See “External services” for the services concerned.
Requirements
- WordPress 6.0 or higher
- WooCommerce 8.0 or higher
- PHP 7.4 or higher
- WooCommerce geolocation enabled (Settings General Default customer location)
External services
This plugin makes no remote request itself. It asks WooCommerce’s geolocation for the visitor’s country and allows WooCommerce to use the services below, which it contacts only when neither a country header sent by your host or CDN nor WooCommerce’s MaxMind GeoLite2 database gives the country. To keep detection on your server, enter a MaxMind license key in WooCommerce Settings Integration MaxMind Geolocation: WooCommerce then downloads the database and keeps it up to date.
Country lookup of the visitor’s IP address
WooCommerce sends the visitor’s IP address to one of these services, picked at random, and tries the other if it gets no answer. The request is made by your server and carries the IP address and a User-Agent header naming WooCommerce and its version (for example WooCommerce/11.1.2). WooCommerce keeps the answer for one day, in a transient named after the IP address.
- ipinfo.io: terms of service, privacy policy.
- api.country.is (WooCommerce 11 and later): service page.
- ip-api.com (WooCommerce 10 and earlier, over plain HTTP): terms of service and privacy policy.
Public IP address of your server
Only if the country still cannot be found, typically on a local test site, WooCommerce asks one of these services for your server’s own public IP address and looks up the country of that address instead, so the services above then receive your server’s address. These four receive no visitor data.
- ipify.org: service page.
- ipecho.net: service page.
- ident.me and tnedi.me (a mirror of ident.me): privacy statement.