Product Variant Level Metafields
Key: sellingplanids Type: json Namespace: restockrocketproduction Owner: Product Variant
Last updated
Frontend
stoqapp.comAbout STOQContactPrivacy policyHelp center
1. Selling Plan IDs Metafield
Section titled “1. Selling Plan IDs Metafield”Configuration
Section titled “Configuration”- Key:
selling_plan_ids - Type:
json - Namespace:
restockrocket_production - Owner: Product Variant
Purpose
Section titled “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
Section titled “Accessing in Liquid”{% assign selling_plan_ids = product_variant.metafields.restockrocket_production.selling_plan_ids.value | json %}2. Preorder Count Metafield
Section titled “2. Preorder Count Metafield”Configuration
- Key:
preorder_count - Type:
number_integer - Namespace:
restockrocket_production - Owner: 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
Section titled “3. Preorder Max Count Metafield”Configuration
- Key:
preorder_max_count - Type:
number_integer - Namespace:
restockrocket_production - Owner: 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
Section titled “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
Section titled “4. Shipping Text Metafield”Configuration
- Key:
shipping_text - Type:
single_line_text_field - Namespace:
restockrocket_production - Owner: Product Variant
Purpose
- Stores a per-variant override of the offer’s shipping/delivery text, as a plain string.
- Only populated when a per-variant override has been entered (see the note above); otherwise read the offer-level text from the shop-level
selling_plansmetafield. - Per-market overrides live in a separate
market_shipping_textmetafield (json, keyed by Shopify market id) — not in this field.
Accessing in Liquid
{% comment %} Present only if a per-variant override was set on this variant. {% endcomment %}{% assign variant_shipping = product_variant.metafields.restockrocket_production.shipping_text.value %}Here’s an example of how to access the above metafields via GraphQL
Accessing via GraphQL
Section titled “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
Section titled “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 a variant’s shipping override, if one is set.
shipping_textis a plain string and only exists when a per-variant override was entered (see the note above). For the offer’s shipping text — what most stores want — read the shop-levelselling_plansmetafield instead, e.g. the cart-page recipe.
{% assign target_variant = product.selected_or_first_available_variant %}{% assign variant_shipping = target_variant.metafields.restockrocket_production.shipping_text.value %}
<div class="variant-shipping"> {% if variant_shipping != blank %} <p>{{ variant_shipping }}</p> {% endif %}</div>Was this page helpful?
Thanks for letting us know.
Still stuck? Ask Quinn or chat with support