Agent skill
shopify-metafields
Guide for working with Shopify Metafields. Covers definitions, storing custom data, accessing via Liquid, and GraphQL mutations.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/shopify-metafields
SKILL.md
Shopify Metafields
Metafields allow you to store additional data on Shopify resources (Products, Orders, Customers, Shops) that aren't included in the default schema (e.g., "washing instructions" for a product).
1. Concepts
- Namespace: Grouping folder (e.g.,
my_app,global). - Key: Specific field name (e.g.,
washing_instructions). - Type: Data type (e.g.,
single_line_text_field,number_integer,json). - Owner: The resource attaching the data (Product ID, Shop ID).
2. Metafield Definitions (Standard)
Always use Metafield Definitions (pinned metafields) when possible. This integrates them into the Admin UI and ensures standard processing.
- Create: Settings > Custom Data > [Resource] > Add definition.
- Access:
namespace.key
3. Accessing in Liquid
To display metafield data on the Storefront:
<!-- Accessing a product metafield -->
<p>Washing: {{ product.metafields.my_app.washing_instructions }}</p>
<!-- Accessing a file/image metafield -->
{% assign file = product.metafields.my_app.size_chart.value %}
<img src="{{ file | image_url: width: 500 }}" />
<!-- Checking existence -->
{% if product.metafields.my_app.instructions != blank %}
...
{% endif %}
4. Reading via API (GraphQL)
query {
product(id: "gid://shopify/Product/123") {
title
metafield(namespace: "my_app", key: "instructions") {
value
type
}
}
}
5. Writing via API (GraphQL)
To create or update a metafield, use metafieldsSet.
mutation metafieldsSet($metafields: [MetafieldsSetInput!]!) {
metafieldsSet(metafields: $metafields) {
metafields {
id
namespace
key
value
}
userErrors {
field
message
}
}
}
/* Variables */
{
"metafields": [
{
"ownerId": "gid://shopify/Product/123",
"namespace": "my_app",
"key": "instructions",
"type": "single_line_text_field",
"value": "Wash cold, tumble dry."
}
]
}
6. Private Metafields
If you want data to be hidden from other apps and the storefront, use Private Metafields. Note: These cannot be accessed via Liquid directly.
- Use
privateMetafieldqueries/mutations. - Requires explicit
read_private_metafields/write_private_metafieldsscope (rarely used now,app_datametafields are preferred for app-specific valid storage).
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?