
Formbuilder Admin
- 9 installs
- 4 repo stars
- Updated August 1, 2026
- vishalsachdev/claude-code-skills
Helps with ai & agent building tasks.
About
formbuilder-admin is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted development.
- formbuilder-admin
- AI & Agent Building
- AI-coding skill
Formbuilder Admin by the numbers
- 9 all-time installs (skills.sh)
- +1 installs in the week ending Jul 27, 2026 (Skillselion tracking)
- Ranked #12,074 of 16,556 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 2, 2026 (Skillselion catalog sync)
npx skills add https://github.com/vishalsachdev/claude-code-skills --skill formbuilder-adminAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 9 |
|---|---|
| repo stars | ★ 4 |
| Last updated | August 1, 2026 |
| Repository | vishalsachdev/claude-code-skills ↗ |
What it does
Helps with ai & agent building tasks.
Files
FormBuilder Admin
FormBuilder is a University of Illinois web application for creating customizable forms, surveys, and event registration workflows. The admin interface is at appserv7.admin.uillinois.edu/FormBuilderAdmin.
Key Concepts
FormBuilder organizes work in a hierarchy: Unit > Form Group > Form. Each form has periods (time windows when the form is active), phases (workflow steps), sections (content containers), and questions (data fields). Phases are connected by routing triggers that move form responses through the workflow when conditions are met.
There are three phase types: Data Collection (where users fill out the form), Review Approval (where admins review responses), and Archive (final storage). Only one Data Collection and one Archive phase are allowed per form.
Forms can be Standard or Event Registration (which adds event sessions, guest questions, and registration management). Event registration has two modes: Standard Mode (automatic registration on submit) and Advanced Mode (registration controlled by routing triggers). This choice is irreversible.
Navigation
The admin URL pattern is: appserv7.admin.uillinois.edu/FormBuilderAdmin/Unit/{unitId}/FormGroup/{groupId}/Form/{formId}/...
Key pages append to the Form URL:
/Contents— Form contents editor (questions, sections)/Contents/PaymentInformation— Payment line items/Lifecycle— Workflow diagram/Phases— Phase list and settings/RoutingTriggers— Routing trigger list/Properties— Form properties (title, authentication, payment details)/Periods— Period management/Periods/EventSessions?periodId={id}— Event sessions for a period/EventSessionCategories— Event session categories (form-level)
Important: Breadcrumb navigation sometimes fails in this application. Prefer direct URL navigation by constructing the URL from the known base path. Use the sidebar hamburger menu (☰) for top-level navigation.
Core Workflows
For detailed procedures on each area, see the reference files:
- Questions and Sections: See references/form-contents.md
for adding/editing questions, question types, sections, and question triggers.
- Event Sessions: See references/event-sessions.md for
session categories, creating sessions, and linking sessions to questions and payments.
- Payments: See references/payments.md for enabling payments,
adding payment line items, and CFOAPAL configuration.
- Workflow and Lifecycle: See references/workflow-lifecycle.md
for phases, routing triggers, conditional statements, and routing actions.
- Authentication and Access: See references/authentication-and-access.md
for local user self-registration, security groups, periods, and form access.
- Troubleshooting: See references/gotchas.md for known pitfalls
and hard-to-discover fixes.
Safety Guidelines
- Always confirm destructive actions with the user before executing (deleting triggers,
phases, questions, or responses).
- Edit triggers before deleting phases. If a routing trigger references a phase and you
delete that phase first, the trigger will have a broken reference. Always update or remove trigger references to a phase before deleting it.
- Work step by step. For multi-step changes (especially workflow modifications), execute
one step at a time and verify with the user before proceeding.
- Maintain a change log. When making multiple changes, keep a running list of what was
changed so the user can audit and revert if needed.
- Archive rather than delete questions when possible. Archiving (setting Is Active to
unchecked) preserves historical data while hiding the question from the form.
- Test in Test Email Mode before going live. When Test Email Mode is on, all emails route
to the form group's testing email address instead of real recipients.
UI Interaction Patterns
The admin interface uses a left-panel/right-preview layout on the Form Contents page. Key patterns:
- Global Settings panel (left side): Select the active phase, view payment info, and add
phases/sections.
- Form Preview panel (right side): Shows the form as it appears to users. Click a section
or question to select it, then use the Form Contents panel to edit/add.
- Gear icon (⚙): Used on many list pages (Phases, Routing Triggers, Event Sessions) to
access Edit/Delete options via dropdown.
- Blue "EDIT" buttons: Direct edit access on list items.
- "+ ADD NEW..." buttons: Appear in section headers to add new items.
- Save Changes / Save button: Always at the bottom of editing panels. Changes are NOT
auto-saved.
- Sidebar editing panels: When editing questions, triggers, or line items, a panel slides
in from the left or opens inline. Scroll down within this panel to see all fields.
Authentication and Access Reference
Form Authentication
Configure at: Form dashboard > Form Properties > Manage > "Authentication" tab.
Authentication types:
- Shibboleth (University SSO): For U of I users authenticating via institutional login.
- Local Authentication: For non-university users who register local accounts.
- Both can be enabled simultaneously.
Self-Registration for Local Users
This is a common pain point. If users see "Registration Not Allowed — Sorry, self-registration is not allowed for this form," the fix is NOT on the form's Authentication tab. Instead:
Navigate to: Form Group level (one level above the form) > Local Users page. Check the box: "Allow users to register their own accounts."
This setting lives at the Form Group level, not the Form level, which is why it's often missed.
Periods
Periods define when a form is active. Navigate to: Form dashboard > "Periods" under Security and Form Lifecycle.
Key period settings:
- Start/End dates: When the form accepts responses. If the current date is outside
the period range, users cannot access the form.
- Maximum Registrants: Total registration limit for the period.
- Waitlist settings: Enable/disable waitlisting when max registrants is reached.
- Event Sessions: Each period has its own set of event sessions.
Common issue: If users can't access a form that should be open, check that the period start date has passed and the end date hasn't been reached.
Security Groups
Security groups control admin-level access to forms. They are created at the Form Group level and can be assigned permissions on individual phases.
Navigate to: Form Group > Security Groups (to create groups) and Form Group > Security Sets (to assign permissions).
Form URL
The client-facing survey URL is separate from the admin URL. Find it at: Form dashboard > Form Properties. The URL format is typically: appserv7.admin.uillinois.edu/FormBuilderSurvey/Survey/{formPath}
The form path can be customized in Form Properties.
Test Email Mode
When enabled, all form-generated emails go to the form group's testing email address instead of actual recipients. Enable at: Form Properties > General tab > "Test Email Mode." Always use this when testing form workflows to avoid sending emails to real users.
Event Sessions Reference
Event Session Categories
Categories are form-level (shared across all periods). They organize event sessions into logical groups. Each category has a Title and a setting for whether multiple sessions can be selected (checkboxes) or only one (radio buttons).
Navigate to: Form dashboard > "Event Session Categories" under Data Collection and Form Lifecycle. Or URL: .../Form/{formId}/EventSessionCategories
A form must have at least one category before sessions can be created.
Event Sessions
Sessions are period-level (unique to each period). They represent the actual events users register for.
Navigate to: Form dashboard > Periods > click "Edit Sessions" next to the desired period. Or URL: .../Form/{formId}/Periods/EventSessions?periodId={periodId}
Each session belongs to a category and has these fields:
- Title: Displayed to users (e.g., "Mon Jun 1 – Fri Jun 5 | 1:00 PM – 4:00 PM | Ages 10-17")
- Field Name: Internal identifier (e.g., ADV3D_JUN1). Matching field names across periods
links sessions for routing triggers and phase permissions.
- Description: Optional, displays below title.
- Archived: Hides session from selection without deleting.
- Maximum Registrants: Per-session registration cap (independent from period max).
- Registration Start/End Date: When this specific session opens/closes for registration.
- Price: Dollar amount for the session (used by payment line items).
Linking Sessions to Forms
The typical pattern for event registration with sessions:
1. Create Event Session Categories at the form level (e.g., "Minecraft", "AI Robotics"). 2. Create Event Sessions within each category at the period level, with titles, prices, max registrants, and dates. 3. In form contents, create an Event Session question (Type: Event Session) for each category. Set its Session Category to the matching category. 4. Use question triggers to show/hide each Event Session question based on a parent selection question (e.g., a Check Boxes question listing all available camps). 5. Create a payment line item for each Event Session question, using "the value of a question in dollars" type with the session question as the source. Session prices auto-populate from the event sessions.
Important Notes
- If no sessions exist in a category for the current period, the Event Session question
will show no options.
- Session prices set on event sessions are what populate the payment line item pricing.
- Event Session Categories define the structure; Event Sessions define the actual offerings
per period. When starting a new period, sessions must be recreated (they don't carry over).
Complete Walkthrough: Simple Event Registration Form with Payment
This walkthrough creates a basic event registration form for a single workshop with payment. Use this as a template for simple event registrations.
Example Scenario
- Workshop: "Demo Workshop"
- Price: $100
- Capacity: 20 registrants
- Date: Tomorrow
- Collect: Name and Email
Step-by-Step Process
1. Create Event Session Category
Navigate to: .../Form/{formId}/EventSessionCategories
1. Click "Add New Event Session Category" 2. Enter Category Name: "Workshop Sessions" 3. Leave "Allow multiple session selection" unchecked (for single workshop) 4. Click "Save"
2. Create Event Session in Default Period
Navigate to: .../Form/{formId}/Periods
1. Click "Edit Sessions" next to "Default Period" 2. Click "Add New Session" 3. Fill in session details:
- Title: "Demo Workshop"
- Field Name: (optional, can be auto-generated)
- Maximum Registrants: 20
- Registration End Date: Use JavaScript for datetime fields:
const dateInputs = document.querySelectorAll('input[type="datetime-local"]');
dateInputs[0].value = '2026-02-14T12:00'; // Start
dateInputs[1].value = '2026-02-15T23:59'; // End
dateInputs.forEach(input => input.dispatchEvent(new Event('change', {bubbles: true})));4. Click "Save"
3. Set Up Payment Line Item
Navigate to: .../Form/{formId}/Contents/PaymentInformation
1. Click "Add New Payment Line Item" 2. Fill in:
- Name: "Workshop Registration Fee"
- Type: "flat fee" (keep default)
- Amount: 100
3. Click "Save"
4. Create Registration Section
Navigate to: .../Form/{formId}/Contents
1. Click "Add Section" 2. Fill in:
- Section Name: "Registration Information"
- Section Type: Keep as "Standard"
3. Scroll down and click "Save Changes"
5. Add Name Question
With the "Registration Information" section selected:
1. Click "Add Question" 2. Fill in:
- Question Text: "Full Name"
- Field Name: "full_name"
- Check Is Required
- Type: Keep as "Single Line Text"
3. Click "Save Changes"
6. Add Email Question
With the "Registration Information" section still selected:
1. Click "Add Question" again 2. Fill in:
- Question Text: "Email Address"
- Field Name: "email"
- Check Is Required
- Type: Keep as "Single Line Text"
3. Optionally add email validation pattern 4. Click "Save Changes"
7. Add Event Session Question (Link Registration to Workshop)
With the "Registration Information" section still selected:
1. Click "Add Question" 2. Fill in:
- Question Text: "Select Workshop"
- Field Name: "workshop_session"
- Check Is Required
- Type: Select "Event Session"
- Session Category: Select "Workshop Sessions"
3. Click "Save Changes"
This Event Session question will display "Demo Workshop" as an option, and selecting it will register the user for that session.
8. Verify Form
1. Click "Full Preview" to see the complete form 2. Verify all questions appear correctly 3. Check that payment amount shows $100 4. Test the form if in Test Mode
What Users Will See
1. Registration Information section with Name and Email fields 2. Workshop selection showing "Demo Workshop" 3. Payment summary showing $100.00 4. Submit button to complete registration
Common Variations
Multiple Workshops:
- Create multiple Event Sessions in Step 2
- The Event Session question will show all available workshops as options
Early Bird Pricing:
- Create two payment line items (regular and early bird)
- Use question triggers or routing triggers to apply the appropriate price based on registration date
Guest Registration:
- Change question Type to "Guest" to allow registering additional attendees
- Payment will multiply by number of guests
Collect Additional Info:
- Add more questions to the Registration Information section (phone, dietary restrictions, etc.)
- Use different question types as needed (dropdown, checkboxes, etc.)
Form Contents Reference
Sections
Sections are the top-level containers in a form's contents. All questions must belong to a section. Sections determine the order of content displayed to users.
There are two section types:
- Standard: Displays text and contains questions.
- Person Information: Additionally shows a widget with University of Illinois person data
(student, HR info, etc.) for the response submitter, last modifier, or a Campus Person question answer.
Section fields: Section Name, Section Type, Text Format (Markdown or PlainText), Text (introductory text shown at top), and for Person Information sections: Select Person and Select Default Tab.
To add a section: Form Contents page > select a phase in Global Settings > click "Add Section" in Form Contents panel. To edit: select the section in Form Preview panel > click Edit.
Questions
Questions are data fields within sections. Every question has these core fields:
- Question Text: The label/title displayed to users.
- Field Name: Internal identifier (auto-generated from Question Text, but customizable).
Use snake_case for clarity.
- Additional Instructions: Optional helper text below the question (Markdown or PlainText).
- Is Required: Whether the question must be answered before submission.
- Is Active: Whether the question appears in the form. Set to inactive to archive.
- Type: Determines the question's behavior and available sub-settings.
Question Types
Text types:
- Single Line Text — Short text. Optional: Default Value, pattern matching (phone, zip,
email, URL), or regex matching.
- Multi-line Text — Long text. Optional: max word count, default value, regex.
Selection types:
- Drop Down — Single selection from predefined list. Each option has Choice Display Text
and Answer Value. Optional "Allow Other" for custom entry.
- Radio Buttons — Same as dropdown but displayed as radio buttons.
- Check Boxes — Multiple selection from predefined list. Each option has Choice Display
Text and Answer Value. Optional "Allow Other."
- Select List — Multiple selection from interactive text list.
Data types:
- Date / Time — Date picker. Sub-types: Date, Time, Date and Time. Optional: min/max.
- Number — Numeric input. Sub-types: Decimal, Whole Number. Optional: min/max.
- Single Checkbox (true/false) — Boolean checkbox.
- File Upload — File upload with optional max size and type restriction (Image, Document).
Special types:
- Campus Person (NetId or UIN) — Matches against U of I directories.
- Course CRN — Matches against campus course database.
- Time Stamp — Auto-records submission time (read-only).
- User Stamp — Auto-records last modifier info (read-only).
- Signature — Digital signature checkbox that records timestamp and user info.
- Multiple Questions — Composite question displayed as a table with sub-questions as
columns. Users add rows.
- Person Attribute — Displays a person attribute (read-only).
Event Registration only:
- Event Session — Lets users select event sessions from a category. Set the Session
Category to link to the appropriate sessions. Displays as checkboxes (if category allows multiple selection) or radio buttons (single selection).
- Guest — Number of guests plus optional detail sub-questions.
Question Triggers
Question triggers allow one question's visibility, required state, or value to change based on another question's answer. Both questions must be in the same section.
To set up: Edit a question > scroll to bottom > check "This question is triggered by another question's value." Configure:
1. Trigger Question: Select the source question (must be in same section). 2. Match Type:
- Defined choice match — Select from the trigger question's predefined choices
(only for multi-choice question types).
- Exact value match — Enter a specific value to match.
- Regular expression match — Enter a regex pattern.
- Has value — Trigger when the question has any value or is empty.
3. Trigger Actions (can set multiple):
- Set Question Visibility: visible (hidden by default, shows on match) or hidden
(visible by default, hides on match).
- Set Required: required or not required.
- Set Question Value: an explicit value, the value of another question, or clear value.
Common pattern for event registration: A Check Boxes question lists available camps/events. Each Event Session question is triggered by this checkbox question using "defined choice match" to show/hide based on which checkbox is selected. Trigger actions: Set Visibility to visible, Set Required to not required.
Known Gotchas and Troubleshooting
Self-Registration "Not Allowed" Error
Symptom: Users see "Registration Not Allowed — Sorry, self-registration is not allowed for this form" when trying to register a local account.
Fix: Navigate to the Form Group (not the Form) > Local Users page. Check "Allow users to register their own accounts." This is a Form Group-level setting that is easily overlooked because the Form-level Authentication tab shows Local Authentication as enabled.
Breadcrumb Navigation Failures
Symptom: Clicking breadcrumb links in the admin interface sometimes doesn't navigate.
Fix: Use direct URL navigation instead. Construct the URL by appending the desired page path to the form's base URL (e.g., .../Form/{formId}/Contents).
Payment Shows $0.00
Symptom: The payment page shows $0.00 total even though sessions have prices.
Cause: Payment line items are missing for some or all session questions. Each Event Session question that should generate a charge needs its own payment line item configured under Payment Information.
Fix: Go to Form Contents > Payment Information. Add a payment line item for each Event Session question, using type "the value of a question in dollars" and selecting the appropriate session question as the source.
Event Session Question Shows No Options
Symptom: An Event Session question appears blank with no sessions to select.
Cause: Either no event sessions exist in the linked category for the current period, or the Session Category on the question doesn't match the intended category.
Fix: Verify sessions exist: Periods > Edit Sessions for the current period. Check that the Event Session question's Session Category matches the category containing the desired sessions.
Deleting Phases Breaks Triggers
Symptom: After deleting a phase, routing triggers show errors or broken references.
Cause: Triggers that referenced the deleted phase (in conditions like "Current Phase" or actions like "Change Phase") now point to nothing.
Prevention: Always edit triggers to remove references to a phase BEFORE deleting it. If already broken, edit the affected triggers and update their conditions/actions to reference valid phases.
Period Date Blocking Access
Symptom: Form appears to be properly configured but users can't access it.
Cause: The current date is outside the active period's start/end date range.
Fix: Check Periods page and verify the period's start date is in the past and end date is in the future.
Email Not Validated on Registration
Symptom: Users can register with invalid email addresses (e.g., .vom instead of .com) and still receive authentication emails.
Note: FormBuilder's local registration does not perform client-side email TLD validation. Invalid emails may still receive messages if the mail server accepts them. This is a known limitation of the platform.
Form Group vs Form Level Settings
Many settings that seem like they should be on the Form are actually at the Form Group level:
- Local Users / self-registration → Form Group > Local Users
- Security Groups → Form Group > Security Groups
- Security Sets → Form Group > Security Sets
- Testing email address → Form Group settings
When a setting isn't found at the Form level, check the Form Group level.
Event Session Categories vs Event Sessions
Categories are form-level (persist across periods). Sessions are period-level (must be recreated each period). Don't confuse the two — if you need to add a new type of session, first create the category, then create sessions within it for the relevant period.
Datetime Fields Don't Accept Typed Input (Browser Automation)
Symptom: When creating or editing Event Sessions, typing dates into Registration Start/End Date fields fails validation or shows errors like "Please enter both a date and time."
Cause: The datetime-local input fields used in Event Session forms don't reliably accept typed input through browser automation tools. The browser's native date picker is expected.
Fix for Browser Automation: Use JavaScript to set datetime values directly:
const dateTimeInputs = document.querySelectorAll('input[type="datetime-local"]');
dateTimeInputs[0].value = '2026-02-14T12:00'; // Start date
dateTimeInputs[1].value = '2026-02-15T23:59'; // End date
dateTimeInputs.forEach(input => {
input.dispatchEvent(new Event('change', { bubbles: true }));
});The ISO 8601 format is required: YYYY-MM-DDTHH:MM (e.g., 2026-02-15T23:59).
Manual Entry: When filling forms manually, click the calendar icon or date field to use the browser's native date/time picker rather than typing.
Question Triggers Only Work Within Same Section
Question triggers can only reference other questions in the same section. If you need a question in Section B to react to an answer in Section A, you cannot use a question trigger. You would need to use a routing trigger with a conditional statement instead.
Payments Reference
Enabling Payments
Navigate to: Form dashboard > Form Properties > Manage > "Payment Details" tab.
Check "This form accepts payments" and select payment types:
- Allow credit card payments: Requires a CFOAPAL (Chart of Accounts string). Must verify
with OBFS Merchant Card Services.
- Allow check payments: Optional custom text shown to users when confirming check payment.
Payment Line Items
Navigate to: Form Contents page > Global Settings > "Payment Information" link. Or URL: .../Form/{formId}/Contents/PaymentInformation
Payment Line Item Types
1. Flat fee: A fixed cost added to every form submission regardless of answers.
2. The value of a question in dollars: Variable pricing based on a question's answer. After selecting the source question, the form shows each possible answer value with a price field. For Event Session questions, session prices auto-populate from the event session definitions.
3. The value of a question multiplied by a base rate: For quantity-based pricing (e.g., ordering multiple items). The question's answer is multiplied by the base rate.
Creating a Payment Line Item
1. Click "+ ADD NEW PAYMENT LINE ITEM" 2. Enter the Name (descriptive label, e.g., "Minecraft and 3D Printing") 3. Select the Type (usually "the value of a question in dollars" for event sessions) 4. Select the Source Question (the Event Session or other question that determines price) 5. Set prices for each answer option (auto-populated for Event Session questions) 6. Verify the Destination CFOAPAL (defaults to the form's CFOAPAL; can override per line item) 7. Click Save
CFOAPAL
The CFOAPAL is the University of Illinois accounting string (Chart-Fund-Organization-Account- Program-Activity-Location) that determines where payment revenue is deposited. Format example: 1-303853-902000-305265-902085. Each line item can use the form default or specify an alternate CFOAPAL.
Workflow and Lifecycle Reference
Phases
Phases are the steps in a form's workflow. Three types:
- Data Collection (one per form): Where users fill out the form.
- Review Approval (multiple allowed): Where admins review, approve, or take action.
- Archive (one per form): Final resting place for completed responses.
Navigate to: Form dashboard > "Phases" under Data Collection and Form Lifecycle. Or URL: .../Form/{formId}/Phases
Each phase has a title, type, and phase permissions that control which sections are visible and who can view/edit them.
To add: Click "+ Add Phase." To edit: Click gear icon > "Edit Phase/Permissions."
Routing Triggers
Routing triggers automate actions when conditions are met. They connect phases and drive the workflow.
Navigate to: Form dashboard > "Routing Triggers" under Data Collection and Form Lifecycle. Or URL: .../Form/{formId}/RoutingTriggers
Trigger Properties
- Trigger Name: Display name.
- Active Status: Whether the trigger runs. Uncheck to disable without deleting.
- Number of triggers per period / per form response: Limits on execution count.
- Stop Further Evaluation: If checked, prevents other triggers from firing simultaneously.
- Trigger Evaluation Time:
- "Each time the form response is saved" (most common)
- "After the form response has matched the trigger condition for a given length of time"
(timed trigger)
- "At a specific date and time" (scheduled trigger)
Trigger Conditions (Conditional Statements)
Conditions determine WHEN a trigger fires. Available condition types:
- Answer Value: Checks a question's answer. Match types: Defined Choice Match, Exact
Value Match, Regular Expression Match, Has Value.
- Text Merge Field: Checks a text merge field value. Same match types except no Defined
Choice Match.
- Form Submit Date: Based on when the response was submitted.
- Form Submit State: Whether the response has been submitted at least once or not.
- Response Saved for Later: Whether "Save and Return Later" was used.
- Form Cancelled/Waitlisted/Registered State: Registration status checks.
- Latest Reservation Attempt: Success/failure of last registration attempt (Advanced
Mode only).
- Payment Promised/Status/Method: Payment state checks.
- Group Membership: Whether a user belongs to a security group.
- Current Date: Date range check.
- Current Phase: Checks the response's current phase.
- Associated Period: Checks which period the response belongs to.
Logical operators for combining conditions: And (all must be true), Or (any must be true), Not (negation). These allow building complex conditional statements.
Routing Actions
Actions determine WHAT happens when the trigger fires. Types:
- Change Phase: Move the response to a different phase. Select target phase from dropdown.
- Send Email: Send a custom email with text merge support. Configure recipients, CC,
subject, body. Can attach files and PDF reports.
- Set Question Value: Set a question's value to an explicit value, another question's
value, or clear it.
- Fire Webhook: Call an external web service.
- Perform Registration Action (Advanced Mode only): Hold slot, attempt registration,
force hold, force register, or cancel registration.
A single trigger can have multiple routing actions of different types.
Critical Safety Rules
- Edit trigger conditions/actions BEFORE deleting phases. If a trigger references Phase X
in its condition (e.g., "Current Phase = Phase X") or action (e.g., "Change Phase to X"), deleting Phase X first creates a broken reference. Always update the trigger to remove the reference, then delete the phase.
- Deactivate before deleting when unsure. Uncheck "Active Status" on a trigger to disable
it without removing it, so you can verify the form still works correctly before permanent deletion.