Treat WordPress as a first-class event source for automation. Deliver structured, durable, and observable webhook events to n8n, Make, Zapier, or any API — with retries, unique event identity, and full delivery logging built in.
The real problem isn’t just “sending a webhook.” It’s missing **event durability**, **retry guarantees**, and a **feedback loop into WordPress** when deliveries fail.
do_action event as durable webhook events.Instead of fragile point-to-point integrations, treat WordPress as a resilient event source that can power automation workflows with confidence.
Events are stored and processed independently of the request cycle — enabling durable delivery, backpressure handling, and faster front-end response times regardless of endpoint latency.
Async Queue
Exponential backoff with jitter classifies failures as retryable or permanent — so transient network errors are retried while bad endpoints are quarantined automatically.
Smart Retry
Compose multi-step automations declaratively. A webhook's 2xx response fires one or more downstream webhooks, each receiving the upstream response, sent payload, and pre-mapping original payload — so a single WordPress event can drive a full external graph without ad-hoc wp_remote_post() glue.
Webhook Chains
Every attempt is recorded with HTTP status codes, response bodies, and timing — so debugging an integration failure takes seconds, not guesswork.
Delivery Logs
Transform structured JSON before dispatch so it matches the schema expected by your automation platform, CRM, or API — without custom glue code in between.
Payload Mapping
Each event gets a UUID and precise timestamp at capture time — enabling idempotent processing, deduplication, and reliable auditing in external systems.
Event Identity
Filter events before they fire — send webhooks only when payload field values match your conditions. Eliminate noise and stop wasting downstream API quota on irrelevant events.
Conditional Dispatch
Send webhooks as GET, POST, PUT, PATCH, or DELETE — with per-webhook custom request headers and URL query parameters. Header and param values can reference payload fields via dot-notation so auth tokens, IDs, or any dynamic value travels correctly without extra glue code.
HTTP Method & Headers
Optionally fire a webhook inline during the WordPress request — skipping the queue for the initial attempt. Useful for integrations that need an immediate response, while still falling back to the async retry queue if the endpoint is unavailable.
Synchronous Execution
Full operational REST API for creating webhooks, delivery logs, retry triggers, queue status, and webhook management — usable by CI/CD pipelines, external dashboards, and AI agents.
REST API
Filters and actions let you adjust dispatch logic, headers, timeouts, retry behavior, and error handling — so the plugin fits production requirements without forking core code.
Extensibility
Send a test webhook instantly or via the async queue without triggering real WordPress events. Debug integrations safely against live endpoints before activating in production.
Test Delivery
Queue, retry, logs, conditions, payload mapping, and full HTTP control. Free and open source.
Any native or custom do_action — from user registration to WooCommerce order completion.
Structured JSON payloads are built and stored for durable processing — outside the request lifecycle.
The event is dispatched asynchronously, retried automatically on failures, and logged for observability.
No listener code. No custom integration. Configure the hook in the admin panel — the plugin handles the rest.
Send WooCommerce order data to your ERP system on every new order, status change, or refund.
Automatically push new user registrations and profile updates to HubSpot, Salesforce, or any CRM via webhook. See the HubSpot × WooCommerce series for a full 5-part walkthrough: deals, products, line items, contacts, and the dual-path chain that ties them into one HubSpot graph.
Notify Slack, update a spreadsheet, or trigger an n8n workflow every time a post or custom post type is published.
Fire webhooks from any custom do_action in your theme or plugin — membership events, form submissions, anything. See the Contact Form 7 to webhook example for a full walkthrough.
Push WordPress events to internal APIs, message queues, or microservices for processing outside the WordPress stack.
AI agents and CI/CD pipelines inspect delivery logs, retry failed events, and manage webhook configuration programmatically via scoped API tokens — no admin session required.
Workflow Automation
App Integration
Visual Automation
Any HTTP Endpoint
Any system that accepts HTTP POST requests with JSON payloads works out of the box. Configure the URL, add an optional authorization header, and you're connected.
If it accepts an HTTP request, you can send it a webhook. No glue code, no vendor lock-in.
Webhook requests are dispatched outside the main request lifecycle. User-facing pages are never slowed down by outbound HTTP calls. For a deeper technical explanation of non-blocking architecture, see Async Webhooks Without Blocking in WordPress, and for why most webhook implementations silently fail in production, see Why WordPress Webhooks Silently Fail in Production.
Jobs are queued in a custom database table and processed in batches. Designed for system cron or a token‑protected REST endpoint for reliable, high‑frequency processing — with WP‑Cron as a fallback. For a deeper look at why WP‑Cron isn’t reliable for background jobs and how async webhook queues improve reliability and scalability in WordPress, see our technical article: Async Webhooks in WordPress — Why WP‑Cron Is Not Enough. To set up a proper cron job for WordPress — including system crontab, WP-CLI, and Action Scheduler — see Cron Job for WordPress: WP-Cron Limits and Real Fixes.
Failed deliveries retry with increasing delays: 1 min, 2 min, 4 min, 8 min — up to 1 hour. Default 5 attempts, configurable via filter. For a full walkthrough of retry and replay architecture, see Inside My Webhook Retry & Replay System.
Payloads follow a consistent structure: hook name, arguments, timestamp, site URL. Field mapping lets you reshape data for any external schema.
Built on WordPress APIs — wp_remote_post for HTTP, dedicated custom tables for fast storage and queries. Developer-friendly with filters and actions to customize every aspect. No external dependencies.
13 filters and 4 actions let you customize every aspect: dispatch conditions, payload transformation, headers, timeouts, and error handling.
Each webhook can have conditions evaluated against the incoming payload before dispatch. Set a field path, pick an operator, and set a value — the event is skipped silently if the condition fails.
Supported operators: equals, not equals, contains, starts with, ends with, greater than, less than, empty, not empty. Works against strings, numbers, booleans, and null values.
Free plan: one condition, AND match. Webhook Actions Pro adds unlimited conditions, condition groups, and AND/OR logic per group.
Store an example payload from a real event, then use the field selector to browse the payload tree and pick the exact field to match against — no manual dot-notation guessing.
The condition preview updates live as you configure it, so you can verify the match logic against your real data before saving.
Fire a test webhook from the admin panel instantly, bypassing the async queue. The response is shown immediately — HTTP status, body, and duration — without creating a real WordPress event or queue job.
Use it to verify endpoint connectivity, authentication headers, and payload shape before going live.
Send the same test event through the full async queue pipeline — including retry logic, backoff, and delivery logging — to validate the complete end-to-end flow under the same conditions as production.
The test event appears in delivery logs like any real event, so you can inspect the attempt history and response body after processing.
fswa_should_dispatch
fswa_payload
fswa_normalize_object
fswa_headers
fswa_require_https
fswa_max_attempts
fswa_backoff_delay
fswa_queue_batch_size
fswa_http_timeout
fswa_http_connect_timeout
fswa_http_args
fswa_available_triggers
fswa_webhook_data
fswa_success
fswa_error
fswa_skipped
fswa_webhook_saved
Some plugins pass objects with private properties — or require additional PHP calls — to produce the data you actually want in the payload. fswa_normalize_object lets you intercept any such object before serialization and return a plain array instead. A common case is Contact Form 7, which fires wpcf7_mail_sent with a WPCF7_ContactForm instance whose submission data is only accessible via a separate API call.
The filter fires per object in the hook arguments. Return the original $data for any object you don't need to handle — the plugin's default serializer takes over. See the CF7 to webhook example for the full integration walkthrough.
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. Endpoints cover delivery logs, event inspection, retry and replay triggers, queue status, webhook configuration, and API token management. Secured with scoped tokens (read, operational, full) passed as X-FSWA-Token, Authorization: Bearer, or a query parameter. See the full REST API reference, the REST API guide for monitoring, recovery, and CI/CD usage patterns, or Create and Manage WordPress Webhooks Programmatically for the control layer — creating, updating, listing, and deleting webhooks via API without touching wp-admin.
Because the API exposes operational endpoints for logs, queue jobs, webhooks, and triggers, external agents can treat WordPress as programmable event infrastructure — without requiring an admin session.
Monitor delivery health
Retry failed events automatically
Inspect logs to debug integrations
Enable / disable webhooks during deployments
Query queue metrics for alerting
Example: a Claude Code agent analyzes delivery logs and retries failed integrations. A CI/CD pipeline disables webhook triggers before a deployment and re-enables them after. An external dashboard polls queue health metrics via API token.
woocommerce_order_status_completedwoocommerce_new_orderwoocommerce_product_set_stockuser_register, profile_update, wp_login, wp_logout),
you can enable "Include User Data"."Solid plugin. Super easy to set up and it just works. If you need reliable webhooks this makes the whole process a lot easier."Axel — WordPress.org review
Install Webhook Actions by Flow Systems and make event delivery in WordPress deterministic, retry-safe, and observable.