{"id":365564,"date":"2026-09-09T08:51:18","date_gmt":"2026-09-09T08:51:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ucp-profile\/"},"modified":"2026-09-09T08:50:44","modified_gmt":"2026-09-09T08:50:44","slug":"vixns-commerce-profile-ucp","status":"publish","type":"plugin","link":"https:\/\/sq.wordpress.org\/plugins\/vixns-commerce-profile-ucp\/","author":23562459,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.4.0","stable_tag":"0.4.0","tested":"7.1","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"Vixns Commerce Profile for Universal Commerce Protocol","header_author":"Vixns","header_description":"Static Universal Commerce Protocol business profile at \/.well-known\/ucp, optional catalog REST, and signing keys[] for WooCommerce. No agent checkout. Not affiliated with the UCP project.","assets_banners_color":"","last_updated":"2026-09-09 08:50:44","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.vixns.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":38,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.4.0":{"tag":"0.4.0","author":"vixns","date":"2026-09-09 08:50:44","revision":3687933}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.4.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[246305,6645,254710,54762,286],"plugin_category":[45],"plugin_contributors":[279887],"plugin_business_model":[],"class_list":["post-365564","plugin","type-plugin","status-publish","hentry","plugin_tags-ai-agents","plugin_tags-discovery","plugin_tags-ucp","plugin_tags-well-known","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-vixns","plugin_committers-vixns"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/vixns-commerce-profile-ucp.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Vixns Commerce Profile for Universal Commerce Protocol writes an honest business profile JSON to a static file at <code>\/.well-known\/ucp<\/code>, can expose UCP catalog REST (search \/ lookup \/ product), and can publish <code>keys[]<\/code> (JWK Set) with rotation for Web Bot Auth <code>type=jwks_uri<\/code> interop.<\/p>\n\n<p>This is a third-party WooCommerce integration by Vixns. It is not an official Universal Commerce Protocol product.<\/p>\n\n<ul>\n<li>Spec target: 2026-08-25<\/li>\n<li>Never advertises checkout, cart, or payment handlers<\/li>\n<li>Private keys stored under <code>uploads\/vixns-commerce-profile-ucp\/private\/<\/code> (Apache\/IIS deny files are written automatically; block the path on nginx)<\/li>\n<li>Optional product feed (JSONL), not linked from the profile<\/li>\n<li>Catalog REST is intentionally open to agents that send a valid <code>UCP-Agent<\/code> header (same visibility as a public product catalog)<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce.<\/li>\n<li>Upload the <code>vixns-commerce-profile-ucp<\/code> folder to <code>\/wp-content\/plugins\/<\/code> (or install the ZIP via Plugins \u2192 Add New).<\/li>\n<li>Activate <strong>Vixns Commerce Profile for Universal Commerce Protocol<\/strong>.<\/li>\n<li>Configure your web server to serve <code>\/.well-known\/ucp<\/code> as static JSON with <code>Cache-Control: public, max-age\u226560<\/code> and <strong>no redirects<\/strong>.<\/li>\n<li>Open WooCommerce \u2192 Settings \u2192 <strong>Vixns UCP<\/strong>, set the canonical HTTPS host if needed, then <strong>Generate now<\/strong>.<\/li>\n<\/ol>\n\n<p>Example nginx location (adjust <code>root<\/code>):<\/p>\n\n<pre><code>location = \/.well-known\/ucp {\n    default_type application\/json;\n    add_header Cache-Control \"public, max-age=300\" always;\n    add_header Access-Control-Allow-Origin \"*\" always;\n    add_header Access-Control-Allow-Methods \"GET, HEAD\" always;\n    try_files \/.well-known\/ucp =404;\n}\n\n# Deny private key material (nginx ignores .htaccess):\nlocation ^~ \/wp-content\/uploads\/vixns-commerce-profile-ucp\/private\/ {\n    deny all;\n    return 403;\n}\n<\/code><\/pre>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20serve%20%2F.well-known%2Fucp%3F\"><h3>How do I serve \/.well-known\/ucp?<\/h3><\/dt>\n<dd><p>See the nginx example under Installation. Do not apply www\u2194apex redirects to this URI \u2014 UCP platforms do not follow 3xx on the profile URL.<\/p><\/dd>\n<dt id=\"web%20bot%20auth\"><h3>Web Bot Auth<\/h3><\/dt>\n<dd><p>Use: <code>Signature-Agent: sig1=\"https:\/\/yoursite\/.well-known\/ucp\";type=jwks_uri<\/code><\/p>\n\n<p>Omitting <code>type<\/code> defaults to <code>directory<\/code>, which does not read this static profile.<\/p><\/dd>\n<dt id=\"catalog%20rest\"><h3>Catalog REST<\/h3><\/dt>\n<dd><p>Base: <code>\/wp-json\/ucp\/v1<\/code> \u2014 POST <code>\/catalog\/search<\/code>, <code>\/catalog\/lookup<\/code>, <code>\/catalog\/product<\/code>.\nRequires header: <code>UCP-Agent: profile=\"https:\/\/yoursite\/.well-known\/ucp\"<\/code>.\nThere is no WordPress cookie auth on these routes (agent discovery). Disable Catalog REST in settings if you do not want them.<\/p><\/dd>\n<dt id=\"where%20are%20private%20keys%20stored%3F\"><h3>Where are private keys stored?<\/h3><\/dt>\n<dd><p>Default: <code>wp-content\/uploads\/vixns-commerce-profile-ucp\/private\/<\/code>. Prefer a path outside the document root via the <code>vixns_ucp_private_key_dir<\/code> filter. On nginx, always deny the default directory explicitly.<\/p><\/dd>\n<dt id=\"is%20this%20an%20official%20universal%20commerce%20protocol%20plugin%3F\"><h3>Is this an official Universal Commerce Protocol plugin?<\/h3><\/dt>\n<dd><p>No. It is developed by Vixns as a third-party WooCommerce integration.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Renamed for WordPress.org trademark clarity (slug vixns-commerce-profile-ucp).<\/li>\n<li>Private keys and feed default under uploads\/{slug}\/; tightened write allowlist to .well-known + uploads plugin dir.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Signing keys[] (EdDSA\/ES256), rotate\/revoke, WBA jwks_uri documentation.<\/li>\n<li>Path allowlist for profile\/feed writes; HTTPS-only canonical host \/ probe.<\/li>\n<li>Test-only failure filters gated behind VIXNS_UCP_TESTING.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Catalog REST: search, lookup, product; profile advertises services + catalog capabilities.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release: profile generation, dual scheduler, WP-CLI, admin status\/probe, optional JSONL feed.<\/li>\n<\/ul>","raw_excerpt":"Static Universal Commerce Protocol business profile, optional catalog REST, and signing keys[] for WooCommerce. Not affiliated with the UCP project.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sq.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/365564","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sq.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/sq.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/sq.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=365564"}],"author":[{"embeddable":true,"href":"https:\/\/sq.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/vixns"}],"wp:attachment":[{"href":"https:\/\/sq.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=365564"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/sq.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=365564"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/sq.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=365564"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/sq.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=365564"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/sq.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=365564"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/sq.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=365564"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}