{"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-11T13:09:05","modified_gmt":"2026-08-11T13:09:05","slug":"goppa-agentic-commerce","status":"publish","type":"plugin","link":"https:\/\/brx.wordpress.org\/plugins\/goppa-agentic-commerce\/","author":23542707,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.5.0","stable_tag":"0.5.0","tested":"7.0.3","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-11 13:09:05","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":24,"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"}},"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"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[2353,244604,242115,1121,286],"plugin_category":[45],"plugin_contributors":[275202],"plugin_business_model":[],"class_list":["post-349174","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-llms-txt","plugin_tags-mcp","plugin_tags-structured-data","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":[],"raw_content":"<!--section=description-->\n<p>AI assistants already research and compare products for their users. For\nyour store to show up in those answers, it has to speak the protocols the\nagents use. Shopify stores got this built in. Everyone else did not.<\/p>\n\n<p>Goppa serves four things 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>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. Whether an assistant\nrecommends your store also depends on your products, your market and your\ncompetitors. Anyone promising a specific outcome here is guessing.<\/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.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":"Make your WooCommerce catalogue readable and searchable by AI shopping agents \u2014 UCP manifest, MCP server and llms.txt on your own domain.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/brx.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/349174","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/brx.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/brx.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/brx.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=349174"}],"author":[{"embeddable":true,"href":"https:\/\/brx.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/goppa"}],"wp:attachment":[{"href":"https:\/\/brx.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=349174"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/brx.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=349174"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/brx.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=349174"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/brx.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=349174"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/brx.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=349174"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/brx.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=349174"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}