{"id":280953,"date":"2026-02-16T21:00:04","date_gmt":"2026-02-16T21:00:04","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/webhook-actions\/"},"modified":"2026-06-03T21:50:04","modified_gmt":"2026-06-03T21:50:04","slug":"flowsystems-webhook-actions","status":"publish","type":"plugin","link":"https:\/\/ky.wordpress.org\/plugins\/flowsystems-webhook-actions\/","author":23439561,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.14.0","stable_tag":"1.14.0","tested":"7.0","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Webhook Actions by Flow Systems","header_author":"Mateusz Skorupa","header_description":"Trigger HTTP webhooks from WordPress actions (do_action). Easily connect WordPress with n8n, Zapier, Make, or custom workflows.","assets_banners_color":"093c2d","last_updated":"2026-06-03 21:50:04","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wpwebhooks.org\/wordpress-webhook-plugin","header_author_uri":"https:\/\/flowsystems.pl","rating":5,"author_block_rating":0,"active_installs":0,"downloads":1355,"num_ratings":2,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"mateuszflowsystems","date":"2026-02-16 21:00:27"},"1.0.1":{"tag":"1.0.1","author":"mateuszflowsystems","date":"2026-02-18 22:35:51"},"1.1.0":{"tag":"1.1.0","author":"mateuszflowsystems","date":"2026-02-28 21:08:40"},"1.1.1":{"tag":"1.1.1","author":"mateuszflowsystems","date":"2026-03-01 12:48:16"},"1.10.0":{"tag":"1.10.0","author":"mateuszflowsystems","date":"2026-05-03 21:47:57"},"1.11.0":{"tag":"1.11.0","author":"mateuszflowsystems","date":"2026-05-06 16:15:26"},"1.12.0":{"tag":"1.12.0","author":"mateuszflowsystems","date":"2026-05-12 20:51:43"},"1.12.1":{"tag":"1.12.1","author":"mateuszflowsystems","date":"2026-05-12 21:07:31"},"1.12.2":{"tag":"1.12.2","author":"mateuszflowsystems","date":"2026-05-14 14:50:23"},"1.13.0":{"tag":"1.13.0","author":"mateuszflowsystems","date":"2026-05-18 16:12:11"},"1.13.1":{"tag":"1.13.1","author":"mateuszflowsystems","date":"2026-05-21 13:58:15"},"1.14.0":{"tag":"1.14.0","author":"mateuszflowsystems","date":"2026-06-03 21:50:04"},"1.2.0":{"tag":"1.2.0","author":"mateuszflowsystems","date":"2026-03-07 20:42:42"},"1.2.1":{"tag":"1.2.1","author":"mateuszflowsystems","date":"2026-03-07 21:21:55"},"1.3.0":{"tag":"1.3.0","author":"mateuszflowsystems","date":"2026-03-15 21:22:43"},"1.3.1":{"tag":"1.3.1","author":"mateuszflowsystems","date":"2026-03-15 21:56:44"},"1.3.2":{"tag":"1.3.2","author":"mateuszflowsystems","date":"2026-03-15 22:36:07"},"1.4.0":{"tag":"1.4.0","author":"mateuszflowsystems","date":"2026-03-22 21:17:47"},"1.5.0":{"tag":"1.5.0","author":"mateuszflowsystems","date":"2026-03-23 16:43:47"},"1.6.0":{"tag":"1.6.0","author":"mateuszflowsystems","date":"2026-03-28 22:56:32"},"1.6.1":{"tag":"1.6.1","author":"mateuszflowsystems","date":"2026-03-28 23:00:04"},"1.6.2":{"tag":"1.6.2","author":"mateuszflowsystems","date":"2026-04-05 13:22:48"},"1.7.0":{"tag":"1.7.0","author":"mateuszflowsystems","date":"2026-04-27 17:44:53"},"1.8.0":{"tag":"1.8.0","author":"mateuszflowsystems","date":"2026-04-27 22:49:00"},"1.9.0":{"tag":"1.9.0","author":"mateuszflowsystems","date":"2026-05-03 15:18:40"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":2},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3462891,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3462891,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3462891,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3462891,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3462891,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3560050,"resolution":false,"location":"assets","locale":"","contents":"{\"landingPage\":\"\\\/wp-admin\\\/admin.php?page=fswa-webhook-actions#\\\/webhooks\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"features\":{\"networking\":true},\"steps\":[{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"flowsystems-webhook-actions\"},\"options\":{\"activate\":true}},{\"step\":\"activatePlugin\",\"pluginPath\":\"flowsystems-webhook-actions\\\/flowsystems-webhook-actions.php\"},{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"}]}"}},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.1.0","1.1.1","1.10.0","1.11.0","1.12.0","1.12.1","1.12.2","1.13.0","1.13.1","1.14.0","1.2.0","1.2.1","1.3.0","1.3.1","1.3.2","1.4.0","1.5.0","1.6.0","1.6.1","1.6.2","1.7.0","1.8.0","1.9.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3560048,"resolution":"1","location":"assets","locale":"","width":1641,"height":798},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3521551,"resolution":"10","location":"assets","locale":"","width":822,"height":925},"screenshot-11.png":{"filename":"screenshot-11.png","revision":3535984,"resolution":"11","location":"assets","locale":"","width":809,"height":878},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3521551,"resolution":"2","location":"assets","locale":"","width":841,"height":902},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3521788,"resolution":"3","location":"assets","locale":"","width":824,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3521551,"resolution":"4","location":"assets","locale":"","width":822,"height":888},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3521551,"resolution":"5","location":"assets","locale":"","width":713,"height":874},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3521551,"resolution":"6","location":"assets","locale":"","width":1635,"height":840},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3521551,"resolution":"7","location":"assets","locale":"","width":1635,"height":840},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3483307,"resolution":"8","location":"assets","locale":"","width":1650,"height":765},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3521551,"resolution":"9","location":"assets","locale":"","width":794,"height":785}},"screenshots":{"1":"Webhooks list view","2":"Webhook configuration screen","3":"Selecting WordPress action triggers","4":"Payload mapping configuration","5":"Webhook delivery logs with replay and retry controls","6":"Queue status overview","7":"Settings configuration screen","8":"REST API Tokens configuration screen","9":"Conditional webhook dispatch \u2014 conditions editor","10":"Test webhook drawer \u2014 send a test delivery and inspect request details inline","11":"Webhook Chains \u2014 pick an existing chain or create a new one, then select which upstream webhooks should fire this one on their 2xx response"}},"plugin_section":[],"plugin_tags":[1556,569,597,243637,34953],"plugin_category":[45],"plugin_contributors":[255989],"plugin_business_model":[],"class_list":["post-280953","plugin","type-plugin","status-publish","hentry","plugin_tags-api","plugin_tags-automation","plugin_tags-integration","plugin_tags-n8n","plugin_tags-webhooks","plugin_category-ecommerce","plugin_contributors-mateuszflowsystems","plugin_committers-mateuszflowsystems"],"banners":{"banner":"https:\/\/ps.w.org\/flowsystems-webhook-actions\/assets\/banner-772x250.png?rev=3462891","banner_2x":"https:\/\/ps.w.org\/flowsystems-webhook-actions\/assets\/banner-1544x500.png?rev=3462891","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/flowsystems-webhook-actions\/assets\/icon.svg?rev=3462891","icon":"https:\/\/ps.w.org\/flowsystems-webhook-actions\/assets\/icon.svg?rev=3462891","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/flowsystems-webhook-actions\/assets\/screenshot-1.png?rev=3560048","caption":"Webhooks list view"},{"src":"https:\/\/ps.w.org\/flowsystems-webhook-actions\/assets\/screenshot-2.png?rev=3521551","caption":"Webhook configuration screen"},{"src":"https:\/\/ps.w.org\/flowsystems-webhook-actions\/assets\/screenshot-3.png?rev=3521788","caption":"Selecting WordPress action triggers"},{"src":"https:\/\/ps.w.org\/flowsystems-webhook-actions\/assets\/screenshot-4.png?rev=3521551","caption":"Payload mapping configuration"},{"src":"https:\/\/ps.w.org\/flowsystems-webhook-actions\/assets\/screenshot-5.png?rev=3521551","caption":"Webhook delivery logs with replay and retry controls"},{"src":"https:\/\/ps.w.org\/flowsystems-webhook-actions\/assets\/screenshot-6.png?rev=3521551","caption":"Queue status overview"},{"src":"https:\/\/ps.w.org\/flowsystems-webhook-actions\/assets\/screenshot-7.png?rev=3521551","caption":"Settings configuration screen"},{"src":"https:\/\/ps.w.org\/flowsystems-webhook-actions\/assets\/screenshot-8.png?rev=3483307","caption":"REST API Tokens configuration screen"},{"src":"https:\/\/ps.w.org\/flowsystems-webhook-actions\/assets\/screenshot-9.png?rev=3521551","caption":"Conditional webhook dispatch \u2014 conditions editor"},{"src":"https:\/\/ps.w.org\/flowsystems-webhook-actions\/assets\/screenshot-10.png?rev=3521551","caption":"Test webhook drawer \u2014 send a test delivery and inspect request details inline"},{"src":"https:\/\/ps.w.org\/flowsystems-webhook-actions\/assets\/screenshot-11.png?rev=3535984","caption":"Webhook Chains \u2014 pick an existing chain or create a new one, then select which upstream webhooks should fire this one on their 2xx response"}],"raw_content":"<!--section=description-->\n<p>Operate WordPress like modern infrastructure \u2014 turn any WordPress do_action into a first-class automation trigger your CRMs, n8n flows, AI agents, and internal services can consume.<\/p>\n\n<p>\ud83d\udcd6 <a href=\"https:\/\/wpwebhooks.org\/docs\/\">Full documentation at wpwebhooks.org\/docs\/<\/a><\/p>\n\n<h4>Core features (free)<\/h4>\n\n<ul>\n<li>Persistent delivery queue with smart retry and exponential backoff \u2014 powered by WP-Cron, auto-upgrades to Action Scheduler or System Cron when available, <strong>(Pro)<\/strong> External Cron for guaranteed reliability<\/li>\n<li>Per-event UUID and ISO 8601 timestamp \u2014 enable downstream deduplication<\/li>\n<li>Delivery logs with full attempt history, request\/response inspection, replay, and bulk retry<\/li>\n<li>Synchronous execution mode \u2014 fire inline without queue delay<\/li>\n<li>Payload mapping \u2014 rename, restructure, exclude, and type-cast fields with dot-notation paths<\/li>\n<li>Conditional dispatch \u2014 filter events by payload field values before dispatch<\/li>\n<li>HTTP method, custom headers, and URL query parameters per webhook<\/li>\n<li>Dynamic endpoint URLs \u2014 <code>{{ field.path }}<\/code> placeholders resolved at dispatch time (free via <code>fswa_webhook_url<\/code> filter)<\/li>\n<li>Webhook Chains \u2014 wire 2xx completions to downstream webhooks with full observability<\/li>\n<li>Activity History \u2014 persistent audit log of every admin and API-token action<\/li>\n<li>Built-in CF7 and IvyForms integrations \u2014 structured payloads, no extra plugins<\/li>\n<li>Action Scheduler auto-detection \u2014 more reliable delivery on high-traffic sites<\/li>\n<li>Full REST API with scoped API token authentication (<code>read<\/code> \/ <code>operational<\/code> \/ <code>full<\/code>)<\/li>\n<li>Developer extensibility \u2014 16 filters and 7 action hooks (<a href=\"https:\/\/wpwebhooks.org\/docs\/\">reference<\/a>)<\/li>\n<\/ul>\n\n<h4>Pro features<\/h4>\n\n<ul>\n<li>Code Glue \u2014 attach PHP snippets to any webhook+trigger (pre-dispatch payload enrichment, post-dispatch side effects)<\/li>\n<li>External Cron \u2014 replace WP-Cron with Uptime Kuma-based heartbeat monitoring<\/li>\n<li>Unlimited conditions per trigger with AND\/OR groups<\/li>\n<li>Per-webhook retry limit and backoff strategy overrides<\/li>\n<li>Dynamic URL templates \u2014 <code>{{ }}<\/code> syntax with no custom PHP required<\/li>\n<\/ul>\n\n<p><a href=\"https:\/\/wpwebhooks.org\/pricing\/\">See pricing and upgrade \u2192<\/a><\/p>\n\n<h4>Examples<\/h4>\n\n<ul>\n<li><a href=\"https:\/\/wpwebhooks.org\/examples\/cf7-to-webhook\/\">Send Contact Form 7 submissions to a webhook (n8n demo)<\/a><\/li>\n<li><a href=\"https:\/\/wpwebhooks.org\/examples\/gravity-forms-webhooks\/\">Send Gravity Forms Submissions to n8n<\/a><\/li>\n<li><a href=\"https:\/\/wpwebhooks.org\/examples\/ivyforms-to-webhook\/\">Send IvyForms submissions to a webhook (n8n demo)<\/a><\/li>\n<li><a href=\"https:\/\/wpwebhooks.org\/examples\/woocommerce-order-webhook-claude-code\/\">WooCommerce orders to n8n on completion \u2014 wired up with a Claude Code agent<\/a><\/li>\n<li><a href=\"https:\/\/wpwebhooks.org\/examples\/hubspot-woocommerce-integration\/\">WooCommerce to HubSpot integration \u2014 sync orders, contacts, and deals with no custom code<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/flowsystems-webhook-actions<\/code> directory, or install the plugin through the WordPress plugins screen.<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress.<\/li>\n<li>Navigate to Webhook Actions in the admin menu.<\/li>\n<li>Add your webhook endpoint URL and select the desired WordPress action triggers.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20this%20plugin%20free%3F\"><h3>Is this plugin free?<\/h3><\/dt>\n<dd><p>Yes. The core plugin is completely free and licensed under GPL. Webhook Actions Pro is an optional paid upgrade that adds unlimited conditions, per-webhook retry and backoff settings, Code Glue snippets, External Cron (activated automatically on license activation), and more. <a href=\"https:\/\/wpwebhooks.org\/pricing\/\">Learn more \u2192<\/a><\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20woocommerce%2C%20n8n%2C%20make%2C%20zapier%2C%20and%20ai%20agents%3F\"><h3>Does it work with WooCommerce, n8n, Make, Zapier, and AI agents?<\/h3><\/dt>\n<dd><p>Yes. Any WordPress or WooCommerce action can be a trigger. The plugin delivers to any HTTP endpoint \u2014 n8n, Make, Zapier webhook nodes, internal services, or AI agent APIs. Scoped API tokens let Claude Code, Cursor, or any automation tool read logs, retry deliveries, and toggle webhooks without WordPress credentials.<\/p><\/dd>\n<dt id=\"do%20i%20need%20extra%20plugins%20for%20contact%20form%207%20or%20ivyforms%3F\"><h3>Do I need extra plugins for Contact Form 7 or IvyForms?<\/h3><\/dt>\n<dd><p>No. Both integrations are built in. When CF7 or IvyForms is active, submissions are automatically normalized into clean JSON payloads \u2014 no additional plugins or custom code required.<\/p><\/dd>\n<dt id=\"how%20does%20retry%20work%3F\"><h3>How does retry work?<\/h3><\/dt>\n<dd><p>5xx and 429 responses retry automatically with exponential backoff (delays of ~30s, 60s, 120s, 240s, 480s, capped at 1 hour). 4xx and 3xx responses are marked <code>permanently_failed<\/code> immediately \u2014 bad payloads are not worth retrying. Default maximum is 5 attempts; override with the <code>fswa_max_attempts<\/code> filter or <strong>(Pro)<\/strong> per-webhook settings.<\/p><\/dd>\n<dt id=\"can%20i%20access%20the%20rest%20api%20without%20a%20wordpress%20login%3F\"><h3>Can I access the REST API without a WordPress login?<\/h3><\/dt>\n<dd><p>Yes. Create a token from the API Tokens screen and pass it as <code>X-FSWA-Token: &lt;token&gt;<\/code> (or <code>Authorization: Bearer<\/code>). Three scopes available \u2014 <code>read<\/code>, <code>operational<\/code>, <code>full<\/code> \u2014 so you can grant exactly the access each integration needs. Full API reference at <a href=\"https:\/\/wpwebhooks.org\/webhook-wordpress-plugin-api\/\">wpwebhooks.org\/webhook-wordpress-plugin-api\/<\/a><\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<p>For the full release history see <a href=\"https:\/\/wpwebhooks.org\/changelog\/\">wpwebhooks.org\/changelog\/<\/a><\/p>\n\n<h4>1.14.0 \u2014 2026-06-03<\/h4>\n\n<ul>\n<li>New: <strong>Activity History<\/strong> \u2014 persistent audit log of every admin and API-token action across webhooks, tokens, settings, logs, queue, schemas, chains, and cron. Each entry records the actor (session user or API token with a name hint), the action type, a structured context diff (old \u2192 new values for updates), and a timestamp. Designed to trace automated and AI-assisted changes end-to-end<\/li>\n<li>New: <strong>AI prompt and reasoning capture<\/strong> \u2014 REST requests carrying <code>X-FSWA-Prompt<\/code> or <code>X-FSWA-Reason<\/code> headers have those values stored in the activity log context and surfaced in the Activity view as a highlighted card above the change diff; intended for AI agents that perform admin actions via API tokens<\/li>\n<li>New: <strong>External Cron page<\/strong> <em>(Pro)<\/em> \u2014 dedicated admin page for managing the external cron trigger: enable\/disable toggle, mode selector, configurable interval and batch-size sliders, a live heartbeat chart (line + bar combo), monitor status bar, and an alert banner when the last ping failed or is stale<\/li>\n<li>New: <code>fswa_cron_token_regenerated<\/code> action hook \u2014 fires after the cron secret is regenerated, allowing integrations (e.g. Pro Uptime Kuma sync) to update their stored monitor URL<\/li>\n<li>Fixed: created and deleted activity log entries for webhooks and tokens now include the full entity data (name, URL, scope, etc.) in context instead of an empty object<\/li>\n<li>Fixed: webhook toggle events now correctly capture old and new <code>is_enabled<\/code> state; webhook, settings, and schema update events capture a full old\/new diff<\/li>\n<li>Fixed: chain and chain-link CRUD actions (create, update, delete, link add\/remove) are now covered by Activity History<\/li>\n<li>Improved: Snippets (Pro) added to the Activity History filter list; Activity tab repositioned after External Cron in the navigation<\/li>\n<li>DB migration to 1.14.0 \u2014 adds <code>fswa_activity_logs<\/code> table; idempotent, safe to run on existing installs<\/li>\n<\/ul>","raw_excerpt":"Turn any WordPress do_action into a first-class automation trigger your CRMs, n8n flows, AI agents, and internal services can consume.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/280953","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=280953"}],"author":[{"embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mateuszflowsystems"}],"wp:attachment":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=280953"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=280953"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=280953"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=280953"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=280953"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=280953"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}