Test and troubleshoot a form
Test fields, conditions, drafts, secure links, duplicate submission, table filters, and data ownership before publication.
Use a test organization or a clearly synthetic customer before you change a production form. Do not copy customer answers into an error report or screenshot.
Prepare the test
- Open Forms. Record the form's Slug, Mode, Access, and Active state.
- Open Custom fields. Find fields assigned to the same form.
- Prepare synthetic values for success, missing required data, each condition, and duplication.
- Open Customers and Reservations in separate tabs.
- Open Responses to compare the draft and final records.
| Test set | Required state | Expected result |
|---|---|---|
| Success | All visible required values are valid | One submission completes and shows the message. |
| Missing value | One visible required field is empty | An error appears below that field. |
| Closed branch | The gate answer hides its follow-up field | Submission excludes the hidden field. |
| Open branch | The gate answer shows its follow-up field | The visible field's required rule runs. |
| Duplicate | Submit the same values twice quickly | Only one customer or reservation changes. |
Test before publication
- Review the form's Mode, Access, Static Fields, and Active.
- Review each custom field's Target, Key, Description, Field Group, Visibility, Required, and Forms.
- Open the form at mobile and desktop widths.
- Confirm that name, email, and phone each appear once.
- Submit with an empty required field. Confirm the message below that field.
- Toggle every condition. Confirm that a hidden field does not block submission.
- Enter values and refresh. Confirm that the draft returns.
- Submit twice in quick succession. Confirm that only one record changes.
- Confirm that expired and submitted secure links do not allow changes.
- Check the customer and reservation records after submission.
- Find submitted values with the custom-field table filters.
- For automation use, open Workflows and select only test rows with a small
custom.<key>query limit. - For an AI CTA, use Conversations to test required values, conditions, and pre-submit confirmation.
- For customer sign-in, use
/accountto check that only owned reservations, drafts, and responses appear.
Check the symptom
| Symptom | Setting to check | Next action |
|---|---|---|
| Form not found | Active, Slug, organization, and branch | Activate the form and copy its link from the correct organization. |
| Link action is missing or fails | Form-update permission, active state, and field configuration | Confirm permission and fix the configuration first. |
| Expected field is missing | Target, Visibility, Kind, and Forms | Match the target and scope. Confirm that the kind is public-safe. |
| Field appears in every form | Forms | Assign one or more slugs when the field is not shared. |
| Name, email, or phone appears twice | Customer custom field Key | Remove the duplicate or replace it with a real customer attribute. |
| Request data is on the customer | Custom field Target | Recreate request-specific data for Reservations. |
| Customer data is copied to reservations | Custom field Target | Define lasting customer data once for Customers. |
| Conditional field is always visible | Gate key and value in Show When | Use gate_key=value with the exact saved option. |
| Conditional field never appears | Gate kind, duplicate key, and nested condition | Use Select or Switch. Remove a condition from the gate. |
| Hidden field blocks submission | Condition and Required | Retest with a new link and correct the condition. |
| Reservation reports a phone error | New input and saved customer phone | Enter a reachable phone number in the contact group. |
| Secure link cannot be created | Customer, reservation, branch, and expiration | Select a customer and reservation from the form's branch. |
| Draft does not return | Address resume, expiration, and final state | Use the pre-submission resume address. Create a new link after expiration. |
| Submission changes the wrong record | Mode, field Target, link customer, and reservation | Deactivate the form. Test a corrected ownership model. |
| Table does not show the field | Organization, field target, and column visibility | Open the correct table. Show the custom column under View. |
| Markdown appears as plain text | Kind and saved value | Use Markdown. Check the same display in public and dashboard forms. |
| A file does not open in the public form | Kind, Visibility, and upload address | Use File and Public. Retest with a non-sensitive synthetic file. |
| AI uses a wrong question or option | Connected Form, field definition, and Prompt | Remove copied questions from Prompt. Correct the Form or custom field. |
| AI claims success without a response | Conversation Form goal and response status | Do not accept completion. Compare Conversations and Responses. |
| No customer sign-in provider appears | Login account platform and Connected status | Connect an OAuth login in Accounts. |
| Account has no reservation change action | Reservation status and active Update Target form | Activate one Token reservation change form in the same organization. |
A configuration error stops public input
Duplicate keys, basic-field collisions, unknown gate values, and nested conditions are invalid. Laney does not expose these fields without their conditions. Link creation or submission can stop. Do not share a form that reports this error.
Check write integrity
For Profile Then Insert, compare the customer and reservation records.
| Location | Must contain | Must not contain |
|---|---|---|
| Customer | Name, email, phone, and customer custom fields | Custom fields for only this reservation |
| Reservation | Start time, notes, reservation custom fields, and customer link | Copies of customer custom fields |
| Form submission | Status, form version, field definitions, and answers | Values from another organization or branch |
Check the result
- You reproduced a successful submission and a required-field error.
- Basic fields do not duplicate custom fields.
- You tested each condition in visible and hidden states.
- The draft returned after a refresh.
- Duplicate submission, expiration, and repeat-submission limits work.
- Each value belongs to the correct customer or reservation.
- Table filters and automation queries use the same custom field key.
- Form-goal AI uses the same field contract and response ledger.
- The customer account shows only the signed-in customer's records.
Do not publish the form when any check fails. If it is already published, open Forms and turn off Active. Correct the configuration. Use a new link to pass the complete test again before you reactivate the form.
If the problem continues, use General troubleshooting. Include the form slug, organization, time, and reproduction steps. Do not include customer answers or a full secure link.