FlowRunner
PricingContact
Theme
Start Free

WS Form

Forms

WS Form is a drag and drop form builder plugin for WordPress. Agents create, import, export and style forms, read and manage submissions, and react to new submissions on your own WordPress site.

1 trigger 45 actions Basic auth available
WS Form website Platform Documentation Capability data verified 2026-08-26
A campaign brief asks for two new qualifying fields on the live registration form
Get Form reads the working draft with its tabs, sections and existing fields
Create Field and Update Field add the fields to the right section of the draft
Get Form Placements lists every post and page the form is currently embedded on
Get System Information confirms the site's WS Form edition and active framework support what was asked for
The agent posts the staged field list and the affected pages back to the requester
The site owner approves, and only then does the agent call Publish Form

What This Integration Enables

WS Form is not a SaaS product, and that is the whole argument for it. It is a plugin running inside the customer's own WordPress site, storing forms and submissions in that site's own database tables. There is no vendor endpoint in the path and no vendor account holding the answers. Access is decided entirely by WordPress: the connection authenticates as a WordPress user through an Application Password, and what an agent can do is exactly the set of WS Form capabilities that user has been granted. For teams whose form data is the sensitive part, that is a materially different arrangement from every hosted form builder they were offered instead.

FlowRunner agents work the full plugin surface: reading and versioning form definitions, building tabs, sections and fields on the draft, publishing when a person says so, enumerating and annotating submissions, rerunning a failed notification action, and managing reusable styles. Every one of those operations is built and verified against the plugin's own REST routes. The human-in-the-loop boundary lands in an unusually clean place here, because WS Form already separates the draft copy from the published one. The agent gets the draft. The person gets the publish.

Without FlowRunner

Form edits wait on wp-admin Changing a live form means a person opening the site backend, competing with everything else on the roadmap
The unread badge is the queue Whether a submission gets seen depends on someone noticing the count in wp-admin
Data leaves the site to be useful Getting submissions into the CRM means an export, or a relay that sees every answer on its way through

With FlowRunner

Structure is staged, not shipped Fields, sections and tabs are built and reviewed on the draft while visitors keep seeing the current form
The queue survives automation An agent reads a submission, annotates it, and puts it back into the unread state so a person still sees it
Answers stay in your database Reads and writes go to the site's own WordPress install, authenticated as one of the site's own users

Use Case Scenarios

  • Field changes staged, then published on a person's word

    Marketing wants two qualifying questions added to the registration form before a campaign goes live. The agent reads the current definition with Get Form, resolves the target section with List Form Sections, and calls Create Field twice followed by Update Field to set the labels, validation and choice options through the field settings. Nothing a visitor sees has changed yet, because every structural edit lands on the draft. The agent posts the staged field list, alongside the pages Get Form Placements says the form appears on, and waits. On approval it calls Publish Form. If the answer is no, Roll Back Form discards the draft edits and the live form is untouched.

  • Triage that does not steal the queue

    On New Submission fires for each new entry. The agent reads it in full with Get Submission, classifies it, creates or updates the contact in HubSpot, and writes what it decided as an internal note with Create Submission Note so the reasoning is visible to whoever opens the record in wp-admin. Submissions it flags as needing attention get Set Submission Starred, and a row lands in the campaign tab in Google Sheets so the weekly numbers do not need an export. Then it does the step most integrations skip: because Get Submission marks a submission as viewed as a side effect of reading it, the agent calls Set Submission Viewed to put it back into the unread state. A person's queue should not empty because a machine looked at it.

  • Moving a form between sites without breaking the one it left

    An agency runs the same lead form on several client sites. The agent calls Export Form JSON on the reference site, stores the stamped document, and calls Create Form From JSON on the target site, then Get Form Shortcode and hands the snippet to the WordPress connector, which places it into the landing page in the same run. Before it touches the form on the site being replaced, it runs Get Form Placements and reports every post and page that embeds it. That list is the human moment: a form that looks retired in the admin screen is often still rendering on a landing page nobody remembered, and the agent surfaces that rather than discovering it afterward.

Human-in-Loop Highlight

WS Form makes structural work reversible right up to one operation, and then not at all. Every field, section, tab and settings edit lands on the draft, and Roll Back Form restores the draft to match whatever is currently published, so an agent can build freely and undo cleanly. Publish Form is the moment that stops being true. After a publish, the bad version is the published version, and Roll Back Form now restores the draft to it. The recovery paths that remain are Unpublish Form, which takes the form off the page entirely and leaves visitors with nothing where a form used to be, or rebuilding the edits by hand. On a form embedded in a live landing page, neither is a good afternoon. So the agent stops there and asks: "Registration Form draft is ready. Adding 2 fields to the Qualification section, changing 1 validation rule. This form renders on 3 pages, including /events/spring-summit. Publishing replaces what visitors see now, and the only rollback afterward is unpublishing the form. Publish?" Everything up to that sentence is the agent's work. The sentence itself is not.

Agent processes routinely
Detects exception requiring judgment
Clear match Continues automatically
Ambiguous Routes to human via preferred channel
Human decides
Agent resumes with decision

Agent Capabilities

45 actions

Forms

16
  • List Forms Lists the WS Form forms on the site with each form's identifier, label, status and submission counts. Prefers the WordPress Abilities API and falls back to the plugin's own list route on older WordPress versions, where the fallback returns identifiers and labels only.
  • Get Form Retrieves the complete draft definition of a form, including its tabs, sections, fields and settings. This reads the working draft rather than what visitors see, and WS Form strips sensitive action configuration before returning it.
  • Get Published Form Retrieves the published version, which is the definition visitors are currently served. The right read when a flow needs the field identifiers and labels a live visitor will actually encounter.
  • Export Form JSON Exports a form as the portable WS Form JSON document its own import feature uses, stamped with an identifier, a version and an integrity checksum. Use it to version a form, move it between sites, or feed Create Form From JSON.
  • Create Form From JSON Creates a new form from a WS Form JSON definition. The way to clone a form onto another site or build one programmatically. Runs through the Abilities API and is not affected by the plugin's Allow Updates setting.
  • Update Form From JSON Replaces an existing form's entire definition with a JSON document, overwriting tabs, sections, fields and settings in one call. A whole document write, so read the current definition with Export Form JSON first if only part of it should change. Requires the site's Allow Updates setting, which is off by default.
  • Update Form Settings Updates a form's label and settings without touching its fields. Notification behavior, spam controls, limits and labels are all settings meta keys. Changes land on the draft and reach visitors only after a publish.
  • Publish Form Promotes the current draft to the version served to visitors. The one operation in this connector with no clean undo, and the reason this page has a human gate.
  • Unpublish Form Returns a published form to draft status so it stops being served, keeping the definition intact. The way to take a form offline temporarily rather than deleting it.
  • Roll Back Form Discards every unpublished draft edit and restores the draft to match the published version. The recovery path after an unwanted programmatic edit, and it cannot recover anything that has already been published.
  • Clone Form Duplicates a form with its tabs, sections, fields, actions and settings, returning the new identifier. The copy is created as a draft.
  • Delete Form Moves a form to the WS Form trash, where Restore Form can bring it back. Permanent deletion is refused unless the site has explicitly opted in through a filter, so trashing is both the default and the only behavior most sites allow. Requires the site's Allow Deletes setting, which is off by default.
  • Restore Form Restores a trashed form to draft status so it can be edited and published again. Pairing this with Delete Form is what makes form removal reversible from a flow.
  • Get Form Shortcode Returns the WordPress shortcode that renders a form, ready to paste into a post, page or widget. Useful right after a flow creates a form, so the operator gets the exact snippet.
  • Get Form Placements Lists every post, page or other location on the site where a form is currently embedded. Run it before deleting or restructuring a form so a flow knows what breaks.
  • Get Form Statistics Returns view, save and submission counts for a form, optionally narrowed to a date range, so a flow can report on conversion without reading every submission. Dates are read in the site's own timezone.

Form Structure

12
  • List Form Fields Lists every field with its identifier, label, type and the section and tab it sits in. The cheapest way to map field identifiers without pulling the whole definition.
  • List Form Sections Lists a form's sections with their identifiers, labels and parent tab. Sections are the containers fields live in, so a section identifier is needed before anything can be placed.
  • List Form Tabs Lists a form's tabs with identifiers and labels. Tabs in the editor are groups in the data model, and more than one of them turns a form into a multi step form.
  • Create Field Adds a field of a chosen type to a section and returns its identifier. The field is created with the type's defaults, so follow it with Update Field. The change lands on the draft.
  • Update Field Updates a field's label and settings. Everything beyond the label lives in meta keys, so validation, placeholder text, default values and choice options are all set through the settings object. The change lands on the draft.
  • Delete Field Removes a field from the draft definition and reorders the rest of its section. Existing submissions keep the values already captured for it. Roll Back Form can undo this while the change is unpublished.
  • Create Section Adds a section to a tab and returns its identifier. Create one before adding fields to a new area of a form.
  • Update Section Updates a section's label and settings, which control layout behavior such as responsive breakpoints, visibility conditions and repetition.
  • Delete Section Removes a section from the draft together with every field it contains. Check List Form Fields first so a flow knows what goes with it.
  • Create Tab Adds a tab to a form and returns its identifier. More than one tab makes the form multi step, so add the navigation fields WS Form provides for moving between steps.
  • Update Tab Updates a tab's label and settings. The label is the step name visitors see in a multi step form.
  • Delete Tab Removes a tab from the draft together with every section and field inside it. The widest reaching structural delete in the connector, so confirm the contents first.

Submissions

9
  • List Submissions Lists submissions with field values already resolved to labels, plus status, timestamps and the submitting WordPress user. Supports date filtering, keyword search across values, status filtering and paging. The only route WS Form offers for enumerating submissions.
  • Get Submission Retrieves one submission in full, including every field value, the actions that ran when it was submitted, and its starred and viewed flags. Reading marks the submission as viewed as a side effect, which clears it from the wp-admin unread count.
  • Get Submission By Hash Retrieves a submission by the hash WS Form issues when a visitor saves a partially completed form, returning the publicly safe portion. This is what powers save and resume links.
  • Submit Form Submits a form exactly as a visitor's browser would, running every attached WS Form action and storing a submission record. Sent unauthenticated by design, because WS Form requires a WordPress nonce on authenticated submissions and a nonce cannot be minted outside the site, so the target form must be published and publicly submittable.
  • Update Submission Edits a stored submission's field values or status, which is how a flow corrects captured data or moves a record to spam or trash.
  • Set Submission Starred Stars or unstars a submission so it stands out in the WS Form submissions screen. Used to flag records a flow has classified as needing a person.
  • Set Submission Viewed Marks a submission as viewed or unviewed, driving the wp-admin unread badge. Because reading a submission marks it viewed, this is how a flow returns an automatically read record to a person's unread queue.
  • Rerun Submission Action Reruns a single WS Form action against a stored submission, identified by its position in the actions array. The supported way to resend a notification email or retry a failed integration without creating a duplicate submission.
  • Get Unread Submission Count Returns the total unread submissions across every form on the site, the same figure shown as a badge in the admin menu. Site wide only, so use List Submissions for a per form figure.

Submission Notes

4
  • List Submission Notes Lists the internal notes on a submission with author, timestamp and content. This is where annotations left by earlier flow runs are found.
  • Create Submission Note Adds an internal note attributed to the WordPress user the connection authenticates as. Used to record what a flow decided about a submission, visible to whoever reviews it in wp-admin.
  • Update Submission Note Replaces the content of an existing note. WS Form verifies the note belongs to the submission before writing, so both identifiers must match.
  • Delete Submission Note Permanently removes a note from a submission. There is no undo, and the submission itself is untouched.

Styles

3
  • List Styles Lists the WS Form styles defined on the site with identifier, label and status. Styles are reusable visual themes assignable to individual forms, and they need the WS Form styler to be the site's active framework.
  • Get Style Retrieves one style with its label, status and the CSS variables defining its colors, spacing and typography. Read a style before creating a variant so the new one starts from known values.
  • Create Style Creates a style, optionally from a built in template, and optionally assigns it to a form or makes it the site default in the same call. Setting a site default changes every form without its own style.

System

1
  • Get System Information Returns the WS Form system report for the site: plugin version and edition, active form framework, PHP and WordPress versions and relevant server limits. Run it first when diagnosing a refusal, because edition and framework decide what is available.

Triggers

1 triggers

Event Triggers

1
  • On New Submission Fires once for every new submission received by the watched form, delivering the field values already resolved to their field labels. WS Form exposes no webhook registration API, so this polls the submission list and compares identifiers between cycles, which means it requires WordPress 6.9 or later. The first cycle records the current newest submission and emits nothing, so only submissions received after the trigger is enabled are delivered.

Frequently Asked Questions

What can FlowRunner do with WS Form?

FlowRunner agents can run List Forms, Get Form, and Get Published Form in WS Form, plus 42 more actions.

Does connecting WS Form to FlowRunner require OAuth?

No. WS Form connects to FlowRunner with basic authentication (a username and password), no OAuth flow required.

Can WS Form trigger a FlowRunner workflow automatically?

Yes. WS Form supports 1 trigger that can start a FlowRunner workflow automatically.

Start building with WS Form

Free plan, no card required. Connect in minutes.