{"id":313032,"date":"2026-05-19T13:50:00","date_gmt":"2026-05-19T13:50:00","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/rt-connect-webhooks\/"},"modified":"2026-08-09T03:57:03","modified_gmt":"2026-08-09T03:57:03","slug":"rt-connect-webhooks","status":"publish","type":"plugin","link":"https:\/\/mlt.wordpress.org\/plugins\/rt-connect-webhooks\/","author":23301688,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"4.8.0","stable_tag":"trunk","tested":"7.0.3","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"RainTech Connect Webhooks","header_author":"raintech","header_description":"Send webhooks for user and content events (extensible, WooCommerce-aware).","assets_banners_color":"f6f5fd","last_updated":"2026-08-09 03:57:03","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":201,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":[],"upgrade_notice":{"3.0.0":"<p>This release adds Incoming Actions and several new per-webhook settings (auth, method, format, headers). Existing webhooks continue to work unchanged with their previous defaults (POST, JSON, no auth).<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3639048,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3639048,"resolution":"772x250","location":"assets","locale":"","width":1544,"height":500}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":[],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Outgoing webhooks list with enable\/disable toggle, method, and one-click test.","2":"Advanced webhook settings: HTTP method, body format, authentication, and custom headers.","3":"Incoming Actions: generate a URL for external services to POST data into WordPress.","4":"Delivery log with a full request\/response detail view."}},"plugin_section":[],"plugin_tags":[569,16179,23853,34953,141701],"plugin_category":[45],"plugin_contributors":[274816],"plugin_business_model":[],"class_list":["post-313032","plugin","type-plugin","status-publish","hentry","plugin_tags-automation","plugin_tags-integrations","plugin_tags-rest-api","plugin_tags-webhooks","plugin_tags-zapier","plugin_category-ecommerce","plugin_contributors-raintech","plugin_committers-raintech357"],"banners":{"banner":"https:\/\/ps.w.org\/rt-connect-webhooks\/assets\/banner-772x250.png?rev=3639048","banner_2x":"https:\/\/ps.w.org\/rt-connect-webhooks\/assets\/banner-1544x500.png?rev=3639048","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/rt-connect-webhooks_f6f5fd.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>RT Connect Webhooks<\/strong> is a two-way WordPress webhooks plugin that turns your site into a no-code automation hub. Most WordPress webhook plugins only push data out \u2014 RT Connect Webhooks also lets external tools push data <strong>in<\/strong>, so you can automate WordPress in both directions from a single, clean admin screen with dedicated tabs for <strong>Outgoing Webhooks<\/strong>, <strong>Incoming Actions<\/strong>, and a full <strong>Logs<\/strong> view.<\/p>\n\n<h4>What can you automate with this WordPress webhooks plugin?<\/h4>\n\n<ul>\n<li>Send an <strong>outgoing webhook<\/strong> the moment something happens on your site \u2014 a new user registers, a post is published, a WooCommerce order is placed, a form is submitted, and dozens of other events across the plugins you already run.<\/li>\n<li>Generate a secure <strong>incoming action URL<\/strong> that Zapier, Make (Integromat), Pabbly Connect, n8n, a form plugin, a mobile app, or any custom script can POST data to, so WordPress can create posts, create users, update memberships, and more \u2014 automatically.<\/li>\n<li>Connect WordPress to virtually any platform that speaks webhooks and JSON: CRMs, Slack, Discord, spreadsheets, email marketing tools, and custom internal systems.<\/li>\n<\/ul>\n\n<p>If you're searching for a way to <strong>connect WordPress to Zapier<\/strong>, <strong>connect WordPress to Make<\/strong>, or <strong>connect WordPress to Pabbly Connect<\/strong> without writing a custom REST controller, RT Connect Webhooks is the missing bridge between that platform and your site.<\/p>\n\n<h4>Why use RT Connect Webhooks?<\/h4>\n\n<ul>\n<li><strong>No-code automation<\/strong> \u2014 set up outgoing webhooks and incoming action URLs entirely from a clean, modern admin screen. No shortcodes, no functions.php edits required.<\/li>\n<li><strong>Two-way webhooks<\/strong> \u2014 most webhook plugins only send data out. RT Connect Webhooks also lets external services send data <em>in<\/em> to create WordPress content.<\/li>\n<li><strong>Built for real integrations<\/strong> \u2014 configurable HTTP method, request format, authentication, and headers mean it can talk to almost any third-party API, not just a fixed set of partners.<\/li>\n<li><strong>Transparent logging<\/strong> \u2014 every request and response is logged, with a one-click \"Test\" button so you're never guessing whether a webhook actually fired.<\/li>\n<li><strong>Developer-friendly<\/strong> \u2014 clean REST API, PHP filters, and action hooks so agencies and developers can extend it for client projects.<\/li>\n<\/ul>\n\n<h4>Outgoing Webhooks (Triggers) \u2014 its own \"Outgoing Webhooks\" tab<\/h4>\n\n<p>Send a webhook automatically when something happens \u2014 WordPress core events (login, register, update, delete users; publish\/update\/delete posts; new\/updated\/trashed\/deleted comments; emails sent) plus dedicated trigger groups for every popular plugin category, each appearing automatically once that plugin is active:<\/p>\n\n<ul>\n<li><strong>Forms:<\/strong> Contact Form 7, WPForms, Gravity Forms, Fluent Forms, Formidable Forms, Forminator, Ninja Forms, HappyForms, Newsletter, Elementor Pro Forms<\/li>\n<li><strong>E-commerce &amp; Payments:<\/strong> WooCommerce, Easy Digital Downloads (customers, downloads, payments, licensing, subscriptions), GiveWP, WP Simple Pay<\/li>\n<li><strong>Membership &amp; LMS:<\/strong> Paid Memberships Pro, Paid Member Subscriptions, MemberPress, LearnDash (course\/lesson\/quiz\/topic completion), Profile Builder<\/li>\n<li><strong>Marketing &amp; Support:<\/strong> FluentCRM, Fluent Support, AffiliateWP, WP Fusion<\/li>\n<li><strong>Site Health:<\/strong> Broken Link Checker, Amelia bookings, bbPress topics<\/li>\n<\/ul>\n\n<p>For every outgoing webhook you can configure:<\/p>\n\n<ul>\n<li><strong>HTTP method<\/strong> \u2014 POST, GET, PUT, PATCH, or DELETE<\/li>\n<li><strong>Request format<\/strong> \u2014 JSON, form URL-encoded, or XML<\/li>\n<li><strong>Authentication<\/strong> \u2014 none, API key (custom header), Bearer token, or Basic Auth<\/li>\n<li><strong>Payload signing<\/strong> \u2014 optional HMAC-SHA256 signature via a shared secret, sent as an <code>X-Webhook-Signature<\/code> header, so the receiving service can verify the request really came from your site<\/li>\n<li><strong>Custom headers<\/strong>, request timeout, and automatic retry count on failed delivery<\/li>\n<li><strong>One-click Test<\/strong> \u2014 fire a sample payload at the webhook and see the response instantly, without waiting for a real event<\/li>\n<\/ul>\n\n<h4>Incoming Actions (Receive Data) \u2014 its own \"Incoming Actions\" tab<\/h4>\n\n<p>Flip the direction: generate a unique, secure URL that any external service \u2014 Zapier, Make, Pabbly, a form plugin, a mobile app, a custom script \u2014 can POST data to. RT Connect Webhooks then performs the configured task, including:<\/p>\n\n<ul>\n<li><strong>WordPress Core:<\/strong> create\/update\/delete\/search users, create\/update\/delete\/search posts, create\/update\/delete comments, send an email, create a taxonomy term, or fire your own custom hook<\/li>\n<li><strong>LearnDash:<\/strong> complete a course or lesson, enroll or remove a user from a course<\/li>\n<li><strong>Paid Memberships Pro:<\/strong> add, remove, or cancel a user's membership level<\/li>\n<li><strong>Profile Builder:<\/strong> approve\/unapprove a user, confirm a user's email<\/li>\n<li><strong>FluentCRM:<\/strong> add a contact to a list or tag<\/li>\n<li><strong>Easy Digital Downloads:<\/strong> full customer, discount, download, and payment CRUD, plus license (create\/update\/delete\/renew) and subscription (create\/update\/delete) management when EDD Software Licensing \/ EDD Recurring are active<\/li>\n<\/ul>\n\n<p>Each incoming action can require its own auth token, so only requests that know the secret are accepted.<\/p>\n\n<h4>Logging &amp; Troubleshooting \u2014 its own \"Logs\" tab<\/h4>\n\n<p>Every outgoing delivery and every incoming request is recorded in a single searchable log with a <strong>Direction<\/strong> column (incoming or outgoing), the HTTP status code, number of attempts, and the full response body \u2014 viewable in a detail popup without leaving the settings page. The admin screen keeps <strong>Outgoing Webhooks<\/strong>, <strong>Incoming Actions<\/strong>, and <strong>Logs<\/strong> in separate tabs so each direction of your webhook automation stays easy to manage on its own. Clear the log at any time.<\/p>\n\n<h4>Built for Developers<\/h4>\n\n<ul>\n<li>REST API at <code>\/wp-json\/rtcw\/v1\/<\/code> for managing webhooks, incoming actions, and logs programmatically<\/li>\n<li><code>rtcw_payload<\/code> filter to modify an outgoing payload before it's sent<\/li>\n<li><code>rtcw_event_dispatched<\/code> action that fires after an event has been sent to all matching webhooks<\/li>\n<li><code>RTCW_Webhooks::manual_trigger( $event, $data )<\/code> to fire a webhook event from your own PHP code<\/li>\n<li>Admin UI built entirely on WordPress's own <code>@wordpress\/components<\/code> React library, so it looks and feels native to WordPress<\/li>\n<\/ul>\n\n<h4>Common Use Cases<\/h4>\n\n<ul>\n<li>Send a webhook to Zapier or Make whenever a new WordPress user signs up<\/li>\n<li>Notify Slack, Discord, or a CRM when a WooCommerce order is placed<\/li>\n<li>Create a WordPress post automatically from a Google Sheets row, Airtable record, or form submission<\/li>\n<li>Sync new WordPress users into an email marketing tool or CRM<\/li>\n<li>Trigger your own custom PHP logic from any external event without writing a REST controller from scratch<\/li>\n<\/ul>\n\n<h3>Developer Notes<\/h3>\n\n<p>All admin REST endpoints require the <code>manage_options<\/code> capability (cookie auth + <code>X-WP-Nonce<\/code>, or an authenticated application password). The incoming-action delivery endpoint is public and secured separately, per action, with its own auth token.<\/p>\n\n<ul>\n<li><code>GET \/wp-json\/rtcw\/v1\/webhooks<\/code> \u2014 list outgoing webhooks<\/li>\n<li><code>POST \/wp-json\/rtcw\/v1\/webhooks<\/code> \u2014 create an outgoing webhook (<code>url<\/code>, <code>enabled<\/code>, <code>events[]<\/code>, <code>secret<\/code>, <code>method<\/code>, <code>content_type<\/code>, <code>auth_type<\/code>, <code>auth_key_name<\/code>, <code>auth_key_value<\/code>, <code>auth_token<\/code>, <code>auth_username<\/code>, <code>auth_password<\/code>, <code>custom_headers[]<\/code>, <code>timeout<\/code>, <code>retry_count<\/code>)<\/li>\n<li><code>PUT \/wp-json\/rtcw\/v1\/webhooks\/{id}<\/code> \u2014 update an outgoing webhook<\/li>\n<li><code>DELETE \/wp-json\/rtcw\/v1\/webhooks\/{id}<\/code> \u2014 delete an outgoing webhook<\/li>\n<li><code>POST \/wp-json\/rtcw\/v1\/webhooks\/{id}\/test<\/code> \u2014 send a one-off test payload<\/li>\n<li><code>GET \/wp-json\/rtcw\/v1\/events<\/code> \u2014 list available trigger events (WooCommerce-aware)<\/li>\n<li><code>GET \/wp-json\/rtcw\/v1\/logs<\/code> \u2014 recent delivery logs (incoming and outgoing)<\/li>\n<li><code>DELETE \/wp-json\/rtcw\/v1\/logs<\/code> \u2014 clear the delivery log<\/li>\n<li><code>GET \/wp-json\/rtcw\/v1\/incoming-actions<\/code> \u2014 list incoming actions<\/li>\n<li><code>POST \/wp-json\/rtcw\/v1\/incoming-actions<\/code> \u2014 create an incoming action (<code>label<\/code>, <code>action_type<\/code>, <code>target_hook<\/code>, <code>auth_token<\/code>, <code>enabled<\/code>)<\/li>\n<li><code>PUT \/wp-json\/rtcw\/v1\/incoming-actions\/{id}<\/code> \u2014 update an incoming action<\/li>\n<li><code>DELETE \/wp-json\/rtcw\/v1\/incoming-actions\/{id}<\/code> \u2014 delete an incoming action<\/li>\n<li><code>GET \/wp-json\/rtcw\/v1\/incoming-action-types<\/code> \u2014 list available incoming action types<\/li>\n<li><code>POST \/wp-json\/rtcw\/v1\/incoming\/{key}<\/code> \u2014 public endpoint external services call to deliver data into an incoming action (send an <code>X-RTCW-Token<\/code> header if the action requires one)<\/li>\n<\/ul>\n\n<p><strong>Building the admin app from source:<\/strong> the React source lives in <code>src\/<\/code>. Requires Node.js.<\/p>\n\n<pre><code>npm install\nnpm run start \u2014 watch mode while developing\nnpm run build \u2014 production build into `build\/` (already built and committed for this release)\n<\/code><\/pre>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>rt-connect-webhooks<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install the zip directly via <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Go to <strong>Settings \u2192 RT Connect Webhooks<\/strong> to add your first outgoing webhook or incoming action.<\/li>\n<li>Use the <strong>Test<\/strong> button to confirm an outgoing webhook is reachable before relying on it.<\/li>\n<li>Copy an incoming action's URL into Zapier, Make, Pabbly, or any service that can send a webhook, and start receiving data into WordPress.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20work%20with%20zapier%2C%20make%2C%20or%20pabbly%3F\"><h3>Does this plugin work with Zapier, Make, or Pabbly?<\/h3><\/dt>\n<dd><p>Yes. Outgoing webhooks send standard JSON (or form\/XML) payloads that any of these platforms can catch with a webhook trigger. Incoming actions accept POST requests from any of these platforms to create WordPress content.<\/p><\/dd>\n<dt id=\"do%20i%20need%20woocommerce%20for%20this%20to%20work%3F\"><h3>Do I need WooCommerce for this to work?<\/h3><\/dt>\n<dd><p>No. WooCommerce is optional \u2014 if it's active, an extra \"WooCommerce Order Created\" trigger becomes available automatically. Every other feature works on a plain WordPress install.<\/p><\/dd>\n<dt id=\"can%20i%20secure%20my%20webhooks%3F\"><h3>Can I secure my webhooks?<\/h3><\/dt>\n<dd><p>Yes. Outgoing webhooks support HMAC-SHA256 payload signing plus API key, Bearer token, or Basic Auth headers. Incoming action URLs can require a matching auth token before they'll process a request.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20a%20webhook%20delivery%20fails%3F\"><h3>What happens if a webhook delivery fails?<\/h3><\/dt>\n<dd><p>RT Connect Webhooks automatically retries failed deliveries (the number of attempts is configurable per webhook) and logs the outcome, including the response code and body, so you can see exactly what happened.<\/p><\/dd>\n<dt id=\"can%20i%20trigger%20a%20webhook%20from%20my%20own%20php%20code%3F\"><h3>Can I trigger a webhook from my own PHP code?<\/h3><\/dt>\n<dd><p>Yes. Call <code>RTCW_Webhooks::manual_trigger( $event, $data )<\/code> from your theme or plugin, or hook into <code>rtcw_event_dispatched<\/code> and <code>rtcw_payload<\/code> to extend the built-in behavior.<\/p><\/dd>\n<dt id=\"is%20there%20a%20rest%20api%3F\"><h3>Is there a REST API?<\/h3><\/dt>\n<dd><p>Yes, a full REST API is available under <code>\/wp-json\/rtcw\/v1\/<\/code> for managing webhooks, incoming actions, and logs \u2014 see the Developer Notes section below.<\/p><\/dd>\n<dt id=\"are%20incoming%20and%20outgoing%20webhooks%20separated%20in%20the%20admin%20screen%3F\"><h3>Are incoming and outgoing webhooks separated in the admin screen?<\/h3><\/dt>\n<dd><p>Yes. The settings screen is organized into three tabs \u2014 <strong>Outgoing Webhooks<\/strong>, <strong>Incoming Actions<\/strong>, and <strong>Logs<\/strong> \u2014 each with its own item count, so you can manage what your site sends out and what it accepts in without the two lists mixing together.<\/p><\/dd>\n<dt id=\"what%27s%20the%20difference%20between%20an%20outgoing%20webhook%20and%20an%20incoming%20action%3F\"><h3>What's the difference between an outgoing webhook and an incoming action?<\/h3><\/dt>\n<dd><p>An <strong>outgoing webhook<\/strong> fires from WordPress <em>out<\/em> to another service \u2014 e.g. WordPress notifies Zapier the moment a new user registers. An <strong>incoming action<\/strong> works the other way: it gives you a secure URL that Zapier, Make, Pabbly, or any script can POST <em>into<\/em>, so an external event (a form submission, a spreadsheet row, a payment) can create or update something in WordPress. Most sites use both directions together.<\/p><\/dd>\n<dt id=\"can%20i%20connect%20wordpress%20to%20zapier%20without%20using%20zapier%27s%20own%20wordpress%20app%3F\"><h3>Can I connect WordPress to Zapier without using Zapier's own WordPress app?<\/h3><\/dt>\n<dd><p>Yes. RT Connect Webhooks sends standard webhook payloads that Zapier's generic \"Webhooks by Zapier\" trigger can catch directly, and its Incoming Actions accept Zapier's outgoing webhook action \u2014 so you get full two-way automation without relying on Zapier's more limited native WordPress integration.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>3.8.0<\/h4>\n\n<ul>\n<li>The admin screen is now organized into three separate tabs \u2014 <strong>Outgoing Webhooks<\/strong>, <strong>Incoming Actions<\/strong>, and <strong>Logs<\/strong> \u2014 instead of one long scrolling page, so each direction of webhook traffic has its own dedicated view with a live item count.<\/li>\n<li>SEO and clarity pass on the plugin description, FAQ, and section headings.<\/li>\n<\/ul>\n\n<h4>3.7.0<\/h4>\n\n<ul>\n<li>Plugin-specific trigger and incoming-action groups (WooCommerce, LearnDash, EDD, Contact Form 7, and every other integration group) are no longer hidden when that plugin isn't installed \u2014 they now always show up in the picker, grayed out and disabled with a \"plugin not active\" tag, so you can see the full feature set before installing anything.<\/li>\n<li>The flat trigger-matching list used internally still only includes events from plugins that are actually active, so nothing can silently be selected for a plugin that isn't there.<\/li>\n<\/ul>\n\n<h4>3.6.0<\/h4>\n\n<ul>\n<li>Added two more real Contact Form 7 events: mail failed to send, and before-mail-is-sent (in addition to form submitted and spam detected).<\/li>\n<li>Added two more real Ninja Forms events: email action sent, and submission saved (in addition to form submitted) \u2014 these fire from Ninja Forms' own per-action hooks (<code>ninja_forms_run_action_email<\/code> \/ <code>ninja_forms_run_action_save<\/code>).<\/li>\n<li>Confirmed WordPress-core action\/trigger parity with popular automation plugins: create\/delete\/search\/retrieve users, create\/delete\/search\/retrieve posts (custom post types supported via <code>post_type<\/code>), create\/update\/delete comments, send email, create taxonomy terms + term meta, receive data on a custom URL via Incoming Actions' \"Fire Custom WordPress Hook\", and triggers for user login\/register\/update\/delete, new\/updated\/deleted post, new\/updated\/trashed\/deleted comment, email sent, and custom WordPress hook calls.<\/li>\n<\/ul>\n\n<h4>3.5.0<\/h4>\n\n<ul>\n<li>Expanded Incoming Actions for the plugins that already had trigger support, to match the same breadth: LearnDash (complete lesson, enroll\/unenroll from a course, in addition to complete course), Paid Memberships Pro (cancel membership, in addition to add\/remove), and Easy Digital Downloads (update\/delete discount, create\/update\/delete download, create\/update\/delete payment, and \u2014 where EDD Software Licensing \/ EDD Recurring are active \u2014 create\/update\/delete\/renew license and create\/update\/delete subscription).<\/li>\n<\/ul>\n\n<h4>3.4.0<\/h4>\n\n<ul>\n<li>Removed the @wordpress\/components dependency entirely \u2014 every part of the admin UI (buttons, toggles, selects, panels, notices, modal) is now our own hand-built component in <code>src\/components\/ui\/Controls.js<\/code>. Only <code>@wordpress\/element<\/code> (React) and <code>@wordpress\/i18n<\/code> (translations) remain, since those are required to mount into the WordPress admin.<\/li>\n<li>Massively expanded WooCommerce triggers: pending, processing, on-hold, completed, cancelled, refunded, failed order statuses, plus customer created, stock changed, and added-to-cart.<\/li>\n<li>Added a couple more real events for Contact Form 7 (spam detected) and Gravity Forms (entry updated), alongside the existing WPForms, Ninja Forms, and Elementor Pro Forms submission triggers.<\/li>\n<li><strong>This release ships source-only<\/strong> \u2014 the <code>build\/<\/code> folder is intentionally not included. Run <code>npm install &amp;&amp; npm run build<\/code> yourself before activating (see Development section below).<\/li>\n<\/ul>\n\n<h4>3.3.0<\/h4>\n\n<ul>\n<li>Massively expanded the trigger catalog to mirror popular WordPress automation plugins: user login\/update\/delete, comments (new\/updated\/trashed\/deleted), email sent, and full plugin groups for Paid Member Subscriptions, Profile Builder, Contact Form 7, WPForms, Gravity Forms, Fluent Forms, Fluent Support, FluentCRM, Formidable Forms, Forminator, HappyForms, Newsletter, Ninja Forms, Elementor Pro Forms, GiveWP, Easy Digital Downloads (customers, downloads, payments, licensing, subscriptions), AffiliateWP, Amelia, Broken Link Checker, LearnDash (course\/lesson\/quiz\/topic), MemberPress, Paid Memberships Pro, WP Fusion, WP Simple Pay, and bbPress.<\/li>\n<li>Massively expanded Incoming Actions to include: create\/update\/delete\/search users, create\/update\/delete\/search posts, create\/update\/delete comments, send email, create taxonomy terms, LearnDash course completion, Paid Memberships Pro membership add\/remove, Profile Builder approve\/unapprove\/confirm email, FluentCRM add-to-list\/tag, and Easy Digital Downloads customer\/discount management.<\/li>\n<li>New <code>rtcw_available_incoming_action_groups<\/code> and <code>rtcw_run_incoming_action<\/code> filters so developers can register their own incoming action types.<\/li>\n<\/ul>\n\n<h4>3.2.0<\/h4>\n\n<ul>\n<li>Redesigned \"Add New Webhook\" as a custom, own-built UI (no third-party component library, no external font\/link imports \u2014 system font stack only).<\/li>\n<li>Expanded the Events picker into collapsible groups covering many third-party plugins: WooCommerce, Contact Form 7, WPForms, Gravity Forms, Fluent Forms, Formidable Forms, Forminator, Ninja Forms, Elementor Pro Forms, Easy Digital Downloads, AffiliateWP, LearnDash, MemberPress, and bbPress \u2014 each group only appears when that plugin is active.<\/li>\n<li>New <code>rtcw_available_event_groups<\/code> filter so developers can register their own plugin's events into the same grouped picker.<\/li>\n<\/ul>\n\n<h4>3.1.0<\/h4>\n\n<ul>\n<li>Changed: the plugin now has its own root-level admin menu item instead of living under Settings.<\/li>\n<li>Changed: the admin screen now talks to WordPress via admin-ajax.php instead of the REST API \u2014 no REST routes are used for the settings UI.<\/li>\n<li>New: \"Custom WordPress Action Hook\" trigger \u2014 configure any webhook to fire whenever a specific WordPress action runs (e.g. <code>wp_login<\/code>, <code>acf\/save_post<\/code>), with the hook's arguments included in the payload, matching the \"fire on any WordPress hook\" behavior of similar automation plugins.<\/li>\n<\/ul>\n\n<h4>3.0.0<\/h4>\n\n<ul>\n<li>New: Incoming Actions \u2014 receive data from external services at a unique URL and create a post, create a user, or fire a custom hook.<\/li>\n<li>New: per-webhook HTTP method, body format (JSON\/form\/XML), authentication (API key\/Bearer\/Basic), custom headers, timeout, and retry count.<\/li>\n<li>New: one-click \"Test\" button to send a sample payload to any configured webhook.<\/li>\n<li>New: log detail modal and an incoming\/outgoing direction column in the delivery log.<\/li>\n<li>New: <code>rtcw_payload<\/code> filter, <code>rtcw_event_dispatched<\/code> action, and a public <code>manual_trigger()<\/code> method for developers.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Rebuilt the admin settings screen as a React app using <code>@wordpress\/components<\/code> instead of plain PHP forms.<\/li>\n<li>Added a <code>rtcw\/v1<\/code> REST API backing the new UI (webhook CRUD, events list, logs).<\/li>\n<li>Removed the old <code>admin-post.php<\/code> form handlers in favor of the REST API.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: outgoing webhooks for user registration, post publish\/update, and WooCommerce orders.<\/li>\n<\/ul>","raw_excerpt":"Send &amp; receive WordPress webhooks. Connect Zapier, Make, Pabbly &amp; any API to WordPress in both directions \u2014 no code required.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/313032","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=313032"}],"author":[{"embeddable":true,"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/raintech357"}],"wp:attachment":[{"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=313032"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=313032"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=313032"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=313032"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=313032"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/mlt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=313032"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}