{"id":349174,"date":"2026-08-11T13:09:18","date_gmt":"2026-08-11T13:09:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/goppa-agentic-commerce\/"},"modified":"2026-08-28T07:16:36","modified_gmt":"2026-08-28T07:16:36","slug":"goppa-agentic-commerce","status":"publish","type":"plugin","link":"https:\/\/hu.wordpress.org\/plugins\/goppa-agentic-commerce\/","author":23542707,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.6.1","stable_tag":"0.6.1","tested":"7.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Goppa Agentic Commerce","header_author":"Goppa","header_description":"Makes your WooCommerce catalogue readable and searchable by AI shopping agents (ChatGPT, Gemini, Perplexity): conformant UCP manifest, MCP server and llms.txt served on your own domain. Optionally reports what agents did on your store. Purchase still happens on your store.","assets_banners_color":"16161a","last_updated":"2026-08-28 07:16:36","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/trygoppa.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":232,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.5.0":{"tag":"0.5.0","author":"goppa","date":"2026-08-11 13:09:05","revision":3642026},"0.5.1":{"tag":"0.5.1","author":"goppa","date":"2026-08-12 03:57:34","revision":3642793},"0.6.0":{"tag":"0.6.0","author":"goppa","date":"2026-08-28 06:42:10","revision":3669914},"0.6.1":{"tag":"0.6.1","author":"goppa","date":"2026-08-28 07:16:36","revision":3669956}},"upgrade_notice":{"0.2.1":"<p>Important. On the stable WooCommerce release every endpoint served an\nempty catalogue because of a hook ordering bug. Also fixes search on\naccented product names and removes the store token on uninstall. Upgrade.<\/p>","0.2.0":"<p>The UCP manifest was not conformant and the plugin claimed your store was\ntransactable by agents. Both corrected. Upgrade recommended.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3642026,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3642026,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3642026,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3642026,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.5.0","0.5.1","0.6.0","0.6.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3669956,"resolution":"1","location":"assets","locale":"","width":1280,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3669956,"resolution":"2","location":"assets","locale":"","width":1280,"height":1000},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3669956,"resolution":"3","location":"assets","locale":"","width":1280,"height":1400},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3669956,"resolution":"4","location":"assets","locale":"","width":1280,"height":700}},"screenshots":{"1":"The plugin's settings page: the four endpoints your store now serves, live and linked, with no configuration.","2":"Every block is a switch. The two that change what your customers see are off until you turn them on.","3":"The product summary and the FAQ, as visible text on the page. Both are built only from fields you already filled in, and both are off until you turn them on.","4":"llms.txt, served on your own domain, written from your catalogue."}},"plugin_section":[],"plugin_tags":[246076,216196,244604,242115,286],"plugin_category":[45],"plugin_contributors":[275202],"plugin_business_model":[],"class_list":["post-349174","plugin","type-plugin","status-publish","hentry","plugin_tags-ai-visibility","plugin_tags-chatgpt","plugin_tags-llms-txt","plugin_tags-mcp","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-goppa","plugin_committers-goppa"],"banners":{"banner":"https:\/\/ps.w.org\/goppa-agentic-commerce\/assets\/banner-772x250.png?rev=3642026","banner_2x":"https:\/\/ps.w.org\/goppa-agentic-commerce\/assets\/banner-1544x500.png?rev=3642026","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/goppa-agentic-commerce\/assets\/icon-128x128.png?rev=3642026","icon_2x":"https:\/\/ps.w.org\/goppa-agentic-commerce\/assets\/icon-256x256.png?rev=3642026","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/goppa-agentic-commerce\/assets\/screenshot-1.png?rev=3669956","caption":"The plugin's settings page: the four endpoints your store now serves, live and linked, with no configuration."},{"src":"https:\/\/ps.w.org\/goppa-agentic-commerce\/assets\/screenshot-2.png?rev=3669956","caption":"Every block is a switch. The two that change what your customers see are off until you turn them on."},{"src":"https:\/\/ps.w.org\/goppa-agentic-commerce\/assets\/screenshot-3.png?rev=3669956","caption":"The product summary and the FAQ, as visible text on the page. Both are built only from fields you already filled in, and both are off until you turn them on."},{"src":"https:\/\/ps.w.org\/goppa-agentic-commerce\/assets\/screenshot-4.png?rev=3669956","caption":"llms.txt, served on your own domain, written from your catalogue."}],"raw_content":"<!--section=description-->\n<p>Generating files for AI crawlers is the easy half. The hard half is\nknowing whether it worked.<\/p>\n\n<p>Goppa does both. It serves the files an AI agent needs to read your\ncatalogue, and it measures what those agents actually answer when a\nshopper asks what to buy in your category \u2014 so you can tell the\ndifference between \"my store is technically ready\" and \"my store gets\nrecommended\".<\/p>\n\n<p>Those two are not the same thing. In our own published research, shops\nscoring 100\/100 on technical readiness still appeared in 0% of measured\nAI answers. The data and method are public at\nhttps:\/\/trygoppa.com\/study<\/p>\n\n<h4>Start without installing anything<\/h4>\n\n<p>You do not need this plugin, or an account, to find out where you stand.\nRun the free check on your domain at https:\/\/trygoppa.com \u2014 it reads your\nsite from the outside and gives you a readiness score plus the pages an\nAI assistant read when answering questions in your category.<\/p>\n\n<p>Install the plugin when you want the fixes applied for you.<\/p>\n\n<h4>What the plugin serves<\/h4>\n\n<p>Four endpoints on your own domain, with no configuration:<\/p>\n\n<ul>\n<li><strong>\/.well-known\/ucp<\/strong> \u2014 a UCP discovery manifest conforming to the\npublished specification, so an agent can find out what your store\noffers.<\/li>\n<li><strong>\/llms.txt<\/strong> \u2014 a plain-text description of your store, categories and\nproducts for AI models.<\/li>\n<li><strong>\/mcp<\/strong> \u2014 a live MCP server (JSON-RPC 2.0, protocol 2025-06-18) with\nthree tools: <code>search_products<\/code>, <code>get_product<\/code> and <code>get_store_info<\/code>.<\/li>\n<li><strong>\/goppa\/catalog<\/strong> \u2014 your catalogue as schema.org\/Product JSON.<\/li>\n<\/ul>\n\n<p>Products, prices, stock status, categories and attributes are read\ndirectly from WooCommerce and cached for ten minutes.<\/p>\n\n<h4>It applies the fixes, not just the files<\/h4>\n\n<p>With a Goppa account connected, the plugin checks hourly for fixes found\nby the diagnosis and <strong>applies them to your site itself<\/strong> \u2014 the llms.txt,\nthe robots.txt rules that let named AI crawlers through, the sitemap\nreference, and product schema fields that are missing. Then it reports\nback what it applied, so the diagnosis you see is the state of your site\nand not a to-do list.<\/p>\n\n<p>Two rules it never breaks:<\/p>\n\n<ul>\n<li><strong>It never changes what you wrote.<\/strong> Titles, descriptions, prices and\npolicies are on a refuse list inside the plugin. Even if the service\nasked, this code would discard the instruction \u2014 the list lives here,\non your server, precisely so it holds regardless of what happens\nupstream.<\/li>\n<li><strong>The plugin pulls; the service never pushes.<\/strong> Every connection is\noutbound from your store, like the telemetry. No authenticated route\nis opened on your WordPress.<\/li>\n<\/ul>\n\n<p>It also submits changed product URLs through <strong>IndexNow<\/strong>, so Bing and\nYandex learn about them in hours rather than weeks. ChatGPT and Copilot\nanswer from Bing's index \u2014 a product outside it cannot be recommended,\nhowever good its data is.<\/p>\n\n<h4>What this does, and what it does not<\/h4>\n\n<p>This plugin makes your catalogue <strong>findable, readable and searchable<\/strong> by\nAI agents. Search ignores accents, so \"tenis\" finds \"T\u00eanis\" and\n\"fussball\" finds \"Fu\u00dfball\".<\/p>\n\n<p>It does <strong>not<\/strong> process carts, checkout or payments, and the manifest does\nnot claim otherwise \u2014 it declares catalogue search and lookup, nothing\nelse. An agent that reads it will send the shopper to your store to buy.\nAnnouncing a checkout that does not exist would make agents try to\ntransact and fail.<\/p>\n\n<h4>Optional: see what the agents actually do<\/h4>\n\n<p>Paste a token from a Goppa account and the plugin reports agent\nactivity \u2014 which endpoint was called, what was searched, which product\nwas returned. Never visitor data. This is off until you configure it; see\n\"External services\" below.<\/p>\n\n<h4>External services<\/h4>\n\n<p><strong>With no token configured, this plugin makes no external connection.<\/strong>\nEverything above is served from your own site and nothing leaves it.<\/p>\n\n<p>If you enter a Goppa store token in Settings \u2192 Goppa, the plugin sends\nagent activity to the Goppa service at <code>https:\/\/trygoppa.com<\/code>\n(endpoint <code>\/api\/ingest<\/code>). This is what is sent, and only when an AI agent\nrequests one of the four endpoints above:<\/p>\n\n<ul>\n<li>which endpoint was requested (for example <code>mcp<\/code>);<\/li>\n<li>the User-Agent string sent by the agent, which the service classifies\ninto a known agent name;<\/li>\n<li>which MCP tool was called (for example <code>search_products<\/code>);<\/li>\n<li>the search term or product identifier the agent asked for;<\/li>\n<li>the name of the product returned first.<\/li>\n<\/ul>\n\n<p>Records are queued and sent after the response to the agent has already\nbeen delivered, so the service being slow or unreachable never delays\nyour store. Nothing is sent about your human visitors: no IP addresses,\nno customer or order data, no personal information. Clearing the token\nstops it immediately.<\/p>\n\n<p>Service provided by Goppa \u2014 <a href=\"https:\/\/trygoppa.com\/terms\">Terms of Service<\/a>,\n<a href=\"https:\/\/trygoppa.com\/privacy\">Privacy Policy<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin ZIP via Plugins \u2192 Add New \u2192 Upload, or unzip into\n   \/wp-content\/plugins\/.<\/li>\n<li>Activate it. The four endpoints are live immediately.<\/li>\n<li>Optional: Settings \u2192 Goppa for the store description, policy URLs and\nthe Goppa token.<\/li>\n<\/ol>\n\n<p>Requires WooCommerce. If your permalinks are set to \"Plain\", switch to any\nother setting so the endpoints resolve.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20slow%20my%20store%20down%3F\"><h3>Does it slow my store down?<\/h3><\/dt>\n<dd><p>No. The catalogue is cached and the routing exits on the first check for\nanything that is not one of the four endpoints, so ordinary page loads\nnever reach this code.<\/p><\/dd>\n<dt id=\"does%20it%20expose%20private%20data%3F\"><h3>Does it expose private data?<\/h3><\/dt>\n<dd><p>No. Only published products, and only the fields already public on your\nstore: name, description, price, stock status, categories, attributes,\nimage and link.<\/p><\/dd>\n<dt id=\"will%20ai%20assistants%20recommend%20my%20store%20now%3F\"><h3>Will AI assistants recommend my store now?<\/h3><\/dt>\n<dd><p>Serving these protocols is what makes your catalogue readable by an agent\nat all \u2014 it is a precondition, not a guarantee. Anyone promising a\nspecific outcome here is guessing.<\/p>\n\n<p>We publish our own evidence for that. Across 61 shops we measured, 26\nthat scored a perfect 100\/100 on technical readiness still appeared in 0%\nof the AI answers we ran. And it varies enormously by category: of 12\nbeauty shops measured, 1 appeared; of 4 electronics shops, 3 did. A 0%\nresult means something different depending on what you sell, which is why\nthe check reports your category alongside your own number.<\/p>\n\n<p>Method, sample sizes and limitations: https:\/\/trygoppa.com\/study<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20goppa%20account%3F\"><h3>Do I need a Goppa account?<\/h3><\/dt>\n<dd><p>No. Every endpoint works without one. An account only adds reporting of\nwhat agents did on your store.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20the%20goppa%20service%20is%20down%3F\"><h3>What happens if the Goppa service is down?<\/h3><\/dt>\n<dd><p>Your endpoints keep working. Pending reports stay queued on your site and\nare sent when the service is reachable again.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20high-performance%20order%20storage%20%28hpos%29%3F\"><h3>Does it work with High-Performance Order Storage (HPOS)?<\/h3><\/dt>\n<dd><p>Yes. The plugin declares compatibility and does not touch orders at all.<\/p><\/dd>\n<dt id=\"how%20do%20i%20remove%20everything%3F\"><h3>How do I remove everything?<\/h3><\/dt>\n<dd><p>Deactivate to stop the plugin and its scheduled task. Delete it to erase\nevery option it created, including the token.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.6.1<\/h4>\n\n<ul>\n<li>The settings page now says what this plugin can and cannot tell you.\nIt makes your catalogue readable; whether an assistant actually names\nyour store has to be measured by asking, from the outside. The note\ndisappears once you connect an account.<\/li>\n<li>The connection field used to ask for a token without saying where one\ncomes from. It now links to the page that issues it, with this site's\naddress already filled in.<\/li>\n<\/ul>\n\n<h4>0.6.0<\/h4>\n\n<ul>\n<li><strong>New: a short summary on product pages.<\/strong> Two factual lines and a\nspec list, built only from fields you already filled in \u2014 name,\ncategory, brand, price, stock and attributes. Your own description is\nnever read, changed or rewritten. Off by default.<\/li>\n<li><strong>New: your category guide, as a draft.<\/strong> The comparison guide written\non the platform can now land here as a draft post instead of being\ncopied and pasted. It is created once, it is always a draft, and once\nyou touch it the text is yours \u2014 we never write over it. Off by\ndefault.<\/li>\n<li><strong>New: your official profiles in the schema (<code>sameAs<\/code>).<\/strong> The store\nidentity block already told an assistant your name and address. It now\nalso links the profiles you confirm on the platform, which is what\ntells a model that this shop, that review page and that social profile\nare the same business. Nothing is published until you confirm each one.<\/li>\n<li><strong>New: the FAQ can also be text on the page.<\/strong> Google no longer uses\nFAQ Page markup and AI reads the page itself, so the same questions and\nanswers can now appear as visible text. Off by default: hidden markup\ndoes not change what your customers see, and this does.<\/li>\n<li><strong>New: FAQ on category pages.<\/strong> Built from the products in that\ncategory \u2014 how many there are, what they cost, which brands you carry.\nCounted from your own catalogue, never written for you. Also off by\ndefault.<\/li>\n<li><strong>New: see when an AI actually used your shop.<\/strong> Until now the plugin\nonly reported the agent files it serves, so an assistant reading a\nnormal product page went unseen. It now reports two things that are\nreal counts, not estimates: pages fetched by AI crawlers, and visits\nfrom people who clicked a link inside an AI answer.<\/li>\n<li>The dashboard separates the two that matter. <code>ChatGPT-User<\/code>,\n  Claude-User and <code>Perplexity-User<\/code> fetch a page <strong>because someone\nasked a question right then<\/strong> \u2014 those are counted as real use.\n  GPTBot and the other sweeping crawlers are shown separately, because\na crawler passing through says nothing about being recommended.<\/li>\n<li><strong>Privacy:<\/strong> only the referring host is recorded (for example\n  chatgpt.com), never the full address, which can contain the\nvisitor's conversation id. No IPs, no raw headers, and ordinary\nvisitors are still not recorded at all.<\/li>\n<\/ul>\n\n<h4>0.5.1<\/h4>\n\n<ul>\n<li><strong>Fixed a privacy bug: hidden products were being served to AI agents.<\/strong>\nIf you had set a product's catalogue visibility to <em>Hidden<\/em>, or\nprotected it with a password, it was still included in the catalogue\nthe plugin publishes for AI assistants. Nothing changed on your\nstorefront, so there was no way to notice. Those products are now\nexcluded. If you use hidden products for B2B pricing, discontinued\nitems or testing, update.<\/li>\n<\/ul>\n\n<h4>0.5.0<\/h4>\n\n<ul>\n<li>New: the plugin now <strong>applies the fixes by itself<\/strong>. Once an hour it\nasks Goppa whether your latest diagnosis found anything it can repair,\nand repairs it: serving llms.txt, allowing AI crawlers and declaring\nthe sitemap in robots.txt, and filling in structured-data fields your\nproducts were missing. Before this you had to copy and paste them.<\/li>\n<li><strong>It will never touch what you wrote.<\/strong> Titles, descriptions, prices\nand policies are refused by the plugin itself, not only by the server\n\u2014 so even a bug or a breach on our side cannot change how your store\nlooks to a shopper. Only data that AI agents read is ever modified.<\/li>\n<li>Settings now show exactly what was applied and when, and the plugin\ndoes nothing at all until your store is connected.<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>New: <strong>IndexNow<\/strong>. Your product URLs are submitted to Bing and Yandex\nwhenever a product is added, updated or removed. This matters more than\nit sounds: ChatGPT and Copilot answer shopping questions from Bing's\nindex, so a product that is not in that index cannot be recommended,\nhowever good its structured data is. IndexNow cuts the wait from weeks\nto hours. The verification key is generated and served automatically \u2014\nnothing to configure. Turn it off under Settings if another plugin\nalready submits your URLs.<\/li>\n<li>Fixed: uninstalling did not remove the <code>goppa_schema<\/code> option, so a\nsetting from 0.3.0 survived the plugin being deleted.<\/li>\n<\/ul>\n\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Fixed: on stores running the stable WooCommerce release, every endpoint\nserved an <strong>empty catalogue<\/strong>. The plugin routed on <code>init<\/code> at priority\n0, the same priority WooCommerce uses, and loaded first \u2014 so\n  wc_get_products() ran before WooCommerce had registered the <code>product<\/code>\npost type. Routing now runs at priority 20.<\/li>\n<li>Fixed: an empty catalogue was cached for ten minutes. If the first\nrequest happened before products existed, products added afterwards\nstayed invisible to agents. Only a non-empty catalogue is cached now.<\/li>\n<li>Fixed: search ignored accents. \"tenis de corrida\" ranked a t-shirt\nabove a running shoe, because \"tenis\" did not match \"T\u00eanis\". Accents\nare folded on both sides now, covering the Latin alphabet (including\n\u00df, \u00f8, \u00e6, \u0142, \u011f).<\/li>\n<li>Fixed: a match in the product name now outranks a match in the\ndescription.<\/li>\n<li>Fixed: <code>get_product<\/code> also matches without accents, so a lookup cannot\nfail where the search succeeded.<\/li>\n<li>Fixed: deactivating left the hourly reporting task scheduled forever.<\/li>\n<li>Fixed: uninstalling did not remove the store token or the telemetry\noptions, leaving a secret in the site database.<\/li>\n<li>Changed: text domain is now <code>goppa-agentic-commerce<\/code>, matching the plugin\nslug, so translations resolve.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Rewrote the UCP manifest to conform to the published specification,\nchecked against a live Shopify manifest. The previous version used\nfields that do not exist in the spec.<\/li>\n<li>The manifest now declares only what the plugin does \u2014 catalogue search\nand lookup. No checkout, cart or payment handlers.<\/li>\n<li>Corrected llms.txt and the plugin description, which claimed the store\nwas transactable by agents. It is not; purchase happens on the store.<\/li>\n<li>Hardened the MCP server against malformed input. Batches, <code>null<\/code>, bare\nnumbers, parameters sent as strings and arguments of the wrong type\nused to raise errors \u2014 which would surface as HTTP 500 on the\nmerchant's site. All of them now return proper JSON-RPC errors, and\nbatch size is capped.<\/li>\n<li>Added optional reporting of agent activity.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First release: UCP manifest, llms.txt, MCP server, schema.org catalogue\nendpoint, settings page, catalogue cache.<\/li>\n<\/ul>","raw_excerpt":"Measure whether AI assistants mention your store when shoppers ask what to buy \u2014 then publish the fixes to your site automatically.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/349174","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=349174"}],"author":[{"embeddable":true,"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/goppa"}],"wp:attachment":[{"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=349174"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=349174"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=349174"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=349174"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=349174"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/hu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=349174"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}