Logo
WP Fix by Blimx

Gravity Forms Won't Submit — Top 8 Causes and Fixes

Actualizado:
PluginsForms

The silent lead killer

Gravity Forms is the most-used premium WordPress form plugin (300,000+ active installations). When it works, it's reliable. When it breaks, it often does so silently — the form appears to submit, the user sees a "thanks" message, but the entry never reaches you.

The customer thinks you ignored their inquiry. You don't know there's a problem. Leads die quietly.

This article is the diagnostic playbook for every cause of silent Gravity Forms failure we've documented.

How to know if you have silent submissions

If you can't be sure your form is working, the first test is:

1. Submit a test form on the live site (use real-looking data)
2. Check Forms → Entries — is the entry there?
3. Check the email account that should receive notifications — did it arrive?
4. Check Forms → Forms → Settings → Notifications → "Send to" → verify email

If step 2 fails: entries aren't saving. Backend issue. If step 2 succeeds but step 3 fails: entries save but notifications fail. Email issue.

The fix depends on which.

Cause 1 — Form submits, no entry saved

The form shows the success message but Forms → Entries has nothing.

Diagnosis

Open browser DevTools → Network. Submit the form. Look for the POST to admin-ajax.php or wp-json/gf/v2/.

  • 200 response, but no entry? → JS submission "pretends" to succeed without server save
  • 500 response? → Backend error; check PHP error log
  • Form reloads instead of submitting? → AJAX disabled or JS error

Fix

If 200 with no save, check Gravity Forms entry of debug.log:

tail -100 /var/www/yoursite/wp-content/debug.log | grep -i gravity

Common error: "RGFormsModel::insert_entry failed" — indicates database write failure. Check disk space and table permissions:

SHOW TABLE STATUS LIKE 'wp_gf_entry';

Cause 2 — Notifications not sending

Entries save, but notification emails don't arrive.

Diagnosis

wp eval 'gf_log_test_notification(123, 1);'  # form_id=123, notification_id=1

Or, simpler — check WP Mail SMTP/FluentSMTP log if you have one installed.

If no SMTP plugin: install one immediately. Native wp_mail() uses PHP's mail() function which most hosts now block due to spam abuse.

Fix

  1. Install WP Mail SMTP (free)
  2. Configure with SendGrid, Postmark, or your mail provider
  3. Send a test email from WP Mail SMTP settings
  4. Re-test form submission

For most WordPress sites in 2026, native mail() doesn't work. Always use SMTP.

Cause 3 — Spam filter blocks valid submissions

Gravity Forms has built-in honeypot and Akismet integration. Sometimes these flag legitimate users as spam.

Diagnosis

Forms → Entries → filter by Spam status. If you see entries there, the spam filter caught them.

Fix

  1. In each form's Settings → Form Settings → Anti-spam → review settings
  2. Disable Akismet integration if you have other anti-spam (CAPTCHA)
  3. Disable honeypot if you have CAPTCHA
  4. Don't double up — pick one anti-spam method

Better: use Cloudflare Turnstile, which doesn't have the false-positive issues of Akismet on form pages.

Cause 4 — AJAX disabled, no JS confirmation

The form has AJAX submission disabled. Page refreshes after submit. Users see the URL change to ?gf_token=... and may think nothing happened.

Fix

Enable AJAX in the form's embed:

[gravityform id="1" title="false" description="false" ajax="true"]

Or in PHP:

gravity_form(1, false, false, false, null, true);
//                                              ^^^^ ajax = true

This makes submission happen via AJAX, with smooth confirmation messages.

Cause 5 — Page caching serves stale form

Your page-level cache serves the form HTML from cache. The form's nonce expired, so submissions are rejected with "This form is not properly configured."

Fix

In your caching plugin (WP Rocket, W3 Total Cache, LiteSpeed):

  • Exclude pages with Gravity Forms from cache, OR
  • Use Gravity Forms' "AJAX nonce regeneration" hook which refreshes the nonce on demand

For WP Rocket: - Settings → Advanced Rules → Never Cache (URLs) → add /contact/, /quote/, etc.

For LiteSpeed: - LiteSpeed Cache → Cache → Excludes → URI

Cause 6 — Conditional logic shows wrong fields

A form with conditional logic (show field X if value Y is selected) misbehaves. Users see fields they shouldn't, or submit without filling required ones.

Diagnosis

This is usually JS-related. Disable any JS optimization plugin temporarily and re-test.

Fix

If JS optimization breaks conditional logic: - Exclude Gravity Forms scripts from minification/deferral - Or disable the JS optimization on form pages

For WP Rocket, exclude *gforms* from "File Optimization > JavaScript > Files".

Cause 7 — File uploads silently fail

Forms with file upload fields succeed but the uploaded file never appears in entries.

Diagnosis

# Check PHP upload limits
php -i | grep -E "upload_max_filesize|post_max_size|max_input_time"

Common defaults are 2M (too low) and 8M post.

Fix

In php.ini or .user.ini:

upload_max_filesize = 64M
post_max_size = 80M
max_input_time = 120
max_execution_time = 300

Restart PHP-FPM. Re-test.

Cause 8 — Custom code breaks form submission

You (or a previous developer) added custom code to functions.php that hooks into gform_after_submission. The code throws an error, but it's after the entry saves, so the entry exists but downstream actions (like CRM sync) fail.

Diagnosis

tail -100 /var/www/yoursite/wp-content/debug.log | grep -i "gform\|gravity"

Look for errors mentioning your custom hook.

Fix

Wrap custom Gravity Forms hooks in try/catch:

add_action('gform_after_submission', function($entry, $form) {
    try {
        // your custom logic
        $crm->sync($entry);
    } catch (Exception $e) {
        error_log('GF post-submit error: ' . $e->getMessage());
        // don't re-throw — let the form succeed
    }
}, 10, 2);

Monitoring for silent failures

Set up alerts for unusual entry patterns:

# Cron: alert if no entries in last 24h
0 9 * * * /var/www/yoursite/scripts/check-gf-entries.sh

The script:

#!/bin/bash
cd /var/www/yoursite
COUNT=$(wp eval 'echo count(GFAPI::get_entries(0, [], null, ["page_size" => 100], null, null, true));')
if [ "$COUNT" -eq 0 ]; then
    echo "No Gravity Forms entries in last 24h" | mail -s "ALERT" admin@yoursite.com
fi

Common mistakes during Gravity Forms diagnosis

  • Trusting "Thank you" message — that's just JavaScript; doesn't mean entry saved
  • Not checking spam folder for entries — Akismet often filters legit ones
  • Updating Gravity Forms without testing — same as any plugin; staging first
  • Manually editing entries in database — corrupts entry metadata; use GFAPI instead

When to call a specialist

Forms that silently fail cost leads daily. We do a 1-2 hour Gravity Forms audit that finds and fixes the root cause for ongoing issues.

Form fix support within hours. For broader plugin work see plugin conflict repair.