Rahul Das
Forum Replies Created
-
Hello @martinig,
Just following up in case you still need help with Fluent Forms setup.
Could you let us know which setup step was difficult—installation, form creation, embedding, notifications, or an integration?
Please share the exact issue or error, and we’ll guide you further.
Thank you
Hello @bekee,
Thank you for the detailed report.
The radio and checkbox renderer currently includes individual labels for each option, while the
<fieldset>and<legend>grouping code is commented out. The renderer also does not add a group-levelroleoraria-labelledbyassociation for the question label.We’ll review the appropriate implementation and update this topic when verified information is available.
Thank you
Hello @martinig,
We’re sorry the documentation made the setup process frustrating. We’d really like to understand which part was unclear: installing Fluent Forms, creating the form, embedding it on a page, configuring notifications, or setting up an integration.
Could you share the specific step where you got stuck, along with any error message or screenshot that does not contain private information? We’ll point you to the right instructions and help clarify the process.
You can also start here: Fluent Forms Getting Started guide. Please let me know the section that seems unhelpful so we can improve that.
We hope we can get this resolved for you.
Thank you
Hello there,
Thanks for reaching out.
Following your query, existing submissions retain the value that was selected when they were submitted.
For example, if a visitor submits Event 1, and you later update the available options to Event 3 and Event 4, the previous entry will continue to show Event 1, while new submissions will store the newly selected option.
Therefore, you can update the Training Date options for future events without changing the values already stored in previous Fluent Forms entries.
However, before deploying, you can check it by yourself by submitting some dummy data.
Thank you
Hello there,
Thank you for reporting this. We are aware of the duplicate CleanTalk requests described here and are currently investigating the issue with our development team. We are reviewing the interaction between the different CleanTalk integration paths so we can address it properly.I hope it will be fixed soon.
Thank you for your patience.
Hello there,
Thanks for the extra detail on this. We don’t have WebMCP form coverage yet, but as we already logged it as a feature request, our team is currently going on with further assessments.
Thank you
Hello there,
The “Validate Keys” area is the heading for the Cloudflare verification challenge rather than a separate button. Once both keys are entered, the Turnstile widget should load and the Save Settings button should become available.
Please make sure Fluent Forms is updated to the latest available version, temporarily disable any browser content blocker or admin-side JavaScript optimization. Then hard-refresh the settings page and enter the keys again. Also, please check whether your CSP or security layer is blocking
https://challenges.cloudflare.com.After entering both the Site Key and Secret Key, please click in the blank area outside the input field. This triggers the validation, after which the Turnstile challenge should appear/ a success message should be there showing your validation is successful. And the Save Settings button should become available.
Please let me know the update.
Thank you
Hello there,
This can be done using the combination of dropdown and custom HTML field. You can follow the procedure mentioned below:
- Add the states to a Dropdown using Bulk Edit / Predefined Data Sets.
- Enable Show Values. Keep each option label as the state name, but enter its contact details as the option value—for example:
Alabama — John Doe — john@example.com — 555-1234 - Add one Custom HTML field below the dropdown and enter:
{dynamic.dropdown}
Replacedropdownwith the Dropdown field’s actual Name Attribute.
The same HTML field will update automatically when a state is selected from the dropdown field, with no conditional rules or second selection required.
Fluent Forms documents both bulk editing Dropdown options and displaying an input’s current value using the SmartCode.
I hope it will work for you.
Thank you
- This reply was modified 1 month, 1 week ago by Rahul Das.
Hello there,
Thank you for running the probe on both servers and for the Site Health details.
The two outputs differ in one important way: the failing server loads the Snuffleupagus PHP security extension (it is listed in that server’s “loaded extensions” line; the working server does not have it). Depending on its configuration, this extension hooks every PHP function call, and it does not release the return value of a call whose result is not used. That is exactly what statements 1 and 2 of the probe do, and it is exactly where the
DESTRUCTlines never appear on the failing server. Fluent Forms registers its REST routes with the same kind of call, which would explain why the routes are missing there.We have reproduced this on our side: the same probe, run on PHP 8.3 with Snuffleupagus enabled, prints exactly the output of your failing server, and without the extension it prints the output of your working server.
Before we go further we would like to confirm it on the server itself. Could you please:
- Ask Neodigit to disable the Snuffleupagus extension for this site. It is a server-level extension, so only the host can change it. If they cannot disable it per site, ask whether they offer another PHP version or configuration on the same server that runs without it, and test there.
- Restore the original Fluent Forms 6.2.12 files, so that your change in
Group::__constructis removed and the test runs on the unmodified plugin. - Run the probe again on that server. With the extension off,
snuffleupagusshould no longer appear in the “loaded extensions” line, and everyDESTRUCTline should appear before its-- end of statementline, as on the working server. - Check whether the Fluent Forms REST endpoints respond again (the admin pages and forms that were failing before).
Please send us the new probe output and the result of step 4. If Neodigit can also share the Snuffleupagus rules file used on that server, that helps us narrow down which rule triggers it. If the routes work once the extension is off, we have our confirmation and will take this up formally with the extension’s developers and with your host.
Please hide any kind of confidential information before sharing as this is a public forum.
Thank you again for your help with this.
Hello there,
Thank you for the detailed report and for the execute() test. It confirms that on your Neodigit server the route-group callbacks run later than they should. Your workaround makes Fluent Forms work again, but it ignores route settings that other plugins chain after
group(), so please treat it as temporary.The next Fluent Forms release ships an updated routing layer (framework 2.12.8) where each route group keeps its own settings, so the routes register correctly no matter when the callback runs. That release fixes your site regardless of the server cause.
We would still like to understand what your server does differently. The two small files below test, outside WordPress, whether PHP on your server runs an object’s destructor at the end of the statement, which is what the route groups rely on. Running them on both the failing host and the working host and comparing the two outputs tells us where the difference comes from.
What you need:
- File manager or FTP/SFTP access to both servers.
- About five minutes per server.
Step 1: Create the two files
Create these two files with exactly these names. The first one includes the second, so both names must stay as they are.
File 1:
ff-probe-7f3a.php<?php header('Content-Type: text/plain; charset=utf-8'); class Probe { public static $log = []; public function __construct() { self::$log[] = 'construct'; } public function __call($m, $p) { self::$log[] = "chained call: $m"; return $this; } public function __destruct() { self::$log[] = 'DESTRUCT'; } } function make() { return new Probe; } // 1. Temporary object in an expression statement (this is how route groups are used). make()->prefix('x')->withPolicy('y'); Probe::$log[] = '-- end of statement 1'; // 2. Same thing from inside an included file, like a routes file. include __DIR__ . '/ff-probe-7f3a-inc.php'; Probe::$log[] = '-- after include'; // 3. Object kept alive only by a WeakReference. $weak = null; if (class_exists('WeakReference')) { $weak = WeakReference::create(make()); Probe::$log[] = '-- end of statement 3, weak ref still alive: ' . var_export($weak->get() !== null, true); } echo "Destructor timing (each DESTRUCT should appear BEFORE the '-- end of statement' line that follows it):\n"; foreach (Probe::$log as $line) echo " $line\n"; echo "\nEnvironment:\n"; echo " PHP " . PHP_VERSION . " (" . PHP_SAPI . ")\n"; foreach (['zend.enable_gc', 'zend.exception_ignore_args', 'opcache.enable', 'opcache.jit', 'opcache.jit_buffer_size', 'opcache.optimization_level', 'opcache.validate_timestamps', 'opcache.revalidate_freq', 'auto_prepend_file', 'auto_append_file', 'disable_classes', 'disable_functions'] as $key) { printf(" %-28s = %s\n", $key, var_export(ini_get($key), true)); } printf(" %-28s = %s\n", 'gc_enabled()', var_export(gc_enabled(), true)); printf(" %-28s = %s\n", 'WeakReference exists', var_export(class_exists('WeakReference'), true)); echo " loaded extensions: " . implode(', ', get_loaded_extensions()) . "\n";File 2:
ff-probe-7f3a-inc.php<?php make()->group('z'); Probe::$log[] = '-- end of statement 2 (inside include)';Step 2: Upload them to the WordPress root folder
Upload both files into the folder that contains
wp-config.phpand WordPress’ ownindex.php.- On Plesk this folder is usually
httpdocs. - On cPanel it is usually
public_html. - If WordPress is installed in a subfolder (for example
/blog/), upload the files into that subfolder.
Nothing else needs to be changed. The files do not load WordPress and do not touch the database.
Step 3: Open the probe in your browser
Open this address, replacing the domain with yours:
https://your-domain.com/ff-probe-7f3a.phpIf WordPress lives in a subfolder, include it:
https://your-domain.com/blog/ff-probe-7f3a.phpThe page shows plain text. Select all of it and copy it.
Step 4: Repeat on the working host
Upload the same two files to the working server, open the same address there, and copy that output as well.
Step 5: Delete the files
Delete
ff-probe-7f3a.phpandff-probe-7f3a-inc.phpfrom both servers. The output lists PHP settings and extension names, so the files should not stay online.Step 6: Send us the results
Please paste both outputs into the ticket, labelled “failing host” and “working host”, together with:
- The Must-Use Plugins and Drop-ins sections from Tools > Site Health > Info on the failing host. Hosting providers sometimes add these outside the site files, so they can differ between servers even when the site files are identical.
- Please redact any confidential information you do not wish to share publicly on the forum.
What we look for
Each
DESTRUCTline should appear before the-- end of statementline that follows it. On a normal server the top of the output reads:construct chained call: prefix chained call: withPolicy DESTRUCT -- end of statement 1If on the failing host
DESTRUCTcomes later, or is missing, PHP itself is delaying destructors there, and the extension list at the bottom of the output should show what is installed on that server and not on the other.If something goes wrong:
- The browser shows the PHP code as text, or downloads the file. PHP is not executing at that path. Check that the files are in the same folder as
wp-config.php. - 404 or 403. The files are in the wrong folder, or the server’s security filter blocked the name. Try renaming both files (keep the
-incsuffix on the second one and update theincludeline in the first one to match). - The files disappear after upload. A malware scanner quarantined them. Please tell us; that is useful information on its own.
Thank you again for your help with this.
Hello there,
Thank you for clarifying. I agree with you: for a site with hundreds of Contact Form 7 forms, selecting only one or a few forms is difficult with the current 5-item pagination.
At the moment, the available options are to import all forms or select forms from the paginated list. I understand that this does not solve your selective-import workflow well, so I have shared this as a usability improvement request with the team: adding search and/or a larger adjustable page size for the migrator list. I hope it will be inproved in the upcoming update as I’ve marked this with top priority.
Sorry for the poor experience here, and thank you for pointing out the exact workflow that needs improvement.
Hello there,
Thanks for reaching out.
I tested this by adding a form with Turnstile inside an Elementor modal, and the Turnstile widget displayed properly on my end. Please check the screenshot: https://drive.google.com/file/d/1lVvh9RbDwo-Jsed7euJr4e3mgw1MnzZh/view?usp=sharing
So it may be specific to the Element Pack modal widget settings, the way the modal loads the content, or a caching/optimization script delaying the Turnstile script.
Please try temporarily disabling JS optimization/minification for that page and also check whether the modal widget has any lazy-load or dynamic content loading option enabled. If the issue still happens, please share the page URL so we can inspect for any potential error message.
- This reply was modified 1 month, 4 weeks ago by Rahul Das.
Hello there,
You’re most welcome. Wish you a nice day ahead.
Thank you
Hello there,
I’m glad to inform you that the issue has been fixed and an update has been released already. Please update the plugin to it’s latest version (6.2.12) and check again.
Please let me know the update.
Thank you
Hello there,
Thanks for the details.
Please do not share any confidential information, login credentials, or private access details here, as this is a public forum.
We tested this scenario using the “Multilingual Forms for Fluent Forms with WPML” plugin, but we could not recreate the issue on our end. Maybe we couldn’t set the scenario like you did in your site.
To isolate the cause, please create a staging copy of your site and test the same form with the multilingual plugins temporarily disabled. Please check the output using plain Fluent Forms only. This will help confirm whether the issue is coming from Fluent Forms itself or from the multilingual/translation layer.
Please let me know the update.
Thank you!