<?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>Forem: No7 Software</title>
    <description>The latest articles on Forem by No7 Software (@no7software-uk).</description>
    <link>https://forem.com/no7software-uk</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%2Forganization%2Fprofile_image%2F13327%2F3a83461c-7f3d-4607-8adf-fa7a41e1973d.png</url>
      <title>Forem: No7 Software</title>
      <link>https://forem.com/no7software-uk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/no7software-uk"/>
    <language>en</language>
    <item>
      <title>Shopify Quietly Auto-Shipped /llms.txt, /agents.md and /.well-known/ucp — Engineering Override Guide (2026)</title>
      <dc:creator>no7software</dc:creator>
      <pubDate>Thu, 14 May 2026 12:31:27 +0000</pubDate>
      <link>https://forem.com/no7software-uk/shopify-quietly-auto-shipped-llmstxt-agentsmd-and-well-knownucp-engineering-override-33cg</link>
      <guid>https://forem.com/no7software-uk/shopify-quietly-auto-shipped-llmstxt-agentsmd-and-well-knownucp-engineering-override-33cg</guid>
      <description>&lt;p&gt;Some time in the first week of May 2026, Shopify quietly turned on four agent-facing endpoints across the platform — no changelog post, no email, no banner in the admin. Open any Shopify store's &lt;code&gt;/llms.txt&lt;/code&gt;, &lt;code&gt;/agents.md&lt;/code&gt;, &lt;code&gt;/.well-known/ucp&lt;/code&gt;, or &lt;code&gt;/sitemap_agentic_discovery.xml&lt;/code&gt; in a browser and a generated file loads. Nobody on the merchant's team made them. Shopify is serving them. Live probe across a sample of UK and US Plus stores on 13 May 2026 confirms the rollout: Allbirds, Allbirds UK, and Kylie Cosmetics all return &lt;code&gt;200&lt;/code&gt; on the full set; some smaller and headless stores still &lt;code&gt;404&lt;/code&gt;, which suggests the rollout is store-by-store rather than instantaneous.&lt;/p&gt;

&lt;p&gt;The infrastructure side of the &lt;a href="https://no7software.co.uk/blog/agentic-commerce-protocols-acp-mcp-ucp-explained" rel="noopener noreferrer"&gt;Universal Commerce Protocol&lt;/a&gt; rollout has now landed in production for most merchants. The interesting engineering work is no longer "do we have agentic endpoints"; it is "do the defaults fit our store, and if not, how do we override them safely". This post is the engineering view of that decision — what auto-shipped, what the defaults actually contain, when to leave them alone, when to override via theme Liquid, the multi-region &lt;a href="https://no7software.co.uk/blog/shopify-markets-international-selling-guide" rel="noopener noreferrer"&gt;Shopify Markets&lt;/a&gt; trap that catches most multi-storefront merchants today, and how to wire the new &lt;code&gt;commerce-readiness.shopify.io&lt;/code&gt; scanner into CI.&lt;/p&gt;

&lt;h2&gt;
  
  
  What auto-shipped, verified
&lt;/h2&gt;

&lt;p&gt;Four endpoints now resolve on a default Shopify storefront without any merchant work. The shapes are stable enough to write integrations against:&lt;/p&gt;

&lt;h3&gt;
  
  
  The four default agent-facing endpoints
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Path&lt;/th&gt;
&lt;th&gt;Content&lt;/th&gt;
&lt;th&gt;Editable&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;/llms.txt&lt;/td&gt;
&lt;td&gt;Markdown manifest pointing agents at search, agents.md, UCP discovery, MCP endpoint, sitemap&lt;/td&gt;
&lt;td&gt;Yes — templates/llms.txt.liquid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/agents.md&lt;/td&gt;
&lt;td&gt;Long-form agent operating manual: UCP discovery flow, supported versions, checkout rules, rate-limit guidance&lt;/td&gt;
&lt;td&gt;Yes — templates/agents.md.liquid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/.well-known/ucp&lt;/td&gt;
&lt;td&gt;JSON UCP merchant profile: supported versions, transports, services, capabilities, payment handlers&lt;/td&gt;
&lt;td&gt;No — generated from store config&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/sitemap_agentic_discovery.xml&lt;/td&gt;
&lt;td&gt;Discovery index listing /llms.txt, /llms-full.txt, /agents.md with weekly changefreq&lt;/td&gt;
&lt;td&gt;No — generated from storefront state&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;What an agent gets when it hits these endpoints out of the box, on a real store today (Allbirds UK, abbreviated):&lt;/p&gt;

&lt;p&gt;The default &lt;code&gt;llms.txt&lt;/code&gt; opens with the store name and one-line description from the storefront settings, then lists the canonical browse URLs (&lt;code&gt;/collections/all&lt;/code&gt; and a &lt;code&gt;/search?q={'{'}query{'}'}&lt;/code&gt; template), basic store metadata (currency, contact email, phone), and a "For Agents &amp;amp; Developers" block that points at &lt;code&gt;agents.md&lt;/code&gt;, the UCP discovery endpoint, and the MCP endpoint at &lt;code&gt;/api/ucp/mcp&lt;/code&gt; — note the new UCP path, not the legacy &lt;code&gt;/api/mcp&lt;/code&gt; we covered in the &lt;a href="https://no7software.co.uk/blog/hydrogen-storefront-mcp-ucp-migration-2026" rel="noopener noreferrer"&gt;Hydrogen MCP→UCP migration guide&lt;/a&gt;. The default closes with a Shopify-branded footer linking to &lt;code&gt;shopify.com/start&lt;/code&gt;; we will come back to that.&lt;/p&gt;

&lt;p&gt;The default &lt;code&gt;agents.md&lt;/code&gt; is the more interesting file — it reads like an operator's manual aimed squarely at AI agents. It declares the supported UCP versions (currently &lt;code&gt;2026-04-08&lt;/code&gt; stable and &lt;code&gt;2026-01-23&lt;/code&gt;), spells out the six-step agent flow (Discover → Search → Cart → Checkout → Fulfill → Complete), and includes hard rules every agent must respect: checkout requires explicit human approval, the MCP endpoint is per-IP rate-limited, and buyer context (country, currency) must be passed for correct pricing.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to leave the defaults alone
&lt;/h2&gt;

&lt;p&gt;The defaults are good for the median store. If you sell in one currency, on one domain, in one language, with a healthy &lt;code&gt;/pages/about&lt;/code&gt;, &lt;code&gt;/pages/contact&lt;/code&gt;, &lt;code&gt;/pages/faq&lt;/code&gt;, and &lt;code&gt;/pages/shipping&lt;/code&gt;, the auto-shipped &lt;code&gt;llms.txt&lt;/code&gt; and &lt;code&gt;agents.md&lt;/code&gt; point agents at the right places and represent your store accurately. Leave them alone. Override is configuration debt you do not need to take on.&lt;/p&gt;

&lt;p&gt;The defaults stop being good in three situations: multi-region or multi-language stores running Shopify Markets, high-AOV or regulated stores that need to declare agent constraints the default does not cover (age verification, prescription gating, B2B-only catalogues), and brands that do not want the Shopify-branded promotional footer appearing in their agent-facing files. Each of these wants a Liquid template override.&lt;/p&gt;

&lt;h2&gt;
  
  
  Override pattern: templates/llms.txt.liquid
&lt;/h2&gt;

&lt;p&gt;Shopify uses the same theme-asset pattern as &lt;code&gt;robots.txt.liquid&lt;/code&gt;. Drop a file at &lt;code&gt;templates/llms.txt.liquid&lt;/code&gt; and Shopify renders it in place of the default for every request to &lt;code&gt;/llms.txt&lt;/code&gt;. A minimal override that removes the Shopify-branded footer and adds your brand-specific guidance might look like:&lt;/p&gt;

&lt;p&gt;The file is plain Liquid with the same objects you use in a normal theme — &lt;code&gt;shop&lt;/code&gt;, &lt;code&gt;request&lt;/code&gt;, &lt;code&gt;localization&lt;/code&gt;, &lt;code&gt;collections&lt;/code&gt; — so you can interpolate live store data. A practical override starts from a copy of the rendered default, removes what does not apply, and adds the sections your category needs. For example, a regulated category (alcohol, supplements, age-restricted goods) should add a header line declaring the constraint so the agent does not try to complete a checkout it cannot legally close:&lt;/p&gt;

&lt;p&gt;The pattern works identically for &lt;code&gt;templates/agents.md.liquid&lt;/code&gt;. The longer agent operating manual is where most of the per-store nuance belongs — checkout-state preconditions for B2B-only catalogues, returns and exchange policies referenced as URLs the agent can fetch, fulfilment-method constraints for cold-chain or hazmat products, and any market-specific currency or shipping notes the default cannot infer from &lt;code&gt;shop.metafields&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Shopify Markets multi-region trap
&lt;/h2&gt;

&lt;p&gt;This is the single biggest gotcha for engineering teams running international storefronts in May 2026. The default &lt;code&gt;/llms.txt&lt;/code&gt; sits at the root of each domain — &lt;code&gt;example.com/llms.txt&lt;/code&gt;, &lt;code&gt;example.de/llms.txt&lt;/code&gt;, &lt;code&gt;example.fr/llms.txt&lt;/code&gt; — but it does not currently translate the link metadata, currency, or language attribution across markets. An agent landing on the wrong domain reads the canonical catalogue at the wrong locale and pulls a price the buyer would not actually see at checkout.&lt;/p&gt;

&lt;p&gt;In practice we see two symptom classes. First, an agent fetches &lt;code&gt;/llms.txt&lt;/code&gt; on a country domain and follows the &lt;code&gt;collections/all&lt;/code&gt; link, but the products it surfaces are described in the store's default language rather than the locale the user is shopping in. Second, currency-divergent storefronts (a GBP UK domain and a USD US domain on the same Markets setup) show consistent &lt;code&gt;llms.txt&lt;/code&gt; currency metadata while the actual cart pricing applies a market-specific override at checkout — the agent's quote and the buyer's checkout disagree by 8-12% depending on the currency pair and shipping origin.&lt;/p&gt;

&lt;p&gt;The fix until Shopify ships native Markets-aware &lt;code&gt;llms.txt&lt;/code&gt; is to override the template per market. In &lt;code&gt;templates/llms.txt.liquid&lt;/code&gt; branch on &lt;code&gt;localization.country.iso_code&lt;/code&gt; and &lt;code&gt;shop.currency&lt;/code&gt;, emit the canonical URLs that route through Shopify Markets' per-market routing, and explicitly tag the currency in the Store Information block. The same logic applies to &lt;code&gt;templates/agents.md.liquid&lt;/code&gt; for the agent operating manual itself, where you also want to advertise which UCP versions and capabilities your specific market negotiates — they can drift from the platform default for storefronts running custom checkout extensions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What /.well-known/ucp actually declares
&lt;/h2&gt;

&lt;p&gt;The UCP discovery endpoint at &lt;code&gt;/.well-known/ucp&lt;/code&gt; is the JSON manifest an agent reads first. It is generated by Shopify from your store configuration — there is no Liquid template override for this file, and you should not want one. Hand-editing it would invite drift between what your store actually supports and what your discovery document claims, which is exactly the failure mode the protocol exists to prevent.&lt;/p&gt;

&lt;p&gt;What you get is a JSON document declaring the negotiated UCP version (&lt;code&gt;2026-04-08&lt;/code&gt; at the time of writing, with &lt;code&gt;2026-01-23&lt;/code&gt; still supported for fallback), the transports the store accepts (&lt;code&gt;mcp&lt;/code&gt; over HTTP and &lt;code&gt;embedded&lt;/code&gt; for in-conversation surfaces), the services advertised — &lt;code&gt;dev.ucp.shopping&lt;/code&gt; currently — and the capabilities each service exposes. For a default Shopify storefront in May 2026 the capabilities array includes &lt;code&gt;checkout&lt;/code&gt;, &lt;code&gt;fulfillment&lt;/code&gt; (extending checkout and cart), and &lt;code&gt;discount&lt;/code&gt; (also extending checkout). Each capability declares its protocol minimum and its config — for example, &lt;code&gt;allows_multi_destination.shipping: false&lt;/code&gt; on default Shopify, which is one of the constraints an agent must respect when building a cart for a buyer.&lt;/p&gt;

&lt;p&gt;If your store needs to advertise a different capability set — a custom subscription handler, a non-default fulfilment provider, a payment method outside Shopify Payments — the path is Shopify Functions and app extensions, not a Liquid override. The discovery JSON regenerates from your active app graph.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wire the readiness scanner into CI
&lt;/h2&gt;

&lt;p&gt;Shopify also shipped a public agentic-readiness scanner at &lt;code&gt;commerce-readiness.shopify.io&lt;/code&gt;. It runs 31 checks across five categories — Agent Discovery, Product Intelligence, Transaction Readiness, Store Quality, and Operational Readiness — and the failures it surfaces are deterministic enough to wire into CI rather than treating as a one-off audit.&lt;/p&gt;

&lt;p&gt;What it actually probes is unromantic. Does &lt;code&gt;/llms.txt&lt;/code&gt;, &lt;code&gt;/agents.md&lt;/code&gt;, and &lt;code&gt;/.well-known/ucp&lt;/code&gt; return 200. Does &lt;code&gt;/products/{'{'}handle{'}'}.json&lt;/code&gt; resolve for every product in the catalogue. Are sitemaps reachable, including locale variants. Do &lt;code&gt;/pages/about&lt;/code&gt;, &lt;code&gt;/pages/contact&lt;/code&gt;, &lt;code&gt;/pages/faq&lt;/code&gt;, &lt;code&gt;/pages/shipping&lt;/code&gt; contain real HTML rather than redirects, modal overlays, or Notion embeds. If you have been doing product-data hygiene already, the score is high; if you haven't, this is the first time anyone is putting a number on it.&lt;/p&gt;

&lt;p&gt;For an engineering team the value is not running the scanner once and screenshotting the score. The value is running it on every theme deploy, parsing the per-category JSON output, and failing the pipeline if any of the four Agent Discovery checks regress. We typically wire this in as a post-deploy job in GitHub Actions or the Shopify CLI deploy script — request the scan, poll for completion, fail loudly if any category drops below threshold. The scanner does not require auth and is rate-limited at a level that comfortably handles a deploy-time call per store.&lt;/p&gt;

&lt;h2&gt;
  
  
  Decision matrix: what to override, what to leave alone
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Override decisions for the four endpoints
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Situation&lt;/th&gt;
&lt;th&gt;llms.txt&lt;/th&gt;
&lt;th&gt;agents.md&lt;/th&gt;
&lt;th&gt;.well-known/ucp&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Single-region, single-currency, single-language store&lt;/td&gt;
&lt;td&gt;Leave default&lt;/td&gt;
&lt;td&gt;Leave default&lt;/td&gt;
&lt;td&gt;Read-only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shopify Markets multi-region&lt;/td&gt;
&lt;td&gt;Override&lt;/td&gt;
&lt;td&gt;Override&lt;/td&gt;
&lt;td&gt;Read-only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Age-restricted / regulated category&lt;/td&gt;
&lt;td&gt;Override (declare gate)&lt;/td&gt;
&lt;td&gt;Override (declare rules)&lt;/td&gt;
&lt;td&gt;Read-only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B2B-only catalogue&lt;/td&gt;
&lt;td&gt;Override (auth note)&lt;/td&gt;
&lt;td&gt;Override (declare rules)&lt;/td&gt;
&lt;td&gt;Read-only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Premium brand wants no Shopify footer&lt;/td&gt;
&lt;td&gt;Override (trim footer)&lt;/td&gt;
&lt;td&gt;Leave default&lt;/td&gt;
&lt;td&gt;Read-only&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  How this connects to the wider AI visibility audit
&lt;/h2&gt;

&lt;p&gt;The agentic endpoints are the new floor. Every Shopify store has them now, so they are no longer a differentiator on their own. The differentiation lives in the layer above — the technical signals AI search engines (ChatGPT Search, Perplexity, Claude Web, Google AI Overviews) use to decide whether your domain is citation-worthy at all, separate from whether an agent can transact on your store. Speakable spec on long-form content, AI crawler allow-list in robots.txt, structured-data depth on every page, llms-full.txt corpus quality, and entity authority via &lt;code&gt;sameAs&lt;/code&gt; links to Crunchbase, LinkedIn, GitHub are the signals that move citation share. Our free &lt;a href="https://no7software.co.uk/tools/ai-visibility-audit" rel="noopener noreferrer"&gt;AI visibility tool&lt;/a&gt; scores all eight of those signals on any domain in 5-10 seconds and emails a remediation plan — it is broader than the Shopify-specific scanner, and we recommend running both: &lt;code&gt;commerce-readiness.shopify.io&lt;/code&gt; for the agentic-transaction floor, the visibility audit for the discovery-and-citation ceiling.&lt;/p&gt;

&lt;p&gt;If you want help shipping the overrides — multi-region &lt;code&gt;llms.txt&lt;/code&gt; work, custom &lt;code&gt;agents.md&lt;/code&gt; rules for regulated categories, CI-wired readiness scans on every theme deploy — that is fixed-scope engineering work we quote on. The faster path is to &lt;a href="https://no7software.co.uk/contact" rel="noopener noreferrer"&gt;talk to engineering&lt;/a&gt; with the store URL and the override scope, and we will come back with a quote inside one working day.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>llm</category>
      <category>saas</category>
    </item>
    <item>
      <title>Shopify AI Toolkit in Production: 19 Skills and Safe Execution (2026)</title>
      <dc:creator>no7software</dc:creator>
      <pubDate>Wed, 13 May 2026 06:41:43 +0000</pubDate>
      <link>https://forem.com/no7software-uk/shopify-ai-toolkit-in-production-19-skills-and-safe-execution-2026-40h7</link>
      <guid>https://forem.com/no7software-uk/shopify-ai-toolkit-in-production-19-skills-and-safe-execution-2026-40h7</guid>
      <description>&lt;p&gt;The April 2026 release of the open-source Shopify AI Toolkit gives Claude Code 19 dedicated skills to manipulate Shopify environments directly, but running &lt;code&gt;shopify store execute&lt;/code&gt; with the &lt;code&gt;--allow-mutations&lt;/code&gt; flag introduces severe live-store risks. For agency teams, adopting this Apache 2.0 toolkit requires strict multi-store credential scoping, domain pinning, and a Git-backed rollback strategy before it touches production.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 19-skill architecture and forced validation loop
&lt;/h2&gt;

&lt;p&gt;The repository at &lt;code&gt;github.com/Shopify/shopify-ai-toolkit&lt;/code&gt; fundamentally changes how autonomous agents interact with Shopify codebases. Instead of relying on an LLM's static training data—which often hallucinates deprecated REST endpoints or obsolete Storefront API structures—the toolkit exposes 19 discrete skills to Claude Code. These cover the entire stack: &lt;code&gt;shopify-admin&lt;/code&gt; for Admin GraphQL design, &lt;code&gt;shopify-liquid&lt;/code&gt; for theme architecture, &lt;code&gt;shopify-hydrogen&lt;/code&gt; for headless builds, and &lt;code&gt;shopify-functions&lt;/code&gt; for backend extensibility.&lt;/p&gt;

&lt;p&gt;The critical engineering pattern here is the forced validation loop. Every skill directory ships with two executable scripts: &lt;code&gt;scripts/search_docs.mjs&lt;/code&gt; and &lt;code&gt;scripts/validate.mjs&lt;/code&gt;. The system prompt defining each skill strictly mandates that Claude Code must execute these scripts to verify syntax and schema compatibility before returning a response to the developer.&lt;/p&gt;

&lt;p&gt;In our experience, this validation step reduces API hallucination rates to near zero. However, it shifts the engineering bottleneck. You are no longer debugging bad code generation; you are managing the risk of an agent successfully executing highly destructive, perfectly formatted commands against your store infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  The danger of use-shopify-cli and the mutation gate
&lt;/h2&gt;

&lt;p&gt;The most volatile component of the toolkit is the &lt;code&gt;use-shopify-cli&lt;/code&gt; skill. This acts as the primary execution engine. When Claude Code determines it needs to read store state or apply a structural change, it uses this skill to invoke &lt;code&gt;shopify store execute&lt;/code&gt; under the hood.&lt;/p&gt;

&lt;p&gt;By default, the CLI restricts these agent-driven commands to read-only queries. This is safe for auditing catalogue data, verifying webhook subscriptions, or pulling metafield definitions. The danger arises when the &lt;code&gt;--allow-mutations&lt;/code&gt; flag is appended. This flag acts as the gatekeeper, authorising the agent to fire state-changing Admin GraphQL mutations directly at the connected store.&lt;/p&gt;

&lt;p&gt;There is no draft mode in the Admin API, and there is no undo button for a bulk execution. If Claude Code hallucinates the business logic—perhaps misunderstanding a prompt and deleting all product variants instead of updating their pricing tier—the data is instantly gone. We typically see teams leave this flag enabled during local testing out of convenience, which inevitably leads to accidental production data loss when the CLI context is misconfigured or points to the wrong environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to scope multi-store credentials for safe execution
&lt;/h2&gt;

&lt;p&gt;To use the &lt;code&gt;use-shopify-cli&lt;/code&gt; skill safely, you must isolate the execution environment. Relying on developer discipline to verify the active CLI context before approving a Claude Code prompt is a failing strategy. Here is how to configure your environment to prevent catastrophic agent actions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pin the target store domain via environment variables.&lt;/strong&gt; Do not allow the CLI to infer the store from the current directory's configuration file. Explicitly export &lt;code&gt;SHOPIFY_SHOP=your-staging-store.myshopify.com&lt;/code&gt; in your shell profile before launching Claude Code to force the context to a safe environment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provision a restricted, task-specific access token.&lt;/strong&gt; Never authenticate the agent using your primary Partner account credentials. Generate a custom app token in the Shopify Admin with the absolute minimum scopes required (for example, strictly &lt;code&gt;write_products&lt;/code&gt; and nothing else) and feed this specific token to the CLI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enforce a pre-mutation Git-backed state export.&lt;/strong&gt; Before you append the &lt;code&gt;--allow-mutations&lt;/code&gt; flag to any agent prompt, run a read-only query to dump the target objects into a local JSON file. Commit this file to Git. If the agent corrupts the data, you have a structured payload ready for a restoration script.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit the validation script outputs manually.&lt;/strong&gt; Intercept the output of &lt;code&gt;scripts/validate.mjs&lt;/code&gt;. Review the exact GraphQL payload the agent intends to send in your terminal before you authorise the final execution step.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Decision Matrix: AI Toolkit vs Custom MCP Server
&lt;/h3&gt;

&lt;p&gt;When deciding how to connect LLMs to your Shopify infrastructure, compare the built-in AI Toolkit against custom implementations.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Shopify AI Toolkit (19 Skills):&lt;/strong&gt; Best for general app development, theme building, and standard Admin API tasks. It requires zero infrastructure setup but limits you to Shopify's official documentation and CLI capabilities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hand-built MCP Server:&lt;/strong&gt; Best when you need to expose proprietary agency logic, external PIM data, or custom ERP endpoints to the agent. Building this typically costs £15,000-£30,000 in agency time, but provides absolute control over the execution context and authentication scoping.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Raw Admin API via Scripts:&lt;/strong&gt; Best for deterministic, high-volume data migrations where agent autonomy is a liability, not an asset. Do not use LLMs for bulk data insertion.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are leaning towards the custom route to integrate external systems or proprietary logic, read our &lt;a href="https://no7software.co.uk/blog/shopify-mcp-server-implementation-guide" rel="noopener noreferrer"&gt;Shopify MCP Server implementation guide&lt;/a&gt; to understand the authentication requirements and latency targets required for production deployment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Compiling WebAssembly via the shopify-functions skill
&lt;/h2&gt;

&lt;p&gt;The toolkit also addresses backend extensibility through the &lt;code&gt;shopify-functions&lt;/code&gt; skill. Shopify Functions cap each invocation at roughly &lt;a href="https://shopify.dev/docs/api/functions" rel="noopener noreferrer"&gt;11 million WebAssembly instructions&lt;/a&gt;, making code efficiency critical. When Claude Code writes a custom discount or delivery configuration in Rust, the validation script ensures the code compiles to a valid &lt;code&gt;.wasm&lt;/code&gt; binary before attempting deployment.&lt;/p&gt;

&lt;p&gt;This prevents the agent from deploying syntactically correct Rust that fails Shopify’s strict memory and instruction limits during the build phase. However, the agent cannot inherently profile the WebAssembly execution cost. You must still pull the compiled function and run it through the CLI's replay tool to verify it executes within the allowed instruction bounds. Relying solely on the toolkit’s validation loop for performance metrics will result in production timeouts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Handling Polaris variants and UI extensions
&lt;/h2&gt;

&lt;p&gt;The toolkit is not limited to backend logic. It includes specific skill variants tailored for frontend surfaces, particularly Polaris. There are distinct skills for admin, app-home, checkout, and customer-account extensions.&lt;/p&gt;

&lt;p&gt;This granularity is crucial. A checkout UI extension has entirely different component constraints and network access rules compared to an admin block. By routing Claude Code through the specific &lt;code&gt;shopify-pos-ui&lt;/code&gt; or checkout skill, the agent is forced to validate its code against the correct subset of the Polaris library.&lt;/p&gt;

&lt;p&gt;The recent update to the Shopify.dev MCP server, which now explicitly supports Polaris web components, directly complements these toolkit skills. The agent can pull the latest component specifications dynamically, ensuring that the React code it generates relies on current, non-deprecated props rather than hallucinated legacy components.&lt;/p&gt;

&lt;h2&gt;
  
  
  Integrating with the Storefront and UCP ecosystem
&lt;/h2&gt;

&lt;p&gt;Beyond the Admin environment, the toolkit includes &lt;code&gt;shopify-storefront-graphql&lt;/code&gt; and &lt;code&gt;shopify-hydrogen&lt;/code&gt; skills. These are designed to navigate the complexities of headless commerce, where query optimisation directly impacts user experience metrics.&lt;/p&gt;

&lt;p&gt;We typically target an INP (Interaction to Next Paint) under 200ms for category pages. When Claude Code generates Storefront API queries, the &lt;code&gt;scripts/validate.mjs&lt;/code&gt; loop ensures the query adheres to pagination best practices and does not request overly nested, expensive fields that would degrade edge-cached performance.&lt;/p&gt;

&lt;p&gt;Furthermore, these skills integrate cleanly with the wider Model Context Protocol ecosystem. With the Storefront Catalog MCP now implementing the Universal Commerce Protocol (UCP), the agent can reason about product taxonomy across different platforms. For teams scaling these architectures, managing context windows becomes the primary challenge, as detailed in our analysis of &lt;a href="https://no7software.co.uk/blog/shopify-storefront-mcp-scaling-patterns" rel="noopener noreferrer"&gt;Shopify Storefront MCP scaling patterns&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to do next
&lt;/h2&gt;

&lt;p&gt;Adopting the Shopify AI Toolkit changes how your engineering team interacts with the platform, but it requires immediate governance. Do not simply install the toolkit and grant Claude Code unrestricted access to your CLI.&lt;/p&gt;

&lt;p&gt;First, pull the repository from &lt;code&gt;github.com/Shopify/shopify-ai-toolkit&lt;/code&gt; and inspect the &lt;code&gt;scripts/validate.mjs&lt;/code&gt; logic for the skills your team uses most frequently. Understand exactly what the script checks and what it ignores. Second, audit your local environment variables. Ensure that multi-store credentials are strictly isolated and that developers cannot accidentally execute a mutation against a production store. Finally, run a dry-run exercise. Prompt Claude Code to perform a complex catalogue update without the &lt;code&gt;--allow-mutations&lt;/code&gt; flag, and manually verify the generated GraphQL payload before considering it safe for live execution.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>opensource</category>
      <category>security</category>
    </item>
    <item>
      <title>Catalyst vs Hydrogen: Engineering Decision Guide (2026)</title>
      <dc:creator>no7software</dc:creator>
      <pubDate>Tue, 12 May 2026 06:41:01 +0000</pubDate>
      <link>https://forem.com/no7software-uk/catalyst-vs-hydrogen-engineering-decision-guide-2026-1fff</link>
      <guid>https://forem.com/no7software-uk/catalyst-vs-hydrogen-engineering-decision-guide-2026-1fff</guid>
      <description>&lt;p&gt;The debate surrounding headless ecommerce has shifted from 'whether' to 'how'. In 2026, the primary point of friction for engineering teams is no longer the underlying API, but the reference architecture used to orchestrate it. For teams operating at scale, the choice usually narrows down to BigCommerce Catalyst and Shopify Hydrogen. Both frameworks have matured significantly, moving away from simple starter kits toward opinionated, enterprise-ready architectures.&lt;/p&gt;

&lt;p&gt;We have found that the decision often hinges on your team's existing proficiency with specific React meta-frameworks and your requirement for complex data modelling. While Hydrogen is deeply integrated into the Shopify ecosystem via Remix, Catalyst represents BigCommerce's bet on the Next.js ecosystem. In our experience, neither is a default winner; the superior choice depends on how you intend to handle state, caching, and multi-storefront logic.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Framework Foundations: Remix vs Next.js
&lt;/h2&gt;

&lt;p&gt;Hydrogen is built on Remix. This architectural choice dictates a specific approach to data loading and mutations. Remix's focus on web standards and server-side execution means that Hydrogen applications typically see excellent performance in high-concurrency environments, such as flash sales. We have found that the &lt;code&gt;loader&lt;/code&gt; and &lt;code&gt;action&lt;/code&gt; patterns in Remix simplify the mental model for developers who prefer a clear separation between server-side data fetching and client-side rendering.&lt;/p&gt;

&lt;p&gt;Catalyst, conversely, is built on the Next.js App Router. It leverages React Server Components (RSC) to minimize the JavaScript bundle sent to the browser. For teams already embedded in the Vercel ecosystem, Catalyst feels familiar. The use of &lt;code&gt;Suspense&lt;/code&gt; boundaries and incremental static regeneration (ISR) allows for a highly granular caching strategy. In our experience, Catalyst often provides a faster path to a high Lighthouse score for content-heavy sites, whereas Hydrogen excels in dynamic, checkout-heavy workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Developer Experience and the Rise of MCP
&lt;/h2&gt;

&lt;p&gt;A significant trend we are observing is the integration of Model Context Protocol (MCP) servers into the development workflow. Shopify has recently introduced support for the Shopify.dev MCP server, which allows AI-assisted development tools to deeply understand the storefront schema and Polaris web components. We have found that this significantly reduces the time spent looking up GraphQL fragments or component props.&lt;/p&gt;

&lt;p&gt;While BigCommerce Catalyst does not yet have an equivalent first-party MCP server, its reliance on standard Next.js patterns means it benefits from general-purpose AI coding assistants. However, for teams that value a tightly coupled development environment, Shopify's recent updates to the Dev Assistant and the inclusion of Shopify Functions support within these tools provide a more cohesive experience. If your team is looking to automate repetitive boilerplate, the &lt;a href="https://no7software.co.uk/blog/shopify-mcp-server-implementation-guide" rel="noopener noreferrer"&gt;Shopify MCP implementation&lt;/a&gt; currently offers a more specialised toolset for ecommerce-specific tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Modelling and Metaobject Access
&lt;/h2&gt;

&lt;p&gt;Historically, BigCommerce was the preferred choice for complex data requirements due to its flexible custom fields and native multi-storefront capabilities. However, Shopify has closed this gap with Metaobjects. Recent updates now allow for Metaobject access directly within Shopify Functions, enabling logic that was previously difficult to implement without a third-party middleware.&lt;/p&gt;

&lt;p&gt;In Catalyst, data fetching is managed through a GraphQL client that is highly optimized for the BigCommerce Storefront API. We typically see teams using Catalyst when they need to aggregate data from multiple sources—such as an external PIM or a legacy ERP—directly within the Next.js layer. Because Catalyst is unopinionated about where it is hosted, you have more freedom to architect your middleware. Hydrogen is more opinionated, nudging developers toward Oxygen, Shopify's global hosting platform. While Oxygen is highly performant, it does impose certain constraints on the runtime environment that we have found some enterprise teams find restrictive.&lt;/p&gt;

&lt;h3&gt;
  
  
  Decision Framework: Catalyst vs Hydrogen
&lt;/h3&gt;

&lt;p&gt;Use this checklist to determine which framework aligns with your current technical requirements.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;Hydrogen (Shopify)&lt;/th&gt;
&lt;th&gt;Catalyst (BigCommerce)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Primary Framework&lt;/td&gt;
&lt;td&gt;Remix (React)&lt;/td&gt;
&lt;td&gt;Next.js App Router&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hosting Preference&lt;/td&gt;
&lt;td&gt;Oxygen (Optimised)&lt;/td&gt;
&lt;td&gt;Vercel / Netlify / AWS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multi-Storefront&lt;/td&gt;
&lt;td&gt;Via Shopify Markets&lt;/td&gt;
&lt;td&gt;Native Multi-Storefront&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI Tooling&lt;/td&gt;
&lt;td&gt;First-party MCP Support&lt;/td&gt;
&lt;td&gt;Standard Next.js Patterns&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B2B Complexity&lt;/td&gt;
&lt;td&gt;Strong via B2B APIs&lt;/td&gt;
&lt;td&gt;Deep native B2B features&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Performance and Caching Strategies
&lt;/h2&gt;

&lt;p&gt;Performance in a headless environment is largely a function of how you manage sub-requests. Hydrogen uses a sub-request caching mechanism that is built into the Remix fetch wrapper. This allows you to cache individual GraphQL queries at the edge. We have found that this is particularly effective for reducing the load on the Shopify API during peak traffic periods.&lt;/p&gt;

&lt;p&gt;Catalyst leverages Next.js's native fetch cache and tag-based revalidation. This allows for more granular control over when specific parts of a page are updated. For example, you can revalidate product descriptions less frequently than inventory levels. In our experience, Catalyst's caching model is slightly more intuitive for teams that have previously built high-performance SaaS applications, whereas Hydrogen's model requires a deeper understanding of the Remix request-response lifecycle. For a deeper dive into these patterns, see our guide on &lt;a href="https://no7software.co.uk/blog/headless-commerce-practical-guide-2026" rel="noopener noreferrer"&gt;headless commerce implementation&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Multi-Storefront and Internationalisation
&lt;/h2&gt;

&lt;p&gt;BigCommerce Catalyst has a distinct advantage for merchants who need to run completely different storefronts (different domains, different catalogues, different currencies) from a single backend. BigCommerce's native Multi-Storefront (MSF) architecture is deeply baked into Catalyst. We typically see this as a deciding factor for large European merchants who need to manage distinct regional entities with separate P&amp;amp;L requirements.&lt;/p&gt;

&lt;p&gt;Shopify Hydrogen handles internationalisation primarily through Shopify Markets. While this is highly effective for most merchants, it can sometimes feel like an abstraction layer on top of a single-store architecture. However, for teams that want a 'single source of truth' with minimal configuration, Hydrogen's tight integration with Markets makes it easier to deploy localized versions of a site quickly. We have found that Hydrogen is often the faster path to market for brands expanding from the US into the UK and EU, while Catalyst is better suited for complex, multi-brand conglomerates.&lt;/p&gt;

&lt;h2&gt;
  
  
  Extensibility: Functions and Middleware
&lt;/h2&gt;

&lt;p&gt;The ability to inject custom logic into the commerce engine is critical. Shopify Functions have become the standard for this on the Shopify side. With the recent addition of &lt;code&gt;functionHandle&lt;/code&gt; and enhanced discount support, the level of customisation available without a custom app is significant. We have found that Hydrogen developers can often offload complex logic to the Shopify backend, reducing the work the headless frontend needs to do.&lt;/p&gt;

&lt;p&gt;Catalyst relies more on the BigCommerce 'Open SaaS' philosophy. This means you are more likely to implement custom logic in a Next.js API route or a separate microservice. This provides more flexibility but increases the maintenance burden on your engineering team. If you require highly non-standard checkout logic, BigCommerce's checkout extensibility is often cited as being more flexible than Shopify's, though Shopify's &lt;a href="https://no7software.co.uk/blog/shopify-checkout-extensions-guide" rel="noopener noreferrer"&gt;checkout extensions&lt;/a&gt; have largely closed this gap for the majority of use cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to Do Next
&lt;/h2&gt;

&lt;p&gt;Choosing between Catalyst and Hydrogen should not be a matter of platform loyalty, but of architectural fit. We suggest taking the following steps to validate your choice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Audit your team's skills:&lt;/strong&gt; If your developers are Next.js experts, Catalyst will feel more natural. If they prefer the web-standards approach of Remix, Hydrogen is the better fit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Benchmark your data requirements:&lt;/strong&gt; Map out your product attributes. If you have thousands of custom fields or complex B2B price lists, test how each framework handles the GraphQL payload size.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prototype a core feature:&lt;/strong&gt; Don't just look at the demo stores. Build a custom product configurator or a complex filtering system in both frameworks to see where the friction lies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evaluate your hosting:&lt;/strong&gt; Decide if you want a managed environment like Oxygen or the flexibility of Vercel. This will often dictate which framework is more viable for your DevOps team.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are still undecided, we recommend starting with a technical discovery phase to map your specific requirements against the latest feature sets of both frameworks. In the rapidly evolving landscape of 2026, the 'best' framework is the one that your team can maintain and iterate on with the least resistance.&lt;/p&gt;

&lt;p&gt;Going deeper into headless: &lt;a href="https://no7software.co.uk/blog/shopify-hydrogen-2-production-ready" rel="noopener noreferrer"&gt;Hydrogen 2.0 production-readiness&lt;/a&gt;, &lt;a href="https://no7software.co.uk/blog/bigcommerce-multi-storefront-guide" rel="noopener noreferrer"&gt;multi-storefront on BigCommerce&lt;/a&gt;, &lt;a href="https://no7software.co.uk/blog/composable-commerce-explained" rel="noopener noreferrer"&gt;composable commerce reality check&lt;/a&gt;, and &lt;a href="https://no7software.co.uk/blog/shopify-store-performance-optimization" rel="noopener noreferrer"&gt;why most Shopify stores are slow&lt;/a&gt;. For platform-vs-platform reasoning, see our &lt;a href="https://no7software.co.uk/blog/bigcommerce-vs-shopify-decision-guide" rel="noopener noreferrer"&gt;BigCommerce vs Shopify decision guide&lt;/a&gt;. Frontend builders should also factor in &lt;a href="https://no7software.co.uk/blog/ecommerce-accessibility-eaa-compliance" rel="noopener noreferrer"&gt;European Accessibility Act compliance&lt;/a&gt; (now in force across both stacks) and the &lt;a href="https://no7software.co.uk/blog/advanced-search-filter-ecommerce" rel="noopener noreferrer"&gt;search and filtering layer that actually converts&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Newer related guide: &lt;a href="https://no7software.co.uk/blog/introducing-gpt-5-5-shopify-agentic-commerce" rel="noopener noreferrer"&gt;Introducing GPT-5.5: Engineering Agentic Commerce (2026)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Newer related guide: &lt;a href="https://no7software.co.uk/blog/what-is-shopify-plus-uk-engineering-guide" rel="noopener noreferrer"&gt;What is Shopify Plus: UK Engineering Decision Guide (2026)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Newer related guide: &lt;a href="https://no7software.co.uk/blog/bigcommerce-stencil-vs-catalyst-headless-2026" rel="noopener noreferrer"&gt;BigCommerce Web Development: Stencil vs Catalyst Costs (2026)&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>nextjs</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Shopify Flow and AI Agent Triggers: Architecture and Patterns</title>
      <dc:creator>no7software</dc:creator>
      <pubDate>Mon, 11 May 2026 18:26:14 +0000</pubDate>
      <link>https://forem.com/no7software-uk/shopify-flow-and-ai-agent-triggers-architecture-and-patterns-poh</link>
      <guid>https://forem.com/no7software-uk/shopify-flow-and-ai-agent-triggers-architecture-and-patterns-poh</guid>
      <description>&lt;p&gt;Shopify Flow has traditionally been viewed as a closed-loop automation tool for internal store operations, such as tagging high-value customers or sending inventory alerts. However, the recent introduction of the Model Context Protocol (MCP) and the expansion of the Shopify Dev Assistant have fundamentally changed the utility of Flow within the engineering stack. We are seeing a shift where Flow is no longer just a recipient of platform events, but a critical execution layer for AI agents.&lt;/p&gt;

&lt;p&gt;The challenge for technical teams is no longer just writing the automation logic, but designing the interface between unstructured AI intent and structured commerce execution. By leveraging &lt;code&gt;shopify flow ai agent triggers&lt;/code&gt;, developers can provide LLMs with a safe, governed environment to perform complex operations without granting direct, unmitigated access to the Admin API. This architecture reduces the risk of non-deterministic AI behaviour causing havoc in the production environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Architecture of Agentic Triggers
&lt;/h2&gt;

&lt;p&gt;In our experience, the most robust way to connect an AI agent to Shopify Flow is through the &lt;code&gt;flowTriggerReceive&lt;/code&gt; Admin GraphQL mutation. The agent's middleware calls the mutation with a custom trigger &lt;code&gt;handle&lt;/code&gt; and a JSON &lt;code&gt;payload&lt;/code&gt;, and Shopify Flow runs any workflow that begins with that trigger. The reverse direction is also supported: a Flow workflow can call back into your app through a custom action, and your handler verifies the request with &lt;code&gt;authenticate.flow()&lt;/code&gt; before deciding what to do. Either direction acts as a functional bridge, where the AI determines 'what' needs to happen and Flow determines 'how' it happens within the Shopify ecosystem.&lt;/p&gt;

&lt;p&gt;We have found that using Flow as a middleware layer provides several advantages over direct API calls from an agent. Firstly, it offers a visual audit trail that is accessible to non-technical stakeholders. Secondly, it allows for native integration with other Shopify apps without writing custom wrapper code for every integration point. When an agent triggers a Flow workflow, it can pass variables that the workflow then uses to look up metaobjects, update customer records, or adjust discount logic.&lt;/p&gt;

&lt;p&gt;The recent support for Metaobject access in Shopify Functions further enhances this. An agent can now query store configuration stored in Metaobjects and use that context to decide which Flow trigger to invoke. This creates a feedback loop where the store's data informs the agent's logic, and the agent's logic drives the store's automation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementing the Model Context Protocol (MCP)
&lt;/h2&gt;

&lt;p&gt;The Model Context Protocol is becoming the standard for how AI agents interact with external data sources. For Shopify merchants, implementing an MCP server allows an AI assistant to 'see' the store's schema and available actions. We typically see engineering teams building thin MCP wrappers around their existing Shopify infrastructure to expose specific Flow triggers as 'tools' that the agent can call.&lt;/p&gt;

&lt;p&gt;For a detailed breakdown of how these protocols interact, you may find our guide on &lt;a href="https://no7software.co.uk/blog/agentic-commerce-protocols-acp-mcp-ucp-explained" rel="noopener noreferrer"&gt;agentic commerce protocols&lt;/a&gt; useful. By exposing a Flow trigger as an MCP tool, you provide the agent with a typed interface. The agent knows it needs to provide a &lt;code&gt;customer_id&lt;/code&gt; and a &lt;code&gt;reason_code&lt;/code&gt;, and Flow handles the heavy lifting of the actual database mutation. This separation of concerns is vital for maintaining a stable codebase as your AI implementation grows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Leveraging Shopify Functions for Context
&lt;/h2&gt;

&lt;p&gt;While Flow handles the asynchronous automation, Shopify Functions provide the synchronous logic required for complex commerce rules. We have observed that the most effective agentic implementations use a combination of both. For instance, a Function might determine the eligibility of a discount based on real-time cart data, while a Flow trigger—invoked by an agent—handles the post-purchase loyalty adjustments.&lt;/p&gt;

&lt;p&gt;The introduction of &lt;code&gt;functionHandle&lt;/code&gt; and binary testing for Shopify Functions has made it easier to deploy these complex logic gates. When an AI agent triggers a workflow, that workflow can interact with the results of these Functions. This is particularly relevant for merchants using &lt;a href="https://no7software.co.uk/blog/shopify-functions-production" rel="noopener noreferrer"&gt;Shopify Functions in production&lt;/a&gt; to manage bespoke pricing or shipping rules. The agent acts as the orchestrator, calling the right triggers at the right time based on the customer's conversational context.&lt;/p&gt;

&lt;h3&gt;
  
  
  Decision Framework: Direct API vs. Flow Agent Triggers
&lt;/h3&gt;

&lt;p&gt;Use this framework to decide how your AI agent should interact with Shopify data.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;Direct Admin API Call&lt;/th&gt;
&lt;th&gt;Shopify Flow Trigger&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Latency&lt;/td&gt;
&lt;td&gt;Low (Synchronous)&lt;/td&gt;
&lt;td&gt;Medium (Asynchronous)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Complexity&lt;/td&gt;
&lt;td&gt;High (Requires custom code)&lt;/td&gt;
&lt;td&gt;Low (Low-code builder)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Observability&lt;/td&gt;
&lt;td&gt;Logs only&lt;/td&gt;
&lt;td&gt;Visual execution history&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security&lt;/td&gt;
&lt;td&gt;Full Scopes required&lt;/td&gt;
&lt;td&gt;Scoped to specific workflow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best For&lt;/td&gt;
&lt;td&gt;Real-time data retrieval&lt;/td&gt;
&lt;td&gt;Multi-step operations&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Security and Governance in Agentic Workflows
&lt;/h2&gt;

&lt;p&gt;One of the primary concerns we hear from CTOs is the risk of an LLM 'hallucinating' an API call and deleting product data or issuing thousands of unauthorised refunds. Using Flow as the execution layer provides a natural sandbox. An agent cannot perform any action that you have not explicitly defined within a Flow workflow.&lt;/p&gt;

&lt;p&gt;When setting up &lt;code&gt;shopify flow ai agent triggers&lt;/code&gt;, we recommend the following security practices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Payload Validation:&lt;/strong&gt; Use Flow's internal logic to validate that the data sent by the agent falls within expected ranges (e.g., a discount percentage cannot exceed 20%).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Request Verification:&lt;/strong&gt; External-to-Flow calls authenticate against your Admin GraphQL session, so guard the API token rather than building separate webhook HMAC checks. For the reverse direction (Flow calling a custom action your app exposes), use &lt;code&gt;authenticate.flow()&lt;/code&gt; — it handles signature verification for you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rate Limiting:&lt;/strong&gt; While Shopify manages Flow's scale, your own agentic middleware should implement rate limiting to prevent the LLM from triggering thousands of workflows in a loop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human-in-the-loop:&lt;/strong&gt; For high-stakes actions, such as bulk price changes, the Flow workflow should include a 'Wait' step or send an approval request to a Slack channel before proceeding.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more on maintaining a secure Shopify environment, see our guide on &lt;a href="https://no7software.co.uk/blog/ecommerce-security-headers-guide" rel="noopener noreferrer"&gt;ecommerce security headers&lt;/a&gt; and general platform hardening.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Role of Metaobjects as Agent Memory
&lt;/h2&gt;

&lt;p&gt;A significant bottleneck in agentic commerce is state management. AI agents are typically stateless, meaning they don't 'remember' previous interactions unless that context is passed in the prompt. Shopify Metaobjects can serve as a persistent memory store for your agents. By using Flow to write to Metaobjects, an agent can record customer preferences, previous troubleshooting steps, or bespoke configuration data.&lt;/p&gt;

&lt;p&gt;We have found that this approach is much more scalable than trying to manage state within the LLM's context window. Since Shopify recently added Metaobject access to Functions, these 'memories' can now influence the checkout experience in real-time. For example, an agent might trigger a Flow to update a 'Customer Style Profile' metaobject, which a Shopify Function then uses to reorder search results or apply specific upsell logic. This is a primary example of how &lt;a href="https://no7software.co.uk/blog/shopify-flow-advanced-automation" rel="noopener noreferrer"&gt;advanced automation in Shopify Flow&lt;/a&gt; is moving toward a more dynamic, personalised model.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to do next
&lt;/h2&gt;

&lt;p&gt;To begin integrating AI agents with your Shopify Flow environment, we suggest taking the following technical steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Audit your manual processes:&lt;/strong&gt; Identify workflows that currently require human intervention but follow a predictable logic. These are your primary candidates for agentic triggers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build a prototype MCP server:&lt;/strong&gt; Use the Shopify Storefront or Admin API to create a bridge that exposes one or two specific Flow custom triggers — invoked from your agent via the &lt;code&gt;flowTriggerReceive&lt;/code&gt; Admin GraphQL mutation — to your AI assistant.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Define your data contract:&lt;/strong&gt; Clearly document the JSON schema required for each Flow trigger. This ensures that your agent provides the correct parameters every time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implement observability:&lt;/strong&gt; Set up monitoring for your Flow execution logs to identify where the agent might be providing malformed data or triggering unnecessary workflows.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are exploring how to scale these patterns across multiple storefronts or complex enterprise environments, our team can provide an architectural review of your current automation strategy to ensure it is ready for the shift toward agentic commerce.&lt;/p&gt;

&lt;p&gt;Companion code: the reference action handler that verifies a Flow request via &lt;code&gt;authenticate.flow()&lt;/code&gt;, the Zod schema, and the decision matrix in plain Markdown live in our open-source engineering-notes repository at &lt;a href="https://github.com/no7software/engineering-notes/tree/main/shopify/flow-ai-agent-actions" rel="noopener noreferrer"&gt;github.com/no7software/engineering-notes&lt;/a&gt; (Apache 2.0).&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>automation</category>
      <category>mcp</category>
    </item>
  </channel>
</rss>
