<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Almin Zolotic</title>
    <description>The latest articles on DEV Community by Almin Zolotic (@zologic).</description>
    <link>https://dev.to/zologic</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3790384%2Fc55f6bcf-6195-4a20-a695-27480157be6e.jpg</url>
      <title>DEV Community: Almin Zolotic</title>
      <link>https://dev.to/zologic</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zologic"/>
    <language>en</language>
    <item>
      <title>Building the Only UCP Plugin for WooCommerce — Outside the Walled Garden</title>
      <dc:creator>Almin Zolotic</dc:creator>
      <pubDate>Thu, 09 Apr 2026 17:50:45 +0000</pubDate>
      <link>https://dev.to/zologic/building-the-only-ucp-plugin-for-woocommerce-outside-the-walled-garden-4adk</link>
      <guid>https://dev.to/zologic/building-the-only-ucp-plugin-for-woocommerce-outside-the-walled-garden-4adk</guid>
      <description>&lt;p&gt;When protocol compliance conflicts with platform policy, independence stops being a limitation and becomes a feature that enables full execution.&lt;/p&gt;

&lt;p&gt;Two months ago, AI purchasing landed on Shopify, and within hours a WooCommerce store completed a fully autonomous transaction without any human interaction.&lt;/p&gt;

&lt;p&gt;That store was running UCPReady, a plugin that turns WooCommerce into a Universal Commerce Protocol endpoint for AI agents to transact directly.&lt;/p&gt;

&lt;p&gt;Today, UCPReady is the only WooCommerce plugin with full UCP 2026-04-08 compliance, running in production and processing real autonomous orders.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes It Different
&lt;/h2&gt;

&lt;p&gt;UCPReady is not a partial implementation or a demo layer, but a complete protocol-native system designed for real autonomous commerce flows.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full Universal Commerce Protocol 2026-04-08 compliance across all required surfaces and behaviors
&lt;/li&gt;
&lt;li&gt;Support for REST, MCP, and Embedded Checkout transports without fallback compromises
&lt;/li&gt;
&lt;li&gt;Autonomous AI purchasing with no human confirmation step required at checkout
&lt;/li&gt;
&lt;li&gt;Schema Quality rating of A (99) verified through independent validation tools
&lt;/li&gt;
&lt;li&gt;Spec updates shipped within 24 hours from release to production deployment
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is production commerce running on an open protocol rather than a controlled integration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why It’s Not in the Marketplace
&lt;/h2&gt;

&lt;p&gt;Open protocols sometimes introduce requirements that do not align with existing marketplace rules designed for traditional plugin behavior.&lt;/p&gt;

&lt;p&gt;UCP requires that checkout execution completes fully when invoked, including payment processing, instead of redirecting to manual confirmation flows.&lt;/p&gt;

&lt;p&gt;Marketplace policies, reasonably, enforce strict controls around autonomous payment execution for security and user protection reasons.&lt;/p&gt;

&lt;p&gt;That creates a structural mismatch between protocol requirements and platform rules rather than a simple review outcome.&lt;/p&gt;

&lt;p&gt;The decision becomes whether to adapt the protocol to fit the platform or preserve the protocol and distribute independently.&lt;/p&gt;

&lt;p&gt;UCPReady chose to preserve the protocol as designed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Core Difference in Approach
&lt;/h2&gt;

&lt;p&gt;WooCommerce is building AI capabilities focused on merchants managing their stores through internal tools and administrative workflows.&lt;/p&gt;

&lt;p&gt;UCPReady focuses on the opposite side of the interaction, where AI agents act on behalf of users to discover and purchase products.&lt;/p&gt;

&lt;p&gt;These approaches are not competing implementations, but they operate at completely different layers of the commerce stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Independence Works Better
&lt;/h2&gt;

&lt;p&gt;Operating outside the marketplace enables faster iteration cycles that match the pace of protocol evolution without external approval delays.&lt;/p&gt;

&lt;p&gt;Full compliance can be maintained without introducing exceptions, fallbacks, or behavior changes that fragment the protocol surface.&lt;/p&gt;

&lt;p&gt;Support becomes direct and immediate, without reliance on layered support systems or delayed release cycles.&lt;/p&gt;

&lt;p&gt;Merchants get a transparent product with clear capabilities instead of features shaped by policy constraints.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Trade-off
&lt;/h2&gt;

&lt;p&gt;You do not get marketplace distribution, automatic updates, or official platform endorsement through the standard channels.&lt;/p&gt;

&lt;p&gt;You do get full protocol compliance, rapid updates, direct support, and a system designed for autonomous AI commerce from the ground up.&lt;/p&gt;

&lt;p&gt;This is a trade between convenience and capability rather than a limitation of the implementation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Standards vs Platform Deals
&lt;/h2&gt;

&lt;p&gt;Platform integrations are fast to deploy but inherently limited by agreements, approvals, and ecosystem boundaries.&lt;/p&gt;

&lt;p&gt;Open protocols are slower to standardize but enable interoperability across platforms, agents, and implementations without restriction.&lt;/p&gt;

&lt;p&gt;UCPReady is built on the assumption that standards will outlast individual platform deals.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Means
&lt;/h2&gt;

&lt;p&gt;If you want your WooCommerce store to be accessible to AI agents for real autonomous purchasing, this capability exists today.&lt;/p&gt;

&lt;p&gt;It does not require waiting for platform updates, partnerships, or future roadmap features to become available.&lt;/p&gt;

&lt;p&gt;It requires adopting a protocol-first approach that operates outside traditional distribution models.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Note
&lt;/h2&gt;

&lt;p&gt;Some innovations do not fit inside existing systems because those systems were designed for a different generation of use cases.&lt;/p&gt;

&lt;p&gt;Autonomous AI commerce is one of those cases, and open protocols are where that shift is currently happening.&lt;/p&gt;

&lt;p&gt;UCPReady exists outside the marketplace because that is currently the only place it can fully exist without compromise.&lt;/p&gt;




&lt;p&gt;🔗 &lt;a href="https://zologic.nl/ucpready" rel="noopener noreferrer"&gt;Try UCPReady&lt;/a&gt;&lt;br&gt;&lt;br&gt;
💼 &lt;a href="https://www.linkedin.com/in/almin-zolotic/" rel="noopener noreferrer"&gt;Almin Zolotic on LinkedIn&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>opensource</category>
      <category>php</category>
    </item>
    <item>
      <title>WooCommerce Just Did What Shopify Did — Hours Later, Open Protocol, Full Autonomous Purchase</title>
      <dc:creator>Almin Zolotic</dc:creator>
      <pubDate>Wed, 25 Mar 2026 09:31:08 +0000</pubDate>
      <link>https://dev.to/zologic/woocommerce-just-did-what-shopify-did-hours-later-open-protocol-full-autonomous-purchase-58ef</link>
      <guid>https://dev.to/zologic/woocommerce-just-did-what-shopify-did-hours-later-open-protocol-full-autonomous-purchase-58ef</guid>
      <description>&lt;p&gt;Shopify announced AI-powered purchasing in ChatGPT this morning. Six hours later, a WooCommerce store completed a fully autonomous AI purchase — identity linked, wallet debited, order in processing — using an open protocol anyone can implement.&lt;/p&gt;

&lt;p&gt;No partnership deal. No platform exclusivity. Just a spec, a plugin, and a real order.&lt;/p&gt;




&lt;h2&gt;
  
  
  What happened this morning
&lt;/h2&gt;

&lt;p&gt;At 09:37 AM today, an AI agent (Claude Sonnet 4.5) completed an autonomous purchase on &lt;a href="https://houseofparfum.nl" rel="noopener noreferrer"&gt;houseofparfum.nl&lt;/a&gt;, a 40,000 SKU WooCommerce perfume store.&lt;/p&gt;

&lt;p&gt;Here's the full session replay:&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://ucpplayground.com/s/01KMJ26KVH7ZZ78DWMHZ5BRK32" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fucpplayground.com%2Fs%2F01KMJ26KVH7ZZ78DWMHZ5BRK32%2Fog.png" height="420" class="m-0" width="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://ucpplayground.com/s/01KMJ26KVH7ZZ78DWMHZ5BRK32" rel="noopener noreferrer" class="c-link"&gt;
            UCPPlaygroundhouseofparfum.nl via Claude Sonnet 4.5 - UCPPlayground
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Checkout Reached in 43.6s. Watch the full agent session replay.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fucpplayground.com%2Ffavicon.ico" width="32" height="32"&gt;
          ucpplayground.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;What the agent did, without any human intervention:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Searched for a perfume under €30&lt;/li&gt;
&lt;li&gt;Created a checkout session&lt;/li&gt;
&lt;li&gt;Selected the Terrawallet wallet payment instrument (surfaced from the linked identity)&lt;/li&gt;
&lt;li&gt;Selected flat-rate shipping&lt;/li&gt;
&lt;li&gt;Called &lt;code&gt;complete_checkout&lt;/code&gt; with an idempotency key&lt;/li&gt;
&lt;li&gt;The wallet was debited €22.93&lt;/li&gt;
&lt;li&gt;WooCommerce order #82244 was created with status &lt;code&gt;processing&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;8 turns. 79,152 tokens. Schema Quality: A (99).&lt;/p&gt;




&lt;h2&gt;
  
  
  The difference from Shopify
&lt;/h2&gt;

&lt;p&gt;Shopify's ChatGPT integration is impressive. But it's a bilateral deal between two platforms. Shopify stores work in ChatGPT. That's it.&lt;/p&gt;

&lt;p&gt;What happened today uses the &lt;strong&gt;Universal Commerce Protocol (UCP)&lt;/strong&gt; — an open specification that any store, any agent, and any platform can implement independently.&lt;/p&gt;

&lt;p&gt;The same flow that worked in UCPPlayground today will work in any UCP-compliant agent host. Claude, GPT, Gemini, Grok — any model. Any platform that implements the MCP transport binding can discover houseofparfum.nl's capabilities, link buyer identity, and complete a purchase.&lt;/p&gt;

&lt;p&gt;No bilateral agreement required. No platform partnership. Just a spec.&lt;/p&gt;




&lt;h2&gt;
  
  
  What makes this technically interesting
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Identity linking&lt;/strong&gt; — the agent authenticated via OAuth 2.0 Authorization Code + PKCE against the store's own OAuth server (RFC 8414, RFC 7591). The bearer token resolved to WooCommerce customer ID 1. Name, email, phone, billing address, shipping address — all pre-populated from the WC account. The agent never asked for any of it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Autonomous payment&lt;/strong&gt; — Terrawallet store credit was surfaced as a payment instrument because the linked identity had a wallet balance. The agent selected it, called &lt;code&gt;complete_checkout&lt;/code&gt;, and the wallet was debited server-side. No browser redirect. No payment form. No human in the loop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UCP protocol compliance&lt;/strong&gt; — every response carried &lt;code&gt;ucp.capabilities&lt;/code&gt; in the correct keyed-object format. The MCP transport binding used bare tool names (&lt;code&gt;complete_checkout&lt;/code&gt;, not &lt;code&gt;ucp_complete_checkout&lt;/code&gt;). The idempotency store prevented duplicate orders on retry. Schema Quality A (99) from UCPChecker.&lt;/p&gt;




&lt;h2&gt;
  
  
  The stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Plugin:&lt;/strong&gt; &lt;a href="https://zologic.nl/product/ucpready-ai-agent-commerce-for-woocommerce/" rel="noopener noreferrer"&gt;UCPReady&lt;/a&gt; (FREE WooCommerce plugin by Zologic)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Protocol:&lt;/strong&gt; Universal Commerce Protocol 2026-01-23&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transport:&lt;/strong&gt; MCP (Model Context Protocol) JSON-RPC 2.0&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test platform:&lt;/strong&gt; UCPPlayground by Ben Fisher / UCPChecker&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Store:&lt;/strong&gt; houseofparfum.nl (live production, 40k+ SKUs, Redis)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;UCPReady was validated by Ben Fisher (UCPChecker) as "the most spec-complete non-Shopify UCP implementation tested." It also exposed 4 bugs in the UCPPlayground embedded checkout during interop testing — all fixed the same day.&lt;/p&gt;




&lt;h2&gt;
  
  
  What this means for WooCommerce merchants
&lt;/h2&gt;

&lt;p&gt;If you run a WooCommerce store today, you are one plugin install away from being discoverable and purchasable by any AI agent that implements UCP.&lt;/p&gt;

&lt;p&gt;Not "AI-assisted checkout." Not "AI product recommendations." Fully autonomous purchase — the agent finds the product, builds the session, collects buyer details from linked identity, selects payment, and completes the order. You get a WooCommerce order in processing status, attributed to the linked customer account, with full order history.&lt;/p&gt;

&lt;p&gt;The same infrastructure that powers Shopify's ChatGPT integration — agentic discovery, session management, identity linking, autonomous payment — is now available to every WooCommerce store via an open protocol.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;Ben Fisher is adding multi-item cart flow to UCPPlayground today. The cart capability (&lt;code&gt;dev.ucp.shopping.cart&lt;/code&gt;) is already declared in houseofparfum.nl's &lt;code&gt;/.well-known/ucp&lt;/code&gt; manifest and the tools are live. Once the Playground wires up the cart flow, agents will be able to browse, build multi-item carts, compare products, and convert to checkout — the full pre-purchase exploration flow.&lt;/p&gt;

&lt;p&gt;The UCP Technical Committee nomination window closes April 3. If you're building on UCP or have a perspective on how the protocol should evolve, now is the time to get involved: &lt;a href="https://github.com/Universal-Commerce-Protocol/ucp" rel="noopener noreferrer"&gt;https://github.com/Universal-Commerce-Protocol/ucp&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live store endpoint:&lt;/strong&gt; &lt;code&gt;https://houseofparfum.nl/.well-known/ucp&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UCPPlayground:&lt;/strong&gt; &lt;a href="https://ucpplayground.com" rel="noopener noreferrer"&gt;ucpplayground.com&lt;/a&gt; — connect houseofparfum.nl and run your own session&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UCPReady:&lt;/strong&gt; &lt;a href="https://zologic.nl/product/ucpready-ai-agent-commerce-for-woocommerce/" rel="noopener noreferrer"&gt;https://zologic.nl/product/ucpready-ai-agent-commerce-for-woocommerce/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UCP Spec:&lt;/strong&gt; &lt;a href="https://ucp.dev/latest/specification" rel="noopener noreferrer"&gt;ucp.dev/latest/specification&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;UCPReady is built by Zologic. The autonomous purchase milestone was achieved in collaboration with Ben Fisher (UCPRails/UCPPlayground/UCPChecker) who has been validating UCP implementations across the ecosystem.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>woocommerce</category>
      <category>ai</category>
      <category>mcp</category>
      <category>commerce</category>
    </item>
    <item>
      <title>Why your WooCommerce AI Agent endpoint is slow (and how we fixed it in 30 lines)</title>
      <dc:creator>Almin Zolotic</dc:creator>
      <pubDate>Tue, 24 Mar 2026 16:23:28 +0000</pubDate>
      <link>https://dev.to/zologic/why-your-woocommerce-ai-agent-endpoint-is-slow-and-how-we-fixed-it-in-30-lines-157e</link>
      <guid>https://dev.to/zologic/why-your-woocommerce-ai-agent-endpoint-is-slow-and-how-we-fixed-it-in-30-lines-157e</guid>
      <description>&lt;p&gt;&lt;em&gt;Published by Almin Zolotic — Zologic / UCPReady&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;We spent most of yesterday debugging an 8-second &lt;code&gt;ucp_list_products&lt;/code&gt; response on a live WooCommerce store with 40,000+ SKUs. The fix was 30 lines of PHP. Here's the full investigation — every dead end included — because anyone building on WooCommerce + UCP is going to hit this.&lt;/p&gt;




&lt;h2&gt;
  
  
  The setup
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://houseofparfum.nl" rel="noopener noreferrer"&gt;houseofparfum.nl&lt;/a&gt; runs UCPReady — our WooCommerce plugin that implements the Universal Commerce Protocol (UCP) over REST, MCP, and Embedded Checkout. It's been running in production since February, and UCP Playground benchmarks consistently showed &lt;code&gt;ucp_list_products&lt;/code&gt; taking 8,432ms.&lt;/p&gt;

&lt;p&gt;That's not a typo. Eight seconds. On every cold session.&lt;/p&gt;

&lt;p&gt;For context: Shopify's median MCP tool call latency is 146ms. An AI agent making 4-5 tool calls in a session at 8 seconds each is going to hit platform timeouts. Sessions fail. Purchases don't complete.&lt;/p&gt;

&lt;p&gt;We needed to find and fix the root cause.&lt;/p&gt;




&lt;h2&gt;
  
  
  Eliminating suspects
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Suspect 1: The database query&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;First thing to check — is the WooCommerce product query slow?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wp &lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="s1"&gt;'
$start = microtime(true);
$results = wc_get_products([
    "status" =&amp;gt; "publish",
    "limit" =&amp;gt; 10,
    "paginate" =&amp;gt; true,
]);
echo "Query: " . round((microtime(true) - $start) * 1000) . "ms\n";
echo "Total: " . $results-&amp;gt;total . "\n";
'&lt;/span&gt; &lt;span class="nt"&gt;--allow-root&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result: &lt;strong&gt;159ms&lt;/strong&gt; for 38,433 products. Fast. Not the problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Suspect 2: Product transformation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;UCPReady transforms WC_Product objects into UCP format on each request. How long does that take for 10 products?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wp &lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="s1"&gt;'
$adapter = UCPReady\Adapters\ProductAdapter::get_instance();
$results = wc_get_products(["status" =&amp;gt; "publish", "limit" =&amp;gt; 10]);
$start = microtime(true);
foreach ($results as $product) {
    $adapter-&amp;gt;to_ucp_list_format($product);
}
echo "Transform: " . round((microtime(true) - $start) * 1000) . "ms\n";
'&lt;/span&gt; &lt;span class="nt"&gt;--allow-root&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result: &lt;strong&gt;10ms&lt;/strong&gt;. Not the problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Suspect 3: Redis / object cache&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The store has Redis installed. Checking if it's actually connected to WordPress:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wp cache &lt;span class="nb"&gt;type&lt;/span&gt; &lt;span class="nt"&gt;--allow-root&lt;/span&gt;
&lt;span class="c"&gt;# Redis ✓&lt;/span&gt;

wp &lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="s1"&gt;'
$found = false;
wp_cache_get("ucp_product_list_82192", "ucpready", false, $found);
echo $found ? "CACHED" : "NOT CACHED";
'&lt;/span&gt; &lt;span class="nt"&gt;--allow-root&lt;/span&gt;
&lt;span class="c"&gt;# NOT CACHED&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Redis is connected but product list cache keys aren't being populated. Separate issue — but not the 8-second culprit either.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Suspect 4: The taxonomy mapper&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;UCPReady maps WooCommerce categories to Google Product Taxonomy IDs. This involves loading a 482KB taxonomy file and building an inverted index. Was it rebuilding on every request?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wp &lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="s1"&gt;'
$start = microtime(true);
$mapper = UCPReady\Taxonomy\TaxonomyMapper::get_instance();
$mapper-&amp;gt;map_category(17, "en_US");
echo round((microtime(true) - $start) * 1000) . "ms\n";
'&lt;/span&gt; &lt;span class="nt"&gt;--allow-root&lt;/span&gt;
&lt;span class="c"&gt;# 18ms&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;18ms cold. Fast. And we fixed the caching here anyway — the built inverted index now persists to Redis with a 6-hour TTL. But still not the 8-second culprit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The real test: HTTP vs WP-CLI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At this point we noticed something odd. Every WP-CLI test was fast. The same operations over HTTP were taking 8 seconds. WP-CLI has WordPress already loaded in memory. HTTP requests boot WordPress from scratch on every call.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;time &lt;/span&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; /dev/null &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s2"&gt;"https://houseofparfum.nl/wp-json/ucpready/v1/mcp"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ucp_list_products","arguments":{"limit":5}}}'&lt;/span&gt;

&lt;span class="c"&gt;# real 0m8.101s&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;8 seconds over HTTP. 169ms in WP-CLI. The gap is WordPress boot time.&lt;/p&gt;




&lt;h2&gt;
  
  
  Finding the culprit
&lt;/h2&gt;

&lt;p&gt;The store has 17 active plugins. Something in that list was making every MCP request boot WordPress for 8 seconds. We tested methodically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wp plugin deactivate google-listings-and-ads &lt;span class="nt"&gt;--allow-root&lt;/span&gt;

&lt;span class="nb"&gt;time &lt;/span&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; /dev/null &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s2"&gt;"https://houseofparfum.nl/wp-json/ucpready/v1/mcp"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  ...

&lt;span class="c"&gt;# real 0m0.651s&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Google Listings and Ads was adding 7.5 seconds to every single MCP request.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not because of the product query. Not because of anything UCP-related. The plugin registers expensive hooks during WordPress initialisation that fire on every request — including REST API requests that have nothing to do with Google Shopping feeds.&lt;/p&gt;

&lt;p&gt;This isn't a UCPReady problem or even a UCP problem. It's a WooCommerce plugin ecosystem problem. Any plugin that does expensive work on &lt;code&gt;init&lt;/code&gt; or similar hooks will slow down every MCP request on every WooCommerce store running it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The fix: Partial Bootstrap Mode
&lt;/h2&gt;

&lt;p&gt;The solution is a must-use plugin that fires before regular plugins load and removes the offenders from the active plugins list for MCP requests only. Everything else on the store — admin, storefront, Google Shopping feed generation — is completely untouched.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class="cd"&gt;/**
 * UCPReady MCP Partial Bootstrap
 * Place in /wp-content/mu-plugins/ucpready-mcp-bootstrap.php
 */&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nb"&gt;defined&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'ABSPATH'&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nv"&gt;$ucpready_skip&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s1"&gt;'google-listings-and-ads/google-listings-and-ads.php'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'query-monitor/query-monitor.php'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'ajax-search-for-woocommerce/ajax-search-for-woocommerce.php'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nv"&gt;$ucpready_uri&lt;/span&gt;    &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$_SERVER&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'REQUEST_URI'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$ucpready_is_mcp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;strpos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$ucpready_uri&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'/ucpready/v1/mcp'&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
    &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;strpos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$ucpready_uri&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'rest_route=/ucpready/v1/mcp'&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$ucpready_is_mcp&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;add_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'option_active_plugins'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$plugins&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$ucpready_skip&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nb"&gt;is_array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$plugins&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nv"&gt;$plugins&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;array_values&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nb"&gt;array_diff&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$plugins&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$ucpready_skip&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the entire fix. The &lt;code&gt;option_active_plugins&lt;/code&gt; filter with priority 1 fires before any plugin's code runs, so the offending plugins never register their hooks at all.&lt;/p&gt;




&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;time &lt;/span&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; /dev/null &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s2"&gt;"https://houseofparfum.nl/wp-json/ucpready/v1/mcp"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"ucp_list_products","arguments":{"limit":5}}}'&lt;/span&gt;

&lt;span class="c"&gt;# real 0m0.272s&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then we ran a full timing breakdown:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-w&lt;/span&gt; &lt;span class="s2"&gt;"DNS:%{time_namelookup} Connect:%{time_connect} SSL:%{time_appconnect} TTFB:%{time_starttransfer} Total:%{time_total}&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; ...

&lt;span class="c"&gt;# DNS:0.001 Connect:0.001 SSL:0.038 TTFB:0.038 Total:0.267&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Server TTFB: 38ms.&lt;/strong&gt; The remaining ~4.5 seconds in Playground benchmarks is geographic network latency from US/UK servers to the Netherlands — not fixable at the server level.&lt;/p&gt;

&lt;p&gt;WooCommerce at 38ms TTFB matches Shopify's performance characteristics. The variable isn't the platform. It's plugin configuration.&lt;/p&gt;




&lt;h2&gt;
  
  
  What this means for the WooCommerce + UCP ecosystem
&lt;/h2&gt;

&lt;p&gt;This finding applies to every WooCommerce UCP implementation, not just UCPReady. If you're building on WooCommerce + UCP and &lt;code&gt;ucp_list_products&lt;/code&gt; is slow, run this diagnostic:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Baseline with all plugins&lt;/span&gt;
&lt;span class="nb"&gt;time &lt;/span&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; /dev/null &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://yourstore.com/wp-json/ucpready/v1/mcp"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ucp_list_products","arguments":{"limit":5}}}'&lt;/span&gt;

&lt;span class="c"&gt;# 2. Deactivate plugins one by one and retest&lt;/span&gt;
wp plugin deactivate &amp;lt;plugin-name&amp;gt; &lt;span class="nt"&gt;--allow-root&lt;/span&gt;
&lt;span class="c"&gt;# retest&lt;/span&gt;
wp plugin activate &amp;lt;plugin-name&amp;gt; &lt;span class="nt"&gt;--allow-root&lt;/span&gt;

&lt;span class="c"&gt;# 3. Once you find the culprit, add it to the mu-plugin skip list&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Common suspects beyond Google Listings: any plugin that runs expensive &lt;code&gt;init&lt;/code&gt; hooks, external API calls during boot, or complex query modifications that fire on every request.&lt;/p&gt;




&lt;h2&gt;
  
  
  The broader lesson
&lt;/h2&gt;

&lt;p&gt;AI agents make rapid sequential tool calls. A human tolerates a 3-second page load. An agent making 5 tool calls at 3 seconds each blows through platform timeouts and fails the session. Performance that was "acceptable" for human traffic becomes a hard blocker for agent traffic.&lt;/p&gt;

&lt;p&gt;WooCommerce's plugin ecosystem is powerful but it was built for humans, not agents. Every plugin that does expensive boot-time work is a potential agent-killer. The mu-plugin pattern above is the pragmatic fix until the ecosystem catches up.&lt;/p&gt;




&lt;h2&gt;
  
  
  What we're working on next
&lt;/h2&gt;

&lt;p&gt;The mu-plugin currently requires manual installation. We're adding a performance dashboard to UCPReady's admin settings that measures actual MCP response times, identifies problematic plugins automatically, and provides the mu-plugin as a one-click download when response times are above threshold.&lt;/p&gt;

&lt;p&gt;We're also exploring whether it makes sense to report this to the Google Listings and Ads team directly. The fix on their side is a single &lt;code&gt;is_rest_api_request()&lt;/code&gt; guard before registering expensive hooks. One line on their end helps every WooCommerce store, not just UCPReady users.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;UCPReady is a WooCommerce plugin that implements the Universal Commerce Protocol — turning any WooCommerce store into a fully agent-executable commerce endpoint. Live demo: &lt;a href="https://houseofparfum.nl" rel="noopener noreferrer"&gt;houseofparfum.nl&lt;/a&gt; | Plugin: &lt;a href="https://zologic.nl" rel="noopener noreferrer"&gt;zologic.nl&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If your WooCommerce store is slow for AI agent traffic, I offer agent readiness audits. Reach out at &lt;a href="mailto:contact@zologic.nl"&gt;contact@zologic.nl&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>woocommerce</category>
      <category>php</category>
      <category>ai</category>
      <category>webperf</category>
    </item>
    <item>
      <title>How I Built Autonomous AI Purchasing on WooCommerce: OAuth 2.0, Identity Linking, and Wallet Payments</title>
      <dc:creator>Almin Zolotic</dc:creator>
      <pubDate>Sun, 22 Mar 2026 12:57:11 +0000</pubDate>
      <link>https://dev.to/zologic/how-i-built-autonomous-ai-purchasing-on-woocommerce-oauth-20-identity-linking-and-wallet-5148</link>
      <guid>https://dev.to/zologic/how-i-built-autonomous-ai-purchasing-on-woocommerce-oauth-20-identity-linking-and-wallet-5148</guid>
      <description>&lt;p&gt;&lt;strong&gt;An AI agent searched a 40,000-SKU store, identified a product, pre-populated the buyer's details from a linked identity, debited a wallet, and created a paid WooCommerce order — with zero human interaction after the initial consent screen.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is what I built this week. Here's how it works.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem: AI Agents Can't Authenticate as Customers
&lt;/h2&gt;

&lt;p&gt;AI agents can already browse your store, read product listings, and build a cart. That part is solved by protocols like &lt;a href="https://ucp.dev" rel="noopener noreferrer"&gt;UCP (Universal Commerce Protocol)&lt;/a&gt; and &lt;a href="https://modelcontextprotocol.io" rel="noopener noreferrer"&gt;MCP (Model Context Protocol)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;But the moment an agent tries to actually &lt;em&gt;complete&lt;/em&gt; a purchase, it hits a wall:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Whose account is this order going on?&lt;/li&gt;
&lt;li&gt;What's the shipping address?&lt;/li&gt;
&lt;li&gt;How does the agent pay without a browser redirect?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The standard answer is: surface a &lt;code&gt;continue_url&lt;/code&gt; and make the human finish the job in a browser. That's not agentic commerce — that's just a fancy product search with extra steps.&lt;/p&gt;

&lt;p&gt;The real problem is &lt;strong&gt;identity&lt;/strong&gt;. The agent doesn't know who it's acting for, and the store doesn't know who the agent represents.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Solution: OAuth 2.0 Identity Linking
&lt;/h2&gt;

&lt;p&gt;The draft UCP spec (version &lt;code&gt;2026-03-14&lt;/code&gt;) introduces a capability called &lt;code&gt;dev.ucp.common.identity_linking&lt;/code&gt;. The mechanism is OAuth 2.0 Authorization Code flow with PKCE, where the &lt;em&gt;AI agent platform&lt;/em&gt; is the OAuth client and the &lt;em&gt;WooCommerce store&lt;/em&gt; is the authorization server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The flow in plain English:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Agent platform discovers the store's capabilities via &lt;code&gt;/.well-known/ucp&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Sees that the store supports identity linking via OAuth 2.0&lt;/li&gt;
&lt;li&gt;Discovers the OAuth server metadata endpoint (RFC 8414)&lt;/li&gt;
&lt;li&gt;Initiates an authorization request — the customer sees a consent screen&lt;/li&gt;
&lt;li&gt;Customer approves once — agent platform receives a bearer token&lt;/li&gt;
&lt;li&gt;Every subsequent API call includes that token&lt;/li&gt;
&lt;li&gt;The store resolves the token to a WC customer account and pre-populates all buyer data automatically&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F42x92jfe3kl7055fq933.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F42x92jfe3kl7055fq933.PNG" alt="OAuth consent screen on houseofparfum.nl — AI agent requesting permission to create checkout sessions and pre-fill buyer details" width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After consent, every checkout session created with that bearer token automatically has the customer's name, email, billing address, shipping address, and available store credit surfaced as a payment instrument — without the customer doing anything.&lt;/p&gt;

&lt;p&gt;The customer approves &lt;strong&gt;once&lt;/strong&gt;. After that, the agent can complete purchases autonomously until the token expires or the customer revokes access.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Built: UCPReady
&lt;/h2&gt;

&lt;p&gt;UCPReady is a WooCommerce plugin that implements the full UCP spec including identity linking. The key components:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A complete OAuth 2.0 authorization server inside WordPress&lt;/strong&gt; — dynamic client registration, Authorization Code + PKCE S256, refresh token rotation, token revocation with cascade revocation on account events, and RFC 8414 server metadata. All rendered server-side, no external dependencies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Identity resolution&lt;/strong&gt; — bearer token resolves to a WC customer automatically. Checkout sessions created with a valid token have buyer data pre-populated without any additional calls.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connected Agents tab in My Account&lt;/strong&gt; — customers see every agent platform that has access, when it was granted, when it expires, and can revoke any of them with one click.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automatic token revocation&lt;/strong&gt; — tokens are cascade-revoked automatically when a customer changes their password, updates their account, or deletes their account. No stale access.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Result
&lt;/h2&gt;

&lt;p&gt;Here's what actually happened on &lt;a href="https://houseofparfum.nl" rel="noopener noreferrer"&gt;houseofparfum.nl&lt;/a&gt; — a live WooCommerce store with 40,000+ SKUs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Agent platform connected to the store via MCP&lt;/li&gt;
&lt;li&gt;Customer linked identity via the OAuth consent screen (one click, one time)&lt;/li&gt;
&lt;li&gt;Agent searched the catalog, found the product, created a checkout session&lt;/li&gt;
&lt;li&gt;Buyer details pre-populated automatically from the linked account&lt;/li&gt;
&lt;li&gt;Shipping method selected, wallet balance surfaced as payment option&lt;/li&gt;
&lt;li&gt;Agent completed the purchase — wallet debited server-side&lt;/li&gt;
&lt;li&gt;WooCommerce order created, status: &lt;strong&gt;Processing&lt;/strong&gt;, customer: &lt;strong&gt;linked account&lt;/strong&gt;, attribution: &lt;strong&gt;agent platform&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F98e9od40wmc0brjdposl.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F98e9od40wmc0brjdposl.PNG" alt="WooCommerce order #82137 — Status: Processing, Paid, Customer: Almin Zolotic, Order attribution: Referral Ucpchecker.com" width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No browser. No redirect. No human interaction after the initial consent.&lt;/p&gt;




&lt;h2&gt;
  
  
  What the Store Owner Sees
&lt;/h2&gt;

&lt;p&gt;Orders placed by AI agents appear in WooCommerce exactly like any other order — but with full attribution:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Status:&lt;/strong&gt; Processing (paid)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customer:&lt;/strong&gt; the linked WC account, not Guest&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Order attribution:&lt;/strong&gt; the agent platform hostname that placed the order&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UCPReady Analytics:&lt;/strong&gt; revenue breakdown by AI platform, order count, average order value&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8s5r39yvrsunekzvlv1i.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8s5r39yvrsunekzvlv1i.PNG" alt="WooCommerce My Account Connected AI Agents tab showing UCP Playground and WalletPay with access dates and Revoke buttons" width="800" height="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every agent that has ever been granted access is visible and revocable by the customer. No black boxes.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Wallet Payment
&lt;/h2&gt;

&lt;p&gt;When a customer has store credit and their identity is linked, the wallet balance is surfaced automatically in the checkout response as an available payment instrument. The agent sees it, selects it, and calls &lt;code&gt;complete_checkout&lt;/code&gt;. The payment is processed entirely server-side — no Stripe, no card network, no browser redirect.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F25t1i6kebejxjmby9as1.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F25t1i6kebejxjmby9as1.PNG" alt="Customer wallet on houseofparfum.nl showing €59,04 remaining balance and -€16,88 debit from autonomous agent purchase on 22 March 2026" width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This works with any WooCommerce wallet plugin that exposes a programmatic debit API. We tested with TeraWallet.&lt;/p&gt;




&lt;h2&gt;
  
  
  UCP Playground Validation
&lt;/h2&gt;

&lt;p&gt;Ben Fisher's &lt;a href="https://ucpplayground.com" rel="noopener noreferrer"&gt;UCP Playground&lt;/a&gt; — the primary tool for testing UCP compliance — now has a "Link Identity" button. When pointed at houseofparfum.nl, it discovers the identity linking capability, triggers the OAuth flow, and renders our consent screen correctly.&lt;/p&gt;

&lt;p&gt;Schema Quality score: &lt;strong&gt;A (98)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk8tl3novto1672bvj7j2.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk8tl3novto1672bvj7j2.PNG" alt="UCP Playground connected to houseofparfum.nl showing Link Identity button and Schema Quality score A 98" width="800" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Playground currently stops at checkout creation — full autonomous completion from the Playground requires Ben to add payment instrument selection to the runtime. That's the next step on his end.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Missing (Honest Assessment)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Playground autonomous completion&lt;/strong&gt; — identity linking and checkout creation work end to end via the Playground. Full completion requires payment instrument selection in the Playground runtime, which isn't there yet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Attribute-based disambiguation&lt;/strong&gt; — the flow assumes the agent can identify exactly which product to buy. "The blue one, size M" requires variant resolution before checkout. That's an agent-side problem, not a protocol problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AP2 for non-wallet payments&lt;/strong&gt; — for stores without store credit, completing payment without a browser redirect requires an AP2-compatible payment processor. Store credit / wallet is the cleanest path today. Card payments without browser redirect are the next frontier.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;The live UCP discovery endpoint: &lt;code&gt;https://houseofparfum.nl/.well-known/ucp&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The OAuth server metadata: &lt;code&gt;https://houseofparfum.nl/.well-known/oauth-authorization-server&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If you're building an agent platform and want to test identity linking against a live WooCommerce endpoint, both are open. Point your runtime at the discovery endpoint and the rest is spec-compliant.&lt;/p&gt;

&lt;p&gt;UCPReady runs on any WooCommerce store. Available at &lt;a href="https://zologic.nl" rel="noopener noreferrer"&gt;zologic.nl&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bigger Picture
&lt;/h2&gt;

&lt;p&gt;Identity linking is the piece that turns AI agents from "helpful product finders" into actual autonomous purchasing agents. Without it, every agentic commerce flow ends with "here's the checkout URL, go finish it yourself."&lt;/p&gt;

&lt;p&gt;With it, the agent can complete the entire transaction — discovery, identity, payment, order creation — without the customer ever opening a browser after the first consent.&lt;/p&gt;

&lt;p&gt;The UCP spec is still in draft on this capability (&lt;code&gt;2026-03-14&lt;/code&gt;). But the implementation is live and working today on a real store.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;UCPReady is built by &lt;a href="https://linkedin.com/in/alminzolotic" rel="noopener noreferrer"&gt;Almin Zolotic&lt;/a&gt; at &lt;a href="https://zologic.nl" rel="noopener noreferrer"&gt;Zologic&lt;/a&gt;. The live test store is &lt;a href="https://houseofparfum.nl" rel="noopener noreferrer"&gt;houseofparfum.nl&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Want this on your store?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;UCPReady is available at &lt;a href="https://zologic.nl/ucpready" rel="noopener noreferrer"&gt;zologic.nl/ucpready&lt;/a&gt; — €149/year, instant download, works on any WooCommerce store.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;code&gt;#woocommerce&lt;/code&gt; &lt;code&gt;#ai&lt;/code&gt; &lt;code&gt;#webdev&lt;/code&gt; &lt;code&gt;#opensource&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;code&gt;#woocommerce&lt;/code&gt; &lt;code&gt;#ai&lt;/code&gt; &lt;code&gt;#webdev&lt;/code&gt; &lt;code&gt;#opensource&lt;/code&gt;&lt;/p&gt;

</description>
      <category>woocommerce</category>
      <category>webdev</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>Y Combinator validates ideas. Nobody validates adoption. Here's what I built instead.</title>
      <dc:creator>Almin Zolotic</dc:creator>
      <pubDate>Sun, 15 Mar 2026 15:30:50 +0000</pubDate>
      <link>https://dev.to/zologic/y-combinator-validates-ideas-nobody-validates-adoption-heres-what-i-built-instead-38n4</link>
      <guid>https://dev.to/zologic/y-combinator-validates-ideas-nobody-validates-adoption-heres-what-i-built-instead-38n4</guid>
      <description>&lt;p&gt;&lt;em&gt;By Almin Zolotic — Founder of Zologic, City Shower, and Market Physics Engine&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The validation that didn't save me
&lt;/h2&gt;

&lt;p&gt;In 2020 I was living in a vacant school in Rotterdam after a divorce wiped out everything I had built. During that period I noticed something obvious that nobody was solving: tens of thousands of homeless people in the Netherlands couldn't access a shower. Not because showers didn't exist — because access was fragmented, gatekept, and invisible.&lt;/p&gt;

&lt;p&gt;I built City Shower. A network of accessible hygiene facilities for people living on the streets.&lt;/p&gt;

&lt;p&gt;I validated it the way every startup course tells you to. I talked to people. Social workers, shelter managers, municipal health officers, community leaders, entrepreneurs. Every single one said it was needed. Many said it was overdue.&lt;/p&gt;

&lt;p&gt;I had positive signals everywhere.&lt;/p&gt;

&lt;p&gt;And then I ran into a wall that no interview had prepared me for.&lt;/p&gt;

&lt;p&gt;Regulatory friction. Switching costs embedded in institutional processes. Trust infrastructure that didn't exist yet between gyms, municipalities, and social services. The idea was sound. The adoption pathway was blocked.&lt;/p&gt;

&lt;p&gt;Nobody's survey had told me that. Because surveys don't measure adoption. They measure intent. And Kahneman proved decades ago that intent and behavior are not the same thing.&lt;/p&gt;

&lt;p&gt;That gap — between "people say yes" and "people actually adopt" — is where most startups die. And almost nobody is measuring it.&lt;/p&gt;




&lt;h2&gt;
  
  
  What traditional validation actually measures
&lt;/h2&gt;

&lt;p&gt;The lean startup canon — customer interviews, problem validation, demand testing — is built on a flawed assumption: that what people tell you they will do predicts what they will actually do.&lt;/p&gt;

&lt;p&gt;It doesn't.&lt;/p&gt;

&lt;p&gt;Daniel Kahneman and Amos Tversky's Prospect Theory (1979) showed that human decision-making is not rational utility calculation. Losses loom approximately twice as large as equivalent gains. The friction of &lt;em&gt;changing&lt;/em&gt; behavior is systematically underweighted by the people experiencing it — and almost completely invisible in an interview context, where social pressure to be supportive overwhelms honest friction assessment.&lt;/p&gt;

&lt;p&gt;Y Combinator's application asks: &lt;em&gt;"What do you understand about your business that other companies in it just don't see?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It doesn't ask: &lt;em&gt;"What structural friction stands between your idea and the people who will need to change their behavior to adopt it?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Lean startup asks: &lt;em&gt;"Have you talked to customers?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It doesn't ask: &lt;em&gt;"Have you modeled the regulatory environment your regulator is operating in, the switching cost your operator faces, or the trust infrastructure your early adopter needs before they convert?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;These are different questions. The first set measures whether your idea sounds good in a room. The second set measures whether it will actually spread in a market.&lt;/p&gt;

&lt;p&gt;There's another problem nobody talks about: &lt;strong&gt;the people who will kill your idea don't show up to customer discovery sessions.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Regulators don't attend your user interviews. Risk officers don't fill in your survey. Institutional gatekeepers don't book a 30-minute call on Calendly. They show up after you've scaled — and by then you've already built the wrong thing in the wrong way.&lt;/p&gt;




&lt;h2&gt;
  
  
  So I built a simulator
&lt;/h2&gt;

&lt;p&gt;After City Shower, after founding Zologic, after shipping UCPReady (an AI agent commerce plugin for WooCommerce, currently in WooCommerce Marketplace business review) — I kept running into the same pattern. Good ideas. Real problems. Structural friction that surveys didn't surface until after significant time and money had been spent.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;&lt;a href="https://marketphysics.eu" rel="noopener noreferrer"&gt;Market Physics Engine&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Not another survey tool. Not another AI that asks you questions and gives you generic feedback. A behavioral simulation engine that treats adoption as a physics problem — where perceived value competes against structural friction across a heterogeneous population of decision-makers.&lt;/p&gt;

&lt;p&gt;Here's the conceptual architecture:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1 — Generate the full stakeholder ecosystem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You submit your pitch. The engine generates 12 stakeholder personas covering every role that influences adoption: consumer, buyer, operator, supplier, regulator, investor, ecosystem partner, technical evaluator, early adopter, skeptic analyst, risk officer, and public stakeholder.&lt;/p&gt;

&lt;p&gt;Each persona is scored across two competing forces:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Value drivers&lt;/em&gt; — functional utility, emotional motivation, social signaling, market timing, ecosystem readiness&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Friction drivers&lt;/em&gt; — cognitive cost (switching effort, learning curve), perceived risk (financial, regulatory, technical), and regulatory burden&lt;/p&gt;

&lt;p&gt;The scoring is role-specific and grounded in documented behavioral patterns for each archetype. A regulator looks nothing like an early adopter. A risk officer's friction profile is structurally different from a consumer's. The engine enforces this — it doesn't let every persona converge on the same generic scores.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2 — Simulate a heterogeneous population&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Each persona seeds a population of synthetic agents with behavioral variation drawn from the persona's scores. The population is designed to be heterogeneous — capturing the full distribution of real market behavior, including the resistant tail that single-point estimates miss entirely.&lt;/p&gt;

&lt;p&gt;This is grounded in Monte Carlo simulation methodology. No single persona represents a market. The variance matters as much as the mean.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3 — Run network diffusion across 12 market periods&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Agents don't respond to a global market signal. They respond to their immediate network — consistent with Watts-Strogatz small-world topology research and how platform adoption actually propagates in the real world.&lt;/p&gt;

&lt;p&gt;Adoption cascades locally before reaching the broader population. This produces tipping points rather than smooth growth curves — which is exactly what you see in every major platform market that has ever succeeded or failed.&lt;/p&gt;

&lt;p&gt;The simulation runs across 12 sequential periods, separating innovator adoption from imitator adoption — consistent with Bass Diffusion Model dynamics documented across decades of empirical platform research.&lt;/p&gt;

&lt;p&gt;Friction variables are weighted asymmetrically throughout — consistent with Prospect Theory. A blocker's resistance costs more adoption probability than an equivalent level of enthusiasm generates. This is not an assumption. It is empirically documented.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4 — Output you can actually act on&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Idea Fitness Index (IFI)&lt;/strong&gt; — a composite behavioral fitness score&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adoption curve&lt;/strong&gt; — 12-period S-curve with period-by-period growth rate overlay&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Friction profile&lt;/strong&gt; — Cognitive, Risk, and Regulatory breakdown per persona&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Benchmark comparison&lt;/strong&gt; — your curve overlaid against empirical anchors for Airbnb, Uber, Stripe, and Slack&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stakeholder sentiment&lt;/strong&gt; — 12 personas classified as supporters, skeptics, or blockers with behavioral reasoning&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What this looks like on a real pitch
&lt;/h2&gt;

&lt;p&gt;I ran the Airbnb pitch through the engine:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"A two-sided marketplace where homeowners rent out spare rooms or entire properties to travelers seeking affordable, local accommodation alternatives to hotels."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IFI: 0.53 — &lt;em&gt;Scalable opportunity&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Adoption Probability: 78.5%&lt;/li&gt;
&lt;li&gt;Majority adoption at: Period 6&lt;/li&gt;
&lt;li&gt;Closest benchmark match: Airbnb&lt;/li&gt;
&lt;li&gt;Dominant friction: Risk and Regulatory&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The friction profile surfaces exactly what actually happened to Airbnb in their early years — not consumer demand failure (demand was high from day one), but regulatory and trust infrastructure friction that consumed enormous operational energy before the product could scale.&lt;/p&gt;

&lt;p&gt;The personas that dragged the score were the regulator and the risk officer — both high on regulatory burden and perceived risk, both structurally resistant to a trust-dependent two-sided marketplace entering an unregulated category.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What traditional validation told founders about Airbnb in 2008:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Travelers want cheaper accommodation ✓&lt;/li&gt;
&lt;li&gt;Homeowners would consider renting their space ✓&lt;/li&gt;
&lt;li&gt;Waitlist filled up quickly ✓&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What it missed:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The regulatory cascade that would define Airbnb's next decade. The trust infrastructure they'd have to build from scratch. The institutional friction that doesn't appear in any customer interview because the people carrying that friction don't attend customer interviews.&lt;/p&gt;

&lt;p&gt;Market Physics surfaces that friction in 60 seconds, before you spend a cent building toward it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The same friction model applied to my own work
&lt;/h2&gt;

&lt;p&gt;I ran the UCPReady pitch through Market Physics before submitting to the WooCommerce Marketplace.&lt;/p&gt;

&lt;p&gt;UCPReady makes WooCommerce stores transactable by AI agents via the Universal Commerce Protocol — REST, MCP, and embedded checkout in one plugin. It's the infrastructure layer that lets AI agents shop your store the way a human would, without scraping or hallucinating product data.&lt;/p&gt;

&lt;p&gt;The simulation told me exactly where the friction would concentrate: the institutional regulator persona (WooCommerce's own review process), the technical evaluator (merchant-developers who need spec compliance proof before adoption), and the skeptic analyst (merchants who've heard "AI will change everything" too many times).&lt;/p&gt;

&lt;p&gt;It concentrated there. The WooCommerce Marketplace business review has been ongoing since February. The technical evaluator friction resolved through independent third-party testing (UCPReady was cited as the most spec-complete non-Shopify UCP implementation tested across 180 real agent shopping sessions). The skeptic analyst friction is resolving through publishing — this article being part of that.&lt;/p&gt;

&lt;p&gt;That's not a coincidence. That's the model working.&lt;/p&gt;




&lt;h2&gt;
  
  
  The honest comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;YC Application&lt;/th&gt;
&lt;th&gt;Lean Startup&lt;/th&gt;
&lt;th&gt;Market Physics&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Measures stated intent&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Measures behavioral adoption probability&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Surfaces regulatory friction pre-build&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Rarely&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Models network diffusion dynamics&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Captures the resistant tail&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Requires access to real humans&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Takes weeks&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Takes 60 seconds&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Grounded in behavioral economics&lt;/td&gt;
&lt;td&gt;Partially&lt;/td&gt;
&lt;td&gt;Partially&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Benchmarks against empirical historical data&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Market Physics doesn't replace customer discovery. Talking to real humans is irreplaceable — you learn things about context, language, and emotion that no simulation captures.&lt;/p&gt;

&lt;p&gt;What it replaces is the false confidence that intent data gives you. The "everyone I talked to loved it" that precedes so many failed launches.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Run the simulation first. Then go talk to the persona the simulation identified as your biggest blocker.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That conversation will be completely different from a generic customer interview — because you'll know exactly what friction to probe for before you walk in the room.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://marketphysics.eu" rel="noopener noreferrer"&gt;marketphysics.eu&lt;/a&gt;&lt;/strong&gt; — free tier, 3 simulations. No credit card.&lt;/p&gt;

&lt;p&gt;Run your own pitch. See where the friction concentrates before you build.&lt;/p&gt;

&lt;p&gt;If the IFI comes back low, that's not a failure signal. It's a navigation signal. The simulation tells you which variables are dragging the score and which personas are the blockers. Fix those structural barriers, re-run, and watch the curve change.&lt;/p&gt;

&lt;p&gt;That's the loop lean startup was always supposed to create. Market Physics just runs it in behavioral space instead of interview space — and it runs it before you've committed to building anything.&lt;/p&gt;




&lt;h2&gt;
  
  
  One last thing
&lt;/h2&gt;

&lt;p&gt;I built Market Physics because I needed it. City Shower taught me what late-stage friction discovery costs. Every venture since has been shaped by the question I now run through the engine first:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Not "can I build this." Not "do people want this." But "will people actually change their behavior to adopt this — and what stands in the way?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That's a different question. It deserves a different tool.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Almin Zolotic is the founder of &lt;a href="https://zologic.nl" rel="noopener noreferrer"&gt;Zologic&lt;/a&gt; (AI commerce infrastructure, Den Haag NL), &lt;a href="https://cityshower.org" rel="noopener noreferrer"&gt;City Shower&lt;/a&gt; (hygiene access for the homeless in the Netherlands), and &lt;a href="https://marketphysics.eu" rel="noopener noreferrer"&gt;Market Physics Engine&lt;/a&gt; (behavioral adoption simulation). UCPReady — the WooCommerce AI agent commerce plugin — is currently in WooCommerce Marketplace business review.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;em&gt;Launching on Product Hunt tomorrow — would mean a lot if you checked it out 👇&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;🚀 &lt;strong&gt;&lt;a href="https://www.producthunt.com/products/market-physics-engine" rel="noopener noreferrer"&gt;Launching on Product Hunt tomorrow — upvotes mean the world&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;code&gt;startup&lt;/code&gt; &lt;code&gt;entrepreneurship&lt;/code&gt; &lt;code&gt;ai&lt;/code&gt; &lt;code&gt;productivity&lt;/code&gt;&lt;/p&gt;

</description>
      <category>startup</category>
      <category>entrepreneurship</category>
      <category>productivity</category>
      <category>ai</category>
    </item>
    <item>
      <title>The "Efficiency Tax": Why Your AI Agents Are Failing at Checkout</title>
      <dc:creator>Almin Zolotic</dc:creator>
      <pubDate>Thu, 05 Mar 2026 23:06:23 +0000</pubDate>
      <link>https://dev.to/zologic/the-efficiency-tax-why-your-ai-agents-are-failing-at-checkout-4j0e</link>
      <guid>https://dev.to/zologic/the-efficiency-tax-why-your-ai-agents-are-failing-at-checkout-4j0e</guid>
      <description>&lt;p&gt;As we move from building simple RAG chatbots to deploying autonomous commerce agents, we are hitting a new kind of bottleneck.&lt;/p&gt;

&lt;p&gt;It’s not a model reasoning problem.&lt;br&gt;&lt;br&gt;
It’s not a UI problem.  &lt;/p&gt;

&lt;p&gt;It’s a &lt;strong&gt;Protocol Stability problem&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In our latest research at Zologic, we benchmarked how AI agents (using &lt;strong&gt;4–8 concurrent models&lt;/strong&gt;) interact with a large-scale WooCommerce store (~&lt;strong&gt;42,000 SKUs&lt;/strong&gt;). The results revealed a massive &lt;strong&gt;"Efficiency Tax"&lt;/strong&gt; that most developers aren't accounting for.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem: Protocol Exposure
&lt;/h2&gt;

&lt;p&gt;When you give an LLM direct access to your commerce APIs ("Protocol Exposure"), you aren't just dealing with occasional hallucinations. You're dealing with &lt;strong&gt;high-frequency execution friction&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Search Loop&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Agents in exposed environments averaged &lt;strong&gt;3–5 search retries per session&lt;/strong&gt; just to find the correct SKU.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Parameter Mismatches&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Models frequently generate arguments that don't perfectly align with strict database schemas, leading to &lt;strong&gt;immediate execution failure&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The "Handshake" Failure&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
The transition from a valid cart to a successful checkout is often &lt;strong&gt;non-deterministic&lt;/strong&gt;, causing agents to lose session context and abandon the flow.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Data: Measuring the Friction
&lt;/h2&gt;

&lt;p&gt;We compared a baseline &lt;strong&gt;"exposed" environment&lt;/strong&gt; against one utilizing an &lt;strong&gt;Execution Stabilization Layer (UCPReady + Pro)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Infrastructure impact at &lt;strong&gt;100,000 monthly sessions&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Redundant Work&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Exposed environments generated &lt;strong&gt;~160,000 unnecessary tool calls per day&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Latency &amp;amp; Load&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Every session averaged &lt;strong&gt;~2 extra searches&lt;/strong&gt;, significantly increasing server load and token costs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Bottom Line&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
This technical friction resulted in a &lt;strong&gt;20% decay in conversion rates&lt;/strong&gt; (from a &lt;strong&gt;2% baseline down to 1.6%&lt;/strong&gt;).&lt;/p&gt;




&lt;h2&gt;
  
  
  From "Base" to "Pro" Execution
&lt;/h2&gt;

&lt;p&gt;To solve this, we moved away from raw protocol exposure toward &lt;strong&gt;Argument Normalization&lt;/strong&gt;. By implementing a stabilization layer, we forced &lt;strong&gt;deterministic outcomes&lt;/strong&gt; for the AI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Argument Normalization&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Ensuring model-generated arguments match protocol requirements before execution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deterministic Checkout&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Creating a stabilized path that prevents session loss during the final transaction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Efficiency Gains&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Reducing search attempts to &lt;strong&gt;2–3 per session&lt;/strong&gt; and significantly lowering the &lt;strong&gt;Efficiency Tax&lt;/strong&gt; on tokens.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Economic Impact
&lt;/h2&gt;

&lt;p&gt;For a store with an &lt;strong&gt;€80 Average Order Value (AOV)&lt;/strong&gt;, fixing this technical friction isn't just a dev task — it's a &lt;strong&gt;massive revenue lever&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monthly GMV Delta:&lt;/strong&gt; €32,000&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Annual Revenue Impact:&lt;/strong&gt; €384,000&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion for Developers
&lt;/h2&gt;

&lt;p&gt;If you are building for the &lt;strong&gt;agentic web&lt;/strong&gt;, stop optimizing your prompts and start optimizing your &lt;strong&gt;execution environment&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;As session volumes scale, the economic impact of &lt;strong&gt;protocol stability&lt;/strong&gt; scales with it.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Full Technical Briefing:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://zologic.nl/research/" rel="noopener noreferrer"&gt;https://zologic.nl/research/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tags&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  webdev #ecommerce #ai #woocommerce #llm #infrastructure
&lt;/h1&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
      <category>woocommerce</category>
    </item>
    <item>
      <title>Why SaaS Middleware Is the Wrong Architecture for Agentic Commerce</title>
      <dc:creator>Almin Zolotic</dc:creator>
      <pubDate>Tue, 03 Mar 2026 22:30:18 +0000</pubDate>
      <link>https://dev.to/zologic/why-saas-middleware-is-the-wrong-architecture-for-agentic-commerce-5cb7</link>
      <guid>https://dev.to/zologic/why-saas-middleware-is-the-wrong-architecture-for-agentic-commerce-5cb7</guid>
      <description>&lt;h2&gt;
  
  
  And what happened when I tested the alternative
&lt;/h2&gt;




&lt;p&gt;The first wave of "AI commerce" products is arriving. And most of them are built on the wrong foundation.&lt;/p&gt;

&lt;p&gt;I've spent the last few months building UCPReady — a WooCommerce plugin that implements the Universal Commerce Protocol directly on-site, with no external platform dependency. During that process I've been watching how others are approaching the same problem.&lt;/p&gt;

&lt;p&gt;Last week I tested UCPhub's public demo at &lt;code&gt;app.ucphub.ai/demo/chat&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Here's what I found.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Demo
&lt;/h2&gt;

&lt;p&gt;I asked it to find Chanel perfume. It returned: &lt;strong&gt;"No products found."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The demo catalog only contains UCPhub's own branded merchandise — a wristband, a lanyard, a sticker. So I asked it to buy a Ceramic Desk Mug instead. It got to checkout. Order created. Total $15.00. Buyer: X X / &lt;a href="mailto:x@x.xxx"&gt;x@x.xxx&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Then this appeared in the UI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Error: {"type":"error","sequence_number":2,"error":{"type":"tokens",
"code":"rate_limit_exceeded","message":"Rate limit reached for gpt-4o 
in organization org-mJqVnYWAifRG1IXiIUrFvuSC on tokens per min (TPM): 
Limit 30000, Used 24847, Requested 10827. Please try again in 11.348s."}}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A raw OpenAI rate limit error. Exposed directly in the production UI. On their own demo catalog.&lt;/p&gt;

&lt;p&gt;This is not a criticism of UCPhub as a company — they're building in a genuinely hard space and they're early. But this error reveals something important about the architectural choice they've made.&lt;/p&gt;




&lt;h2&gt;
  
  
  Two Architectures
&lt;/h2&gt;

&lt;p&gt;There are two ways to connect a WooCommerce store to AI agents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architecture 1: Platform middleware&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI Agent → SaaS Platform → Shared API Keys → Merchant Store
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the UCPhub model. Your store's data is ingested by their platform, normalized, and served to agents through their infrastructure. The agent never talks directly to your store.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architecture 2: On-site protocol&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI Agent → /.well-known/ucp → WooCommerce Store
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the UCPReady model. The agent discovers your store's capabilities directly from your server via a protocol-compliant manifest. No intermediary. No shared infrastructure.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Middleware Creates Problems at the Agent Layer
&lt;/h2&gt;

&lt;p&gt;The rate limit error in UCPhub's demo isn't a bug. It's a structural consequence of the architecture.&lt;/p&gt;

&lt;p&gt;When you run a shared platform, every merchant's agents compete for the same API budget. At demo scale with a handful of users, you hit GPT-4o's TPM limits. At production scale — hundreds of merchants, each with agents running multiple sessions simultaneously — this becomes a fundamental capacity problem.&lt;/p&gt;

&lt;p&gt;This is before considering:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Order caps.&lt;/strong&gt; UCPhub's pricing tiers limit orders to 50, 200, or 500 per month via AI channels. An AI agent doesn't know it's about to exceed your plan limit. Your store just stops being agent-accessible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Platform dependency.&lt;/strong&gt; If UCPhub's infrastructure goes down, your store disappears from every AI agent that uses their platform. With on-site UCP, your store is only down when your store is down.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Merchant-of-record risk.&lt;/strong&gt; When a third-party platform sits between the agent and your checkout, questions arise about who controls the transaction. UCPReady's delegate checkout model keeps you as merchant-of-record throughout. The agent creates a session; your WooCommerce checkout processes the payment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data residency.&lt;/strong&gt; Your product catalog, pricing, and inventory leave your server and live on their platform. For merchants with contractual or regulatory data requirements, this matters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost structure.&lt;/strong&gt; $39.99–$299.99/month, recurring, with order caps. A WooCommerce plugin is a one-time purchase that runs on infrastructure you already pay for.&lt;/p&gt;




&lt;h2&gt;
  
  
  What the UCP Specification Actually Enables
&lt;/h2&gt;

&lt;p&gt;The Universal Commerce Protocol was designed to avoid exactly this. The &lt;code&gt;/.well-known/ucp&lt;/code&gt; manifest is a discovery mechanism — it tells agents what your store can do and how to interact with it directly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"protocol"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ucp/1.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"transport"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"rest"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"embedded"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"checkout"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"delegate"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"signing_keys"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Ed25519"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When an agent fetches this manifest from your domain, it gets everything it needs to interact with your store — capability declarations, transport endpoints, signing requirements — without routing through a third party.&lt;/p&gt;

&lt;p&gt;This is why on-site MCP transport matters. The agent connects to your store's MCP endpoint directly. Your store processes the request. The agent gets a response. Nothing in the middle.&lt;/p&gt;

&lt;p&gt;UCPReady has been &lt;a href="https://dev.to/benjifisher/we-monitored-2000-ucp-manifests-every-day-for-a-month-heres-what-breaks-4cj9"&gt;independently validated by Benji Fisher / UCPChecker&lt;/a&gt; as one of only 8 domains globally declaring REST + MCP + Embedded Checkout in a single manifest. In 32 agent sessions across 4 frontier models (Claude, Gemini, Grok, DeepSeek) on a 40,000+ SKU live store, we recorded a 94% end-to-end checkout success rate.&lt;/p&gt;

&lt;p&gt;No rate limit errors. Because there's no shared API key. The agent talks to the store. The store responds.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Right Question for WooCommerce Merchants
&lt;/h2&gt;

&lt;p&gt;When evaluating any "AI commerce" product, the question isn't &lt;em&gt;does it have a demo&lt;/em&gt;. The question is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where does the agent actually connect?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If the answer is "to our platform, which connects to your store" — you've introduced a dependency that sits between your business and your customers. That dependency has uptime risk, capacity limits, cost structure, and data implications.&lt;/p&gt;

&lt;p&gt;If the answer is "directly to your store via a protocol-compliant manifest" — you own the infrastructure. You own the transaction. You own the relationship with the agent.&lt;/p&gt;




&lt;h2&gt;
  
  
  One More Thing
&lt;/h2&gt;

&lt;p&gt;UCPhub's demo returned "No products found" for Chanel perfume because their demo catalog doesn't contain Chanel perfume. That's fair — it's a demo.&lt;/p&gt;

&lt;p&gt;But it points to a deeper issue with the platform model: &lt;strong&gt;the agent is searching UCPhub's normalized representation of your catalog&lt;/strong&gt;, not your catalog. Any gap between their normalization and your actual data is a gap between what agents can find and what you actually sell.&lt;/p&gt;

&lt;p&gt;With on-site UCP, the agent queries your WooCommerce product database directly. There's no normalization layer. No gap. What's in your store is what agents can find.&lt;/p&gt;




&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;SaaS middleware for agentic commerce introduces platform dependency, order caps, shared API rate limits, and data residency issues&lt;/li&gt;
&lt;li&gt;The UCP specification was designed for direct store-to-agent communication&lt;/li&gt;
&lt;li&gt;On-site MCP transport eliminates the intermediary entirely&lt;/li&gt;
&lt;li&gt;UCPhub's live demo hit GPT-4o rate limits mid-session on their own test catalog — a predictable consequence of shared infrastructure&lt;/li&gt;
&lt;li&gt;UCPReady implements UCP directly in WooCommerce: no platform, no order caps, no shared keys, merchant-of-record throughout&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;UCPReady is a WooCommerce plugin implementing the Universal Commerce Protocol. It's currently in Business Review on the WooCommerce Marketplace. Zologic is an approved WooCommerce Marketplace vendor.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Benji Fisher's independent research: &lt;a href="https://ucpchecker.com/blog/why-we-built-ucp-playground" rel="noopener noreferrer"&gt;UCPChecker blog&lt;/a&gt; · &lt;a href="https://dev.to/benjifisher/we-ran-180-ai-agent-shopping-sessions-across-11-models-and-20-stores-heres-what-we-found-2884"&gt;180 agent sessions study&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>architecture</category>
      <category>saas</category>
    </item>
    <item>
      <title>Your WooCommerce Store Isn't Ready for AI Agents. Here's What That Costs You.</title>
      <dc:creator>Almin Zolotic</dc:creator>
      <pubDate>Sun, 01 Mar 2026 16:27:14 +0000</pubDate>
      <link>https://dev.to/zologic/your-woocommerce-store-isnt-ready-for-ai-agents-heres-what-that-costs-you-592d</link>
      <guid>https://dev.to/zologic/your-woocommerce-store-isnt-ready-for-ai-agents-heres-what-that-costs-you-592d</guid>
      <description>&lt;p&gt;The next customer to visit your WooCommerce store might not be human.&lt;/p&gt;

&lt;p&gt;It might be a ChatGPT plugin, a Claude shopping assistant, a Gemini agent, or something your customer built themselves that wakes up at 2am, searches for what they need, and tries to check out — all without any human in the loop.&lt;/p&gt;

&lt;p&gt;If your store isn't built for that, the agent doesn't rage-quit. It doesn't leave a bad review. It just stops. Silently. And the sale never happens.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem Nobody Is Talking About
&lt;/h2&gt;

&lt;p&gt;WooCommerce is the most widely deployed ecommerce platform on the web. It powers millions of stores. And almost none of them are machine-readable in a way that AI agents can actually transact with.&lt;/p&gt;

&lt;p&gt;This isn't about product feeds or SEO metadata. Those are solved problems. This is about something different: &lt;strong&gt;structured, real-time, bidirectional communication between an AI agent and your store's commerce infrastructure.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When a human visits your store, they handle ambiguity. They click around, read descriptions, figure out which size they need, and eventually check out. They tolerate friction because they want the product.&lt;/p&gt;

&lt;p&gt;Agents don't tolerate friction. They follow the tools available to them, and if those tools don't give them the right signals at the right moment, they stop — or worse, they loop, burning compute and your customer's patience before failing anyway.&lt;/p&gt;

&lt;p&gt;The gap isn't your products. It's your infrastructure.&lt;/p&gt;




&lt;h2&gt;
  
  
  What UCPReady Does
&lt;/h2&gt;

&lt;p&gt;UCPReady is a WooCommerce plugin that implements the &lt;a href="https://ucp.dev" rel="noopener noreferrer"&gt;Universal Commerce Protocol (UCP)&lt;/a&gt; — an open standard for AI-agent commerce interactions built on the Model Context Protocol (MCP).&lt;/p&gt;

&lt;p&gt;In plain terms: it gives AI agents a clean, structured way to interact with your store. Search products. Inspect product details. Create a checkout. Complete a purchase. Every operation is exposed as a well-defined MCP tool with typed parameters and predictable responses.&lt;/p&gt;

&lt;p&gt;The ten tools UCPReady exposes cover the full purchase lifecycle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product discovery (&lt;code&gt;list_products&lt;/code&gt;, &lt;code&gt;get_product&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Checkout management (&lt;code&gt;create_checkout&lt;/code&gt;, &lt;code&gt;get_checkout&lt;/code&gt;, &lt;code&gt;update_checkout&lt;/code&gt;, &lt;code&gt;complete_checkout&lt;/code&gt;, &lt;code&gt;cancel_checkout&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Order visibility (&lt;code&gt;get_order&lt;/code&gt;, &lt;code&gt;list_orders&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Integration (&lt;code&gt;register_webhook&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When an AI agent connects to a UCPReady store, it gets a manifest of what's available, connects via MCP, and can complete a purchase without any human-facing UI at all.&lt;/p&gt;

&lt;p&gt;That's the baseline. That's what Core gives you.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why "AI-Compatible" Isn't Enough
&lt;/h2&gt;

&lt;p&gt;We ran controlled benchmarks with four frontier AI models — Claude Opus 4.6, Gemini 2.5 Pro, Grok 4, and DeepSeek v3-2 — on a live UCPReady store (houseofparfum.nl, a real fragrance retailer).&lt;/p&gt;

&lt;p&gt;The test was simple: ask for a product, then say "buy me the first one."&lt;/p&gt;

&lt;p&gt;Every model completed the purchase. UCPReady Core works.&lt;/p&gt;

&lt;p&gt;But here's what we also found.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model behavior is not uniform.&lt;/strong&gt; The same purchase lifecycle cost 12,929 tokens with Gemini and 21,644 tokens with Claude — a 67% difference. That's not a bug. It's the nature of probabilistic inference across different model architectures. Different models reason differently about the same tool responses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Token cost is the wrong optimization target.&lt;/strong&gt; At typical LLM input pricing, the difference between the cheapest and most expensive model for a single checkout session is fractions of a euro cent. If you're at 10,000 AI-driven checkouts per month and you switch from Claude to Gemini, you save roughly €261/month in input tokens. That sounds meaningful until you realize that a 1% improvement in conversion rate at an average order value of €75 is worth €7,500/month on the same volume.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The real risk is silent failure.&lt;/strong&gt; Not failed transactions that throw errors — those you'd catch. The risk is the agent that searches, finds nothing, and stops. The agent that tries to check out a variable product and gets a WooCommerce rejection it doesn't know how to handle. The agent that completes a checkout attempt that hits an escalation state and doesn't know what to tell the customer. These are the failure modes that don't show up in your WooCommerce logs. They show up as sessions that ended early and sales that never happened.&lt;/p&gt;




&lt;h2&gt;
  
  
  UCPReady Pro: The Behavioral Intelligence Layer
&lt;/h2&gt;

&lt;p&gt;UCPReady Pro is a paid addon that sits on top of Core and addresses exactly these failure modes.&lt;/p&gt;

&lt;p&gt;It doesn't modify Core's tools. It doesn't change the protocol. It doesn't touch your checkout flow or your WooCommerce configuration. It works entirely within Core's published filter API — additive by design, zero regression risk.&lt;/p&gt;

&lt;p&gt;What it does: it adds a behavioral intelligence layer that shapes how AI agents interpret and respond to tool results. When certain conditions are detected in a tool response, Pro appends targeted instruction signals that guide the agent toward the correct next step.&lt;/p&gt;

&lt;p&gt;We can't give you the full architecture here — that's the product — but the categories of failure it guards against are public:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Variable product resolution.&lt;/strong&gt; WooCommerce requires a variation ID, not a parent product ID, to create a checkout for a configurable product. Agents that don't know this fail silently. Pro guards this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Low-stock urgency.&lt;/strong&gt; When stock is limited, agents that don't surface that information before checkout create a poor experience — or a failed one if stock depletes mid-session. Pro guards this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Empty search recovery.&lt;/strong&gt; Agents that hit a zero-result search and stop lose sales that a simple query adjustment could have recovered. Pro guards this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Escalation handling.&lt;/strong&gt; Some checkout attempts require human review. Agents that don't communicate this clearly leave customers without resolution. Pro guards this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ranked reference resolution.&lt;/strong&gt; Phrases like "buy the first one" or "that one" are common. Mapping them deterministically to a product ID in context is not something all models handle reliably across all session states. Pro guards this.&lt;/p&gt;

&lt;p&gt;None of these are exotic edge cases. They're the everyday surface area of a functioning ecommerce store — variable products, low inventory, search misses, payment escalations, conversational reference. Pro makes sure agents navigate all of it correctly.&lt;/p&gt;




&lt;h2&gt;
  
  
  What the Benchmark Actually Showed
&lt;/h2&gt;

&lt;p&gt;We want to be specific here, because the AI-commerce space has no shortage of inflated claims.&lt;/p&gt;

&lt;p&gt;Our controlled benchmark tested a clean purchase path: named product search, then ranked-reference buy intent. All four models completed the purchase in both directions — with Pro active and without it — on this specific scenario.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pro's measured impact on that path: +28 to +68 prompt tokens per lifecycle. Zero behavioral change.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's the honest result. For a smooth path through a simple product, Pro is transparent. It adds its signals and the model reaches the same outcome it would have reached anyway.&lt;/p&gt;

&lt;p&gt;That's actually the correct result for a production reliability layer. You don't want a plugin that changes behavior on your happy path. You want one that catches the unhappy paths before they fail.&lt;/p&gt;

&lt;p&gt;The failure modes Pro guards against require specific conditions to trigger: variable products, low stock, zero results, escalation states. We've validated the architecture. The stress-test benchmarks — the ones that actually trigger those conditions and measure whether Pro catches them — are the next phase of public documentation.&lt;/p&gt;

&lt;p&gt;What we can say now: the plugin is architecturally sound, non-regressive, and in production on a live store with four frontier models confirmed compatible.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bigger Picture: Agentic Commerce Is Not a Future State
&lt;/h2&gt;

&lt;p&gt;ChatGPT has had shopping capabilities for over a year. Gemini can complete purchases. Perplexity is building commerce features. The MCP ecosystem is growing rapidly, and the early pattern is clear: AI assistants that can take action on behalf of users will do so, and ecommerce is one of the highest-value action categories.&lt;/p&gt;

&lt;p&gt;The stores that will benefit are the ones that are ready when agents arrive — not the ones scrambling to retrofit compatibility after their competitors already captured that traffic.&lt;/p&gt;

&lt;p&gt;WooCommerce is uniquely positioned here. It's PHP, it's filterable, it's extensible, and the community knows how to build on it. UCPReady is built in that tradition: a clean plugin that works within WordPress conventions, hooks into WooCommerce properly, and exposes a standards-compliant MCP endpoint that any agent can connect to.&lt;/p&gt;

&lt;p&gt;You don't need to rebuild your store. You need to add two plugins.&lt;/p&gt;




&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;UCPReady Core&lt;/strong&gt; is the foundation. Install it, configure your MCP endpoint, and your store is immediately discoverable and transactable by any MCP-compatible AI agent. It requires WooCommerce 8.5+ and WordPress 6.4+, and it's HPOS-compatible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UCPReady Pro&lt;/strong&gt; is the intelligence layer. It requires Core v1.7.24+ and adds the behavioral guardrails that keep agents on the right path through the full complexity of a real product catalog — variable products, inventory states, search edge cases, and checkout outcomes.&lt;/p&gt;

&lt;p&gt;Both are built by &lt;a href="https://zologic.nl" rel="noopener noreferrer"&gt;Zologic&lt;/a&gt;, a Netherlands-based development studio focused on AI-commerce infrastructure.&lt;/p&gt;




&lt;h2&gt;
  
  
  A Note on Honesty
&lt;/h2&gt;

&lt;p&gt;We've seen a lot of AI-ecommerce content that leads with conversion uplift projections, token savings math, and bold claims about what AI agents prefer. Some of that framing is legitimate — the underlying dynamics are real.&lt;/p&gt;

&lt;p&gt;But we've benchmarked this ourselves, on a live store, with real models, and we know what the data actually says versus what sounds good in a pitch. The claims in this post are grounded in measurements we made and can reproduce. The claims we haven't made yet are the ones we haven't measured yet.&lt;/p&gt;

&lt;p&gt;If you're evaluating this category seriously, that distinction matters. We'd rather earn your confidence with accurate information than win it with numbers that don't hold up.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;UCPReady Core and UCPReady Pro are available at &lt;a href="https://zologic.nl/" rel="noopener noreferrer"&gt;zologic.nl/ucpready&lt;/a&gt;. Questions, architecture discussions, and benchmark comparisons welcome in the comments.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If you're building AI agents that interact with WooCommerce stores, we'd especially like to hear from you.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>woocommerce</category>
      <category>ai</category>
      <category>ecommerce</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Behavioral commerce prompting: the conversion layer hiding in your MCP tool responses</title>
      <dc:creator>Almin Zolotic</dc:creator>
      <pubDate>Fri, 27 Feb 2026 12:42:55 +0000</pubDate>
      <link>https://dev.to/zologic/behavioral-commerce-prompting-the-conversion-layer-hiding-in-your-mcp-tool-responses-2cpa</link>
      <guid>https://dev.to/zologic/behavioral-commerce-prompting-the-conversion-layer-hiding-in-your-mcp-tool-responses-2cpa</guid>
      <description>&lt;p&gt;&lt;em&gt;Almin Zolotic — founder of Zologic&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;There's a prompt engineering layer in agentic commerce that nobody is talking about yet. Here's how it works and why it matters.&lt;/p&gt;




&lt;p&gt;When an AI agent shops a UCP-enabled store, it calls a sequence of tools: search, get product details, create cart, generate checkout. Every one of those tool calls returns a JSON response. Most developers treat those responses as pure data.&lt;/p&gt;

&lt;p&gt;They're missing something.&lt;/p&gt;

&lt;p&gt;The UCP spec allows stores to include an &lt;code&gt;instructions&lt;/code&gt; field in any tool response. That field lands directly in the agent's context window — it's not a system prompt, it's not a user message, it's store-injected behavioral guidance delivered at the exact moment the agent needs it.&lt;/p&gt;

&lt;p&gt;That's a conversion funnel built into the protocol layer itself.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What it looks like in practice&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The mechanism works by embedding behavioral guidance directly into tool response payloads — at the exact moment the agent needs it, for the exact stage of the funnel it's in.&lt;/p&gt;

&lt;p&gt;Each tool response carries stage-specific instructions. A search response tells the agent how to present results and what to do next. A product detail response coaches it through variant resolution. A cart response guides it toward checkout without unnecessary detours.&lt;/p&gt;

&lt;p&gt;The store is not just serving data. It's coaching the agent through a structured checkout funnel — stage by stage, tool call by tool call. The merchant controls agent behavior without touching the AI's system prompt.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Why this is different from system prompt engineering&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;System prompts are set at the agent level, before any store interaction. They're generic — they can't know which store the agent is visiting, what stage of the funnel it's in, or what the next correct action is.&lt;/p&gt;

&lt;p&gt;Behavioral commerce prompting is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Contextual&lt;/strong&gt; — delivered at the exact moment of each tool response, not upfront&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stage-aware&lt;/strong&gt; — different instructions per funnel stage (search vs product detail vs cart)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Store-controlled&lt;/strong&gt; — the merchant owns it, not the AI platform&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic&lt;/strong&gt; — can vary per product, category, stock status, or business rule&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A system prompt can say "help the user buy something." A tool response instruction can say "this product has three size variants — resolve the correct variation ID before creating checkout, or the cart will fail."&lt;/p&gt;

&lt;p&gt;That's a fundamentally different level of precision.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The conversion impact&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The biggest drop-off point in agentic commerce funnels is variant resolution. Agents that skip &lt;code&gt;get_product_details&lt;/code&gt; and try to cart directly from search results guess at variant IDs, hit type errors, and fall off the funnel. In 180 real agent sessions across 11 models, this single failure mode accounts for most checkout drop-off.&lt;/p&gt;

&lt;p&gt;Behavioral prompting fixes it at the source. Instead of hoping the agent follows the correct tool sequence, the store tells it to — at the exact moment it needs to know.&lt;/p&gt;

&lt;p&gt;The agent follows it. Not because it was trained to. Because the store told it to, in context, at the right moment.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What this means for anyone building MCP servers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Your tool responses are not just data contracts. They're an interface between your business logic and the agent's reasoning loop.&lt;/p&gt;

&lt;p&gt;Every tool response is an opportunity to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prevent the next likely failure mode&lt;/li&gt;
&lt;li&gt;Route the agent to the correct next tool&lt;/li&gt;
&lt;li&gt;Surface business rules the agent can't infer from schema alone&lt;/li&gt;
&lt;li&gt;Reduce token waste from exploratory tool calls that go nowhere&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The stores that perform best in real agent sessions — consistent checkout completion across multiple models — are the ones that treat tool responses as behavioral interfaces, not just data payloads.&lt;/p&gt;

&lt;p&gt;Schema quality gets you in the door. Behavioral instructions close the sale.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The deeper point&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Prompt engineering has been a discipline focused on what you put into the system prompt or the user message. Agentic commerce introduces a third surface: the tool response.&lt;/p&gt;

&lt;p&gt;As MCP becomes the standard interface between AI agents and external systems, every server that returns tool results has the opportunity — and arguably the responsibility — to guide agent behavior at the moment of execution.&lt;/p&gt;

&lt;p&gt;For commerce, that means conversion optimization at the protocol layer. Not in the UI. Not in the AI. In the store's responses.&lt;/p&gt;

&lt;p&gt;That's a new discipline. It doesn't have a name yet.&lt;/p&gt;

&lt;p&gt;I'm calling it behavioral commerce prompting.&lt;/p&gt;




&lt;p&gt;UCPReady implements this across all tool responses for WooCommerce stores. If you're building MCP servers for commerce and want to compare notes, I'd like to hear what you're seeing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://zologic.nl/the-next-evolution-of-conversion-why-your-store-needs-to-be-agent-ready/" rel="noopener noreferrer"&gt;https://zologic.nl/the-next-evolution-of-conversion-why-your-store-needs-to-be-agent-ready/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>php</category>
      <category>opensource</category>
    </item>
    <item>
      <title>WooCommerce vs. AI Agents: Infrastructure Lessons From Real Tests</title>
      <dc:creator>Almin Zolotic</dc:creator>
      <pubDate>Thu, 26 Feb 2026 20:02:43 +0000</pubDate>
      <link>https://dev.to/zologic/woocommerce-vs-ai-agents-infrastructure-lessons-from-real-tests-19i8</link>
      <guid>https://dev.to/zologic/woocommerce-vs-ai-agents-infrastructure-lessons-from-real-tests-19i8</guid>
      <description>&lt;p&gt;Traditional WooCommerce hosting is architected around human behavior: deliberate page loads, visual browsing, and session-based cart interactions. &lt;strong&gt;Agentic commerce changes that model entirely.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI agents do not browse—they query. They do not wait for CSS to render—they hit REST or MCP (Model Context Protocol) endpoints in high-frequency bursts. We recently ran &lt;strong&gt;308 autonomous shopping sessions&lt;/strong&gt; across live WooCommerce environments to quantify how this traffic differs from human users—and where the infrastructure snaps.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s Different About Agent Traffic?
&lt;/h2&gt;

&lt;p&gt;The core difference is the &lt;strong&gt;request-to-action ratio&lt;/strong&gt;. A human user might generate 10–15 requests over five minutes to purchase a product. An AI agent can generate &lt;strong&gt;30+ structured API calls in under 15 seconds&lt;/strong&gt; to achieve the same outcome.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Human Behavior&lt;/th&gt;
&lt;th&gt;AI Agent Behavior&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Interface&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Visual (DOM/CSS)&lt;/td&gt;
&lt;td&gt;Structured (JSON / REST / MCP)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Navigation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Sequential / Linear&lt;/td&gt;
&lt;td&gt;Parallel / Recursive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Retries&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Manual / Abandonment&lt;/td&gt;
&lt;td&gt;Immediate / Programmatic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Data Usage&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Selective scanning&lt;/td&gt;
&lt;td&gt;Exhaustive schema parsing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;When an agent encounters a schema mismatch or type validation error, it does not leave the site. It retries—often instantly. If your API schema is ambiguous, the agent may loop against the same endpoint dozens of times per minute, causing immediate CPU spikes and PHP worker exhaustion.&lt;/p&gt;




&lt;h2&gt;
  
  
  Real Data: The 308-Session Test
&lt;/h2&gt;

&lt;p&gt;We analyzed 29 unique agent implementations across stores ranging from 1,000 to 50,000 SKUs.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Cart Endpoint Bursts
&lt;/h3&gt;

&lt;p&gt;Agents averaged &lt;strong&gt;3–6 consecutive tool calls within a 2-second window&lt;/strong&gt;. This creates a "thundering herd" effect on PHP workers—particularly on shared hosting environments with limited process pools.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Variant Resolution Overhead
&lt;/h3&gt;

&lt;p&gt;Agents often resolve every product variant (ID, SKU, size, color) before carting to ensure precision. This &lt;strong&gt;doubled the number of API calls&lt;/strong&gt; per successful checkout compared to human sessions.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The Retry Loop Cost
&lt;/h3&gt;

&lt;p&gt;Type validation errors (notably &lt;code&gt;-32602&lt;/code&gt;) triggered by incomplete schema descriptions led to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An average retry rate of &lt;strong&gt;1.8 per failed call&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Measurable increases in database write pressure.&lt;/li&gt;
&lt;li&gt;Higher memory churn during cart orchestration.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Concurrency Limits
&lt;/h3&gt;

&lt;p&gt;On standard shared hosting, timeouts began appearing at just &lt;strong&gt;15 concurrent agent sessions&lt;/strong&gt;. This is far below what most stores assume is "safe capacity."&lt;/p&gt;




&lt;h2&gt;
  
  
  What Broke First?
&lt;/h2&gt;

&lt;p&gt;Agentic commerce doesn’t break the frontend; it breaks the stack.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PHP Worker Exhaustion:&lt;/strong&gt; Rapid API calls quickly occupy all available workers, leading to &lt;code&gt;504 Gateway Timeouts&lt;/code&gt; for both agents and humans.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory Spikes:&lt;/strong&gt; Stores with 40k+ SKUs saw &lt;strong&gt;512MB–1GB memory spikes&lt;/strong&gt; during cart orchestration when pagination was not strictly enforced.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unoptimized Search:&lt;/strong&gt; If the first 100 results lack a required attribute, agents re-query. Without proper indexing, MySQL becomes the primary bottleneck.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  VPS Implications &amp;amp; Practical Guidance
&lt;/h2&gt;

&lt;p&gt;For agent-ready stores, a VPS is no longer optional. The tier depends on your catalog:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The 2GB RAM Threshold:&lt;/strong&gt; Sufficient for &amp;lt; 200 agent sessions/day and &amp;lt; 10k SKUs, provided Redis object caching is enabled and rate limiting exists.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The 4GB+ Requirement:&lt;/strong&gt; Necessary for 50k+ SKUs, real-time stock validation, or high-concurrency MCP traffic.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Why Redis Matters:&lt;/strong&gt; Redis is the single most impactful optimization here. By caching product schemas and variant metadata, you stop the agent from forcing a fresh DB lookup for every validation cycle.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Hidden Bottleneck: Checkout Orchestration
&lt;/h2&gt;

&lt;p&gt;Checkout is the most write-heavy phase. Agents stress order creation, stock validation, and transaction commits simultaneously. Stores using legacy order tables frequently experience locking contention. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fix:&lt;/strong&gt; Migrating to &lt;strong&gt;High-Performance Order Storage (HPOS)&lt;/strong&gt; in WooCommerce significantly improves concurrency handling and reduces write lock bottlenecks under concurrent agent hits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Modeling Agent Traffic (From Readiness to Infrastructure)
&lt;/h2&gt;

&lt;p&gt;Understanding protocol readiness is only half the equation. A store can expose a valid &lt;code&gt;.well-known/ucp&lt;/code&gt; manifest and still collapse under agent burst traffic if the underlying VPS is undersized.&lt;/p&gt;

&lt;p&gt;To quantify this, we built a lightweight infrastructure simulator that models agent retry loops, variant resolution overhead, and worker pool saturation. The goal was to answer a practical question: &lt;strong&gt;How much VPS do you actually need for agent-driven commerce?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Based on our 308-session dataset, we published an interactive calculator to make this data actionable:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://zologic.nl/ai-commerce-tool.html" rel="noopener noreferrer"&gt;&lt;strong&gt;AI Commerce Tool — VPS &amp;amp; Agent Readiness Calculator&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It allows you to input your SKU count and session volume to receive VPS tier recommendations and estimate concurrency thresholds. Protocol compliance determines whether agents &lt;em&gt;can&lt;/em&gt; interact with your store; VPS capacity determines whether your store &lt;em&gt;survives&lt;/em&gt; that interaction.&lt;/p&gt;




&lt;h3&gt;
  
  
  Discussion: Are You Ready for Agents?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Are you seeing structured, non-human patterns in your API logs?&lt;/li&gt;
&lt;li&gt;Have you stress-tested your cart endpoints for idempotency under retries?&lt;/li&gt;
&lt;li&gt;Is rate limiting configured for legitimate AI agents versus malicious bots?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Agentic commerce is no longer hypothetical. The earlier stores adapt their infrastructure for concurrency over page views, the more stable their growth will be.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
      <category>woocommerce</category>
    </item>
    <item>
      <title>Gemini tried to shop my WooCommerce store. Here's how far it got.</title>
      <dc:creator>Almin Zolotic</dc:creator>
      <pubDate>Wed, 25 Feb 2026 11:30:06 +0000</pubDate>
      <link>https://dev.to/zologic/gemini-tried-to-shop-my-woocommerce-store-heres-how-far-it-got-326n</link>
      <guid>https://dev.to/zologic/gemini-tried-to-shop-my-woocommerce-store-heres-how-far-it-got-326n</guid>
      <description>&lt;p&gt;&lt;em&gt;Almin Zolotic — founder of &lt;a href="https://zologic.nl" rel="noopener noreferrer"&gt;Zologic&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;I didn't set this up as an experiment. I typed a shopping query into Gemini and watched what happened. What followed is the clearest demonstration I've seen of why AI agent readiness matters for WooCommerce merchants right now — and what happens at every stage when it's missing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Act 1: No UCP. Gemini sends your customer to your competitors.
&lt;/h2&gt;

&lt;p&gt;I typed: &lt;em&gt;"Gemini, I want to buy Vichy perfume from houseofparfum.nl"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Gemini's response had nothing to do with the store.&lt;/p&gt;

&lt;p&gt;It questioned the site's legitimacy. It said houseofparfum.nl had no established reputation on Trustpilot. It told me Vichy doesn't make perfume. Then it redirected me to Notino, Farmaline, Etos, and DeOnlineDrogist — four competitors — with a comparison table and everything.&lt;/p&gt;

&lt;p&gt;The customer was gone.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgagb1xcsayoc96npf3kl.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgagb1xcsayoc96npf3kl.PNG" alt="Gemini questions store legitimacy and redirects to competitors. No UCP manifest present." width="800" height="369"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is happening right now to WooCommerce stores across Europe. AI assistants field shopping queries, fail to understand the store, and route customers elsewhere. Not because the store is bad. Because the store is invisible to the agent.&lt;/p&gt;




&lt;h2&gt;
  
  
  Act 2: One UCP endpoint. Gemini understands the store.
&lt;/h2&gt;

&lt;p&gt;I gave Gemini one thing: &lt;code&gt;https://houseofparfum.nl/.well-known/ucp&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;That's the UCP discovery manifest — a machine-readable file that tells AI agents what a store sells, what protocols it supports, and how to interact with it. UCPReady generates and maintains it automatically.&lt;/p&gt;

&lt;p&gt;The conversation changed immediately.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhzmn9dwbxhif113589iz.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhzmn9dwbxhif113589iz.PNG" alt="After providing the UCP manifest URL, Gemini correctly identifies the store's actual catalog — Lattafa, Mancera, Xerjoff." width="800" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I asked: &lt;em&gt;"What do they sell on houseofparfum.nl?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc3o9dpybmc55y54cx2zm.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc3o9dpybmc55y54cx2zm.PNG" alt="Gemini now describes houseofparfum.nl accurately — luxury, niche, and Middle Eastern fragrances. Legitimate Dutch retailer, iDEAL and Klarna accepted." width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The store went from "suspicious unknown website" to "specialist fragrance retailer" in one prompt. The customer was back.&lt;/p&gt;

&lt;p&gt;I then gave Gemini a direct product URL and asked about it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4x5gqhv7a9owbly9awnu.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4x5gqhv7a9owbly9awnu.PNG" alt="Gemini finds the real product page for Parisis Parfums Bloom Elsatys 75ml. The link is real. The product exists." width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's discovery working exactly as designed. One manifest URL transformed the agent's understanding of the entire store.&lt;/p&gt;




&lt;h2&gt;
  
  
  Act 3: No live endpoint. Gemini hallucinates the checkout.
&lt;/h2&gt;

&lt;p&gt;Here's where it gets interesting — and dangerous.&lt;/p&gt;

&lt;p&gt;I fed Gemini the raw UCP manifest JSON directly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbpg2aprcg0fc23d2lkw0.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbpg2aprcg0fc23d2lkw0.PNG" alt="Gemini told it has " width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I then shared the ToolRegistry code that defines UCPReady's MCP tools.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs3umrtmshp3xbvocqpg9.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs3umrtmshp3xbvocqpg9.PNG" alt="Gemini roleplays as an MCP client. It lists the exact tool names —  raw `ucp_list_products` endraw ,  raw `ucp_get_product` endraw ,  raw `ucp_create_checkout` endraw ,  raw `ucp_update_checkout` endraw  — and claims it can execute them. It cannot." width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gemini has no live connection to the store. It learned the shape of the tools from the code I shared, but it has no ability to actually call them. What it does instead is simulate what the results should look like — convincingly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvbapvt0jni84yo6nu1eo.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvbapvt0jni84yo6nu1eo.PNG" alt="Gemini produces a polished order summary. Wrong prices. An invented Vichy product that doesn't exist in the store. A checkout link that leads nowhere. Total hallucination — but it looks completely legitimate." width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I tested that checkout link. The server returned:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"rest_no_route"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"message"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"Geen route gevonden die overeenkomt met de URL en aanvraagmethode."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;404&lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;The session ID was malformed. The signature was invented. The URL never existed.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A customer reading Gemini's order summary would have no reason to doubt it. They'd click the checkout link and hit a dead end.&lt;/p&gt;

&lt;p&gt;This is the last-mile problem in agentic commerce. An agent that partially understands your store is almost worse than one that doesn't — it walks the customer to the door and hands them a key that doesn't fit the lock.&lt;/p&gt;




&lt;h2&gt;
  
  
  Act 4: Real UCP connection. Real checkout. Real order.
&lt;/h2&gt;

&lt;p&gt;I ran the same store through UCP Playground — a third-party benchmarking tool that connects AI agents to UCP endpoints via live MCP connections.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvlrl18nrlabrpw1j1ec6.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvlrl18nrlabrpw1j1ec6.PNG" alt="UCP Playground with Llama 3.3 70B. Live connection to houseofparfum.nl via the real MCP endpoint. Real product cards, real prices. Real delegated checkout URL:  raw `https://houseofparfum.nl/ucp/continue/dac9ec3e-1886-44e9-a447-4e4266e981e0` endraw . Total: €10.83." width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That URL is a real UUID. That session exists in WooCommerce. That link opens a pre-filled checkout with iDEAL, Klarna, and credit card — ready for the customer to pay.&lt;/p&gt;

&lt;p&gt;Two tool calls. 1,064ms for product search. 365ms for checkout creation. Done.&lt;/p&gt;

&lt;p&gt;No hallucinated inventory. No fake session strings. A real order waiting to be completed.&lt;/p&gt;




&lt;h2&gt;
  
  
  The three states every WooCommerce store is in right now
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;State 1 — No UCP manifest:&lt;/strong&gt; AI agents either ignore your store or actively redirect customers to competitors who are better understood. This is where most WooCommerce stores are today.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;State 2 — UCP manifest only:&lt;/strong&gt; Agents discover and describe your store accurately but fail at checkout. Customers get excited then confused. The manifest is a start — not a finish.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;State 3 — Full UCP implementation:&lt;/strong&gt; Agents complete the entire funnel. Discovery, product detail, cart, delegated checkout. Real orders. Real attribution in WooCommerce. This is what UCPReady delivers.&lt;/p&gt;




&lt;h2&gt;
  
  
  What surprised me most
&lt;/h2&gt;

&lt;p&gt;The agent intent is already there. Gemini — with no UCP integration, no merchant approval, no platform partnership — got as far as finding real product pages and calculating free shipping thresholds for a small Dutch fragrance store it had never encountered before.&lt;/p&gt;

&lt;p&gt;It just failed at checkout because there was no structured interface to connect to.&lt;/p&gt;

&lt;p&gt;The demand exists. The agents are ready. The missing piece is the store.&lt;/p&gt;




&lt;h2&gt;
  
  
  A note on Gemini and ChatGPT specifically
&lt;/h2&gt;

&lt;p&gt;Neither Gemini nor ChatGPT activates the full UCP checkout flow in their chat interfaces today. Google's implementation requires Merchant Center enrollment and is currently US-focused. ChatGPT's Instant Checkout is limited to select Shopify and Etsy partners.&lt;/p&gt;

&lt;p&gt;But Google has already published UCP as their open commerce standard — co-developed with Shopify, Zalando, Mastercard, Visa, and 20 other partners. The infrastructure is being built. The protocol is public. The endpoint format is standardized.&lt;/p&gt;

&lt;p&gt;UCPReady ensures your store is ready when they flip the switch. And right now, every UCP-native agent — the ones built on MCP, the ones in tools like UCP Playground, the ones being built by developers reading the spec today — can already complete the full funnel on your store.&lt;/p&gt;

&lt;p&gt;The open path is real. The timing is early. That's the point.&lt;/p&gt;




&lt;p&gt;UCPReady brings WooCommerce stores to State 3. If your store is currently in State 1 or 2, I'd like to hear from you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://zologic.nl/the-next-evolution-of-conversion-why-your-store-needs-to-be-agent-ready/" rel="noopener noreferrer"&gt;https://zologic.nl/the-next-evolution-of-conversion-why-your-store-needs-to-be-agent-ready/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>gemini</category>
      <category>wordpress</category>
    </item>
  </channel>
</rss>
