{"id":383962,"date":"2026-10-19T08:22:22","date_gmt":"2026-10-19T08:22:22","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/checkout-monitor\/"},"modified":"2026-10-19T14:15:27","modified_gmt":"2026-10-19T14:15:27","slug":"themechum-checkout-monitor","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/themechum-checkout-monitor\/","author":23582972,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.3","requires":"6.5","requires_php":"8.3","requires_plugins":null,"header_name":"ThemeChum Checkout Monitor for WooCommerce","header_author":"ThemeChum","header_description":"Lets Checkout Monitor safely test your WooCommerce checkout. Verifies signed test requests, adds a bot-only test payment gateway, and keeps every test order hidden from your real customers, orders list, and analytics.","assets_banners_color":"f2f1f1","last_updated":"2026-10-19 14:15:27","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/checkoutmonitor.app","header_author_uri":"https:\/\/themechum.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":57,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"themechum","date":"2026-10-19 14:15:27","revision":3754931}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3755827,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3755827,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3755827,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3755827,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[3148,5603,1591,29148,286],"plugin_category":[45,54],"plugin_contributors":[287469],"plugin_business_model":[],"class_list":["post-383962","plugin","type-plugin","status-publish","hentry","plugin_tags-checkout","plugin_tags-monitoring","plugin_tags-testing","plugin_tags-uptime","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-security-and-spam-protection","plugin_contributors-themechum","plugin_committers-themechum"],"banners":{"banner":"https:\/\/ps.w.org\/themechum-checkout-monitor\/assets\/banner-772x250.png?rev=3755827","banner_2x":"https:\/\/ps.w.org\/themechum-checkout-monitor\/assets\/banner-1544x500.png?rev=3755827","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/themechum-checkout-monitor\/assets\/icon-128x128.png?rev=3755827","icon_2x":"https:\/\/ps.w.org\/themechum-checkout-monitor\/assets\/icon-256x256.png?rev=3755827","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Your homepage loads. Your ads are still spending. Your uptime monitor is green. And nobody has bought anything for six hours, because the checkout is throwing an error that only appears at the payment step.<\/p>\n\n<p>That is the outage nobody catches. A broken checkout does not look broken from the outside. Everything that normally tells you something is wrong keeps saying everything is fine, because none of those tools ever tries to actually buy something.<\/p>\n\n<p>This plugin fixes that. Together with the Checkout Monitor service it places a <strong>real, complete test order on your store on a schedule<\/strong> \u2014 add to cart, checkout, simulated payment, order created \u2014 and emails you the moment any step stops working. You find out within your check interval, not when you check your sales figures the next morning.<\/p>\n\n<p>And it does this without touching your real business data. Every test order is flagged and hidden from your orders list, your order counts, WooCommerce Analytics and your transactional emails. Your reports stay clean. Your inbox stays quiet.<\/p>\n\n<p><strong>What you get<\/strong><\/p>\n\n<ul>\n<li>A real test checkout, start to finish, on your own store \u2014 not a ping, not a page load, an actual order going through the same path a customer takes.<\/li>\n<li>An alert the moment checkout stops working, with the error and a plain-English explanation of the likely cause.<\/li>\n<li>A second alert when it starts working again, so you know it is genuinely fixed.<\/li>\n<li>A warning when your storefront is hidden behind a coming-soon or maintenance page, so you find out before a day of traffic hits a splash screen.<\/li>\n<li>A check on whether your order-confirmation emails are even configured to send, so a broken SMTP setup shows up before a customer complains that no receipt arrived.<\/li>\n<li>Test orders that stay completely invisible: hidden from the orders list, the status counts, Analytics and every WooCommerce email.<\/li>\n<\/ul>\n\n<p><strong>Why uptime monitoring is not enough<\/strong><\/p>\n\n<p>An uptime monitor asks your server whether a page loads. It does not add to cart, it does not submit a payment, and it does not create an order. A plugin conflict on the checkout page, a shipping or tax rule that throws an error, a fatal error that only fires when an order is written, a coming-soon page left switched on \u2014 every one of those leaves an uptime monitor perfectly green while your store takes no orders at all. The only way to know checkout works is to complete a checkout.<\/p>\n\n<h3>How it works<\/h3>\n\n<p><strong>1. Install this plugin on your store.<\/strong> It generates a shared secret automatically when you activate it.<\/p>\n\n<p><strong>2. Paste that secret into your Checkout Monitor dashboard<\/strong> at <a href=\"https:\/\/checkoutmonitor.app\/\">checkoutmonitor.app<\/a>, along with your store URL.<\/p>\n\n<p><strong>3. Choose how often to test.<\/strong> That is the whole setup. Checkout Monitor starts running test checkouts on your schedule and alerts you when one fails.<\/p>\n\n<h3>Security and privacy<\/h3>\n\n<p>The technical detail, for anyone who wants it before installing something that can place orders on their store.<\/p>\n\n<ul>\n<li>Every incoming request is verified with an HMAC signature, a timestamp and a single-use nonce, so only Checkout Monitor can trigger a test. Any mismatch is refused with an identical response, giving an attacker nothing to learn from.<\/li>\n<li>The test product is hidden from your catalog, your search results, the Store API, the classic REST API and the admin product list. Only the verified bot can see it.<\/li>\n<li>The test payment gateway is available <strong>only<\/strong> to the verified bot. It never contacts Stripe, PayPal or any real payment provider, and no money ever moves. Real customers cannot see or select it, whatever the enabled toggle in WooCommerce says \u2014 availability is decided per request by the signature check.<\/li>\n<li>Every test order is flagged at creation and suppressed across the orders list, the status counts, WooCommerce Analytics and all transactional emails, including the admin new-order notification.<\/li>\n<li>A signed cleanup endpoint lets test orders be removed on request.<\/li>\n<\/ul>\n\n<p><strong>What it does not do<\/strong><\/p>\n\n<ul>\n<li>It does not take payments, and it does not place orders for real customers.<\/li>\n<li>It does not modify your theme, your checkout page or any of your existing products.<\/li>\n<li>It does not send any of your data anywhere on its own. See <em>External services<\/em> below.<\/li>\n<\/ul>\n\n<p>A Checkout Monitor account is required, since the plugin only responds to requests \u2014 it never initiates anything by itself. The free plan does not expire and does not ask for a card.<\/p>\n\n<h3>External services<\/h3>\n\n<p><strong>This plugin does not contact any external service.<\/strong> It makes no outbound HTTP requests of any kind. All traffic is inbound.<\/p>\n\n<p>What it does instead is expose three authenticated REST endpoints that the Checkout Monitor service at <strong>checkoutmonitor.app<\/strong> calls. Those calls are authenticated with a shared secret that you copy from <strong>Settings \u2192 Checkout Monitor<\/strong> on your own site and paste into your checkoutmonitor.app dashboard. Until you do that, nothing can successfully call these endpoints: every request without a valid signature is refused.<\/p>\n\n<p>Data your store returns when the service calls, and only then:<\/p>\n\n<ul>\n<li><strong>Status endpoint<\/strong> \u2014 whether your WooCommerce order-confirmation emails are enabled, the admin notification recipient address, your store's \"from\" email address and name, a hint identifying which SMTP plugin is active (if any), and the timestamp of the last plugin, theme or core update. The two email addresses are the only personal data involved; they are needed so the service can tell you whether order emails are actually configured to reach anyone.<\/li>\n<li><strong>Test product endpoint<\/strong> \u2014 the id, slug, SKU, permalink, status and visibility of the hidden test product.<\/li>\n<li><strong>Cleanup endpoint<\/strong> \u2014 the number of test orders removed and the number remaining. It requires an explicit confirmation flag in the request body and only ever touches orders this plugin created.<\/li>\n<\/ul>\n\n<p>Your customer records, order contents, payment details and site credentials are never read or returned by any of these endpoints.<\/p>\n\n<p>Using the Checkout Monitor service is subject to its <a href=\"https:\/\/checkoutmonitor.app\/terms\/\">Terms of Service<\/a> and <a href=\"https:\/\/checkoutmonitor.app\/privacy\/\">Privacy Policy<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce, if it is not already active.<\/li>\n<li>Install and activate <strong>ThemeChum Checkout Monitor for WooCommerce<\/strong> from <strong>Plugins \u2192 Add New Plugin<\/strong>.<\/li>\n<li>Go to <strong>Settings \u2192 Checkout Monitor<\/strong>. A shared secret is generated for you automatically on activation.<\/li>\n<li>Copy the shared secret shown on that page.<\/li>\n<li>Sign in at <a href=\"https:\/\/checkoutmonitor.app\/\">checkoutmonitor.app<\/a>, add your store, and paste the shared secret into the <strong>Shared secret<\/strong> field.<\/li>\n<\/ol>\n\n<p>That is the whole setup. Monitoring begins on the schedule you choose in your Checkout Monitor dashboard. Treat the shared secret like a password: anyone who has it can trigger a test checkout on your store.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20often%20is%20my%20checkout%20tested%3F\"><h3>How often is my checkout tested?<\/h3><\/dt>\n<dd><p>You choose the interval in your Checkout Monitor dashboard, and your plan sets how fast it is allowed to go. The free plan checks as often as every 30 minutes, Pro as often as every 3 minutes, and Agency as often as every minute. You can always run a check by hand from the dashboard as well.<\/p><\/dd>\n<dt id=\"is%20there%20a%20free%20plan%2C%20and%20what%20does%20it%20include%3F\"><h3>Is there a free plan, and what does it include?<\/h3><\/dt>\n<dd><p>Yes, and it does not expire. The free plan covers one store, checks as often as every 30 minutes, sends email alerts, and keeps 7 days of check history. No card is required to start.<\/p><\/dd>\n<dt id=\"where%20do%20alerts%20arrive%3F\"><h3>Where do alerts arrive?<\/h3><\/dt>\n<dd><p>Email on every plan, including free. Pro and Agency add Slack and custom webhooks, so you can route alerts into your own tooling or an on-call system. You can set the alert address per store, and if you leave it blank it falls back to your account email.<\/p><\/dd>\n<dt id=\"will%20it%20slow%20down%20my%20store%3F\"><h3>Will it slow down my store?<\/h3><\/dt>\n<dd><p>No. The plugin adds no CSS or JavaScript to your front end, makes no outbound HTTP requests, and does no work on a normal visitor's page load \u2014 the signature check short-circuits immediately when a request is not a signed test. The test checkout itself arrives like one additional visitor on the schedule you choose, which for most stores is a handful of requests an hour.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20block%20checkout%20and%20the%20classic%20checkout%3F\"><h3>Does it work with the block checkout and the classic checkout?<\/h3><\/dt>\n<dd><p>Yes, both. The test order is placed through WooCommerce's own Store API, which works the same way whichever checkout you use. The page check that looks at your rendered checkout recognizes both the block checkout and the classic shortcode checkout.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20my%20payment%20gateway%3F\"><h3>Does it work with my payment gateway?<\/h3><\/dt>\n<dd><p>The test does not use your real payment gateway, and this is worth being clear about. It uses its own simulated gateway that only the verified bot can reach, so no money moves and nothing is charged. That means a test checkout proves your cart, your checkout, your shipping and tax calculation and your order creation all work \u2014 but it does <strong>not<\/strong> prove Stripe or PayPal is up. If your real gateway has an outage, this test can still pass. Testing with a real gateway would mean taking real payments on your store on a schedule, which we are not willing to do to your books.<\/p><\/dd>\n<dt id=\"does%20a%20test%20order%20reduce%20my%20stock%20or%20affect%20my%20reports%3F\"><h3>Does a test order reduce my stock or affect my reports?<\/h3><\/dt>\n<dd><p>No. The test only ever buys its own hidden test product, never one of your real ones, and that product is created without stock management, so no stock count changes. Every test order is flagged and removed from WooCommerce Analytics, the orders list and the order status counts, so your reports show your real trading and nothing else.<\/p><\/dd>\n<dt id=\"what%20if%20my%20store%20is%20in%20maintenance%20or%20coming-soon%20mode%3F\"><h3>What if my store is in maintenance or coming-soon mode?<\/h3><\/dt>\n<dd><p>Checkout Monitor recognizes a coming-soon or maintenance overlay and tells you your storefront is hidden from shoppers, rather than reporting it as a checkout failure. That distinction matters: your checkout backend may be perfectly healthy while customers are seeing a splash page. It is a common and expensive mistake to leave coming-soon mode on after a redesign, and this is how you find out the same day.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20checkout%20monitor%20account%3F\"><h3>Do I need a Checkout Monitor account?<\/h3><\/dt>\n<dd><p>Yes. The plugin only answers signed requests; it never starts anything on its own, so on its own it does nothing. A free account is enough to get started.<\/p><\/dd>\n<dt id=\"will%20test%20orders%20appear%20in%20my%20orders%20list%2C%20reports%20or%20emails%3F\"><h3>Will test orders appear in my orders list, reports or emails?<\/h3><\/dt>\n<dd><p>No. Every order created by a verified test is flagged and then hidden from the orders list, the order status counts, WooCommerce Analytics and all transactional emails, including the admin new-order notification.<\/p><\/dd>\n<dt id=\"can%20a%20real%20customer%20see%20or%20use%20the%20test%20payment%20gateway%3F\"><h3>Can a real customer see or use the test payment gateway?<\/h3><\/dt>\n<dd><p>No. The gateway's availability is decided per request by the signature check, not by the enabled toggle in WooCommerce settings. A request without a valid signature never sees it. It also never contacts a real payment provider, so no money can move through it.<\/p><\/dd>\n<dt id=\"is%20a%20real%20payment%20taken%20during%20a%20test%3F\"><h3>Is a real payment taken during a test?<\/h3><\/dt>\n<dd><p>No. The test gateway simulates a successful payment and marks the order paid without contacting any payment provider. Nothing is charged and nothing is captured.<\/p><\/dd>\n<dt id=\"why%20does%20the%20test%20product%20show%20a%20price%3F\"><h3>Why does the test product show a price?<\/h3><\/dt>\n<dd><p>The test needs a purchasable product to complete a real checkout flow. The product is hidden from your catalog, search, the Store API, the classic REST API and the admin list, so customers cannot find or buy it.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20deactivate%20the%20plugin%3F\"><h3>What happens if I deactivate the plugin?<\/h3><\/dt>\n<dd><p>Monitoring stops answering and your store will show as unreachable in Checkout Monitor. Your shared secret and settings are kept, so reactivating resumes where you left off.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20delete%20the%20plugin%3F\"><h3>What happens if I delete the plugin?<\/h3><\/dt>\n<dd><p>The shared secret, the stored settings and the replay-protection records are permanently removed. The hidden test product and any test orders this plugin created are moved to the trash, so they leave your lists but can still be restored if you need them. Nothing belonging to WooCommerce or any other plugin is touched.<\/p><\/dd>\n<dt id=\"i%20regenerated%20the%20shared%20secret%20and%20monitoring%20stopped%20working.\"><h3>I regenerated the shared secret and monitoring stopped working.<\/h3><\/dt>\n<dd><p>That is expected. Regenerating invalidates the old value immediately. Copy the new secret from <strong>Settings \u2192 Checkout Monitor<\/strong>, then in Checkout Monitor open your store's Edit page, paste it under <strong>Store connection secret<\/strong> and press <strong>Verify &amp; replace<\/strong>. Monitoring resumes on the next check.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20high-performance%20order%20storage%20%28hpos%29%3F\"><h3>Does this work with High-Performance Order Storage (HPOS)?<\/h3><\/dt>\n<dd><p>Yes. The plugin declares HPOS compatibility and its order queries work with both HPOS and the legacy posts storage.<\/p><\/dd>\n<dt id=\"does%20it%20support%20multisite%3F\"><h3>Does it support multisite?<\/h3><\/dt>\n<dd><p>Yes. Each site in the network gets its own shared secret and is added to Checkout Monitor separately. On a newly created site the secret is generated the first time an administrator loads the dashboard.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release.<\/li>\n<\/ul>","raw_excerpt":"Know the moment your WooCommerce checkout breaks. A real test order runs on a schedule and alerts you before your customers find the problem.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/383962","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=383962"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/themechum"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=383962"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=383962"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=383962"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=383962"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=383962"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=383962"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}