HULO Geo-block decides, before WordPress runs its main query, whether a visitor may use your site. Allowed visitors are untouched; refused visitors see a branded block page or are redirected.
Works on any WordPress site. With WooCommerce it also refuses add-to-cart and checkout (classic checkout and the Checkout block) for blocked visitors, uses WooCommerce’s MaxMind geolocation, and with HULO Payments it refuses payments from blocked visitors.
Rules
Never locks you out
wc-api), robots.txt and sitemaps are never blocked.SEO-safe
noindex; closures (business hours, maintenance) send HTTP 503 with Retry-After so search engines treat them as temporary.Business hours and maintenance
Geolocation without external calls
CF-IPCountry (and cf-region-code), Akamai and Fastly country headers, once you tell the plugin the site is behind that CDN. Any visitor can send these headers, so they are honoured only for requests arriving from a trusted proxy: Cloudflare’s published ranges (one tick) or the addresses you list (or the HULO_TRUSTED_PROXIES constant).GEOIP_COUNTRY_CODE, MM_COUNTRY_CODE).X-Forwarded-For the right-most address that is not one of your proxies is taken.WooCommerce and HULO Payments (optional)
Cache-safe
no-store and DONOTCACHEPAGE, so no page cache stores a block page.Headless storefronts
GET /wp-json/hulo-geo-block/v1/check returns the current visitor’s verdict (rate-limited, uncached). A server-side caller can pass the visitor’s country signed with a secret.The optional Pro add-on adds 32 more region presets (EEA, Schengen, EFTA, GCC, ASEAN, LATAM, APAC, Commonwealth and more), rules for 249 states, provinces and regions in 11 countries, a soft block that lets visitors browse with a notice but not buy, an audit log with blocked-traffic stats and a dashboard widget, a rule simulator and a weekly e-mail report. Try it free for 14 days, no card: huloglobal.com/wordpress-plugins/geo-block.
This plugin does not connect to any external service. Country lookups use request headers set by your CDN or web server, or, when WooCommerce is active, WooCommerce’s own geolocation.
If you turn on “Verify Googlebot and Bingbot by reverse DNS” (off by default), a visitor whose User-Agent claims to be Googlebot or Bingbot has their IP address looked up in DNS (a reverse lookup, then a forward lookup of the returned host name) through your server’s own DNS resolver. The answer is cached for a day. Only the visitor’s IP address is involved; no data is sent to Google, Microsoft or HULO. If you enable WooCommerce’s MaxMind integration, WooCommerce itself downloads the GeoLite2 database from MaxMind under MaxMind’s terms; that is part of WooCommerce, not this plugin.