Shopify
The Shopify action sends requests to the Shopify admin API.
Options
This action has several usage styles, each with a different set of constraints on action options.
GraphQL
This usage style invokes the Shopify GraphQL Admin API. In this style, a single GraphQL query string is supplied as the action options. The action tag has specific support for this action type, allowing this string to be provided as the contents of an action block.
{% action "shopify" %}
mutation {
customerCreate(
input: {
email: "[email protected]"
}
) {
customer {
id
}
userErrors {
field
message
}
}
}
{% endaction %}GraphQL with variables
This usage style invokes the Shopify GraphQL Admin API, and supports combining GraphQL queries with GraphQL variables. This can be useful for re-using queries with multiple inputs, and is critical when dealing with very large pieces of input. Because GraphQL queries (excluding whitespace) are limited in length to 50k characters, GraphQL variables can be used in cases when large inputs (like Base64-encoded images) need to be submitted.
Option
Description
query
Required; a string containing a GraphQL query
variables
Required; a JSON object mapping variable names to values
Basic example
{% capture query %}
mutation DeleteProduct($productId: ID!) {
productDelete(
input: {
id: $productId
}
) {
userErrors {
field
message
}
}
}
{% endcapture %}
{% action "shopify" %}
{
"query": {{ query | json }},
"variables": {
"productId": "gid://shopify/Product/1234567890"
}
}
{% endaction %}Complex example
This example shows how the query and variables may be built up separately, and provided to the action using concise tag syntax.
{% assign metafield_owner_id = "gid://shopify/Customer/507332001849" %
{% assign metafield_value = hash %}
{% assign metafield_value["foo"] = "bar" %}
{% capture query %}
mutation MetafieldsSet($metafields: [MetafieldsSetInput!]!) {
metafieldsSet(metafields: $metafields) {
metafields {
key
namespace
value
createdAt
updatedAt
}
userErrors {
field
message
code
}
}
}
{% endcapture %}
{% assign metafield = hash %}
{% assign metafield["ownerId"] = metafield_owner_id %}
{% assign metafield["namespace"] = "demo" %}
{% assign metafield["key"] = "demo" %}
{% assign metafield["type"] = "json" %}
{% assign metafield["value"] = metafield_value | json %}
{% assign metafields = array %}
{% assign metafields = metafields | push: metafield %}
{% assign variables = hash %}
{% assign variables["metafields"] = metafields %}
{% action "shopify" query: query, variables: variables %}Last updated
Was this helpful?