{"id":303080,"date":"2026-06-07T15:39:48","date_gmt":"2026-06-07T15:39:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/minuttes\/"},"modified":"2026-06-08T07:18:01","modified_gmt":"2026-06-08T07:18:01","slug":"minuttes","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/minuttes\/","author":5942240,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.4","stable_tag":"1.0.4","tested":"7.0","requires":"6.2","requires_php":"8.0","requires_plugins":null,"header_name":"Minuttes","header_author":"Con Schneider","header_description":"Monitor WooCommerce Action Scheduler queues and subscriptions. Detect bundled Action Scheduler conflicts, control logging volume, and suspend the queue from one screen.","assets_banners_color":"628de9","last_updated":"2026-06-08 07:18:01","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":70,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.3":{"tag":"1.0.3","author":"conschneider","date":"2026-06-08 06:57:20"},"1.0.4":{"tag":"1.0.4","author":"conschneider","date":"2026-06-08 07:18:01"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3563764,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3563764,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3563764,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3563764,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.3","1.0.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3563813,"resolution":"1","location":"assets","locale":"","width":1500,"height":1058},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3563831,"resolution":"10","location":"assets","locale":"","width":1500,"height":1093},"screenshot-11.png":{"filename":"screenshot-11.png","revision":3563831,"resolution":"11","location":"assets","locale":"","width":1500,"height":1070},"screenshot-12.png":{"filename":"screenshot-12.png","revision":3563831,"resolution":"12","location":"assets","locale":"","width":1500,"height":1097},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3563813,"resolution":"2","location":"assets","locale":"","width":1500,"height":853},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3563813,"resolution":"3","location":"assets","locale":"","width":1500,"height":839},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3563831,"resolution":"4","location":"assets","locale":"","width":1500,"height":1202},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3563831,"resolution":"5","location":"assets","locale":"","width":1500,"height":972},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3563831,"resolution":"6","location":"assets","locale":"","width":1500,"height":988},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3563831,"resolution":"7","location":"assets","locale":"","width":1500,"height":1093},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3563831,"resolution":"8","location":"assets","locale":"","width":1500,"height":1093},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3563831,"resolution":"9","location":"assets","locale":"","width":1500,"height":1070}},"screenshots":{"1":"Minuttes Settings screen: detects bundled Action Scheduler copies across installed plugins and flags version conflicts, with a control to suspend or resume the queue.","2":"Cache TTL settings: control how long Action Scheduler query results are cached, per data group.","3":"Action Scheduler logger: switch to a critical-only logger to reduce log-table growth, with live logging statistics.","4":"Authorize Connection: the plugin's OAuth consent screen, where a site administrator reviews the requested access and approves the connection \u2014 no data leaves the site without it.","5":"Hosted dashboard at app.minuttes.com (optional): Action Scheduler queue health, failed actions, and stuck claims.","6":"The hosted dashboard in dark mode.","7":"Action Scheduler overview: scheduled, past-due, failed, completed, and cancelled action counts with historical trends.","8":"Action Scheduler database usage: table sizes, row counts, and index details for the Action Scheduler tables.","9":"Job statistics: completed, failed, and pending job counts broken down by hook.","10":"Stuck claim monitoring: detect and clear stuck Action Scheduler claims that block queue processing.","11":"WooCommerce subscription monitoring: active, on-hold, pending, cancelled, and expired counts with change history.","12":"Scheduled cleanup: automatically delete completed actions on a recurring schedule, with data-retention controls."}},"plugin_section":[],"plugin_tags":[225911,175418,5603,4079],"plugin_category":[41,54],"plugin_contributors":[89107],"plugin_business_model":[],"class_list":["post-303080","plugin","type-plugin","status-publish","hentry","plugin_tags-action-scheduler","plugin_tags-graphql","plugin_tags-monitoring","plugin_tags-subscriptions","plugin_category-communication","plugin_category-security-and-spam-protection","plugin_contributors-conschneider","plugin_committers-conschneider"],"banners":{"banner":"https:\/\/ps.w.org\/minuttes\/assets\/banner-772x250.png?rev=3563764","banner_2x":"https:\/\/ps.w.org\/minuttes\/assets\/banner-1544x500.png?rev=3563764","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/minuttes\/assets\/icon-128x128.png?rev=3563764","icon_2x":"https:\/\/ps.w.org\/minuttes\/assets\/icon-256x256.png?rev=3563764","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/minuttes\/assets\/screenshot-1.png?rev=3563813","caption":"Minuttes Settings screen: detects bundled Action Scheduler copies across installed plugins and flags version conflicts, with a control to suspend or resume the queue."},{"src":"https:\/\/ps.w.org\/minuttes\/assets\/screenshot-2.png?rev=3563813","caption":"Cache TTL settings: control how long Action Scheduler query results are cached, per data group."},{"src":"https:\/\/ps.w.org\/minuttes\/assets\/screenshot-3.png?rev=3563813","caption":"Action Scheduler logger: switch to a critical-only logger to reduce log-table growth, with live logging statistics."},{"src":"https:\/\/ps.w.org\/minuttes\/assets\/screenshot-4.png?rev=3563831","caption":"Authorize Connection: the plugin's OAuth consent screen, where a site administrator reviews the requested access and approves the connection \u2014 no data leaves the site without it."},{"src":"https:\/\/ps.w.org\/minuttes\/assets\/screenshot-5.png?rev=3563831","caption":"Hosted dashboard at app.minuttes.com (optional): Action Scheduler queue health, failed actions, and stuck claims."},{"src":"https:\/\/ps.w.org\/minuttes\/assets\/screenshot-6.png?rev=3563831","caption":"The hosted dashboard in dark mode."},{"src":"https:\/\/ps.w.org\/minuttes\/assets\/screenshot-7.png?rev=3563831","caption":"Action Scheduler overview: scheduled, past-due, failed, completed, and cancelled action counts with historical trends."},{"src":"https:\/\/ps.w.org\/minuttes\/assets\/screenshot-8.png?rev=3563831","caption":"Action Scheduler database usage: table sizes, row counts, and index details for the Action Scheduler tables."},{"src":"https:\/\/ps.w.org\/minuttes\/assets\/screenshot-9.png?rev=3563831","caption":"Job statistics: completed, failed, and pending job counts broken down by hook."},{"src":"https:\/\/ps.w.org\/minuttes\/assets\/screenshot-10.png?rev=3563831","caption":"Stuck claim monitoring: detect and clear stuck Action Scheduler claims that block queue processing."},{"src":"https:\/\/ps.w.org\/minuttes\/assets\/screenshot-11.png?rev=3563831","caption":"WooCommerce subscription monitoring: active, on-hold, pending, cancelled, and expired counts with change history."},{"src":"https:\/\/ps.w.org\/minuttes\/assets\/screenshot-12.png?rev=3563831","caption":"Scheduled cleanup: automatically delete completed actions on a recurring schedule, with data-retention controls."}],"raw_content":"<!--section=description-->\n<p>Minuttes is a monitoring layer for Action Scheduler, built for store owners and agencies that need visibility into the background processing their stores depend on.<\/p>\n\n<p>It pairs with the hosted dashboard at minuttes.com, but the plugin works standalone \u2014 use it as a GraphQL API for Action Scheduler, a drop-in way to reduce Action Scheduler's log volume, or a settings screen that detects bundled Action Scheduler conflicts between plugins. It also offers a stop button to suspend the Action Scheduler queue.<\/p>\n\n<p>minuttes.com is an optional, paid subscription and is not required. Every feature listed here works on its own, for free. minuttes.com only adds a hosted dashboard for monitoring one or more sites from one place, and connecting to it always requires explicit authorization on your site.<\/p>\n\n<p><strong>Features<\/strong><\/p>\n\n<ul>\n<li>Track queue status, job statistics, and failing actions<\/li>\n<li>View Action Scheduler database usage<\/li>\n<li>Monitor WP-Cron events and WooCommerce subscription status changes<\/li>\n<li>Suspend and resume the Action Scheduler queue, or rate limit specific hooks and groups<\/li>\n<li>Switch to a critical-only logger that keeps only errors and failures<\/li>\n<li>Detect multiple bundled copies of Action Scheduler across installed plugins<\/li>\n<\/ul>\n\n<h3>Credits<\/h3>\n\n<p>This plugin bundles the following third-party library:<\/p>\n\n<ul>\n<li><a href=\"https:\/\/github.com\/webonyx\/graphql-php\">webonyx\/graphql-php<\/a> - MIT License<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>minuttes<\/code> folder to <code>\/wp-content\/plugins\/<\/code> (or install from the WordPress plugin directory).<\/li>\n<li>Activate Minuttes from the Plugins screen.<\/li>\n<li>Visit Settings &rarr; Minuttes Settings to configure the logger and review Action Scheduler conflicts.<\/li>\n<li>To connect the Minuttes dashboard, start the OAuth flow from app.minuttes.com and approve the connection when redirected.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20require%20woocommerce%3F\"><h3>Does this plugin require WooCommerce?<\/h3><\/dt>\n<dd><p>No. It will work with any WordPress setup that uses Action Scheduler.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20free%3F%20do%20i%20need%20a%20paid%20minuttes.com%20account%3F\"><h3>Is the plugin free? Do I need a paid minuttes.com account?<\/h3><\/dt>\n<dd><p>The plugin is free and fully functional on its own. minuttes.com is a separate, optional paid subscription that adds a hosted dashboard for monitoring one or more sites from one place. No account is required: the GraphQL API, log-volume reduction, conflict detection, and queue controls all run locally.<\/p><\/dd>\n<dt id=\"what%20data%20is%20shared%20with%20app.minuttes.com%3F\"><h3>What data is shared with app.minuttes.com?<\/h3><\/dt>\n<dd><p>No data is sent outbound. When you authorize a connection, app.minuttes.com connects inbound to your site's API to read monitoring data (queue status, subscription statistics). All access requires explicit OAuth authorization by a site administrator.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Remove the hard WooCommerce plugin dependency (Requires Plugins: woocommerce). Minuttes now activates on any site running Action Scheduler; WooCommerce and WooCommerce Subscriptions features activate automatically when those plugins are present.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Rate-limit the OAuth token endpoint by client IP instead of the request-supplied client_id, so arbitrary client IDs can no longer bypass the limit or create unbounded rate-limit transients.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Enqueue the OAuth authorization page stylesheet via wp_register_style() \/ wp_print_styles() instead of inline CSS.<\/li>\n<li>Replace WP_PLUGIN_DIR \/ WP_CONTENT_DIR \/ ABSPATH usage with the relevant WordPress APIs (wp_upload_dir(), get_plugins(), plugin_basename(), get_theme_root()) for path detection.<\/li>\n<li>Broaden .distignore to keep development artifacts (CI configs, lint configs, package tests, examples) out of the distributed zip.<\/li>\n<li>Fix plugin activation by shipping the renamed GraphQL bootstrap (includes\/initializers\/graphql.php) and removing the obsolete wpgraphql-loader stub.<\/li>\n<li>Move remaining inline style attributes (cache TTL input width, OAuth authorize card sizing, admin settings status\/notice colors) into assets\/css\/admin.css classes and enqueue the stylesheet on the OAuth authorize admin page.<\/li>\n<li>Wrap GraphQL subscription type and field descriptions in <strong>() \/ esc_html<\/strong>() so they participate in translation; regenerate languages\/minuttes.pot.<\/li>\n<li>Drop unused GraphQL helper functions (minuttes_register_graphql_input_type, minuttes_register_graphql_connection) and the dead load_common_types() loader branch.<\/li>\n<li>Tidy initializer files: register hooks at the top of the file, consolidate guard clauses, and remove stale internal comments.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Resolve log directory via wp_upload_dir() instead of a hardcoded uploads path so the plugin works with custom WP_CONTENT_DIR, custom uploads filters, and multisite.<\/li>\n<li>Remove load_plugin_textdomain() \u2014 translations are auto-loaded since WordPress 4.6.<\/li>\n<li>Update webonyx\/graphql-php to 15.32.3.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Monitor and manage Action Scheduler. Stay on top of background task queues, WP-Cron jobs, and WooCommerce subscription changes.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/303080","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=303080"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/conschneider"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=303080"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=303080"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=303080"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=303080"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=303080"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=303080"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}