

Webhooks list view
Webhook Actions by Flow Systems is a developer-focused WordPress webhook delivery layer designed for reliable automation workflows.
It adds a persistent queue, automatic retries, and Action Scheduler support for production-grade background processing — so your webhooks don’t get lost when external APIs fail.
Works great with WooCommerce, n8n, Zapier alternatives, and custom APIs.
Any WordPress do_action hook can become a reliable event source — register it as a trigger and the plugin handles queuing, retries, payload mapping, and delivery from there. No custom delivery code required.
Includes built-in Contact Form 7 integration — send CF7 form submissions to webhooks instantly with clean, structured payloads. Replace fragile CF7 email workflows with reliable webhook-based automation.
Unlike basic “fire-and-forget” webhook implementations, this plugin ensures:
Built for production environments where losing events is not acceptable.
👉 Step-by-step example: Send Contact Form 7 submissions to a webhook (n8n demo)
👉 Step-by-step example: Send Gravity Forms Submissions to n8n
👉 Step-by-step example: Send IvyForms submissions to a webhook (n8n demo)
Unlock unlimited conditions, per-webhook retry and backoff settings, type casting in payload mapping, and more.
wp_remote_post() integrationsEvery dispatched webhook includes:
event.id, event.timestamp, event.version in the payloadHTTP headers: X-Event-Id, X-Event-Timestamp, X-Webhook-Id
X-Webhook-Id carries the webhook’s own stable UUID — distinct from the per-event X-Event-Id. When multiple webhooks point to the same endpoint, the receiving system can use X-Webhook-Id to identify which webhook configuration triggered the delivery without inspecting the payload.
This enables downstream deduplication, idempotent workflow design, and reliable debugging across systems.
Webhooks are never sent directly from request execution. Instead:
Smart retry routing:
permanently_failedNo silent failures.
Webhook debugging is difficult when events cannot be reproduced.
Webhook Actions by Flow Systems allows you to replay any webhook event directly from the delivery logs — including successful deliveries and condition-skipped events.
This makes it easy to:
Each replay uses the original payload and event metadata, ensuring consistent behavior across retries and debugging sessions.
Not every WordPress event should trigger a webhook. Conditional dispatch lets you define field-level rules on any webhook — the event is only delivered if the conditions pass. Events that fail the check are logged with a skipped status and can be replayed later after adjusting the conditions.
Conditions are evaluated against the outgoing payload using dot-notation field paths. Each condition specifies a field, an optional type cast, an operator, and a comparison value. The field selector shows the live captured payload so you can click through nested structures and pick the exact path without typing it manually.
Operators include: equals, not equals, contains, starts with, ends with, is empty, has value, greater than, less than, array_contains, object_contains
Type casting before comparison: auto-detect, number, string, boolean, or stringify (JSON-encodes arrays and objects into a string for pattern matching)
Example — WooCommerce: fire only when a specific product is in the order
A woocommerce_order_status_changed hook passes the full order object. The payload includes args.1.line_items — an array of purchased products, each with fields like product_id, quantity, and subtotal. To send a webhook only when product ID 26 appears in the order:
args.1.line_itemshas value key: product_id, value: 26The webhook stays silent for every other order and fires only when that product is purchased. No custom PHP, no extra filters — just a condition rule configured in the admin panel.
The same pattern works for any hook-based event: filter by post type, form field value, user role, order total, or any other field present in the payload.
Free plan includes one condition with AND matching. Upgrade to Pro for unlimited conditions, multiple condition groups with independent AND/OR logic per group, and ANY (OR) matching.
By default, all webhooks are delivered asynchronously via the built-in queue — events are stored, processed in the background, and retried automatically on failure. This is the recommended approach for production sites.
For specific webhooks that require inline delivery (e.g. an internal API that must respond within the same request), you can enable Synchronous Execution per webhook:
Use with caution on user-facing requests — a slow or unreachable endpoint will delay page loads, form submissions, and other frontend interactions.
Operational visibility built into the admin panel:
Status states: pending, processing, success, failed (retrying), permanently_failed
Filter by: event UUID, target URL, date range, status
Queue health metrics:
Designed as an operations console — not just a webhook sender.
Adapt outgoing JSON payloads to match any external API:
"100.50" 100.5)fswa_payload filterPayloads always include stable event metadata for consistency.
Every webhook can be configured to match exactly what the target API expects:
HTTP Method
Choose the method used for each delivery: GET, POST, PUT, PATCH, or DELETE. Default is POST.
Custom Request Headers
Add any number of key/value header pairs sent with every delivery. Header values support dot-notation paths — reference any field from the outgoing payload directly (e.g. event.id, site.url). Resolved at dispatch time against the live payload.
URL Query Parameters
Append query parameters to the endpoint URL at dispatch time. Values also support dot-notation payload resolution.
For GET and DELETE requests — where a request body is not appropriate — query parameters become the primary payload transport. If no params are configured, the full payload is sent as a ?payload= fallback. POST, PUT, and PATCH send a JSON body as normal; any configured params are appended to the URL in addition.
Request details in delivery logs
Every delivery log stores the exact headers sent and the fully resolved URL (including all query parameters), so you can inspect precisely what was dispatched.
The plugin exposes a full operational REST API (/wp-json/fswa/v1/) that powers the admin interface and can also be used directly by external tools, automation systems, AI agents, and CI/CD pipelines.
Every endpoint supports dual authentication:
API Tokens
Create tokens directly from the API Tokens screen in the admin panel. Each token is assigned one of three scopes:
read — GET access to webhooks, logs, queue, health, triggers, and schemasoperational — Read + toggle webhooks on/off, retry and replay log entries, execute queue jobsfull — Operational + create, update, and delete webhooks, schemas, and queue jobsToken authentication is accepted via:
X-FSWA-Token: <token> header (recommended)Authorization: Bearer <token> header?api_token=<token> query parameterTokens can be set to expire and rotated at any time. Rotation issues a new secret immediately while preserving the token’s name, scope, and settings. Token management always requires a WordPress admin login — tokens cannot be used to create or manage other tokens.
Full REST API documentation: REST API Reference
The REST API makes Webhook Actions by Flow Systems accessible to AI-powered tools and coding agents.
Automation systems, CI pipelines, and AI coding assistants (such as Claude Code or Cursor) can safely interact with webhook infrastructure using API tokens without requiring WordPress admin sessions.
Typical AI-driven workflows include:
Because the API exposes operational endpoints for logs, queue jobs, webhooks, and triggers, external agents can treat WordPress as a programmable event infrastructure.
Example scenarios:
• A Claude Code agent analyzes webhook delivery logs and automatically retries failed integrations.
• A CI/CD pipeline disables webhook triggers during deployments and re-enables them afterward.
• Automation systems query webhook health metrics and alert when the queue becomes stuck.
• External dashboards display real-time webhook delivery metrics using API tokens.
This allows WordPress automation pipelines to be controlled entirely through HTTP APIs, enabling advanced integration with AI-driven development workflows.
Webhook Actions Pro extends the plugin with advanced features for production workflows:
Webhook Actions by Flow Systems includes built-in integration with Contact Form 7.
When Contact Form 7 is active, form submissions are automatically converted into structured webhook payloads — no custom code required.
Included in each payload:
Benefits:
This allows you to build reliable form-to-automation pipelines directly from WordPress.
Webhook Actions by Flow Systems now supports Action Scheduler — the same background job system used by WooCommerce.
When available, webhook queue processing automatically switches from WP-Cron to Action Scheduler for improved reliability and scalability.
Benefits:
This makes the plugin suitable for production WooCommerce stores and high-throughput automation pipelines.
/wp-json/fswa/v1/) usable from any HTTP client — not just the admin panelread, operational, full)Most WordPress webhook setups fire once, don’t retry intelligently, don’t provide delivery visibility, and don’t expose event identity.
Webhook Actions by Flow Systems provides:
Upgrade to Webhook Actions Pro for unlimited conditions, per-webhook retry and backoff settings, and more.
Built for developers who need production-grade automation reliability.
fswa_should_dispatch – Decide if a trigger should dispatchfswa_payload – Customize webhook payload before dispatchfswa_capture_payload – Modify the payload just before it is stored as the captured example (does not affect the dispatched payload); args: $payload, $webhookId, $triggerfswa_normalize_object – Normalize a third-party object into an array for payload serializationfswa_headers – Add or modify HTTP headers sent with the requestfswa_require_https – Toggle HTTPS requirementfswa_max_attempts – Configure maximum retry attemptsfswa_backoff_delay – Customize retry backoff delay in secondsfswa_queue_batch_size – Configure batch processing sizefswa_http_timeout – Configure HTTP request timeoutfswa_http_connect_timeout – Configure HTTP connect timeoutfswa_http_args – Customize HTTP request argumentsfswa_available_triggers – Customize available trigger listfswa_webhook_data – Filter webhook configuration data returned by the REST APIfswa_success – Fired after successful webhook deliveryfswa_error – Fired after webhook delivery failurefswa_skipped – Fired when a webhook dispatch is skipped due to a …