Product Variant Level Metafields
1. Selling Plan IDs Metafield
Configuration
Key:
selling_plan_idsType:
jsonNamespace:
restockrocket_productionOwner: Product Variant
Purpose
Stores the list of selling plan IDs associated with a variant
Used to track which preorder plans are available for a variant
Enables quick lookup of available preorder options
Stored as a JSON array of selling plan IDs
Accessing in Liquid
{% assign selling_plan_ids = product_variant.metafields.restockrocket_production.selling_plan_ids.value | json %}2. Preorder Count Metafield
Configuration
Key:
preorder_countType:
number_integerNamespace:
restockrocket_productionOwner: Product Variant
Purpose
Tracks the current number of preorders for a specific variant
Used for inventory management and display
Automatically updated when orders are processed
Accessing in Liquid
{% assign preorder_count = product_variant.metafields.restockrocket_production.preorder_count %}3. Preorder Max Count Metafield
Configuration
Key:
preorder_max_countType:
number_integerNamespace:
restockrocket_productionOwner: Product Variant
Purpose
Sets the maximum number of preorders allowed for a variant
Controls inventory policy switching
Triggers blocking orders when count reaches max
Accessing in Liquid
{% assign preorder_max_count = product_variant.metafields.restockrocket_production.preorder_max_count %}Example Usage: Preorder Count and Max count
{% assign variant = product.selected_or_first_available_variant %}
{% assign preorder_count = variant.metafields.restockrocket_production.preorder_count.value | default: 0 %}
{% assign preorder_max = variant.metafields.restockrocket_production.preorder_max_count.value %}
{% if preorder_max %}
{% assign spots_remaining = preorder_max | minus: preorder_count %}
{% if spots_remaining > 0 %}
<div class="preorder-availability">
<span class="spots-left">{{ spots_remaining }} spots remaining</span>
{% if spots_remaining < 5 %}
<span class="low-stock-warning">Almost sold out!</span>
{% endif %}
</div>
{% else %}
<div class="preorder-full">
Preorder limit reached
</div>
{% endif %}
{% endif %}
# Query to get metafields for a specific product variant
{
productVariant(id: "gid://shopify/ProductVariant/YOUR_VARIANT_ID") {
metafields(
namespace: "restockrocket_production",
first: 10
) {
edges {
node {
id
namespace
key
value
type
}
}
}
}
}
# Query to get specific metafields for multiple variants of a product
{
product(id: "gid://shopify/Product/YOUR_PRODUCT_ID") {
variants(first: 10) {
edges {
node {
id
title
metafields(
namespace: "restockrocket_production",
keys: ["preorder_count", "preorder_max_count", "shipping_text"]
) {
edges {
node {
id
key
value
type
}
}
}
}
}
}
}
}4. Shipping Text Metafield
Configuration
Key:
shipping_textType:
jsonNamespace:
restockrocket_productionOwner: Product Variant
Purpose
Stores shipping/delivery timeline text for a product variant
Stored as a JSON object with market IDs as keys and shipping text as values
Accessing in Liquid
{% assign shipping_text = product_variant.metafields.restockrocket_production.shipping_text %}Here's an example of how to access the above metafields via GraphQL
Accessing via GraphQL
# Query to get metafields for a specific product variant
{
productVariant(id: "gid://shopify/ProductVariant/YOUR_VARIANT_ID") {
metafields(
namespace: "restockrocket_production",
first: 10
) {
edges {
node {
id
namespace
key
value
type
}
}
}
}
}
# Query to get specific metafields for multiple variants of a product
{
product(id: "gid://shopify/Product/YOUR_PRODUCT_ID") {
variants(first: 10) {
edges {
node {
id
title
metafields(
namespace: "restockrocket_production",
keys: ["preorder_count", "preorder_max_count", "shipping_text"]
) {
edges {
node {
id
key
value
type
}
}
}
}
}
}
}
}Simple examples of using STOQ's variant-level metafields with basic Shopify liquid
Use Case: Show current preorder count and remaining spots.
{% assign target_variant = product.selected_or_first_available_variant %}
{% assign preorder_count = target_variant.metafields.restockrocket_production.preorder_count | default: 0 %}
{% assign preorder_max_count = target_variant.metafields.restockrocket_production.preorder_max_count %}
{% if preorder_max_count %}
{% assign remaining = preorder_max_count | minus: preorder_count %}
<div class="inventory-counter">
<h4>Preorder Status</h4>
<p><strong>{{ preorder_count }}</strong> preordered</p>
<p><strong>{{ remaining }}</strong> remaining</p>
</div>
{% endif %}Use Case: Show shipping info specific to the selected variant.
{% assign target_variant = product.selected_or_first_available_variant %}
{% assign variant_shipping = target_variant.metafields.restockrocket_production.shipping_text.value %}
<div class="variant-shipping">
<h4>Shipping Information</h4>
{% if variant_shipping %}
{% for shipping_info in variant_shipping %}
<div>
<strong>{{ shipping_info[0] | upcase }}:</strong>
<p>{{ shipping_info[1] }}</p>
</div>
{% endfor %}
{% else %}
<p>Standard shipping rates apply</p>
{% endif %}
</div>Last updated