Adding the native Form widget to any page and publishing causes the page's entire content to disappear, both on the live front-end and in the editor after a refresh. The save request itself reports success ("success": true), and no PHP or JavaScript errors are produced anywhere in the process.
Root cause: the Form widget's default "Actions After Submit > Email" subject line, "New message from {site domain}", contains unescaped double-quote characters around the site domain. Since a page's entire widget tree is saved as a single JSON blob, this one malformed string invalidates the JSON for the whole page, not just the form, so the page saves "successfully" but renders as completely empty.
STEPS TO REPRODUCE
Create a new, blank page.
Add the Form widget anywhere on the page.
Click Publish.
Refresh the page in the editor, or visit the live URL directly.
EXPECTED BEHAVIOR
The page saves and renders normally with the Form widget displayed, same as any other widget.
ACTUAL BEHAVIOR
The page's content is completely empty. In the rendered HTML, the "page-content" div is present but entirely empty, with no Elementor content wrapper div (data-elementor-type) at all. No error is shown to the user.
ROOT CAUSE DETAIL
Inspecting wp_postmeta directly (_elementor_data for the affected page) showed the saved JSON was present in the database (not wiped), but structurally invalid:
"email_subject":"New message from "overthemoon.com.ph""
The domain is wrapped in literal, unescaped double quotes inside a JSON string value. Valid JSON requires any quote character inside a string to be escaped as a backslash-quote. As written, a parser reads the string as ending immediately after "from ", leaving the remainder as invalid trailing syntax. This breaks json_decode() for the entire page's widget array, not just the Form widget.
This also explains why nothing surfaced as an error anywhere in the stack:
Save reports success: MySQL stores the malformed string without validating it as JSON.
No PHP errors logged (WP_DEBUG_LOG enabled, confirmed empty): a failed json_decode() returns null by default in PHP; it does not throw or log anything.
Entire page blanks, not just the form: Elementor receives null instead of a widget array and has nothing to render.
A second, hidden instance of the same bug:
The same broken default also exists in email_subject_2, used by a second "Email" action under Actions After Submit. This field is not exposed in the Elementor UI unless a second Email action is explicitly added. This means a user can "fix" the visible email_subject field, republish, and still have a corrupted page, with no way to see or edit the still-broken email_subject_2 value through the interface. The only way to expose it is to add a second Email action, at which point the field becomes editable.
SUGGESTED FIX
Escape the quote characters in the default value, or avoid wrapping the domain in double quotes entirely (for example: "New message from overthemoon.com.ph", or use single quotes). As-is, every new Form widget, on every site, ships with this broken default and is at risk of reproducing this bug the moment a save is triggered without first manually editing that field, including the hidden email_subject_2 copy, which most users will never know exists.
Checked browser console during save: no JS errors (aside from an unrelated, ad-blocker-blocked analytics call)
Confirmed live page HTTP status is 200, not a server crash
Inspected live page HTML source: page-content div renders empty, no Elementor wrapper present
Confirmed Elementor and Elementor Pro versions match
Reproduced on a brand-new page: not specific to one page's revision history
Reproduced with Elementor Safe Mode active: rules out plugin/theme conflict
Disabled "Optimized Markup" experiment: no change
Confirmed "Atomic Form" experiment inactive: not the cause
Enabled WP_DEBUG and WP_DEBUG_LOG, reproduced again: no entries written to debug.log
Tested other Pro widgets (Testimonial Carousel, Price Table) on the same page: both work fine, isolating the issue to Form specifically
Queried wp_postmeta directly for _elementor_data: found the malformed JSON (see above)
ENVIRONMENT
WordPress: 7.1.1
PHP: 8.3
Elementor: 4.2.3
Elementor Pro: 4.2.3
Theme: Hello Elementor 3.5.1
Hosting: Hostinger (shared hosting)
Active experiments: Container, Nested Elements, Hello Theme Header and Footer (default set only)
ADDITIONAL CONTEXT
Resolved on our end by adding a second Email action (to expose email_subject_2 in the UI) and manually removing the quote marks from both subject fields. Reporting so the default template can be fixed upstream. As-is, this will silently corrupt any page for any user who adds a Form widget and publishes without first editing the Actions After Submit email subject.
Steps to reproduce
Create a new, blank page.
Add the Form widget (Elementor Pro) anywhere on the page.
Click Publish.
Refresh the page in the editor, or visit the live URL directly.
Expected behavior
Expected Behavior: The page saves and renders normally with the Form widget displayed, the same as any other widget.
Actual Behavior: The page's content is completely empty. In the rendered HTML,
is present but entirely empty — there is no Elementor content wrapper div (data-elementor-type) at all, meaning the saved Elementor data for the page appears empty or unreadable at render time. No error message is shown to the user; the page simply appears blank.