Skip to content
DTCSKILLS

I Rebuilt a Shopify Product Page in One Session Without Opening the Admin

Jake Ballard·Updated
$ shopify store execute --store abc1de-2f.myshopify.com \
--allow-mutations \
--query 'mutation { productUpdate(product: {
id: "gid://shopify/Product/...",
seo: { title: "...", description: "..." }
}) { userErrors { message } } }'
✓ Operation succeeded.
{ "productUpdate": { "userErrors": [] } }

The command as you would write it today. In April the same mutation took input: where this shows product:.

I rebuilt an entire Shopify product page in one session in April 2026, days after the Shopify AI Toolkit shipped. No clicking around in the admin. No copy-pasting from Google Docs. Just prompts in Claude Code running against a real Shopify store we were building. Claude Code + Shopify is a workflow that did not exist before that release, and this is what it actually looks like in practice.

October 2026 update: Shopify has changed the toolkit since I ran this session: a new install command, more skills (folded into one consolidated skill in Shopify's own repository on September 25), a newer Node requirement, and a longer list of supported tools. The April version of this post also left out three things that were already true when I wrote it. Every command that writes to a store needs an --allow-mutations flag. The input: argument I used on productUpdate was already deprecated. And the toolkit reports usage back to Shopify. I rewrote the setup section from Shopify's current docs and have not re-run the session on the new install. The case study is left as I ran it in April, with a note wherever a command has changed. Both lists are right after the overview below.

Here's what changed on the page in that single session:

  • A null SEO title replaced with a keyword-targeted one
  • A meta description that was just a truncated product body rewritten from scratch
  • Zero product tags turned into ten relevant ones
  • A blank collection page filled with SEO copy and meta tags
  • A typo from an old brand name ("dayley") scrubbed out of the product description and four theme sections
  • Five FAQ pairs created as a JSON metafield with FAQPage schema markup rendered on the PDP
  • An extended description metafield wired into a new Liquid section
  • Enhanced Product schema added for AI shopping agent discovery

Final count: 6 API mutations. 8 theme file uploads. Zero Shopify admin clicks.

This was possible because of something Shopify shipped on April 9, 2026: the Shopify AI Toolkit. An official plugin that connects coding agents like Claude Code directly to your store. It validates GraphQL. It validates Liquid. It pushes changes to your storefront via the Admin API.

It's genuinely good. But it's also only half of what you need.

The toolkit handles the execution layer. It does not decide what to write, who to write it for, or which positioning angle actually converts. That strategic context has to come from somewhere, and the brands that figure out where will pull way ahead in the next 12 months.

This is the full playbook for what Shopify built, how to set it up, and the workflow pattern that turns it from a developer tool into a real marketing operating system.

Who this is for:

  • DTC brand operators on Shopify who have been doing everything manually in the admin
  • Agencies managing multiple Shopify stores who need to run bulk updates across clients
  • Technical marketers already using Claude Code for other workflows and ready to add store management

What Shopify's AI Toolkit Actually Is

The Shopify AI Toolkit is an official Shopify plugin, released on April 9, 2026, that connects AI coding agents (Claude Code, Codex, Cursor, VS Code, Antigravity CLI and others) directly to your Shopify store. It gives agents validated GraphQL access, Liquid template validation, and the ability to push changes to your store via the Admin API.

On April 9, 2026, Shopify released the AI Toolkit as an official plugin for coding agents. Shopify's docs now list Claude Code, Codex, Antigravity CLI, Cursor, and Visual Studio Code, plus plugin-only support for Hermes, OpenClaw, and Pi. (Gemini CLI was on the launch list and is not on the current one.)

At launch it bundled 16 specialized skills covering every major surface of the Shopify platform. On September 25, 2026, Shopify consolidated them into a single shopify skill, with a separate ucp skill beside it. The official Claude marketplace had not picked that release up when I checked on October 12: it pinned Shopify's September 18 build, which has 21 separate shopify- skills plus ucp. Shopify marks the individual skills as deprecated, but the launch lineup is still the clearest map of what the toolkit covers:

LAUNCH LINEUP · 16 SKILLS, NOW ONE
shopify-admin
Admin GraphQL API for reading and writing store data
shopify-admin-execution
Runs validated mutations against a specific store
shopify-liquid
Liquid templating with theme-check validation
shopify-custom-data
Metafields and metaobjects modeling
shopify-functions
Server-side Shopify Functions
shopify-hydrogen
Hydrogen headless storefronts
shopify-storefront-graphql
Storefront API for custom storefronts
shopify-customer
Customer Account API
shopify-polaris-admin-extensions
Admin UI extensions
shopify-polaris-app-home
App home pages
shopify-polaris-checkout-extensions
Checkout UI extensions
shopify-polaris-customer-account-extensions
Customer account UI extensions
shopify-pos-ui
Point of Sale UI extensions
shopify-payments-apps
Payments app integration
shopify-partner
Partner API
shopify-dev
Documentation search across all APIs

Three things actually matter about this release if you run a Shopify store:

1. Direct store access via the same auth flow as the Shopify CLI. This is not a third-party MCP server passing your credentials through someone else's infrastructure. The plugin uses Shopify's own auth. You install it, run shopify store auth, approve the permissions in your browser, and the agent can read your store through the Admin API. Writing takes one more thing, the --allow-mutations flag covered in Step 6.

2. Validated code before execution. Every GraphQL mutation is validated against Shopify's schemas before it runs. Every Liquid template is checked against theme-check rules. This is the thing that makes agent-driven store management workable. The agent is not guessing whether a mutation will work. It validates first, then executes. One caveat: the validation step comes from the skill's instructions to the agent, so keep approving mutations yourself until you trust the pattern.

3. Auto-updating documentation search. The agent can search Shopify's docs for any API reference without you pasting links. Shopify says the plugin updates automatically as new capabilities ship. Claude Code's docs give the mechanics: auto-update is on by default for the official marketplace and off for a marketplace you add by hand, which is how I installed it in April. My April install never moved off version 1.0.0. If yours looks stale, claude plugin update shopify-ai-toolkit@claude-plugins-official is the manual route.

What changed since April

Everything in these two lists comes from Shopify's own docs, changelog, and the toolkit's GitHub repository as they stood on October 12, 2026, compared with the April install that is still on my machine.

  • The install is one terminal command now. claude plugin install shopify-ai-toolkit@claude-plugins-official. The two in-chat commands I used in April are no longer in Shopify's docs.
  • Sixteen skills became one, in Shopify's repository. The September 25 release folded every shopify- skill into a single shopify skill. The official Claude marketplace had not caught up when I checked on October 12. It pinned Shopify's September 18 build (version 1.8.4), which carries 21 separate shopify- skills plus ucp, so that is what the install command gives you until the pin moves. My own April install was still sitting on version 1.0.0 with the sixteen launch skills, so an early install is worth replacing.
  • The CLI needs a newer Node. Shopify CLI now requires Node.js 22.12 or higher. The version I installed in April asked for 20.10. Since version 4.0 the CLI also upgrades itself.
  • collectionUpdate takes collection: now. The input: argument I used on it in April is marked deprecated in the current API reference.
  • The usage report now includes your prompt. The current repository README lists your most recent prompt, up to 2,000 characters, alongside the search query text and the code being validated.
  • UCP shipped. Shopify storefronts now advertise Universal Commerce Protocol support, and the toolkit has its own ucp skill.

What the April version of this post left out

Three things were already true in April. The CLI and plugin versions installed on my machine on April 10 show the first and third, and Shopify's 2026-04 API reference shows the second.

  • Mutations are off by default. shopify store execute only changes store data when you pass --allow-mutations, or when the SHOPIFY_FLAG_ALLOW_MUTATIONS environment variable is set. The April post showed its commands without the flag. Every command in this post that writes to the store needs it.
  • input was already deprecated on productUpdate. The current argument is product:. The case study below still shows input:, because that is what I ran.
  • The toolkit reports usage to Shopify. The April privacy notice described anonymized pass/fail results, but the April scripts already sent the search query text and the code being validated, and I did not mention any of it. To turn reporting off on a current install, the README recommends an opt-out file, which it calls the only method that reliably works everywhere: mkdir -p ~/.config/shopify-ai-toolkit && touch ~/.config/shopify-ai-toolkit/opt-out. An April install does not read that file. It only checks OPT_OUT_INSTRUMENTATION=true, which has to be set in the shell that starts Claude Code.

This is different from Shopify Magic

Shopify Magic is the content generation built into the Shopify admin. It can write product descriptions and draft basic copy. (Shopify's help center now files this under AI-powered tools, with Sidekick doing the writing.) It's useful for brands starting from zero.

The AI Toolkit is a developer tool. It does not generate marketing content. It executes whatever content you give it against your store, validates it, and pushes the changes.

These are two different layers of the same problem. Magic sits at the "write something" layer. The Toolkit sits at the "deploy it to the store" layer. The Claude Code + Shopify workflow fills the gap between them, but only if the agent has context to work from. Neither tool on its own solves the missing piece, which is deciding what to write in the first place based on your brand's actual positioning, your customer's real objections, and the competitive landscape you're operating in.

Why this matters now

The timing on this release is not a coincidence. Three trends are converging:

  1. AI shopping agents are real and growing fast. ChatGPT Shopping, Perplexity Shopping, Claude, and Gemini are all surfacing products directly in conversation. When someone asks "what's the best greens supplement," the brands with structured product data get recommended. The brands with weak metadata get skipped.

  2. The Universal Commerce Protocol has shipped. Shopify storefronts now advertise UCP support, which means agents can browse and buy from Shopify stores without ever touching a web browser. Your product page is becoming an API endpoint.

  3. GEO (Generative Engine Optimization) is the new SEO. The same structured data that helps AI agents understand your store also helps you get cited in AI search results. Product schema, structured Q&A, and metafield content are what those systems read.

The brands treating their PDP as a webpage will lose to brands treating their PDP as a data feed. The Shopify AI Toolkit is the first official tool that lets you manage that data feed with an agent.

How to Set Up the Shopify AI Toolkit (Full Playbook)

Here's the sequence to get from zero to pushing mutations against a real store, updated in October 2026 for Shopify's current commands. I'll flag the gotchas I hit in April so you don't hit them.

Prerequisites

  • Node.js 22.12 or higher. Check with node -v. The toolkit itself asks for Node 18, but the Shopify CLI you install in Step 2 requires 22.12.
  • Claude Code installed and working. Terminal, VS Code extension, or JetBrains plugin - all three work with the plugin.
  • Admin access to a Shopify store. You need to be the store owner or have staff permissions with the relevant scopes.

Step 1: Install the plugin

In your terminal, run:

claude plugin install shopify-ai-toolkit@claude-plugins-official

That is the whole install, per Shopify's docs. Restart Claude Code, or run /reload-plugins, so the plugin loads.

If you set this up in April, you used two commands inside Claude Code: /plugin marketplace add Shopify/shopify-ai-toolkit, then /plugin install shopify-plugin@shopify-ai-toolkit. Shopify's docs no longer list that path, and my install from it never updated itself (a marketplace you add by hand has auto-update off by default). Remove the old plugin first, so its sixteen skills do not load beside the new ones: claude plugin uninstall shopify-plugin@shopify-ai-toolkit, then claude plugin marketplace remove shopify-ai-toolkit. Then run the install command above.

Alternative: MCP-only install. If you want the documentation search and query validation without the full plugin, you can install just the MCP server:

claude mcp add --transport stdio shopify-dev-mcp -- npx -y @shopify/dev-mcp@latest

Restart Claude Code after that one. The MCP-only install gives you docs search and schema validation. For the workflows in this playbook, I use the full plugin.

Step 2: Install the Shopify CLI

Store commands run through the Shopify CLI, not through a direct API call. You need the CLI installed globally:

npm install -g @shopify/cli@latest

The shopify store auth and shopify store execute commands arrived in version 3.93.0. From version 4.0 the CLI upgrades itself, so a fresh install is already past that. Check your version:

shopify version

Step 3: Authenticate to your store

Here's the first gotcha. The plugin doesn't know which store you want to connect to. You have to tell it explicitly, and you have to use the permanent myshopify.com domain, not a vanity one.

Your store may have two myshopify.com domains:

  • The one you may have chosen at signup (e.g., yourbrand.myshopify.com)
  • The permanent one Shopify assigned (e.g., abc1de-2f.myshopify.com)

You can find the permanent one in Shopify Admin under Settings > Domains.

If you try to auth with the vanity domain, Shopify will fail over with an error telling you the permanent domain. I learned this the hard way:

shopify store auth --store yourbrand.myshopify.com --scopes read_products

Returned:

OAuth callback store does not match the requested store.
Shopify returned abc1de-2f.myshopify.com during authentication.
Re-run using the permanent store domain.

Re-running with the permanent domain worked:

shopify store auth --store abc1de-2f.myshopify.com --scopes read_products

A browser window opens with the Shopify app authorization screen. You approve it. Auth completes. The token is stored locally by the CLI.

Step 4: Start with minimal scopes

The scopes in your auth command determine what the agent can do. Start small. You can always re-authenticate with more scopes later.

Minimum for reading products:

--scopes read_products

For writing product data (descriptions, tags, metafields):

--scopes read_products,write_products

For everything in this playbook (products, inventory, themes):

--scopes read_products,write_products,read_inventory,read_themes,write_themes

One caveat on the theme scopes. Shopify's API reference says themeFilesUpsert, the mutation that writes theme files, needs write_themes and an exemption from Shopify. The scope alone may not be enough on your store. The theme section of the case study covers what I saw.

Each new scope opens a fresh browser auth window. It's annoying but it's the safe default.

Step 5: Verify the connection

Before doing anything destructive, run a simple read query to confirm the agent can actually talk to your store:

shopify store execute --store abc1de-2f.myshopify.com --query 'query { shop { name id myshopifyDomain } }'

You should see your shop name, shop ID, and domain returned. If this works, you're connected.

Step 6: Know the mutation switch

Reads work as soon as you are authenticated. Writes do not. Mutations are disabled by default, and the CLI will tell you to re-run with --allow-mutations if you intend to modify store data:

shopify store execute --store abc1de-2f.myshopify.com \
  --allow-mutations \
  --query 'mutation { ... }'

The flag is a guard against accidental writes, not a review step. An agent can add it to a command on its own. The review is yours. In its default permission mode, Claude Code asks before it runs a shell command, unless you have told it not to ask again for that command or you are running a mode that skips prompts. Do not pick "don't ask again" for shopify store execute, and tell the agent to show you the change and wait for a yes. Without the flag, shopify store execute refuses a mutation, with one exception: if SHOPIFY_FLAG_ALLOW_MUTATIONS is set in your environment, mutations are on with no flag on the command. Leave it unset. The hard lock is the scope: stay on read_products until you mean to write. Everything from here is prompting.

The Context Layer

This is the part most playbooks skip. Including Shopify's own documentation.

If you install the toolkit, auth to a store, and just start prompting the agent to "rewrite my product descriptions," you'll get generic output. The agent doesn't know your brand voice. It doesn't know your customer's top objections. It doesn't know which positioning angle actually converts in your category. It will pull from its training data and produce something that sounds like every other AI-generated product page on the internet.

Which is to say: like a slightly nicer Shopify Magic output.

The output quality is not determined by the model. It's determined by the context you give the model before it runs. This is the context layer thesis I've been writing about for eight months. The AI Toolkit doesn't change this rule. It just moves the bottleneck.

What context actually needs to exist

Four categories of context matter. If you want on-brand output from any AI tool, you need structured answers to each of these:

1. Brand voice. How you sound. Word choices. Tone. Sentence structure. What you never say. What you always say. A list of banned phrases and a list of phrases that only you use. Not "professional and friendly." Not "conversational yet authoritative." Actual sentence-level guidance with before/after examples.

2. Positioning angles. What makes you different from every other brand in your category. Not your mission statement. Your actual competitive wedge. Why a customer should pick you over three alternatives they're considering. The one-sentence version. The 30-second version. The 3-minute version.

3. Customer objections. The specific reasons people don't buy. Ranked by frequency. With the actual counter-arguments you've tested. Not "price concerns." Not "skepticism." Real objections in your customer's own words, pulled from reviews, support tickets, and sales calls.

4. Product facts. The hard data. Ingredients. Pricing. Guarantees. Shipping terms. Return policy. Certifications. Whatever the agent would otherwise hallucinate if you didn't give it the truth.

If any of these are missing, the agent fills in the gap with generic training data. That's how you end up with a product page that says "unlock your potential with our premium wellness solution" when your actual positioning is "we're the brand for people who hate supplements but know they need them."

Structured markdown beats ad-hoc prompting

The failure mode I see most often: people paste this context into a prompt window every time they run the agent. It works for the first three prompts. Then they forget to paste something. Then the context drifts. Then they wonder why the output quality dropped.

The fix is to structure this context in markdown files the agent reads automatically. Voice goes in voice.md. Positioning goes in positioning.md. Objections go in objections.md. Product facts go in products.md. The agent loads them at the start of every session. They are the source of truth.

This is what I've been calling the Brand Brain. It's a 49-file knowledge base that sits in your project directory and gets read before any skill runs. The skills pull from it. The agent respects it. The output comes out on-brand by default because the brand is in structured context, not in your prompt history.

The workflow pattern

With the Brand Brain in place and the Shopify AI Toolkit installed, every content-related task follows the same pattern:

THE WORKFLOW PATTERN
STEP 1
Brand Brain
Voice, positioning, objections, product facts
STEP 2
DTC Skill
Strategy + content generation
STEP 3
Shopify AI Toolkit
Validate + deploy via Admin API
RESULT
Live Store
On-brand output, no admin clicks

The Brand Brain holds the context. A DTC Skill (one of the 21 execution skills) uses that context to generate strategy and content for a specific task - a product page, an SEO audit, an email flow, an ad campaign. The Shopify AI Toolkit validates the output against Shopify's schemas and pushes it to the store.

No human clicking through the admin. No copy-pasting from a Google Doc. No "did the new copy get saved?" anxiety. Just a closed loop from context to store.

The case study that follows ran entirely inside this pattern.

The Case Study

I'm going to walk through a real session I ran against a pre-launch supplement brand I've been testing this workflow on. Call it "the brand." Every mutation, every file, every before/after is real. I'm keeping the brand name out of it because they haven't launched publicly yet.

Initial audit

The first thing I asked the toolkit to do was read the current state. One product in the catalog. One collection. A Dawn theme that had been customized for a different brand name before the current owner took over.

Within 60 seconds of reading the data, here's what surfaced:

  • Null SEO title. The product relied on Shopify's default fallback (product title + store name).
  • Weak meta description. It was just the first ~160 characters of the product body copy, truncated mid-sentence.
  • Zero product tags. Not one. No category, no benefit, no internal search signal.
  • Blank collection page. The "Home page" collection had no description and no SEO meta.
  • Old brand name baked into the product description. The body copy said "dayley fuels your body" instead of the actual brand name. A leftover from a previous version of the store.
  • Only default metafields. Shopify's own (age-group, dietary-preferences, detailed-ingredients). Nothing custom.
  • "Sample question?" placeholders in the theme FAQ section. The Dawn theme's default FAQ accordion had been installed but never filled in. Three copies of "Sample question? / Sample answer." on the PDP.

This is a pre-launch store. But this list of issues is the same list I see on 80% of stores doing $50k-$5M in revenue. Most stores never get audited at this granularity because nobody has the time to click through every metafield and every theme section manually.

The toolkit found it all in one query.

Round 1: Product data mutations

First pass: fix the product-level data via the Shopify Admin GraphQL API. Four mutations.

Two notes before you copy these. Each one runs through shopify store execute with --allow-mutations. And they are shown as I ran them in April, with the input: argument, which Shopify now marks as deprecated: new work should pass product: to productUpdate and collection: to collectionUpdate.

Mutation 1: SEO title and meta description.

mutation {
  productUpdate(input: {
    id: "gid://shopify/Product/0000000000000",
    seo: {
      title: "[Brand] Complete Nutrition Complex - Whole-Food Daily Super-Blend",
      description: "[Brand] is a whole-food super-blend with beef organs, colostrum, adaptogens, electrolytes, and probiotics. 30 servings per bag. Real nutrition, no pills, no fillers. $99."
    }
  }) {
    product { seo { title description } }
    userErrors { field message }
  }
}

The meta description is 160 characters, keyword-weighted, and includes the price. The SEO title is 64 characters, includes the brand name, the product name, and the primary benefit in one line.

Mutation 2: Product tags and description cleanup.

Ten tags pushed in one call, plus the "dayley" typo replaced with the actual brand name in the descriptionHtml. I'm not going to paste the full 4,000-character mutation, but the shape is:

mutation {
  productUpdate(input: {
    id: "gid://shopify/Product/0000000000000",
    tags: ["whole-food-nutrition", "beef-organs", "colostrum", "adaptogens", "electrolytes", "probiotics", "daily-nutrition", "superfood-blend", "gut-health", "recovery"],
    descriptionHtml: "..."
  }) {
    product { tags }
    userErrors { field message }
  }
}

Mutation 3: Collection description and SEO.

mutation {
  collectionUpdate(input: {
    id: "gid://shopify/Collection/000000000000",
    descriptionHtml: "<p>Whole-food nutrition built for people who train hard...</p>",
    seo: {
      title: "[Brand] - Whole-Food Nutrition for Performance and Recovery",
      description: "Whole-food super-blends with beef organs, colostrum, adaptogens, and probiotics. One scoop replaces handfuls of pills. No fillers, no junk."
    }
  }) {
    collection { descriptionHtml seo { title description } }
    userErrors { field message }
  }
}

Mutation 4: Custom metafields for FAQ and extended description.

This is the one that changes everything about how the PDP works. Two metafields:

  • custom.faq - JSON type, containing an array of 5 question/answer objects
  • custom.extended_description - multi-line text type, containing the long-form product narrative
mutation {
  productUpdate(input: {
    id: "gid://shopify/Product/0000000000000",
    metafields: [
      {
        namespace: "custom",
        key: "faq",
        type: "json",
        value: "[{\"question\":\"What does it taste like?\",\"answer\":\"...\"}, ...]"
      },
      {
        namespace: "custom",
        key: "extended_description",
        type: "multi_line_text_field",
        value: "..."
      }
    ]
  }) {
    product { metafields(first: 10) { edges { node { namespace key type } } } }
    userErrors { field message }
  }
}

After Round 1: all product-level data is fixed. But the FAQ metafield isn't rendering yet because the theme doesn't know how to read it.

Round 2: Theme files via the Admin API

This is where the toolkit goes from "useful" to "absurd."

I created two brand new Liquid sections and uploaded them directly to the theme via themeFilesUpsert. No Edit Code panel. No local theme sync. No Shopify CLI theme push. Just a GraphQL mutation that writes a file into the theme.

Check this before you copy it. Shopify's API reference says themeFilesUpsert requires write_themes and an exemption from Shopify to modify theme files. It worked for me on this pre-launch store in April, and I have not re-run it since. Test on a duplicate, unpublished theme before you count on it.

Section 1: sections/product-faq-metafield.liquid

This section reads from the custom.faq metafield, renders an accordion using Dawn's native component CSS, and includes inline FAQPage schema markup for SEO. Key snippet:

{%- assign faq_data = product.metafields.custom.faq.value -%}

{%- if faq_data != blank -%}
  <div class="page-width section-{{ section.id }}-padding">
    <div class="collapsible-content-wrapper-narrow">
      <h2>{{ section.settings.heading }}</h2>
      {%- for item in faq_data -%}
        <details>
          <summary>{{ item.question }}</summary>
          <div class="accordion__content rte">
            <p>{{ item.answer }}</p>
          </div>
        </details>
      {%- endfor -%}
    </div>
  </div>

  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {%- for item in faq_data -%}
      {
        "@type": "Question",
        "name": {{ item.question | json }},
        "acceptedAnswer": {
          "@type": "Answer",
          "text": {{ item.answer | json }}
        }
      }{%- unless forloop.last -%},{%- endunless -%}
      {%- endfor -%}
    ]
  }
  </script>
{%- endif -%}

This is the critical unlock. The FAQ content lives in the metafield, not in the theme. When I update the metafield via the Admin API, the PDP updates automatically. Shopify renders Liquid on every page request, so the FAQPage JSON-LD always carries the same data as the visible answers. One correction: this markup does not earn an expanded Google listing. Google had limited the FAQ rich result to well-known government and health sites since 2023, and retired it in May 2026. I keep the markup as structured Q&A.

Section 2: sections/product-extended-description.liquid

Simpler version of the same pattern. Reads from custom.extended_description, renders it in a styled content block.

Template wiring: templates/product.json

The last step is updating the product template to include the two new sections. One more mutation to themeFilesUpsert, this time writing the updated template JSON with the new section definitions and their position in the render order. The old placeholder FAQ accordion gets removed from the template at the same time.

After Round 2: the new sections are on the PDP, the metafield content is rendering, and FAQPage schema is in the page source.

Round 3: Brand consistency and enhanced schema

The last round was cleanup I noticed while reading the theme files. Four different theme sections still referenced the old brand name:

  • sections/dayley-benefits.liquid (section name, CSS classes, default heading copy)
  • sections/feature-comparison.liquid (column header, checkbox label)
  • Two references in templates/product.json settings

Fixed in one mutation by uploading the updated section files. Not complicated, but impossible to find by clicking through the Shopify admin. The agent found all four in seconds.

Last addition: an enhanced snippets/product-schema-enhanced.liquid that outputs rich Product structured data with Brand, Offer, category, and image. Dawn ships with basic Product schema, but the agent-optimized version adds the fields that AI shopping agents prioritize when deciding which products to surface.

The result

Final count for the session:

  • 6 API mutations (product updates, collection update, metafield writes, theme file writes)
  • 8 theme files created or updated
  • Zero Shopify admin clicks
  • Zero copy-pasting

The product page now has on-brand copy, keyword-targeted metadata, a working FAQ accordion, FAQPage and Product schema markup, and clean theme sections with no leftover typos. The same session would have taken about 3 hours of admin clicking and Google Doc copying to complete manually. It took under an hour with the toolkit, and most of that hour was me writing the content decisions, not implementing them.

Five Shopify AI Toolkit Workflows You Can Run Today

Here are five prompts you can paste into Claude Code right now, assuming you've completed setup. Each one is built on the same Brand Brain → Skill → Toolkit → Store pattern.

Workflow 1: Rewrite product descriptions for AI shopping

Why it matters: AI shopping agents (ChatGPT Shopping, Perplexity, Claude) surface products based on how well your descriptions answer natural language questions. Most Shopify product descriptions are written for keyword matching, not question answering.

Prompt:

Read all products in my Shopify store. For each product, rewrite the
description to answer the question a customer would ask an AI assistant
when looking for this type of product. Follow the voice and positioning
from my Brand Brain. Save the current descriptions to a file first so
I can restore them. Push the updates to the store via productUpdate
mutations after I approve each one.

What gets pushed: descriptionHtml field on each product via productUpdate.

Workflow 2: SEO metadata at scale

Why it matters: Most Shopify stores have 30-60% of products with missing or default SEO titles and meta descriptions. Fixing this manually is tedious. An agent can audit and fix every product in one pass.

Prompt:

Audit every product in my store for SEO title and meta description.
Flag any that are null, default fallbacks, or longer than the character
limits. Generate replacements using my Brand Brain voice. Save the
current values to a file, show me a diff of old vs new, and push via
productUpdate only after I approve.

What gets pushed: seo.title and seo.description on each product via productUpdate.

Workflow 3: Collection SEO mass update

Why it matters: Empty collection pages are the single biggest missed SEO opportunity on most DTC stores. Collections rank for category-level searches, which are higher intent than brand searches. A blank page leaks traffic. I've written a full breakdown of collection page SEO copy if you want to go deeper on the strategy.

Prompt:

List every collection in my store. For each one with a blank or
default description, generate:
1. A keyword-targeted collection description (200-400 words)
2. An SEO title under 60 characters
3. A meta description under 160 characters

Use my Brand Brain positioning and the Collection SEO Builder skill.
Save the current values to a file first. Push via collectionUpdate
after I approve.

What gets pushed: descriptionHtml, seo.title, seo.description on each collection via collectionUpdate.

Workflow 4: Metafield-driven FAQ sections

Why it matters: FAQ content is the fastest way to rank for long-tail product questions and to feed AI shopping agents. Hardcoding FAQ content in the theme means you can't update it at scale. Metafield-driven FAQs can be written for every product in one mutation.

Prompt:

For each product in my store:
1. Generate 5 FAQ pairs based on common objections from my Brand Brain
2. Write them as a JSON array
3. Push them to a custom.faq metafield via productUpdate
4. If the theme doesn't have a metafield-driven FAQ section yet,
   create one as a new Liquid section with FAQPage schema markup

Work on a duplicate, unpublished theme. Validate each Liquid file,
show me every change, and push nothing until after I approve.

What gets pushed: custom.faq metafield (JSON type) on each product, plus sections/product-faq-metafield.liquid to the theme via themeFilesUpsert. The theme upload depends on the Shopify exemption described in Step 4. If your store does not have it, have the agent save the section file and add it through the theme code editor yourself.

Workflow 5: Brand consistency audit and theme cleanup

Why it matters: Stores that go through rebrands, acquisitions, or naming changes leave ghost references to old brand names in the theme. Customers notice. AI agents notice. Clicking through 80+ theme files manually is not realistic.

Prompt:

Search every theme file for references to "[old brand name]".
Return a list of every file and every line that mentions it. Then
replace each reference with "[new brand name]" while preserving the
surrounding Liquid logic. Work on a duplicate, unpublished theme.
Validate each file after the replacement, show me the diff, and upload
via themeFilesUpsert after I approve.

What gets pushed: Updated section and snippet files via themeFilesUpsert, with the same exemption caveat as Workflow 4.

Where This Breaks Without Context

I want to show you exactly what happens if you skip the Brand Brain and just run the Shopify AI Toolkit against a store with no structured context.

I ran this experiment the same week. Same product. Same toolkit. No Brand Brain loaded. Just a generic "rewrite my product description for AI shopping agents" prompt.

Here's what the agent produced:

"Discover the ultimate daily nutrition solution with our premium whole-food super-blend. Crafted with care from the finest ingredients including grass-fed beef organs, colostrum, and organic superfoods, this comprehensive formula delivers everything your body needs to thrive. Whether you're an athlete, a busy professional, or someone looking to optimize your wellness journey, our product is designed to help you unlock your full potential. Experience the difference that premium nutrition can make today."

Reader exercise: which brand did that just describe?

Answer: every supplement brand that has ever existed. That copy could be shipped to 80% of the supplement stores on Shopify and you would not be able to tell the difference. It's the training data's average. It uses every banned phrase from the brand voice guide I wrote six months ago. "Ultimate." "Premium." "Comprehensive." "Wellness journey." "Unlock your full potential." None of it is specific to the brand, the customer, or the competitive angle.

Now here's the same product, rewritten through the context layer - voice, positioning, and objections loaded from markdown files:

"[Brand] is a whole-food super-blend built for people who hate taking handfuls of pills but know they need the nutrients. Beef organs, colostrum, electrolytes, adaptogens, and soil-based probiotics in one scoop. No fillers. No artificial sweeteners. 30 servings per bag. If you've already tried three other greens powders and gotten that synthetic aftertaste, this is the one built to actually taste like real food."

Two different outputs. Same model. Same toolkit. The difference is not the AI. The difference is the input.

The quality ceiling problem

Every brand that adopts the Shopify AI Toolkit without a context layer is going to produce output that looks like output #1. Faster than before. At higher volume than before. Across every PDP, every collection page, and every email in their store.

This is actually worse, not better, for those brands. They'll ship more generic content faster. They'll hallucinate brand details at scale. They'll rank for nothing. They'll get skipped by AI shopping agents. And they'll wonder why their traffic didn't improve after they "went all in on AI."

The brands that adopt the toolkit with a structured context layer will pull away in the opposite direction. Their descriptions will sound like their brand. Their FAQs will address their customers' actual objections. Their positioning will stay consistent across 200 products instead of drifting every time someone updates a description manually. Their structured data will be rich enough for AI shopping agents to surface them as recommendations.

Same tooling. Same models. Completely different outcomes based on what the agent had in its context window before it started writing.

What This Means for the Agent Era

Shopify built the last mile. The infrastructure for agent-driven storefronts is now shipping as an official product. Agents can read your store, write to your store, validate their own code, and push updates without touching the admin UI.

The rest of the stack is moving just as fast:

  • The Universal Commerce Protocol turns every Shopify store into an agent-compatible checkout
  • ChatGPT Shopping, Perplexity Shopping, Claude, and Gemini surface products directly in conversation
  • Product and Offer schema are becoming the inputs generative search reads
  • Metafields are turning into the primary interface for PDP data

A correction to the April version of this post: it showed a mock-up of a Google FAQ rich result for this markup. That was wrong when I published it. Google had limited FAQ rich results to well-known government and health sites since 2023, and stopped showing them at all on May 7, 2026. I removed the mock-up. The structured Q&A is still worth shipping for the systems that read it, but do not expect an expanded Google listing from it.

The brands that win the next 12 months are the ones that:

  1. Have their brand context structured and versioned, not trapped in Google Docs and Slack DMs
  2. Connect that context to execution tooling like the Shopify AI Toolkit, Klaviyo's MCP, and Polar Analytics via MCP
  3. Treat their PDP data as an API, not a webpage someone edits once a quarter

When I wrote this in April 2026, I put the window to establish this before it becomes table stakes at about 12 months. After that, the brands that built a structured context layer during 2026 will be compounding their output quality while everyone else is still pasting the same context into every prompt.

This is not a prediction about AI capability. It's a prediction about workflow design. The Claude Code + Shopify integration keeps improving. The model gets better for everyone. The context layer only gets better for the brands that build it.

Shopify AI Toolkit FAQ

What is the Shopify AI Toolkit?

The Shopify AI Toolkit is an official Shopify plugin, released on April 9, 2026, that connects AI coding agents like Claude Code, Codex, Cursor, VS Code, and Antigravity CLI directly to your Shopify store. It gives agents validated GraphQL access to the Admin API, Liquid template validation, and the ability to read from and write to your store without touching the Shopify admin UI.

How do I install the Shopify AI Toolkit for Claude Code?

Run claude plugin install shopify-ai-toolkit@claude-plugins-official in your terminal, then restart Claude Code or run /reload-plugins. Install the Shopify CLI globally with npm install -g @shopify/cli@latest (it needs Node.js 22.12 or higher). Authenticate to your store with shopify store auth --store [permanent-domain].myshopify.com --scopes read_products. The full setup takes about 15 minutes.

Is the Shopify AI Toolkit safe to use on a live store?

It can be, with precautions. My own run was on a pre-launch store, not one taking orders, so read this as a checklist and not a guarantee. The toolkit's skill tells the agent to validate GraphQL against Shopify's schemas and Liquid against theme-check rules before it runs anything. That is an instruction to the agent, not a lock. Mutations are off by default: the CLI only changes store data when a command carries --allow-mutations or the SHOPIFY_FLAG_ALLOW_MUTATIONS environment variable is set. That flag stops accidental writes. It is not a review, because the agent can add it. Start with minimal scopes (read_products) and expand only as needed. Approve each mutation before it runs until you trust the agent's pattern recognition. Shopify documents version history for theme code files, not for product descriptions, so save the old values before a bulk run, and test theme changes on a duplicate, unpublished theme.

What's the difference between the Shopify AI Toolkit and Shopify Magic?

Shopify Magic is the content generation built into the Shopify admin. It writes product descriptions and drafts basic marketing copy. The Shopify AI Toolkit is a developer tool for coding agents. It doesn't generate marketing content. It validates code and pushes changes to your store via the Admin API. Magic sits at the "write something" layer. The Toolkit sits at the "deploy it to the store" layer. They solve different problems.

Can I use the Shopify AI Toolkit without Claude Code?

Yes. Shopify lists Codex, Cursor, Visual Studio Code, and Antigravity CLI alongside Claude Code, with plugin-only support for Hermes, OpenClaw, and Pi. There's also an MCP-only install option (claude mcp add --transport stdio shopify-dev-mcp -- npx -y @shopify/dev-mcp@latest) that gives you documentation search and query validation without the full plugin. For the full workflow in this playbook, I use the complete plugin install.

Why won't my shopify store execute mutation run?

Mutations are disabled by default. Add --allow-mutations to the command. Without it, shopify store execute runs queries only and tells you to re-run with the flag if you intend to modify store data.

Does the Shopify AI Toolkit send data back to Shopify?

Yes, by default. The toolkit's README says its skill scripts send a usage event to shopify.dev on each call, including the search query text, the code being validated, and your most recent prompt, up to 2,000 characters. To opt out, the README recommends creating an opt-out file: mkdir -p ~/.config/shopify-ai-toolkit && touch ~/.config/shopify-ai-toolkit/opt-out. Setting OPT_OUT_INSTRUMENTATION=true also works, but only where the processes the agent starts inherit your shell environment. The opt-out file is read by current versions. An install from April only checks the environment variable.

What permissions does the Shopify AI Toolkit need?

It uses the standard Shopify CLI auth flow with the same OAuth scopes as any Shopify app. Start with read_products for read-only access. Add write_products to update product data, descriptions, tags, and metafields. Add read_themes,write_themes to read and modify theme files via the Admin API. Writing theme files has a second gate: Shopify's API reference says themeFilesUpsert also needs an exemption from Shopify. Add read_inventory,write_inventory for stock updates. Each additional scope requires re-authentication through a browser window. The principle is to start minimal and expand only when needed.

Shopify AI Toolkit Quick-Start Checklist

If you've read this far, here's the path from zero to running the five workflows above:

Setup (15-30 minutes):

  • Node.js 22.12 or higher installed (node -v)
  • Claude Code installed and working
  • Shopify store admin access verified
  • Plugin installed: claude plugin install shopify-ai-toolkit@claude-plugins-official
  • Claude Code restarted, or /reload-plugins run, after the install
  • Shopify CLI installed globally: npm install -g @shopify/cli@latest
  • CLI version checked: shopify version
  • Permanent myshopify.com domain identified (Settings > Domains)
  • Store authenticated with minimal scopes: shopify store auth --store [domain] --scopes read_products
  • Verification query run successfully: shopify store execute --store [domain] --query 'query { shop { name } }'
  • --allow-mutations added only to the commands you mean to change the store

Context layer (30 minutes if you already have your brand docs):

  • Brand voice documented in a voice.md file (or equivalent)
  • Positioning angles captured in positioning.md
  • Customer objections ranked in objections.md
  • Product facts (hard data) captured in products.md
  • Brand Brain loaded into Claude Code session via the file paths

First workflow run:

  • Read-only audit: ask the agent to list every product and collection with weak SEO
  • Save the current values to a file before any update
  • Approve one product for a description rewrite
  • Review the output against your brand voice before pushing
  • Push the update via the Admin API
  • Verify the change in the Shopify admin
  • Scale to the remaining products once you trust the pattern
  • Test theme changes on a duplicate, unpublished theme first

What to audit on your own store this week

You don't need to run anything complicated. Five questions to answer about your current store:

  1. How many products have null or default SEO titles?
  2. How many collection pages have blank descriptions?
  3. How many products have fewer than 5 tags?
  4. Does any theme file still reference an old brand name?
  5. Are any custom metafields defined and rendered in the theme, or are you hardcoding everything?

If the answer to any of those is "more than a handful," the Shopify AI Toolkit can fix it in one session. The agent can find every instance and propose the fixes. You just approve and push.

The context layer, ready to plug in

The full Brand Brain + DTC Stack runs this workflow at scale across 21 execution skills. Product page rewrites, collection SEO, email flows, ad creative, retention sequences, review mining, all feeding from the same structured context and pushing to your store via the Shopify AI Toolkit.

If you want the context layer built and ready to connect, The DTC Stack is the fastest path. One Brand Brain plus 21 execution skills, designed to work with exactly this pattern. The skills read from the Brain. The Brain gets pushed to the store.

Shopify built the last mile. The quality of what you push through it is still up to you.

JB
Jake Ballard

Builds AI marketing systems for DTC and Shopify brands doing $1M-$50M. Creator of The DTC Stack.

Free Brand Voice File

Make AI sound like your brand, not a bot.

Answer 7 questions, get a custom Brand Voice file you can paste into Claude, Cursor, or any AI tool for instantly better output. It's one piece of the 49-file Brand Brain - free.

Build My Brand Voice - Free

Just want the playbooks? The Operator's Brief - new skill drops and AI workflows for $1M-$50M Shopify brands. No fluff, no spam.

Build your Brand Brain. Ship on-brand content in minutes.

The DTC Stack is a Brand Brain + 21 AI execution skills for product pages, emails, ads, SEO, and more. One purchase, lifetime access. Works with Claude, Cursor, Copilot, and 30+ AI tools.

One-time purchase. Instant access. Lifetime updates.