# Cloudflare Turnstile Frictionless (CAPTCHA)

**URL:** <https://forum.mautic.org/t/cloudflare-turnstile-frictionless-captcha/27871>\
**Category:** Ideas and Feature Requests\
**Tags:** security\
**Created:** [May 1, 2023, 10:11pm UTC](https://forum.mautic.org/t/cloudflare-turnstile-frictionless-captcha/27871 "2023-05-01T22:11:39Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![johnwick](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.mautic.org/johnwick/32/3279_2.png) [@johnwick](https://forum.mautic.org/u/johnwick)\
**Post date:** [May 1, 2023, 10:11pm UTC](https://forum.mautic.org/t/cloudflare-turnstile-frictionless-captcha/27871/1 "2023-05-01T22:11:39Z")

</div>

Integrating Cloudflare Turnstile into Mautic would provide significant benefits for users, including enhanced security and improved lead capture capabilities. Turnstile’s customizable captcha system can prevent spam submissions and protect against brute-force attacks, while its multi-factor authentication adds an extra layer of security to user accounts.

Additionally, Turnstile’s flexible form builder can help streamline the lead capture process by allowing users to create custom forms with conditional logic and personalized messaging. Overall, integrating Turnstile would be a valuable addition to Mautic’s feature set, providing users with powerful tools to enhance their marketing efforts.

For an experience developer it would be around 10 minutes of time if you have Google reCaptcha already included in your code to add Turnstile integration.

[Turnstile Documentation](https://developers.cloudflare.com/turnstile/)

[Migration from reCaptcha](https://developers.cloudflare.com/turnstile/migration/migrating-from-recaptcha/)

---

<div class="post-metadata">

**Author:** ![Yosu\_Cadilla](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.mautic.org/yosu_cadilla/32/6206_2.png) [@Yosu\_Cadilla](https://forum.mautic.org/u/Yosu_Cadilla)\
**Post date:** [May 2, 2023, 12:12am UTC](https://forum.mautic.org/t/cloudflare-turnstile-frictionless-captcha/27871/2 "2023-05-02T00:12:36Z")

</div>

I think it’s a good one.  
There already is a recaptcha plugin, you probably want to drop by @johnwick.

> **[GitHub - KonstantinCodes/mautic-recaptcha: This Plugin brings reCAPTCHA...](https://github.com/KonstantinCodes/mautic-recaptcha)**
>
> This Plugin brings reCAPTCHA integration to mautic. - GitHub - KonstantinCodes/mautic-recaptcha: This Plugin brings reCAPTCHA integration to mautic.

Who knows, maybe KonstantinCodes is interested in making a version of his plugin for Turnstile!?

Here’s a good video about it?

[![](https://us1.discourse-cdn.com/flex020/uploads/mautic/original/2X/4/4d3a9f0ddb5fe9acf07604eededbbd17a297a685.jpeg "Cloudflare Turnstile: a frustration-free CAPTCHA alternative") ](https://www.youtube.com/watch?v=xKGpkHJTIbs)

---

<div class="post-metadata">

**Author:** ![johnwick](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.mautic.org/johnwick/32/3279_2.png) [@johnwick](https://forum.mautic.org/u/johnwick)\
**Post date:** [May 2, 2023, 2:18am UTC](https://forum.mautic.org/t/cloudflare-turnstile-frictionless-captcha/27871/3 "2023-05-02T02:18:32Z")

</div>

Thanks Yosu!

I was able to use that plugin and make it work with Turnstile.  
 ![Screenshot 2023-05-01 at 9.15.46 PM](https://us1.discourse-cdn.com/flex020/uploads/mautic/original/2X/4/42d843f6f410447c688f43a2508888a307bb4ffa.png)

**Line 45 recaptcha.html.php**

```auto
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js?compat=recaptcha" async defer></script>

```

**Line 20 RecaptchaClient.php**

```auto
    const VERIFY_URL = 'https://challenges.cloudflare.com/turnstile/v0/siteverify';

```

It has to be on v2 to work.

Also, there’s missing variables to select: Day, Night, or Auto theme. I’ll work on adding that, plus stripping out the other v3 code, etc. in a bit and toss it up on Github once I’m happy with it.

---

<div class="post-metadata">

**Author:** ![Yosu\_Cadilla](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.mautic.org/yosu_cadilla/32/6206_2.png) [@Yosu\_Cadilla](https://forum.mautic.org/u/Yosu_Cadilla)\
**Post date:** [May 2, 2023, 4:46pm UTC](https://forum.mautic.org/t/cloudflare-turnstile-frictionless-captcha/27871/4 "2023-05-02T16:46:59Z")

</div>

Great, let us know if you need any help with the plugin or creating the repo and PR.  
Or if you do not have the time, let me know too, I would probably want to continue your work.

---

<div class="post-metadata">

**Author:** ![joeyk](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.mautic.org/joeyk/32/11164_2.png) [@joeyk](https://forum.mautic.org/u/joeyk)\
**Post date:** [May 2, 2023, 5:03pm UTC](https://forum.mautic.org/t/cloudflare-turnstile-frictionless-captcha/27871/5 "2023-05-02T17:03:54Z")

</div>

This is great. Is it also maybe GDPR compatible?

---

<div class="post-metadata">

**Author:** ![Yosu\_Cadilla](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.mautic.org/yosu_cadilla/32/6206_2.png) [@Yosu\_Cadilla](https://forum.mautic.org/u/Yosu_Cadilla)\
**Post date:** [May 2, 2023, 5:15pm UTC](https://forum.mautic.org/t/cloudflare-turnstile-frictionless-captcha/27871/6 "2023-05-02T17:15:02Z")

</div>

I think it is, so say the guys in the video…

---

<div class="post-metadata">

**Author:** ![sweely](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.mautic.org/sweely/32/14465_2.png) [@sweely](https://forum.mautic.org/u/sweely)\
**Post date:** [December 9, 2023, 9:31pm UTC](https://forum.mautic.org/t/cloudflare-turnstile-frictionless-captcha/27871/7 "2023-12-09T21:31:59Z")

</div>

Is this up on GitHub yet?

---

<div class="post-metadata">

**Author:** ![kornelia](https://avatars.discourse-cdn.com/v4/letter/k/a88e57/32.png) [@kornelia](https://forum.mautic.org/u/kornelia)\
**Post date:** [December 10, 2023, 1:24pm UTC](https://forum.mautic.org/t/cloudflare-turnstile-frictionless-captcha/27871/8 "2023-12-10T13:24:56Z")

</div>

the video is good, the main thing is informative

---

<div class="post-metadata">

**Author:** ![kornelia](https://avatars.discourse-cdn.com/v4/letter/k/a88e57/32.png) [@kornelia](https://forum.mautic.org/u/kornelia)\
**Post date:** [December 10, 2023, 1:27pm UTC](https://forum.mautic.org/t/cloudflare-turnstile-frictionless-captcha/27871/9 "2023-12-10T13:27:43Z")

</div>

Wow it’s good idea

---

<div class="post-metadata">

**Author:** ![johnwick](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.mautic.org/johnwick/32/3279_2.png) [@johnwick](https://forum.mautic.org/u/johnwick)\
**Post date:** [February 1, 2024, 7:39pm UTC](https://forum.mautic.org/t/cloudflare-turnstile-frictionless-captcha/27871/10 "2024-02-01T19:39:36Z")

</div>

I’m working on a version for Mautic 5 and will release it once it’s finally complete and the best integration possible.

---

<div class="post-metadata">

**Author:** ![miamiman](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.mautic.org/miamiman/32/1118_2.png) [@miamiman](https://forum.mautic.org/u/miamiman)\
**Post date:** [December 2, 2024, 1:21pm UTC](https://forum.mautic.org/t/cloudflare-turnstile-frictionless-captcha/27871/11 "2024-12-02T13:21:35Z")

</div>

Hello there. Has this been implemented in the version currently hosted in GitHub, specifically with Cloudflare Turnstile? for Mautic 4?

---

<div class="post-metadata">

**Author:** ![mikep](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.mautic.org/mikep/32/14636_2.png) [@mikep](https://forum.mautic.org/u/mikep)\
**Post date:** [November 24, 2025, 12:14pm UTC](https://forum.mautic.org/t/cloudflare-turnstile-frictionless-captcha/27871/12 "2025-11-24T12:14:03Z")

</div>

Any update? Nearly 2 years have passed.

Willing to get together with someone and buy a few beers/coffees.

---

<div class="post-metadata">

**Author:** ![richardnl](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.mautic.org/richardnl/32/11430_2.png) [@richardnl](https://forum.mautic.org/u/richardnl)\
**Post date:** [November 24, 2025, 1:08pm UTC](https://forum.mautic.org/t/cloudflare-turnstile-frictionless-captcha/27871/13 "2025-11-24T13:08:55Z")

</div>

We made a plugin with Cloudflare Turnstile support for Mautic forms.

Free on Github: [https://github.com/FireMultimedia/mautic-multi-captcha-bundle/](https://github.com/FireMultimedia/mautic-multi-captcha-bundle/)

---

<div class="post-metadata">

**Author:** ![mikep](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.mautic.org/mikep/32/14636_2.png) [@mikep](https://forum.mautic.org/u/mikep)\
**Post date:** [November 24, 2025, 1:44pm UTC](https://forum.mautic.org/t/cloudflare-turnstile-frictionless-captcha/27871/14 "2025-11-24T13:44:07Z")

</div>

Tried that but got several errors;

> [hosting@alpha mautic]$ composer require firemultimedia/mautic-multi-captcha-bundle  
> Deprecation Notice: Composer\Installers\Installer::\_\_construct(): Implicitly marking parameter $filesystem as nullable is deprecated, the explicit nullable type must be used instead in /home/hosting/subdomains/mautic/vendor/composer/installers/src/Composer/Installers/Installer.php:136  
> More deprecation notices were hidden, run again with `-v` to show them. ./composer.json has been updated  
> Running composer update firemultimedia/mautic-multi-captcha-bundle  
> Loading composer repositories with package information Updating dependencies  
> Your requirements could not be resolved to an installable set of packages.
> 
> Problem 1
> 
> - Root composer.json requires mautic/core-lib ^6.0 → satisfiable by mautic/core-lib[6.0.0-dev].
> - mautic/core-lib 6.0.0-dev requires ext-imap \* → it is missing from your system. Install or enable PHP’s imap extension.  
> Problem 2
> - Root composer.json requires firemultimedia/mautic-multi-captcha-bundle \* → satisfiable by firemultimedia/mautic-multi-captcha-bundle[dev-main, dev-develop, 1.0.0, 1.0.1, 1.0.2, 9999999-dev].
> - firemultimedia/mautic-multi-captcha-bundle 1.0.0 requires mautic/core-lib ^6.0 → satisfiable by mautic/core-lib[6.0.0-dev].
> - firemultimedia/mautic-multi-captcha-bundle 1.0.1 requires mautic/core-lib ^5.0|^6.0 → satisfiable by mautic/core-lib[6.0.0-dev].
> - firemultimedia/mautic-multi-captcha-bundle[dev-main, dev-develop, 1.0.2] require mautic/core-lib ^5.0|^6.0|^7.0 → satisfiable by mautic/core-lib[6.0.0-dev].
> - mautic/core-lib 6.0.0-dev requires ext-imap \* → it is missing from your system. Install or enable PHP’s imap extension.
> 
> To enable extensions, verify that they are enabled in your .ini files:
> 
> - /opt/cpanel/ea-php84/root/etc/php.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/01-ioncube.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-bcmath.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-calendar.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-ctype.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-curl.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-dom.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-exif.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-fileinfo.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-ftp.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-gd.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-iconv.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-intl.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-mbstring.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-mysqlnd.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-pdo.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-phar.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-posix.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-simplexml.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-soap.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-sockets.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-sodium.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-sqlite3.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-tokenizer.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-xml.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-xmlwriter.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-xsl.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/20-zip.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/30-mysqli.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/30-pdo\_mysql.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/30-pdo\_sqlite.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/30-xmlreader.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/i360.ini
> - /opt/cpanel/ea-php84/root/etc/php.d/zzzzzzz-pecl.ini  
> You can also run `php --ini` in a terminal to see which files are used by PHP in CLI mode.  
> Alternatively, you can run Composer with `--ignore-platform-req=ext-imap` to temporarily ignore these required extensions.
> 
> Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.  
> You can also try re-running composer require with an explicit version constraint, e.g. “composer require firemultimedia/mautic-multi-captcha-bundle:\*” to figure out if any version is installable, or “composer require firemultimedia/mautic-multi-captcha-bundle:^2.1” if you know which you need.
> 
> Installation failed, reverting ./composer.json and ./composer.lock to their original content.  
> [hosting@alpha mautic]$ php --ini  
> /opt/cpanel/ea-php83/root/usr/bin/php: /opt/cpanel/ea-libxml2/lib64/libxml2.so.2: no version information available (required by /opt/cpanel/ea-php83/root/usr/bin/php)  
> /opt/cpanel/ea-php83/root/usr/bin/php: /opt/cpanel/ea-libxml2/lib64/libxml2.so.2: no version information available (required by /opt/cpanel/ea-php83/root/usr/bin/php)  
> /opt/cpanel/ea-php83/root/usr/bin/php: /opt/cpanel/ea-libxml2/lib64/libxml2.so.2: no version information available (required by /opt/cpanel/ea-php83/root/usr/bin/php)  
> Configuration File (php.ini) Path: /opt/cpanel/ea-php83/root/etc  
> Loaded Configuration File: /opt/cpanel/ea-php83/root/etc/php.ini  
> Scan for additional .ini files in: /opt/cpanel/ea-php83/root/etc/php.d  
> Additional .ini files parsed: /opt/cpanel/ea-php83/root/etc/php.d/01-ioncube.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-bcmath.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-calendar.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-ctype.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-curl.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-dom.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-exif.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-fileinfo.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-ftp.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-gd.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-iconv.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-imap.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-intl.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-mbstring.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-mysqlnd.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-pdo.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-phar.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-posix.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-simplexml.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-soap.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-sockets.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-sodium.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-sqlite3.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-tokenizer.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-xml.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-xmlwriter.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-xsl.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/20-zip.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/30-mysqli.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/30-pdo\_mysql.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/30-pdo\_sqlite.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/30-xmlreader.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/i360.ini,  
> /opt/cpanel/ea-php83/root/etc/php.d/zzzzzzz-pecl.ini

Don’t see the issues tab in GitHub so I can’t report it there…

---

<div class="post-metadata">

**Author:** ![richardnl](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.mautic.org/richardnl/32/11430_2.png) [@richardnl](https://forum.mautic.org/u/richardnl)\
**Post date:** [November 24, 2025, 2:13pm UTC](https://forum.mautic.org/t/cloudflare-turnstile-frictionless-captcha/27871/15 "2025-11-24T14:13:09Z")

</div>

This is probably not a problem with the plugin, but a specific issue with your installation. I think you need some help with the hosting and/or composer.

---

<div class="post-metadata">

**Author:** ![marcalorri](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.mautic.org/marcalorri/32/10441_2.png) [@marcalorri](https://forum.mautic.org/u/marcalorri)\
**Post date:** [July 1, 2026, 9:36am UTC](https://forum.mautic.org/t/cloudflare-turnstile-frictionless-captcha/27871/16 "2026-07-01T09:36:13Z")

</div>

In case it helps, I have adapted the reCAPTCHA plugin to work with Turnstile for Mautic 4. (For Mautic 5, 6, and 7, there is already another plugin that works well.)

> **[GitHub - marcalorri/mautic-cloudflare-turnstile](https://github.com/marcalorri/mautic-cloudflare-turnstile)**
>
> Contribute to marcalorri/mautic-cloudflare-turnstile development by creating an account on GitHub.
