SOLVED: Form Submission Bug with Caching Plugins After Update

Browser: Chrome 110
OS: macOS / Windows / Linux / etc.
URL: Link to a page that illustrates this issue
Video: Short screen recording that illustrates this issue (free tool: jam.dev)

Since updating my plugins, Bricks forms stopped submitting, they just load forever. This only happens after a few days of caching. Manually clearing the caching plugin immediately fixes the issue, but it returns after a few days.

Forms use admin-ajax.php for AJAX submissions. The bug affects multiple sites using Bricks, ACSS, and a different host of caching plugins (litespeed / wprocket / fastest cache). These setups worked fine before recent updates. I updated bricks and WordPress.

Steps tried:
• Cache purge fixes it temporarily
• Different caching plugins

Suspect: Recent plugin changes have made the form’s AJAX nonce or endpoint incompatible with cached pages. Problem did not exist before updating.

Any ideas or solutions to make forms work with caching enabled?

interesting
I use w3 total cache and I enable only page cache

after reading your issue I tested my forms they are still working fine :green_circle:

I am experiencing a similar issue running on LiteSpeed, Cloudflare and Cloudflare turnstiles.
I just upgraded to v2.1.3 to see if that happens to fix it. :crossed_fingers:

Glad im not the only one. I tried excluding the wp-admin/admin-ajax.php call from the caching plugins without succes. I’m also in contact with WProcket support and have succesfully recreated the bug on 2 staging enviroments. I will update this thread if they provide more information.

Bricks, is this a known bug?

@Matej @timmse Could it be because of a Nonce that has changed during an update lately? Or any other ideas in how to troubleshoot this further? I would really like to fix this quickly.

It is affecting all my websites made with bricks. They must have some sort of page caching enabled and the form is built with the form element.

I have one website made with bricks but I coded my own form and that one works fine.

If there is no solution, would it be safe to downgrade to an earlier version of bricks?

Hi @hobiew and @bvandrie,

is this happening only AFTER you update Bricks and before you clear the cache? So if you clear the cache, then it’s not happening anymore?

Thank you,
Matej

@Matej thanks for your reply!

If I clear the cache it works fine. Until after X amount of hours. Without touching the website and the cache should still be alive as TTL is way higher, the form functionality breaks (as well as some CSS styling).

The CSS is no priority I can easily exclude some files or turn some CSS optimization off. The form is however crucial.

I tried this with multiple caching plugins. I think 2.0.0 is working fine, afterwards not so much. I have two staging environments which demonstrate the issue. You can have access to those.

I rolled my live websites back to before 2.0.

HI @hobiew,

if you have a staging website, where I could see the issue, that would be wonderful. If you can send temporary login credentials to your test/staging website and a link to this topic to help@bricksbuilder.io using the email address you used during the purchase, I can take a look.
Hopefully, I’ll be able to replicate it locally as well.

Thanks,
Matej

I send it with different e-mail adress oops. h.wetzels@fontys.nl. Let me know if i need to resend.

Edit: I just resend with this e-mail adress and also added some explanation on how to access the form.

Excluding the ajax call, did not work. Also please note that manually clearing the cache fixes the problem for a certain time.

So: clear cache > form works > wait > form broken > test without cache > form works > clear cache > form works > repeat.

@Matej

I think it might be the Nonce expiring earlier than the TTL of the cache. Did you change the TTL of the Nonce on the forms in recent updates? I used to be able to set an infinite TTL on my cache and it kept working, yes I know thats not best practice :).

As you can see in the screenshot the Nonces of the form are not the same:

Perhaps it would also be possible to give a unique name to the form Nonce. I know litespeed lets you exclude nonces from caching at all.

Hi @hobiew,

I’ve also just replied to your email, unaware of this message here :slight_smile:

It seems to be exactly that, yep. But, I don’t think we changed anything regarding this recently. I’ll also ask the rest of the team just in case.

Settings: This should solve the issue:

Matej

Let’s continue the conversation here as others might be running into the same problem.

I can confirm that 10 hours is not working, however I could try lower. I rather not though. I have websites that barely ever change and don’t receive many visitors. I don’t want to invalidate the cache that often for these websites.

I can setup staging with bricks 2.0 and cache TTL to 7 days to confirm that this has not been an issue in 2.0. Would you like that?

Can you confirm the current TTL of the bricks form Nonce?

1 Like

Hi @hobiew,

We investigated a little bit, and it might be connected to the recent change in the handling of nonce re-fetching in combination with spam prevention (Cloudflare Turnstile, for example).

I see you have Turnstile enabled; can you test it by turning it off and checking again?

@bvandrie, can you try the same? I see that you mentioned Turnstile as well.

Please let me know.
Thank you.

Matej

I turned off turnstile on my staging site. I had to clear the Cache though, so I have to wait in order to confirm if this fixed anything. Ill update tomorrow or the day after.

I can confirm that all my websites are using turnstile on their forms though.

I have updated the form on the live site by removing Cloudflare.

I also created a duplicate page that kept the Turnstile in place.

As @hobiew mentioned, I will need to test it again in a day or to give the nonce time to expire as the cache was just cleared.

`

wp-core

version: 6.8.3
site_language: en_US
user_language: en_US
timezone: America/New_York
permalink: /%postname%/
https_status: true
multisite: false
user_registration: 0
blog_public: 1
default_comment_status: open
environment_type: production
user_count: 2
dotorg_communication: true

wp-paths-sizes

wordpress_path: /var/www/604baad1-b171-47c6-973d-9b67ec43aa15/public_html
wordpress_size: 61.14 MB (64107379 bytes)
uploads_path: /var/www/604baad1-b171-47c6-973d-9b67ec43aa15/public_html/wp-content/uploads
uploads_size: 76.55 MB (80269033 bytes)
themes_path: /var/www/604baad1-b171-47c6-973d-9b67ec43aa15/public_html/wp-content/themes
themes_size: 69.54 MB (72913198 bytes)
plugins_path: /var/www/604baad1-b171-47c6-973d-9b67ec43aa15/public_html/wp-content/plugins
plugins_size: 52.27 MB (54805044 bytes)
fonts_path: /var/www/604baad1-b171-47c6-973d-9b67ec43aa15/public_html/wp-content/uploads/fonts
fonts_size: directory not found
database_size: 14.72 MB (15433728 bytes)
total_size: 274.21 MB (287528382 bytes)

wp-dropins (1)

object-cache.php: true

wp-active-theme

name: Bricks Child Theme (bricks-child)
version: 1.1
author: Bricks
author_website: https://bricksbuilder.io/
parent_theme: Bricks (bricks)
theme_features: core-block-patterns, post-thumbnails, widgets-block-editor, automatic-feed-links, title-tag, html5, menus, custom-spacing, border, align-wide, widgets
theme_path: /var/www/604baad1-b171-47c6-973d-9b67ec43aa15/public_html/wp-content/themes/bricks-child

wp-parent-theme

name: Bricks (bricks)
version: 2.1.3
author: Bricks
author_website: https://bricksbuilder.io/
theme_path: /var/www/604baad1-b171-47c6-973d-9b67ec43aa15/public_html/wp-content/themes/bricks

wp-mu-plugins (5)

FizzPop Media Completely Remove Comments: version: 0.1.1.0, author: FizzPop Media
FizzPop Media Disable RSS: version: 0.1.1.0, author: FizzPop Media
FizzPop Media Postmark Error Logger: version: 1.0.2, author: FizzPop Media
FizzPop Media Remove Author Pages: version: 0.1.1.0, author: FizzPop Media
FizzPop Media Wordpress Improvements: version: 0.1.1.7, author: FizzPop Media

wp-plugins-active (14)

ActiveCampaign Postmark (Official): version: 1.19.1, author: Andrew Yates & Matt Gibbs
BugHerd: version: 1.0.14, author: BugHerd
Classic Editor: version: 1.6.7, author: WordPress Contributors
Core Framework: version: 1.9.2, author: Core Framework
Enable Media Replace: version: 4.1.7, author: ShortPixel
HappyFiles Pro: version: 1.8.3, author: Codeer
LiteSpeed Cache: version: 7.6.2, author: LiteSpeed Technologies
Meta Box: version: 5.10.15, author: MetaBox.io
Meta Box AIO: version: 3.2.0, author: MetaBox.io
ShortPixel Image Optimizer: version: 6.3.5, author: ShortPixel - Convert WebP/AVIF & Optimize Images
Slim SEO: version: 4.7.0, author: Slim SEO
Slim SEO Pro: version: 1.5.0, author: Slim SEO
WP CLI Login Command Server: version: 1.5, author: Evan Mattson
WP Remote: version: 6.02, author: FizzPop Media

wp-plugins-inactive (1)

OMGF: version: 6.0.10, author: Daan from Daan.dev

wp-media

image_editor: WP_Image_Editor_Imagick
imagick_module_version: 1692
imagemagick_version: ImageMagick 6.9.12-98 Q16 x86_64 18038 https://legacy.imagemagick.org
imagick_version: 3.8.0
file_uploads: 1
post_max_size: 512M
upload_max_filesize: 512M
max_effective_size: 512 MB
max_file_uploads: 20
imagick_limits:
imagick::RESOURCETYPE_AREA: 244 MB
imagick::RESOURCETYPE_DISK: 2147483648
imagick::RESOURCETYPE_FILE: 49151
imagick::RESOURCETYPE_MAP: 2 GB
imagick::RESOURCETYPE_MEMORY: 1 GB
imagick::RESOURCETYPE_THREAD: 1
imagick::RESOURCETYPE_TIME: 9.2233720368548E+18
imagemagick_file_formats: 3FR, 3G2, 3GP, AAI, AI, APNG, ART, ARW, AVI, AVIF, AVS, BGR, BGRA, BGRO, BIE, BMP, BMP2, BMP3, BRF, CAL, CALS, CANVAS, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CR2, CR3, CRW, CUR, CUT, DATA, DCM, DCR, DCX, DDS, DFONT, DJVU, DNG, DOT, DPX, DXT1, DXT5, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, EXR, FAX, FILE, FITS, FLV, FRACTAL, FTP, FTS, G3, G4, GIF, GIF87, GRADIENT, GRAY, GRAYA, GROUP4, GV, H, HALD, HDR, HEIC, HEIF, HISTOGRAM, HRZ, HTM, HTML, HTTP, HTTPS, ICB, ICO, ICON, IIQ, INFO, INLINE, IPL, ISOBRL, ISOBRL6, J2C, J2K, JBG, JBIG, JNG, JNX, JP2, JPC, JPE, JPEG, JPG, JPM, JPS, JPT, JSON, K25, KDC, LABEL, M2V, M4V, MAC, MAGICK, MAP, MASK, MAT, MATTE, MEF, MIFF, MKV, MNG, MONO, MOV, MP4, MPC, MPEG, MPG, MRW, MSL, MSVG, MTV, MVG, NEF, NRW, NULL, ORF, OTB, OTF, PAL, PALM, PAM, PANGO, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PDFA, PEF, PES, PFA, PFB, PFM, PGM, PGX, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG00, PNG24, PNG32, PNG48, PNG64, PNG8, PNM, POCKETMOD, PPM, PREVIEW, PS, PS2, PS3, PSB, PSD, PTIF, PWP, RADIAL-GRADIENT, RAF, RAS, RAW, RGB, RGBA, RGBO, RGF, RLA, RLE, RMF, RW2, SCR, SCT, SFW, SGI, SHTML, SIX, SIXEL, SPARSE-COLOR, SR2, SRF, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TTC, TTF, TXT, UBRL, UBRL6, UIL, UYVY, VDA, VICAR, VID, VIDEO, VIFF, VIPS, VST, WBMP, WEBM, WEBP, WMF, WMV, WMZ, WPG, X, X3F, XBM, XC, XCF, XPM, XPS, XV, XWD, YCbCr, YCbCrA, YUV
gd_version: bundled (2.1.0 compatible)
gd_formats: GIF, JPEG, PNG, WebP, BMP, AVIF, XPM
ghostscript_version: 10.02.1

wp-server

server_architecture: Linux 6.8.0-86-generic x86_64
httpd_software: LiteSpeed
php_version: 8.3.25 64bit
php_sapi: litespeed
max_input_variables: 5000
time_limit: 300
memory_limit: 256M
max_input_time: 60
upload_max_filesize: 512M
php_post_max_size: 512M
curl_version: 8.5.0 OpenSSL/3.0.13
suhosin: false
imagick_availability: true
pretty_permalinks: true
htaccess_extra_rules: true
static_robotstxt_file: false
current: 2025-11-03T13:13:26+00:00
utc-time: Monday, 03-Nov-25 13:13:26 UTC
server-time: 2025-11-03T08:13:25-05:00

wp-database

extension: mysqli
server_version: 11.4.8-MariaDB-ubu2404
client_version: mysqlnd 8.3.25
max_allowed_packet: 16777216
max_connections: 151

wp-constants

WP_HOME: undefined
WP_SITEURL: undefined
WP_CONTENT_DIR: /var/www/604baad1-b171-47c6-973d-9b67ec43aa15/public_html/wp-content
WP_PLUGIN_DIR: /var/www/604baad1-b171-47c6-973d-9b67ec43aa15/public_html/wp-content/plugins
WP_MEMORY_LIMIT: 256M
WP_MAX_MEMORY_LIMIT: 256M
WP_DEBUG: false
WP_DEBUG_DISPLAY: true
WP_DEBUG_LOG: false
SCRIPT_DEBUG: false
WP_CACHE: true
CONCATENATE_SCRIPTS: undefined
COMPRESS_SCRIPTS: undefined
COMPRESS_CSS: undefined
WP_ENVIRONMENT_TYPE: undefined
WP_DEVELOPMENT_MODE: undefined
DB_CHARSET: utf8
DB_COLLATE: undefined

wp-filesystem

wordpress: writable
wp-content: writable
uploads: writable
plugins: writable
themes: writable
fonts: does not exist
mu-plugins: writable

postmark-wordpress

status: Yes
version: 1.19.1
directory: /var/www/604baad1-b171-47c6-973d-9b67ec43aa15/public_html/wp-content/plugins/postmark-approved-wordpress-plugin
url: https://vitabenefitsgroup.com/wp-content/plugins/postmark-approved-wordpress-plugin
stream: outbound
sender_address: undefined
force_from: No
force_html: No
track_opens: No
track_links: No
enable_logs: Yes

`

Thank you both @bvandrie and @hobiew for testing :folded_hands:

Let me know in a few days, if it’s better.

Thanks,
Matej

I see this same problem on a contact form until I cleared the litespeed cache. :face_with_diagonal_mouth:

@macksix are you using Cloudflare turnstiles on a native Bricks form?

@bvandrie

Yes, it happened on one form on a site but not another. I just tried another site and it workd on one form, but not another one.

@bvandrie

One site I have no turnstile or recaptcha on does the same thing until I cleared the litespeed cache.