Diagnose a failing form from the outside in
Use this diagnostic sequence when a form’s failure does not point to one obvious setting. Work on a copy or draft page and use non-sensitive test values.
1. Confirm availability
- Settings → POM Theme → Forms → General → Enable forms system is enabled.
- The form header shows Active.
- The page-builder element is POM Form and selects the expected form.
- The test page and form belong to the same site in a multisite network.
If the form does not render, stop here before changing notifications or storage.
2. Prove the simplest valid submission
Test while signed out:
- Remove optional custom scripts from the test page.
- Use one valid value per visible field.
- Use no uploads unless the upload itself is under investigation.
- Confirm required and conditional branches.
- Submit once and wait for feedback.
If validation fails, inspect the affected field’s Required, type-specific, and Conditional Logic settings.
3. Separate acceptance from delivery
An AJAX success message does not prove every downstream action succeeded. Check each destination independently:
| Destination | Verification |
|---|---|
| Administrator email | Intended route matched and mailbox received it |
| Client email | Correct Recipient Field or logged-in account was used |
| Storage | Entry appears under Forms → Submissions |
| Local upload | Authorized submission detail offers the file |
| Google Drive | File appears in the configured folder |
| Webhook | Receiver logged a signed JSON request and returned 2xx |
| Create Post | Expected post type contains a new entry with the configured status |
4. Reduce the failing branch
- Conditional logic: keep one rule.
- Notification routing: keep one unconditional route.
- Uploads: try one small permitted file.
- Webhook: use the production-format receiver with harmless sample data.
- Post creation: map only a required title and create as Draft.
Restore settings one at a time after the smallest version succeeds.
5. Record safe evidence
Record the form title, public test URL, affected tab, exact steps, visitor state, expected result, and actual result. Remove personal values, OAuth credentials, webhook secrets, and complete payloads from screenshots or support messages.
For symptom-specific checks, use the Forms troubleshooting reference.