BuddyPilot Order Webhook Guard

Description

BuddyPilot Order Webhook Guard fixes one specific WooCommerce side effect. Since WooCommerce 11.0, verifying a customer’s email address (a completed password reset, a set-password link for a new account, or a clicked verification link) reassigns every matching guest order to that account. Each reassigned order is saved, and every save fires the order.updated webhook.

If an external integration listens to order.updated and acts on it, for example an invoicing service that issues an invoice per order update, a single password reset can produce a burst of unwanted webhooks and duplicate documents, one for each past guest order on that email address.

This plugin suppresses the order.updated webhook only while that linking routine runs. The orders are still reassigned to the account, so the customer keeps their order history and download permissions; only the webhook delivery for those particular saves is skipped. Every other order.updated event, such as a status change or a manual edit in the admin, is delivered as usual.

What it does

  • Suppresses the order.updated webhook only during guest-order linking, and nothing else
  • Keeps the account linking intact, so customers keep their past orders and download permissions
  • Covers both linking paths: automatic (after email verification) and manual (the admin “link orders” action on the Customers report)
  • Leaves every other webhook topic, and every other order.updated event, untouched
  • Uses only public WooCommerce extension points and does not modify WooCommerce core
  • Zero configuration: no settings page, no options, no database writes

How it works

WooCommerce links past guest orders through its wc_update_new_customer_past_orders() routine. The plugin wraps that routine with a short-lived, process-local flag and, while the flag is raised, returns false from the woocommerce_webhook_should_deliver filter for the order.updated topic. WooCommerce evaluates that decision synchronously as each order is saved, so no matching webhook is queued for delivery. The flag is always cleared afterwards, even if an order save throws.

Installation

  1. Upload the buddypilot-order-webhook-guard folder to /wp-content/plugins/, or install the plugin ZIP via Plugins > Add New > Upload Plugin.
  2. Activate the plugin through the Plugins menu in WordPress.
  3. There is nothing to configure. WooCommerce must be active.

FAQ

Does this stop guest orders from being linked to customer accounts?

No. The linking still happens, so customers keep their past guest orders and any download permissions. Only the order.updated webhook that would fire during the linking is suppressed.

Does it affect normal order.updated webhooks?

No. Suppression is active only during the guest-order linking routine. Status changes, manual edits, and every other order update deliver their webhooks normally.

Which integrations does this help?

Any integration that consumes the WooCommerce order.updated webhook and reacts to it, for example invoicing services that create a document per order update.

Does it work without WooCommerce?

No. The plugin registers nothing meaningful unless WooCommerce is active, and does nothing otherwise.

Does it write anything to the database?

No. There are no options, no custom tables, and no settings screen. Deactivating the plugin fully restores the default WooCommerce behaviour.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“BuddyPilot Order Webhook Guard” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

1.0.0

  • Initial release.
  • Suppress the order.updated webhook while past guest orders are linked to a customer account, on both the email-verification path and the admin “link orders” path.