{"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-07T18:00:38","modified_gmt":"2026-06-07T18:00:38","slug":"minuttes","status":"publish","type":"plugin","link":"https:\/\/vi.wordpress.org\/plugins\/minuttes\/","author":5942240,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.3","stable_tag":"1.0.3","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-07 18:00:38","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":34,"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-07 18:00:38"}},"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"],"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<p><strong>Requirements<\/strong><\/p>\n\n<ul>\n<li>WordPress 6.2 or higher<\/li>\n<li>PHP 8.0 or higher<\/li>\n<li>WooCommerce 7.0 or higher (required for Action Scheduler and subscription features)<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin exposes a GraphQL API that external services can authenticate to via OAuth 2.0.<\/p>\n\n<h4>app.minuttes.com<\/h4>\n\n<p>When the site administrator authorizes a connection, the Minuttes monitoring service at app.minuttes.com connects inbound to this plugin's API endpoints to retrieve monitoring data (Action Scheduler queue status, subscription statistics). The plugin itself does not initiate outbound connections or transmit data. All API access requires explicit OAuth authorization by a site administrator with manage_options capability.<\/p>\n\n<ul>\n<li>Service URL: https:\/\/app.minuttes.com<\/li>\n<li>Terms of Service: https:\/\/minuttes.com\/terms<\/li>\n<li>Privacy Policy: https:\/\/minuttes.com\/privacy<\/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>Yes. WooCommerce 7.0 or higher is required for subscription monitoring features.<\/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.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:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/303080","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=303080"}],"author":[{"embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/conschneider"}],"wp:attachment":[{"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=303080"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=303080"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=303080"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=303080"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=303080"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/vi.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=303080"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}