{"id":19004949,"date":"2026-08-27T19:42:36","date_gmt":"2026-08-27T19:42:36","guid":{"rendered":"https:\/\/wordpress.org\/support\/topic\/duplicate-failed-order-admin-email\/"},"modified":"2026-08-27T19:42:59","modified_gmt":"2026-08-27T19:42:59","slug":"duplicate-failed-order-admin-email","status":"publish","type":"topic","link":"https:\/\/wordpress.org\/support\/topic\/duplicate-failed-order-admin-email\/","title":{"rendered":"Duplicate failed order admin email"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Hi! It looks like the plugin triggers the <code>WC_Email_Failed_Order<\/code> email on <code>checkout.session.expired<\/code> (1), but WooCommerce by default also triggers <code>WC_Email_Failed_Order<\/code> email (2).<br \/><br \/>1: <code>Woo_Stripe_Pay_Addons\\Core\\Webhook_Handler::process_checkout_session_success()<\/code> =&gt; <code>Woo_Stripe_Pay_Addons\\Core\\Webhook_Handler::send_failed_order_email()<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2: <code>Woo_Stripe_Pay_Addons\\Core\\Webhook_Handler::process_checkout_session_success()<\/code> =&gt; <code>$order-&gt;update_status( 'failed', $message );<\/code> =&gt; <code>WC_Order::status_transition()<\/code> =&gt; <code>do_action( 'woocommerce_order_status_' . $status_transition['from'] . '<em>to<\/em>' . $status_transition['to'], $this-&gt;get_id(), $this );<\/code> and <code>WC_Email_Failed_Order::__construct()<\/code> has <code>add_action( 'woocommerce_order_status_pending_to_failed_notification', array( $this, 'trigger' ), 10, 2 );<\/code> which in turn triggers the mail when the action fires.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Can you please check and eliminate the duplicate email if confirmed?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Thanks!<\/p>\n","protected":false},"template":"","class_list":["post-19004949","topic","type-topic","status-publish","hentry","topic-tag-admin","topic-tag-duplicate","topic-tag-email","topic-tag-expired","topic-tag-failed","topic-tag-trigger"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/topic\/19004949","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/topic"}],"about":[{"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/types\/topic"}],"version-history":[{"count":1,"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/topic\/19004949\/revisions"}],"predecessor-version":[{"id":19004950,"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/topic\/19004949\/revisions\/19004950"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/support\/wp-json\/wp\/v2\/media?parent=19004949"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}