WordPress Form Submission Taking Too Long - Why and How to Fix
You test your contact form. Submit it. And wait. And wait. 5 seconds. 10 seconds. Nothing. Browser appears frozen. Or it times out with an error.
Your users are experiencing the same thing. Forms take forever. People give up and leave.
Form submission slowness is not mysterious. It's almost always one of four things. And they're all fixable.
Why Form Submissions Are Slow (The Root Causes)
WordPress form submissions use AJAX (Asynchronous JavaScript And XML).
When you submit a form, here's what happens behind the scenes:
- Browser sends the form data to /wp-admin/admin-ajax.php
- WordPress processes the request (loads all plugins, validates data, runs spam checks)
- Form plugin processes the submission (validation, email sending, etc.)
- Server sends response back to browser
- Browser shows success/error message
Each step can introduce delays. (cite index="62-1">The submission process relies on the admin-ajax.php file, and this time can vary depending on tasks such as: Verifying if the form submission is valid, which is influenced by the anti-spam settings you're using, and preparing the data and sending the notification email, which can be delayed depending on whether you're using the server's PHP mail function or an SMTP plugin.
The four main culprits:
- Anti-spam checks (reCAPTCHA, Akismet verification)
- Email sending delays (SMTP or PHP mail function)
- Plugins loading on AJAX (too many plugins running during request)
- Server resource limits (PHP timeout, low memory)
Diagnosis: How Slow Is Too Slow?
First, measure the actual delay.
Method 1: Manual Testing
- Open your form page
- Open Developer Tools (F12)
- Go to "Network" tab
- Submit the form
- Look for a request to "admin-ajax.php"
- Click it and note the "Time" value (in milliseconds)
Benchmarks:
- 0-500ms: ā Excellent (feels instant)
- 500-1000ms: ā Good (acceptable)
- 1-3 seconds: ā ļø Slow (user notices)
- 3+ seconds: ā Very slow (users abandon)
Method 2: Use GTmetrix or WebPageTest
- Go to gtmetrix.com
- Enter your form page URL
- Run test
- Look for admin-ajax.php in the waterfall chart
- Note how long it takes (will show as "Waiting" time)
Expected result: You know exactly how slow your form submission is, and you can measure improvements as you apply fixes.
Fix #1: Disable Anti-Spam Checks (Or Optimize Them)
Anti-spam validation is often the #1 slow culprit.
Each time someone submits, your site verifies the submission isn't spam. This involves checking nonce values, running Akismet or reCAPTCHA, and database queries. All of this takes time.
For reCAPTCHA (Most Common)
Problem: reCAPTCHA verification adds 1-3 seconds per submission.
Fix Option A: Disable reCAPTCHA on non-critical forms
- Go to Plugins > [Your Form Plugin] > Settings
- Find "reCAPTCHA" or "Spam Protection" section
- Disable it on low-risk forms (e.g., newsletter signup, but keep it on contact forms)
- Save and test submission speed
Fix Option B: Use reCAPTCHA v3 (Faster)
- Go to google.com/recaptcha/admin
- Switch to reCAPTCHA v3 (doesn't show checkbox, invisible scoring)
- Update your form plugin's reCAPTCHA key
- Test submission speed (v3 is faster than v2)
Fix Option C: Move reCAPTCHA to the Client (Before Submission)
Some form plugins can verify reCAPTCHA before submitting to server. This feels faster because the delay happens before the user clicks submit.
- Go to form settings
- Look for "Client-side validation" or "Verify reCAPTCHA before submit"
- Enable it
- Test
For Akismet
Problem: Akismet calls an external API to check spam. Network delay = slow submissions.
Fix: Disable on low-risk forms
- Go to form plugin settings
- Find Akismet checkbox
- Uncheck it for forms that don't need it
- Test speed
Expected result: Form submissions now 1-2 seconds faster.
Fix #2: Fix Email Sending Delays
The form isn't slow. Email sending is slow. But the form waits for the email to send before showing success.
Step 1: Check Your Email Setup
Are you using PHP mail() or SMTP?
- Go to WordPress > Settings > General
- Note your "Admin Email Address"
- Go to a form plugin like WPForms or Gravity Forms
- Check the notification settings ā does it say "SMTP" or "PHP mail"?
If using PHP mail: This is slow. Switch to SMTP.
If using SMTP: The service might be slow. Test it.
Step 2: Switch to a Faster SMTP Service
- Install WP Mail SMTP plugin (Plugins > Add New > Search "WP Mail SMTP" > Install)
- Go to WP Mail SMTP > Settings
- Choose a mailer:
- Brevo (FREE, recommended): 300 emails/day, fast response
- SendGrid (FREE, 100/day): Slightly slower
- Gmail: If you have Google Workspace
- Configure your mailer (takes 3 minutes)
- Test a form submission and measure speed in Developer Tools
Expected improvement: 1-2 seconds faster (if you were using PHP mail).
Step 3: Send Email Asynchronously (Advanced)
Problem: Form waits for email to send before showing success. This delays the user's response.
Fix: Send email after the form response (WordPress Hooks)
This requires custom code or a plugin like "WP Background Tasks" or "Action Scheduler":
- Install "Action Scheduler" plugin
- Configure your form to queue emails to a background task
- Form shows success immediately (doesn't wait for email)
- Email sends in background
This is advanced. For most sites, fixing SMTP is enough.
Expected result: Form feels instant. Email sends separately in background.
Fix #3: Enable AJAX on Your Form Plugin
Some form plugins have AJAX submission disabled by default.
If AJAX is off, the form does a full page reload, which reloads CSS, JavaScript, and everything else. This is much slower than AJAX (which only sends data, no reload).
For Contact Form 7
- Go to WordPress > Contact > Contact Forms
- Click on your form
- The form uses AJAX by default. No configuration needed.
- If it seems slow, it's not CF7's fault (one of the other fixes applies)
For WPForms
- Go to Plugins > Installed Plugins
- Find WPForms > "Upgrade" button (or go to WPForms > Settings if you have Pro)
- Look for "Form Submission" or "AJAX" setting
- Enable "AJAX Form Submission"
- Save
For Gravity Forms
- Edit the form (drag-and-drop editor)
- Look for "AJAX" checkbox (right-click on the form or go to Advanced tab)
- Enable "Enable AJAX"
- Save
- (cite index="63-1">Enabling AJAX form submission dropped multi-step form pagination from 5-8 seconds to ~1 second.
For Elementor Forms
- Open page in Elementor editor
- Click on the form
- Left panel > Advanced > look for "Use AJAX" or similar
- Enable it
- Save and test
Expected result: Form submission 2-3 seconds faster (full page reload gone).
Fix #4: Disable Heavy Plugins on AJAX Requests
Problem: When the form submits via AJAX, WordPress loads ALL plugins (even ones unrelated to the form). This wastes time.
Example: Your analytics plugin, SEO plugin, backup plugin, slider plugin all run during a simple form submission. They add 2-3 seconds of processing time.
Solution: Must-Use Plugin (MU-Plugin)
Create a special plugin that deactivates slow plugins during AJAX requests:
- Connect via FTP or File Manager
- Go to /wp-content/mu-plugins/ (create this folder if it doesn't exist)
- Create a file called "disable-ajax-plugins.php"
- Paste this code:
<?php
/**
* Disable slow plugins on AJAX requests to speed up form submissions
*/
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
// Add plugin names here you want disabled during AJAX
$disable_plugins = array(
'jetpack/jetpack.php', // Jetpack
'wp-super-cache/wp-cache.php', // WP Super Cache
'wordfence/wordfence.php', // Wordfence
'gs-infinite-scroll/gs-infinite-scroll.php', // Add others as needed
);
add_filter( 'option_active_plugins', function( $plugins ) use ( $disable_plugins ) {
return array_diff( $plugins, $disable_plugins );
});
}
?>
- Edit the list of plugins (replace with plugins YOU want disabled)
- Upload and save the file
- Test form submission speed
ā ļø WARNING: Only disable plugins you're sure won't break the form. Start by disabling 1 plugin, test, then add more.
Expected result: 1-2 seconds faster submissions.
Fix #5: Increase PHP Timeout & Memory
Problem: PHP gives up (timeout) or runs out of memory before the form finishes processing.
Symptoms: Form takes a very long time, then fails with "504 Gateway Timeout" or "Fatal error: Allowed memory size exceeded"
Solution: Increase Limits in wp-config.php
- Connect via FTP
- Open wp-config.php
- Add these lines BEFORE "That's all, stop editing!":
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );
define( 'WP_TIMEOUT', 120 );
- Save and upload
- Test form submission
What these do:
- WP_MEMORY_LIMIT: Increases memory from 40M to 256M
- WP_MAX_MEMORY_LIMIT: Hard cap at 512M (for plugins that request more)
- WP_TIMEOUT: Gives form submission 120 seconds instead of 30 (allows time to process)
Expected result: Form doesn't timeout. Submissions complete even with large data.
Fix #6: Optimize Your Database (Advanced)
Problem: Form submission involves database queries (spam checking, saving submission, sending email). Slow database = slow form.
Solution: Run Database Optimization
- Install "WP-Optimize" plugin (Plugins > Add New > Search "WP-Optimize" > Install)
- Go to WP-Optimize > Database
- Click "Run Optimization"
- It cleans up orphaned metadata, revisions, etc.
- Test form submission speed
Expected result: 0.5-1 second improvement (if your database was cluttered).
Testing Your Fixes
After each fix, measure the improvement:
- Open Developer Tools (F12) > Network tab
- Submit form
- Find admin-ajax.php request
- Note the time
- Compare to before (when it was slow)
Example improvement:
Before fixes: admin-ajax.php took 8,500ms
After Fix #1 (disable reCAPTCHA): 5,200ms (-3,300ms)
After Fix #2 (switch to SMTP): 2,800ms (-2,400ms)
After Fix #3 (enable AJAX): 1,200ms (-1,600ms)
Final result: 8.5s ā 1.2s (7.3 seconds faster!)
Quick Checklist (Apply in Order)
Start here and work down:
- ā Measure current form submission time (Developer Tools > Network > admin-ajax.php)
- ā Disable reCAPTCHA on non-critical forms (Fix #1)
- ā Switch to SMTP email (Brevo or SendGrid) (Fix #2)
- ā Enable AJAX on form plugin (Fix #3)
- ā Test form submission speed ā is it acceptable now?
- ā If still slow, disable heavy plugins on AJAX (Fix #4)
- ā Increase PHP timeout/memory (Fix #5)
- ā Run database optimization (Fix #6)
Expected result after all fixes: Form submission under 1-2 seconds (feels instant to users).
When to Call Your Host
If after all fixes the form is still slow, it's a server-level issue:
- Ask your host: "What's the TTFB (time to first byte) on admin-ajax.php requests?"
- If TTFB is slow (>1 second), your server is overloaded or misconfigured
- They can:
- Upgrade your plan (if on shared hosting)
- Enable caching, Redis, or other optimization
- Investigate server-level issues (PHP handlers, etc.)
The Real Talk
Form submission slowness usually comes from: reCAPTCHA delays, SMTP email taking too long, or too many plugins loading during the request.
The fixes are simple: disable unnecessary spam checks, switch to a good SMTP service, enable AJAX if it's off. Most sites get 50-70% improvement from just these three.
If your form submission is under 1 second, users won't notice. They'll get instant feedback and move on. Anything longer than 3 seconds and they start thinking something's wrong.
Test, measure, fix. You'll get there.
