Àpèjúwe
Crovly is a privacy-first captcha service powered by Proof of Work. Unlike traditional captchas that rely on image puzzles (easily solved by AI) or invasive tracking, Crovly makes the visitorÌtumọ̀ Yorùbá: ’s browser do computational work to prove itÌtumọ̀ Yorùbá: ’s not a bot.
How it works:
- Your visitorÌtumọ̀ Yorùbá: ’s browser solves a small cryptographic puzzle (Proof of Work)
- Browser fingerprint and environment signals are collected (as a hash — no personal data stored)
- Behavioral analysis detects automated patterns (mouse, keyboard, scroll)
- A composite score determines if the visitor is human
Key features:
- Privacy-friendly — No cookies, no cross-site tracking
- No image puzzles — Invisible to legitimate users
- Resistant to AI vision attacks — Proof of Work cannot be solved by image recognition
- IP binding — Tokens are bound to the solverÌtumọ̀ Yorùbá: ’s IP address
- Adaptive difficulty — Suspicious visitors receive harder challenges
- 22+ integrations — Works with major WordPress form plugins
- Lightweight — Widget is under 25KB gzipped, zero dependencies, 42 languages
Supported integrations:
- WordPress login, registration, lost password, comments
- WooCommerce (checkout, login, register, lost password, pay for order)
- Contact Form 7
- WPForms
- Gravity Forms
- Elementor Pro Forms
- Ninja Forms
- Fluent Forms
- Formidable Forms
- Forminator
- Jetpack Contact Form
- Divi (contact form, login)
- BuddyPress (registration, activity)
- bbPress (topics, replies)
- Ultimate Member (login, register, password reset)
- MemberPress (checkout, login)
- Paid Memberships Pro
- Easy Digital Downloads
- Mailchimp for WordPress
- GiveWP
- wpDiscuz
- wpForo
- WordPress Multisite signup
Shortcode & PHP support:
Use [crovly] shortcode in any page or post, or call crovly_render() and crovly_verify() in your theme templates.
External services
This plugin relies on the Crovly captcha service to function. It connects to two external endpoints:
1. Crovly Widget CDN (get.crovly.com)
The plugin loads the JavaScript widget from https://get.crovly.com/widget.js on any page that contains a protected form. The widget runs Proof of Work in the visitorÌtumọ̀ Yorùbá: ’s browser and collects a hashed browser fingerprint.
- When: Loaded on frontend pages that display a protected form (login, register, comment, checkout, etc.)
- What is sent: Standard HTTP request headers (IP address, user agent). No personal data.
- Terms of Service: https://crovly.com/terms
- Privacy Policy: https://crovly.com/privacy
2. Crovly Verification API (api.crovly.com)
When a visitor submits a protected form, the plugin sends the generated captcha token to https://api.crovly.com/verify-token for server-side verification.
- When: On form submission of any form protected by Crovly.
- What is sent: The captcha token (opaque string), the visitorÌtumọ̀ Yorùbá: ’s IP address (for IP binding), and your Secret Key (for authentication).
- What is received: A success/failure response indicating whether the token is valid.
- Terms of Service: https://crovly.com/terms
- Privacy Policy: https://crovly.com/privacy
Both services are operated by Crovly. No data is shared with third parties. The plugin does not set cookies or track visitors across sites.
Ìgbéwọlẹ̀
- Upload the
crovlyfolder to/wp-content/plugins/ - Activate the plugin through the ‘Plugins’ menu in WordPress
- Go to Settings > Crovly
- Enter your Site Key and Secret Key (obtained from the Crovly service dashboard)
- Select which forms to protect
- Done! Your forms are now protected
FAQ
-
Where do I get my API keys?
-
Sign up for an account at the Crovly service. Create a site and you will receive a Site Key (public) and a Secret Key (private). See the External services section above for the service URL.
-
No. Crovly does not set any cookies and does not track users across sites.
-
How does Crovly handle user data?
-
Crovly only transmits a hashed browser fingerprint and the visitorÌtumọ̀ Yorùbá: ’s IP address (used for IP binding to prevent token replay). No personal data is stored. See the External services section for full details.
-
What happens if the Crovly API is unreachable?
-
The plugin fails open — if the verification API cannot be reached, the form submission is allowed through. This prevents legitimate users from being blocked by network issues.
-
Can I use Crovly with a form plugin not listed?
-
Yes! Use the
[crovly]shortcode to add the widget to any form, and callcrovly_verify()in your form processing code to verify the token. -
Does it work with WordPress Multisite?
-
Yes. Crovly supports Multisite signup forms and cleans up data across all sites on uninstall (if enabled).
-
Can I define API keys in wp-config.php?
-
Yes. Add these constants to your
wp-config.phpto override the database settings:define('CROVLY_SITE_KEY', 'crvl_site_...'); define('CROVLY_SECRET_KEY', 'crvl_secret_...');When constants are defined, the settings page inputs become read-only.
-
IÌtumọ̀ Yorùbá: ’m locked out! How do I disable Crovly?
-
Add this to your
wp-config.php:define('CROVLY_DISABLE', true);This bypasses all captcha verification so you can log in and fix your settings. Remove it when done.
-
Is Crovly compatible with WooCommerce HPOS?
-
Yes. Crovly declares High-Performance Order Storage (HPOS) compatibility.
-
Does Crovly work with Cloudflare?
-
Yes. The widget script is automatically tagged with
data-cfasync="false"to prevent conflicts with Cloudflare Rocket Loader.
Àwọn àgbéyẹ̀wò
Kò sí àwọn àgbéyẹ̀wò fún plugin yìí.
Àwọn Olùkópa & Olùgbéejáde
“Crovly – Proof of Work Captcha & Spam Protection” jẹ́ ètò ìṣàmúlò orísun ṣíṣí sílẹ̀. Àwọn ènìyàn wọ̀nyí ti ṣe ìkópa sí plugin yìí.
Àwọn OlùkópaTúmọ̀ “Crovly – Proof of Work Captcha & Spam Protection” sí èdè rẹ.
Ṣe o nífẹ̀ẹ́ sí ìdàgbàsókè?
Ṣàwárí koodu, ṣàyẹ̀wò ibi ìpamọ́ SVN, tàbí ṣe àgbékalẹ̀ sí àkọsílẹ̀ ìdàgbàsókè nípasẹ̀ RSS.
Àkọsílẹ̀ àwọn àyípadà
1.0.6
- Inline admin script moved to enqueued asset file (wp_enqueue_script)
- Service badge is now opt-in (off by default) per WordPress.org guideline 10
- Added “Show service badge” setting under Advanced
1.0.5
- Removed promotional language and pricing references per WordPress.org guidelines
- Reduced external links in description (kept only in External services section)
- Reworded compliance claims to be more accurate
1.0.4
- Added “External services” disclosure section per WordPress.org requirements
- Added rel=”noopener” to external links
- Updated “Tested up to” to WordPress 6.8
1.0.3
- Widget i18n: 42 languages with automatic browser language detection
- Updated docs URL structure (SDKs and Platforms separation)
1.0.2
- Added data-fallback=”open” for HA fail-open behavior
- Updated docs links and widget size references
- Synced readme.txt stable tag
1.0.1
- XSS sanitization hardening
1.0.0
- Initial release
- 22+ form integrations
- Proof of Work captcha with adaptive difficulty
- Browser fingerprint and headless detection
- Behavioral analysis (mouse, keyboard, scroll, touch)
- Light, dark, and auto theme support
- IP allowlist
- Shortcode and PHP function support
- WordPress Multisite support
- wp-config.php constants support (CROVLY_SITE_KEY, CROVLY_SECRET_KEY, CROVLY_DISABLE)
- Test Connection button for API key validation
- WooCommerce HPOS compatibility
- Cloudflare Rocket Loader compatibility
- Emergency lockout recovery via CROVLY_DISABLE constant
