{"id":197922,"date":"2024-11-16T03:44:27","date_gmt":"2024-11-16T03:44:27","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/webhookx\/"},"modified":"2026-03-10T05:30:44","modified_gmt":"2026-03-10T05:30:44","slug":"webhookx","status":"publish","type":"plugin","link":"https:\/\/twd.wordpress.org\/plugins\/webhookx\/","author":23176191,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"0.1.1","stable_tag":"0.1.1","tested":"6.9.4","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Webhook For WooCommerce","header_author":"SoftTent","header_description":"This plugin seamlessly integrates webhookx into WordPress, enabling automated communication with external systems based on user actions and roles.","assets_banners_color":"1b385b","last_updated":"2026-03-10 05:30:44","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/webhookx","header_author_uri":"https:\/\/softtent.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":405,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.1":{"tag":"0.1.1","author":"softtent","date":"2026-03-10 05:30:44"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.jpg":{"filename":"icon-128x128.jpg","revision":3478806,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.jpg":{"filename":"icon-256x256.jpg","revision":3478806,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3478806,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3478806,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3478755,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3478755,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3478755,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3478755,"resolution":"4","location":"assets","locale":""}},"screenshots":{"1":"Webhooks list \u2014 name, event, webhook URL, status, and created date.","2":"Add\/Edit webhook form \u2014 event selector, webhook URL, secret key, and status.","3":"Webhook Logs tab \u2014 paginated webhook history with status badges, HTTP code, event, webhook name, duration, and date.","4":"Log detail modal \u2014 full request payload and response body with status, HTTP code, and timing."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[569,947,1159,15439,286],"plugin_category":[45],"plugin_contributors":[234646],"plugin_business_model":[],"class_list":["post-197922","plugin","type-plugin","status-publish","hentry","plugin_tags-automation","plugin_tags-http","plugin_tags-notification","plugin_tags-webhook","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-softtent","plugin_committers-softtent"],"banners":{"banner":"https:\/\/ps.w.org\/webhookx\/assets\/banner-772x250.jpg?rev=3478806","banner_2x":"https:\/\/ps.w.org\/webhookx\/assets\/banner-1544x500.jpg?rev=3478806","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/webhookx\/assets\/icon-128x128.jpg?rev=3478806","icon_2x":"https:\/\/ps.w.org\/webhookx\/assets\/icon-256x256.jpg?rev=3478806","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/webhookx\/assets\/screenshot-1.png?rev=3478755","caption":"Webhooks list \u2014 name, event, webhook URL, status, and created date."},{"src":"https:\/\/ps.w.org\/webhookx\/assets\/screenshot-2.png?rev=3478755","caption":"Add\/Edit webhook form \u2014 event selector, webhook URL, secret key, and status."},{"src":"https:\/\/ps.w.org\/webhookx\/assets\/screenshot-3.png?rev=3478755","caption":"Webhook Logs tab \u2014 paginated webhook history with status badges, HTTP code, event, webhook name, duration, and date."},{"src":"https:\/\/ps.w.org\/webhookx\/assets\/screenshot-4.png?rev=3478755","caption":"Log detail modal \u2014 full request payload and response body with status, HTTP code, and timing."}],"raw_content":"<!--section=description-->\n<p>WebhookX is a lightweight, developer-friendly webhook manager for WordPress and WooCommerce. Create unlimited webhooks that fire automatically when WooCommerce actions happen, and deliver rich JSON payloads to any external endpoint in real time.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li><strong>WooCommerce event triggers<\/strong> \u2014 Hook into 11+ built-in WooCommerce actions out of the box.<\/li>\n<li><strong>Custom delivery URL<\/strong> \u2014 Send webhook payloads to any HTTP\/HTTPS endpoint.<\/li>\n<li><strong>HMAC secret signing<\/strong> \u2014 Optionally secure each webhook with a secret key. Requests include an <code>X-WebhookX-Signature<\/code> header (SHA-256 HMAC) so your endpoint can verify authenticity.<\/li>\n<li><strong>Active \/ Inactive status<\/strong> \u2014 Enable or disable individual webhooks without deleting them.<\/li>\n<li><strong>Rich JSON payloads<\/strong> \u2014 Payloads include full order details (line items, billing, shipping, totals), customer data, product stock info, and more.<\/li>\n<li><strong>Bulk delete<\/strong> \u2014 Remove multiple webhooks at once from the management table.<\/li>\n<li><strong>Webhook delivery logs<\/strong> \u2014 Every webhook delivery is automatically logged with status, HTTP response code, response body, payload, and execution duration. Browse, filter, retry, and delete log entries from a dedicated Logs tab.<\/li>\n<li><strong>Non-blocking delivery<\/strong> \u2014 Webhooks are dispatched asynchronously so they never slow down your storefront.<\/li>\n<li><strong>Extendable<\/strong> \u2014 Add custom events via the <code>webhookx_woocommerce_events<\/code> filter.<\/li>\n<\/ul>\n\n<h4>Supported WooCommerce Events<\/h4>\n\n<ul>\n<li>New Order Created<\/li>\n<li>Order Status Changed<\/li>\n<li>Payment Complete<\/li>\n<li>Checkout Order Processed<\/li>\n<li>Order Completed<\/li>\n<li>Order Cancelled<\/li>\n<li>Order Refunded<\/li>\n<li>Customer Created<\/li>\n<li>Add to Cart<\/li>\n<li>Product Stock Updated<\/li>\n<li>Product Stock Status Changed<\/li>\n<\/ul>\n\n<h4>Webhook Payload<\/h4>\n\n<p>Each webhook delivers a JSON <code>POST<\/code> body. For order events this includes:<\/p>\n\n<ul>\n<li>Order ID, status, currency, totals (subtotal, tax, shipping, grand total)<\/li>\n<li>Full billing and shipping address<\/li>\n<li>Line items with product ID, name, quantity, and totals<\/li>\n<li>Customer ID and email<\/li>\n<li>Order creation timestamp<\/li>\n<\/ul>\n\n<p>For customer events: customer ID, email, username, first\/last name.\nFor cart events: product ID, name, quantity, variation ID.\nFor stock events: product ID, name, SKU, stock quantity \/ status.<\/p>\n\n<h4>Request Headers<\/h4>\n\n<p>Every webhook request includes:<\/p>\n\n<ul>\n<li><code>Content-Type: application\/json<\/code><\/li>\n<li><code>X-WebhookX-Event<\/code> \u2014 the WooCommerce action slug that fired<\/li>\n<li><code>X-WebhookX-Delivery<\/code> \u2014 a unique UUID per delivery<\/li>\n<li><code>X-WebhookX-Signature<\/code> \u2014 SHA-256 HMAC signature (only when a secret key is set)<\/li>\n<\/ul>\n\n<h4>Webhook Logs<\/h4>\n\n<p>Every webhook delivery attempt is recorded in a dedicated <strong>Logs<\/strong> tab. Each log entry includes:<\/p>\n\n<ul>\n<li><strong>Status<\/strong> \u2014 <code>success<\/code>, <code>failed<\/code>, or <code>pending<\/code><\/li>\n<li><strong>HTTP response code<\/strong> \u2014 the status code returned by the remote endpoint<\/li>\n<li><strong>Webhook name &amp; event<\/strong> \u2014 which webhook fired and what triggered it<\/li>\n<li><strong>Delivery URL<\/strong> \u2014 the endpoint the payload was sent to<\/li>\n<li><strong>Request payload<\/strong> \u2014 the full JSON body that was delivered<\/li>\n<li><strong>Response body<\/strong> \u2014 the raw response returned by the endpoint<\/li>\n<li><strong>Duration<\/strong> \u2014 how long the delivery took in milliseconds<\/li>\n<li><strong>Timestamp<\/strong> \u2014 when the delivery was made<\/li>\n<\/ul>\n\n<p>From the Logs tab you can:<\/p>\n\n<ul>\n<li>Filter logs by status (All \/ Success \/ Failed)<\/li>\n<li>View full payload and response details in a modal<\/li>\n<li><strong>Retry<\/strong> any individual delivery with one click<\/li>\n<li><strong>Delete<\/strong> individual or bulk-selected log entries<\/li>\n<\/ul>\n\n<h3>Additional Information<\/h3>\n\n<p>For more information and updates, visit the official website <a href=\"https:\/\/softtent.com\">https:\/\/softtent.com<\/a>.<\/p>\n\n<h3>License<\/h3>\n\n<p>This plugin is licensed under the GPL-2.0-or-later License.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>webhookx<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Make sure WooCommerce is installed and activated.<\/li>\n<li>Navigate to <strong>WebhookX<\/strong> in the WordPress admin menu.<\/li>\n<li>Click <strong>Add Webhook<\/strong>, choose a WooCommerce event, enter your delivery URL, and save.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20require%20woocommerce%3F\"><h3>Does this plugin require WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. WebhookX is designed to trigger webhooks based on WooCommerce events. WooCommerce must be installed and active for webhooks to fire.<\/p><\/dd>\n<dt id=\"how%20do%20i%20verify%20the%20webhook%20came%20from%20my%20site%3F\"><h3>How do I verify the webhook came from my site?<\/h3><\/dt>\n<dd><p>Set a <strong>Secret Key<\/strong> when creating a webhook. Each request will include an <code>X-WebhookX-Signature<\/code> header containing <code>sha256=&lt;hmac&gt;<\/code>. Compute <code>hash_hmac('sha256', $raw_body, $secret)<\/code> on your server and compare it to the header value.<\/p><\/dd>\n<dt id=\"can%20i%20add%20my%20own%20custom%20events%3F\"><h3>Can I add my own custom events?<\/h3><\/dt>\n<dd><p>Yes. Use the <code>webhookx_woocommerce_events<\/code> filter to add your own event slugs to the event list in the UI. You are responsible for hooking the corresponding WordPress\/WooCommerce action.<\/p><\/dd>\n<dt id=\"how%20do%20i%20temporarily%20stop%20a%20webhook%20without%20deleting%20it%3F\"><h3>How do I temporarily stop a webhook without deleting it?<\/h3><\/dt>\n<dd><p>Edit the webhook and set its <strong>Status<\/strong> to <strong>Inactive<\/strong>. It will be ignored until you re-activate it.<\/p><\/dd>\n<dt id=\"where%20are%20webhook%20delivery%20logs%20stored%3F\"><h3>Where are webhook delivery logs stored?<\/h3><\/dt>\n<dd><p>Logs are stored in a custom database table (<code>{prefix}webhookx_logs<\/code>). You can view all logs under the <strong>Logs<\/strong> tab in the WebhookX admin screen. Logs are created automatically for every delivery attempt \u2014 whether it succeeds or fails.<\/p><\/dd>\n<dt id=\"can%20i%20retry%20a%20failed%20webhook%20delivery%3F\"><h3>Can I retry a failed webhook delivery?<\/h3><\/dt>\n<dd><p>Yes. In the <strong>Logs<\/strong> tab, click the <strong>\u22ee<\/strong> actions menu next to any log entry and choose <strong>Retry<\/strong>. The plugin will re-dispatch the original payload to the same endpoint immediately. You will be notified whether the retry succeeded or received a non-2xx response.<\/p><\/dd>\n<dt id=\"where%20can%20i%20find%20documentation%3F\"><h3>Where can I find documentation?<\/h3><\/dt>\n<dd><p>For detailed documentation, visit <a href=\"https:\/\/softtent.com\">https:\/\/softtent.com<\/a>.<\/p><\/dd>\n<dt id=\"need%20any%20help%3F\"><h3>Need Any Help?<\/h3><\/dt>\n<dd><p>Please mail us at <code>contact@softtent.com<\/code><\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>WooCommerce webhook management with 11 built-in event triggers.<\/li>\n<li>Add, edit, delete, and bulk-delete webhooks from the admin UI.<\/li>\n<li>HMAC SHA-256 request signing with optional secret key.<\/li>\n<li>Non-blocking async HTTP delivery via <code>wp_remote_post<\/code>.<\/li>\n<li>Rich JSON payloads for orders, customers, cart, and stock events.<\/li>\n<li>Active\/Inactive webhook status toggle.<\/li>\n<li>Added <strong>Webhook Logs<\/strong> \u2014 every delivery attempt is now recorded with status, HTTP code, response body, payload, and duration.<\/li>\n<li>New <strong>Logs tab<\/strong> in the admin UI with paginated, filterable log history (All \/ Success \/ Failed).<\/li>\n<li><strong>Retry<\/strong> any failed or successful delivery directly from the Logs tab.<\/li>\n<li><strong>Bulk delete<\/strong> log entries from the Logs tab.<\/li>\n<li>Log detail modal showing full request payload and response body.<\/li>\n<li>Fixed plugin-check warnings for direct database queries in <code>Webhook.php<\/code> and <code>WebhookLog.php<\/code>.<\/li>\n<\/ul>","raw_excerpt":"Send real-time HTTP webhook notifications to any external URL when WooCommerce events occur \u2014 orders, payments, customers, stock, and more.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/197922","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=197922"}],"author":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/softtent"}],"wp:attachment":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=197922"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=197922"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=197922"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=197922"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=197922"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=197922"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}