Elementor 3.17 Update Broke My Forms — Here’s the Fix
Everything looks fine for about twelve seconds. Then the contact forms stop submitting. No error message. No console warning. Just… ...
Everything looks fine for about twelve seconds. Then the contact forms stop submitting. No error message. No console warning. Just… ...
Someone just exploited a hole in WordPress core that lets them take over your server without logging in. Here's what ...
Updated Elementor and your site broke? I walk through the actual fixes that worked when it happened to a client ...
So if you follow along in the video, I refer to this blog post for you to enter code at ...
Everything looks fine for about twelve seconds. Then the contact forms stop submitting. No error message. No console warning. Just… nothing.
Happened last Tuesday on a client’s WooCommerce site in Sandton. They’d updated Elementor overnight — standard maintenance window, right? By 9 AM their lead forms were dead. Zero submissions. The spinner just sat there spinning like it was waiting for a bus that wasn’t coming.
Elementor 3.17 changed how `action` attributes work on forms. They moved from inline `action=”/wp-json/elementor/forms/submit”` to a dynamic AJAX handler that requires the `elementor_form_submitted` nonce. If your page cache serves a stale nonce? Form dies silently.
Three things I check in order:
1. Clear all caches — WP Rocket, LiteSpeed, Cloudflare, server-level (HostAfrica/afrihost/nginx). The nonce in the cached HTML is from before the update.
2. Regenerate Elementor data — Elementor > Tools > Regenerate Files & Data. This rebuilds the form endpoints with fresh nonces.
3. Check for `form_data` in `localStorage` — 3.17 caches form state locally. If the user had the page open during update, their browser sends stale data. Hard refresh (Cmd+Shift+R) fixes it.
We see this constantly on sites hosted with Afrihost, Web Africa, and Hostigator. Why? Their server-level caching (nginx fastcgi, LiteSpeed LSCache) serves stale HTML for hours after an Elementor update unless you purge manually. Most clients don’t know their host caches at the server level — they think “I cleared WP Rocket, I’m good.”
Had a client on Web Africa Business Hosting last month. Cleared WP Rocket, cleared Cloudflare. Forms still broken. Turns out Web Africa’s nginx cache has a 4-hour TTL by default. Had to log into their cPanel > LiteSpeed Cache > Purge All. Forms worked instantly.
Disable Elementor’s “Improved Asset Loading” if you’re using ANY caching plugin. They fight. Elementor tries to optimize CSS/JS delivery while WP Rocket/LiteSpeed does the same thing differently. Result: broken nonces, missing CSS, forms that submit to the wrong endpoint.
We’ve seen this cause 3+ second delays on Johannesburg-hosted sites specifically — the asset loading rewrite adds overhead that server-level caching then serves to everyone.
Elementor 3.17 isn’t “broken” — it changed the contract. Your cache is serving the old contract. Purge everything, regenerate Elementor data, hard refresh. Takes 3 minutes. Your leads will thank you.