{"id":339997,"date":"2026-07-24T19:59:17","date_gmt":"2026-07-24T19:59:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/webequipe-webhook-manager\/"},"modified":"2026-07-24T19:58:52","modified_gmt":"2026-07-24T19:58:52","slug":"webequipe-webhook-manager","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/webequipe-webhook-manager\/","author":23354821,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.0.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"WebEquipe Webhook Manager","header_author":"WebEquipe","header_description":"Forward events from forms, WooCommerce, and any WordPress hook to webhook endpoints, with payload shaping, conditions, and delivery logging.","assets_banners_color":"e1e4eb","last_updated":"2026-07-24 19:58:52","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/webequipe.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":26,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"webequipe","date":"2026-07-24 19:58:52"}},"upgrade_notice":{"1.0.2":"<p>Security fix for public file publishing MIME allowlist; log list display fixes. No database migration required.<\/p>","1.0.1":"<p>Validation on webhook and connection save; no database migration required.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3621879,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3621879,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3621879,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3621879,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3621879,"resolution":"1","location":"assets","locale":"","width":1544,"height":890},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3621879,"resolution":"2","location":"assets","locale":"","width":1536,"height":856},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3621879,"resolution":"3","location":"assets","locale":"","width":1530,"height":901},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3621879,"resolution":"4","location":"assets","locale":"","width":1534,"height":820}},"screenshots":{"1":"Dashboard with delivery stats and recent activity.","2":"Connections list.","3":"Webhook editor.","4":"Logs with replay and CSV export."}},"plugin_section":[],"plugin_tags":[569,601,597,15439,286],"plugin_category":[42,45],"plugin_contributors":[254575],"plugin_business_model":[],"class_list":["post-339997","plugin","type-plugin","status-publish","hentry","plugin_tags-automation","plugin_tags-forms","plugin_tags-integration","plugin_tags-webhook","plugin_tags-woocommerce","plugin_category-contact-forms","plugin_category-ecommerce","plugin_contributors-webequipe","plugin_committers-bdsarwar","plugin_committers-webequipe"],"banners":{"banner":"https:\/\/ps.w.org\/webequipe-webhook-manager\/assets\/banner-772x250.png?rev=3621879","banner_2x":"https:\/\/ps.w.org\/webequipe-webhook-manager\/assets\/banner-1544x500.png?rev=3621879","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/webequipe-webhook-manager\/assets\/icon-128x128.png?rev=3621879","icon_2x":"https:\/\/ps.w.org\/webequipe-webhook-manager\/assets\/icon-256x256.png?rev=3621879","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/webequipe-webhook-manager\/assets\/screenshot-1.png?rev=3621879","caption":"Dashboard with delivery stats and recent activity."},{"src":"https:\/\/ps.w.org\/webequipe-webhook-manager\/assets\/screenshot-2.png?rev=3621879","caption":"Connections list."},{"src":"https:\/\/ps.w.org\/webequipe-webhook-manager\/assets\/screenshot-3.png?rev=3621879","caption":"Webhook editor."},{"src":"https:\/\/ps.w.org\/webequipe-webhook-manager\/assets\/screenshot-4.png?rev=3621879","caption":"Logs with replay and CSV export."}],"raw_content":"<!--section=description-->\n<p>WebEquipe Webhook Manager captures events from forms, WooCommerce, and any WordPress action hook, then delivers normalized JSON (or form-encoded) payloads to one or more webhook endpoints you define.<\/p>\n\n<p>It is built around two concepts:<\/p>\n\n<ul>\n<li><strong>Connections<\/strong> \u2014 reusable destinations (URL, HTTP method, content type, authentication, custom headers, timeout, SSL verification, optional HMAC signing secret).<\/li>\n<li><strong>Webhooks<\/strong> \u2014 rules that map a trigger (a form submission, a WooCommerce event, or a WordPress action hook) to one or more connections, with optional payload shaping and conditions.<\/li>\n<\/ul>\n\n<p><strong>Key features<\/strong><\/p>\n\n<ul>\n<li>Triggers: form submissions (Contact Form 7, WPForms, Fluent Forms, Formidable Forms, Ninja Forms), WooCommerce events, and any WordPress action hook (with an on-demand hook picker).<\/li>\n<li>Payload shaping: send all fields, pick a subset, or remap field keys; inject static fields; apply per-field transforms.<\/li>\n<li>Conditional delivery: only send when field conditions match (AND\/OR).<\/li>\n<li>Authentication: Bearer token, Basic auth, custom headers, and HMAC-SHA256 request signing.<\/li>\n<li>Delivery logging with request\/response capture, replay, and CSV export.<\/li>\n<li>Dashboard with delivery stats and recent activity.<\/li>\n<li>Secrets (auth tokens, signing secrets) are encrypted at rest.<\/li>\n<\/ul>\n\n<p>This plugin does not connect to any WebEquipe service. It only sends data to the endpoints <strong>you<\/strong> configure.<\/p>\n\n<h3>Getting Started<\/h3>\n\n<ol>\n<li><strong>Create a connection.<\/strong> Webhook Manager \u2192 Connections \u2192 Add Connection. Enter a name and the destination URL. For testing you can use a service such as a request-bin endpoint. Add authentication only if your endpoint requires it.<\/li>\n<li><strong>Create a webhook.<\/strong> Webhook Manager \u2192 Webhooks \u2192 Add Webhook.\n\n<ul>\n<li>Step 1: name the webhook.<\/li>\n<li>Step 2: choose a trigger (Form submission, WooCommerce event, WordPress action hook, or Manual). For action hooks you can search active plugins for available hooks.<\/li>\n<li>Step 3\u20135: optionally shape the payload, add static fields\/transforms, and add delivery conditions.<\/li>\n<li>Choose one or more connections and enable the webhook.<\/li>\n<\/ul><\/li>\n<li><strong>Test it.<\/strong> Use <strong>Send Test<\/strong> on the webhook, or perform the real action, then review <strong>Logs<\/strong>.<\/li>\n<\/ol>\n\n<h3>Troubleshooting<\/h3>\n\n<ul>\n<li><strong>Test says \"could not reach the server\".<\/strong> Verify the URL is correct and reachable from your server, and that any required authentication is set. Check the Logs screen for the captured response.<\/li>\n<li><strong>No log entries appear.<\/strong> Confirm the webhook is enabled, the trigger\/source matches the event, and at least one connection is selected.<\/li>\n<li><strong>GET requests.<\/strong> A request body is not sent with GET\/HEAD requests; use POST\/PUT\/PATCH to send a body.<\/li>\n<li><strong>Deliveries are slow.<\/strong> Reduce the connection timeout, or enable asynchronous delivery in Settings.<\/li>\n<\/ul>\n\n<h3>Privacy<\/h3>\n\n<p>This plugin stores and transmits data that may include personal information:<\/p>\n\n<ul>\n<li><strong>Delivery logs<\/strong> may contain submitted form field values (which can include names, email addresses, and other personal data), the request URL, request\/response headers, and request\/response bodies. Some triggers (for example Contact Form 7) may include the submitter's IP address and user agent.<\/li>\n<li><strong>Outbound payloads<\/strong> are sent to the third-party endpoints you configure. The contents and the receiving party are entirely under your control.<\/li>\n<li><strong>Stored secrets<\/strong> (authentication tokens and HMAC signing secrets) are encrypted at rest.<\/li>\n<\/ul>\n\n<p>You control retention via the log retention setting, and you can permanently remove all plugin data on uninstall by enabling \"Remove all data on uninstall\" in Settings before deleting the plugin. Because payloads are delivered to external services that you choose, review those services' privacy practices and disclose them in your own site's privacy policy as needed.<\/p>\n\n<h3>Third-Party Services<\/h3>\n\n<p>This plugin does not bundle or call any predefined third-party service. It transmits data only to the webhook endpoint URLs that the site administrator configures. You are responsible for the terms and privacy policy of any endpoint you send data to.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/<\/code> or install it from the Plugins screen, then activate it.<\/li>\n<li>Go to <strong>Webhook Manager \u2192 Connections<\/strong> and add a connection (the destination URL and any authentication).<\/li>\n<li>Go to <strong>Webhook Manager \u2192 Webhooks<\/strong> and add a webhook: choose a trigger, select the connection(s), and (optionally) shape the payload.<\/li>\n<li>Use the <strong>Test Connection<\/strong> \/ <strong>Send Test<\/strong> buttons to confirm delivery.<\/li>\n<li>Trigger the real event and confirm a success entry under <strong>Webhook Manager \u2192 Logs<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20form%20plugins%20are%20supported%3F\"><h3>Which form plugins are supported?<\/h3><\/dt>\n<dd><p>Contact Form 7, WPForms, Fluent Forms, Formidable Forms, and Ninja Forms. WooCommerce events and arbitrary WordPress action hooks are also supported.<\/p><\/dd>\n<dt id=\"how%20do%20i%20verify%20the%20hmac%20signature%20on%20the%20receiving%20end%3F\"><h3>How do I verify the HMAC signature on the receiving end?<\/h3><\/dt>\n<dd><p>When a signing secret is set, requests include a header <code>X-WEWM-Signature: t=&lt;unix&gt;, v1=&lt;hex&gt;<\/code>. Recompute <code>hash_hmac('sha256', \"$t.$rawBody\", $secret)<\/code> and compare it to <code>v1<\/code> using a constant-time comparison.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20my%20data%20anywhere%20by%20default%3F\"><h3>Does the plugin send my data anywhere by default?<\/h3><\/dt>\n<dd><p>No. Payloads are sent only to the connection URLs you configure. Nothing is sent to the plugin author.<\/p><\/dd>\n<dt id=\"where%20are%20delivery%20logs%20stored%3F\"><h3>Where are delivery logs stored?<\/h3><\/dt>\n<dd><p>In custom database tables in your own WordPress database. You can set a retention period and export or replay logs from the Logs screen.<\/p><\/dd>\n<dt id=\"does%20it%20provide%20shortcodes%20or%20blocks%3F\"><h3>Does it provide shortcodes or blocks?<\/h3><\/dt>\n<dd><p>No. The plugin is configured entirely from the WordPress admin and does not register shortcodes or blocks.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Security: file publishing (URL file mode) enforces a MIME\/extension allowlist before copying uploads to the public uploads folder; unknown types and executable\/script files (php, phtml, phar, exe, js, svg, html, ...) are rejected.<\/li>\n<li>Fix: Logs list and detail always query the database directly (no stale object-cache empty lists).<\/li>\n<li>Fix: action-hook logs match hook-name filters; list queries no longer depend on a JOIN to wewm_webhooks.<\/li>\n<li>Fix: default Logs list uses a direct paginated DB query (same reliability as log detail view).<\/li>\n<li>Fix: webhook detail Logs tab uses direct webhook_id queries instead of the complex filter SQL.<\/li>\n<li>Fix: delivery logging auto-recovers when enable logging was accidentally stored off on new installs.<\/li>\n<li>Admin warning on the Logs screen when delivery logging is disabled in Settings.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Form save validation for webhooks and connections (server-side and client-side).<\/li>\n<li>Admin error notices when required fields are missing on save.<\/li>\n<li>Manual trigger label updated to \"Manual\" (was \"Manual \/ test\").<\/li>\n<li>Delivery logs redact sensitive request\/response headers (Authorization, X-WEWM-Signature, API keys).<\/li>\n<li>Log settings now enforced: enable logging, payload snapshots, and response snippets.<\/li>\n<li>WordPress.org compliance: conditional asset loading, no inline admin CSS, sanitized webhook validation input.<\/li>\n<li>Fix: delivery logging no longer silently stops when enable logging was stored off before 1.0.1; connection tests now create log entries.<\/li>\n<li>Fix: fresh installs auto-create log tables, correct logging checkbox saves, and show pending log rows for async deliveries.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Send events from forms, WooCommerce, and any WordPress hook to configurable webhook endpoints, with payload shaping and delivery logging.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/339997","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=339997"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/webequipe"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=339997"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=339997"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=339997"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=339997"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=339997"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=339997"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}