---
title: "WP Webhooks — Turn Any WordPress do_action Into an Automation Trigger"
description: "A free plugin that turns any WordPress do_action into a queued, retried, logged automation trigger your CRMs, n8n flows, and AI agents can consume."
url: "https://wpwebhooks.org/"
---

/Webhook Actions · v1.16.0

# Turn any do\_action into a webhook

Become the dev who turns any **do\_action** into a first-class automation trigger — queued, retried, logged, and replayable — that your CRMs and n8n flows just consume, while AI agents build and manage the automations through the plugin's REST API.

[Install Plugin→](https://wordpress.org/plugins/flowsystems-webhook-actions/) [See Pro](/pricing/)

●  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

/In the wild

## Pipelines you'll be the one who shipped.

[

#cf7#n8n

### CF7 to Webhook: Send Contact Form 7 to n8n

Form submission queued before the reply renders. Delivered to n8n with automatic retry on failure — step-by-step with working config.

Read the example →

](/examples/cf7-to-webhook/)[

#woocommerce#hubspot

### HubSpot WooCommerce Integration: Create & Update Deals

Order placed creates a HubSpot deal. Order completed moves it to Closed Won. Built with the REST API, zero SDK.

Read the example →

](/examples/hubspot-create-deal-woocommerce/)[

#woocommerce#ai-agents

### Ask Claude Code to Set Up a WooCommerce Webhook

Claude Code provisions the webhook over the REST API, catches a field-path mistake, and fixes it live — an AI agent driving real WordPress infrastructure.

Read the example →

](/examples/woocommerce-order-webhook-claude-code/)[

#gravityforms#n8n

### Gravity Forms Webhooks: Send Submissions to n8n

Send form entries to n8n with field mapping via REST API. Retried automatically on failure, every attempt logged for inspection.

Read the example →

](/examples/gravity-forms-webhooks/)

/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](https://wordpress.org/plugins/flowsystems-webhook-actions/)

→ 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](https://api.wpwebhooks.org/checkout/starter?billing=yearly)

→ 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](https://api.wpwebhooks.org/checkout/business?billing=yearly)

→ 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](https://api.wpwebhooks.org/checkout/agency?billing=yearly)

→ 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. Otherwise the queue runs on WP-Cron by default, but you are not tied to it: point a real system cron (server crontab) at the queue for time-based reliability, and Pro adds built-in External Cron — a managed runner that is automatically enabled with no configuration. You can also dispatch synchronously, sending the first attempt on the same request that fires the event (failures still fall back to the queue and retry normally) — handy for low-volume or time-sensitive hooks, though it blocks page load until that first attempt finishes, so the queued runners are still recommended under load.

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, per-webhook retry and backoff settings, and built-in External Cron — a managed heartbeat monitor that runs the delivery queue on a reliable schedule, automatically enabled with no configuration needed.

## Structured data

```json
{"@context":"https://schema.org","@type":"WebSite","name":"WP Webhooks","url":"https://wpwebhooks.org","description":"WP Webhooks turn any WordPress do_action into a queued, retried, logged automation trigger your CRMs, n8n flows, and AI agents can consume."}

{"@context":"https://schema.org","@type":"SoftwareApplication","name":"WP Webhooks","applicationCategory":"BusinessApplication","operatingSystem":"WordPress","url":"https://wpwebhooks.org","description":"Turns any WordPress do_action into a queued, retried, logged automation trigger with a full delivery log, replay, and a token-authenticated REST API.","offers":[{"@type":"Offer","name":"Free","price":"0","priceCurrency":"USD"},{"@type":"Offer","name":"Pro","price":"19","priceCurrency":"USD","description":"per month, from (Starter)"}],"publisher":{"@type":"Organization","name":"Flow Systems","url":"https://flowsystems.pl"}}

{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"What is Webhook Actions, and how does it relate to WP webhooks?","acceptedAnswer":{"@type":"Answer","text":"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."}},{"@type":"Question","name":"Can I trigger on any plugin’s action, including ones that don’t exist yet?","acceptedAnswer":{"@type":"Answer","text":"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."}},{"@type":"Question","name":"How does delivery actually work behind the scenes?","acceptedAnswer":{"@type":"Answer","text":"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."}},{"@type":"Question","name":"Can I send to n8n, Make, Zapier, or HubSpot?","acceptedAnswer":{"@type":"Answer","text":"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."}},{"@type":"Question","name":"Does this work without WP-Cron?","acceptedAnswer":{"@type":"Answer","text":"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. Otherwise the queue runs on WP-Cron by default, but you are not tied to it: point a real system cron (server crontab) at the queue for time-based reliability, and Pro adds built-in External Cron — a managed runner that is automatically enabled with no configuration. You can also dispatch synchronously, sending the first attempt on the same request that fires the event (failures still fall back to the queue and retry normally) — handy for low-volume or time-sensitive hooks, though it blocks page load until that first attempt finishes, so the queued runners are still recommended under load."}},{"@type":"Question","name":"How does retry actually work?","acceptedAnswer":{"@type":"Answer","text":"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."}},{"@type":"Question","name":"What’s the difference between free and Pro?","acceptedAnswer":{"@type":"Answer","text":"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, per-webhook retry and backoff settings, and built-in External Cron — a managed heartbeat monitor that runs the delivery queue on a reliable schedule, automatically enabled with no configuration needed."}}]}
```
