{"id":388814,"date":"2026-10-31T01:35:30","date_gmt":"2026-10-31T01:35:30","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/operanse-store-monitoring-for-woocommerce\/"},"modified":"2026-10-31T02:17:33","modified_gmt":"2026-10-31T02:17:33","slug":"operanse-agent","status":"publish","type":"plugin","link":"https:\/\/tw.wordpress.org\/plugins\/operanse-agent\/","author":17664658,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.9.4","stable_tag":"0.9.4","tested":"7.1.4","requires":"6.4","requires_php":"8.1","requires_plugins":null,"header_name":"Operanse \u2013 Store Monitoring for WooCommerce","header_author":"Operanse","header_description":"Read-only operations intelligence agent for WordPress and WooCommerce. Observes site behaviour, discovers architecture and reports to Operanse Cloud asynchronously. Never modifies your site.","assets_banners_color":"0e141f","last_updated":"2026-10-31 02:17:33","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/operanse.com","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":64,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.9.4":{"tag":"0.9.4","author":"jeswd","date":"2026-10-31 02:17:33","revision":3776270}},"upgrade_notice":{"0.8.0":"<p>If your site buffered events in a directory outside the web root that the plugin chose itself, they are moved at the next daily check. Set OPERANSE_DATA_DIR to keep a directory outside the web root.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3776250,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3776250,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3776250,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3776250,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.9.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3776250,"resolution":"1","location":"assets","locale":"","width":2028,"height":684},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3776250,"resolution":"2","location":"assets","locale":"","width":1206,"height":1022},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3776250,"resolution":"3","location":"assets","locale":"","width":1206,"height":1366},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3776250,"resolution":"4","location":"assets","locale":"","width":1206,"height":802}},"screenshots":{"1":"Playback, on Monitor and Insight: a store's morning replayed against its own normal. A payment gateway update, failing payments, a warning, then a critical alert, and recovery after the rollback (example store, not real data).","2":"Learned monitoring, on Monitor and Insight: each metric is drawn against the store's normal for that hour of the week. Here, orders paid at Stripe but never completed leave the expected range (example store).","3":"An alert email on Monitor and Insight: what changed, the store's usual range, an estimate of the revenue affected, and what Operanse did not verify. Watch alerts arrive by email too, for its fixed checks (example store).","4":"Asking your own AI assistant about your store over Operanse's read-only connection, on Monitor and Insight (example store)."}},"plugin_section":[],"plugin_tags":[1110,5603,4079,29148,286],"plugin_category":[45,54],"plugin_contributors":[197300],"plugin_business_model":[],"class_list":["post-388814","plugin","type-plugin","status-publish","hentry","plugin_tags-alerts","plugin_tags-monitoring","plugin_tags-subscriptions","plugin_tags-uptime","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-security-and-spam-protection","plugin_contributors-jeswd","plugin_committers-jeswd"],"banners":{"banner":"https:\/\/ps.w.org\/operanse-agent\/assets\/banner-772x250.png?rev=3776250","banner_2x":"https:\/\/ps.w.org\/operanse-agent\/assets\/banner-1544x500.png?rev=3776250","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/operanse-agent\/assets\/icon-128x128.png?rev=3776250","icon_2x":"https:\/\/ps.w.org\/operanse-agent\/assets\/icon-256x256.png?rev=3776250","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/operanse-agent\/assets\/screenshot-1.png?rev=3776250","caption":"Playback, on Monitor and Insight: a store's morning replayed against its own normal. A payment gateway update, failing payments, a warning, then a critical alert, and recovery after the rollback (example store, not real data)."},{"src":"https:\/\/ps.w.org\/operanse-agent\/assets\/screenshot-2.jpg?rev=3776250","caption":"Learned monitoring, on Monitor and Insight: each metric is drawn against the store's normal for that hour of the week. Here, orders paid at Stripe but never completed leave the expected range (example store)."},{"src":"https:\/\/ps.w.org\/operanse-agent\/assets\/screenshot-3.png?rev=3776250","caption":"An alert email on Monitor and Insight: what changed, the store's usual range, an estimate of the revenue affected, and what Operanse did not verify. Watch alerts arrive by email too, for its fixed checks (example store)."},{"src":"https:\/\/ps.w.org\/operanse-agent\/assets\/screenshot-4.png?rev=3776250","caption":"Asking your own AI assistant about your store over Operanse's read-only connection, on Monitor and Insight (example store)."}],"raw_content":"<!--section=description-->\n<p>A WooCommerce store can look perfectly normal and still be losing money. The home page loads, but subscription renewals have been failing since a gateway update. Background tasks stalled overnight, so orders were never completed. Someone switched off the last payment method. Uptime checks don't see any of this, and you usually find out from a customer.<\/p>\n\n<p>Operanse watches the activity behind your store, such as orders, payments, renewals and background tasks, and emails you when something stops working.<\/p>\n\n<ul>\n<li><strong>Free, on the Watch plan:<\/strong> essential checks for one store, with email alerts and a weekly report.<\/li>\n<li><strong>Paid, on Monitor or Insight:<\/strong> Operanse learns what is normal for your store hour by hour and tells you when activity leaves that range. It estimates the revenue affected, helps you investigate, and alerts by Slack, SMS and WhatsApp as well as email.<\/li>\n<li><strong>What you need:<\/strong> a free Operanse account at <a href=\"https:\/\/operanse.com\">operanse.com<\/a>, and this plugin connected to it.<\/li>\n<li><strong>Trial:<\/strong> new accounts start with 14 days of Insight, with no credit card required. If you don't add a payment method, the account moves to the free Watch plan and keeps your settings. You can also choose Watch from the start.<\/li>\n<\/ul>\n\n<p>Operanse does not change your store's content, orders, products or settings. The plugin keeps only its own monitoring data on your site: its settings, two tables, scheduled events and a small buffer.<\/p>\n\n<h4>Plans<\/h4>\n\n<p>Prices are in US dollars, per live store. Staging and development copies are free on the paid plans.<\/p>\n\n<h4>Watch \u2014 free<\/h4>\n\n<ul>\n<li>One store and one user.<\/li>\n<li>Uptime checked every five minutes.<\/li>\n<li>An alert when the store can no longer take an order because a configuration change switched off its last payment method, unpublished the checkout, cart or shop page, or left every product out of stock.<\/li>\n<li>An alert when background tasks (Action Scheduler and WP-Cron) stall or fail, and when subscription renewals fail.<\/li>\n<li>Alerts to one email address, a weekly report and an optional public status page.<\/li>\n<li>7 days of history in the dashboard.<\/li>\n<\/ul>\n\n<h4>Monitor \u2014 US$39 per store per month<\/h4>\n\n<ul>\n<li>Everything in Watch, on every store, with uptime checked every minute.<\/li>\n<li>Learns your store's normal, hour by hour, and alerts on unusual payment, order, refund and renewal activity.<\/li>\n<li>Watches supported forms, the services your store calls and the email it sends.<\/li>\n<li>Estimates the revenue each incident affects.<\/li>\n<li>Shows what changed on the site before a problem, and replays any day with Playback.<\/li>\n<li>Ask your own AI assistant (Claude, ChatGPT, Cursor and others) about your store over a read-only connection.<\/li>\n<li>Alerts by email, Slack, SMS and WhatsApp, with daily SMS and WhatsApp allowances.<\/li>\n<li>Unlimited users and 30 days of detailed history.<\/li>\n<\/ul>\n\n<h4>Insight \u2014 US$99 per store per month<\/h4>\n\n<ul>\n<li>Everything in Monitor.<\/li>\n<li>Server monitoring: CPU, memory, disk, database and PHP.<\/li>\n<li>An automatic AI review with each critical incident, giving the likely cause and the evidence behind it, labelled as AI inference. Six reviews per store per day are included. Extra reviews cost US$1.50 each, only if you allow them, up to a daily limit you set (zero to start).<\/li>\n<li>Higher SMS and WhatsApp allowances, and 90 days of detailed history.<\/li>\n<\/ul>\n\n<p>In short, Watch catches a defined set of failures. Monitor notices unusual behaviour and helps you investigate it. Insight adds server context and does the first analysis for you. Annual billing, allowances and limits are on the <a href=\"https:\/\/operanse.com\/pricing\/\">pricing page<\/a>.<\/p>\n\n<h4>What it does on your site, in brief<\/h4>\n\n<ul>\n<li><strong>Nothing before you connect it.<\/strong> Until an administrator pairs the site with an Operanse account, the plugin records nothing and sends nothing.<\/li>\n<li><strong>It reads, and does not modify your store.<\/strong> It observes activity through WordPress and WooCommerce hooks and reads a few status values. It does not change content, orders, products, settings, other plugins or files.<\/li>\n<li><strong>It sends operational data to Operanse's hosted service.<\/strong> That means counts, statuses, timings, plugin names and versions, and order-level data: each order's and subscription's number, total and currency. On the paid plans, investigating an incident can also read a specific order's line items and its internal notes. It sends no customer names, email addresses, postal addresses, phone numbers, IP addresses, card data, cookies or checkout form contents. Free text such as error messages and order notes is redacted on your server before it is sent. Redaction removes the customer details it recognises, but it cannot guarantee to catch everything someone typed into a note.<\/li>\n<li><strong>Your visitors never wait for Operanse.<\/strong> The plugin never contacts Operanse during a visitor's request. Events go into a local buffer, and a scheduled task uploads them later.<\/li>\n<li><strong>Every plan collects the same data.<\/strong> Your plan decides what the hosted service does with it: which monitoring, analysis and alerts you get.<\/li>\n<\/ul>\n\n<p>The full list of what is collected, why, and how long it is kept follows under \"External services\".<\/p>\n\n<h4>What Operanse can access remotely<\/h4>\n\n<p>Operanse can ask the plugin questions, for example \"how many scheduled actions failed in the last hour?\" or \"what is the status of order 1234?\". Each request names one capability from a fixed, read-only list built into this plugin, such as <code>get_action_scheduler_summary<\/code>, <code>get_order_state<\/code> or <code>get_recent_operational_errors<\/code>. The plugin checks the request's parameters before answering. Requests are signed with a key created when you pair. A request cannot carry code. The plugin has no capability that writes data, runs SQL, PHP or shell commands, or changes a setting. These requests are used on the paid plans to investigate incidents. Watch makes none.<\/p>\n\n<h4>How it handles failure<\/h4>\n\n<ul>\n<li>The plugin's hooks and scheduled tasks are wrapped in error handling designed to keep a monitoring failure from reaching WordPress or WooCommerce. Errors it catches are logged locally.<\/li>\n<li>If Operanse is slow or unreachable, events wait in the local buffer and upload later. The buffer has a fixed size limit.<\/li>\n<li>Like any plugin, it runs inside your site, so the best protection is to test updates on a staging copy, which is free on the paid plans.<\/li>\n<\/ul>\n\n<h4>Limitations<\/h4>\n\n<ul>\n<li>Watch's order checks look for a change from a working state. They catch specific configuration changes that stop orders, not every way a checkout can fail. A problem that already existed before you installed the plugin may not trigger an alert.<\/li>\n<li>Learned monitoring needs history. Checks for something that has stopped completely work from the first day. Most of a store's normal is learned from its first 48 hours, and quieter stores take longer.<\/li>\n<li>Operanse watches what your server can see. A problem only in a visitor's browser, such as a broken script on the checkout page, is outside what the plugin observes.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the <strong>Operanse API<\/strong> (<code>https:\/\/api.operanse.com<\/code>), run by JES WEB PTY LTD, to monitor your store. The plugin does nothing without an Operanse account.<\/p>\n\n<p><strong>Nothing is sent before an administrator pairs the site<\/strong> from Settings \u2192 Operanse (or <code>wp operanse pair<\/code>). Pairing sends a one-time pairing code, your site URL, and the plugin, WordPress and PHP versions.<\/p>\n\n<h4>What is sent after pairing, and why<\/h4>\n\n<p>The plugin sends the same data on every plan.<\/p>\n\n<ul>\n<li><strong>Heartbeat, every five minutes,<\/strong> used for Watch's checks and for connection status. It sends: plugin, WordPress and PHP versions; the site URL; whether WP-Cron is running; the state of the plugin's buffer; Action Scheduler past-due and failed counts and the age of the oldest past-due action; renewal orders created and failed in the last six hours. It also says whether the store can take an order: how many payment methods are switched on, the status word (such as draft or trash) of the checkout, cart and shop pages, how many products are published and not out of stock, and when each was last seen working. The heartbeat carries counts and status words only. It contains no order or customer details, page titles or ids.<\/li>\n<li><strong>Orders, payments, refunds and subscriptions,<\/strong> used to learn the store's normal and to estimate the revenue an incident affects. For each event it sends the order or subscription number, status, payment method, created-via, total, currency and item count; refund amounts; and a subscription's total and billing period. These are your store's own figures. Order and subscription numbers let events about the same order be joined. Nothing about the customer is sent with them. When Stripe refuses a payment or renewal, the plugin sends Stripe's short reason code (for example <code>insufficient_funds<\/code>) so Operanse can tell an ordinary decline from a fault. It does not send Stripe's message, the customer or the card.<\/li>\n<li><strong>Integrations,<\/strong> used to notice when something the store depends on stops working. This covers: submissions and failures of WPForms, Gravity Forms and Contact Form 7 forms, counted per form; whether WordPress handed outgoing mail to your mailer (counts and error classes, never addresses or content); the host names your site calls out to, with outcome and timing (never the path, query, headers or body); and your WooCommerce webhooks' topic, status, the host they deliver to and how many deliveries in a row failed (never the name, full URL, secret or payload).<\/li>\n<li><strong>Changes and who made them,<\/strong> used to show what changed before a problem: plugins, themes and WordPress itself; saves of WooCommerce, payment, shipping, tax, permalink, site-address, caching and SMTP settings (the setting's name and which fields changed, never a value); a product's status, price or stock status changing (that it changed, not the amount); whether the cart, checkout, my-account and shop pages were published or edited (never their content); and role changes. Each change records the WordPress user id, role and route (wp-admin, REST, WP-CLI or cron). It records no login names, display names or email addresses.<\/li>\n<li><strong>Request timings<\/strong> for a small sample of requests (2 % by default): route type, duration and status code, used to spot a slow or failing site.<\/li>\n<li><strong>PHP errors,<\/strong> used to connect a failure to the code involved: new lines from the PHP error log (at most 1 MB per run), redacted on your server before they are buffered.<\/li>\n<li><strong>Server resources,<\/strong> used for Insight's server monitoring: CPU, load and memory from <code>\/proc<\/code> and cgroup files, free disk space, database status counters and settings (<code>SHOW GLOBAL STATUS<\/code> and <code>SHOW GLOBAL VARIABLES<\/code>), PHP OpCache status, and the PHP-FPM pool's worker counts.<\/li>\n<li><strong>Structure discovery,<\/strong> used to recognise which plugins provide your checkout, forms, scheduled tasks and integrations, so a failure can be tied to the plugin involved. The plugin parses your active plugins' and theme's PHP files for structure only: hook names, REST routes, scheduled hooks, external domains called, database table names, and class and function names. It never sends source code, and it never reads <code>wp-config.php<\/code> or <code>.env<\/code> files. For each page a form is on, it sends the page's id, title and address (for example \"Checkout\" and <code>\/checkout\/<\/code>), which any visitor can already see.<\/li>\n<li><strong>Answers to remote requests<\/strong> (paid plans only), described under \"What Operanse can access remotely\". To investigate a specific order, the answer can include its line items (product id, quantity and line total) and up to ten of its internal order notes, redacted on your server first. Notes are free text, so redaction is a safeguard rather than a guarantee: avoid writing card or identity details into order notes.<\/li>\n<\/ul>\n\n<h4>How long it is kept, and how it is used<\/h4>\n\n<ul>\n<li>Raw events are kept for 30 days on Watch and Monitor, and 90 days on Insight. Aggregated metrics are kept to provide baselines and history. Evidence for an incident is kept with the incident.<\/li>\n<li><strong>On Watch<\/strong> the dashboard shows 7 days of history. Behind that, the service keeps the operational data above for 30 days. Watch's alerts come from the heartbeat and uptime checks only. The rest of the data powers no Watch alert, and nothing on Watch learns your store's normal from it. It is kept for two reasons: to improve how Operanse detects problems in general, and so that if you upgrade, your retained history can build your store's baseline straight away instead of from scratch. On Watch none of it is sent to an AI provider.<\/li>\n<li><strong>On Insight<\/strong>, labelled and redacted evidence about a critical incident is sent to our AI provider, Anthropic, to write the review. Our agreement with Anthropic does not allow your data to be used to train models.<\/li>\n<\/ul>\n\n<p><strong>Operanse also contacts your site:<\/strong> our servers request your home page and a status URL (<code>\/?wc-api=operanse-probe<\/code>, which answers only when the site is paired) to check uptime. If you choose the optional direct-inbound connection mode, Operanse sends signed requests to the REST route <code>operanse\/v1\/read<\/code>. By default the plugin polls for requests instead, and no inbound route is used.<\/p>\n\n<p>Data is processed under the Operanse <a href=\"https:\/\/operanse.com\/legal\/terms\/\">Terms of Service<\/a> and <a href=\"https:\/\/operanse.com\/legal\/privacy\/\">Privacy Policy<\/a>. The providers that process it on our behalf are listed on the <a href=\"https:\/\/operanse.com\/legal\/subprocessors\/\">Sub-processors<\/a> page.<\/p>\n\n<!--section=installation-->\n<h4>Basic setup, about five minutes<\/h4>\n\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Create an account at <a href=\"https:\/\/operanse.com\">operanse.com<\/a> and add your site. You will get a pairing code.<\/li>\n<li>In WordPress, go to Settings \u2192 Operanse, paste the pairing code and choose the 14-day trial or the free Watch plan.<\/li>\n<\/ol>\n\n<p>That's all you need. Within a few minutes, Settings \u2192 Operanse and your Operanse dashboard show the site as connected. Uptime and Watch's checks start straight away. On the trial and the paid plans, learned monitoring becomes useful as the store's first days of activity come in.<\/p>\n\n<h4>Recommended, for busy or important stores<\/h4>\n\n<p>These two settings make monitoring more dependable. Both involve your server: the first needs a system cron job plus a line in <code>wp-config.php<\/code>, and the second needs a directory plus a line in <code>wp-config.php<\/code>. You may want your developer or host to set them up. Settings \u2192 Operanse tells you if either would help your site and shows the exact line to use.<\/p>\n\n<ul>\n<li><strong>Run WP-Cron from a system cron.<\/strong> WordPress normally runs scheduled tasks only when someone visits the site, so on a quiet site the plugin's uploads, and your store's own background tasks, can run late. Add a system cron job and <code>define( 'DISABLE_WP_CRON', true );<\/code>.<\/li>\n<li><strong>Keep the plugin's buffer outside your web root.<\/strong> Add <code>define( 'OPERANSE_DATA_DIR', '\/path\/outside\/webroot\/operanse-data' );<\/code> with a directory the web server can write to. Without it, the plugin uses a protected folder under <code>wp-content\/uploads<\/code>, once it has confirmed that folder can't be fetched over the web. Otherwise it uses a small, size-limited database table.<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20the%20free%20plan%20really%20free%3F\"><h3>Is the free plan really free?<\/h3><\/dt>\n<dd><p>Yes. Watch has no end date and needs no card. It covers one store and one user, with alerts to one email address. A second store, teammates, Slack, SMS, WhatsApp or AI access need a paid plan.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20the%20trial%20ends%3F\"><h3>What happens when the trial ends?<\/h3><\/dt>\n<dd><p>If you have added a payment method, you continue on the plan you chose. If not, your account moves to Watch and keeps its settings. If you have more than one store, you choose which one Watch covers. The others stay connected but paused, so nothing needs reinstalling if you upgrade later.<\/p><\/dd>\n<dt id=\"does%20it%20change%20anything%20on%20my%20store%3F\"><h3>Does it change anything on my store?<\/h3><\/dt>\n<dd><p>No. It does not modify your content, orders, products or settings. It writes only its own data: its options, its two tables, its scheduled events and its buffer.<\/p><\/dd>\n<dt id=\"will%20it%20slow%20my%20site%20down%3F\"><h3>Will it slow my site down?<\/h3><\/dt>\n<dd><p>Visitor requests never wait for Operanse. Work in a visitor's request is limited to recording events into the local buffer and timing a 2 % sample of requests. Uploads, discovery and the heartbeat run in scheduled tasks.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20operanse%20is%20down%3F\"><h3>What happens if Operanse is down?<\/h3><\/dt>\n<dd><p>Your site keeps working as normal. Events wait in the local buffer, which has a fixed size limit, and upload when the service is back.<\/p><\/dd>\n<dt id=\"which%20plugins%20and%20services%20does%20it%20understand%3F\"><h3>Which plugins and services does it understand?<\/h3><\/dt>\n<dd><p>Any WooCommerce payment gateway. Stripe gets the most detail, with reason codes for refused payments. It understands WooCommerce Subscriptions renewals, Action Scheduler and WP-Cron, WPForms, Gravity Forms and Contact Form 7, WooCommerce webhooks, outgoing email through <code>wp_mail<\/code>, and any outbound HTTP call your site makes. Your own code can report forms, events, timings, integration calls and errors through six WordPress actions. They are documented at <a href=\"https:\/\/operanse.com\/how-it-works\/#hooks\">operanse.com\/how-it-works<\/a>.<\/p><\/dd>\n<dt id=\"where%20does%20the%20plugin%20store%20data%20on%20my%20server%3F\"><h3>Where does the plugin store data on my server?<\/h3><\/dt>\n<dd><p>In the directory you set with <code>OPERANSE_DATA_DIR<\/code>. Without it, the plugin uses <code>wp-content\/uploads\/operanse-agent\/spool<\/code> once it has confirmed that folder isn't publicly reachable. Otherwise it uses a size-limited table in your database. It never creates a directory outside your web root by itself.<\/p><\/dd>\n<dt id=\"how%20do%20i%20delete%20my%20data%3F\"><h3>How do I delete my data?<\/h3><\/dt>\n<dd><p>Deleting the plugin removes everything it stored on your site: its options, its two tables, its scheduled events and its buffer directory (only if that directory holds nothing but the plugin's own files). Deleting the plugin does not delete your data on Operanse. To delete it there, open the site in the Operanse dashboard and use Settings \u2192 Delete this site. To close your account, use Account \u2192 Close account. Both disconnect the plugin and remove the stored data. If you cannot sign in, email privacy@operanse.com.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.9.4<\/h4>\n\n<ul>\n<li>Operanse can tell when your PHP pool is too big for your server's memory, or full. A sampled request and Operanse's signed uptime check read the PHP-FPM pool's own counts: busy and total workers, the most at once, how often it hit its limit, the queue and how many requests it has served. Only numbers: never the pool's name, a script, an address or a user. The uptime check gets them only when Operanse signed it with your site's key, so nobody else can see how busy your server is. Read from FPM's status in memory, with no query, file or call, and nothing on servers that do not run PHP-FPM.<\/li>\n<\/ul>\n\n<h4>0.9.3<\/h4>\n\n<ul>\n<li>The site scan now records the title and address of each page a form is on, so your dashboard can name the page (\"Checkout\") and link to it instead of showing a post number. A page's title and address are what every visitor already sees in the browser; they are not visitor data, and they are redacted and length-limited like everything else the plugin sends. Two WordPress lookups per page, on the scan, never in a shopper's request.<\/li>\n<\/ul>\n\n<h4>0.9.2<\/h4>\n\n<ul>\n<li>A failed Stripe payment or renewal says why Stripe refused it, as Stripe's own short codes (for example <code>insufficient_funds<\/code> or <code>resource_missing<\/code>). Operanse uses them to tell an ordinary card decline from a failure that should not happen, such as a saved Stripe customer that no longer exists, and tells you about the second. Never Stripe's message, the customer, the card or the amount. Read from the error Stripe's gateway already raised, in memory, with no extra query or call.<\/li>\n<\/ul>\n\n<h4>0.9.1<\/h4>\n\n<ul>\n<li>The heartbeat lists the store's WooCommerce webhooks: each one's topic, the host it delivers to, its status and how many deliveries in a row have failed, and when WooCommerce switched one off for failing. Operanse alerts when WooCommerce disables a webhook by itself, which otherwise stops the deliveries silently. A webhook you pause or disable yourself is shown as a change and never alerted. Never the webhook's name, full URL, secret or payload. One read of WooCommerce's webhook list, on the plugin's own schedule, never in a shopper's request.<\/li>\n<\/ul>\n\n<h4>0.9.0<\/h4>\n\n<ul>\n<li>The heartbeat says whether the store can still take an order: how many payment methods are switched on, whether the checkout, cart and shop pages are published, and whether any published product is in stock, each with when the plugin last saw it working. Operanse alerts when one of them stops working, and never when a store has simply never used it. Two small queries and one read of WooCommerce's payment settings, on the plugin's own schedule, never in a shopper's request.<\/li>\n<\/ul>\n\n<h4>0.8.4<\/h4>\n\n<ul>\n<li>The plugin does the same work on every plan. Nothing in it is switched off by the account's plan any more; what the service keeps is decided by the service.<\/li>\n<li>Its folder under <code>wp-content\/uploads<\/code> is now named <code>operanse-agent<\/code>, after the plugin. A site using the old folder moves its buffered events to the new one at the next daily check, with nothing discarded.<\/li>\n<li>Every request value the plugin reads is sanitized before use, every table name in a query is a prepared identifier, and the inbound REST route is addressed through WordPress's own REST URL.<\/li>\n<\/ul>\n\n<h4>0.8.3<\/h4>\n\n<ul>\n<li>A role change is recorded only when the old or the new role can manage the store, its users, plugins, theme or content. A shopper registering or becoming a customer is not recorded.<\/li>\n<\/ul>\n\n<h4>0.8.2<\/h4>\n\n<ul>\n<li>A history of the changes that explain an incident, with who made them: saves of WooCommerce, payment, shipping, tax, permalink, site, caching and SMTP settings by name (which fields changed, never a value), product status, price and stock status changes, edits to the cart, checkout, my-account and shop pages (whether the content changed, never the content), and role changes, each with the user id, role and path. Shown in the Operanse dashboard under Changes and on Playback.<\/li>\n<\/ul>\n\n<h4>0.8.1<\/h4>\n\n<ul>\n<li>The database-buffer notice no longer appears on the free Watch plan or before pairing, when nothing is recorded.<\/li>\n<\/ul>\n\n<h4>0.8.0<\/h4>\n\n<ul>\n<li>Licensed GPLv2 or later.<\/li>\n<li>Admin notices appear only on Settings \u2192 Operanse, the Dashboard and the Plugins screen, and a dismissed notice stays dismissed for the same condition.<\/li>\n<li>The plugin no longer creates a directory outside the web root by itself. Sites that used one move their buffered events to the new location at the next daily check, with nothing discarded.<\/li>\n<li>Every PHP file refuses direct access.<\/li>\n<\/ul>\n\n<h4>0.7.0<\/h4>\n\n<ul>\n<li>The free Watch plan: a heartbeat and nothing else.<\/li>\n<li>Nothing is recorded before pairing, and the buffer starts empty when a site pairs.<\/li>\n<\/ul>","raw_excerpt":"Know when your WooCommerce store stops taking orders, renewals or payments, even while the site still looks fine. Free essential checks.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/388814","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=388814"}],"author":[{"embeddable":true,"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jeswd"}],"wp:attachment":[{"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=388814"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=388814"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=388814"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=388814"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=388814"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=388814"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}