Webhook Actions · v1.15.0

Turn any do_action into a webhook trigger

Become the dev who turns any do_action into a first-class automation trigger — queued, retried, logged, and replayable — that your CRMs, n8n flows, and AI agents just consume.

  Free & open source   GPLv2   5★ · 2 reviews
Why it works

WordPress already broadcasts everything. That surface is your integration layer.

WordPress already broadcasts everything important as an action — orders placed, forms submitted, posts published, users registered, subscriptions renewed. You turn that action surface into your integration surface. Any do_action on your site — including ones a plugin update ships next month — becomes a trigger you can map and send anywhere.

No vendor SDK. No custom integration plugin per service. No glue code rotting in functions.php. The hook itself is the API — and the toolkit around it (queue, retries, idempotent headers, scoped REST tokens, a full delivery log, replay) makes the WordPress side of your stack finally look like the rest of it.

The two-week project to wire WooCommerce into HubSpot becomes an afternoon of config. The "can n8n pick this up?" question gets a yes before the meeting ends.

After install

Ship in an afternoon. Operate like a backend team.

01 / SHIP FAST

Ship integrations in an afternoon.

Two webhooks and a dynamic URL turn a WooCommerce order lifecycle into a HubSpot deal lifecycle. Same pattern for Pipedrive, Notion, Airtable, or any internal API that puts ids in the path.

02 / SPEAK FLUENTLY

Make WordPress fluent in n8n, Make, Zapier — and AI agents.

Send any WordPress event into your automation graph in one click. Hand Claude Code or Cursor scoped REST tokens to inspect logs and retry deliveries — without ever touching admin credentials.

03 / OPERATE

Run WordPress like real backend infrastructure.

Every event carries a v4 UUID, a full request/response log, and a replay button. X-Event-Id and X-Webhook-Id headers give downstream systems clean dedup and idempotency.

04 / OWN IT

Own your integrations as code, not a per-run bill.

Move the Zapier and Make tasks that bill per run back into WordPress — same triggers, same destinations, no per-zap pricing, no third-party data hop. The queue lives in your own database.

Reliability, handled

The boring-in-production reliability that makes you look good at 2am.

01 / QUEUE

Nothing blocks the request

Your event is enqueued in under 5ms and drained by background workers — checkout never waits on a slow endpoint. WP-Cron → Action Scheduler → System Cron → External Cron (Pro).

02 / RETRY

Failures fix themselves

A flaky endpoint retries on its own — 1m → 2m → 4m → 8m, capped at 1h, 5 attempts by default. (Pro) tune it per webhook.

03 / LOG

You can always see what happened

Every attempt is recorded: payload, response, status, latency, attempt count. Filter by hook, endpoint, status, or time window.

04 / REPLAY

Recover with one click

Failed delivery? Replay it. Re-run a window. Re-evaluate a skipped event after fixing its conditions — from the admin or the REST API.

05 / IDENTITY

Downstream dedup is free

Every event carries a v4 UUID plus X-Event-Id and X-Webhook-Id headers, so receivers deduplicate and stay idempotent without inspecting the payload.

06 / FILTER

Only the events that matter

Fire only when order.total > $50, only when a product is in the cart, only when it's real traffic. Free includes one condition; (Pro) unlimited with AND/OR groups.

How it works

Your do_action becomes an API call — without you babysitting it.

01
Capture Any registered do_action fires. Its arguments are normalized into clean JSON — PHP objects walked into plain arrays that actually encode.
02
Map Dot-notation field mapping, conditions, type casting, custom headers, and URL parameters — shape the payload to match exactly what the target API expects.
03
Queue The event lands in a persistent database queue, processed by Action Scheduler (the runner WooCommerce uses) and falling back to WP-Cron when it is not installed.
04
Deliver POST, PUT, PATCH, DELETE, or GET to any HTTPS endpoint — with exponential backoff, a replay button on every event, and a token-authenticated REST API to drive it all from outside.
The log

Every event, every attempt, written down.

Click any row to see the exact request body, response body, headers, and full attempt history. Failed? Replay it. Debugging an integration? Inspect precisely what was sent — you are never guessing again.

Status pending → processing → delivered / failed
History Full attempt timeline per event
Identity Event UUID · X-Event-Id · X-Webhook-Id
Search By hook, endpoint, status, time window
Smart retry & replay — failed delivery retried automatically, recoverable from the log with one click
Pricing

Own the whole pipeline for free. Pay only to go further.

The free plugin runs production webhooks on unlimited sites — async queue, retries, the full delivery log, replay, the REST API, payload mapping, and one condition. Pro unlocks unlimited conditions with AND/OR groups, per-webhook retry and backoff, Code Glue PHP snippets, {{ field.path }} dynamic URL templates, and a built-in External Cron that replaces WP-Cron entirely.

/Open source
Free
The whole delivery pipeline, on unlimited sites.
$0free forever
Download
Async queue + automatic retries
Full delivery log + one-click replay
REST API with scoped tokens
Payload mapping + 1 condition
Per-event dynamic URLs (via filter)
GPLv2 — unlimited installs
/1 site
Starter
All Pro features for a single production site.
$149/yr
Billed $149/yr — save $79
Get Starter
All Pro features
1 production site
Unlimited local/dev installs
Priority email support
1 year of updates
Most Popular
/Most popular
Business
The right fit for growing teams and stores.
$249/yr
Billed $249/yr — save $99
Get Business
All Pro features
10 production sites
Unlimited local/dev installs
Priority email support
1 year of updates
/75 sites
Agency
For agencies and platforms running at scale.
$499/yr
Billed $499/yr — save $209
Get Agency
All Pro features
75 production sites
Unlimited local/dev installs
Priority email support
1 year of updates
FAQ

Things engineers always ask.

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

What is Webhook Actions, and how does it relate to WP webhooks? +
Webhook Actions is the free WordPress plugin behind this site. It turns any do_action — from core, WooCommerce, Contact Form 7, Gravity Forms, or any other plugin — into a first-class event: captured, mapped into a JSON payload, dispatched to any HTTPS endpoint with retry and logging, and exposed over a token-authenticated REST API. It's how WP webhooks should have worked out of the box.
Can I trigger on any plugin’s action, including ones that don’t exist yet? +
Yes. The plugin treats the entire WordPress action surface as your integration surface. Any do_action — already running on your site, or shipped by an update next month — can be picked up as a trigger, mapped, and delivered. No SDK, no custom integration plugin, no vendor-specific code; the hook itself is the API.
How does delivery actually work behind the scenes? +
A do_action fires inside WordPress. The plugin captures its arguments, normalizes PHP objects into clean JSON, applies your field mapping and conditions, queues the event in your own database, and dispatches it asynchronously — with retry, exponential backoff, idempotency headers (X-Event-Id, X-Webhook-Id), and a full request/response log on every attempt.
Can I send to n8n, Make, Zapier, or HubSpot? +
Yes. Any tool that accepts an HTTPS webhook works out of the box — n8n, Make, Zapier, Pipedrive, Notion, Airtable, Slack, or any internal service. Pro adds dynamic URL templates like https://api.hubapi.com/crm/objects/2026-03/deals/{{ _hs_deal_id }} so a single webhook can PATCH a specific remote record per event.
Does this work without WP-Cron? +
Yes. When Action Scheduler is available (for example via WooCommerce), the plugin uses it for queue processing automatically — the same reliable background runner WooCommerce uses for production stores. It falls back to WP-Cron when Action Scheduler is not installed. No configuration required.
How does retry actually work? +
Failed deliveries retry automatically with exponential backoff — roughly 1m → 2m → 4m → 8m, capped at one hour between attempts, with 5 attempts by default before an event is marked permanently failed. 5xx and 429 responses retry; 4xx and 3xx are marked permanently failed immediately. Every attempt is logged. Pro lets you tune attempts and backoff per webhook.
What’s the difference between free and Pro? +
The free plugin covers the entire delivery pipeline: queue, retries, logging, REST API, conditional dispatch (one condition), payload mapping, custom headers and URL params, and the X-Event-Id / X-Webhook-Id headers. Pro adds {{ field.path }} URL templates, Code Glue PHP snippets per webhook+trigger, unlimited conditions with AND/OR groups, and per-webhook retry and backoff settings.
Ready

Stop losing webhooks.
Start logging them.

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