contact_mailContact Form 7apiREST APIadmin_panel_settingspermissionserror403securityfirewalldescriptioncontact-form-7labelCommonwarningModerate

Contact Form 7: The server responded with a 403 Forbidden status

The request sent by Contact Form 7 never reaches the WordPress handler. The web server stops the request and returns a 403 status code. This response indicates that the server refuses to process the submission.

Typical triggers include security rules that flag the form payload as suspicious. ModSecurity signatures, firewall plugins, or .htaccess directives often block POST requests to admin‑ajax.php or the REST endpoint used by the form.

When a nonce is missing or invalid, WordPress treats the request as a CSRF attempt and rejects it with the same status. The same outcome occurs if the REST API is disabled or if file permissions prevent execution of the handling script.

Rate‑limiting mechanisms may also produce a temporary 403 after several rapid submissions. In all cases the browser shows an error toast and no email is sent.

Symptoms

[dashicons-warning]
Error toast appears
A red message shows "The server responded with a 403 Forbidden status" after clicking Send.
[dashicons-admin-network]
Network request blocked
Browser console displays POST to admin‑ajax.php or wp‑json endpoint with status 403.
[dashicons-email]
No email delivered
Form does not reset and no message reaches the intended inbox.

Common Causes

ModSecurity or WAF rule
A firewall signature flags the form data as malicious and returns 403 before WordPress runs.
Security plugin block
Wordfence, iThemes Security, or similar plugins restrict admin‑ajax.php or REST API calls.
Invalid or missing nonce
The hidden _wpnonce field is absent, expired, or stripped by a cache layer, causing WordPress to reject the request.
Need this fixed right now?

Don't waste your day debugging. Our experts can Fix your issues in under 2 hours.*

Success Rate

100% Guaranteed

Starting from

$35 /hour
99+

Trusted by Business Owners

“I spent 3 days trying to fix the Elementor loading loop. These guys fixed it in 20 minutes. Lifesavers!”

— Sarah J., Web Designer

Related Issues

contact_mail
Contact Form 7: REST API request failed: 503 Service Unavailable
A 503 Service Unavailable response stops Contact Form 7 from sending data...
apiREST APIerror503descriptioncontact-form-7
contact_mail
Contact Form 7: REST API request failed: 429 Too Many Requests

The form tries to send data through the WordPress REST API. The...

apiREST APIerrorerrorsecurityfirewalldescriptioncontact-form-7settingsserver_configuration
contact_mail
Contact Form 7: REST API request failed: 401 Unauthorized

The form tries to send data via the WordPress REST API. The...

apiREST APIadmin_panel_settingspermissionsdescriptioncontact-form-7lock401
contact_mail
Contact Form 7: File upload error: temporary directory missing

The error appears when Contact Form 7 cannot locate a writable temporary...

codePHPcloud_offupload erroradmin_panel_settingspermissionsdescriptiontemporary filedescriptioncontact-form-7
contact_mail
Contact Form 7: Mail (2) sending failed: PHP mail() function disabled

Contact Form 7 reports a failure for Mail (2) when the PHP...

codePHPerrorerrordescriptioncontact-form-7mailMailsettingsserver_configuration
contact_mail
Contact Form 7: Mail (2) sending failed: SSL certificate verification failed

Contact Form 7 reports a failure when trying to send the secondary...

errorerrorlocksslcodecURLdescriptioncontact-form-7