WP Webhooks / Examples / IvyForms to Webhook
Example · IvyForms

IvyForms Webhooks: Built-In Integration, Configured by AI

IvyForms doesn't include a built-in webhook feature — but Webhook Actions ships a native IvyForms integration. Describe the n8n forwarding you want to Build with AI and the agent wires it up; or click through five manual steps. Either way: queued delivery, retries, and a full event log.

~5 min read Updated Jul 17, 2026
ivyformswebhookn8n

TL;DR

  • IvyForms has no native webhook — Build with AI wires the plugin's built-in ivyforms/form/after_submission integration to n8n from one sentence
  • The webhook is created disabled; you review the plan, confirm enable, and test with a real submission
  • Delivery is queued with automatic retries (1 min, 2 min, 4 min, 8 min — 5 attempts), full event log, and one-click replay
/ Build with AI

Describe It Once — The Agent Builds It

This example uses Webhook Actions by Flow Systems — a free WordPress plugin whose admin opens on the Build with AI screen: describe the integration or automation you want, and the agent proposes a plan you can edit, then builds and tests it for you.

Open Webhook Actions in the WordPress admin and type:

prompt — paste into Build with AI

When an IvyForms form is submitted, send it as JSON to my n8n webhook: https://your-n8n-url/webhook/test
Build with AI — describe the IvyForms → n8n integration in plain language and press Build

The agent gathers context first — you'll see read-only ability chips like list_triggers and get_trigger_schema. IvyForms is one of the plugin's built-in integrations, so the agent selects ivyforms/form/after_submission itself and knows the payload shape it produces.

It then proposes an ordered plan: create the webhook, point it at your n8n URL, and map the numeric field IDs to readable keys. With "Review plan before running" enabled you can edit any step before it executes.

The proposed plan — trigger, endpoint, and field mapping as editable steps before anything is created

When the run finishes you get "Build complete." with a one-click enable toggle; new webhooks are always created disabled until you confirm.

Build complete — review the result, flip the enable toggle, and submit a test form
/ Manual Setup

Prefer to Set It Up by Hand?

The same result takes five steps in the admin UI — no AI provider needed:

  1. Install the plugin

    Search for FlowSystems in Plugins → Add Plugin — it narrows the WordPress.org search to exactly one result.

  2. Create a new webhook

    Go to Webhooks → Add Webhook, name it (e.g., "IvyForms → n8n").

  3. Select the trigger

    Set the WordPress action hook to ivyforms/form/after_submission — it fires once per successful IvyForms submission.

    action hook — paste into the trigger field

    ivyforms/form/after_submission
    Webhook Actions admin — trigger set to ivyforms/form/after_submission, with a captured IvyForms payload visible in the Payload Mapping panel on the right
  4. Set the n8n webhook URL

    In n8n, add a Webhook node, set HTTP Method to POST, and copy its URL into the plugin's webhook URL field.

  5. Save and test

    Submit your IvyForms form and check the Event Log for the delivery status and payload. In n8n, "Listen for test event" shows the incoming data for mapping to subsequent nodes.

    Webhook Actions event log — IvyForms submission delivered successfully; the Log Details panel shows the full payload that was sent

Writing the integration yourself against the hook? The signature (4 args: $formId, $submissionData, $formFields, $entryId), a working wp_remote_post() example, and the field-ID-to-label mapping are covered in the ivyforms/form/after_submission hook reference.

/ Payload

Example Payload

Here's what a real IvyForms submission looks like when it arrives at your n8n webhook. args[1] contains the submitted values keyed by numeric field ID (not field name), plus formId, postId, and referer. args[2] is the full field definition array — use it to map IDs to human-readable labels.

POST body — application/json

{
  "event": {
    "id": "c3194779-575a-432e-be87-2e739c4a7a5b",
    "timestamp": "2026-03-27T21:59:03Z",
    "version": "1.0"
  },
  "hook": "ivyforms/form/after_submission",
  "args": [
    1,
    {
      "1": "Mateusz",
      "2": "[email protected]",
      "3": "testing webhook",
      "formId": 1,
      "postId": 20,
      "referer": ""
    },
    [
      {
        "__type": "IvyForms\Entity\Field\Field",
        "id": 1,
        "label": "Name",
        "type": "text",
        "required": true,
        "value": "Mateusz"
      },
      {
        "__type": "IvyForms\Entity\Field\Field",
        "id": 2,
        "label": "Email",
        "type": "email",
        "required": true,
        "value": "[email protected]"
      },
      {
        "__type": "IvyForms\Entity\Field\Field",
        "id": 3,
        "label": "Message",
        "type": "textarea",
        "required": false,
        "value": "testing webhook"
      }
    ],
    3
  ],
  "timestamp": 1774648743,
  "site": {
    "url": "https://webhook-actions.local"
  }
}

args[0] is the form ID. args[1] is the submission data — field values are keyed by numeric field ID ("1", "2", "3"…), not by label. args[2] is the field definitions array — each object has id, label, type, and value. args[3] is the entry ID (null if entry storage is disabled in IvyForms). Let Build with AI apply a field mapping and n8n receives flat keys like name and email instead.

/ Reliability

What You Get Beyond the Setup

Every delivery is dispatched from a background queue, so form submissions are never blocked by a slow or unavailable endpoint. Failures retry automatically with exponential backoff — 1 min, 2 min, 4 min, 8 min, 5 attempts — and every attempt is logged with status code and response body. Anything that exhausts its retries stays in the event log, replayable from the admin UI or via the REST API (POST /wp-json/fswa/v1/logs/{id}/retry) — without asking the user to resubmit.

Webhook Actions event log — IvyForms delivery failed with HTTP 500; next retry already scheduled automatically, full payload preserved for replay

Why this matters in production — and why bare wp_remote_post() integrations lose submissions silently — is covered in Why WordPress webhooks silently fail in production and How the retry and replay system works.

/Notes
Webhook Actions by Flow Systems — plugin overview
ivyforms/form/after_submission hook reference — parameters, field-ID mapping, and code examples
WordPress Webhook REST API — retry and replay documentation
FAQ

Common questions always ask.

Don't see yours? Open an issue on GitHub or check the full reference in the API docs.

Can AI set up my IvyForms webhook? +
Yes. The free Webhook Actions by Flow Systems plugin includes Build with AI — describe the integration in plain language ("When an IvyForms form is submitted, send it as JSON to my n8n webhook"), and the agent selects the plugin's built-in IvyForms trigger, proposes a plan you can edit, then creates the webhook with endpoint and field mapping configured. New webhooks are created disabled until you confirm.
Does IvyForms support webhooks natively? +
Not natively. IvyForms doesn't ship with a built-in webhook feature. To send form data to a webhook endpoint you need custom code using the ivyforms/form/after_submission action hook, or a plugin that handles webhook dispatch for you — Webhook Actions by Flow Systems includes a built-in IvyForms integration.
How do I add a webhook to IvyForms? +
The fastest way is the Build with AI screen in the Webhook Actions by Flow Systems plugin: describe the integration in one sentence and the agent builds it on the plugin's built-in IvyForms integration. Manually, you create a webhook in the plugin admin, select ivyforms/form/after_submission as the trigger, and paste your endpoint URL. Either way you get queued delivery with automatic retries and logging.
What happens if my n8n webhook is down when IvyForms submits? +
With a bare wp_remote_post() call, the data is lost silently — there's no retry and no log entry. With a queue-based system, the failed delivery is stored and retried automatically with exponential backoff (1 min, 2 min, 4 min, 8 min — 5 attempts). You can also replay any failed submission manually from the WordPress admin.
Can I retry failed IvyForms webhook deliveries? +
Yes, if you use a plugin with retry support. Webhook Actions by Flow Systems retries failed deliveries automatically and also exposes a REST API endpoint (POST /wp-json/fswa/v1/logs/{id}/retry) that lets you replay any past submission — including successful ones.
Ready

Your next automation is
one sentence away.

$ wp plugin install flowsystems-webhook-actions --activate