Pro module4 abilities

WS Form ability reference

Reference for the GoBuildWP Pro 1.12.4 source. Installed schemas and policy remain authoritative.

This WS Form ability reference covers how an agent can list a site's WS Form forms, inspect one form's fields and submit actions, read its submissions with contact details, passwords, payment data, uploads and IPs held back (names and other answers are still returned), and make a narrow edit to a form's title, submit button, or a field's label, placeholder or required flag. The edit is logged in the change ledger but cannot be rolled back from it.

Read-only, write and destructive groups describe the source annotations. They do not establish a minimum safety profile, human approval or undo support. Those controls are separate: check the installed ability, the connected user and the active site policy before calling it. A read can still return sensitive data. These pages are not evidence that every operation passed an end-to-end runtime test.

What WS Form needs before these load

WS Form must be active, in either its LITE or PRO edition. Pro's manifest loads the module when the WS_Form_Form class or the WS_FORM_VERSION constant is present; there is no GoBuildWP version floor, and the vendor calls were checked against WS Form LITE 1.12.10. Access follows WS Form's own capabilities on top of GoBuildWP's run check: read_form to list and read forms, read_submission for submissions, and both edit_form and publish_form for the edit. With WS Form deactivated the module does not load and none of its calls are offered.

WS Form editions
free, pro

What a WS Form submission reveals to the agent

Submissions are filtered before they leave the site. Passwords, card data, uploads, signatures and any visitor IP WS Form recorded follow the form-entry-redaction rule that Pro hands to its form kits from includes/wppilot-kit-form-redaction.php, and come back as "[REDACTED]" with a reason. Email and phone answers are withheld every time. In any other free-text answer, email addresses and runs of digits and number separators holding seven or more digits are cut out and marked contact_in_text. Date, time and number fields are not scanned, and shorter runs such as years survive, but a long order number or a full date typed as free text is cut out too. Without that shared rule, every answer is withheld (no_redaction_rule).

Drafts, spam and trashed submissions are not listed. Email actions report a recipient_count, never the addresses, and redacted values stay readable to the owner under WS Form > Submissions.

Editor copy, published copy and the missing undo

WS Form spreads a form across its own tables (wp_wsf_form, wp_wsf_group, wp_wsf_section, wp_wsf_field and a _meta table for each) and serves visitors a JSON copy taken at publish time. An edit lands in the editor copy. wppilot/wsform-update-form republishes through db_publish() when the form was live and its checksum still matched published_checksum, because publishing would otherwise release someone else's pending edits too; in every other case publish_note explains that the owner needs to publish. With WS Form's publish_auto option on, WS Form publishes by itself.

Fields are addressed by numeric id. A field counts as answer-taking when WS Form's submit_save flag says so; buttons and text blocks can be relabelled but refuse a placeholder or required change with wsform_field_takes_no_answer. Rolling an edit back is not offered, because WS Form's one whole-form restore is a JSON import that recreates every field under a new id and drafts the form, which would detach past submissions stored as field_<id>. The response's previous block holds the old values for a manual revert.

Example WS Form input: wppilot/wsform-get-form

This one operation declares the 1 top-level input parameters below in wppilot-pro/includes/kits/forms-wsform/src/abilities/get-form.php; form_id is required. Other calls in this module take different arguments. Nested schemas and constraints are not expanded here; the complete live schema a connected client discovers is authoritative.

ParameterType and meaning
form_idrequiredinteger

Representative call sequence

This sequence describes the documented calls and checks to perform. It is not a recorded result from an installed WordPress site. Inspect returned errors and partial results, then verify the saved values and affected output before proceeding.

Make the Phone field on the quote form optional, then see how many enquiries arrived last week.

  1. 01 wppilot/wsform-list-forms Finds the quote form's id and whether has_unpublished_changes is already set.
  2. 02 wppilot/wsform-get-form Returns the fields in order with their numeric ids and required flags, so the Phone field can be named exactly.
  3. 03 wppilot/wsform-update-form Sets required to false on that field, reads it back, and returns previous plus a publish_note saying whether visitors already see the change.
  4. 04 wppilot/wsform-list-entries Lists last week's completed submissions with date_from and date_to in site time; the phone answers come back redacted.

Questions about WS Form

Can the agent see the email address a visitor typed into a WS Form submission?

No. Email and phone answers are always returned as [REDACTED], and addresses typed into other answers are cut out. The site owner can still read them in WS Form's Submissions screen.

How do I reverse a WS Form edit?

Send the values from the result's previous block back through wppilot/wsform-update-form. wppilot/rollback-change will not do it, because the ledger records these edits as irreversible.

WS Form reads

AbilityWhat it does
wppilot/wsform-get-formGet a WS Form FormOne WS Form form by form_id, as saved in WS Form's editor: title, status, has_unpublished_changes, shortcode, submit_text (the submit button label) and every field in order with its numeric id (which wppilot/wsform-update-form takes), type, label, placeholder, required, takes_answer (false for buttons, text blocks and dividers) and options (for selects, checkboxes and radios). settings says whether submissions are saved, whether the visitor IP is recorded, and whether a submission limit or schedule applies. actions lists what happens on submit (label, type, enabled); email actions give recipient_count, cc_count, bcc_count and subject, never the addresses. Read-only.
wppilot/wsform-list-entriesList WS Form SubmissionsSubmitted entries for one WS Form form, newest first: id, date_added (site time), status, and answers (field_id, label, type, value). Contact details and sensitive fields are withheld (names and other answers are not):email and phone answers, passwords, card data, uploads, signatures and any recorded visitor IP come back as "[REDACTED]" with a redacted reason, and email addresses or phone numbers typed into any other answer are cut out of it (redacted: "contact_in_text"). date_from and date_to (YYYY-MM-DD, site time, inclusive) narrow the range; limit defaults to 20 (max 100), offset pages; total counts every matching entry. Only completed submissions are listed: saved drafts, spam and trash are not. Read-only.
wppilot/wsform-list-formsList WS Form FormsLists the site's WS Form forms, newest first, trash excluded: id, title, status (publish or draft), has_unpublished_changes (edited in WS Form since it was last published, so visitors still see the older version), field_count (fields that store an answer, not buttons or text blocks), entry_count (submissions WS Form counts for the form) and the shortcode that embeds it. status filters to publish or draft; limit defaults to 20 (max 100), offset pages; total is the number of matching forms. Read-only.

WS Form writes

AbilityWhat it does
wppilot/wsform-update-formUpdate a WS Form FormMakes a small edit to one WS Form form: its title, the submit button text (submit_text), and for any field that takes an answer its label, placeholder or required flag (a button or text block can only be relabelled). Fields are named by the numeric id wppilot/wsform-get-form returns. It cannot add, remove, move or retype fields, or change actions, emails or styling. Every field id is checked before anything is written; the edit is saved through WS Form's own form and field objects and read back. If the form was live with no other unpublished edits it is republished so visitors see the change; otherwise it is left for the owner to publish, and publish_note says which. NOT undoable from the change log: WS Form's only restore would recreate the form's fields under new ids. The result's previous holds the old values; put them back with this same ability if the user asks.

For the task-level view of WS Form, with worked requests and what to check afterwards, see WS Form integration page.