{"id":344390,"date":"2026-08-14T13:53:48","date_gmt":"2026-08-14T13:53:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ucptools-ai-agent-discovery-for-woocommerce\/"},"modified":"2026-08-14T13:53:25","modified_gmt":"2026-08-14T13:53:25","slug":"ucptools-ai-agent-discovery-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/test.wordpress.org\/plugins\/ucptools-ai-agent-discovery-for-woocommerce\/","author":23537003,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.2","stable_tag":"1.1.2","tested":"7.0.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"UCPtools - AI Agent Discovery for WooCommerce","header_author":"UCPtools","header_description":"Serves your UCP profile at \/.well-known\/ucp so AI shopping agents can find your store, and records what they do once they arrive.","assets_banners_color":"5ac2ae","last_updated":"2026-08-14 13:53:25","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/ucptools.dev","rating":0,"author_block_rating":0,"active_installs":0,"downloads":43,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"1.1.2":{"tag":"1.1.2","author":"nolpak14","date":"2026-08-14 13:53:25"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3647486,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3647486,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3647486,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3647486,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.2"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[250436,15643,2353,254710,286],"plugin_category":[45],"plugin_contributors":[275719],"plugin_business_model":[],"class_list":["post-344390","plugin","type-plugin","status-publish","hentry","plugin_tags-agentic-commerce","plugin_tags-agents","plugin_tags-ai","plugin_tags-ucp","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-nolpak14","plugin_committers-nolpak14"],"banners":{"banner":"https:\/\/ps.w.org\/ucptools-ai-agent-discovery-for-woocommerce\/assets\/banner-772x250.png?rev=3647486","banner_2x":"https:\/\/ps.w.org\/ucptools-ai-agent-discovery-for-woocommerce\/assets\/banner-1544x500.png?rev=3647486","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ucptools-ai-agent-discovery-for-woocommerce\/assets\/icon-128x128.png?rev=3647486","icon_2x":"https:\/\/ps.w.org\/ucptools-ai-agent-discovery-for-woocommerce\/assets\/icon-256x256.png?rev=3647486","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>AI shopping agents (ChatGPT, Gemini, Perplexity, Claude) look for a UCP profile at\n    \/.well-known\/ucp to understand what a store sells and how to buy from it. Shopify\ngenerates one automatically. WooCommerce does not - so to an AI agent, most Woo stores\nreturn a 404 and simply do not exist.<\/p>\n\n<p>This plugin serves that profile from your own origin, built from your WooCommerce store,\nand then records what agents do next: browse, open a checkout, pay, order.<\/p>\n\n<p><strong>It works with no account and transmits nothing until you enter a key.<\/strong><\/p>\n\n<p>Because you run your own server, a WooCommerce store can see the whole agent funnel. On\nhosted platforms the agent talks to the platform, not to you, so nobody can show you that\ntraffic at all.<\/p>\n\n<h4>How it works<\/h4>\n\n<p>Your server answers the agent. UCPtools is never in the request path, so this plugin\ncannot become a point of failure for your storefront.<\/p>\n\n<ul>\n<li><strong>Free, no account:<\/strong> generates and serves your UCP profile, and records agent activity\ninto a table in your own database. wp-admin shows which agents came, how many requests\nthey made, what they did, how many orders they placed and what those orders were worth.\nNothing is sent anywhere.<\/li>\n<li><strong>Connected (optional):<\/strong> paste an analytics key from your UCPtools dashboard. Your\nprofile stays in sync with the dashboard, and the recorded history is sent there for\nlong-term history, trends, multi-store views and break alerts. History captured before\nyou connected comes with you.<\/li>\n<\/ul>\n\n<h4>What is free and what is paid<\/h4>\n\n<p><strong>Everything the plugin works out is free<\/strong>, including what agent orders were worth. Which\nagents came, what they did, how many orders they placed and the value of those orders - all\nof it is shown in wp-admin, on your own server, with no account.<\/p>\n\n<p>A UCPtools account adds what a plugin cannot do by itself: history that outlives the local\nrolling window, trends over time, several stores in one dashboard, alerts when your profile\nbreaks, scheduled re-validation, hosted profiles and API access.<\/p>\n\n<p>In short: the plugin never hides your own data from you. The subscription is for the hosted\nservice around it.<\/p>\n\n<h4>The self-check<\/h4>\n\n<p>Intercepting <code>\/.well-known\/<\/code> can be defeated by a physical <code>.well-known<\/code> folder, an nginx\nrule denying dot-directories, or a subdirectory multisite install - and every one of those\nfails silently, leaving you invisible while you believe you are discoverable. So the plugin\nfetches its own profile over the network and tells you exactly what an agent would get.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin can connect to UCPtools (https:\/\/ucptools.dev), and <strong>only<\/strong> if you enter an\nanalytics key on its settings screen. With no key entered it makes no external requests of\nany kind.<\/p>\n\n<p>When a key IS entered, it contacts UCPtools in three ways:<\/p>\n\n<ol>\n<li><strong>Key check<\/strong> - on the settings screen, it sends your key to\n   https:\/\/ucptools.dev\/v1\/plugin\/handshake to confirm the key is valid and show which\nplan it belongs to. Sends: your analytics key.<\/li>\n<li><strong>Profile sync<\/strong> - hourly, it requests <code>https:\/\/ucptools.dev\/v1\/plugin\/profile<\/code> so edits\nmade in your UCPtools dashboard reach your store. Sends: your analytics key.<\/li>\n<li><strong>Activity sync<\/strong> - hourly, it sends recorded agent activity to\n   https:\/\/ucptools.dev\/v1\/analytics\/events. Sends: which AI agent made a request, when,\nthe endpoint path, the HTTP status, response time, and for agent checkouts the order\ntotal, currency and number of line items. It does not send customer names, emails,\naddresses, card or payment details.<\/li>\n<\/ol>\n\n<p>The plugin also fetches your own site's <code>\/.well-known\/ucp<\/code> URL for the wp-admin self-check.\nThat request goes to your own server, not to UCPtools.<\/p>\n\n<p>Service provider: UCPtools. Terms: https:\/\/ucptools.dev\/terms - Privacy policy:\nhttps:\/\/ucptools.dev\/privacy<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20ucptools%20account%3F\"><h3>Do I need a UCPtools account?<\/h3><\/dt>\n<dd><p>No. Serving the profile - the part that makes agents able to find you - is free and needs\nno account, and so is the full local record of what agents did, including what their orders\nwere worth. An account adds long-term history, trends, multi-store views and break alerts.<\/p><\/dd>\n<dt id=\"what%20data%20is%20recorded%2C%20and%20what%20is%20sent%3F\"><h3>What data is recorded, and what is sent?<\/h3><\/dt>\n<dd><p>Recorded locally: which AI agent made a request, when, which endpoint, the HTTP status,\nand - for agent checkouts - the order total, currency and number of line items.<\/p>\n\n<p>Never recorded: card or payment details, customer names, emails, addresses, or any other\npersonal data. The plugin reads commerce totals out of API responses; it does not touch\ncustomer records.<\/p>\n\n<p>With no key entered, none of it leaves your server. When you connect a key, that recorded\nhistory is sent to your UCPtools dashboard.<\/p><\/dd>\n<dt id=\"where%20is%20the%20local%20data%20kept%2C%20and%20does%20it%20grow%20forever%3F\"><h3>Where is the local data kept, and does it grow forever?<\/h3><\/dt>\n<dd><p>In a table in your own WordPress database. It is capped: roughly 30 days, and a maximum\nnumber of rows. Whichever limit is reached first, the oldest entries are removed.<\/p><\/dd>\n<dt id=\"will%20this%20slow%20down%20my%20store%3F\"><h3>Will this slow down my store?<\/h3><\/dt>\n<dd><p>No. Ordinary visitors are unaffected - a request that is not from an AI agent is ignored\nimmediately. For agent requests the record is written after your response is composed, and\nsending to UCPtools happens on a scheduled background job, never during a page load.<\/p><\/dd>\n<dt id=\"i%20use%20a%20page%20cache.%20does%20that%20break%20it%3F\"><h3>I use a page cache. Does that break it?<\/h3><\/dt>\n<dd><p>Possibly, and the plugin will warn you. The profile still serves, but if your cache answers\n    \/.well-known\/ucp without running PHP, agent reads cannot be counted. Exclude that path\nfrom caching.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>The two links from the settings screen to ucptools.dev now carry a campaign tag, so we can\ntell how many people arrive from the plugin. No data is sent from your site - the tag is\npart of the link, and only travels if you click it.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Order values are now read from the REST response object rather than from a copy of the\nresponse bytes. The plugin no longer opens an output buffer at all, so it cannot interleave\nwith a buffer opened by core, by the theme or by another plugin. Agent requests that are\nnot served through the REST API are still recorded, without the order values.<\/li>\n<li>Declares WooCommerce as a required plugin, so WordPress checks for it before activation.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Records the full agent funnel - browse, checkout, payment, order - not just discovery.\nThis previously required hand-placing a separate file in wp-content\/mu-plugins\/.<\/li>\n<li>Agent activity is now recorded locally from install, with no account and no network call,\nso connecting later brings your history with you.<\/li>\n<li>wp-admin shows the full local picture - which agents came, what they did, and what their\norders were worth. The plugin does not withhold anything it works out; a UCPtools account\nis for the hosted service around it (long-term history, trends, multi-store, alerts).<\/li>\n<li>Sending to UCPtools moved from fire-and-forget to a scheduled, acknowledged batch sync.\nwp-admin now reports whether events are actually arriving instead of only whether the key\nis valid - a valid key with nothing arriving used to be indistinguishable from success.<\/li>\n<li>Fixed: reports were rejected by the API and silently discarded, so connected stores\nrecorded nothing at all.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Serves \/.well-known\/ucp from the WooCommerce origin<\/li>\n<li>Agent detection and local \"last agent seen\" record, free and account-less<\/li>\n<li>Optional connected mode: canonical profile sync + agent read reporting<\/li>\n<li>wp-admin self-check and page-cache warning<\/li>\n<\/ul>","raw_excerpt":"Serve your UCP profile at \/.well-known\/ucp so AI shopping agents can find your store - and see what they do once they arrive.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/344390","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=344390"}],"author":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/nolpak14"}],"wp:attachment":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=344390"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=344390"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=344390"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=344390"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=344390"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=344390"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}