reCAPTCHA field saved in Form Editor but never renders on front-end (v2 Checkbox) [RESOLVED]

Gravity Forms version: 3.1.0.2
reCAPTCHA Add-On version: 2.2.2
Hosting: SiteGround (Speed Optimizer)

I’ve added a CAPTCHA field (reCAPTCHA v2 Checkbox) to a form via the standard Form Editor. It saves correctly and is visible in the editor on reload, but it never appears in the actual front-end rendered HTML — no CAPTCHA container, no reCAPTCHA iframe, nothing. The form just goes straight from the last content field to Submit.

What I’ve already ruled out:

  • Caching: purged both page-level (SG Optimizer dynamic/file cache) and object-level (Memcached) repeatedly; issue persists on fresh loads with cache-busting query strings.
  • reCAPTCHA keys: confirmed valid and authorized for the domain. Manually called grecaptcha.render() with the site’s actual site key directly in the browser console on the live domain — it rendered fine, no domain-mismatch error from Google.
  • Domain authorization: found and fixed a real issue where the domain in Google’s reCAPTCHA admin console only listed a subdomain. Added the root domain too. Didn’t fix this issue.
  • reCAPTCHA type: confirmed the plugin’s Type setting (Checkbox) matches what’s registered in Google’s console (v2 Checkbox).
  • Script enqueuing: this site embeds GF shortcodes inside ACF custom fields rather than native post_content, which caused GF to skip enqueueing front-end assets entirely (its detection scans post_content for the shortcode). Fixed with a custom snippet calling gravity_form_enqueue_scripts() after scanning raw ACF field values for the shortcode. After this fix, window.grecaptcha and the recaptcha api.js script now load correctly on the page — but the field/container itself is still never printed in the form’s HTML.
  • Conditional logic: confirmed inactive on the CAPTCHA field.
  • Script optimizers: confirmed Minify JS, Combine JS, and Defer Render-blocking JS are all disabled in SG Optimizer.
  • Console errors: confirmed zero JS errors on a fresh page load.

One more relevant detail: this particular form shows a “This form uses Ready Classes, which will be removed in Gravity Forms 4.0” notice, and other forms on the same site show a full “legacy markup enabled” notice. Wondering if there’s a known incompatibility between legacy markup and the CAPTCHA field type that would cause it to be silently omitted from render?

Any ideas on what else could cause a saved CAPTCHA field to be completely absent from the front-end HTML output, despite the underlying script/keys/domain all being fine? Happy to share more debug output if useful. Thanks!

Backend:

Frontend:

The Captcha field is not output on the front-end if the reCAPTCHA v3 or Enterprise settings are configured. They don’t use it, so when detected, they automatically remove it when the form markup is generated.

Thank you so much, that resolved it.