Form fails validation when reCaptchaV3 enabled

As others have noted, the 2.9 update causes issues on some servers.

Ours specifically, as we started using GravityForms in 2016, is from the new usage of UTF8mb4. I do not recall when GravityForms first started converting to this format.

On and off we have tried implementing reCaptchaV3, the form would always block and fail with a message that simply says something is invalid on the form. Nothing about reCaptcha failure.

Going through logs again today with a stripped down and rebuilt form (behavior was verified on a new form also), either GravityForms or reCaptchaV3 is invalidating the UTF8mb4 to ASCII conversion:

2025-01-08 7:35:14.898689 - DEBUG → GFFormDisplay::process_form(): Starting to process form (#3) submission.
2025-01-08 7:35:14.901500 - DEBUG → GFFormDisplay::process_form(): Source page number: 1. Target page number: 0.
2025-01-08 7:35:14.901571 - DEBUG → GFFormDisplay::validate(): Starting for form #3.
2025-01-08 7:35:14.901591 - DEBUG → GFFormDisplay::validate(): Checking restrictions.
2025-01-08 7:35:14.901829 - DEBUG → GFFormDisplay::validate(): Completed restrictions. Starting field validation.
2025-01-08 7:35:14.901951 - DEBUG → GFFormDisplay::validate_character_encoding(): Starting invalid characters validation for field: Name (13 - name)
2025-01-08 7:35:14.903011 - DEBUG → GFFormDisplay::validate_character_encoding(): gf_entry_meta meta_value charset = utf8mb4
2025-01-08 7:35:14.903073 - DEBUG → GFFormDisplay::validate_character_encoding(): reflecting methods
2025-01-08 7:35:14.903156 - DEBUG → GFFormDisplay::validate_character_encoding(): Completed in 0.001183 seconds. Value is valid ascii
2025-01-08 7:35:14.904182 - DEBUG → GFFormDisplay::validate_character_encoding(): Starting invalid characters validation for field: Your message: (21 - textarea)
2025-01-08 7:35:14.904246 - DEBUG → GFFormDisplay::validate_character_encoding(): Completed in 0.000103 seconds. Value is valid ascii
2025-01-08 7:35:14.904297 - DEBUG → GFFormDisplay::validate(): Field validation completed in 0.002440 seconds.
2025-01-08 7:35:14.904413 - DEBUG → GFFormDisplay::validate(): Executing functions hooked to gform_validation.
2025-01-08 7:35:14.905000 - DEBUG → GFFormDisplay::validate(): Completed gform_validation.
2025-01-08 7:35:14.905025 - DEBUG → GFFormDisplay::process_form(): After validation. Is submission valid? No.
2025-01-08 7:35:14.905067 - DEBUG → GFFormDisplay::process_form(): Processing completed in 0.006688 seconds.

Rather unsure how to resolve this problem to be able to use reCaptchaV3 with GravityForms (it works fine with other site components), even though there have been database update scripts, they do not resolve the problem, or mention the issue.

The problem being that GravityForms is forcing UTF8mb4, our database is not in UTF8mb4, nor even UTF8. This results in an incorrect validation as the character set is wrong.

Do understand GravityForms reasons for using UTF8mb4, do not quite understand how the database character set was overlooked and why there is no test or more informational warnings about incompatible GravityForm and Server/reCaptcha values. If you look at the debug above it seems like everything is fine, but is still failing validation.

Hopefully this can get addressed one way or another (or at least a relevant message) for those of us with older servers not using UTF8, rather tired of the few hundred bot spam submissions each day.

Trying to see if changing character set is an option, any other ideas on what to try are welcome also.

This is nothing to do with UTF8mb4. The form fails validation without any field-specific errors when the hidden reCAPTCHA v3 input is empty. That happens when the page containing the form has a JavaScript issue preventing the form submission scripts from running.

If you can provide a link to the page where the form is located, we can investigate the issue.

If you don’t want to post the link publicly, please open a support ticket at: https://www.gravityforms.com/open-support-ticket/technical/

The fields were not empty, and as shown above they passed and were valid ascii.

The form had two text fields and a submit button, that is it, no additional logic or any other extensions.

The fields were not empty, and as shown above they passed and were valid ascii.

Correct the form fields were valid.

reCAPTCHA v3 does not use a field, it uses a script. That script adds a value to the submission. When that value is not found, the form fails validation even if all the fields are valid.

That happens when the page containing the form has a JavaScript issue preventing the form submission scripts from running.

If you can provide a link to the page where the form is located, we can investigate the issue.

If you don’t want to post the link publicly, please open a support ticket at: https://www.gravityforms.com/open-support-ticket/technical/