{"id":325085,"date":"2026-06-15T22:35:19","date_gmt":"2026-06-15T22:35:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ai-spend-monitor-by-axtolab\/"},"modified":"2026-06-16T00:37:22","modified_gmt":"2026-06-16T00:37:22","slug":"axtolab-ai-spend-monitor","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/axtolab-ai-spend-monitor\/","author":23496482,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.0","requires":"7.0","requires_php":"7.4","requires_plugins":null,"header_name":"Axtolab AI Spend Monitor","header_author":"Axtolab","header_description":"AI usage and cost tracking for the WordPress AI Client. See which plugins make AI calls, how many tokens they use, and what it costs \u2014 per plugin, per model, per day.","assets_banners_color":"566870","last_updated":"2026-06-16 00:37:22","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/axtolab.com\/products\/","header_author_uri":"https:\/\/axtolab.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":51,"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":"axtolab","date":"2026-06-15 22:34:42"},"1.0.1":{"tag":"1.0.1","author":"axtolab","date":"2026-06-16 00:37:22"}},"upgrade_notice":{"1.0.1":"<p>Adds an editable Cost rates tab so you can match estimates to your provider pricing without code.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3573764,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3573764,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3573764,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3573764,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3573764,"resolution":"1","location":"assets","locale":"","width":2083,"height":1329},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3573764,"resolution":"2","location":"assets","locale":"","width":1280,"height":720},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3573764,"resolution":"3","location":"assets","locale":"","width":1280,"height":720},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3573764,"resolution":"4","location":"assets","locale":"","width":1280,"height":720},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3573824,"resolution":"5","location":"assets","locale":"","width":1425,"height":1819}},"screenshots":{"1":"The AI Spend Monitor dashboard: summary cards, daily cost chart, and per-plugin usage.","2":"Usage by source \u2014 every plugin and theme that makes AI calls, with tokens and estimated cost.","3":"Recent AI calls log.","4":"Monthly spend notification and one-click CSV export.","5":"The Cost rates tab: edit per-model input\/output prices to match your provider plan."}},"plugin_section":[],"plugin_tags":[2353,30521,5603,39819,11180],"plugin_category":[54],"plugin_contributors":[264883],"plugin_business_model":[],"class_list":["post-325085","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-cost","plugin_tags-monitoring","plugin_tags-tokens","plugin_tags-usage","plugin_category-security-and-spam-protection","plugin_contributors-axtolab","plugin_committers-axtolab"],"banners":{"banner":"https:\/\/ps.w.org\/axtolab-ai-spend-monitor\/assets\/banner-772x250.png?rev=3573764","banner_2x":"https:\/\/ps.w.org\/axtolab-ai-spend-monitor\/assets\/banner-1544x500.png?rev=3573764","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/axtolab-ai-spend-monitor\/assets\/icon-128x128.png?rev=3573764","icon_2x":"https:\/\/ps.w.org\/axtolab-ai-spend-monitor\/assets\/icon-256x256.png?rev=3573764","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/axtolab-ai-spend-monitor\/assets\/screenshot-1.png?rev=3573764","caption":"The AI Spend Monitor dashboard: summary cards, daily cost chart, and per-plugin usage."},{"src":"https:\/\/ps.w.org\/axtolab-ai-spend-monitor\/assets\/screenshot-2.png?rev=3573764","caption":"Usage by source \u2014 every plugin and theme that makes AI calls, with tokens and estimated cost."},{"src":"https:\/\/ps.w.org\/axtolab-ai-spend-monitor\/assets\/screenshot-3.png?rev=3573764","caption":"Recent AI calls log."},{"src":"https:\/\/ps.w.org\/axtolab-ai-spend-monitor\/assets\/screenshot-4.png?rev=3573764","caption":"Monthly spend notification and one-click CSV export."},{"src":"https:\/\/ps.w.org\/axtolab-ai-spend-monitor\/assets\/screenshot-5.png?rev=3573824","caption":"The Cost rates tab: edit per-model input\/output prices to match your provider plan."}],"raw_content":"<!--section=description-->\n<p>WordPress 7.0 introduced the AI Client and the Connectors screen: you configure an AI provider API key once, and every plugin on your site can use it. What WordPress does not show you is <strong>which plugin is spending your money<\/strong>.<\/p>\n\n<p>AI Spend Monitor records every call made through the WordPress AI Client and gives you a clear dashboard under <strong>Axtolab \u2192 AI Spend Monitor<\/strong>:<\/p>\n\n<ul>\n<li><strong>Per-plugin AI usage<\/strong> \u2014 see exactly which plugins and themes make AI calls, with calls, prompt tokens, and completion tokens for each.<\/li>\n<li><strong>Estimated cost per plugin<\/strong> \u2014 token counts are converted to an estimated USD cost using bundled list prices for popular OpenAI, Anthropic, and Google models.<\/li>\n<li><strong>Editable cost rates<\/strong> \u2014 a \"Cost rates\" tab lets you adjust the per-model input\/output prices to match your provider plan or a price change. Saving re-estimates previously recorded calls too, so the whole dashboard reflects your rates. No code required.<\/li>\n<li><strong>Daily cost chart<\/strong> \u2014 a 30-day view of your estimated AI spend, so a sudden spike is visible the day it happens, not when the invoice arrives.<\/li>\n<li><strong>Recent call log<\/strong> \u2014 the latest AI calls with source, provider, model, and token counts.<\/li>\n<li><strong>CSV export<\/strong> \u2014 download the recorded calls for any period for accounting or review: source plugin, provider, model, tokens, and estimated cost per call.<\/li>\n<li><strong>Spend notification<\/strong> \u2014 optionally get one email per month when estimated sitewide AI spend passes a dollar amount you choose.<\/li>\n<li><strong>Zero configuration<\/strong> \u2014 activate it and it starts recording. No API keys, no account, no setup.<\/li>\n<\/ul>\n\n<h4>How it works<\/h4>\n\n<p>The plugin listens to the WordPress AI Client's lifecycle hooks. When any plugin calls the AI Client, the call's token usage and model metadata are recorded in a local database table, and the calling plugin is identified automatically. Old records are pruned after 90 days (filterable).<\/p>\n\n<h4>Privacy<\/h4>\n\n<p>All data stays on your site. The plugin records token counts and metadata only \u2014 it does <strong>not<\/strong> store prompt or response content, and it does <strong>not<\/strong> send anything to any external service. There are no remote calls, no tracking, and no account requirement.<\/p>\n\n<h4>For developers<\/h4>\n\n<ul>\n<li><code>aismon_usage_recorded<\/code> \u2014 action fired after each recorded call.<\/li>\n<li><code>aismon_cost_rates<\/code> \u2014 filter the model price table used for estimates.<\/li>\n<li><code>aismon_retention_days<\/code> \u2014 filter the data retention window (default 90 days).<\/li>\n<li><code>aismon_dashboard_after_summary<\/code> \u2014 action to render additional dashboard panels.<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>AI Spend Monitor does <strong>not<\/strong> contact any external services. All data is recorded and stored locally in your WordPress database \u2014 no remote calls, no telemetry, no analytics.<\/p>\n\n<p>The token-to-USD cost estimates use a pricing table that ships with the plugin (no remote lookup). The table can be overridden via the <code>aismon_cost_rates<\/code> filter; see the developer notes in the description.<\/p>\n\n<p>The plugin does not send any data outside your WordPress site.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>AI Spend Monitor records the following data locally, in a custom database table with the standard WordPress table prefix:<\/p>\n\n<ul>\n<li>The source plugin or theme that made each AI call.<\/li>\n<li>The AI provider (e.g. OpenAI, Anthropic, Google) and model identifier (e.g. <code>gpt-4o-mini<\/code>).<\/li>\n<li>Token counts per call: prompt tokens, completion tokens, total tokens.<\/li>\n<li>A timestamp for each recorded call.<\/li>\n<\/ul>\n\n<p>The plugin does <strong>not<\/strong> store any of the following:<\/p>\n\n<ul>\n<li>Prompt or response content.<\/li>\n<li>User identifiers, user emails, or user IP addresses.<\/li>\n<li>Any other personally-identifying information.<\/li>\n<li>Any visitor-facing data \u2014 the plugin only sees server-side AI calls made by other plugins or themes.<\/li>\n<\/ul>\n\n<p>Recorded data is pruned automatically after 90 days. The retention window is filterable via <code>aismon_retention_days<\/code>. All recorded data, plugin options, and transients are removed when the plugin is uninstalled (see <code>uninstall.php<\/code>).<\/p>\n\n<p>No recorded data is sent to any external service. All processing happens on your own WordPress site.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install the plugin from the WordPress.org plugin directory, or upload the plugin zip via <strong>Plugins \u2192 Add New Plugin \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Go to <strong>Axtolab \u2192 AI Spend Monitor<\/strong> in your WordPress admin to view the dashboard.<\/li>\n<\/ol>\n\n<p>The plugin needs WordPress 7.0 or newer to record AI calls \u2014 that's the version that introduced the WordPress AI Client. It activates on older versions but will not record anything until you upgrade. No API keys, no account, no setup steps required.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20without%20wordpress%207.0%3F\"><h3>Does this work without WordPress 7.0?<\/h3><\/dt>\n<dd><p>The plugin activates on older versions but can only record usage on WordPress 7.0 or newer, because it relies on the AI Client that ships with 7.0.<\/p><\/dd>\n<dt id=\"are%20the%20cost%20figures%20exact%3F\"><h3>Are the cost figures exact?<\/h3><\/dt>\n<dd><p>No \u2014 they are estimates. Costs are calculated from recorded token counts using published list prices per model (standard tier). Caching and batch discounts are not modeled, and providers change prices. Always treat your provider's invoice as the source of truth. You can adjust any per-model price on the <strong>Cost rates<\/strong> tab (no code required); saving also re-estimates previously recorded calls. Developers can layer further changes on the <code>aismon_cost_rates<\/code> filter.<\/p><\/dd>\n<dt id=\"does%20it%20record%20my%20prompts%3F\"><h3>Does it record my prompts?<\/h3><\/dt>\n<dd><p>No. Only token counts, provider, model, capability, and the calling plugin are stored. Prompt and response content is never recorded.<\/p><\/dd>\n<dt id=\"does%20it%20slow%20down%20ai%20calls%3F\"><h3>Does it slow down AI calls?<\/h3><\/dt>\n<dd><p>No. Recording happens after the AI call completes and is a single local database insert. If recording ever fails, the original AI call is unaffected.<\/p><\/dd>\n<dt id=\"can%20it%20alert%20me%20about%20spend%3F\"><h3>Can it alert me about spend?<\/h3><\/dt>\n<dd><p>Yes \u2014 set a monthly dollar amount on the dashboard and the plugin emails you once per month when estimated sitewide spend passes it. This is a notification only.<\/p><\/dd>\n<dt id=\"can%20it%20block%20or%20limit%20ai%20usage%3F\"><h3>Can it block or limit AI usage?<\/h3><\/dt>\n<dd><p>This plugin is a monitor: it shows you usage and cost, and can notify you. It does not block calls or enforce budgets.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>New \"Cost rates\" tab: edit per-model input\/output prices from the dashboard, no code required.<\/li>\n<li>Saving rates re-estimates previously recorded calls, so existing dashboard totals reflect your prices.<\/li>\n<li>Overrides are stored as deltas from the bundled defaults, so untouched models keep tracking future default-price updates.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: per-plugin AI usage recording, cost estimates, daily cost chart, recent call log, CSV export, monthly spend notification, 90-day retention with daily pruning.<\/li>\n<\/ul>","raw_excerpt":"AI usage and cost tracking for the WordPress AI Client. See which plugins make AI calls, how many tokens they use, and what it costs.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/325085","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=325085"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/axtolab"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=325085"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=325085"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=325085"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=325085"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=325085"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=325085"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}