Gravity Forms
These abilities register when Gravity Forms is detected on the site and a Pro licence is active. If either is missing the module stays absent rather than failing at call time.
At a glance
Gravity Forms registers 28 abilities: 10 that only read, 12 that write, and 6 marked destructive. That split is the practical answer to how much of this module can run unattended. Reads cost nothing and are safe to repeat, so discovery is the part to be generous with; the writes are where review belongs, and the destructive calls stop for an explicit confirmation every single time regardless of which profile is active.
What this module is for
Operate Gravity Forms forms, fields, confirmations, notifications, settings, and entries while preserving plugin-native schemas and ordering.
Before you rely on it: Test conditional logic, confirmation routes, and notification delivery with non-production data.
Typical workflows
- Create a form and then configure its confirmation path
- Audit notification recipients before an update
- Review entries with an explicit status workflow
The Gravity Forms integration page covers the same module from the workflow side, with the capability map and the questions worth asking before a first write.
Availability on your site
The Gravity Forms module needs three things at once: WPPilot Free as the MCP foundation, an active Pro licence, and the companion plugin detected on the site. Miss any one and the module does not register, which is deliberate: an ability that appears in the tool list but fails at call time is worse than an ability that was never offered. What the connected agent can actually call is then narrowed twice more: by the safety profile active on the site, and by the WordPress capabilities of the user behind the credential. A read that succeeds for an administrator can be absent entirely for an editor.
Every write these abilities perform is recorded in the change ledger, and destructive calls can be routed through the approval queue so a person signs off before anything is applied. A successful tool result means the operation returned, not that the front end, the cache, and every dependent template are correct: that still needs a look.
Reads
Available in every safety profile, including Read Only. Inspection costs nothing and is not rate limited.
| Ability | What it does |
|---|---|
wppilot/gravityforms-check-setupCheck Gravity Forms Setup | Reports the Gravity Forms environment: whether the plugin is active, its version, the field types this install can use, the WP capabilities that gate form/entry management, and the form count. Gravity Forms is a single-SKU paid plugin (no Lite/Pro split), so every form, entry, notification and confirmation surface is available whenever the plugin is active. Call this first before any other gravityforms ability. |
wppilot/gravityforms-get-entryGet Gravity Forms Entry | Return one Gravity Forms entry. Includes the entry meta (id, form_id, status, date_created, date_updated, is_read, is_starred, ip, user_agent, source_url, created_by) and the field values keyed by input id (so for a "1.3" sub-input the key is "1.3"). Each field value is a string — multi-input fields (name, address, checkbox) surface as multiple keys. |
wppilot/gravityforms-get-field-type-schemaGet Gravity Forms Field Type Schema | Describe one Gravity Forms field type — the human-readable label, the description, and the configuration options the agent may set when adding or editing a field of that type. Call check-setup first for the authoritative list of types this install can use; this ability returns gravityforms_unknown_type for a slug not registered (e.g. a Pro add-on field type when the add-on is inactive). |
wppilot/gravityforms-get-field-types-schemaList Gravity Forms Field Types | Return the catalog of every Gravity Forms field type the integration can build via add-field / edit-field on this install. Output is compact: per entry {type, label, category, pro_only}. Use this FIRST when constructing a form, then call wppilot/gravityforms-get-field-type-schema for the per-type settings whitelist + supports[]. Gravity Forms has no Lite/Pro license split — pro_only is always false; categories reflect the Gravity field-editor groupings (standard, advanced, post_fields, pricing_fields). Mirrors the catalog-vs-detail pattern used by wpforms-get-field-types-schema, fluentforms-get-field-types-schema, formidable-get-field-types-schema. |
wppilot/gravityforms-get-formGet Gravity Forms Form | Return the full definition of one Gravity Forms form: fields (indexed array), notifications (id-keyed map), confirmations (id-keyed map), and settings (button, save, pagination, schedule, limit-entries, require-login, post-creation, animation, css classes, etc.). Use include_* flags to slim the response when only inspecting one section. |
wppilot/gravityforms-get-form-canonicalGet Gravity Forms Form (Canonical) | Reads a single Gravity Forms form by id and returns it mapped to the plugin-agnostic form-model-schema vocabulary (17 canonical types: text/email/tel/url/number/textarea/date/time/datetime/select/radio/checkbox/file/hidden/submit/consent/group) used by the form-model-migration skill. The ~47 Gravity Forms native field types fold onto those 17 — composites (name, address) collapse to canonical group with sub-fields; structural-only types (section, page, html) drop with informational warnings; payment and post-creation types (creditcard, product, singleproduct, quantity, option, shipping, total, donation, post_*, calculation) drop with structural warnings. Output keys: fields[] with canonical types, mail_config{} from the first active notification, notifications[] from the remaining ones, messages{} (empty — Gravity Forms has no built-in message catalogue), conditional_rules[] from per-field GF conditionalLogic (mapped 1:1 when expressible), meta{} (source plugin + version + confirmations / settings echo for round-trip), plus warnings[] for everything that does not fit the canonical shape (multi-page forms, anti-spam captcha, complex conditional logic, payment + post-creation fields). Honours the same max_field_bytes truncation contract as wpforms-get-form-canonical (default 8192 bytes for mail_config.body, notifications[].body, with *_truncated flags); pass max_field_bytes: 0 to disable truncation when full-fidelity canonical is required before an execute-mode migration. Returns WP_Error gravityforms_form_not_found when the id does not exist or refers to a trashed form. Use this ability inside the form-model-migration workflow (Phase 2 — read source schema); for ad-hoc inspection outside the migration pipeline, prefer gravityforms-get-form which returns the Gravity-native shape. |
wppilot/gravityforms-list-confirmationsList Gravity Forms Confirmations | List every confirmation configured on a Gravity Forms form, keyed by id. Confirmations decide what the visitor sees after submitting: a message, a redirect to a page, or a redirect to an arbitrary URL. |
wppilot/gravityforms-list-entriesList Gravity Forms Entries | List entries (form submissions) for one form. Returns compact rows (id, form_id, status, date_created, date_updated, is_read, is_starred, ip) — call get-entry to read a single entry's field values. Paginated with limit (default 25, max 200) and offset; filterable by status (active | spam | trash | any) and a date range. |
wppilot/gravityforms-list-formsList Gravity Forms Forms | List Gravity Forms forms with a compact row per form (id, title, status, dates, entry count). Paginated with limit (default 50, max 500) and offset; filterable by status (active | inactive | trash | any). Use get-form to read a single form's full definition (fields, settings, notifications, confirmations). |
wppilot/gravityforms-list-notificationsList Gravity Forms Notifications | List every notification configured on a Gravity Forms form, keyed by id. Use before crafting a notification mutation so you know what already exists and what id to target. |
Writes
Gated by the active profile and your WordPress capabilities. Rate limited to 120 per minute per credential.
| Ability | What it does |
|---|---|
wppilot/gravityforms-add-fieldAdd Gravity Forms Field | Append a field to a Gravity Forms form. Required: form_id, type, label. Type must be in check-setup.available_field_types (an unknown type is rejected). The new field gets the next sequential id from GFFormsModel::get_next_field_id and is appended to the fields[] array. Pass options for type-specific knobs (choices for select/checkbox/radio, inputMask for phone, etc.). |
wppilot/gravityforms-create-confirmationCreate Gravity Forms Confirmation | Append a confirmation to a Gravity Forms form. Required: form_id, name, type (message | page | redirect). For type=message, pass message (defaults to "Thanks for contacting us!"); for type=page, pass pageId (a published page must exist); for type=redirect, pass url (must be a valid absolute URL). New confirmation gets a fresh 13-char id. |
wppilot/gravityforms-create-formCreate Gravity Forms Form | Create a new Gravity Forms form. Required: title. Optional: description, status (active | inactive, default active), and an initial settings override (button, save, pagination, schedule, limit-entries, require-login, etc.). The new form starts empty (no fields) — add fields with add-field in a later step. Returns the new form id plus the same compact row list-forms emits. |
wppilot/gravityforms-create-notificationCreate Gravity Forms Notification | Append a notification to a Gravity Forms form. Required: form_id, name, to. Optional: subject, message, fromName, from, replyTo, bcc, event (form_submission | feed_processed, default form_submission), enabled (default true). Merge tags ({admin_email}, {all_fields}, {Field Name:N}) are accepted verbatim. The new notification gets a fresh 13-char id (uniqid-style). |
wppilot/gravityforms-duplicate-formDuplicate Gravity Forms Form | Duplicate an existing Gravity Forms form. Required: form_id. Optional: title (defaults to "<original title> - Copy 1" — GF auto-bumps the suffix on collision) and status (defaults to "inactive" so the duplicate does not silently start accepting submissions). The new form copies fields, settings, notifications, and confirmations from the source. Entries are NOT copied. |
wppilot/gravityforms-edit-confirmationEdit Gravity Forms Confirmation | Edit a confirmation on a Gravity Forms form. Pass any of: name, type, message, pageId, url, queryString. Switching type validates the new payload (e.g. switching to page requires a valid pageId). |
wppilot/gravityforms-edit-entryEdit Gravity Forms Entry | Update field values on one Gravity Forms entry. Pass fields as a map of input id → new value (e.g. {"1": "New Name", "2.3": "Last"}). Multi-input fields (name, address, checkbox) accept individual sub-input ids ("1.3"). Optional expected_date_updated enables optimistic concurrency — the call rejects with gravityforms_concurrent_modification (409) if the entry was touched since the last read. |
wppilot/gravityforms-edit-fieldEdit Gravity Forms Field | Edit a field on a Gravity Forms form by id. Pass any of: label, description, required, cssClass, adminLabel, options (type-specific keys merged flat). The field type cannot change here — delete + add for a type change. The returned field is the result after the patch is applied. |
wppilot/gravityforms-edit-formEdit Gravity Forms Form | Edit a Gravity Forms form's top-level properties (title, description, is_active) AND/OR apply a partial settings patch. Fields, notifications and confirmations are NOT touched by this ability — use manage-fields / manage-notifications / manage-confirmations for those. Optimistic concurrency: pass expected_date_updated (the value from the last get-form / list-forms call) to detect a concurrent write — the call returns gravityforms_concurrent_modification (409) instead of overwriting. |
wppilot/gravityforms-edit-notificationEdit Gravity Forms Notification | Edit a notification on a Gravity Forms form by id. Pass any of: name, to, subject, message, fromName, from, replyTo, bcc, event, enabled. An empty to is rejected (would silently clear the recipient list). |
wppilot/gravityforms-mark-entryMark Gravity Forms Entry | Toggle a binary flag on an entry: read (is_read) or starred (is_starred). Returns the previous and new values so the caller can see whether the call actually flipped anything (idempotent: passing the existing value is a no-op). |
wppilot/gravityforms-reorder-fieldsReorder Gravity Forms Fields | Reorder the fields[] array of a Gravity Forms form. Pass field_ids as the new positional list — every existing field id MUST appear exactly once, missing or extra ids are rejected. Field ids are NOT renumbered; only the array order changes. |
Destructive
Marked destructive in the source, so each call needs an explicit confirmation flag, every time.
| Ability | What it does |
|---|---|
wppilot/gravityforms-delete-confirmationDelete Gravity Forms Confirmation | Remove a confirmation from a Gravity Forms form by id. Returns the removed confirmation for confirmation. A missing confirmation is treated as idempotent success. |
wppilot/gravityforms-delete-entryDelete Gravity Forms Entry | Delete a Gravity Forms entry. Default trashes the entry (status flips to "trash" — restorable from the GF admin). Pass force=true to permanently delete (irreversible). Returns the previous status so the caller can confirm what was removed. |
wppilot/gravityforms-delete-fieldDelete Gravity Forms Field | Remove a field from a Gravity Forms form by id. The remaining fields keep their positions and ids (gaps are NOT compacted — entries already submitted reference field ids directly, so renumbering would corrupt them). Returns the removed field for confirmation. |
wppilot/gravityforms-delete-formDelete Gravity Forms Form | Delete a Gravity Forms form. Default trashes the form (is_trash flips to 1 — restorable from the Gravity Forms admin or by re-editing the form). Pass force=true to permanently delete the form AND all its entries (irreversible). A form already in trash is a no-op when force=false (idempotent); call with force=true to permanently delete a trashed form. |
wppilot/gravityforms-delete-notificationDelete Gravity Forms Notification | Remove a notification from a Gravity Forms form by id. Returns the removed notification for confirmation. A missing notification is treated as idempotent success. |
wppilot/gravityforms-edit-form-settingsEdit Gravity Forms Form Settings | Replace the settings block of a Gravity Forms form. Settings is the bucket of top-level keys that are NOT fields / notifications / confirmations: button, save, pagination, scheduleForm*, limitEntries*, requireLogin*, postCreation, animation, css classes, etc. The new settings map fully replaces existing settings keys; structural keys (id, title, fields, notifications, confirmations, dates, is_active, is_trash) are protected and cannot be overwritten via this ability. Use edit-form to change title / description / is_active. |